Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v0nB3-000eE2-QN for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Sep 2025 20:30:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v0nB2-0021WA-FD for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Sep 2025 20:30:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v0nB1-0021Vm-UK for pgsql-hackers@lists.postgresql.org; Mon, 22 Sep 2025 20:30:24 +0000 Received: from mail-qk1-x72a.google.com ([2607:f8b0:4864:20::72a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v0nAw-002Ffr-1W for pgsql-hackers@postgresql.org; Mon, 22 Sep 2025 20:30:23 +0000 Received: by mail-qk1-x72a.google.com with SMTP id af79cd13be357-84d0bdc64f6so92278085a.1 for ; Mon, 22 Sep 2025 13:30:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1758573016; x=1759177816; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7ImnqY9prc5xKdkdSBDtXrFLPpefbW+sRHPVesx8au0=; b=EfoAT1qEx6zpEwruargHDrHzueRLHqs9qXhtaGM2shBT66ju1OfY1SnwSR1DzjxSlE 6GIL0ZKUZWeuB8WyW19NPAPEt91NA3YoxUkuQkf6JftXzo9wC1o06CygnZqV3UXbbUnO RCbe6fkD47VIDT50RxSZaaqTmThqtwE5TBsIdZbDs9Ep2Z9Ywx1eqzEHODPOyZbISE90 V8vbE8Yz0ZWAFA/0VR5xNPf1fv0UykxdA+Donsdhk9HEYyJHyytHBo6K8RPu2mHgrtwh XAp5GxRPyWQ2/4ZkWwmTVI336aZsyUYY7lOTLN4DGQ0mVB5Marc/pOJEYNmUBffW+BiY lNgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758573016; x=1759177816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7ImnqY9prc5xKdkdSBDtXrFLPpefbW+sRHPVesx8au0=; b=dq+nGtVzWK/8NLanwnhvACcmGfOJN3ASQcuOcCIko/GhA0B0bbQaPR4gwAPyCh9h/Q PDvFcmkoBihW/VCh99ymHV1+Uax5HE705SrFIIsx+VciwbVWcTH81JjFxtPGTDdZ18y8 9AI3P9AqQ/Jf+LSTviu4HGdzUSV2+acpN6BKEE5P9OaafGb02nMZTFKUa13Dnspes3vE 9vu2R7ZPWFWdsZ3bmPLbJ+o/wT85NdshwswpKK7GRdmQOHcL+H4+P6AzJoXNJ0HFa69D TBU3ONQZIzQbHvy/F2gNIlX+sU/ixMjYzrGyt4tIAu0Tdwz9ngLgXZ4cuUn5x7kqiL68 vKdw== X-Gm-Message-State: AOJu0YwbdWERDKLIjQpwQbiMAFLBCi3J4EIthHgLYf3uTDFLZSACYLT5 2mG9ioyBQwo3tVz0hNNcjzEpO/M7cWo4s13DPK3NBk3eG0gk+AIoDipUbiT+VDHQF+jLYCf7mq4 7R9aQka5+R57DKQq6tqsvkaNabiyIDY2gtR2wr71xbWAb6poWNbY= X-Gm-Gg: ASbGncucyglW/Pwxl5HVhK99N3y8GoVSnGE2TDKbB98HauRRv2yW+/KALFXeOp952VE 96otacuqfRCFvjttSFctVthaHfELNe13e8jBXQkES2rjIqFzLSiOs+DEMVMM//qGMnHkuTLHr9B KbnputCL76KTO+Fl3Jgc1IedkviUaEY3OdCBxDns9Y033ofMYRWLQfQxyrq91wXM6McxNdeb7+j iMaN1H9zQ== X-Google-Smtp-Source: AGHT+IEKbiAeIm1K8wnzasV5HJHh09pzZHO1ZBCHVEdBfA87ST9yc9pAa5I6CyMDalvfkpC5ptOlbdzSqzHIlEzw5Hg= X-Received: by 2002:a05:620a:284b:b0:81f:eb9f:8564 with SMTP id af79cd13be357-85174b295d6mr37110085a.47.1758573016132; Mon, 22 Sep 2025 13:30:16 -0700 (PDT) MIME-Version: 1.0 References: <20240610200411.byj6sv2vpgol6wcf@awork3.anarazel.de> <20240612155040.u6cvatdb5tiwcxci@awork3.anarazel.de> <2302192.1718380169@sss.pgh.pa.us> In-Reply-To: From: Jacob Champion Date: Mon, 22 Sep 2025 13:30:04 -0700 X-Gm-Features: AS18NWCmEEZobznM-OchAxVm6viMCspCvfoJmYjDK5dFqI1vq-Y2-0TRSphtISY Message-ID: Subject: Re: RFC: adding pytest as a supported test framework To: PostgreSQL Hackers Cc: Robert Haas , Jelte Fennema-Nio , Daniel Gustafsson , Andres Freund , Tom Lane , Peter Eisentraut , Nazir Bilal Yavuz Content-Type: multipart/mixed; boundary="000000000000f3c31a063f69af02" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f3c31a063f69af02 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Sep 18, 2025 at 11:22=E2=80=AFAM Jacob Champion wrote: > Turns out we've already solved this exact problem for Perl and Prove > [1], and I should probably choose a similar solution for Python and > pytest. In other words: make the requirements check into a test. Done this way in v2-0002. pytest and the linked `PYTHON` can now be independent of each other. This adds some scaffolding complexity, to get the configure script and pytest to talk to each other nicely, but I've gotten rid of some architectural complexity in check_pytest.py to make up for it. Thanks, --Jacob --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch" Content-Disposition: attachment; filename="v2-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkv39s0 RnJvbSA4NDQzZDQyNjI5ODVlZGFhOGFjYjIwNGYyMzk2ZTljNTVkNDA0YzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCA1IFNlcCAyMDI1IDE2OjM5OjA4IC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MiAxLzZdIG1lc29uOiBJbmNsdWRlIFRBUCB0ZXN0cyBpbiB0aGUgY29uZmlndXJh dGlvbiBzdW1tYXJ5CgouLi50byBtYWtlIGl0IG9idmlvdXMgd2hlbiB0aGV5J3ZlIGJlZW4gZW5h YmxlZC4gcHJvdmUgaXMgYWRkZWQgdG8gdGhlCmV4ZWN1dGFibGVzIGxpc3QgZm9yIGdvb2QgbWVh c3VyZS4KClRPRE86IGRvZXMgQXV0b2NvbmYgbmVlZCBzb21ldGhpbmcgc2ltaWxhcj8KClBlciBj b21wbGFpbnQgYnkgUGV0ZXIgRWlzZW50cmF1dC4KLS0tCiBtZXNvbi5idWlsZCB8IDkgKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbWVzb24u YnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCAzOTU0MTZhNjA2MC4uMzdlZDY4Y2VlYjQgMTAwNjQ0 Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0zOTUyLDYgKzM5NTIsNyBA QCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQoYmlzb24uZnVsbF9wYXRo KCksIGJpc29uX3ZlcnNpb24pLAogICAgICdkdHJhY2UnOiBkdHJhY2UsCiAgICAgJ2ZsZXgnOiAn QDBAIEAxQCcuZm9ybWF0KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVyc2lvbiksCisgICAgJ3By b3ZlJzogcHJvdmUsCiAgIH0sCiAgIHNlY3Rpb246ICdQcm9ncmFtcycsCiApCkBAIC0zOTg4LDMg KzM5ODksMTEgQEAgc3VtbWFyeSgKICAgc2VjdGlvbjogJ0V4dGVybmFsIGxpYnJhcmllcycsCiAg IGxpc3Rfc2VwOiAnICcsCiApCisKK3N1bW1hcnkoCisgIHsKKyAgICAndGFwJzogdGFwX3Rlc3Rz X2VuYWJsZWQsCisgIH0sCisgIHNlY3Rpb246ICdPdGhlciBmZWF0dXJlcycsCisgIGxpc3Rfc2Vw OiAnICcsCispCi0tIAoyLjM0LjEKCg== --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0002-Add-support-for-pytest-test-suites.patch" Content-Disposition: attachment; filename="v2-0002-Add-support-for-pytest-test-suites.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkv73o1 RnJvbSBjNGRmN2RmZDEyNTEwNjE0NGQ4MjhiNzkwZDIzNmI0ZTdmODNkMTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMi82XSBBZGQgc3VwcG9ydCBmb3IgcHl0ZXN0IHRlc3Qgc3VpdGVzCgpTcGVj aWZ5IC0tZW5hYmxlLXB5dGVzdC8tRHB5dGVzdD1lbmFibGVkIGF0IGNvbmZpZ3VyZSB0aW1lLiBU aGlzCmNvbnRhaW5zIG5vIFBvc3RncmVzIHRlc3QgbG9naWMgLS0gaXQgaXMganVzdCBhICJ2YW5p bGxhIiBweXRlc3QKc2tlbGV0b24uCgpJJ3ZlIHdyaXR0ZW4gYSBjdXN0b20gcGd0YXAgb3V0cHV0 IHBsdWdpbiwgdXNlZCBieSB0aGUgTWVzb24gbXRlc3QKcnVubmVyLCB0byBmdWxseSBjb250cm9s IHdoYXQgd2Ugc2VlIGR1cmluZyBDSSB0ZXN0IGZhaWx1cmVzLiBUaGUKcHl0ZXN0LXRhcCBwbHVn aW4gd291bGQgaGF2ZSBiZWVuIHByZWZlcmFibGUsIGJ1dCBpdCdzIG5vdyBpbgptYWludGVuYW5j ZSBtb2RlLCBhbmQgaXQgaGFzIHByb2JsZW1zIHdpdGggYWNjaWRlbnRhbGx5IHN1cHByZXNzaW5n CmltcG9ydGFudCBjb2xsZWN0aW9uIGZhaWx1cmVzLgoKdGVzdF9zb21ldGhpbmcucHkgaXMgaW50 ZW5kZWQgdG8gc2hvdyBhIHNhbXBsZSBmYWlsdXJlIGluIHRoZSBDSS4KClRPRE9zOgotIE9wZW5C U0QgaGFzIGFuIEFOU0ktcmVsYXRlZCB0ZXJtaW5hbCBidWcsIGJ1dCBJJ20gbm90IHN1cmUgaWYg dGhlIGJ1ZwogIGlzIGluIENpcnJ1cywgdGhlIGltYWdlLCBweXRlc3QsIFB5dGhvbiwgb3IgcmVh ZGxpbmUuIFRoZSBURVJNIGVudnZhcgogIGlzIHVuc2V0IHRvIHdvcmsgYXJvdW5kIGl0LiBJZiB0 aGlzIHdvcmthcm91bmQgaXMgcmVtb3ZlZCwgYSBiYWQgQU5TSQogIGVzY2FwZSBpcyBpbnNlcnRl ZCBpbnRvIHRoZSBwZ3RhcCBvdXRwdXQgYW5kIG10ZXN0IGlzIHVuYWJsZSB0byBwYXJzZQogIGl0 LgotIFRoZSBDaG9jb2xhdGV5IENJIHNldHVwIGlzIHN1YnBhci4gTmVlZCB0byBmaW5kIGEgd2F5 IHRvIGJsZXNzIHRoZQogIGRlcGVuZGVuY2llcyBpbiB1c2UgcmF0aGVyIHRoYW4gcHVsbGluZyBm cm9tIHBpcC4uLiBvciBtYXliZSB0aGF0IHdpbGwKICBiZSBkb25lIGJ5IHRoZSBpbWFnZSBiYWtl ci4KLS0tCiAuY2lycnVzLnRhc2tzLnltbCAgICAgICAgICAgICAgICAgICAgIHwgIDM4ICsrKy0t CiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGNvbmZpZy9j aGVja19weXRlc3QucHkgICAgICAgICAgICAgICAgfCAxNTAgKysrKysrKysrKysrKysrKysrKysK IGNvbmZpZy9jb25mdGVzdC5weSAgICAgICAgICAgICAgICAgICAgfCAgMTggKysrCiBjb25maWcv cHl0ZXN0LXJlcXVpcmVtZW50cy50eHQgICAgICAgIHwgIDIxICsrKwogY29uZmlndXJlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDEwOCArKysrKysrKysrKysrLQogY29uZmlndXJlLmFj ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArKystCiBtZXNvbi5idWlsZCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDkyICsrKysrKysrKysrKwogbWVzb25fb3B0aW9ucy50eHQg ICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogcHl0ZXN0LmluaSAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNiArCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmluICAgICAgICAgICAgICAg IHwgIDIzICsrKwogc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvdGVz dC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9N YWtlZmlsZSAgICAgICAgICAgICAgfCAgMjAgKysrCiBzcmMvdGVzdC9weXRlc3QvUkVBRE1FICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZCAgICAgICAg ICAgfCAgMTYgKysrCiBzcmMvdGVzdC9weXRlc3QvcGx1Z2lucy9wZ3RhcC5weSAgICAgIHwgMTkz ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3Rfc29t ZXRoaW5nLnB5IHwgIDE3ICsrKwogMTkgZmlsZXMgY2hhbmdlZCwgNzM2IGluc2VydGlvbnMoKyks IDE1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbmZpZy9jaGVja19weXRlc3Qu cHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb25maWcvY29uZnRlc3QucHkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBjb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBw eXRlc3QuaW5pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3B5dGVzdC9wbHVnaW5zL3BndGFwLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cHl0ZXN0L3B5dC90ZXN0X3NvbWV0aGluZy5weQoKZGlmZiAtLWdpdCBhLy5jaXJydXMudGFza3Mu eW1sIGIvLmNpcnJ1cy50YXNrcy55bWwKaW5kZXggZWNhOWQ2MmZjMjIuLjgwZjliMzk0YmQyIDEw MDY0NAotLS0gYS8uY2lycnVzLnRhc2tzLnltbAorKysgYi8uY2lycnVzLnRhc2tzLnltbApAQCAt MjEsNyArMjEsOCBAQCBlbnY6CiAKICAgIyB0YXJnZXQgdG8gdGVzdCwgZm9yIGFsbCBidXQgd2lu ZG93cwogICBDSEVDSzogY2hlY2std29ybGQgUFJPVkVfRkxBR1M9JFBST1ZFX0ZMQUdTCi0gIENI RUNLRkxBR1M6IC1PdGFyZ2V0CisgICMgVE9ETyB3ZXJlIHdlIGF2b2lkaW5nIC0ta2VlcC1nb2lu ZyBvbiBwdXJwb3NlPworICBDSEVDS0ZMQUdTOiAtT3RhcmdldCAtLWtlZXAtZ29pbmcKICAgUFJP VkVfRkxBR1M6IC0tdGltZXIKICAgIyBCdWlsZCB0ZXN0IGRlcGVuZGVuY2llcyBhcyBwYXJ0IG9m IHRoZSBidWlsZCBzdGVwLCB0byBzZWUgY29tcGlsZXIKICAgIyBlcnJvcnMvd2FybmluZ3MgaW4g b25lIHBsYWNlLgpAQCAtNDQsNiArNDUsNyBAQCBlbnY6CiAgICAgLURsZGFwPWVuYWJsZWQKICAg ICAtRHNzbD1vcGVuc3NsCiAgICAgLUR0YXBfdGVzdHM9ZW5hYmxlZAorICAgIC1EcHl0ZXN0PWVu YWJsZWQKICAgICAtRHBscGVybD1lbmFibGVkCiAgICAgLURwbHB5dGhvbj1lbmFibGVkCiAgICAg LURkb2NzPWVuYWJsZWQKQEAgLTIyMiw3ICsyMjQsOSBAQCB0YXNrOgogICAgIGNob3duIHJvb3Q6 cG9zdGdyZXMgL3RtcC9jb3JlcwogICAgIHN5c2N0bCBrZXJuLmNvcmVmaWxlPScvdG1wL2NvcmVz LyVOLiVQLmNvcmUnCiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0gICAg I3BrZyBpbnN0YWxsIC15IC4uLgorICAgIHBrZyBpbnN0YWxsIC15IFwKKyAgICAgIHB5MzExLXBh Y2thZ2luZyBcCisgICAgICBweTMxMS1weXRlc3QKIAogICAjIE5COiBJbnRlbnRpb25hbGx5IGJ1 aWxkIHdpdGhvdXQgLURsbHZtLiBUaGUgZnJlZWJzZCBpbWFnZSBzaXplIGlzIGFscmVhZHkKICAg IyBsYXJnZSBlbm91Z2ggdG8gbWFrZSBWTSBzdGFydHVwIHNsb3csIGFuZCBldmVuIHdpdGhvdXQg bGx2bSBmcmVlYnNkCkBAIC0zMTEsNyArMzE1LDEwIEBAIHRhc2s6CiAgICAgICAgICAgLURwYW09 ZW5hYmxlZAogCiAgICAgICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAotICAg ICAgICAjcGtnaW4gLXkgaW5zdGFsbCAuLi4KKyAgICAgICAgcGtnaW4gLXkgaW5zdGFsbCBcCisg ICAgICAgICAgcHkzMTItcGFja2FnaW5nIFwKKyAgICAgICAgICBweTMxMi10ZXN0CisgICAgICAg IGxuIC1zIC91c3IvcGtnL2Jpbi9weXRlc3QtMy4xMiAvdXNyL3BrZy9iaW4vcHl0ZXN0CiAgICAg ICA8PDogKm5ldGJzZF90YXNrX3RlbXBsYXRlCiAKICAgICAtIG5hbWU6IE9wZW5CU0QgLSBNZXNv bgpAQCAtMzIyLDYgKzMyOSw3IEBAIHRhc2s6CiAgICAgICAgIE9TX05BTUU6IG9wZW5ic2QKICAg ICAgICAgSU1BR0VfRkFNSUxZOiBwZy1jaS1vcGVuYnNkLXBvc3RncmVzCiAgICAgICAgIFBLR0NP TkZJR19QQVRIOiAnL3Vzci9saWIvcGtnY29uZmlnOi91c3IvbG9jYWwvbGliL3BrZ2NvbmZpZycK KyAgICAgICAgVEVSTTogIyBUT0RPIHdoeSBkb2VzIHB5dGVzdCBwcmludCBBTlNJIGVzY2FwZXMg b24gT3BlbkJTRD8KIAogICAgICAgICBNRVNPTl9GRUFUVVJFUzogPi0KICAgICAgICAgICAtRGJz ZF9hdXRoPWVuYWJsZWQKQEAgLTMzMCw3ICszMzgsOSBAQCB0YXNrOgogICAgICAgICAgIC1EdXVp ZD1lMmZzCiAKICAgICAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0gICAg ICAgICNwa2dfYWRkIC1JIC4uLgorICAgICAgICBwa2dfYWRkIC1JIFwKKyAgICAgICAgICBweTMt dGVzdCBcCisgICAgICAgICAgcHkzLXBhY2thZ2luZwogICAgICAgIyBBbHdheXMgY29yZSBkdW1w IHRvICR7Q09SRV9EVU1QX0RJUn0KICAgICAgIHNldF9jb3JlX2R1bXBfc2NyaXB0OiBzeXNjdGwg LXcga2Vybi5ub3N1aWRjb3JlZHVtcD0yCiAgICAgICA8PDogKm9wZW5ic2RfdGFza190ZW1wbGF0 ZQpAQCAtNDg5LDggKzQ5OSwxMCBAQCB0YXNrOgogICAgIEVPRgogCiAgIHNldHVwX2FkZGl0aW9u YWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0gICAgI2FwdC1nZXQgdXBkYXRlCi0gICAgI0RFQklBTl9G Uk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IC15IGluc3RhbGwgLi4uCisgICAgYXB0LWdl dCB1cGRhdGUKKyAgICBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCAteSBp bnN0YWxsIFwKKyAgICAgIHB5dGhvbjMtcHl0ZXN0IFwKKyAgICAgIHB5dGhvbjMtcGFja2FnaW5n CiAKICAgbWF0cml4OgogICAgICMgU1BFQ0lBTDoKQEAgLTUxMywxNCArNTI1LDE1IEBAIHRhc2s6 CiAgICAgICAgIHN1IHBvc3RncmVzIDw8LUVPRgogICAgICAgICAgIC4vY29uZmlndXJlIFwKICAg ICAgICAgICAgIC0tZW5hYmxlLWNhc3NlcnQgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cyAtLWVu YWJsZS1kZWJ1ZyBcCi0gICAgICAgICAgICAtLWVuYWJsZS10YXAtdGVzdHMgLS1lbmFibGUtbmxz IFwKKyAgICAgICAgICAgIC0tZW5hYmxlLXRhcC10ZXN0cyAtLWVuYWJsZS1weXRlc3QgLS1lbmFi bGUtbmxzIFwKICAgICAgICAgICAgIC0td2l0aC1zZWdzaXplLWJsb2Nrcz02IFwKICAgICAgICAg ICAgIC0td2l0aC1saWJudW1hIFwKICAgICAgICAgICAgIC0td2l0aC1saWJ1cmluZyBcCiAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAke0xJTlVYX0NPTkZJR1VSRV9GRUFUVVJFU30gXAogICAg ICAgICAgICAgXAotICAgICAgICAgICAgQ0xBTkc9ImNjYWNoZSBjbGFuZy0xNiIKKyAgICAgICAg ICAgIENMQU5HPSJjY2FjaGUgY2xhbmctMTYiIFwKKyAgICAgICAgICAgIFBZVEVTVD0iZW52IExE X1BSRUxPQUQ9L2xpYi94ODZfNjQtbGludXgtZ251L2xpYmFzYW4uc28uOCBweXRlc3QiCiAgICAg ICAgIEVPRgogICAgICAgYnVpbGRfc2NyaXB0OiBzdSBwb3N0Z3JlcyAtYyAibWFrZSAtcyAtaiR7 QlVJTERfSk9CU30gd29ybGQtYmluIgogICAgICAgdXBsb2FkX2NhY2hlczogY2NhY2hlCkBAIC02 NTAsNiArNjYzLDggQEAgdGFzazoKICAgICAgIHA1LjM0LWlvLXR0eQogICAgICAgcDUuMzQtaXBj LXJ1bgogICAgICAgcHl0aG9uMzEyCisgICAgICBweTMxMi1wYWNrYWdpbmcKKyAgICAgIHB5MzEy LXB5dGVzdAogICAgICAgdGNsCiAgICAgICB6c3RkCiAKQEAgLTY5OSw2ICs3MTQsNyBAQCB0YXNr OgogICAgIHNoIHNyYy90b29scy9jaS9jaV9tYWNwb3J0c19wYWNrYWdlcy5zaCAkTUFDT1NfUEFD S0FHRV9MSVNUCiAgICAgIyBzeXN0ZW0gcHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBoZWFkZXJzCiAg ICAgc3VkbyAvb3B0L2xvY2FsL2Jpbi9wb3J0IHNlbGVjdCBweXRob24zIHB5dGhvbjMxMgorICAg IHN1ZG8gL29wdC9sb2NhbC9iaW4vcG9ydCBzZWxlY3QgcHl0ZXN0IHB5dGVzdDMxMgogICAgICMg TWFrZSBtYWNwb3J0cyBpbnN0YWxsIHZpc2libGUgZm9yIHN1YnNlcXVlbnQgc3RlcHMKICAgICBl Y2hvIFBBVEg9L29wdC9sb2NhbC9zYmluLzovb3B0L2xvY2FsL2Jpbi86JFBBVEggPj4gJENJUlJV U19FTlYKICAgdXBsb2FkX2NhY2hlczogbWFjcG9ydHMKQEAgLTc3Miw2ICs3ODgsOCBAQCB0YXNr OgogICAgICAgLURsZGFwPWVuYWJsZWQKICAgICAgIC1Ec3NsPW9wZW5zc2wKICAgICAgIC1EdGFw X3Rlc3RzPWVuYWJsZWQKKyAgICAgIC1EcHl0ZXN0PWVuYWJsZWQKKyAgICAgIC1EUFlURVNUPWM6 XFdpbmRvd3Ncc3lzdGVtMzJcY29uZmlnXHN5c3RlbXByb2ZpbGVcQXBwRGF0YVxSb2FtaW5nXFB5 dGhvblxQeXRob24zMTBcU2NyaXB0c1xweXRlc3QuZXhlCiAgICAgICAtRHBscGVybD1lbmFibGVk CiAgICAgICAtRHBscHl0aG9uPWVuYWJsZWQKIApAQCAtNzgwLDggKzc5OCwxMCBAQCB0YXNrOgog ICBkZXBlbmRzX29uOiBTYW5pdHlDaGVjawogICBvbmx5X2lmOiAkQ0lfV0lORE9XU19FTkFCTEVE CiAKKyAgIyBYWFggRG9lcyBDaG9jb2xhdGV5IHJlYWxseSBub3QgaGF2ZSBhbnkgUHl0aG9uIHBh Y2thZ2UgaW5zdGFsbGVycz8KICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwK ICAgICBSRU0gY2hvY28gaW5zdGFsbCAteSAtLW5vLXByb2dyZXNzIC4uLgorICAgIHBpcDMgaW5z dGFsbCAtLXVzZXIgcGFja2FnaW5nIHB5dGVzdAogCiAgIHNldHVwX2hvc3RzX2ZpbGVfc2NyaXB0 OiB8CiAgICAgZWNobyAxMjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0ZXN0ID4+IGM6XFdpbmRvd3Nc U3lzdGVtMzJcRHJpdmVyc1xldGNcaG9zdHMKQEAgLTg0NCw3ICs4NjQsNyBAQCB0YXNrOgogICAg IGZvbGRlcjogJHtDQ0FDSEVfRElSfQogCiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2Ny aXB0OiB8Ci0gICAgUkVNIEM6XG1zeXM2NFx1c3JcYmluXHBhY21hbi5leGUgLVMgLS1ub2NvbmZp cm0gLi4uCisgICAgQzpcbXN5czY0XHVzclxiaW5ccGFjbWFuLmV4ZSAtUyAtLW5vY29uZmlybSBt aW5ndy13NjQtdWNydC14ODZfNjQtcHl0aG9uLXBhY2thZ2luZyBtaW5ndy13NjQtdWNydC14ODZf NjQtcHl0aG9uLXB5dGVzdAogCiAgIG1pbmd3X2luZm9fc2NyaXB0OiB8CiAgICAgJUJBU0glIC1j ICJ3aGVyZSBnY2MiCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA0 ZTkxMTM5NWZlMy4uMjY4NDI2MDAzYjEgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdp dGlnbm9yZQpAQCAtMzEsNiArMzEsNyBAQCB3aW4zMnZlci5yYwogKi5leGUKIGxpYipkbGwuZGVm CiBsaWIqLnBjCitfX3B5Y2FjaGVfXy8KIAogIyBMb2NhbCBleGNsdWRlcyBpbiByb290IGRpcmVj dG9yeQogL0dOVW1ha2VmaWxlCmRpZmYgLS1naXQgYS9jb25maWcvY2hlY2tfcHl0ZXN0LnB5IGIv Y29uZmlnL2NoZWNrX3B5dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMTU2MmQxNmJjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvY2hlY2tfcHl0ZXN0 LnB5CkBAIC0wLDAgKzEsMTUwIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMKKyMgVmVyaWZ5IHRoYXQgcHl0ZXN0LXJlcXVpcmVt ZW50cy50eHQgaXMgc2F0aXNmaWVkLiBUaGlzIHdvdWxkIHByb2JhYmx5IGJlCisjIGVhc2llciB3 aXRoIHBpcCwgYnV0IHJlcXVpcmluZyBwaXAgb24gYnVpbGQgbWFjaGluZXMgaXMgYSBub24tc3Rh cnRlciBmb3IKKyMgbWFueS4KKyMKKyMgVGhpcyBpcyBjb2RlZCBhcyBhIHB5dGVzdCBzdWl0ZSBp biBvcmRlciB0byBjaGVjayB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBpbgorIyB1c2UgYnkgcHl0 ZXN0LCBhcyBvcHBvc2VkIHRvIHRoZSBQeXRob24gZGlzdHJpYnV0aW9uIGJlaW5nIGxpbmtlZCBh Z2FpbnN0CisjIFBvc3RncmVzLiBJbiBzb21lIHNldHVwcyB0aGV5IGFyZSBzZXBhcmF0ZS4KKyMK KyMgVGhlIGRlc2lnbiBwaGlsb3NvcGh5IG9mIHRoaXMgc2NyaXB0IGlzIHRvIGJlbmQgb3ZlciBi YWNrd2FyZHMgdG8gaGVscCBwZW9wbGUKKyMgZmlndXJlIG91dCB3aGF0IGlzIG1pc3NpbmcuIFRo ZSB0YXJnZXQgYXVkaWVuY2UgZm9yIGVycm9yIG91dHB1dCBpcyB0aGUKKyMgYnVpbGRmYXJtIG9w ZXJhdG9yIHdobyBqdXN0IHdhbnRzIHRvIGdldCB0aGUgdGVzdHMgcnVubmluZywgbm90IHRoZSB0 ZXN0CisjIGRldmVsb3BlciB3aG8gcHJlc3VtYWJseSBhbHJlYWR5IGtub3dzIGhvdyB0byBzb2x2 ZSB0aGVzZSBwcm9ibGVtcy4KKworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworZnJvbSB0 eXBpbmcgaW1wb3J0IExpc3QsIFVuaW9uICAjIG5lZWRlZCBmb3IgZWFybGllciBQeXRob24gdmVy c2lvbnMKKworIyBpbXBvcnRsaWIubWV0YWRhdGEgaXMgcGFydCBvZiB0aGUgc3RhbmRhcmQgbGli cmFyeSBmcm9tIDMuOCBvbndhcmRzLiBFYXJsaWVyCisjIFB5dGhvbiB2ZXJzaW9ucyBoYXZlIGFu IG9mZmljaWFsIGJhY2twb3J0IGNhbGxlZCBpbXBvcnRsaWJfbWV0YWRhdGEsIHdoaWNoIGNhbgor IyBnZW5lcmFsbHkgYmUgaW5zdGFsbGVkIGFzIGEgc2VwYXJhdGUgT1MgcGFja2FnZSAocHl0aG9u My1pbXBvcnRsaWItbWV0YWRhdGEpLgorIyBUaGlzIGNvbXBsaWNhdGlvbiBjYW4gYmUgcmVtb3Zl ZCBvbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBQeXRob24gMy43LgordHJ5OgorICAgIGZyb20gaW1w b3J0bGliIGltcG9ydCBtZXRhZGF0YQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRyeToKKyAg ICAgICAgaW1wb3J0IGltcG9ydGxpYl9tZXRhZGF0YSBhcyBtZXRhZGF0YQorICAgIGV4Y2VwdCBJ bXBvcnRFcnJvcjoKKyAgICAgICAgIyBwYWNrYWdlX3ZlcnNpb24oKSB3aWxsIG5lZWQgdG8gZmFs bCBiYWNrLiBUaGlzIGlzIHVubGlrZWx5IHRvIGhhcHBlbgorICAgICAgICAjIGluIHByYWN0aWNl LCBiZWNhdXNlIHB5dGVzdCA3LnggZGVwZW5kcyBvbiBpbXBvcnRsaWJfbWV0YWRhdGEgaXRzZWxm LgorICAgICAgICBtZXRhZGF0YSA9IE5vbmUKKworCitkZWYgcmVwb3J0KCphcmdzKToKKyAgICAi IiIKKyAgICBQcmludHMgYSBjb25maWd1cmUtdGltZSBtZXNzYWdlIHRvIHRoZSB1c2VyLiAoVGhl IGNvbmZpZ3VyZSBzY3JpcHRzIHdpbGwKKyAgICBkaXNwbGF5IHRoZXNlIG1lc3NhZ2VzIGFuZCBp Z25vcmUgdGhlIG91dHB1dCBmcm9tIHRoZSBweXRlc3Qgc3VpdGUuKSBUaGlzCisgICAgYXNzdW1l cyAtLWNhcHR1cmU9bm8gaXMgaW4gdXNlLCB0byBhdm9pZCBweXRlc3QncyBzdGFuZGFyZCBzdHJl YW0gY2FwdHVyZS4KKyAgICAiIiIKKyAgICBwcmludCgqYXJncywgZmlsZT1zeXMuc3RkZXJyKQor CisKK2RlZiBwYWNrYWdlX3ZlcnNpb24ocGtnOiBzdHIpIC0+IFVuaW9uW3N0ciwgTm9uZV06Cisg ICAgIiIiCisgICAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgbmFtZWQgcGFja2FnZSwgb3Ig Tm9uZSBpZiB0aGUgcGFja2FnZSBpcyBub3QKKyAgICBpbnN0YWxsZWQuCisKKyAgICBUaGlzIGZ1 bmN0aW9uIHByZWZlcnMgdG8gdXNlIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSB2ZXJzaW9uLCBp ZiB3ZSBoYXZlCisgICAgdGhlIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGVzLiBPdGhlcndpc2UgaXQg d2lsbCBmYWxsIGJhY2sgdG8gdGhlIF9fdmVyc2lvbl9fCisgICAgb2YgdGhlIGltcG9ydGVkIG1v ZHVsZSwgd2hpY2ggYWxpZ25zIHdpdGggcHl0ZXN0LmltcG9ydG9yc2tpcCgpLgorICAgICIiIgor ICAgIGlmIG1ldGFkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBy ZXR1cm4gbWV0YWRhdGEudmVyc2lvbihwa2cpCisgICAgICAgIGV4Y2VwdCBtZXRhZGF0YS5QYWNr YWdlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIFRoaXMg aXMgYW4gb2xkZXIgUHl0aG9uIGFuZCB3ZSBkb24ndCBoYXZlIGltcG9ydGxpYl9tZXRhZGF0YS4g RmFsbCBiYWNrIHRvCisgICAgIyBfX3ZlcnNpb25fXyBpbnN0ZWFkLgorICAgIHRyeToKKyAgICAg ICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnKQorICAgIGV4Y2VwdCBNb2R1bGVO b3RGb3VuZEVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgaWYgaGFzYXR0cihtb2Qs ICJfX3ZlcnNpb25fXyIpOgorICAgICAgICByZXR1cm4gbW9kLl9fdmVyc2lvbl9fCisKKyAgICAj IFdlJ3JlIG91dCBvZiBvcHRpb25zLiBJZiB0aGlzIHR1cm5zIG91dCB0byBjYXVzZSBwcm9ibGVt cyBpbiBwcmFjdGljZSwgd2UKKyAgICAjIG1pZ2h0IG5lZWQgdG8gcmVxdWlyZSBpbXBvcnRsaWJf bWV0YWRhdGEgb24gb2xkZXIgYnVpbGRmYXJtIG1lbWJlcnMuIEJ1dAorICAgICMgc2luY2Ugb3Vy IHRvcC1sZXZlbCByZXF1aXJlbWVudHMgbGlzdCB3aWxsIGJlIHNtYWxsLCBhbmQgdGhpcyBwb3Nz aWJpbGl0eQorICAgICMgd2lsbCBldmVudHVhbGx5IGFnZSBvdXQgd2l0aCBuZXdlciBQeXRob25z LCBkb24ndCBzcGVuZCBtb3JlIGVmZm9ydCBvbgorICAgICMgdGhpcyBjYXNlIGZvciBub3cuCisg ICAgcmVwb3J0KGYiRml4IGNoZWNrX3B5dGVzdC5weSEge3BrZ30gaGFzIG5vIF9fdmVyc2lvbl9f IikKKyAgICBhc3NlcnQgRmFsc2UsICJpbnRlcm5hbCBlcnJvciBpbiBwYWNrYWdlX3ZlcnNpb24o KSIKKworCitkZWYgcGFja2FnaW5nX2NoZWNrKHJlcXVpcmVtZW50czogTGlzdFtzdHJdKSAtPiBi b29sOgorICAgICIiIgorICAgIFJlcG9ydHMgdGhlIHN0YXR1cyBvZiBlYWNoIHJlcXVpcmVkIHBh Y2thZ2UgdG8gdGhlIGNvbmZpZ3VyZSBwcm9ncmFtLgorICAgIFJldHVybnMgVHJ1ZSBpZiBhbGwg ZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQuCisgICAgIiIiCisgICAgcmVwb3J0KCkgICMgYW4gb3Bl bmluZyBuZXdsaW5lIG1ha2VzIHRoZSBjb25maWd1cmUgb3V0cHV0IGVhc2llciB0byByZWFkCisK KyAgICB0cnk6CisgICAgICAgICMgcGFja2FnaW5nIGNvbnRhaW5zIHRoZSBQeVBBIGRlZmluaXRp b25zIG9mIHJlcXVpcmVtZW50IHNwZWNpZmllcnMuCisgICAgICAgICMgVGhpcyBpcyBjb250YWlu ZWQgaW4gYSBzZXBhcmF0ZSBPUyBwYWNrYWdlIChmb3IgZXhhbXBsZSwKKyAgICAgICAgIyBweXRo b24zLXBhY2thZ2luZyksIGJ1dCBpdCdzIGV4dHJlbWVseSBsaWtlbHkgdGhhdCB0aGUgdXNlciBo YXMgaXQKKyAgICAgICAgIyBpbnN0YWxsZWQgYWxyZWFkeSwgYmVjYXVzZSBtb2Rlcm4gdmVyc2lv bnMgb2YgcHl0ZXN0IGRlcGVuZCBvbiBpdCB0b28uCisgICAgICAgIGltcG9ydCBwYWNrYWdpbmcK KyAgICAgICAgZnJvbSBwYWNrYWdpbmcucmVxdWlyZW1lbnRzIGltcG9ydCBSZXF1aXJlbWVudAor CisgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGVycjoKKyAgICAgICAgIyBXZSBkb24ndCBldmVu IGhhdmUgZW5vdWdoIHByZXJlcXVpc2l0ZXMgdG8gY2hlY2sgb3VyIHByZXJlcXVpc2l0ZXMuCisg ICAgICAgICMgUHJpbnQgdGhlIGltcG9ydCBlcnJvciBhcy1pcy4KKyAgICAgICAgcmVwb3J0KGVy cikKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAjIFN0cmlwIGV4dHJhbmVvdXMgd2hpdGVz cGFjZSwgd2hvbGUtbGluZSBjb21tZW50cywgYW5kIGVtcHR5IGxpbmVzIGZyb20gb3VyCisgICAg IyBzcGVjaWZpZXIgbGlzdC4KKyAgICByZXF1aXJlbWVudHMgPSBbci5zdHJpcCgpIGZvciByIGlu IHJlcXVpcmVtZW50c10KKyAgICByZXF1aXJlbWVudHMgPSBbciBmb3IgciBpbiByZXF1aXJlbWVu dHMgaWYgciBhbmQgclswXSAhPSAiIyJdCisKKyAgICBmb3VuZCA9IFRydWUKKyAgICBmb3Igc3Bl YyBpbiByZXF1aXJlbWVudHM6CisgICAgICAgIHJlcSA9IFJlcXVpcmVtZW50KHNwZWMpCisKKyAg ICAgICAgIyBTa2lwIGFueSBwYWNrYWdlcyBtYXJrZWQgYXMgdW5uZWVkZWQgZm9yIHRoaXMgcGFy dGljdWxhciBQeXRob24gZW52LgorICAgICAgICBpZiByZXEubWFya2VyIGFuZCBub3QgcmVxLm1h cmtlci5ldmFsdWF0ZSgpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIE1ha2Ug c3VyZSB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuLi4KKyAgICAgICAgdmVyc2lvbiA9IHBhY2th Z2VfdmVyc2lvbihyZXEubmFtZSkKKyAgICAgICAgaWYgdmVyc2lvbiBpcyBOb25lOgorICAgICAg ICAgICAgcmVwb3J0KGYicGFja2FnZSAne3JlcS5uYW1lfSc6IG5vdCBpbnN0YWxsZWQiKQorICAg ICAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAj IC4uLmFuZCB0aGF0IGl0IGhhcyBhIGNvbXBhdGlibGUgdmVyc2lvbi4KKyAgICAgICAgaWYgbm90 IHJlcS5zcGVjaWZpZXIuY29udGFpbnModmVyc2lvbik6CisgICAgICAgICAgICByZXBvcnQoCisg ICAgICAgICAgICAgICAgInBhY2thZ2UgJ3t9JzogaGFzIHZlcnNpb24ge30sIGJ1dCAne30nIGlz IHJlcXVpcmVkIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJlcS5uYW1lLCB2ZXJzaW9u LCByZXEuc3BlY2lmaWVyCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKyAgICAg ICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBS ZXBvcnQgaW5zdGFsbGVkIHBhY2thZ2VzIHRvbywgdG8gbWlycm9yIGNoZWNrX21vZHVsZXMucGwu CisgICAgICAgIHJlcG9ydChmInBhY2thZ2UgJ3tyZXEubmFtZX0nOiBpbnN0YWxsZWQgKHZlcnNp b24ge3ZlcnNpb259KSIpCisKKyAgICByZXR1cm4gZm91bmQKKworCitkZWYgdGVzdF9wYWNrYWdl cyhyZXF1aXJlbWVudHNfZmlsZSk6CisgICAgIiIiCisgICAgRW50cnkgcG9pbnQuCisgICAgIiIi CisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4ocmVxdWlyZW1lbnRzX2ZpbGUsICJyIikgYXMg ZjoKKyAgICAgICAgICAgIHJlcXVpcmVtZW50cyA9IGYucmVhZGxpbmVzKCkKKworICAgICAgICBh bGxfZm91bmQgPSBwYWNrYWdpbmdfY2hlY2socmVxdWlyZW1lbnRzKQorCisgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICMgU3VyZmFjZSBhbnkgYnJlYWthZ2UgdG8gdGhlIGNv bmZpZ3VyZSBzY3JpcHQgYmVmb3JlIGZhaWxpbmcgdGhlIHRlc3QuCisgICAgICAgIHJlcG9ydChl cnIpCisgICAgICAgIHJhaXNlCisKKyAgICBhc3NlcnQgYWxsX2ZvdW5kLCAicmVxdWlyZWQgcGFj a2FnZXMgYXJlIG1pc3NpbmciCmRpZmYgLS1naXQgYS9jb25maWcvY29uZnRlc3QucHkgYi9jb25m aWcvY29uZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE5 YzJiYzU0NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnL2NvbmZ0ZXN0LnB5CkBAIC0wLDAg KzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorIworIyBTdXBwb3J0IGZvciBjaGVja19weXRlc3QucHkuIFRoZSBjb25maWd1 cmUgc2NyaXB0IHByb3ZpZGVzIHRoZSBwYXRoIHRvCisjIHB5dGVzdC1yZXF1aXJlbWVudHMudHh0 IHZpYSB0aGUgLS1yZXF1aXJlbWVudHMgb3B0aW9uIGFkZGVkIGhlcmUuCisKK2ltcG9ydCBweXRl c3QKKworCitkZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgorICAgIHBhcnNlci5hZGRvcHRp b24oCisgICAgICAgICItLXJlcXVpcmVtZW50cyIsCisgICAgICAgIGhlbHA9InBhdGggdG8gcHl0 ZXN0LXJlcXVpcmVtZW50cy50eHQiLAorICAgICkKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBy ZXF1aXJlbWVudHNfZmlsZShyZXF1ZXN0KToKKyAgICByZXR1cm4gcmVxdWVzdC5jb25maWcuZ2V0 b3B0aW9uKCItLXJlcXVpcmVtZW50cyIpCmRpZmYgLS1naXQgYS9jb25maWcvcHl0ZXN0LXJlcXVp cmVtZW50cy50eHQgYi9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI5NDE2MjRiMmYzCi0tLSAvZGV2L251bGwKKysr IGIvY29uZmlnL3B5dGVzdC1yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyMKKyMg VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBQeXRob24gcGFja2FnZXMgd2hpY2ggYXJlIHJlcXVpcmVk IGluIG9yZGVyIGZvciB1cyB0bworIyBlbmFibGUgcHl0ZXN0LgorIworIyBUaGUgc3ludGF4IGlz IGEgKnN1YnNldCogb2YgcGlwJ3MgcmVxdWlyZW1lbnRzLnR4dCBzeW50YXgsIHNvIHRoYXQgYm90 aCBwaXAKKyMgYW5kIGNoZWNrX3B5dGVzdC5weSBjYW4gdXNlIGl0LiBPbmx5IHdob2xlLWxpbmUg Y29tbWVudHMgYW5kIHN0YW5kYXJkIFB5dGhvbgorIyBkZXBlbmRlbmN5IHNwZWNpZmllcnMgYXJl IGFsbG93ZWQuIHBpcC1zcGVjaWZpYyBnb29kaWVzIGxpa2UgaW5jbHVkZXMgYW5kCisjIGVudmly b25tZW50IHN1YnN0aXR1dGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQ7IGtlZXAgaXQgc2ltcGxlLgor IworIyBQYWNrYWdlcyBiZWxvbmcgaGVyZSBpZiB0aGVpciBhYnNlbmNlIHNob3VsZCBjYXVzZSBh IGNvbmZpZ3VyYXRpb24gZmFpbHVyZS4gSWYKKyMgeW91J2QgbGlrZSB0byBtYWtlIGEgcGFja2Fn ZSBvcHRpb25hbCwgY29uc2lkZXIgdXNpbmcgcHl0ZXN0LmltcG9ydG9yc2tpcCgpCisjIGluc3Rl YWQuCisjCisKKyMgcHl0ZXN0IDcuMCB3YXMgdGhlIGxhc3QgdmVyc2lvbiB3aGljaCBzdXBwb3J0 ZWQgUHl0aG9uIDMuNiwgYnV0IHRoZSBCU0RzIGhhdmUKKyMgc3RhcnRlZCBwdXR0aW5nIDgueCBp bnRvIHBvcnRzLCBzbyB3ZSBzdXBwb3J0IGJvdGguIChweXRlc3QgOCBjYW4gYmUgdXNlZAorIyB0 aHJvdWdob3V0IG9uY2Ugd2UgZHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43LikKK3B5dGVzdCA+ PSA3LjAsIDwgOQorCisjIHBhY2thZ2luZyBpcyB1c2VkIGJ5IGNoZWNrX3B5dGVzdC5weSBhdCBj b25maWd1cmUgdGltZS4KK3BhY2thZ2luZwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmln dXJlCmluZGV4IDIyY2Q4NjYxNDdiLi5hYTkzZmE1ZjBhYSAxMDA3NTUKLS0tIGEvY29uZmlndXJl CisrKyBiL2NvbmZpZ3VyZQpAQCAtNjMwLDYgKzYzMCw3IEBAIHZwYXRoX2J1aWxkCiBQR19TWVNS T09UCiBQR19WRVJTSU9OX05VTQogTERGTEFHU19FWF9CRQorUFlURVNUCiBQUk9WRQogREJUT0VQ VUIKIEZPUApAQCAtNzcxLDYgKzc3Miw3IEBAIENGTEFHUwogQ0MKIGVuYWJsZV9pbmplY3Rpb25f cG9pbnRzCiBQR19URVNUX0VYVFJBCitlbmFibGVfcHl0ZXN0CiBlbmFibGVfdGFwX3Rlc3RzCiBl bmFibGVfZHRyYWNlCiBEVFJBQ0VGTEFHUwpAQCAtODQ5LDYgKzg1MSw3IEBAIGVuYWJsZV9wcm9m aWxpbmcKIGVuYWJsZV9jb3ZlcmFnZQogZW5hYmxlX2R0cmFjZQogZW5hYmxlX3RhcF90ZXN0cwor ZW5hYmxlX3B5dGVzdAogZW5hYmxlX2luamVjdGlvbl9wb2ludHMKIHdpdGhfYmxvY2tzaXplCiB3 aXRoX3NlZ3NpemUKQEAgLTE1NDksNyArMTU1MiwxMCBAQCBPcHRpb25hbCBGZWF0dXJlczoKICAg LS1lbmFibGUtcHJvZmlsaW5nICAgICAgYnVpbGQgd2l0aCBwcm9maWxpbmcgZW5hYmxlZAogICAt LWVuYWJsZS1jb3ZlcmFnZSAgICAgICBidWlsZCB3aXRoIGNvdmVyYWdlIHRlc3RpbmcgaW5zdHJ1 bWVudGF0aW9uCiAgIC0tZW5hYmxlLWR0cmFjZSAgICAgICAgIGJ1aWxkIHdpdGggRFRyYWNlIHN1 cHBvcnQKLSAgLS1lbmFibGUtdGFwLXRlc3RzICAgICAgZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWly ZXMgUGVybCBhbmQgSVBDOjpSdW4pCisgIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAgIGVuYWJsZSAo UGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICBJUEM6OlJ1bikKKyAgLS1lbmFibGUtcHl0ZXN0ICAgICAgICAgZW5hYmxlIChQ eXRob24tYmFzZWQpIHB5dGVzdCBzdWl0ZXMgKHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAg ICAgICAgIFB5dGhvbikKICAgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwogICAgICAgICAgICAg ICAgICAgICAgICAgICBlbmFibGUgaW5qZWN0aW9uIHBvaW50cyAoZm9yIHRlc3RpbmcpCiAgIC0t ZW5hYmxlLWRlcGVuZCAgICAgICAgIHR1cm4gb24gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tp bmcKQEAgLTM2MzEsNyArMzYzNyw3IEBAIGZpCiAKIAogIwotIyBUQVAgdGVzdHMKKyMgVGVzdCBm cmFtZXdvcmtzCiAjCiAKIApAQCAtMzY1OSw2ICszNjY1LDMyIEBAIGZpCiAKIAogCisKKyMgQ2hl Y2sgd2hldGhlciAtLWVuYWJsZS1weXRlc3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVf cHl0ZXN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfcHl0ZXN0Owor ICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7OworICAgIG5v KQorICAgICAgOgorICAgICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFy Z3VtZW50IGV4cGVjdGVkIGZvciAtLWVuYWJsZS1weXRlc3Qgb3B0aW9uIiAiJExJTkVOTyIgNQor ICAgICAgOzsKKyAgZXNhYworCitlbHNlCisgIGVuYWJsZV9weXRlc3Q9bm8KKworZmkKKworCisK KworCisKICMKICMgSW5qZWN0aW9uIHBvaW50cwogIwpAQCAtMTkwNzQsNiArMTkxMDYsNzggQEAg JGFzX2VjaG8gIiRtb2R1bGVzdGRlcnIiID4mNjsgfQogICBmaQogZmkKIAoraWYgdGVzdCAiJGVu YWJsZV9weXRlc3QiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgLXogIiRQWVRFU1QiOyB0aGVuCisg IGZvciBhY19wcm9nIGluIHB5dGVzdCBweS50ZXN0CitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0 IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn cy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfUFlU RVNUKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK KyAgY2FzZSAkUFlURVNUIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1BZ VEVTVD0iJFBZVEVTVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBh dGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK K2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAi JGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfUFlURVNUPSIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJy ZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2Fj CitmaQorUFlURVNUPSRhY19jdl9wYXRoX1BZVEVTVAoraWYgdGVzdCAtbiAiJFBZVEVTVCI7IHRo ZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQ WVRFU1QiID4mNQorJGFzX2VjaG8gIiRQWVRFU1QiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8g Im5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkUFlURVNUIiAmJiBicmVhaworZG9uZQor CitlbHNlCisgICMgUmVwb3J0IHRoZSB2YWx1ZSBvZiBQWVRFU1QgaW4gY29uZmlndXJlJ3Mgb3V0 cHV0IGluIGFsbCBjYXNlcy4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgUFlURVNUIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBQ WVRFU1QuLi4gIiA+JjY7IH0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRQWVRFU1QiID4mNQorJGFzX2VjaG8gIiRQWVRFU1QiID4mNjsgfQorZmkK KworICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRl c3Qgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorICBmaQorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBQeXRob24gcGFja2FnZXMgcmVxdWlyZWQg Zm9yIHB5dGVzdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUHl0aG9uIHBhY2thZ2Vz IHJlcXVpcmVkIGZvciBweXRlc3QuLi4gIiA+JjY7IH0KKyAgbW9kdWxlc3RkZXJyPWAkUFlURVNU IC1jICIkc3JjZGlyL3B5dGVzdC5pbmkiIC0tY29uZmN1dGRpcj0iJHNyY2Rpci9jb25maWciIC0t Y2FwdHVyZT1ubyAiJHNyY2Rpci9jb25maWcvY2hlY2tfcHl0ZXN0LnB5IiAtLXJlcXVpcmVtZW50 cyAiJHNyY2Rpci9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQiIDI+JjEgPi9kZXYvbnVs bGAKKyAgaWYgdGVzdCAkPyAtZXEgMDsgdGhlbgorICAgIGVjaG8gIiRtb2R1bGVzdGRlcnIiID4m NQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5 ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisgIGVsc2UKKyAgICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJG1vZHVsZXN0ZGVyciIgPiY1Cisk YXNfZWNobyAiJG1vZHVsZXN0ZGVyciIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gIkFkZGl0 aW9uYWwgUHl0aG9uIHBhY2thZ2VzIGFyZSByZXF1aXJlZCB0byBydW4gdGhlIHB5dGVzdCBzdWl0 ZXMiICIkTElORU5PIiA1CisgIGZpCitmaQorCiAjIElmIGNvbXBpbGVyIHdpbGwgdGFrZSAtV2ws LS1hcy1uZWVkZWQgKG9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMKICMgc3BlbGxpbmdzIHRo ZXJlb2YpIHRoZW4gYWRkIHRoYXQgdG8gTERGTEFHUy4gIFRoaXMgaXMgbXVjaCBlYXNpZXIgdGhh bgogIyB0cnlpbmcgdG8gZmlsdGVyIExJQlMgdG8gdGhlIG1pbmltdW0gZm9yIGVhY2ggZXhlY3V0 YWJsZS4KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBlNDQ5 NDNhYTZmZS4uMjU0NDIwNTBmMzQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m aWd1cmUuYWMKQEAgLTIyNSwxMSArMjI1LDE2IEBAIEFDX1NVQlNUKERUUkFDRUZMQUdTKV0pCiBB Q19TVUJTVChlbmFibGVfZHRyYWNlKQogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0IGZyYW1ld29y a3MKICMKIFBHQUNfQVJHX0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAgICAgICAgICAg ICBbZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pXSkKKyAgICAg ICAgICAgICAgW2VuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFu ZCBJUEM6OlJ1bildKQogQUNfU1VCU1QoZW5hYmxlX3RhcF90ZXN0cykKKworUEdBQ19BUkdfQk9P TChlbmFibGUsIHB5dGVzdCwgbm8sCisgICAgICAgICAgICAgIFtlbmFibGUgKFB5dGhvbi1iYXNl ZCkgcHl0ZXN0IHN1aXRlcyAocmVxdWlyZXMgUHl0aG9uKV0pCitBQ19TVUJTVChlbmFibGVfcHl0 ZXN0KQorCiBBQ19BUkdfVkFSKFBHX1RFU1RfRVhUUkEsCiAgICAgICAgICAgIFtlbmFibGUgc2Vs ZWN0ZWQgZXh0cmEgdGVzdHMgKG92ZXJyaWRkZW4gYXQgcnVudGltZSBieSBQR19URVNUX0VYVFJB IGVudmlyb25tZW50IHZhcmlhYmxlKV0pCiAKQEAgLTI0MTUsNiArMjQyMCwyMiBAQCBpZiB0ZXN0 ICIkZW5hYmxlX3RhcF90ZXN0cyIgPSB5ZXM7IHRoZW4KICAgZmkKIGZpCiAKK2lmIHRlc3QgIiRl bmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBQR0FDX1BBVEhfUFJPR1MoUFlURVNULCBweXRl c3QgcHkudGVzdCkKKyAgaWYgdGVzdCAteiAiJFBZVEVTVCI7IHRoZW4KKyAgICBBQ19NU0dfRVJS T1IoW3B5dGVzdCBub3QgZm91bmRdKQorICBmaQorICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIFB5dGhv biBwYWNrYWdlcyByZXF1aXJlZCBmb3IgcHl0ZXN0KQorICBbbW9kdWxlc3RkZXJyPWAkUFlURVNU IC1jICIkc3JjZGlyL3B5dGVzdC5pbmkiIC0tY29uZmN1dGRpcj0iJHNyY2Rpci9jb25maWciIC0t Y2FwdHVyZT1ubyAiJHNyY2Rpci9jb25maWcvY2hlY2tfcHl0ZXN0LnB5IiAtLXJlcXVpcmVtZW50 cyAiJHNyY2Rpci9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQiIDI+JjEgPi9kZXYvbnVs bGBdCisgIGlmIHRlc3QgJD8gLWVxIDA7IHRoZW4KKyAgICBlY2hvICIkbW9kdWxlc3RkZXJyIiA+ JkFTX01FU1NBR0VfTE9HX0ZECisgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgIGVsc2UKKyAgICBB Q19NU0dfUkVTVUxUKFskbW9kdWxlc3RkZXJyXSkKKyAgICBBQ19NU0dfRVJST1IoW0FkZGl0aW9u YWwgUHl0aG9uIHBhY2thZ2VzIGFyZSByZXF1aXJlZCB0byBydW4gdGhlIHB5dGVzdCBzdWl0ZXNd KQorICBmaQorZmkKKwogIyBJZiBjb21waWxlciB3aWxsIHRha2UgLVdsLC0tYXMtbmVlZGVkIChv ciB2YXJpb3VzIHBsYXRmb3JtLXNwZWNpZmljCiAjIHNwZWxsaW5ncyB0aGVyZW9mKSB0aGVuIGFk ZCB0aGF0IHRvIExERkxBR1MuICBUaGlzIGlzIG11Y2ggZWFzaWVyIHRoYW4KICMgdHJ5aW5nIHRv IGZpbHRlciBMSUJTIHRvIHRoZSBtaW5pbXVtIGZvciBlYWNoIGV4ZWN1dGFibGUuCmRpZmYgLS1n aXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDM3ZWQ2OGNlZWI0Li4wNmViN2Ex OTIxMCAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTE3MDIs NiArMTcwMiwzOSBAQCBlbmRpZgogCiAKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIExpYnJhcnk6IHB5dGVzdAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKK3B5dGVzdF9lbmFibGVkID0gZmFsc2UKK3B5dGVzdCA9IG5vdF9mb3VuZF9kZXAKKwor cHl0ZXN0b3B0ID0gZ2V0X29wdGlvbigncHl0ZXN0JykKK2lmIG5vdCBweXRlc3RvcHQuZGlzYWJs ZWQoKQorICBweXRlc3QgPSBmaW5kX3Byb2dyYW0oZ2V0X29wdGlvbignUFlURVNUJyksIG5hdGl2 ZTogdHJ1ZSwgcmVxdWlyZWQ6IHB5dGVzdG9wdCkKKyAgaWYgcHl0ZXN0LmZvdW5kKCkKKyAgICBw eXRlc3RfY2hlY2sgPSBydW5fY29tbWFuZChweXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy1jJywgJ3B5dGVzdC5pbmknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICctLWNvbmZjdXRkaXI9Y29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnLS1jYXB0dXJlPW5vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmln L2NoZWNrX3B5dGVzdC5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVx dWlyZW1lbnRzJywgJ2NvbmZpZy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dCcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hlY2s6IGZhbHNlKQorICAgIGlmIHB5dGVzdF9jaGVjay5y ZXR1cm5jb2RlKCkgIT0gMAorICAgICAgbWVzc2FnZShweXRlc3RfY2hlY2suc3RkZXJyKCkpCisg ICAgICBpZiBweXRlc3RvcHQuZW5hYmxlZCgpCisgICAgICAgIGVycm9yKCdBZGRpdGlvbmFsIFB5 dGhvbiBwYWNrYWdlcyBhcmUgcmVxdWlyZWQgdG8gcnVuIHRoZSBweXRlc3Qgc3VpdGVzLicpCisg ICAgICBlbHNlCisgICAgICAgIHdhcm5pbmcoJ0FkZGl0aW9uYWwgUHl0aG9uIHBhY2thZ2VzIGFy ZSByZXF1aXJlZCB0byBydW4gdGhlIHB5dGVzdCBzdWl0ZXMuJykKKyAgICAgIGVuZGlmCisgICAg ZWxzZQorICAgICAgcHl0ZXN0X2VuYWJsZWQgPSB0cnVlCisgICAgZW5kaWYKKyAgZW5kaWYKK2Vu ZGlmCisKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICMgTGlicmFyeTogenN0ZAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNzc5LDYgKzM4 MTIsNjMgQEAgZm9yZWFjaCB0ZXN0X2RpciA6IHRlc3RzCiAgICAgICAgICkKICAgICAgIGVuZGZv cmVhY2gKICAgICAgIGluc3RhbGxfc3VpdGVzICs9IHRlc3RfZ3JvdXAKKyAgICBlbGlmIGtpbmQg PT0gJ3B5dGVzdCcKKyAgICAgIHRlc3R3cmFwX3B5dGVzdCA9IHRlc3R3cmFwX2Jhc2UKKyAgICAg IGlmIG5vdCBweXRlc3RfZW5hYmxlZAorICAgICAgICB0ZXN0d3JhcF9weXRlc3QgKz0gWyctLXNr aXAnLCAncHl0ZXN0IG5vdCBlbmFibGVkJ10KKyAgICAgIGVuZGlmCisKKyAgICAgIHRlc3RfY29t bWFuZCA9IFsKKyAgICAgICAgcHl0ZXN0LmZ1bGxfcGF0aCgpLAorICAgICAgICAnLWMnLCBtZXNv bi5wcm9qZWN0X3NvdXJjZV9yb290KCkgLyAncHl0ZXN0LmluaScsCisgICAgICAgICctLXZlcmJv c2UnLAorICAgICAgICAnLXAnLCAncGd0YXAnLCAgIyBlbmFibGUgb3VyIHRlc3QgcmVwb3J0ZXIg cGx1Z2luCisgICAgICAgICctcmEnLCAgIyBzaG93IHNraXBwZWQgYW5kIHhmYWlsZWQgdGVzdHMg dG9vCisgICAgICBdCisKKyAgICAgICMgQWRkIHRlbXBvcmFyeSBpbnN0YWxsLCB0aGUgYnVpbGQg ZGlyZWN0b3J5IGZvciBub24taW5zdGFsbGVkIGJpbmFyaWVzIGFuZAorICAgICAgIyBhbHNvIHRl c3QvIGZvciBub24taW5zdGFsbGVkIHRlc3QgYmluYXJpZXMgYnVpbHQgc2VwYXJhdGVseS4KKyAg ICAgIGVudiA9IHRlc3RfZW52CisgICAgICBlbnYucHJlcGVuZCgnUEFUSCcsIHRlbXBfaW5zdGFs bF9iaW5kaXIsIHRlc3RfZGlyWydiZCddLCB0ZXN0X2RpclsnYmQnXSAvICd0ZXN0JykKKyAgICAg IHRlbXBfaW5zdGFsbF9kYXRhZGlyID0gJ0AwQEAxQCcuZm9ybWF0KHRlc3RfaW5zdGFsbF9kZXN0 ZGlyLCBkaXJfcHJlZml4IC8gZGlyX2RhdGEpCisgICAgICBlbnYuc2V0KCdzaGFyZV9jb250cmli X2RpcicsIHRlbXBfaW5zdGFsbF9kYXRhZGlyIC8gJ2NvbnRyaWInKQorICAgICAgZW52LnByZXBl bmQoJ1BZVEhPTlBBVEgnLCBtZXNvbi5wcm9qZWN0X3NvdXJjZV9yb290KCkgLyAnc3JjJyAvICd0 ZXN0JyAvICdweXRlc3QnIC8gJ3BsdWdpbnMnKQorCisgICAgICBmb3JlYWNoIG5hbWUsIHZhbHVl IDogdC5nZXQoJ2VudicsIHt9KQorICAgICAgICBlbnYuc2V0KG5hbWUsIHZhbHVlKQorICAgICAg ZW5kZm9yZWFjaAorCisgICAgICB0ZXN0X2dyb3VwID0gdGVzdF9kaXJbJ25hbWUnXQorICAgICAg dGVzdF9rd2FyZ3MgPSB7CisgICAgICAgICdwcm90b2NvbCc6ICd0YXAnLAorICAgICAgICAnc3Vp dGUnOiB0ZXN0X2dyb3VwLAorICAgICAgICAndGltZW91dCc6IDEwMDAsCisgICAgICAgICdkZXBl bmRzJzogdGVzdF9kZXBzICsgdC5nZXQoJ2RlcHMnLCBbXSksCisgICAgICAgICdlbnYnOiBlbnYs CisgICAgICB9ICsgdC5nZXQoJ3Rlc3Rfa3dhcmdzJywge30pCisKKyAgICAgIGZvcmVhY2ggb25l dGVzdCA6IHRbJ3Rlc3RzJ10KKyAgICAgICAgIyBNYWtlIHRlc3QgbmFtZXMgcHJldHRpZXIsIHJl bW92ZSBweXQvIGFuZCAucHkKKyAgICAgICAgb25ldGVzdF9wID0gb25ldGVzdAorICAgICAgICBp ZiBvbmV0ZXN0X3Auc3RhcnRzd2l0aCgncHl0LycpCisgICAgICAgICAgb25ldGVzdF9wID0gb25l dGVzdC5zcGxpdCgncHl0LycpWzFdCisgICAgICAgIGVuZGlmCisgICAgICAgIGlmIG9uZXRlc3Rf cC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgICBvbmV0ZXN0X3AgPSBmcy5zdGVtKG9uZXRlc3Rf cCkKKyAgICAgICAgZW5kaWYKKworICAgICAgICB0ZXN0KHRlc3RfZGlyWyduYW1lJ10gLyBvbmV0 ZXN0X3AsCisgICAgICAgICAgcHl0aG9uLAorICAgICAgICAgIGt3YXJnczogdGVzdF9rd2FyZ3Ms CisgICAgICAgICAgYXJnczogdGVzdHdyYXBfcHl0ZXN0ICsgWworICAgICAgICAgICAgJy0tdGVz dGdyb3VwJywgdGVzdF9kaXJbJ25hbWUnXSwKKyAgICAgICAgICAgICctLXRlc3RuYW1lJywgb25l dGVzdF9wLAorICAgICAgICAgICAgJy0tJywgdGVzdF9jb21tYW5kLAorICAgICAgICAgICAgdGVz dF9kaXJbJ3NkJ10gLyBvbmV0ZXN0LAorICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgIGVu ZGZvcmVhY2gKKyAgICAgIGluc3RhbGxfc3VpdGVzICs9IHRlc3RfZ3JvdXAKICAgICBlbHNlCiAg ICAgICBlcnJvcigndW5rbm93biBraW5kIEAwQCBvZiB0ZXN0IGluIEAxQCcuZm9ybWF0KGtpbmQs IHRlc3RfZGlyWydzZCddKSkKICAgICBlbmRpZgpAQCAtMzk1Myw2ICs0MDQzLDcgQEAgc3VtbWFy eSgKICAgICAnZHRyYWNlJzogZHRyYWNlLAogICAgICdmbGV4JzogJ0AwQCBAMUAnLmZvcm1hdChm bGV4LmZ1bGxfcGF0aCgpLCBmbGV4X3ZlcnNpb24pLAogICAgICdwcm92ZSc6IHByb3ZlLAorICAg ICdweXRlc3QnOiBweXRlc3QsCiAgIH0sCiAgIHNlY3Rpb246ICdQcm9ncmFtcycsCiApCkBAIC0z OTkzLDYgKzQwODQsNyBAQCBzdW1tYXJ5KAogc3VtbWFyeSgKICAgewogICAgICd0YXAnOiB0YXBf dGVzdHNfZW5hYmxlZCwKKyAgICAncHl0ZXN0JzogcHl0ZXN0X2VuYWJsZWQsCiAgIH0sCiAgIHNl Y3Rpb246ICdPdGhlciBmZWF0dXJlcycsCiAgIGxpc3Rfc2VwOiAnICcsCmRpZmYgLS1naXQgYS9t ZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CmluZGV4IDA2YmY1NjI3ZDNjLi44 OGYyMmU2OTlkOSAxMDA2NDQKLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrIGIvbWVzb25fb3B0 aW9ucy50eHQKQEAgLTQxLDcgKzQxLDEwIEBAIG9wdGlvbignY2Fzc2VydCcsIHR5cGU6ICdib29s ZWFuJywgdmFsdWU6IGZhbHNlLAogICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBhc3NlcnRpb24gY2hl Y2tzIChmb3IgZGVidWdnaW5nKScpCiAKIG9wdGlvbigndGFwX3Rlc3RzJywgdHlwZTogJ2ZlYXR1 cmUnLCB2YWx1ZTogJ2F1dG8nLAotICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBUQVAgdGVzdHMnKQor ICBkZXNjcmlwdGlvbjogJ0VuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzJykKKworb3B0aW9u KCdweXRlc3QnLCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCisgIGRlc2NyaXB0aW9u OiAnRW5hYmxlIChQeXRob24tYmFzZWQpIHB5dGVzdCBzdWl0ZXMnKQogCiBvcHRpb24oJ2luamVj dGlvbl9wb2ludHMnLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiBmYWxzZSwKICAgZGVzY3JpcHRp b246ICdFbmFibGUgaW5qZWN0aW9uIHBvaW50cycpCkBAIC0xOTUsNiArMTk4LDkgQEAgb3B0aW9u KCdQRVJMJywgdHlwZTogJ3N0cmluZycsIHZhbHVlOiAncGVybCcsCiBvcHRpb24oJ1BST1ZFJywg dHlwZTogJ3N0cmluZycsIHZhbHVlOiAncHJvdmUnLAogICBkZXNjcmlwdGlvbjogJ1BhdGggdG8g cHJvdmUgYmluYXJ5JykKIAorb3B0aW9uKCdQWVRFU1QnLCB0eXBlOiAnYXJyYXknLCB2YWx1ZTog WydweXRlc3QnLCAncHkudGVzdCddLAorICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHl0ZXN0IGJp bmFyeScpCisKIG9wdGlvbignUFlUSE9OJywgdHlwZTogJ2FycmF5JywgdmFsdWU6IFsncHl0aG9u MycsICdweXRob24nXSwKICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIHB5dGhvbiBiaW5hcnknKQog CmRpZmYgLS1naXQgYS9weXRlc3QuaW5pIGIvcHl0ZXN0LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOGU4Mzg4ZjNhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9weXRl c3QuaW5pCkBAIC0wLDAgKzEsNiBAQAorW3B5dGVzdF0KK21pbnZlcnNpb24gPSA3LjAKKworIyBJ Z25vcmUgLi9jb25maWcgKHdoaWNoIGNvbnRhaW5zIHRoZSBjb25maWd1cmUtdGltZSBjaGVja19w eXRlc3QucHkgdGVzdHMpIGJ5CisjIGRlZmF1bHQuCithZGRvcHRzID0gLS1pZ25vcmUgLi9jb25m aWcKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4gYi9zcmMvTWFrZWZpbGUuZ2xv YmFsLmluCmluZGV4IDBhYTM4OWJjNzEwLi44YTY4ODUyMDZjZSAxMDA2NDQKLS0tIGEvc3JjL01h a2VmaWxlLmdsb2JhbC5pbgorKysgYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCkBAIC0yMTEsNiAr MjExLDcgQEAgZW5hYmxlX2R0cmFjZQk9IEBlbmFibGVfZHRyYWNlQAogZW5hYmxlX2NvdmVyYWdl CT0gQGVuYWJsZV9jb3ZlcmFnZUAKIGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzID0gQGVuYWJsZV9p bmplY3Rpb25fcG9pbnRzQAogZW5hYmxlX3RhcF90ZXN0cwk9IEBlbmFibGVfdGFwX3Rlc3RzQAor ZW5hYmxlX3B5dGVzdAk9IEBlbmFibGVfcHl0ZXN0QAogCiBweXRob25faW5jbHVkZXNwZWMJPSBA cHl0aG9uX2luY2x1ZGVzcGVjQAogcHl0aG9uX2xpYmRpcgkJPSBAcHl0aG9uX2xpYmRpckAKQEAg LTM1Myw2ICszNTQsNyBAQCBNU0dGTVQgID0gQE1TR0ZNVEAKIE1TR0ZNVF9GTEFHUyA9IEBNU0dG TVRfRkxBR1NACiBNU0dNRVJHRSA9IEBNU0dNRVJHRUAKIE9QRU5TU0wJPSBAT1BFTlNTTEAKK1BZ VEVTVAk9IEBQWVRFU1RACiBQWVRIT04JPSBAUFlUSE9OQAogVEFSCT0gQFRBUkAKIFhHRVRURVhU ID0gQFhHRVRURVhUQApAQCAtNTA3LDYgKzUwOSwyNyBAQCBwcm92ZV9pbnN0YWxsY2hlY2sgPSBA ZWNobyAiVEFQIHRlc3RzIG5vdCBlbmFibGVkLiBUcnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJs ZQogcHJvdmVfY2hlY2sgPSAkKHByb3ZlX2luc3RhbGxjaGVjaykKIGVuZGlmCiAKK2lmZXEgKCQo ZW5hYmxlX3B5dGVzdCkseWVzKQorCitweXRlc3RfaW5zdGFsbGNoZWNrID0gQGVjaG8gIkluc3Rh bGxjaGVjayBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgcHl0ZXN0LiIKKworZGVmaW5l IHB5dGVzdF9jaGVjaworZWNobyAiIyArKysgcHl0ZXN0IGNoZWNrIGluICQoc3ViZGlyKSArKysi ICYmIFwKK3JtIC1yZiAnJChDVVJESVIpJy90bXBfY2hlY2sgJiYgXAorJChNS0RJUl9QKSAnJChD VVJESVIpJy90bXBfY2hlY2sgJiYgXAorY2QgJChzcmNkaXIpICYmIFwKKyAgIFRFU1RMT0dESVI9 JyQoQ1VSRElSKS90bXBfY2hlY2svbG9nJyBcCisgICBURVNUREFUQURJUj0nJChDVVJESVIpL3Rt cF9jaGVjaycgXAorICAgUFlUSE9OUEFUSD0nJChhYnNfdG9wX3NyY2Rpcikvc3JjL3Rlc3QvcHl0 ZXN0L3BsdWdpbnM6JCRQWVRIT05QQVRIJyBcCisgICAkKHdpdGhfdGVtcF9pbnN0YWxsKSBcCisg ICAkKFBZVEVTVCkgLWMgJyQoYWJzX3RvcF9zcmNkaXIpL3B5dGVzdC5pbmknIC0tdmVyYm9zZSAt cmEgLi9weXQvCitlbmRlZgorCitlbHNlCitweXRlc3RfaW5zdGFsbGNoZWNrID0gQGVjaG8gInB5 dGVzdCBpcyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1lbmFibGUtcHl0ZXN0 IgorcHl0ZXN0X2NoZWNrID0gJChweXRlc3RfaW5zdGFsbGNoZWNrKQorZW5kaWYKKwogIyBJbnN0 YWxsYXRpb24uCiAKIGluc3RhbGxfYmluID0gQGluc3RhbGxfYmluQApkaWZmIC0tZ2l0IGEvc3Jj L21ha2VmaWxlcy9tZXNvbi5idWlsZCBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKaW5kZXgg MGRlZjI0NGM5MDEuLmY2OGFjZDU3YmM0IDEwMDY0NAotLS0gYS9zcmMvbWFrZWZpbGVzL21lc29u LmJ1aWxkCisrKyBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKQEAgLTU2LDYgKzU2LDcgQEAg cGd4c19rdiA9IHsKICAgJ2VuYWJsZV9ubHMnOiBsaWJpbnRsLmZvdW5kKCkgPyAneWVzJyA6ICdu bycsCiAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50cyc6IGdldF9vcHRpb24oJ2luamVjdGlvbl9w b2ludHMnKSA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV90YXBfdGVzdHMnOiB0YXBfdGVzdHNf ZW5hYmxlZCA/ICd5ZXMnIDogJ25vJywKKyAgJ2VuYWJsZV9weXRlc3QnOiBweXRlc3RfZW5hYmxl ZCA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV9kZWJ1Zyc6IGdldF9vcHRpb24oJ2RlYnVnJykg PyAneWVzJyA6ICdubycsCiAgICdlbmFibGVfY292ZXJhZ2UnOiAnbm8nLAogICAnZW5hYmxlX2R0 cmFjZSc6IGR0cmFjZS5mb3VuZCgpID8gJ3llcycgOiAnbm8nLApAQCAtMTQ1LDYgKzE0Niw3IEBA IHBneHNfYmlucyA9IHsKICAgJ09QRU5TU0wnOiBvcGVuc3NsLAogICAnUEVSTCc6IHBlcmwsCiAg ICdQUk9WRSc6IHByb3ZlLAorICAnUFlURVNUJzogcHl0ZXN0LAogICAnUFlUSE9OJzogcHl0aG9u LAogICAnVEFSJzogdGFyLAogICAnWlNURCc6IHByb2dyYW1fenN0ZCwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3QvTWFrZWZpbGUKaW5kZXggNTExYTcyZTYyMzguLjBi ZTk3NzFkNzFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9N YWtlZmlsZQpAQCAtMTIsNyArMTIsMTYgQEAgc3ViZGlyID0gc3JjL3Rlc3QKIHRvcF9idWlsZGRp ciA9IC4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAK LVNVQkRJUlMgPSBwZXJsIHBvc3RtYXN0ZXIgcmVncmVzcyBpc29sYXRpb24gbW9kdWxlcyBhdXRo ZW50aWNhdGlvbiByZWNvdmVyeSBzdWJzY3JpcHRpb24KK1NVQkRJUlMgPSBcCisJYXV0aGVudGlj YXRpb24gXAorCWlzb2xhdGlvbiBcCisJbW9kdWxlcyBcCisJcGVybCBcCisJcG9zdG1hc3RlciBc CisJcHl0ZXN0IFwKKwlyZWNvdmVyeSBcCisJcmVncmVzcyBcCisJc3Vic2NyaXB0aW9uCiAKIGlm ZXEgKCQod2l0aF9pY3UpLHllcykKIFNVQkRJUlMgKz0gaWN1CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCmluZGV4IGNjYzMxZDZhODZhLi5k MDhhNmVmNjFjMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbWVzb24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIHN1YmRpcignaXNvbGF0aW9uJykKIAogc3Vi ZGlyKCdhdXRoZW50aWNhdGlvbicpCiBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQorc3ViZGlyKCdweXRl c3QnKQogc3ViZGlyKCdyZWNvdmVyeScpCiBzdWJkaXIoJ3N1YnNjcmlwdGlvbicpCiBzdWJkaXIo J21vZHVsZXMnKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxlIGIvc3JjL3Rl c3QvcHl0ZXN0L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4yYmRjYTk2Y2NiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9NYWtlZmls ZQpAQCAtMCwwICsxLDIwIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZSBmb3Ig cHl0ZXN0CisjCisjIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQs IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIworIyBzcmMvdGVzdC9w eXRlc3QvTWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy90ZXN0 L3B5dGVzdAordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIp L3NyYy9NYWtlZmlsZS5nbG9iYWwKKworY2hlY2s6CisJJChweXRlc3RfY2hlY2spCisKK2NsZWFu IGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgorCXJtIC1yZiB0bXBfY2hlY2sKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUgYi9zcmMvdGVzdC9weXRlc3QvUkVBRE1FCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMzMzZWQ3N2I3ZQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKQEAgLTAsMCArMSBAQAorVE9ETwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0ZXN0L21l c29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYmQxMjhk ZmEyNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZApAQCAt MCwwICsxLDE2IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworaWYgbm90IHB5dGVzdF9lbmFibGVkCisgIHN1YmRpcl9kb25lKCkK K2VuZGlmCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAncHl0ZXN0JywKKyAgJ3NkJzogbWVzb24u Y3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCks CisgICdweXRlc3QnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3B5dC90ZXN0X3NvbWV0aGlu Zy5weScsCisgICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9wbHVn aW5zL3BndGFwLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3BsdWdpbnMvcGd0YXAucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVmODI5MWUyOTFjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3BsdWdpbnMvcGd0YXAucHkKQEAgLTAsMCArMSwxOTMgQEAK KyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAor CitpbXBvcnQgcHl0ZXN0CisKKyMKKyMgSGVscGVycworIworCisKK2NsYXNzIFRBUDoKKyAgICAi IiIKKyAgICBBIGJhc2ljIEFQSSBmb3IgcmVwb3J0aW5nIHZpYSB0aGUgVEFQIHByb3RvY29sLgor ICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmNvdW50ID0g MAorCisgICAgICAgICMgWFhYIGludGVyYWN0cyBwb29ybHkgd2l0aCB0ZXN0d3JhcCdzIGJvaWxl cnBsYXRlIGRpYWdub3N0aWNzCisgICAgICAgICMgc2VsZi5wcmludCgiVEFQIHZlcnNpb24gMTMi KQorCisgICAgZGVmIGV4cGVjdChzZWxmLCBudW06IGludCk6CisgICAgICAgIHNlbGYucHJpbnQo ZiIxLi57bnVtfSIpCisKKyAgICBkZWYgcHJpbnQoc2VsZiwgKmFyZ3MpOgorICAgICAgICBwcmlu dCgqYXJncywgZmlsZT1zeXMuX19zdGRvdXRfXykKKworICAgIGRlZiBvayhzZWxmLCBuYW1lOiBz dHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5wcmludCgib2siLCBz ZWxmLmNvdW50LCAiLSIsIG5hbWUpCisKKyAgICBkZWYgc2tpcChzZWxmLCBuYW1lOiBzdHIsIHJl YXNvbjogc3RyKToKKyAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAgIHNlbGYucHJpbnQo Im9rIiwgc2VsZi5jb3VudCwgIi0iLCBuYW1lLCAiIyBza2lwIiwgcmVhc29uKQorCisgICAgZGVm IGZhaWwoc2VsZiwgbmFtZTogc3RyLCBkZXRhaWxzOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50 ICs9IDEKKyAgICAgICAgc2VsZi5wcmludCgibm90IG9rIiwgc2VsZi5jb3VudCwgIi0iLCBuYW1l KQorCisgICAgICAgICMgbXRlc3QgaGFzIHNvbWUgb2RkIGJlaGF2aW9yIGFyb3VuZCBUQVAgdGVz dHMgd2hlcmUgaXQgd29uJ3QgcHJpbnQKKyAgICAgICAgIyBkaWFnbm9zdGljcyBvbiBmYWlsdXJl IGlmIHRoZXkncmUgcGFydCBvZiB0aGUgc3Rkb3V0IHN0cmVhbSwgc28gd2UKKyAgICAgICAgIyBt aWdodCBhcyB3ZWxsIGp1c3QgZHVtcCB0aGUgZGV0YWlscyBkaXJlY3RseSB0byBzdGRlcnIgaW5z dGVhZC4KKyAgICAgICAgcHJpbnQoZGV0YWlscywgZmlsZT1zeXMuX19zdGRlcnJfXykKKworCit0 YXAgPSBUQVAoKQorCisKK2NsYXNzIFRlc3ROb3RlczoKKyAgICAiIiIKKyAgICBBbm5vdGF0aW9u cyBmb3IgYSBzaW5nbGUgdGVzdC4gVGhlIGV4aXN0aW5nIHB5dGVzdCBob29rcyBrZWVwIGludGVy ZXN0aW5nCisgICAgaW5mb3JtYXRpb24gc29tZXdoYXQgc2VwYXJhdGVkIGFjcm9zcyB0aGUgZGlm ZmVyZW50IHN0YWdlcworICAgIChzZXR1cC90ZXN0L3RlYXJkb3duKSwgc28gdGhpcyBjbGFzcyBp cyB1c2VkIHRvIGNvcnJlbGF0ZSB0aGVtLgorICAgICIiIgorCisgICAgc2tpcHBlZCA9IEZhbHNl CisgICAgc2tpcF9yZWFzb24gPSBOb25lCisKKyAgICBmYWlsZWQgPSBGYWxzZQorICAgIGRldGFp bHMgPSAiIgorCisKKyMgUmVnaXN0ZXIgYSBjdXN0b20ga2V5IGluIHRoZSBzdGFzaCBkaWN0aW9u YXJ5IGZvciBrZWVwaW5nIG91ciBUZXN0Tm90ZXMuCitub3Rlc19rZXkgPSBweXRlc3QuU3Rhc2hL ZXlbVGVzdE5vdGVzXSgpCisKKworIworIyBIb29rIEltcGxlbWVudGF0aW9ucworIworCisKK0Bw eXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfY29uZmlndXJlKGNvbmZp Zyk6CisgICAgIiIiCisgICAgSGlqYWNrcyB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcyBzb29uIGFz IHBvc3NpYmxlIGR1cmluZyBweXRlc3Qgc3RhcnR1cC4gVGhlCisgICAgcHl0ZXN0LWZvcm1hdHRl ZCBvdXRwdXQgZ2V0cyBsb2dnZWQgdG8gZmlsZSBpbnN0ZWFkLCBhbmQgd2UnbGwgdXNlIHRoZQor ICAgIG9yaWdpbmFsIHN5cy5fX3N0ZG91dF9fL19fc3RkZXJyX18gc3RyZWFtcyBmb3IgdGhlIFRB UCBwcm90b2NvbC4KKyAgICAiIiIKKyAgICBsb2dkaXIgPSBvcy5nZXRlbnYoIlRFU1RMT0dESVIi KQorICAgIGlmIG5vdCBsb2dkaXI6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigicGd0YXAg cmVxdWlyZXMgdGhlIFRFU1RMT0dESVIgZW52dmFyIHRvIGJlIHNldCIpCisKKyAgICBvcy5tYWtl ZGlycyhsb2dkaXIpCisgICAgbG9ncGF0aCA9IG9zLnBhdGguam9pbihsb2dkaXIsICJweXRlc3Qu bG9nIikKKyAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVyciA9IG9wZW4obG9ncGF0aCwgImEiLCBi dWZmZXJpbmc9MSkKKworCitAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKK2RlZiBweXRl c3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uLCBleGl0c3RhdHVzKToKKyAgICAiIiIKKyAgICBTdXBw cmVzc2VzIG5vbnplcm8gZXhpdCBjb2RlcyBkdWUgdG8gZmFpbGVkIHRlc3RzLiAoSW4gdGhhdCBj YXNlLCB3ZSB3YW50CisgICAgTWVzb24gdG8gcmVwb3J0IGEgZmFpbHVyZSBjb3VudCwgbm90IGEg Z2VuZXJpYyBFUlJPUi4pCisgICAgIiIiCisgICAgaWYgZXhpdHN0YXR1cyA9PSBweXRlc3QuRXhp dENvZGUuVEVTVFNfRkFJTEVEOgorICAgICAgICBzZXNzaW9uLmV4aXRzdGF0dXMgPSBweXRlc3Qu RXhpdENvZGUuT0sKKworCitAcHl0ZXN0Lmhvb2tpbXBsCitkZWYgcHl0ZXN0X2NvbGxlY3RyZXBv cnQocmVwb3J0KToKKyAgICAjIEluY2x1ZGUgY29sbGVjdGlvbiBmYWlsdXJlcyBkaXJlY3RseSBp biBNZXNvbiBlcnJvciBvdXRwdXQuCisgICAgaWYgcmVwb3J0LmZhaWxlZDoKKyAgICAgICAgcHJp bnQocmVwb3J0LmxvbmdyZXBydGV4dCwgZmlsZT1zeXMuX19zdGRlcnJfXykKKworCitAcHl0ZXN0 Lmhvb2tpbXBsCitkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjcmVwciwgZXhjaW5mbyk6Cisg ICAgIyBJbmNsdWRlIGludGVybmFsIGVycm9ycyBkaXJlY3RseSBpbiBNZXNvbiBlcnJvciBvdXRw dXQuCisgICAgcHJpbnQoZXhjcmVwciwgZmlsZT1zeXMuX19zdGRlcnJfXykKKworCisjCisjIEhv b2sgV3JhcHBlcnMKKyMKKyMgSW4gcHl0ZXN0IHBhcmxhbmNlLCBhICJ3cmFwcGVyIiBmb3IgYSBo b29rIGNhbiBpbnNwZWN0IGFuZCBvcHRpb25hbGx5IG1vZGlmeQorIyBleGlzdGluZyBob29rcycg YmVoYXZpb3IsIGJ1dCBpdCBkb2VzIG5vdCByZXBsYWNlIHRoZSBob29rIGNoYWluLiBUaGlzIGlz IGRvbmUKKyMgdGhyb3VnaCBhIGdlbmVyYXRvci1zdHlsZSBBUEkgd2hpY2ggY2hhaW5zIHRoZSBo b29rcyB0b2dldGhlciAoc2VlIHRoZSB1c2Ugb2YKKyMgYHlpZWxkYCkuCisjCisKKworQHB5dGVz dC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNlc3Np b24pOgorICAgICIiIlJlcG9ydHMgdGhlIG51bWJlciBvZiBnYXRoZXJlZCB0ZXN0cyBhZnRlciBj b2xsZWN0aW9uIGlzIGZpbmlzaGVkLiIiIgorICAgIHJlcyA9IHlpZWxkCisgICAgdGFwLmV4cGVj dChzZXNzaW9uLnRlc3RzY29sbGVjdGVkKQorICAgIHJldHVybiByZXMKKworCitAcHl0ZXN0Lmhv b2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChp dGVtLCBjYWxsKToKKyAgICAiIiIKKyAgICBBbm5vdGF0ZXMgYSB0ZXN0IGl0ZW0gd2l0aCBvdXIg VGVzdE5vdGVzIGFuZCBncmFicyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IKKyAgICByZXBvcnRp bmcuCisKKyAgICBUaGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIgdGVzdCwgc28gaXQn cyBub3QgY29ycmVjdCB0byBwcmludCB0aGUgVEFQCisgICAgcmVzdWx0IGhlcmUuIChBIHRlc3Qg YW5kIGl0cyB0ZWFyZG93biBzdGFnZSBjYW4gYm90aCBmYWlsLCBhbmQgd2Ugd2FudCB0bworICAg IHNlZSB0aGUgZGV0YWlscyBmb3IgYm90aC4pIFdlIGluc3RlYWQgY29tYmluZSBhbGwgdGhlIGlu Zm9ybWF0aW9uIGZvciB1c2UgYnkKKyAgICBvdXIgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2wgd3Jh cHBlciBsYXRlciBvbi4KKyAgICAiIiIKKyAgICByZXMgPSB5aWVsZAorCisgICAgaWYgbm90ZXNf a2V5IG5vdCBpbiBpdGVtLnN0YXNoOgorICAgICAgICBpdGVtLnN0YXNoW25vdGVzX2tleV0gPSBU ZXN0Tm90ZXMoKQorICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19rZXldCisKKyAgICByZXBv cnQgPSByZXMuZ2V0X3Jlc3VsdCgpCisgICAgaWYgcmVwb3J0LnBhc3NlZDoKKyAgICAgICAgcGFz cyAgIyBubyBhbm5vdGF0aW9uIG5lZWRlZAorCisgICAgZWxpZiByZXBvcnQuc2tpcHBlZDoKKyAg ICAgICAgbm90ZXMuc2tpcHBlZCA9IFRydWUKKyAgICAgICAgXywgXywgbm90ZXMuc2tpcF9yZWFz b24gPSByZXBvcnQubG9uZ3JlcHIKKworICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKKyAgICAgICAg bm90ZXMuZmFpbGVkID0gVHJ1ZQorCisgICAgICAgIGlmIG5vdCBub3Rlcy5kZXRhaWxzOgorICAg ICAgICAgICAgbm90ZXMuZGV0YWlscyArPSAiezpfXjcyfVxuXG4iLmZvcm1hdChmIiB7cmVwb3J0 LmhlYWRfbGluZX0gIikKKworICAgICAgICBpZiByZXBvcnQud2hlbiBpbiAoInNldHVwIiwgInRl YXJkb3duIik6CisgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJcbns6X143Mn1cblxuIi5m b3JtYXQoCisgICAgICAgICAgICAgICAgZiIgRXJyb3IgZHVyaW5nIHtyZXBvcnQud2hlbn0gb2Yg e3JlcG9ydC5oZWFkX2xpbmV9ICIKKyAgICAgICAgICAgICkKKworICAgICAgICBub3Rlcy5kZXRh aWxzICs9IHJlcG9ydC5sb25ncmVwcnRleHQgKyAiXG4iCisKKyAgICBlbHNlOgorICAgICAgICBy YWlzZSBSdW50aW1lRXJyb3IoInB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQgcmVjZWl2ZWQgdW5r bm93biB0ZXN0IHN0YXR1cyIpCisKKyAgICByZXR1cm4gcmVzCisKKworQHB5dGVzdC5ob29raW1w bChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5l eHRpdGVtKToKKyAgICAiIiIKKyAgICBSZXBvcnRzIHRoZSBUQVAgcmVzdWx0IGZvciB0aGlzIHRl c3QgaXRlbSB1c2luZyBvdXIgZ2F0aGVyZWQgVGVzdE5vdGVzLgorICAgICIiIgorICAgIHJlcyA9 IHlpZWxkCisKKyAgICBhc3NlcnQgbm90ZXNfa2V5IGluIGl0ZW0uc3Rhc2gsICJwZ3RhcCBkaWRu J3QgYW5ub3RhdGUgYSB0ZXN0IGl0ZW0/IgorICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19r ZXldCisKKyAgICBpZiBub3Rlcy5mYWlsZWQ6CisgICAgICAgIHRhcC5mYWlsKGl0ZW0ubm9kZWlk LCBub3Rlcy5kZXRhaWxzKQorICAgIGVsaWYgbm90ZXMuc2tpcHBlZDoKKyAgICAgICAgdGFwLnNr aXAoaXRlbS5ub2RlaWQsIG5vdGVzLnNraXBfcmVhc29uKQorICAgIGVsc2U6CisgICAgICAgIHRh cC5vayhpdGVtLm5vZGVpZCkKKworICAgIHJldHVybiByZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3B5dGVzdC9weXQvdGVzdF9zb21ldGhpbmcucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3Rf c29tZXRoaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YmQ0 NTYxODUxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9zb21l dGhpbmcucHkKQEAgLTAsMCArMSwxNyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBweXRlc3QKKworCitAcHl0ZXN0 LmZpeHR1cmUKK2RlZiBoZXkoKToKKyAgICB5aWVsZAorICAgIHJhaXNlICJ1aC1vaCIKKworCitk ZWYgdGVzdF9zb21ldGhpbmcoaGV5KToKKyAgICBhc3NlcnQgMiA9PSA0CisKKworZGVmIHRlc3Rf c29tZXRoaW5nX2Vsc2UoKToKKyAgICBhc3NlcnQgMiA9PSAyCi0tIAoyLjM0LjEKCg== --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0003-WIP-pytest-Add-some-SSL-client-tests.patch" Content-Disposition: attachment; filename="v2-0003-WIP-pytest-Add-some-SSL-client-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkvah82 RnJvbSBiNzI0M2U3ZGEzYjFkNTU3NGY4YTgyYjU1ZjI2MTY0ZDY1MTI0YjNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxOSBBdWcgMjAyNSAxMjo1Njo0NSAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMy82XSBXSVA6IHB5dGVzdDogQWRkIHNvbWUgU1NMIGNsaWVudCB0ZXN0cwoK VGhpcyBpcyBhIHNhbXBsZSBjbGllbnQtb25seSB0ZXN0IHN1aXRlLiBJdCB0ZXN0cyBzb21lIGhh bmRzaGFrZQpmYWlsdXJlcyBhZ2FpbnN0IGEgbW9jayBzZXJ2ZXIsIGFzIHdlbGwgYXMgYSBmdWxs IFNTTCBoYW5kc2hha2UgKyBlbXB0eQpxdWVyeSArIHJlc3BvbnNlLgoKcHljYS9jcnlwdG9ncmFw aHkgaXMgYWRkZWQgYXMgYSBuZXcgcGFja2FnZSBkZXBlbmRlbmN5LiBDZXJ0aWZpY2F0ZXMgZm9y CnRlc3RpbmcgYXJlIGdlbmVyYXRlZCBvbiB0aGUgZmx5LgoKVGhlIGBwZ2AgdGVzdCBwYWNrYWdl IGNvbnRhaW5zIHNvbWUgaGVscGVycyBhbmQgZml4dHVyZXMgKGFzIHdlbGwgYXMKc29tZSBzZWxm LXRlc3RzIGZvciBtb3JlIGNvbXBsaWNhdGVkIGJlaGF2aW9yKS4gT2Ygbm90ZToKCi0gcGcucmVx dWlyZV90ZXN0X2V4dHJhKCkgbGV0cyB5b3UgbWFyayBhIHRlc3QvY2xhc3MvbW9kdWxlIGFzIHNr aXBwYWJsZQogIGlmIFBHX1RFU1RfRVhUUkEgZG9lcyBub3QgY29udGFpbiB0aGUgbmVjZXNzYXJ5 IHN0cmluZ3MuCgotIHBnLnJlbWFpbmluZ190aW1lb3V0KCkgaXMgYSBmdW5jdGlvbiB3aGljaCBj YW4gYmUgcmVwZWF0ZWRseSBjYWxsZWQgdG8KICBkZXRlcm1pbmUgaG93IG11Y2ggb2YgdGhlIFBH X1RFU1RfVElNRU9VVF9ERUZBVUxUIHJlbWFpbnMgZm9yIHRoZQogIGN1cnJlbnQgdGVzdCBpdGVt LgoKLSBwZy5saWJwcSBpcyBhIGZpeHR1cmUgdGhhdCB3cmFwcyBsaWJwcS5zbyBpbiBhIG1vcmUg ZnJpZW5kbHksIGJ1dAogIHN0aWxsIGxvdy1sZXZlbCwgY3R5cGVzIEZGSS4gQWxsb2NhdGVkIHJl c291cmNlcyBhcmUgdW53b3VuZCBhbmQKICByZWxlYXNlZCBkdXJpbmcgdGVzdCB0ZWFyZG93bi4K ClRoZSBtb2NrIGRlc2lnbiBpcyB0aHJlYWRlZDogdGhlIHNlcnZlciBzb2NrZXQgaXMgbGlzdGVu aW5nIG9uIGEKYmFja2dyb3VuZCB0aHJlYWQsIGFuZCB0aGUgdGVzdCBwcm92aWRlcyB0aGUgc2Vy dmVyIGxvZ2ljIHZpYSBhCmNhbGxiYWNrLiBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgd29yayBz dGlsbCBuZWVkZWQgdG8gbWFrZSB0aGlzCnByb2R1Y3Rpb24tcmVhZHk7IHNlZSB0aGUgbm90ZXMg Zm9yIF9UQ1BTZXJ2ZXIuYmFja2dyb3VuZCgpLiAoQ3VycmVudGx5LAphbiBleGNlcHRpb24gaW4g dGhlIHdyb25nIHBsYWNlIGNvdWxkIHJlc3VsdCBpbiBhIGhhbmctdW50aWwtdGltZW91dApyYXRo ZXIgdGhhbiBhbiBpbW1lZGlhdGUgZmFpbHVyZS4pCgpUT0RPczoKLSBsb2NhbF9zZXJ2ZXIgYW5k IHRjcF9zZXJ2ZXJfY2xhc3MgYXJlIG5lYXJseSBpZGVudGljYWwgYW5kIHNob3VsZAogIHNoYXJl IGNvZGUuCi0gZml4IGV4Y2VwdGlvbi1yZWxhdGVkIHRpbWVvdXRzIGZvciAuYmFja2dyb3VuZCgp Ci0gZmlndXJlIG91dCB0aGUgcHJvcGVyIHVzZSBvZiAic2Vzc2lvbiIgdnMgIm1vZHVsZSIgc2Nv cGUKLSBlbnN1cmUgdGhhdCBwcS5saWJwcSB1bndpbmRzICh0byBjbG9zZSBjb25uZWN0aW9ucykg YmVmb3JlIHRjcF9zZXJ2ZXI7CiAgc2VlIGNvbW1lbnQgaW4gdGVzdF9zZXJ2ZXJfd2l0aF9zc2xf ZGlzYWJsZWQoKQotLS0KIC5jaXJydXMudGFza3MueW1sICAgICAgICAgICAgICAgICB8ICAxOCAr LQogY29uZmlnL3B5dGVzdC1yZXF1aXJlbWVudHMudHh0ICAgIHwgIDEwICsrCiBweXRlc3QuaW5p ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1 aWxkICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weSAgICB8ICAg MyArCiBzcmMvdGVzdC9weXRlc3QvcGcvX2Vudi5weSAgICAgICAgfCAgNTUgKysrKysrCiBzcmMv dGVzdC9weXRlc3QvcGcvZml4dHVyZXMucHkgICAgfCAyMTIgKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkgICB8ICAgMyArCiBzcmMvdGVzdC9w eXRlc3QvcHl0L3Rlc3RfbGlicHEucHkgfCAxNzEgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVz dC9zc2wvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3NsL21lc29uLmJ1 aWxkICAgICAgICAgIHwgICA2ICsKIHNyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkgICAgICB8 IDEyOSArKysrKysrKysrKysrKwogc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weSAgIHwg Mjc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgODg1 IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0 ZXN0L3BnL19lbnYucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcGcvZml4 dHVyZXMucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0 LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkKCmRpZmYgLS1naXQg YS8uY2lycnVzLnRhc2tzLnltbCBiLy5jaXJydXMudGFza3MueW1sCmluZGV4IDgwZjliMzk0YmQy Li40ZTc0NGYxYzEwNSAxMDA2NDQKLS0tIGEvLmNpcnJ1cy50YXNrcy55bWwKKysrIGIvLmNpcnJ1 cy50YXNrcy55bWwKQEAgLTIyNSw2ICsyMjUsNyBAQCB0YXNrOgogICAgIHN5c2N0bCBrZXJuLmNv cmVmaWxlPScvdG1wL2NvcmVzLyVOLiVQLmNvcmUnCiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2Fn ZXNfc2NyaXB0OiB8CiAgICAgcGtnIGluc3RhbGwgLXkgXAorICAgICAgcHkzMTEtY3J5cHRvZ3Jh cGh5IFwKICAgICAgIHB5MzExLXBhY2thZ2luZyBcCiAgICAgICBweTMxMS1weXRlc3QKIApAQCAt MzE2LDYgKzMxNyw3IEBAIHRhc2s6CiAKICAgICAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNf c2NyaXB0OiB8CiAgICAgICAgIHBrZ2luIC15IGluc3RhbGwgXAorICAgICAgICAgIHB5MzEyLWNy eXB0b2dyYXBoeSBcCiAgICAgICAgICAgcHkzMTItcGFja2FnaW5nIFwKICAgICAgICAgICBweTMx Mi10ZXN0CiAgICAgICAgIGxuIC1zIC91c3IvcGtnL2Jpbi9weXRlc3QtMy4xMiAvdXNyL3BrZy9i aW4vcHl0ZXN0CkBAIC0zMzksOCArMzQxLDkgQEAgdGFzazoKIAogICAgICAgc2V0dXBfYWRkaXRp b25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKICAgICAgICAgcGtnX2FkZCAtSSBcCi0gICAgICAgICAg cHkzLXRlc3QgXAotICAgICAgICAgIHB5My1wYWNrYWdpbmcKKyAgICAgICAgICBweTMtY3J5cHRv Z3JhcGh5IFwKKyAgICAgICAgICBweTMtcGFja2FnaW5nIFwKKyAgICAgICAgICBweTMtdGVzdAog ICAgICAgIyBBbHdheXMgY29yZSBkdW1wIHRvICR7Q09SRV9EVU1QX0RJUn0KICAgICAgIHNldF9j b3JlX2R1bXBfc2NyaXB0OiBzeXNjdGwgLXcga2Vybi5ub3N1aWRjb3JlZHVtcD0yCiAgICAgICA8 PDogKm9wZW5ic2RfdGFza190ZW1wbGF0ZQpAQCAtNTAxLDggKzUwNCw5IEBAIHRhc2s6CiAgIHNl dHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8CiAgICAgYXB0LWdldCB1cGRhdGUKICAg ICBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCAteSBpbnN0YWxsIFwKLSAg ICAgIHB5dGhvbjMtcHl0ZXN0IFwKLSAgICAgIHB5dGhvbjMtcGFja2FnaW5nCisgICAgICBweXRo b24zLWNyeXB0b2dyYXBoeSBcCisgICAgICBweXRob24zLXBhY2thZ2luZyBcCisgICAgICBweXRo b24zLXB5dGVzdAogCiAgIG1hdHJpeDoKICAgICAjIFNQRUNJQUw6CkBAIC02NDMsNiArNjQ3LDcg QEAgdGFzazoKICAgICBDSVJSVVNfV09SS0lOR19ESVI6ICR7SE9NRX0vcGdzcWwvCiAgICAgQ0NB Q0hFX0RJUjogJHtIT01FfS9jY2FjaGUKICAgICBNQUNQT1JUU19DQUNIRTogJHtIT01FfS9tYWNw b3J0cy1jYWNoZQorICAgIFBZVEVTVF9ERUJVR19URU1QUk9PVDogL3RtcCAgIyBkZWZhdWx0IGlz IHRvbyBsb25nIGZvciBVTklYIHNvY2tldHMgb24gTWFjCiAKICAgICBNRVNPTl9GRUFUVVJFUzog Pi0KICAgICAgIC1EYm9uam91cj1lbmFibGVkCkBAIC02NjMsNiArNjY4LDcgQEAgdGFzazoKICAg ICAgIHA1LjM0LWlvLXR0eQogICAgICAgcDUuMzQtaXBjLXJ1bgogICAgICAgcHl0aG9uMzEyCisg ICAgICBweTMxMi1jcnlwdG9ncmFwaHkKICAgICAgIHB5MzEyLXBhY2thZ2luZwogICAgICAgcHkz MTItcHl0ZXN0CiAgICAgICB0Y2wKQEAgLTgwMSw3ICs4MDcsNyBAQCB0YXNrOgogICAjIFhYWCBE b2VzIENob2NvbGF0ZXkgcmVhbGx5IG5vdCBoYXZlIGFueSBQeXRob24gcGFja2FnZSBpbnN0YWxs ZXJzPwogICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAogICAgIFJFTSBjaG9j byBpbnN0YWxsIC15IC0tbm8tcHJvZ3Jlc3MgLi4uCi0gICAgcGlwMyBpbnN0YWxsIC0tdXNlciBw YWNrYWdpbmcgcHl0ZXN0CisgICAgcGlwMyBpbnN0YWxsIC0tdXNlciBjcnlwdG9ncmFwaHkgcGFj a2FnaW5nIHB5dGVzdAogCiAgIHNldHVwX2hvc3RzX2ZpbGVfc2NyaXB0OiB8CiAgICAgZWNobyAx MjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0ZXN0ID4+IGM6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVy c1xldGNcaG9zdHMKQEAgLTg2NCw3ICs4NzAsNyBAQCB0YXNrOgogICAgIGZvbGRlcjogJHtDQ0FD SEVfRElSfQogCiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0gICAgQzpc bXN5czY0XHVzclxiaW5ccGFjbWFuLmV4ZSAtUyAtLW5vY29uZmlybSBtaW5ndy13NjQtdWNydC14 ODZfNjQtcHl0aG9uLXBhY2thZ2luZyBtaW5ndy13NjQtdWNydC14ODZfNjQtcHl0aG9uLXB5dGVz dAorICAgIEM6XG1zeXM2NFx1c3JcYmluXHBhY21hbi5leGUgLVMgLS1ub2NvbmZpcm0gbWluZ3ct dzY0LXVjcnQteDg2XzY0LXB5dGhvbi1jcnlwdG9ncmFwaHkgbWluZ3ctdzY0LXVjcnQteDg2XzY0 LXB5dGhvbi1wYWNrYWdpbmcgbWluZ3ctdzY0LXVjcnQteDg2XzY0LXB5dGhvbi1weXRlc3QKIAog ICBtaW5nd19pbmZvX3NjcmlwdDogfAogICAgICVCQVNIJSAtYyAid2hlcmUgZ2NjIgpkaWZmIC0t Z2l0IGEvY29uZmlnL3B5dGVzdC1yZXF1aXJlbWVudHMudHh0IGIvY29uZmlnL3B5dGVzdC1yZXF1 aXJlbWVudHMudHh0CmluZGV4IGI5NDE2MjRiMmYzLi4wYmQ2Y2FkZjYwOCAxMDA2NDQKLS0tIGEv Y29uZmlnL3B5dGVzdC1yZXF1aXJlbWVudHMudHh0CisrKyBiL2NvbmZpZy9weXRlc3QtcmVxdWly ZW1lbnRzLnR4dApAQCAtMTksMyArMTksMTMgQEAgcHl0ZXN0ID49IDcuMCwgPCA5CiAKICMgcGFj a2FnaW5nIGlzIHVzZWQgYnkgY2hlY2tfcHl0ZXN0LnB5IGF0IGNvbmZpZ3VyZSB0aW1lLgogcGFj a2FnaW5nCisKKyMgTm90ZXMgb24gdGhlIGNyeXB0b2dyYXBoeSBwYWNrYWdlOgorIyAtIDMuMy4y IGlzIHNoaXBwZWQgb24gRGViaWFuIGJ1bGxzZXllLgorIyAtIDMuNC54IGRyb3BzIHN1cHBvcnQg Zm9yIFB5dGhvbiAyLCBtYWtpbmcgaXQgYSB2ZXJzaW9uIG9mIG5vdGUgZm9yIG9sZGVyIExUUwor IyAgIGRpc3Ryb3MuCisjIC0gMzUueCBzd2l0Y2hlZCB2ZXJzaW9uaW5nIHNjaGVtZXMgYW5kIG1v dmVkIHRvIFJ1c3QgcGFyc2luZy4KKyMgLSA0MC54IGlzIHRoZSBsYXN0IHZlcnNpb24gc3VwcG9y dGluZyBQeXRob24gMy42LgorIyBYWFggSXMgaXQgYXBwcm9wcmlhdGUgdG8gcmVxdWlyZSBjcnlw dG9ncmFwaHksIG9yIHNob3VsZCB3ZSBzaW1wbHkgc2tpcAorIyBkZXBlbmRlbnQgdGVzdHM/Citj cnlwdG9ncmFwaHkgPj0gMy4zLjIKZGlmZiAtLWdpdCBhL3B5dGVzdC5pbmkgYi9weXRlc3QuaW5p CmluZGV4IDhlODM4OGYzYWZjLi5lN2FhODRmM2E4NCAxMDA2NDQKLS0tIGEvcHl0ZXN0LmluaQor KysgYi9weXRlc3QuaW5pCkBAIC00LDMgKzQsNiBAQCBtaW52ZXJzaW9uID0gNy4wCiAjIElnbm9y ZSAuL2NvbmZpZyAod2hpY2ggY29udGFpbnMgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNrX3B5dGVz dC5weSB0ZXN0cykgYnkKICMgZGVmYXVsdC4KIGFkZG9wdHMgPSAtLWlnbm9yZSAuL2NvbmZpZwor CisjIENvbW1vbiB0ZXN0IGNvZGUgY2FuIGJlIGZvdW5kIGhlcmUuCitweXRob25wYXRoID0gc3Jj L3Rlc3QvcHl0ZXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKaW5kZXggYWJkMTI4ZGZhMjQuLmY1MzE5M2U4Njg2 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv cHl0ZXN0L21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHRlc3RzICs9IHsKICAgJ3B5dGVz dCc6IHsKICAgICAndGVzdHMnOiBbCiAgICAgICAncHl0L3Rlc3Rfc29tZXRoaW5nLnB5JywKKyAg ICAgICdweXQvdGVzdF9saWJwcS5weScsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weSBiL3NyYy90ZXN0L3B5dGVzdC9wZy9fX2luaXRf Xy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWY4ZmFmNTRjYTQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcGcvX19pbml0X18ucHkKQEAgLTAs MCArMSwzIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKworZnJvbSAuX2VudiBpbXBvcnQgaGFzX3Rlc3RfZXh0cmEsIHJlcXVpcmVf dGVzdF9leHRyYQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3BnL19lbnYucHkgYi9zcmMv dGVzdC9weXRlc3QvcGcvX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNmYxOGFmMDc4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcGcv X2Vudi5weQpAQCAtMCwwICsxLDU1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwor ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlvbmFsCisKK2ltcG9ydCBweXRlc3QKKworbG9n Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIGhhc190ZXN0X2V4dHJh KGtleTogc3RyKSAtPiBib29sOgorICAgICIiIgorICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgUEdf VEVTVF9FWFRSQSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWlucyB0aGUgZ2l2ZW4KKyAgICBr ZXkuCisgICAgIiIiCisgICAgZXh0cmEgPSBvcy5nZXRlbnYoIlBHX1RFU1RfRVhUUkEiLCAiIikK KyAgICByZXR1cm4ga2V5IGluIGV4dHJhLnNwbGl0KCkKKworCitkZWYgcmVxdWlyZV90ZXN0X2V4 dHJhKCprZXlzOiBzdHIpIC0+IGJvb2w6CisgICAgIiIiCisgICAgQSBjb252ZW5pZW5jZSBhbm5v dGF0aW9uIHdoaWNoIHdpbGwgc2tpcCB0ZXN0cyBpZiBhbGwgb2YgdGhlIHJlcXVpcmVkIGtleXMK KyAgICBhcmUgbm90IHByZXNlbnQgaW4gUEdfVEVTVF9FWFRSQS4KKworICAgIFRvIHNraXAgYSBw YXJ0aWN1bGFyIHRlc3QgZnVuY3Rpb24gb3IgY2xhc3M6CisKKyAgICAgICAgQHBnLnJlcXVpcmVf dGVzdF9leHRyYSgibGRhcCIpCisgICAgICAgIGRlZiB0ZXN0X3NvbWVfbGRhcF9mZWF0dXJlKCk6 CisgICAgICAgICAgICAuLi4KKworICAgIFRvIHNraXAgYW4gZW50aXJlIG1vZHVsZToKKworICAg ICAgICBweXRlc3RtYXJrID0gcGcucmVxdWlyZV90ZXN0X2V4dHJhKCJzc2wiLCAia2VyYmVyb3Mi KQorICAgICIiIgorICAgIHJldHVybiBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG5vdCBh bGwoW2hhc190ZXN0X2V4dHJhKGspIGZvciBrIGluIGtleXNdKSwKKyAgICAgICAgcmVhc29uPSJy ZXF1aXJlcyB7fSB0byBiZSBzZXQgaW4gUEdfVEVTVF9FWFRSQSIuZm9ybWF0KCIsICIuam9pbihr ZXlzKSksCisgICAgKQorCisKK2RlZiB0ZXN0X3RpbWVvdXRfZGVmYXVsdCgpIC0+IGludDoKKyAg ICAiIiIKKyAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgUEdfVEVTVF9USU1FT1VUX0RFRkFV TFQgZW52aXJvbm1lbnQgdmFyaWFibGUsIGluCisgICAgc2Vjb25kcywgb3IgMTgwIGlmIG9uZSB3 YXMgbm90IHByb3ZpZGVkLgorICAgICIiIgorICAgIGRlZmF1bHQgPSBvcy5nZXRlbnYoIlBHX1RF U1RfVElNRU9VVF9ERUZBVUxUIiwgIiIpCisgICAgaWYgbm90IGRlZmF1bHQ6CisgICAgICAgIHJl dHVybiAxODAKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGludChkZWZhdWx0KQorICAgIGV4 Y2VwdCBWYWx1ZUVycm9yIGFzIHY6CisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJQR19URVNUX1RJ TUVPVVRfREVGQVVMVCBjb3VsZCBub3QgYmUgcGFyc2VkOiAiICsgc3RyKHYpKQorICAgICAgICBy ZXR1cm4gMTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcGcvZml4dHVyZXMucHkgYi9z cmMvdGVzdC9weXRlc3QvcGcvZml4dHVyZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmI1ZDNiZmY2OWE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0 ZXN0L3BnL2ZpeHR1cmVzLnB5CkBAIC0wLDAgKzEsMjEyIEBACisjIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGNvbnRleHRs aWIKK2ltcG9ydCBjdHlwZXMKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHRpbWUKK2Zyb20gdHlw aW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0CisKK2ltcG9ydCBweXRlc3QKKworZnJvbSAu X2VudiBpbXBvcnQgdGVzdF90aW1lb3V0X2RlZmF1bHQKKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl ZiByZW1haW5pbmdfdGltZW91dCgpOgorICAgICIiIgorICAgIFRoaXMgZml4dHVyZSBwcm92aWRl cyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBob3cgbXVjaCBvZiB0aGUKKyAgICBQR19URVNUX1RJ TUVPVVRfREVGQVVMVCByZW1haW5zIGZvciB0aGUgY3VycmVudCB0ZXN0LCBpbiBmcmFjdGlvbmFs IHNlY29uZHMuCisgICAgVGhpcyB2YWx1ZSBpcyBuZXZlciBsZXNzIHRoYW4gemVyby4KKworICAg IFRoaXMgZml4dHVyZSBpcyBwZXItdGVzdCwgc28gdGhlIGRlYWRsaW5lIGlzIGFsc28gcmVzZXQg b24gYSBwZXItdGVzdCBiYXNpcy4KKyAgICAiIiIKKyAgICBub3cgPSB0aW1lLm1vbm90b25pYygp CisgICAgZGVhZGxpbmUgPSBub3cgKyB0ZXN0X3RpbWVvdXRfZGVmYXVsdCgpCisKKyAgICByZXR1 cm4gbGFtYmRhOiBtYXgoZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpLCAwKQorCisKK2NsYXNz IF9QR2Nvbm4oY3R5cGVzLlN0cnVjdHVyZSk6CisgICAgcGFzcworCisKK2NsYXNzIF9QR3Jlc3Vs dChjdHlwZXMuU3RydWN0dXJlKToKKyAgICBwYXNzCisKKworX1BHY29ubl9wID0gY3R5cGVzLlBP SU5URVIoX1BHY29ubikKK19QR3Jlc3VsdF9wID0gY3R5cGVzLlBPSU5URVIoX1BHcmVzdWx0KQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgbGlicHFfaGFuZGxlKCk6 CisgICAgIiIiCisgICAgTG9hZHMgYSBjdHlwZXMgaGFuZGxlIGZvciBsaWJwcS4gU29tZSBjb21t b24gZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUKKyAgICBpbml0aWFsaXplZCBmb3IgZ2VuZXJhbCB1 c2UuCisgICAgIiIiCisgICAgc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKKworICAgIGlmIHN5 c3RlbSBpbiAoIkxpbnV4IiwgIkZyZWVCU0QiLCAiTmV0QlNEIiwgIk9wZW5CU0QiKToKKyAgICAg ICAgbmFtZSA9ICJsaWJwcS5zby41IgorICAgIGVsaWYgc3lzdGVtID09ICJEYXJ3aW4iOgorICAg ICAgICBuYW1lID0gImxpYnBxLjUuZHlsaWIiCisgICAgZWxpZiBzeXN0ZW0gPT0gIldpbmRvd3Mi OgorICAgICAgICBuYW1lID0gImxpYnBxLmRsbCIKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQg RmFsc2UsIGYidGhlIGxpYnBxIGZpeHR1cmUgbXVzdCBiZSB1cGRhdGVkIGZvciB7c3lzdGVtfSIK KworICAgICMgWFhYIGN0eXBlcy5DRExMKCkgaXMgYSBsaXR0bGUgc3RyaWN0ZXIgd2l0aCBsb2Fk IHBhdGhzIG9uIFdpbmRvd3MuIFRoZQorICAgICMgcHJlZmVycmVkIHdheSBhcm91bmQgdGhhdCBp cyB0byBrbm93IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIGxpYnBxLmRsbCwgYnV0CisgICAgIyB0aGF0 IGRvZXNuJ3Qgc2VlbSB0byBtZXNoIHdlbGwgd2l0aCB0aGUgY3VycmVudCB0ZXN0IGluZnJhc3Ry dWN0dXJlLiBGb3IKKyAgICAjIG5vdywgZW5hYmxlICJzdGFuZGFyZCIgTG9hZExpYnJhcnkgYmVo YXZpb3IuCisgICAgbG9hZG9wdHMgPSB7fQorICAgIGlmIHN5c3RlbSA9PSAiV2luZG93cyI6Cisg ICAgICAgIGxvYWRvcHRzWyJ3aW5tb2RlIl0gPSAwCisKKyAgICBsaWIgPSBjdHlwZXMuQ0RMTChu YW1lLCAqKmxvYWRvcHRzKQorCisgICAgIworICAgICMgRnVuY3Rpb24gUHJvdG90eXBlcworICAg ICMKKworICAgIGxpYi5QUWNvbm5lY3RkYi5yZXN0eXBlID0gX1BHY29ubl9wCisgICAgbGliLlBR Y29ubmVjdGRiLmFyZ3R5cGVzID0gW2N0eXBlcy5jX2NoYXJfcF0KKworICAgIGxpYi5QUXN0YXR1 cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRc3RhdHVzLmFyZ3R5cGVzID0gW19Q R2Nvbm5fcF0KKworICAgIGxpYi5QUWV4ZWMucmVzdHlwZSA9IF9QR3Jlc3VsdF9wCisgICAgbGli LlBRZXhlYy5hcmd0eXBlcyA9IFtfUEdjb25uX3AsIGN0eXBlcy5jX2NoYXJfcF0KKworICAgIGxp Yi5QUXJlc3VsdFN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRcmVzdWx0 U3RhdHVzLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRY2xlYXIucmVzdHlw ZSA9IE5vbmUKKyAgICBsaWIuUFFjbGVhci5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcF0KKworICAg IGxpYi5QUWVycm9yTWVzc2FnZS5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBR ZXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUWZpbmlzaC5y ZXN0eXBlID0gTm9uZQorICAgIGxpYi5QUWZpbmlzaC5hcmd0eXBlcyA9IFtfUEdjb25uX3BdCisK KyAgICByZXR1cm4gbGliCisKKworY2xhc3MgUEdyZXN1bHQoY29udGV4dGxpYi5BYnN0cmFjdENv bnRleHRNYW5hZ2VyKToKKyAgICAiIiJXcmFwcyBhIHJhdyBfUEdyZXN1bHRfcCB3aXRoIGEgbW9y ZSBmcmllbmRseSBpbnRlcmZhY2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGliOiBj dHlwZXMuQ0RMTCwgcmVzOiBfUEdyZXN1bHRfcCk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgor ICAgICAgICBzZWxmLl9yZXMgPSByZXMKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToK KyAgICAgICAgc2VsZi5fbGliLlBRY2xlYXIoc2VsZi5fcmVzKQorICAgICAgICBzZWxmLl9yZXMg PSBOb25lCisKKyAgICBkZWYgc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbGli LlBRcmVzdWx0U3RhdHVzKHNlbGYuX3JlcykKKworCitjbGFzcyBQR2Nvbm4oY29udGV4dGxpYi5B YnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAiIiIKKyAgICBXcmFwcyBhIHJhdyBfUEdjb25u X3Agd2l0aCBhIG1vcmUgZnJpZW5kbHkgaW50ZXJmYWNlLiBUaGlzIGlzIGp1c3QgYQorICAgIHN0 dWI7IGl0J3MgZXhwZWN0ZWQgdG8gZ3Jvdy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygK KyAgICAgICAgc2VsZiwKKyAgICAgICAgbGliOiBjdHlwZXMuQ0RMTCwKKyAgICAgICAgaGFuZGxl OiBfUEdjb25uX3AsCisgICAgICAgIHN0YWNrOiBjb250ZXh0bGliLkV4aXRTdGFjaywKKyAgICAp OgorICAgICAgICBzZWxmLl9saWIgPSBsaWIKKyAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxl CisgICAgICAgIHNlbGYuX3N0YWNrID0gc3RhY2sKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAq ZXhjKToKKyAgICAgICAgc2VsZi5fbGliLlBRZmluaXNoKHNlbGYuX2hhbmRsZSkKKyAgICAgICAg c2VsZi5faGFuZGxlID0gTm9uZQorCisgICAgZGVmIGV4ZWMoc2VsZiwgcXVlcnk6IHN0cikgLT4g UEdyZXN1bHQ6CisgICAgICAgICIiIgorICAgICAgICBFeGVjdXRlcyBhIHF1ZXJ5IHZpYSBQUWV4 ZWMoKSBhbmQgcmV0dXJucyBhIFBHcmVzdWx0LgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0g c2VsZi5fbGliLlBRZXhlYyhzZWxmLl9oYW5kbGUsIHF1ZXJ5LmVuY29kZSgpKQorICAgICAgICBy ZXR1cm4gc2VsZi5fc3RhY2suZW50ZXJfY29udGV4dChQR3Jlc3VsdChzZWxmLl9saWIsIHJlcykp CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgbGlicHEobGlicHFfaGFuZGxlLCByZW1haW5pbmdf dGltZW91dCk6CisgICAgIiIiCisgICAgUHJvdmlkZXMgYSBjdHlwZXMtYmFzZWQgQVBJIHdyYXBw ZWQgYXJvdW5kIGxpYnBxLnNvLiBUaGlzIGZpeHR1cmUga2VlcHMKKyAgICB0cmFjayBvZiBhbGxv Y2F0ZWQgcmVzb3VyY2VzIGFuZCBjbGVhbnMgdGhlbSB1cCBkdXJpbmcgdGVhcmRvd24uIFNlZQor ICAgIF9MaWJwcSdzIHB1YmxpYyBBUEkgZm9yIGRldGFpbHMuCisgICAgIiIiCisKKyAgICBjbGFz cyBfTGlicHEoY29udGV4dGxpYi5FeGl0U3RhY2spOgorICAgICAgICBDT05ORUNUSU9OX09LID0g MAorCisgICAgICAgIFBHUkVTX0VNUFRZX1FVRVJZID0gMAorCisgICAgICAgIGNsYXNzIEVycm9y KFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGxpYnBxLkVycm9y IGlzIHRoZSBleGNlcHRpb24gY2xhc3MgZm9yIGFwcGxpY2F0aW9uLWxldmVsIGVycm9ycyB0aGF0 CisgICAgICAgICAgICBhcmUgZW5jb3VudGVyZWQgZHVyaW5nIGxpYnBxIG9wZXJhdGlvbnMuCisg ICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICAgICAgc2Vs Zi5saWIgPSBsaWJwcV9oYW5kbGUKKworICAgICAgICBkZWYgX2Nvbm5zdHIoc2VsZiwgb3B0czog RGljdFtzdHIsIEFueV0pIC0+IHN0cjoKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRmxh dHRlbnMgdGhlIHByb3ZpZGVkIG9wdGlvbnMgaW50byBhIGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5n LiBWYWx1ZXMKKyAgICAgICAgICAgIGFyZSBjb252ZXJ0ZWQgdG8gc3RyIGFuZCBxdW90ZWQvZXNj YXBlZCBhcyBuZWNlc3NhcnkuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNldHRpbmdz ID0gW10KKworICAgICAgICAgICAgZm9yIGssIHYgaW4gb3B0cy5pdGVtcygpOgorICAgICAgICAg ICAgICAgIHYgPSBzdHIodikKKyAgICAgICAgICAgICAgICBpZiBub3QgdjoKKyAgICAgICAgICAg ICAgICAgICAgdiA9ICInJyIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICB2ID0gdi5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICAgICAgICAgICAgICAgICAgdiA9 IHYucmVwbGFjZSgiJyIsICJcXCciKQorCisgICAgICAgICAgICAgICAgICAgIGlmICIgIiBpbiB2 OgorICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGYiJ3t2fSciCisKKyAgICAgICAgICAgICAg ICBzZXR0aW5ncy5hcHBlbmQoZiJ7a309e3Z9IikKKworICAgICAgICAgICAgcmV0dXJuICIgIi5q b2luKHNldHRpbmdzKQorCisgICAgICAgIGRlZiBtdXN0X2Nvbm5lY3Qoc2VsZiwgKipvcHRzKSAt PiBQR2Nvbm46CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIENvbm5lY3RzIHRvIGEgc2Vy dmVyLCB1c2luZyB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBvcHRpb25zLCBhbmQKKyAgICAgICAgICAg IHJldHVybnMgYSBsaWJwcS5QR2Nvbm4gb2JqZWN0IHdyYXBwaW5nIHRoZSBjb25uZWN0aW9uIGhh bmRsZS4gQQorICAgICAgICAgICAgZmFpbHVyZSB3aWxsIHJhaXNlIGxpYnBxLkVycm9yLgorCisg ICAgICAgICAgICBDb25uZWN0aW9ucyBob25vciBQR19URVNUX1RJTUVPVVRfREVGQVVMVCB1bmxl c3MgY29ubmVjdF90aW1lb3V0IGlzCisgICAgICAgICAgICBleHBsaWNpdGx5IG92ZXJyaWRkZW4g aW4gb3B0cy4KKyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBpZiAiY29ubmVjdF90aW1l b3V0IiBub3QgaW4gb3B0czoKKyAgICAgICAgICAgICAgICB0ID0gaW50KHJlbWFpbmluZ190aW1l b3V0KCkpCisgICAgICAgICAgICAgICAgb3B0c1siY29ubmVjdF90aW1lb3V0Il0gPSBtYXgodCwg MSkKKworICAgICAgICAgICAgY29ubl9wID0gc2VsZi5saWIuUFFjb25uZWN0ZGIoc2VsZi5fY29u bnN0cihvcHRzKS5lbmNvZGUoKSkKKworICAgICAgICAgICAgIyBFbnN1cmUgdGhlIGNvbm5lY3Rp b24gaGFuZGxlIGlzIGFsd2F5cyBjbG9zZWQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAg ICMgdGVzdC4KKyAgICAgICAgICAgIGNvbm4gPSBzZWxmLmVudGVyX2NvbnRleHQoUEdjb25uKHNl bGYubGliLCBjb25uX3AsIHN0YWNrPXNlbGYpKQorCisgICAgICAgICAgICBpZiBzZWxmLmxpYi5Q UXN0YXR1cyhjb25uX3ApICE9IHNlbGYuQ09OTkVDVElPTl9PSzoKKyAgICAgICAgICAgICAgICBy YWlzZSBzZWxmLkVycm9yKHNlbGYubGliLlBRZXJyb3JNZXNzYWdlKGNvbm5fcCkuZGVjb2RlKCkp CisKKyAgICAgICAgICAgIHJldHVybiBjb25uCisKKyAgICB3aXRoIF9MaWJwcSgpIGFzIGxpYjoK KyAgICAgICAgeWllbGQgbGliCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0 ZXN0LnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWNiNzJiZTI2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsMyBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2Zyb20g cGcuZml4dHVyZXMgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVz dF9saWJwcS5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWYwODU3Y2M2MTIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKQEAgLTAsMCArMSwxNzEgQEAK KyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IG9zCitpbXBvcnQgc29ja2V0CitpbXBvcnQg c3RydWN0CitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKKwor aW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAib3B0cywg ZXhwZWN0ZWQiLAorICAgIFsKKyAgICAgICAgKGRpY3QoKSwgIiIpLAorICAgICAgICAoZGljdChw b3J0PTU0MzIpLCAicG9ydD01NDMyIiksCisgICAgICAgIChkaWN0KHBvcnQ9NTQzMiwgZGJuYW1l PSJwb3N0Z3JlcyIpLCAicG9ydD01NDMyIGRibmFtZT1wb3N0Z3JlcyIpLAorICAgICAgICAoZGlj dChob3N0PSIiKSwgImhvc3Q9JyciKSwKKyAgICAgICAgKGRpY3QoaG9zdD0iICIpLCByImhvc3Q9 JyAnIiksCisgICAgICAgIChkaWN0KGtleXdvcmQ9IiciKSwgciJrZXl3b3JkPVwnIiksCisgICAg ICAgIChkaWN0KGtleXdvcmQ9IiBcXCcgIiksIHIia2V5d29yZD0nIFxcXCcgJyIpLAorICAgIF0s CispCitkZWYgdGVzdF9jb25uc3RyKGxpYnBxLCBvcHRzLCBleHBlY3RlZCk6CisgICAgIiIiVGVz dHMgdGhlIGVzY2FwZSBiZWhhdmlvciBmb3IgbGlicHEuX2Nvbm5zdHIoKS4iIiIKKyAgICBhc3Nl cnQgbGlicHEuX2Nvbm5zdHIob3B0cykgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9tdXN0X2Nv bm5lY3RfZXJyb3JzKGxpYnBxKToKKyAgICAiIiJUZXN0cyB0aGF0IG11c3RfY29ubmVjdCgpIHJh aXNlcyBsaWJwcS5FcnJvci4iIiIKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMobGlicHEuRXJyb3Is IG1hdGNoPSJpbnZhbGlkIGNvbm5lY3Rpb24gb3B0aW9uIik6CisgICAgICAgIGxpYnBxLm11c3Rf Y29ubmVjdChzb21lX3Vua25vd25fa2V5d29yZD0id2hhdGV2ZXIiKQorCisKK0BweXRlc3QuZml4 dHVyZQorZGVmIGxvY2FsX3NlcnZlcih0bXBfcGF0aCwgcmVtYWluaW5nX3RpbWVvdXQpOgorICAg ICIiIgorICAgIE9wZW5zIHVwIGEgbG9jYWwgVU5JWCBzb2NrZXQgZm9yIG1vY2tpbmcgYSBQb3N0 Z3JlcyBzZXJ2ZXIgb24gYSBiYWNrZ3JvdW5kCisgICAgdGhyZWFkLiBTZWUgdGhlIF9TZXJ2ZXIg QVBJIGZvciB1c2FnZS4KKworICAgIFRoaXMgZml4dHVyZSByZXF1aXJlcyBBRl9VTklYIHN1cHBv cnQ7IGRlcGVuZGVudCB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgb24KKyAgICBwbGF0Zm9ybXMgdGhh dCBkb24ndCBwcm92aWRlIGl0LgorICAgICIiIgorCisgICAgdHJ5OgorICAgICAgICBmcm9tIHNv Y2tldCBpbXBvcnQgQUZfVU5JWAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0 ZXN0LnNraXAoIkFGX1VOSVggbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikKKworICAg IGNsYXNzIF9TZXJ2ZXIoY29udGV4dGxpYi5FeGl0U3RhY2spOgorICAgICAgICAiIiIKKyAgICAg ICAgSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGxvY2FsX3NlcnZlci4gU2VlIC5iYWNrZ3JvdW5k KCkgZm9yIHRoZSBwcmltYXJ5CisgICAgICAgIGVudHJ5IHBvaW50IGZvciB0ZXN0cy4gUG9zdGdy ZXMgY2xpZW50cyBtYXkgY29ubmVjdCB0byB0aGlzIHNlcnZlciB2aWEKKyAgICAgICAgbG9jYWxf c2VydmVyLmhvc3QvbG9jYWxfc2VydmVyLnBvcnQuCisKKyAgICAgICAgX1NlcnZlciBkZXJpdmVz IGZyb20gY29udGV4dGxpYi5FeGl0U3RhY2sgdG8gcHJvdmlkZSBlYXN5IGNsZWFudXAgb2YKKyAg ICAgICAgYXNzb2NpYXRlZCByZXNvdXJjZXM7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhh dCBjbGFzcyBmb3IgYSBmdWxsCisgICAgICAgIGV4cGxhbmF0aW9uLgorICAgICAgICAiIiIKKwor ICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KCkKKworICAgICAgICAgICAgc2VsZi5ob3N0ID0gdG1wX3BhdGgKKyAgICAgICAgICAgIHNlbGYu cG9ydCA9IDU0MzIKKworICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAg ICAgc2VsZi5fdGhyZWFkX2V4YyA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0g c2VsZi5lbnRlcl9jb250ZXh0KAorICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoQUZfVU5J WCwgc29ja2V0LlNPQ0tfU1RSRUFNKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgYmlu ZF9hbmRfbGlzdGVuKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBEb2VzIHRo ZSBhY3R1YWwgd29yayBvZiBiaW5kaW5nIHRoZSBVTklYIHNvY2tldCB1c2luZyB0aGUgUG9zdGdy ZXMKKyAgICAgICAgICAgIHNlcnZlciBjb252ZW50aW9ucyBhbmQgbGlzdGVuaW5nIGZvciBjb25u ZWN0aW9ucy4KKworICAgICAgICAgICAgVGhlIGxpc3RlbiBiYWNrbG9nIGlzIGN1cnJlbnRseSBo YXJkY29kZWQgdG8gb25lLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzb2NrZmlsZSA9 IHNlbGYuaG9zdCAvICIucy5QR1NRTC57fSIuZm9ybWF0KHNlbGYucG9ydCkKKworICAgICAgICAg ICAgIyBMb2NrIGRvd24gdGhlIHBlcm1pc3Npb25zIG9uIHRoZSBuZXcgc29ja2V0LgorICAgICAg ICAgICAgcHJldl9tYXNrID0gb3MudW1hc2soMG8wNzcpCisKKyAgICAgICAgICAgICMgQmluZCAo Y3JlYXRpbmcgdGhlIHNvY2tldCBmaWxlKSwgYW5kIGltbWVkaWF0ZWx5IHJlZ2lzdGVyIGl0IGZv cgorICAgICAgICAgICAgIyBkZWxldGlvbiBmcm9tIGRpc2sgd2hlbiB0aGUgc3RhY2sgaXMgY2xl YW5lZCB1cC4KKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmJpbmQoYnl0ZXMoc29ja2ZpbGUp KQorICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhvcy51bmxpbmssIHNvY2tmaWxlKQorCisgICAg ICAgICAgICBvcy51bWFzayhwcmV2X21hc2spCisKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVy Lmxpc3RlbigxKQorCisgICAgICAgIGRlZiBiYWNrZ3JvdW5kKHNlbGYsIGZuOiBDYWxsYWJsZVtb c29ja2V0LnNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAgICAgICAgICAgIiIiCisgICAgICAg ICAgICBBY2NlcHRzIGEgY2xpZW50IGNvbm5lY3Rpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBh bmQgcGFzc2VzIGl0IHRvCisgICAgICAgICAgICB0aGUgcHJvdmlkZWQgY2FsbGJhY2suIEFueSBl eGNlcHRpb25zIHJhaXNlZCBmcm9tIHRoZSBjYWxsYmFjayB3aWxsCisgICAgICAgICAgICBiZSBy ZS1yYWlzZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorCisg ICAgICAgICAgICBCbG9ja2luZyBvcGVyYXRpb25zIG9uIHRoZSBjb25uZWN0ZWQgc29ja2V0IGRl ZmF1bHQgdG8gdXNpbmcgdGhlCisgICAgICAgICAgICByZW1haW5pbmdfdGltZW91dCgpLCB0aG91 Z2ggdGhpcyBjYW4gYmUgY2hhbmdlZCBieSB0aGUgdGVzdCB2aWEgdGhlCisgICAgICAgICAgICBz b2NrZXQncyAuc2V0dGltZW91dCgpLgorICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGRl ZiBfYmcoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu X2xpc3RlbmVyLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAg ICAgICAgc29jaywgXyA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCisKKyAgICAgICAgICAgICAg ICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0 KHJlbWFpbmluZ190aW1lb3V0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmbihzb2NrKQor CisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAg ICAgICAjIFNhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgcmUtcmFpc2luZyBvbiB0aGUgbWFpbiB0aHJl YWQuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBlCisKKyAgICAgICAg ICAgICMgVE9ETzogcmF0aGVyIHRoYW4gdXNpbmcgY2FsbGJhY2soKSwgY29uc2lkZXIgZXhwbGlj aXRseSBzaWduYWxpbmcKKyAgICAgICAgICAgICMgdGhlIGZuKCkgaW1wbGVtZW50YXRpb24gdG8g c3RvcCBlYXJseSBpZiB3ZSBnZXQgYW4gZXhjZXB0aW9uLgorICAgICAgICAgICAgIyBPdGhlcndp c2Ugd2UnbGwgaGFuZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0aW1lb3V0LgorICAgICAgICAgICAg c2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X2JnKQorICAgICAgICAgICAg c2VsZi5jYWxsYmFjayhzZWxmLl9qb2luKQorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQuc3Rh cnQoKQorCisgICAgICAgIGRlZiBfam9pbihzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgV2FpdHMgZm9yIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB0byBmaW5pc2ggYW5kIHJhaXNl cyBhbnkgdGhyb3duCisgICAgICAgICAgICBleGNlcHRpb24uIFRoaXMgaXMgY2FsbGVkIGR1cmlu ZyBmaXh0dXJlIHRlYXJkb3duLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAjIEdpdmUg YSBsaXR0bGUgYml0IG9mIHdpZ2dsZSByb29tIG9uIHRoZSBqb2luIHRpbWVvdXQsIHNpbmNlIHdl J3JlCisgICAgICAgICAgICAjIHJhY2luZyBhZ2FpbnN0IHRoZSB0ZXN0J3Mgb3duIHVzZSBvZiBy ZW1haW5pbmdfdGltZW91dCgpLiAoSXQncworICAgICAgICAgICAgIyBwcmVmZXJhYmxlIHRvIGxl dCB0ZXN0cyByZXBvcnQgdGltZW91dHM7IHRoZSBzdGFjayB0cmFjZXMgd2lsbAorICAgICAgICAg ICAgIyBoZWxwIHdpdGggZGVidWdnaW5nLikKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2lu KHJlbWFpbmluZ190aW1lb3V0KCkgKyAxKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkLmlz X2FsaXZlKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCJiYWNrZ3JvdW5k IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nIGFmdGVyIHRpbWVvdXQiKQorCisgICAgICAgICAgICBp ZiBzZWxmLl90aHJlYWRfZXhjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNl bGYuX3RocmVhZF9leGMKKworICAgIHdpdGggX1NlcnZlcigpIGFzIHM6CisgICAgICAgIHMuYmlu ZF9hbmRfbGlzdGVuKCkKKyAgICAgICAgeWllbGQgcworCisKK2RlZiB0ZXN0X2Nvbm5lY3Rpb25f aXNfZmluaXNoZWRfb25fZXJyb3IobGlicHEsIGxvY2FsX3NlcnZlciwgcmVtYWluaW5nX3RpbWVv dXQpOgorICAgICIiIlRlc3RzIHRoYXQgUFFmaW5pc2goKSBnZXRzIGNhbGxlZCBhdCB0aGUgZW5k IG9mIHRlc3RpbmcuIiIiCisgICAgZXhwZWN0ZWRfZXJyb3IgPSAic29tZXRoaW5nIGlzIHdyb25n IgorCisgICAgZGVmIHNlcnZlX2Vycm9yKHM6IHNvY2tldC5zb2NrZXQpIC0+IE5vbmU6CisgICAg ICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVswXQorCisgICAgICAg ICMgUXVpY2sgY2hlY2sgZm9yIHRoZSBzdGFydHVwIHBhY2tldCB2ZXJzaW9uLgorICAgICAgICB2 ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2KDQpKQorICAgICAgICBhc3NlcnQg dmVyc2lvbiA9PSAoMywgMCkKKworICAgICAgICAjIERpc2NhcmQgdGhlIHJlbWFpbmRlciBvZiB0 aGUgc3RhcnR1cCBwYWNrZXQgYW5kIHNlbmQgYSB2MiBlcnJvci4KKyAgICAgICAgcy5yZWN2KHBr dGxlbiAtIDgpCisgICAgICAgIHMuc2VuZChiIkUiICsgZXhwZWN0ZWRfZXJyb3IuZW5jb2RlKCkg KyBiIlwwIikKKworICAgICAgICAjIEFuZCBub3cgdGhlIHNvY2tldCBzaG91bGQgYmUgY2xvc2Vk LgorICAgICAgICBhc3NlcnQgbm90IHMucmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQg ZGF0YSIKKworICAgIGxvY2FsX3NlcnZlci5iYWNrZ3JvdW5kKHNlcnZlX2Vycm9yKQorCisgICAg d2l0aCBweXRlc3QucmFpc2VzKGxpYnBxLkVycm9yLCBtYXRjaD1leHBlY3RlZF9lcnJvcik6Cisg ICAgICAgICMgRXhpdGluZyB0aGlzIGNvbnRleHQgc2hvdWxkIHJlc3VsdCBpbiBQUWZpbmlzaCgp LgorICAgICAgICB3aXRoIGxpYnBxOgorICAgICAgICAgICAgbGlicHEubXVzdF9jb25uZWN0KGhv c3Q9bG9jYWxfc2VydmVyLmhvc3QsIHBvcnQ9bG9jYWxfc2VydmVyLnBvcnQpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUgYi9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKaW5kZXggZThh MTYzOWRiMmQuLjg5NWVhNWVhNDFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlCkBAIC0zMCw2ICszMCw4IEBAIGNsZWFuIGRpc3Rj bGVhbjoKICMgRG9lc24ndCBkZXBlbmQgb24gc3NsZmlsZXMgYmVjYXVzZSB3ZSBkb24ndCByZWJ1 aWxkIHRoZW0gYnkgZGVmYXVsdAogY2hlY2s6CiAJJChwcm92ZV9jaGVjaykKKwkjIFhYWCB0aGVz ZSBzdWl0ZXMgc2hvdWxkIHJ1biBpbmRlcGVuZGVudGx5LCBub3Qgc2VyaWFsbHkKKwkkKHB5dGVz dF9jaGVjaykKIAogaW5zdGFsbGNoZWNrOgogCSQocHJvdmVfaW5zdGFsbGNoZWNrKQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxk CmluZGV4IGQ4ZTBmYjUxOGUwLi5hMGVlMmFmMDg5OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Ns L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3NzbC9tZXNvbi5idWlsZApAQCAtMTUsNCArMTUs MTAgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAzX3NzbGluZm8ucGwnLAogICAgIF0sCiAgIH0s CisgICdweXRlc3QnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3B5dC90ZXN0X2NsaWVudC5w eScsCisgICAgICAncHl0L3Rlc3Rfc2VydmVyLnB5JywKKyAgICBdLAorICB9LAogfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weSBiL3NyYy90ZXN0L3NzbC9weXQvY29u ZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZiNGRiMzcy ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAt MCwwICsxLDEyOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHRlbXBmaWxlCitmcm9t IGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCisKK2ltcG9ydCBweXRlc3QKKworaW1wb3J0 IHBnCitmcm9tIHBnLmZpeHR1cmVzIGltcG9ydCAqCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3Bl PSJzZXNzaW9uIikKK2RlZiBjcnlwdG9ncmFwaHkoKToKKyAgICByZXR1cm4gcHl0ZXN0LmltcG9y dG9yc2tpcCgiY3J5cHRvZ3JhcGh5IiwgIjMuMy4yIikKKworCitDZXJ0ID0gbmFtZWR0dXBsZSgi Q2VydCIsICJjZXJ0LCBjZXJ0cGF0aCwga2V5LCBrZXlwYXRoIikKKworCitAcHl0ZXN0LmZpeHR1 cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNlcnRzKGNyeXB0b2dyYXBoeSwgdG1wX3BhdGhfZmFj dG9yeSk6CisgICAgIiIiCisgICAgQ2FjaGVzIGNvbW1vbmx5IHVzZWQgY2VydGlmaWNhdGVzIGF0 IHRoZSBzZXNzaW9uIGxldmVsLCBhbmQgcHJvdmlkZXMgYSB3YXkKKyAgICB0byBjcmVhdGUgbmV3 IG9uZXMuCisKKyAgICAtIGNlcnRzLmNhOiB0aGUgcm9vdCBDQSBjZXJ0aWZpY2F0ZQorCisgICAg LSBjZXJ0cy5zZXJ2ZXI6IHRoZSAic3RhbmRhcmQiIHNlcnZlciBjZXJ0ZmljYXRlLCBzaWduZWQg YnkgY2VydHMuY2EKKworICAgIC0gY2VydHMuc2VydmVyX2hvc3Q6IHRoZSBob3N0bmFtZSBvZiB0 aGUgY2VydHMuc2VydmVyIGNlcnRpZmljYXRlCisKKyAgICAtIGNlcnRzLm5ldygpOiBjcmVhdGVz IGEgY3VzdG9tIGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2VydHMuY2EKKyAgICAiIiIKKworICAg IGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5CisgICAgZnJvbSBjcnlwdG9ncmFwaHkuaGF6 bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhhc2hlcywgc2VyaWFsaXphdGlvbgorICAgIGZyb20gY3J5 cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1wb3J0IHJzYQorICAgIGZy b20gY3J5cHRvZ3JhcGh5Lng1MDkub2lkIGltcG9ydCBOYW1lT0lECisKKyAgICB0bXBkaXIgPSB0 bXBfcGF0aF9mYWN0b3J5Lm1rdGVtcCgidGVzdC1jZXJ0cyIpCisKKyAgICBjbGFzcyBfQ2VydHM6 CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2EgPSBzZWxm Lm5ldygKKyAgICAgICAgICAgICAgICB4NTA5Lk5hbWUoCisgICAgICAgICAgICAgICAgICAgIFt4 NTA5Lk5hbWVBdHRyaWJ1dGUoTmFtZU9JRC5DT01NT05fTkFNRSwgIlBHIHB5dGVzdCBDQSIpXSwK KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGNhPVRydWUsCisgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QgPSAiZXhhbXBsZS5vcmciCisgICAg ICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYubmV3KAorICAgICAgICAgICAgICAgIHg1MDkuTmFt ZSgKKyAgICAgICAgICAgICAgICAgICAgW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1P Tl9OQU1FLCBzZWxmLnNlcnZlcl9ob3N0KV0sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgKQorCisgICAgICAgIGRlZiBuZXcoc2VsZiwgc3ViamVjdDogeDUwOS5OYW1lLCAqLCBjYT1G YWxzZSkgLT4gQ2VydDoKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRlcyBhbmQg c2lnbnMgYSBuZXcgQ2VydCB3aXRoIHRoZSBnaXZlbiBzdWJqZWN0IG5hbWUuIElmIGNhIGlzCisg ICAgICAgICAgICBUcnVlLCB0aGUgY2VydGlmaWNhdGUgd2lsbCBiZSBzZWxmLXNpZ25lZDsgb3Ro ZXJ3aXNlIHRoZSBjZXJ0aWZpY2F0ZQorICAgICAgICAgICAgaXMgc2lnbmVkIGJ5IHNlbGYuY2Eu CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGtleSA9IHJzYS5nZW5lcmF0ZV9wcml2YXRl X2tleSgKKyAgICAgICAgICAgICAgICBwdWJsaWNfZXhwb25lbnQ9NjU1MzcsCisgICAgICAgICAg ICAgICAga2V5X3NpemU9MjA0OCwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgYnVpbGRl ciA9IHg1MDkuQ2VydGlmaWNhdGVCdWlsZGVyKCkKKyAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1l LmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpCisKKyAgICAgICAgICAgIGJ1aWxk ZXIgPSAoCisgICAgICAgICAgICAgICAgYnVpbGRlci5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAg ICAgICAgICAgICAgICAucHVibGljX2tleShrZXkucHVibGljX2tleSgpKQorICAgICAgICAgICAg ICAgIC5zZXJpYWxfbnVtYmVyKHg1MDkucmFuZG9tX3NlcmlhbF9udW1iZXIoKSkKKyAgICAgICAg ICAgICAgICAubm90X3ZhbGlkX2JlZm9yZShub3cpCisgICAgICAgICAgICAgICAgLm5vdF92YWxp ZF9hZnRlcihub3cgKyBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIGlmIGNhOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVy Lmlzc3Vlcl9uYW1lKHN1YmplY3QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IGJ1aWxkZXIgPSBidWlsZGVyLmlzc3Vlcl9uYW1lKHNlbGYuY2EuY2VydC5zdWJqZWN0KQorCisg ICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5hZGRfZXh0ZW5zaW9uKAorICAgICAgICAgICAg ICAgIHg1MDkuQmFzaWNDb25zdHJhaW50cyhjYT1jYSwgcGF0aF9sZW5ndGg9Tm9uZSksCisgICAg ICAgICAgICAgICAgY3JpdGljYWw9VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg Y2VydCA9IGJ1aWxkZXIuc2lnbigKKyAgICAgICAgICAgICAgICBwcml2YXRlX2tleT1rZXkgaWYg Y2EgZWxzZSBzZWxmLmNhLmtleSwKKyAgICAgICAgICAgICAgICBhbGdvcml0aG09aGFzaGVzLlNI QTI1NigpLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIER1bXAgdGhlIGNlcnRpZmlj YXRlIGFuZCBrZXkgdG8gZmlsZS4KKyAgICAgICAgICAgIGtleXBhdGggPSBzZWxmLl90b2ZpbGUo CisgICAgICAgICAgICAgICAga2V5LnByaXZhdGVfYnl0ZXMoCisgICAgICAgICAgICAgICAgICAg IHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNLAorICAgICAgICAgICAgICAgICAgICBzZXJpYWxp emF0aW9uLlByaXZhdGVGb3JtYXQuUEtDUzgsCisgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6 YXRpb24uTm9FbmNyeXB0aW9uKCksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg ICBzdWZmaXg9Ii5rZXkiLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgY2VydHBhdGggPSBz ZWxmLl90b2ZpbGUoCisgICAgICAgICAgICAgICAgY2VydC5wdWJsaWNfYnl0ZXMoc2VyaWFsaXph dGlvbi5FbmNvZGluZy5QRU0pLAorICAgICAgICAgICAgICAgIHN1ZmZpeD0iLWNhLmNydCIgaWYg Y2EgZWxzZSAiLmNydCIsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBDZXJ0 KAorICAgICAgICAgICAgICAgIGNlcnQ9Y2VydCwKKyAgICAgICAgICAgICAgICBjZXJ0cGF0aD1j ZXJ0cGF0aCwKKyAgICAgICAgICAgICAgICBrZXk9a2V5LAorICAgICAgICAgICAgICAgIGtleXBh dGg9a2V5cGF0aCwKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgX3RvZmlsZShzZWxmLCBk YXRhOiBieXRlcywgKiwgc3VmZml4KSAtPiBzdHI6CisgICAgICAgICAgICAiIiIKKyAgICAgICAg ICAgIER1bXBzIGRhdGEgdG8gYSBmaWxlIG9uIGRpc2sgd2l0aCB0aGUgcmVxdWVzdGVkIHN1ZmZp eCBhbmQgcmV0dXJucworICAgICAgICAgICAgdGhlIHBhdGguIFRoZSBmaWxlIGlzIGxvY2F0ZWQg c29tZXdoZXJlIGluIHB5dGVzdCdzIHRlbXBvcmFyeQorICAgICAgICAgICAgZGlyZWN0b3J5IHJv b3QuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGYgPSB0ZW1wZmlsZS5OYW1lZFRlbXBv cmFyeUZpbGUoc3VmZml4PXN1ZmZpeCwgZGlyPXRtcGRpciwgZGVsZXRlPUZhbHNlKQorICAgICAg ICAgICAgd2l0aCBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKworICAgICAgICAg ICAgcmV0dXJuIGYubmFtZQorCisgICAgcmV0dXJuIF9DZXJ0cygpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVu dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjgxMTBhZTA3MTcK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5CkBAIC0w LDAgKzEsMjc4IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBjdHlwZXMKK2ltcG9y dCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0aHJlYWRpbmcKK2Zy b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQgcHl0ZXN0CisKK2ltcG9ydCBwZwor CisjIFRoaXMgc3VpdGUgb3BlbnMgdXAgbG9jYWwgVENQIHBvcnRzIGFuZCBpcyBoaWRkZW4gYmVo aW5kIFBHX1RFU1RfRVhUUkE9c3NsLgorcHl0ZXN0bWFyayA9IHBnLnJlcXVpcmVfdGVzdF9leHRy YSgic3NsIikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iLCBhdXRvdXNlPVRy dWUpCitkZWYgc2tpcF9pZl9ub19zc2xfc3VwcG9ydChsaWJwcV9oYW5kbGUpOgorICAgICIiIlNr aXBzIHRlc3RzIGlmIFNTTCBzdXBwb3J0IGlzIG5vdCBjb25maWd1cmVkLiIiIgorCisgICAgIyBE ZWNsYXJlIFBRc3NsQXR0cmlidXRlKCkuCisgICAgUFFzc2xBdHRyaWJ1dGUgPSBsaWJwcV9oYW5k bGUuUFFzc2xBdHRyaWJ1dGUKKyAgICBQUXNzbEF0dHJpYnV0ZS5yZXN0eXBlID0gY3R5cGVzLmNf Y2hhcl9wCisgICAgUFFzc2xBdHRyaWJ1dGUuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBj dHlwZXMuY19jaGFyX3BdCisKKyAgICBpZiBub3QgUFFzc2xBdHRyaWJ1dGUoTm9uZSwgYiJsaWJy YXJ5Iik6CisgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBTU0wgc3VwcG9ydCB0byBiZSBj b25maWd1cmVkIikKKworCisjCisjIFRlc3QgRml4dHVyZXMKKyMKKworCitAcHl0ZXN0LmZpeHR1 cmUKK2RlZiB0Y3Bfc2VydmVyX2NsYXNzKHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAg ICBNZXRhZml4dHVyZSB0byBjb21iaW5lIHJlbGF0ZWQgbG9naWMgZm9yIHRjcF9zZXJ2ZXIgYW5k IHNzbF9zZXJ2ZXIuCisKKyAgICBUT0RPOiBjb21iaW5lIHdpdGggdGVzdF9saWJwcS5sb2NhbF9z ZXJ2ZXIKKyAgICAiIiIKKworICAgIGNsYXNzIF9UQ1BTZXJ2ZXIoY29udGV4dGxpYi5FeGl0U3Rh Y2spOgorICAgICAgICAiIiIKKyAgICAgICAgSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIHRjcF9z ZXJ2ZXIuIFNlZSAuYmFja2dyb3VuZCgpIGZvciB0aGUgcHJpbWFyeQorICAgICAgICBlbnRyeSBw b2ludCBmb3IgdGVzdHMuIFBvc3RncmVzIGNsaWVudHMgbWF5IGNvbm5lY3QgdG8gdGhpcyBzZXJ2 ZXIgdmlhCisgICAgICAgICoqdGNwX3NlcnZlci5jb25uaW5mby4KKworICAgICAgICBfVENQU2Vy dmVyIGRlcml2ZXMgZnJvbSBjb250ZXh0bGliLkV4aXRTdGFjayB0byBwcm92aWRlIGVhc3kgY2xl YW51cCBvZgorICAgICAgICBhc3NvY2lhdGVkIHJlc291cmNlczsgc2VlIHRoZSBkb2N1bWVudGF0 aW9uIGZvciB0aGF0IGNsYXNzIGZvciBhIGZ1bGwKKyAgICAgICAgZXhwbGFuYXRpb24uCisgICAg ICAgICIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18oKQorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAg ICAgICBzZWxmLl90aHJlYWRfZXhjID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIg PSBzZWxmLmVudGVyX2NvbnRleHQoCisgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldChzb2Nr ZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSwKKyAgICAgICAgICAgICkKKworICAgICAg ICAgICAgc2VsZi5fYmluZF9hbmRfbGlzdGVuKCkKKyAgICAgICAgICAgIHNvY2tuYW1lID0gc2Vs Zi5fbGlzdGVuZXIuZ2V0c29ja25hbWUoKQorICAgICAgICAgICAgc2VsZi5jb25uaW5mbyA9IGRp Y3QoCisgICAgICAgICAgICAgICAgaG9zdGFkZHI9c29ja25hbWVbMF0sCisgICAgICAgICAgICAg ICAgcG9ydD1zb2NrbmFtZVsxXSwKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgX2JpbmRf YW5kX2xpc3RlbihzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRG9lcyB0aGUg YWN0dWFsIHdvcmsgb2YgYmluZGluZyB0aGUgc29ja2V0IGFuZCBsaXN0ZW5pbmcgZm9yCisgICAg ICAgICAgICBjb25uZWN0aW9ucy4KKworICAgICAgICAgICAgVGhlIGxpc3RlbiBiYWNrbG9nIGlz IGN1cnJlbnRseSBoYXJkY29kZWQgdG8gb25lLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAg ICBzZWxmLl9saXN0ZW5lci5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgICAgICBzZWxm Ll9saXN0ZW5lci5saXN0ZW4oMSkKKworICAgICAgICBkZWYgYmFja2dyb3VuZChzZWxmLCBmbjog Q2FsbGFibGVbW3NvY2tldC5zb2NrZXRdLCBOb25lXSkgLT4gTm9uZToKKyAgICAgICAgICAgICIi IgorICAgICAgICAgICAgQWNjZXB0cyBhIGNsaWVudCBjb25uZWN0aW9uIG9uIGEgYmFja2dyb3Vu ZCB0aHJlYWQgYW5kIHBhc3NlcyBpdCB0bworICAgICAgICAgICAgdGhlIHByb3ZpZGVkIGNhbGxi YWNrLiBBbnkgZXhjZXB0aW9ucyByYWlzZWQgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbAorICAgICAg ICAgICAgYmUgcmUtcmFpc2VkIG9uIHRoZSBtYWluIHRocmVhZCBkdXJpbmcgZml4dHVyZSB0ZWFy ZG93bi4KKworICAgICAgICAgICAgQmxvY2tpbmcgb3BlcmF0aW9ucyBvbiB0aGUgY29ubmVjdGVk IHNvY2tldCBkZWZhdWx0IHRvIHVzaW5nIHRoZQorICAgICAgICAgICAgcmVtYWluaW5nX3RpbWVv dXQoKSwgdGhvdWdoIHRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgdGhlIHRlc3QgdmlhIHRoZQorICAg ICAgICAgICAgc29ja2V0J3MgLnNldHRpbWVvdXQoKS4KKyAgICAgICAgICAgICIiIgorCisgICAg ICAgICAgICBkZWYgX2JnKCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg ICAgICBzZWxmLl9saXN0ZW5lci5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KCkpCisgICAg ICAgICAgICAgICAgICAgIHNvY2ssIF8gPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQorCisgICAg ICAgICAgICAgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2su c2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg Zm4oc29jaykKKworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAg ICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBleGNlcHRpb24gZm9yIHJlLXJhaXNpbmcgb24gdGhl IG1haW4gdGhyZWFkLgorICAgICAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWRfZXhjID0gZQor CisgICAgICAgICAgICAjIFRPRE86IHJhdGhlciB0aGFuIHVzaW5nIGNhbGxiYWNrKCksIGNvbnNp ZGVyIGV4cGxpY2l0bHkgc2lnbmFsaW5nCisgICAgICAgICAgICAjIHRoZSBmbigpIGltcGxlbWVu dGF0aW9uIHRvIHN0b3AgZWFybHkgaWYgd2UgZ2V0IGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgICAg ICMgT3RoZXJ3aXNlIHdlJ2xsIGhhbmcgdW50aWwgdGhlIGVuZCBvZiB0aGUgdGltZW91dC4KKyAg ICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9iZykKKyAg ICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5fam9pbikKKworICAgICAgICAgICAgc2VsZi5f dGhyZWFkLnN0YXJ0KCkKKworICAgICAgICBkZWYgX2pvaW4oc2VsZik6CisgICAgICAgICAgICAi IiIKKyAgICAgICAgICAgIFdhaXRzIGZvciB0aGUgYmFja2dyb3VuZCB0aHJlYWQgdG8gZmluaXNo IGFuZCByYWlzZXMgYW55IHRocm93bgorICAgICAgICAgICAgZXhjZXB0aW9uLiBUaGlzIGlzIGNh bGxlZCBkdXJpbmcgZml4dHVyZSB0ZWFyZG93bi4KKyAgICAgICAgICAgICIiIgorICAgICAgICAg ICAgIyBHaXZlIGEgbGl0dGxlIGJpdCBvZiB3aWdnbGUgcm9vbSBvbiB0aGUgam9pbiB0aW1lb3V0 LCBzaW5jZSB3ZSdyZQorICAgICAgICAgICAgIyByYWNpbmcgYWdhaW5zdCB0aGUgdGVzdCdzIG93 biB1c2Ugb2YgcmVtYWluaW5nX3RpbWVvdXQoKS4gKEl0J3MKKyAgICAgICAgICAgICMgcHJlZmVy YWJsZSB0byBsZXQgdGVzdHMgcmVwb3J0IHRpbWVvdXRzOyB0aGUgc3RhY2sgdHJhY2VzIHdpbGwK KyAgICAgICAgICAgICMgaGVscCB3aXRoIGRlYnVnZ2luZy4pCisgICAgICAgICAgICBzZWxmLl90 aHJlYWQuam9pbihyZW1haW5pbmdfdGltZW91dCgpICsgMSkKKyAgICAgICAgICAgIGlmIHNlbGYu X3RocmVhZC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcigi YmFja2dyb3VuZCB0aHJlYWQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aW1lb3V0IikKKworICAg ICAgICAgICAgaWYgc2VsZi5fdGhyZWFkX2V4YyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICByYWlzZSBzZWxmLl90aHJlYWRfZXhjCisKKyAgICByZXR1cm4gX1RDUFNlcnZlcgorCisKK0Bw eXRlc3QuZml4dHVyZQorZGVmIHRjcF9zZXJ2ZXIodGNwX3NlcnZlcl9jbGFzcyk6CisgICAgIiIi CisgICAgT3BlbnMgdXAgYSBsb2NhbCBUQ1Agc29ja2V0IGZvciBtb2NraW5nIGEgUG9zdGdyZXMg c2VydmVyIG9uIGEgYmFja2dyb3VuZAorICAgIHRocmVhZC4gU2VlIHRoZSBfVENQU2VydmVyIEFQ SSBmb3IgdXNhZ2UuCisgICAgIiIiCisgICAgd2l0aCB0Y3Bfc2VydmVyX2NsYXNzKCkgYXMgczoK KyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHNzbF9zZXJ2ZXIodGNw X3NlcnZlcl9jbGFzcywgY2VydHMpOgorICAgICIiIgorICAgIExpa2UgdGNwX3NlcnZlciwgYnV0 IHdpdGggYW4gYWRkaXRpb25hbCAuYmFja2dyb3VuZF9zc2woKSBtZXRob2Qgd2hpY2ggd2lsbAor ICAgIHBlcmZvcm0gYSBTU0xSZXF1ZXN0IGhhbmRzaGFrZSBvbiB0aGUgc29ja2V0IGJlZm9yZSBo YW5kaW5nIHRoZSBjb25uZWN0aW9uCisgICAgdG8gdGhlIHRlc3QgY2FsbGJhY2suCisKKyAgICBU aGlzIHNlcnZlciB1c2VzIGNlcnRzLnNlcnZlciBhcyBpdHMgaWRlbnRpdHkuCisgICAgIiIiCisK KyAgICBjbGFzcyBfU1NMU2VydmVyKHRjcF9zZXJ2ZXJfY2xhc3MpOgorICAgICAgICBkZWYgX19p bml0X18oc2VsZik6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgICAgICAg ICAgc2VsZi5jb25uaW5mb1siaG9zdCJdID0gY2VydHMuc2VydmVyX2hvc3QKKworICAgICAgICAg ICAgc2VsZi5fY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisg ICAgICAgICAgICBzZWxmLl9jdHgubG9hZF9jZXJ0X2NoYWluKGNlcnRzLnNlcnZlci5jZXJ0cGF0 aCwgY2VydHMuc2VydmVyLmtleXBhdGgpCisKKyAgICAgICAgZGVmIGJhY2tncm91bmRfc3NsKHNl bGYsIGZuOiBDYWxsYWJsZVtbc3NsLlNTTFNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAgICAg ICAgICAgIiIiCisgICAgICAgICAgICBJbnZva2VzIGEgc2VydmVyIGNhbGxiYWNrIGFzIHdpdGgg LmJhY2tncm91bmQoKSwgYnV0IGFuIFNTTFJlcXVlc3QKKyAgICAgICAgICAgIGhhbmRzaGFrZSBp cyBwZXJmb3JtZWQgZmlyc3QsIGFuZCB0aGUgc29ja2V0IHByb3ZpZGVkIHRvIHRoZQorICAgICAg ICAgICAgY2FsbGJhY2sgaGFzIGJlZW4gd3JhcHBlZCBpbiBhbiBPcGVuU1NMIGxheWVyLgorICAg ICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGRlZiBoYW5kc2hha2Uoczogc29ja2V0LnNvY2tl dCk6CisgICAgICAgICAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3Yo NCkpWzBdCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBnZXQgYW4gU1NMUmVxdWVz dC4KKyAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2 KDQpKQorICAgICAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uID09ICgxMjM0LCA1Njc5KQorICAg ICAgICAgICAgICAgIGFzc2VydCBwa3RsZW4gPT0gOAorCisgICAgICAgICAgICAgICAgIyBBY2Nl cHQgdGhlIFNTTFJlcXVlc3QuCisgICAgICAgICAgICAgICAgcy5zZW5kKGIiUyIpCisKKyAgICAg ICAgICAgICAgICB3aXRoIHNlbGYuX2N0eC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVl KSBhcyB3cmFwcGVkOgorICAgICAgICAgICAgICAgICAgICBmbih3cmFwcGVkKQorCisgICAgICAg ICAgICBzZWxmLmJhY2tncm91bmQoaGFuZHNoYWtlKQorCisgICAgd2l0aCBfU1NMU2VydmVyKCkg YXMgczoKKyAgICAgICAgeWllbGQgcworCisKKyMKKyMgVGVzdHMKKyMKKworCitAcHl0ZXN0Lm1h cmsucGFyYW1ldHJpemUoInNzbG1vZGUiLCAoInJlcXVpcmUiLCAidmVyaWZ5LWNhIiwgInZlcmlm eS1mdWxsIikpCitkZWYgdGVzdF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQobGlicHEsIHRjcF9z ZXJ2ZXIsIGNlcnRzLCBzc2xtb2RlKToKKyAgICAiIiIKKyAgICBNYWtlIHN1cmUgY2xpZW50IHJl ZnVzZXMgdG8gdGFsayB0byBub24tU1NMIHNlcnZlcnMgd2l0aCBzdHJpY3RlcgorICAgIHNzbG1v ZGVzLgorICAgICIiIgorCisgICAgZGVmIHJlZnVzZV9zc2woczogc29ja2V0LnNvY2tldCk6Cisg ICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVswXQorCisgICAg ICAgICMgTWFrZSBzdXJlIHdlIGdldCBhbiBTU0xSZXF1ZXN0LgorICAgICAgICB2ZXJzaW9uID0g c3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2KDQpKQorICAgICAgICBhc3NlcnQgdmVyc2lvbiA9 PSAoMTIzNCwgNTY3OSkKKyAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA4CisKKyAgICAgICAgIyBS ZWZ1c2UgdGhlIFNTTFJlcXVlc3QuCisgICAgICAgIHMuc2VuZChiIk4iKQorCisgICAgICAgICMg V2FpdCBmb3IgdGhlIGNsaWVudCB0byBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgYXNz ZXJ0IG5vdCBzLnJlY3YoMSksICJjbGllbnQgc2VudCB1bmV4cGVjdGVkIGRhdGEiCisKKyAgICB0 Y3Bfc2VydmVyLmJhY2tncm91bmQocmVmdXNlX3NzbCkKKworICAgIHdpdGggcHl0ZXN0LnJhaXNl cyhsaWJwcS5FcnJvciwgbWF0Y2g9InNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNTTCIpOgorICAg ICAgICB3aXRoIGxpYnBxOiAgIyBYWFggdGVzdHMgc2hvdWxkbid0IG5lZWQgdG8gZG8gdGhpcwor ICAgICAgICAgICAgbGlicHEubXVzdF9jb25uZWN0KAorICAgICAgICAgICAgICAgICoqdGNwX3Nl cnZlci5jb25uaW5mbywKKyAgICAgICAgICAgICAgICBzc2xyb290Y2VydD1jZXJ0cy5jYS5jZXJ0 cGF0aCwKKyAgICAgICAgICAgICAgICBzc2xtb2RlPXNzbG1vZGUsCisgICAgICAgICAgICApCisK KworZGVmIHRlc3RfdmVyaWZ5X2Z1bGxfY29ubmVjdGlvbihsaWJwcSwgc3NsX3NlcnZlciwgY2Vy dHMpOgorICAgICIiIkNvbXBsZXRlcyBhIHZlcmlmeS1mdWxsIGNvbm5lY3Rpb24gYW5kIGVtcHR5 IHF1ZXJ5LiIiIgorCisgICAgZGVmIGhhbmRsZV9lbXB0eV9xdWVyeShzOiBzc2wuU1NMU29ja2V0 KToKKyAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisK KyAgICAgICAgIyBDaGVjayB0aGUgc3RhcnR1cCBwYWNrZXQgdmVyc2lvbiwgdGhlbiBkaXNjYXJk IHRoZSByZW1haW5kZXIuCisgICAgICAgIHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBz LnJlY3YoNCkpCisgICAgICAgIGFzc2VydCB2ZXJzaW9uID09ICgzLCAwKQorICAgICAgICBzLnJl Y3YocGt0bGVuIC0gOCkKKworICAgICAgICAjIFNlbmQgdGhlIHJlcXVpcmVkIGxpdGFueSBvZiBz ZXJ2ZXIgbWVzc2FnZXMuCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJSSIsIGIiUiIs IDgsIDApKSAgIyBBdXRoZW50aWNhdGlvbk9LCisKKyAgICAgICAgIyBQYXJhbWV0ZXJTdGF0dXM6 IGNsaWVudF9lbmNvZGluZworICAgICAgICBrZXkgPSBiImNsaWVudF9lbmNvZGluZ1wwIgorICAg ICAgICB2YWwgPSBiIlVURi04XDAiCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwg YiJTIiwgNCArIGxlbihrZXkpICsgbGVuKHZhbCkpICsga2V5ICsgdmFsKQorCisgICAgICAgICMg UGFyYW1ldGVyU3RhdHVzOiBEYXRlU3R5bGUKKyAgICAgICAga2V5ID0gYiJEYXRlU3R5bGVcMCIK KyAgICAgICAgdmFsID0gYiJJU08sIE1EWVwwIgorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2so IiFjSSIsIGIiUyIsIDQgKyBsZW4oa2V5KSArIGxlbih2YWwpKSArIGtleSArIHZhbCkKKworICAg ICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSUlJIiwgYiJLIiwgMTIsIDEyMzQsIDEyMzQpKSAg IyBCYWNrZW5kS2V5RGF0YQorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSWMiLCBiIloi LCA1LCBiIkkiKSkgICMgUmVhZHlGb3JRdWVyeQorCisgICAgICAgICMgRXhwZWN0IGFuIGVtcHR5 IHF1ZXJ5LgorICAgICAgICBwa3R0eXBlID0gcy5yZWN2KDEpCisgICAgICAgIGFzc2VydCBwa3R0 eXBlID09IGIiUSIKKyAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3Yo NCkpWzBdCisgICAgICAgIGFzc2VydCBzLnJlY3YocGt0bGVuIC0gNCkgPT0gYiJcMCIKKworICAg ICAgICAjIFNlbmQgYW4gRW1wdHlRdWVyeVJlc3BvbnNlK1JlYWR5Rm9yUXVlcnkuCisgICAgICAg IHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJJIiwgNCkpCisgICAgICAgIHMuc2VuZChzdHJ1 Y3QucGFjaygiIWNJYyIsIGIiWiIsIDUsIGIiSSIpKQorCisgICAgICAgICMgbGlicHEgc2hvdWxk IHRlcm1pbmF0ZSBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgIGFzc2VydCBzLnJl Y3YoMSkgPT0gYiJYIgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVj dig0KSlbMF0KKyAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA0CisKKyAgICAgICAgYXNzZXJ0IG5v dCBzLnJlY3YoMSksICJjbGllbnQgc2VudCB1bmV4cGVjdGVkIGRhdGEiCisKKyAgICBzc2xfc2Vy dmVyLmJhY2tncm91bmRfc3NsKGhhbmRsZV9lbXB0eV9xdWVyeSkKKworICAgIGNvbm4gPSBsaWJw cS5tdXN0X2Nvbm5lY3QoCisgICAgICAgICoqc3NsX3NlcnZlci5jb25uaW5mbywKKyAgICAgICAg c3Nscm9vdGNlcnQ9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAgIHNzbG1vZGU9InZlcmlmeS1m dWxsIiwKKyAgICApCisgICAgd2l0aCBjb25uOgorICAgICAgICBhc3NlcnQgY29ubi5leGVjKCIi KS5zdGF0dXMoKSA9PSBsaWJwcS5QR1JFU19FTVBUWV9RVUVSWQotLSAKMi4zNC4xCgo= --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0004-WIP-pytest-Add-some-server-side-SSL-tests.patch" Content-Disposition: attachment; filename="v2-0004-WIP-pytest-Add-some-server-side-SSL-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkvdgf3 RnJvbSA0OTM4ODdiOGRkOWM5NDdjMGM1YzNmOTRiZDJiM2VjYzAzYzY0MzQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCAyMiBBdWcgMjAyNSAxNzozOTo0MCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgNC82XSBXSVA6IHB5dGVzdDogQWRkIHNvbWUgc2VydmVyLXNpZGUgU1NMIHRl c3RzCgpJbiB0aGUgc2FtZSB2ZWluIGFzIHRoZSBwcmV2aW91cyBjb21taXQsIHRoaXMgaXMgYSBz ZXJ2ZXItb25seSB0ZXN0CnN1aXRlIG9wZXJhdGluZyBhZ2FpbnN0IGEgbW9jayBjbGllbnQuIFRo ZSB0ZXN0IGl0c2VsZiBpcyBhIGhlYXZpbHkKcGFyYW1ldGVyaXplZCBjaGVjayBmb3IgZGlyZWN0 LVNTTCBoYW5kc2hha2UgYmVoYXZpb3IsIHVzaW5nIGEKY29tYmluYXRpb24gb2YgInN0YW5kYXJk IiBhbmQgImN1c3RvbSIgY2VydGlmaWNhdGVzIHZpYSB0aGUgY2VydHMKZml4dHVyZS4KCmluc3Rh bGxjaGVjayBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQsIGJ1dCB0aGUgYXJjaGl0ZWN0dXJlIGhh cyBzb21lCmV4dGVuc2lvbiBwb2ludHMgdGhhdCBzaG91bGQgbWFrZSBpdCBwb3NzaWJsZSBsYXRl ci4gRm9yIG5vdywgYSBuZXcKc2VydmVyIGlzIGFsd2F5cyBzdGFydGVkIGZvciB0aGUgdGVzdCBz ZXNzaW9uLgoKTmV3IHNlc3Npb24tbGV2ZWwgZml4dHVyZXMgaGF2ZSBiZWVuIGFkZGVkIHdoaWNo IHByb2JhYmx5IG5lZWQgdG8KbWlncmF0ZSB0byB0aGUgYHBnYCBwYWNrYWdlLiBPZiBub3RlOgoK LSBkYXRhZGlyIHBvaW50cyB0byB0aGUgc2VydmVyJ3MgZGF0YSBkaXJlY3RvcnkKLSBzb2NrZGly IHBvaW50cyB0byB0aGUgc2VydmVyJ3MgVU5JWCBzb2NrZXQvbG9jayBkaXJlY3RvcnkKLSBzZXJ2 ZXJfaW5zdGFuY2UgYWN0dWFsbHkgaW5pdHMgYW5kIHN0YXJ0cyBhIHNlcnZlciB2aWEgdGhlIHBn X2N0bCBvbgogIFBBVEggKGFuZCBjb3VsZCBldmVudHVhbGx5IHBvaW50IGF0IGFuIGluc3RhbGxj aGVjayB0YXJnZXQpCgpXcmFwcGluZyB0aGVzZSBzZXNzaW9uLWxldmVsIGZpeHR1cmVzIGlzIHBn X3NlcnZlcltfc2Vzc2lvbl0sIHdoaWNoCnByb3ZpZGVzIEFQSXMgZm9yIGNvbmZpZ3VyYXRpb24g Y2hhbmdlcyB0aGF0IHVud2luZCB0aGVtc2VsdmVzIGF0IHRoZQplbmQgb2YgZml4dHVyZSBzY29w ZXMuIFRoZXJlJ3MgYWxzbyBhbiBleGFtcGxlIG9mIG5lc3RlZCBzY29wZXMsIHZpYQpwZ19zZXJ2 ZXJfc2Vzc2lvbi5zdWJjb250ZXh0KCkuIE1hbnkgVE9ET3MgcmVtYWluIGJlZm9yZSB3ZSdyZSBv biBwYXIKd2l0aCBUZXN0OjpDbHVzdGVyLCBidXQgdGhpcyBzaG91bGQgaWxsdXN0cmF0ZSBteSBk ZXNpcmVkIGFyY2hpdGVjdHVyZQpwcmV0dHkgd2VsbC4KCldpbmRvd3MgY3VycmVudGx5IHVzZXMg U0NSQU0tb3Zlci1VTklYIGZvciB0aGUgYWRtaW4gYWNjb3VudCByYXRoZXIgdGhhbgpTU1BJLW92 ZXItVENQLiBUaGVyZSdzIHNvbWUgZGVhZCBXaW4zMiBjb2RlIGluIHBnLmN1cnJlbnRfd2luZG93 c191c2VyLApidXQgSSd2ZSBrZXB0IGl0IGFzIGFuIGlsbHVzdHJhdGlvbiBvZiBob3cgYSBkZXZl bG9wZXIgbWlnaHQgd3JpdGUgc3VjaApjb2RlIGZvciBTU1BJLiBJJ2xsIHByb2JhYmx5IHJlbW92 ZSBpdCBpbiBhIGZ1dHVyZSBwYXRjaCB2ZXJzaW9uLgoKVE9ET3M6Ci0gcG9ydCBtb3JlIHNlcnZl ciBjb25maWd1cmF0aW9uIGJlaGF2aW9yIGZyb20gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcgot IGRlY2lkZSBhZ2FpbiBvbiAic2Vzc2lvbiIgdnMuICJtb2R1bGUiIHNjb3BlIGZvciBzZXJ2ZXIg Zml4dHVyZXMKLSBpbXByb3ZlIHJlbWFpbmluZ190aW1lb3V0KCkgaW50ZWdyYXRpb24gd2l0aCBz b2NrZXQgb3BlcmF0aW9uczsgYXQgdGhlCiAgbW9tZW50LCB0aGUgdGltZW91dCByZXNldHMgb24g ZXZlcnkgY2FsbCByYXRoZXIgdGhhbiBkZWNyZW1lbnRpbmcKLS0tCiBzcmMvdGVzdC9weXRlc3Qv cGcvX19pbml0X18ucHkgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9wZy9fd2luMzIucHkgICAg fCAxNDUgKysrKysrKysrCiBzcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5ICAgIHwgMTEzICsr KysrKysKIHNyYy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkgfCA1MzggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNzk3IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcGcvX3dpbjMyLnB5CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weSBiL3NyYy90ZXN0L3B5dGVzdC9wZy9fX2lu aXRfXy5weQppbmRleCBlZjhmYWY1NGNhNC4uNWRhZTQ5YjY0MDYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weQorKysgYi9zcmMvdGVzdC9weXRlc3QvcGcvX19pbml0 X18ucHkKQEAgLTEsMyArMSw0IEBACiAjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogZnJvbSAuX2VudiBpbXBvcnQgaGFzX3Rlc3RfZXh0 cmEsIHJlcXVpcmVfdGVzdF9leHRyYQorZnJvbSAuX3dpbjMyIGltcG9ydCBjdXJyZW50X3dpbmRv d3NfdXNlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3BnL193aW4zMi5weSBiL3NyYy90 ZXN0L3B5dGVzdC9wZy9fd2luMzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjNmZDY3YjEwMTkxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3Bn L193aW4zMi5weQpAQCAtMCwwICsxLDE0NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBjdHlwZXMKK2ltcG9ydCBw bGF0Zm9ybQorCisKK2RlZiBjdXJyZW50X3dpbmRvd3NfdXNlcigpOgorICAgICIiIgorICAgIEEg cG9ydCBvZiBwZ19yZWdyZXNzLmMncyBjdXJyZW50X3dpbmRvd3NfdXNlcigpIGhlbHBlci4gUmV0 dXJucworICAgIChhY2NvdW50bmFtZSwgZG9tYWlubmFtZSkuCisKKyAgICBYWFggVGhpcyBpcyBk ZWFkIGNvZGUgbm93LCBidXQgSSdtIGtlZXBpbmcgaXQgYXMgYSBtb3RpdmF0aW5nIGV4YW1wbGUg b2YKKyAgICBXaW4zMiBpbnRlcmFjdGlvbiwgYW5kIHNvbWVvbmUgbWF5IGZpbmQgaXQgdXNlZnVs IGluIHRoZSBmdXR1cmUgd2hlbiB3cml0aW5nCisgICAgU1NQSSB0ZXN0cz8KKyAgICAiIiIKKyAg ICB0cnk6CisgICAgICAgIGFkdmFwaTMyID0gY3R5cGVzLndpbmRsbC5hZHZhcGkzMgorICAgICAg ICBrZXJuZWwzMiA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIKKyAgICBleGNlcHQgQXR0cmlidXRl RXJyb3I6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIGYiY3VycmVu dF93aW5kb3dzX3VzZXIoKSBpcyBub3Qgc3VwcG9ydGVkIG9uIHtwbGF0Zm9ybS5zeXN0ZW0oKX0i CisgICAgICAgICkKKworICAgIGRlZiByYWlzZV93aW5lcnJvcl93aGVuX2ZhbHNlKHJlc3VsdCwg ZnVuYywgYXJndW1lbnRzKToKKyAgICAgICAgIiIiCisgICAgICAgIEEgY3R5cGVzIGVycmNoZWNr IGhhbmRsZXIgdGhhdCByYWlzZXMgV2luRXJyb3IgKHdoaWNoIHdpbGwgY29udGFpbiB0aGUKKyAg ICAgICAgcmVzdWx0IG9mIEdldExhc3RFcnJvcigpKSB3aGVuIHRoZSBmdW5jdGlvbidzIHJldHVy biB2YWx1ZSBpcyBmYWxzZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCByZXN1bHQ6Cisg ICAgICAgICAgICByYWlzZSBjdHlwZXMuV2luRXJyb3IoKQorCisgICAgIworICAgICMgRnVuY3Rp b24gUHJvdG90eXBlcworICAgICMKKworICAgIGZyb20gY3R5cGVzIGltcG9ydCB3aW50eXBlcwor CisgICAgIyBHZXRDdXJyZW50UHJvY2VzcworICAgIGtlcm5lbDMyLkdldEN1cnJlbnRQcm9jZXNz LnJlc3R5cGUgPSB3aW50eXBlcy5IQU5ETEUKKyAgICBrZXJuZWwzMi5HZXRDdXJyZW50UHJvY2Vz cy5hcmd0eXBlcyA9IFtdCisKKyAgICAjIE9wZW5Qcm9jZXNzVG9rZW4KKyAgICBUT0tFTl9SRUFE ID0gMHgwMDAyMDAwOAorCisgICAgYWR2YXBpMzIuT3BlblByb2Nlc3NUb2tlbi5yZXN0eXBlID0g d2ludHlwZXMuQk9PTAorICAgIGFkdmFwaTMyLk9wZW5Qcm9jZXNzVG9rZW4uYXJndHlwZXMgPSBb CisgICAgICAgIHdpbnR5cGVzLkhBTkRMRSwKKyAgICAgICAgd2ludHlwZXMuRFdPUkQsCisgICAg ICAgIHdpbnR5cGVzLlBIQU5ETEUsCisgICAgXQorICAgIGFkdmFwaTMyLk9wZW5Qcm9jZXNzVG9r ZW4uZXJyY2hlY2sgPSByYWlzZV93aW5lcnJvcl93aGVuX2ZhbHNlCisKKyAgICAjIEdldFRva2Vu SW5mb3JtYXRpb24KKyAgICBQU0lEID0gd2ludHlwZXMuTFBWT0lEICAjIHdlIGRvbid0IG5lZWQg dGhlIGludGVybmFscworICAgIFRPS0VOX0lORk9STUFUSU9OX0NMQVNTID0gd2ludHlwZXMuSU5U CisgICAgVG9rZW5Vc2VyID0gMQorCisgICAgY2xhc3MgU0lEX0FORF9BVFRSSUJVVEVTKGN0eXBl cy5TdHJ1Y3R1cmUpOgorICAgICAgICBfZmllbGRzXyA9IFsKKyAgICAgICAgICAgICgiU2lkIiwg UFNJRCksCisgICAgICAgICAgICAoIkF0dHJpYnV0ZXMiLCB3aW50eXBlcy5EV09SRCksCisgICAg ICAgIF0KKworICAgIGNsYXNzIFRPS0VOX1VTRVIoY3R5cGVzLlN0cnVjdHVyZSk6CisgICAgICAg IF9maWVsZHNfID0gWworICAgICAgICAgICAgKCJVc2VyIiwgU0lEX0FORF9BVFRSSUJVVEVTKSwK KyAgICAgICAgXQorCisgICAgYWR2YXBpMzIuR2V0VG9rZW5JbmZvcm1hdGlvbi5yZXN0eXBlID0g d2ludHlwZXMuQk9PTAorICAgIGFkdmFwaTMyLkdldFRva2VuSW5mb3JtYXRpb24uYXJndHlwZXMg PSBbCisgICAgICAgIHdpbnR5cGVzLkhBTkRMRSwKKyAgICAgICAgVE9LRU5fSU5GT1JNQVRJT05f Q0xBU1MsCisgICAgICAgIHdpbnR5cGVzLkxQVk9JRCwKKyAgICAgICAgd2ludHlwZXMuRFdPUkQs CisgICAgICAgIHdpbnR5cGVzLlBEV09SRCwKKyAgICBdCisgICAgYWR2YXBpMzIuR2V0VG9rZW5J bmZvcm1hdGlvbi5lcnJjaGVjayA9IHJhaXNlX3dpbmVycm9yX3doZW5fZmFsc2UKKworICAgICMg TG9va3VwQWNjb3VudFNpZAorICAgIFNJRF9OQU1FX1VTRSA9IHdpbnR5cGVzLklOVAorICAgIFBT SURfTkFNRV9VU0UgPSBjdHlwZXMuUE9JTlRFUihTSURfTkFNRV9VU0UpCisKKyAgICBhZHZhcGkz Mi5Mb29rdXBBY2NvdW50U2lkVy5yZXN0eXBlID0gd2ludHlwZXMuQk9PTAorICAgIGFkdmFwaTMy Lkxvb2t1cEFjY291bnRTaWRXLmFyZ3R5cGVzID0gWworICAgICAgICB3aW50eXBlcy5MUENXU1RS LAorICAgICAgICBQU0lELAorICAgICAgICB3aW50eXBlcy5MUFdTVFIsCisgICAgICAgIHdpbnR5 cGVzLkxQRFdPUkQsCisgICAgICAgIHdpbnR5cGVzLkxQV1NUUiwKKyAgICAgICAgd2ludHlwZXMu TFBEV09SRCwKKyAgICAgICAgUFNJRF9OQU1FX1VTRSwKKyAgICBdCisgICAgYWR2YXBpMzIuTG9v a3VwQWNjb3VudFNpZFcuZXJyY2hlY2sgPSByYWlzZV93aW5lcnJvcl93aGVuX2ZhbHNlCisKKyAg ICAjCisgICAgIyBJbXBsZW1lbnRhdGlvbiAoc2VlIHBnX1NTUElfcmVjdl9hdXRoKCkpCisgICAg IworCisgICAgIyBHZXQgdGhlIGN1cnJlbnQgcHJvY2VzcyB0b2tlbi4uLgorICAgIHRva2VuID0g d2ludHlwZXMuSEFORExFKCkKKyAgICBwcm9jID0ga2VybmVsMzIuR2V0Q3VycmVudFByb2Nlc3Mo KQorICAgIGFkdmFwaTMyLk9wZW5Qcm9jZXNzVG9rZW4ocHJvYywgVE9LRU5fUkVBRCwgdG9rZW4p CisKKyAgICAjIC4uLnRoZW4gcmVhZCB0aGUgVE9LRU5fVVNFUiBzdHJ1Y3QgZm9yIHRoYXQgdG9r ZW4uLi4KKyAgICBpbmZvID0gVE9LRU5fVVNFUigpCisgICAgaW5mb2xlbiA9IHdpbnR5cGVzLkRX T1JEKCkKKworICAgIHRyeToKKyAgICAgICAgIyAoR2V0VG9rZW5JbmZvcm1hdGlvbiBjcmVhdGVz IGEgYnVmZmVyIGJpZ2dlciB0aGFuIFRPS0VOX1VTRVIsIHNvIHdlCisgICAgICAgICMgaGF2ZSB0 byBxdWVyeSB0aGUgY29ycmVjdCBsZW5ndGggZmlyc3QuKQorICAgICAgICBhZHZhcGkzMi5HZXRU b2tlbkluZm9ybWF0aW9uKHRva2VuLCBUb2tlblVzZXIsIE5vbmUsIDAsIGN0eXBlcy5ieXJlZihp bmZvbGVuKSkKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAiR2V0VG9rZW5JbmZvcm1hdGlvbiBzdWNj ZWVkZWQgdW5leHBlY3RlZGx5IgorCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAg ICBhc3NlcnQgZXJyLndpbmVycm9yID09IDEyMiAgIyBpbnN1ZmZpY2llbnQgYnVmZmVyCisKKyAg ICAgICAgY3R5cGVzLnJlc2l6ZShpbmZvLCBpbmZvbGVuLnZhbHVlKQorICAgICAgICBhZHZhcGkz Mi5HZXRUb2tlbkluZm9ybWF0aW9uKAorICAgICAgICAgICAgdG9rZW4sCisgICAgICAgICAgICBU b2tlblVzZXIsCisgICAgICAgICAgICBjdHlwZXMuYnlyZWYoaW5mbyksCisgICAgICAgICAgICBj dHlwZXMuc2l6ZW9mKGluZm8pLAorICAgICAgICAgICAgY3R5cGVzLmJ5cmVmKGluZm9sZW4pLAor ICAgICAgICApCisKKyAgICAjIC4uLnRoZW4gcHVsbCB0aGUgYWNjb3VudCBhbmQgZG9tYWluIG5h bWVzIG91dCBvZiB0aGUgdXNlciBTSUQuCisgICAgTUFYUEdQQVRIID0gMTAyNAorCisgICAgYWNj b3VudCA9IGN0eXBlcy5jcmVhdGVfdW5pY29kZV9idWZmZXIoTUFYUEdQQVRIKQorICAgIGRvbWFp biA9IGN0eXBlcy5jcmVhdGVfdW5pY29kZV9idWZmZXIoTUFYUEdQQVRIKQorICAgIGFjY291bnRs ZW4gPSB3aW50eXBlcy5EV09SRChjdHlwZXMuc2l6ZW9mKGFjY291bnQpKQorICAgIGRvbWFpbmxl biA9IHdpbnR5cGVzLkRXT1JEKGN0eXBlcy5zaXplb2YoZG9tYWluKSkKKyAgICB1c2UgPSBTSURf TkFNRV9VU0UoKQorCisgICAgYWR2YXBpMzIuTG9va3VwQWNjb3VudFNpZFcoCisgICAgICAgIE5v bmUsCisgICAgICAgIGluZm8uVXNlci5TaWQsCisgICAgICAgIGFjY291bnQsCisgICAgICAgIGN0 eXBlcy5ieXJlZihhY2NvdW50bGVuKSwKKyAgICAgICAgZG9tYWluLAorICAgICAgICBjdHlwZXMu YnlyZWYoZG9tYWlubGVuKSwKKyAgICAgICAgY3R5cGVzLmJ5cmVmKHVzZSksCisgICAgKQorCisg ICAgcmV0dXJuIChhY2NvdW50LnZhbHVlLCBkb21haW4udmFsdWUpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpp bmRleCBmYjRkYjM3MmYwMy4uODVkMmM5OTQ4MjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9w eXQvY29uZnRlc3QucHkKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAtMSw2 ICsxLDEyIEBACiAjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKIAogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGli CitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzZWNyZXRzCitpbXBvcnQgc29ja2V0CitpbXBvcnQg c3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1l ZHR1cGxlCiAKQEAgLTEyNywzICsxMzMsMTEwIEBAIGRlZiBjZXJ0cyhjcnlwdG9ncmFwaHksIHRt cF9wYXRoX2ZhY3RvcnkpOgogICAgICAgICAgICAgcmV0dXJuIGYubmFtZQogCiAgICAgcmV0dXJu IF9DZXJ0cygpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBkYXRh ZGlyKHRtcF9wYXRoX2ZhY3RvcnkpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIGRpcmVjdG9y eSBuYW1lIHRvIHVzZSBhcyB0aGUgc2VydmVyIGRhdGEgZGlyZWN0b3J5LiBJZgorICAgIFRFU1RE QVRBRElSIGlzIHByb3ZpZGVkLCB0aGF0IHdpbGwgYmUgdXNlZDsgb3RoZXJ3aXNlIGEgbmV3IHRl bXBvcmFyeQorICAgIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGluIHRoZSBweXRlc3QgdGVtcCByb290 LgorICAgICIiIgorICAgIGQgPSBvcy5nZXRlbnYoIlRFU1REQVRBRElSIikKKyAgICBpZiBkOgor ICAgICAgICBkID0gcGF0aGxpYi5QYXRoKGQpCisgICAgZWxzZToKKyAgICAgICAgZCA9IHRtcF9w YXRoX2ZhY3RvcnkubWt0ZW1wKCJ0bXBfY2hlY2siKQorCisgICAgcmV0dXJuIGQKKworCitAcHl0 ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHNvY2tkaXIodG1wX3BhdGhfZmFjdG9y eSk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUgdG8gdXNlIGFzIHRo ZSBzZXJ2ZXIncyB1bml4X3NvY2tldF9kaXJlY3RvcmllcworICAgIHNldHRpbmcuIExvY2FsIGNs aWVudCBjb25uZWN0aW9ucyB1c2UgdGhpcyBhcyB0aGUgUEdIT1NULgorCisgICAgQXQgdGhlIG1v bWVudCwgdGhpcyBpcyBhbHdheXMgcHV0IHVuZGVyIHRoZSBweXRlc3QgdGVtcCByb290LgorICAg ICIiIgorICAgIHJldHVybiB0bXBfcGF0aF9mYWN0b3J5Lm1rdGVtcCgic29ja2ZpbGVzIikKKwor CitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHdpbnBhc3N3b3JkKCk6Cisg ICAgIiIiVGhlIHBlci1zZXNzaW9uIFNDUkFNIHBhc3N3b3JkIGZvciB0aGUgc2VydmVyIGFkbWlu IG9uIFdpbmRvd3MuIiIiCisgICAgcmV0dXJuIHNlY3JldHMudG9rZW5fdXJsc2FmZSgxNikKKwor CitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHNlcnZlcl9pbnN0YW5jZShj ZXJ0cywgZGF0YWRpciwgc29ja2Rpciwgd2lucGFzc3dvcmQpOgorICAgICIiIgorICAgIFN0YXJ0 cyBhIHJ1bm5pbmcgUG9zdGdyZXMgc2VydmVyIGxpc3RlbmluZyBvbiBsb2NhbGhvc3QuIFRoZSBI QkEgaW5pdGlhbGx5CisgICAgYWxsb3dzIG9ubHkgbG9jYWwgVU5JWCBjb25uZWN0aW9ucyBmcm9t IHRoZSBzYW1lIHVzZXIuCisKKyAgICBUT0RPOiB3aGVuIGluc3RhbGxjaGVjayBpcyBzdXBwb3J0 ZWQsIHRoaXMgc2hvdWxkIG9wdGlvbmFsbHkgcG9pbnQgdG8gdGhlCisgICAgY3VycmVudGx5IHJ1 bm5pbmcgc2VydmVyIGluc3RlYWQuCisgICAgIiIiCisKKyAgICAjIExvY2sgZG93biB0aGUgSEJB IGJ5IGRlZmF1bHQ7IHRlc3RzIGNhbiBvcGVuIGl0IGJhY2sgdXAgbGF0ZXIuCisgICAgaWYgcGxh dGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgorICAgICAgICAjIE9uIFdpbmRvd3MsIGZvciBh ZG1pbiBjb25uZWN0aW9ucywgdXNlIFNDUkFNIHdpdGggYSBnZW5lcmF0ZWQgcGFzc3dvcmQKKyAg ICAgICAgIyBvdmVyIGxvY2FsIHNvY2tldHMuIFRoaXMgcmVxdWlyZXMgYWRkaXRpb25hbCB3b3Jr IGR1cmluZyBpbml0ZGIuCisgICAgICAgIG1ldGhvZCA9ICJzY3JhbS1zaGEtMjU2IgorCisgICAg ICAgICMgTmFtZWRUZW1wb3JhcnlGaWxlIGRvZXNuJ3Qgd29yayB2ZXJ5IG5pY2VseSBvbiBXaW5k b3dzIHVudGlsIFB5dGhvbgorICAgICAgICAjIDMuMTIsIHdoaWNoIGludHJvZHVjZXMgTmFtZWRU ZW1wb3JhcnlGaWxlKGRlbGV0ZV9vbl9jbG9zZT1GYWxzZSkuCisgICAgICAgICMgVW50aWwgdGhl biwgc3BlY2lmeSBkZWxldGU9RmFsc2UgYW5kIG1hbnVhbGx5IHVubGluayBhZnRlciB1c2UuCisg ICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCJ3IiwgZGVsZXRlPUZhbHNl KSBhcyBwd2ZpbGU6CisgICAgICAgICAgICBwd2ZpbGUud3JpdGUod2lucGFzc3dvcmQpCisKKyAg ICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKAorICAgICAgICAgICAgWyJpbml0ZGIiLCAiLS1h dXRoPXNjcmFtLXNoYS0yNTYiLCAiLS1wd2ZpbGUiLCBwd2ZpbGUubmFtZSwgZGF0YWRpcl0KKyAg ICAgICAgKQorICAgICAgICBvcy51bmxpbmsocHdmaWxlLm5hbWUpCisKKyAgICBlbHNlOgorICAg ICAgICAjIEZvciBvdGhlciBPU2VzIHdlIGNhbiBqdXN0IHVzZSBwZWVyIGF1dGguCisgICAgICAg IG1ldGhvZCA9ICJwZWVyIgorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJwZ19jdGwi LCAiLUQiLCBkYXRhZGlyLCAiaW5pdCJdKQorCisgICAgd2l0aCBvcGVuKGRhdGFkaXIgLyAicGdf aGJhLmNvbmYiLCAidyIpIGFzIGY6CisgICAgICAgIHByaW50KGYiIyBkZWZhdWx0OiBsb2NhbCB7 bWV0aG9kfSBjb25uZWN0aW9ucyBvbmx5IiwgZmlsZT1mKQorICAgICAgICBwcmludChmImxvY2Fs IGFsbCBhbGwge21ldGhvZH0iLCBmaWxlPWYpCisKKyAgICAjIEZpZ3VyZSBvdXQgYSBwb3J0IHRv IGxpc3RlbiBvbi4gQXR0ZW1wdCB0byByZXNlcnZlIGJvdGggSVB2NCBhbmQgSVB2NgorICAgICMg YWRkcmVzc2VzIGluIG9uZSBnby4KKyAgICAjCisgICAgIyBOb3RlOiBzb2NrZXQuaGFzX2R1YWxz dGFja19pcHY2L2NyZWF0ZV9zZXJ2ZXIgYXJlIG9ubHkgaW4gUHl0aG9uIDMuOCsuCisgICAgaWYg aGFzYXR0cihzb2NrZXQsICJoYXNfZHVhbHN0YWNrX2lwdjYiKSBhbmQgc29ja2V0Lmhhc19kdWFs c3RhY2tfaXB2NigpOgorICAgICAgICBhZGRyID0gKCI6OjEiLCAwKQorICAgICAgICBzID0gc29j a2V0LmNyZWF0ZV9zZXJ2ZXIoYWRkciwgZmFtaWx5PXNvY2tldC5BRl9JTkVUNiwgZHVhbHN0YWNr X2lwdjY9VHJ1ZSkKKworICAgICAgICBob3N0YWRkciwgcG9ydCwgXywgXyA9IHMuZ2V0c29ja25h bWUoKQorICAgICAgICBhZGRycyA9IFtob3N0YWRkciwgIjEyNy4wLjAuMSJdCisKKyAgICBlbHNl OgorICAgICAgICBhZGRyID0gKCIxMjcuMC4wLjEiLCAwKQorCisgICAgICAgIHMgPSBzb2NrZXQu c29ja2V0KCkKKyAgICAgICAgcy5iaW5kKGFkZHIpCisKKyAgICAgICAgaG9zdGFkZHIsIHBvcnQg PSBzLmdldHNvY2tuYW1lKCkKKyAgICAgICAgYWRkcnMgPSBbaG9zdGFkZHJdCisKKyAgICBsb2cg PSBvcy5wYXRoLmpvaW4oZGF0YWRpciwgInBvc3RncmVzcWwubG9nIikKKworICAgIHdpdGggcywg b3Blbihvcy5wYXRoLmpvaW4oZGF0YWRpciwgInBvc3RncmVzcWwuY29uZiIpLCAiYSIpIGFzIGY6 CisgICAgICAgIHByaW50KGZpbGU9ZikKKyAgICAgICAgcHJpbnQoInVuaXhfc29ja2V0X2RpcmVj dG9yaWVzID0gJ3t9JyIuZm9ybWF0KHNvY2tkaXIuYXNfcG9zaXgoKSksIGZpbGU9ZikKKyAgICAg ICAgcHJpbnQoImxpc3Rlbl9hZGRyZXNzZXMgPSAne30nIi5mb3JtYXQoIiwiLmpvaW4oYWRkcnMp KSwgZmlsZT1mKQorICAgICAgICBwcmludCgicG9ydCA9IiwgcG9ydCwgZmlsZT1mKQorICAgICAg ICBwcmludCgibG9nX2Nvbm5lY3Rpb25zID0gYWxsIiwgZmlsZT1mKQorCisgICAgIyBCZXR3ZWVu IGNsb3Npbmcgb2YgdGhlIHNvY2tldCwgcywgYW5kIHNlcnZlciBzdGFydCwgd2UncmUgcmFjaW5n IGFnYWluc3QKKyAgICAjIGFueXRoaW5nIHRoYXQgd2FudHMgdG8gb3BlbiB1cCBlcGhlbWVyYWwg cG9ydHMsIHNvIHRyeSBub3QgdG8gcHV0IGFueSBuZXcKKyAgICAjIHdvcmsgaGVyZS4KKworICAg IHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbInBnX2N0bCIsICItRCIsIGRhdGFkaXIsICItbCIsIGxv ZywgInN0YXJ0Il0pCisgICAgeWllbGQgKGhvc3RhZGRyLCBwb3J0KQorICAgIHN1YnByb2Nlc3Mu Y2hlY2tfY2FsbChbInBnX2N0bCIsICItRCIsIGRhdGFkaXIsICItbCIsIGxvZywgInN0b3AiXSkK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkgYi9zcmMvdGVzdC9z c2wvcHl0L3Rlc3Rfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4yZDBiZTczNTM3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9weXQvdGVz dF9zZXJ2ZXIucHkKQEAgLTAsMCArMSw1MzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1w b3J0IG9zCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9y dCBzaHV0aWwKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9y dCBzdWJwcm9jZXNzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5h bWVkdHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0LCBVbmlvbgorCitpbXBvcnQg cHl0ZXN0CisKK2ltcG9ydCBwZworCisjIFRoaXMgc3VpdGUgb3BlbnMgdXAgbG9jYWwgVENQIHBv cnRzIGFuZCBpcyBoaWRkZW4gYmVoaW5kIFBHX1RFU1RfRVhUUkE9c3NsLgorcHl0ZXN0bWFyayA9 IHBnLnJlcXVpcmVfdGVzdF9leHRyYSgic3NsIikKKworCisjCisjIFRlc3QgRml4dHVyZXMKKyMK KworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNvbm5lbnYoc2VydmVy X2luc3RhbmNlLCBzb2NrZGlyLCBkYXRhZGlyKToKKyAgICAiIiIKKyAgICBQcm92aWRlcyB0aGUg dmFsdWVzIGZvciBzZXZlcmFsIFBHKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbmVlZGVkIGZvciBv dXIKKyAgICB1dGlsaXR5IHByb2dyYW1zIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlcl9pbnN0YW5j ZS4KKyAgICAiIiIKKyAgICByZXR1cm4geworICAgICAgICAiUEdIT1NUIjogc3RyKHNvY2tkaXIp LAorICAgICAgICAiUEdQT1JUIjogc3RyKHNlcnZlcl9pbnN0YW5jZVsxXSksCisgICAgICAgICJQ R0RBVEFCQVNFIjogInBvc3RncmVzIiwKKyAgICAgICAgIlBHREFUQSI6IHN0cihkYXRhZGlyKSwK KyAgICB9CisKKworY2xhc3MgRmlsZUJhY2t1cChjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1h bmFnZXIpOgorICAgICIiIgorICAgIEEgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGJhY2tzIHVwIGEg ZmlsZSdzIGNvbnRlbnRzLCByZXN0b3JpbmcgdGhlbSBvbiBleGl0LgorICAgICIiIgorCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGU6IHBhdGhsaWIuUGF0aCk6CisgICAgICAgIHN1cGVyKCku X19pbml0X18oKQorCisgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisKKyAgICBkZWYgX19lbnRl cl9fKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgKKyAg ICAgICAgICAgIHByZWZpeD1zZWxmLl9maWxlLm5hbWUsIGRpcj1zZWxmLl9maWxlLnBhcmVudCwg ZGVsZXRlPUZhbHNlCisgICAgICAgICkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuX2JhY2t1cCA9 IHBhdGhsaWIuUGF0aChmLm5hbWUpCisKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2Zp bGUsIHNlbGYuX2JhY2t1cCkKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhp dF9fKHNlbGYsICpleGMpOgorICAgICAgICAjIFN3YXAgdGhlIGJhY2t1cCBhbmQgdGhlIG9yaWdp bmFsIGZpbGUsIHNvIHRoYXQgdGhlIG1vZGlmaWVkIGNvbnRlbnRzCisgICAgICAgICMgY2FuIHN0 aWxsIGJlIGluc3BlY3RlZCBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgICMKKyAgICAgICAg IyBUT0RPOiB0aGlzIGlzIGxlc3MgaGVscGZ1bCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbGF5ZXJz LCBiZWNhdXNlIGl0J3MKKyAgICAgICAgIyBub3QgY2xlYXIgd2hpY2ggYmFja3VwIHRvIGxvb2sg YXQuIENhbiB0aGUgYmFja3VwIG5hbWUgYmUgcHJpbnRlZCBhcworICAgICAgICAjIHBhcnQgb2Yg dGhlIGZhaWxlZCB0ZXN0IG91dHB1dD8gU2hvdWxkIHdlIG9ubHkgc3dhcCBvbiB0ZXN0IGZhaWx1 cmU/CisgICAgICAgIHRtcCA9IHNlbGYuX2JhY2t1cC5wYXJlbnQgLyAoc2VsZi5fYmFja3VwLm5h bWUgKyAiLnRtcCIpCisKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2ZpbGUsIHRtcCkK KyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2JhY2t1cCwgc2VsZi5fZmlsZSkKKyAgICAg ICAgc2h1dGlsLm1vdmUodG1wLCBzZWxmLl9iYWNrdXApCisKKworY2xhc3MgSEJBKEZpbGVCYWNr dXApOgorICAgICIiIgorICAgIEJhY2tzIHVwIGEgc2VydmVyJ3MgSEJBIGNvbmZpZ3VyYXRpb24g YW5kIHByb3ZpZGVzIG1lYW5zIGZvciB0ZW1wb3JhcmlseQorICAgIGVkaXRpbmcgaXQuIFNlZSBh bHNvIHBnX3NlcnZlciwgd2hpY2ggcHJvdmlkZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBh bmQKKyAgICBjb250ZXh0IG1hbmFnZXJzIGZvciBlbmZvcmNpbmcgdGhlIHJlbG9hZC9yZXN0YXJ0 IG9yZGVyIG9mIG9wZXJhdGlvbnMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg ZGF0YWRpcjogcGF0aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhZGly IC8gInBnX2hiYS5jb25mIikKKworICAgIGRlZiBwcmVwZW5kKHNlbGYsICpsaW5lczogVW5pb25b c3RyLCBMaXN0W3N0cl1dKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlbXBvcmFyaWx5IHByZXBl bmRzIGxpbmVzIHRvIHRoZSBzZXJ2ZXIncyBwZ19oYmEuY29uZi4KKworICAgICAgICBBcyBzdWdh ciBmb3IgYWxpZ25pbmcgSEJBIGNvbHVtbnMgaW4gdGhlIHRlc3RzLCBlYWNoIGxpbmUgY2FuIGJl IGVpdGhlcgorICAgICAgICBhIHN0cmluZyBvciBhIGxpc3Qgb2Ygc3RyaW5ncy4gTGlzdCBlbGVt ZW50cyB3aWxsIGJlIGpvaW5lZCBieSBzaW5nbGUKKyAgICAgICAgc3BhY2VzIGJlZm9yZSB0aGV5 IGFyZSB3cml0dGVuIHRvIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIG9wZW4oc2Vs Zi5fZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgcHJpb3JfZGF0YSA9IGYucmVhZCgpCisK KyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGZv ciBsIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobCwgbGlzdCk6Cisg ICAgICAgICAgICAgICAgICAgIHByaW50KCpsLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobCwgZmlsZT1mKQorCisgICAgICAgICAgICBm LndyaXRlKHByaW9yX2RhdGEpCisKKworY2xhc3MgQ29uZmlnKEZpbGVCYWNrdXApOgorICAgICIi IgorICAgIEJhY2tzIHVwIGEgc2VydmVyJ3MgcG9zdGdyZXNxbC5jb25mIGFuZCBwcm92aWRlcyBt ZWFucyBmb3IgdGVtcG9yYXJpbHkKKyAgICBlZGl0aW5nIGl0LiBTZWUgYWxzbyBwZ19zZXJ2ZXIs IHdoaWNoIHByb3ZpZGVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgYW5kCisgICAgY29udGV4 dCBtYW5hZ2VycyBmb3IgZW5mb3JjaW5nIHRoZSByZWxvYWQvcmVzdGFydCBvcmRlciBvZiBvcGVy YXRpb25zLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGFkaXI6IHBhdGhs aWIuUGF0aCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0YWRpciAvICJwb3N0Z3Jlc3Fs LmNvbmYiKQorCisgICAgZGVmIHNldChzZWxmLCAqKmd1Y3MpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGVtcG9yYXJpbHkgYXBwZW5kcyBHVUMgc2V0dGluZ3MgdG8gdGhlIHNlcnZlcidzIHBvc3Rn cmVzcWwuY29uZi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ZpbGUs ICJhIikgYXMgZjoKKyAgICAgICAgICAgIHByaW50KGZpbGU9ZikKKworICAgICAgICAgICAgZm9y IG4sIHYgaW4gZ3Vjcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHYgPSBzdHIodikKKworICAg ICAgICAgICAgICAgICMgVE9ETzogcHJvcGVyIHF1b3RpbmcKKyAgICAgICAgICAgICAgICB2ID0g di5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCIn IiwgIlxcJyIpCisgICAgICAgICAgICAgICAgdiA9ICIne30nIi5mb3JtYXQodikKKworICAgICAg ICAgICAgICAgIHByaW50KG4sICI9IiwgdiwgZmlsZT1mKQorCisKK0BweXRlc3QuZml4dHVyZShz Y29wZT0ic2Vzc2lvbiIpCitkZWYgcGdfc2VydmVyX3Nlc3Npb24oc2VydmVyX2luc3RhbmNlLCBj b25uZW52LCBkYXRhZGlyLCB3aW5wYXNzd29yZCk6CisgICAgIiIiCisgICAgUHJvdmlkZXMgY29t bW9uIHJvdXRpbmVzIGZvciBjb25maWd1cmluZyBhbmQgY29ubmVjdGluZyB0byB0aGUKKyAgICBz ZXJ2ZXJfaW5zdGFuY2UuIEZvciBleGFtcGxlOgorCisgICAgICAgIHVzZXJzID0gcGdfc2VydmVy X3Nlc3Npb24uY3JlYXRlX3VzZXJzKCJvbmUiLCAidHdvIikKKyAgICAgICAgZGJzID0gcGdfc2Vy dmVyX3Nlc3Npb24uY3JlYXRlX2RicygiZGVmYXVsdCIpCisKKyAgICAgICAgd2l0aCBwZ19zZXJ2 ZXJfc2Vzc2lvbi5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgcy5oYmEucHJlcGVuZChb ImxvY2FsIiwgZGJzWyJkZWZhdWx0Il0sIHVzZXJzWyJ0d28iXSwgInBlZXIiXSkKKworICAgICAg ICBjb25uID0gY29ubmVjdF9zb21laG93KCoqcGdfc2VydmVyX3Nlc3Npb24uY29ubmluZm8pCisg ICAgICAgIC4uLgorCisgICAgQXR0cmlidXRlcyBvZiBub3RlIGFyZQorICAgIC0gLmNvbm5pbmZv OiBwcm92aWRlcyBUQ1AgY29ubmVjdGlvbiBpbmZvIGZvciB0aGUgc2VydmVyCisKKyAgICBUaGlz IGZpeHR1cmUgdW53aW5kcyBpdHMgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGF0IHRoZSBlbmQgb2Yg dGhlIHB5dGVzdAorICAgIHNlc3Npb24uIEZvciBtb3JlIGdyYW51bGFyIGNoYW5nZXMsIHBnX3Nl cnZlcl9zZXNzaW9uLnN1YmNvbnRleHQoKSBzcGxpdHMKKyAgICBvZmYgYSAibmVzdGVkIiBjb250 ZXh0IHRvIGFsbG93IHNtYWxsZXIgc2NvcGVzLgorICAgICIiIgorCisgICAgY2xhc3MgX1NlcnZl cihjb250ZXh0bGliLkV4aXRTdGFjayk6CisgICAgICAgIGNvbm5pbmZvID0gZGljdCgKKyAgICAg ICAgICAgIGhvc3RhZGRyPXNlcnZlcl9pbnN0YW5jZVswXSwKKyAgICAgICAgICAgIHBvcnQ9c2Vy dmVyX2luc3RhbmNlWzFdLAorICAgICAgICApCisKKyAgICAgICAgIyBmb3IgX2JhY2t1cF9jb25m aWd1cmF0aW9uKCkKKyAgICAgICAgX0JhY2t1cCA9IG5hbWVkdHVwbGUoIkJhY2t1cCIsICJjb25m LCBoYmEiKQorCisgICAgICAgIGRlZiBzdWJjb250ZXh0KHNlbGYpOgorICAgICAgICAgICAgIiIi CisgICAgICAgICAgICBDcmVhdGVzIGEgbmV3IHNlcnZlciBzdGFjayBpbnN0YW5jZSB0aGF0IGNh biBiZSB0aWVkIHRvIGEgc21hbGxlcgorICAgICAgICAgICAgc2NvcGUgdGhhbiAic2Vzc2lvbiIu CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICMgU28gZmFyLCB0aGVyZSBkb2Vzbid0IHNl ZW0gdG8gYmUgYSBuZWVkIHRvIGxpbmsgdGhlIHR3byBvYmplY3RzLAorICAgICAgICAgICAgIyBz aW5jZSBIQkEvQ29uZmlnL0ZpbGVCYWNrdXAgb3BlcmF0ZSBkaXJlY3RseSBvbiB0aGUgZmlsZXN5 c3RlbSBhbmQKKyAgICAgICAgICAgICMgd2lsbCBhcHBlYXIgdG8gIm5lc3QiIG5hdHVyYWxseS4K KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXygpCisKKyAgICAgICAgZGVmIGNyZWF0 ZV91c2VycyhzZWxmLCAqdXNlcmtleXM6IHN0cikgLT4gRGljdFtzdHIsIHN0cl06CisgICAgICAg ICAgICAiIiIKKyAgICAgICAgICAgIENyZWF0ZXMgbmV3IHVzZXJzIHdoaWNoIHdpbGwgYmUgZHJv cHBlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNvbnRleHQuCisKKyAg ICAgICAgICAgIEZvciBlYWNoIHByb3ZpZGVkIGtleSwgYSByZWxhdGVkIHVzZXIgbmFtZSB3aWxs IGJlIHNlbGVjdGVkIGFuZAorICAgICAgICAgICAgc3RvcmVkIGluIGEgbWFwLiBUaGlzIG1hcCBp cyByZXR1cm5lZCB0byBsZXQgY2FsbGluZyBjb2RlIGxvb2sgdXAKKyAgICAgICAgICAgIHRoZSBz ZWxlY3RlZCB1c2VybmFtZXMgKGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGFuZCBwb3RlbnRp YWxseQorICAgICAgICAgICAgc3RvbXBpbmcgb24gYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uKS4K KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdXNlcm1hcCA9IHt9CisKKyAgICAgICAgICAg IGZvciB1IGluIHVzZXJrZXlzOgorICAgICAgICAgICAgICAgICMgVE9ETzogdXNlIGEgdW5pcXVp ZmllciB0byBzdXBwb3J0IGluc3RhbGxjaGVjaworICAgICAgICAgICAgICAgIG5hbWUgPSB1ICsg InVzZXIiCisgICAgICAgICAgICAgICAgdXNlcm1hcFt1XSA9IG5hbWUKKworICAgICAgICAgICAg ICAgICMgVE9ETzogcHJvcGVyIGVzY2FwaW5nCisgICAgICAgICAgICAgICAgc2VsZi5wc3FsKCIt YyIsICJDUkVBVEUgVVNFUiAiICsgbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxiYWNr KHNlbGYucHNxbCwgIi1jIiwgIkRST1AgVVNFUiAiICsgbmFtZSkKKworICAgICAgICAgICAgcmV0 dXJuIHVzZXJtYXAKKworICAgICAgICBkZWYgY3JlYXRlX2RicyhzZWxmLCAqZGJrZXlzOiBzdHIp IC0+IERpY3Rbc3RyLCBzdHJdOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGVz IG5ldyBkYXRhYmFzZXMgd2hpY2ggd2lsbCBiZSBkcm9wcGVkIGF0IHRoZSBlbmQgb2YgdGhlIHNl cnZlcgorICAgICAgICAgICAgY29udGV4dC4gU2VlIGNyZWF0ZV91c2VycygpIGZvciB0aGUgbWVh bmluZyBvZiB0aGUga2V5cyBhbmQgcmV0dXJuZWQKKyAgICAgICAgICAgIG1hcC4KKyAgICAgICAg ICAgICIiIgorICAgICAgICAgICAgZGJtYXAgPSB7fQorCisgICAgICAgICAgICBmb3IgZCBpbiBk YmtleXM6CisgICAgICAgICAgICAgICAgIyBUT0RPOiB1c2UgYSB1bmlxdWlmaWVyIHRvIHN1cHBv cnQgaW5zdGFsbGNoZWNrCisgICAgICAgICAgICAgICAgbmFtZSA9IGQgKyAiZGIiCisgICAgICAg ICAgICAgICAgZGJtYXBbZF0gPSBuYW1lCisKKyAgICAgICAgICAgICAgICAjIFRPRE86IHByb3Bl ciBlc2NhcGluZworICAgICAgICAgICAgICAgIHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIERBVEFC QVNFICIgKyBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5wc3FsLCAi LWMiLCAiRFJPUCBEQVRBQkFTRSAiICsgbmFtZSkKKworICAgICAgICAgICAgcmV0dXJuIGRibWFw CisKKyAgICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICAgICAgZGVmIHJlbG9h ZGluZyhzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUHJvdmlkZXMgYSBjb250 ZXh0IG1hbmFnZXIgZm9yIG1ha2luZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisKKyAgICAgICAg ICAgIElmIHRoZSBjb250ZXh0IHN1aXRlIGZpbmlzaGVzIHN1Y2Nlc3NmdWxseSwgdGhlIGNvbmZp Z3VyYXRpb24gd2lsbAorICAgICAgICAgICAgYmUgcmVsb2FkZWQgdmlhIHBnX2N0bC4gT24gdGVh cmRvd24sIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgd2lsbAorICAgICAgICAgICAgYmUgdW53 b3VuZCwgYW5kIHRoZSBzZXJ2ZXIgd2lsbCBiZSBzaWduYWxlZCB0byByZWxvYWQgYWdhaW4uCisK KyAgICAgICAgICAgIFRoZSBjb250ZXh0IHRhcmdldCBjb250YWlucyB0aGUgZm9sbG93aW5nIGF0 dHJpYnV0ZXMgd2hpY2ggY2FuIGJlCisgICAgICAgICAgICB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUg c2VydmVyOgorICAgICAgICAgICAgLSAuY29uZjogbW9kaWZpZXMgcG9zdGdyZXNxbC5jb25mCisg ICAgICAgICAgICAtIC5oYmE6IG1vZGlmaWVzIHBnX2hiYS5jb25mCisKKyAgICAgICAgICAgIEZv ciBleGFtcGxlOgorCisgICAgICAgICAgICAgICAgd2l0aCBwZ19zZXJ2ZXJfc2Vzc2lvbi5yZWxv YWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICBzLmNvbmYuc2V0KGxvZ19jb25uZWN0 aW9ucz0ib24iKQorICAgICAgICAgICAgICAgICAgICBzLmhiYS5wcmVwZW5kKCJsb2NhbCBhbGwg YWxsIHRydXN0IikKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg ICAgICAgICMgUHVzaCBhIHJlbG9hZCBvbnRvIHRoZSBzdGFjayBiZWZvcmUgbWFraW5nIGFueSBv dGhlcgorICAgICAgICAgICAgICAgICMgdW53aW5kYWJsZSBjaGFuZ2VzLiBUaGF0IHdheSB0aGUg b3JkZXIgb2Ygb3BlcmF0aW9ucyB3aWxsIGJlCisgICAgICAgICAgICAgICAgIworICAgICAgICAg ICAgICAgICMgICMgdGVzdAorICAgICAgICAgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMQor ICAgICAgICAgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMgorICAgICAgICAgICAgICAgICMg ICAtIHJlbG9hZAorICAgICAgICAgICAgICAgICMgICMgdGVhcmRvd24KKyAgICAgICAgICAgICAg ICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMgorICAgICAgICAgICAgICAgICMgICAtIHVuZG8g Y29uZmlnIGNoYW5nZSAxCisgICAgICAgICAgICAgICAgIyAgIC0gcmVsb2FkCisgICAgICAgICAg ICAgICAgIworICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5wZ19jdGwsICJyZWxv YWQiKQorICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX2JhY2t1cF9jb25maWd1cmF0aW9uKCkK KyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBy ZWxvYWQgYXQgdGhlIGVuZCBvZiB0aGUgc3VpdGUgaWYgdGhlcmUgd2VyZQorICAgICAgICAgICAg ICAgICMgbm8gZXJyb3JzLiBEdXJpbmcgZXhjZXB0aW9ucywgdGhlIHB1c2hlZCBjYWxsYmFjayBo YW5kbGVzCisgICAgICAgICAgICAgICAgIyB0aGluZ3MgaW5zdGVhZCwgc28gdGhlcmUncyBub3Ro aW5nIHRvIGRvIGhlcmUuCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgIyBTdWl0ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgICAg ICAgICAgICAgIHNlbGYucGdfY3RsKCJyZWxvYWQiKQorCisgICAgICAgIEBjb250ZXh0bGliLmNv bnRleHRtYW5hZ2VyCisgICAgICAgIGRlZiByZXN0YXJ0aW5nKHNlbGYpOgorICAgICAgICAgICAg IiIiTGlrZSAucmVsb2FkaW5nKCksIGJ1dCB3aXRoIGEgZnVsbCBzZXJ2ZXIgcmVzdGFydC4iIiIK KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxiYWNrKHNlbGYucGdf Y3RsLCAicmVzdGFydCIpCisgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZp Z3VyYXRpb24oKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJhaXNlCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucGdfY3RsKCJyZXN0YXJ0IikK KworICAgICAgICBkZWYgcHNxbChzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAiIiIKKyAgICAg ICAgICAgIFJ1bnMgcHNxbCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuIFBhc3N3b3JkIHByb21w dHMgYXJlIGFsd2F5cworICAgICAgICAgICAgZGlzYWJsZWQuIE9uIFdpbmRvd3MsIHRoZSBhZG1p biBwYXNzd29yZCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQorICAgICAgICAgICAgZW52aXJvbm1l bnQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09 ICJXaW5kb3dzIjoKKyAgICAgICAgICAgICAgICBwdyA9IGRpY3QoUEdQQVNTV09SRD13aW5wYXNz d29yZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHcgPSBOb25lCisKKyAg ICAgICAgICAgIHNlbGYuX3J1bigicHNxbCIsICItdyIsICphcmdzLCBhZGRlbnY9cHcpCisKKyAg ICAgICAgZGVmIHBnX2N0bChzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAg ICAgIFJ1bnMgcGdfY3RsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gTG9nIG91dHB1dCB3aWxs IGJlIHBsYWNlZCBpbgorICAgICAgICAgICAgcG9zdGdyZXNxbC5sb2cgaW4gdGhlIHNlcnZlcidz IGRhdGEgZGlyZWN0b3J5LgorCisgICAgICAgICAgICBUT0RPOiBwdXQgdGhlIGxvZyBpbiBURVNU TE9HRElSCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3J1bigicGdfY3RsIiwg Ii1sIiwgc3RyKGRhdGFkaXIgLyAicG9zdGdyZXNxbC5sb2ciKSwgKmFyZ3MpCisKKyAgICAgICAg ZGVmIF9ydW4oc2VsZiwgY21kLCAqYXJncywgYWRkZW52OiBkaWN0ID0gTm9uZSk6CisgICAgICAg ICAgICAjIE92ZXJyaWRlIHRoZSBleGlzdGluZyBlbnZpcm9ubWVudCB3aXRoIHRoZSBjb25uZW52 IHZhbHVlcyBhbmQKKyAgICAgICAgICAgICMgYW55dGhpbmcgdGhlIGNhbGxlciB3YW50ZWQgdG8g YWRkLiAoUHl0aG9uIDMuOSBnaXZlcyB1cyB0aGUKKyAgICAgICAgICAgICMgbGVzcy11Z2x5IGBv cy5lbnZpcm9uIHwgY29ubmVudmAgbWVyZ2Ugb3BlcmF0b3IuKQorICAgICAgICAgICAgc3ViZW52 ID0gZGljdChvcy5lbnZpcm9uLCAqKmNvbm5lbnYpCisgICAgICAgICAgICBpZiBhZGRlbnY6Cisg ICAgICAgICAgICAgICAgc3ViZW52LnVwZGF0ZShhZGRlbnYpCisKKyAgICAgICAgICAgIHN1YnBy b2Nlc3MuY2hlY2tfY2FsbChbY21kLCAqYXJnc10sIGVudj1zdWJlbnYpCisKKyAgICAgICAgZGVm IF9iYWNrdXBfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgICAgICMgV3JhcCB0aGUgZXhp c3RpbmcgSEJBIGFuZCBjb25maWd1cmF0aW9uIHdpdGggRmlsZUJhY2t1cHMuCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5fQmFja3VwKAorICAgICAgICAgICAgICAgIGhiYT1zZWxmLmVudGVyX2Nv bnRleHQoSEJBKGRhdGFkaXIpKSwKKyAgICAgICAgICAgICAgICBjb25mPXNlbGYuZW50ZXJfY29u dGV4dChDb25maWcoZGF0YWRpcikpLAorICAgICAgICAgICAgKQorCisgICAgd2l0aCBfU2VydmVy KCkgYXMgczoKKyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9k dWxlIiwgYXV0b3VzZT1UcnVlKQorZGVmIHNzbF9zZXR1cChwZ19zZXJ2ZXJfc2Vzc2lvbiwgY2Vy dHMsIGRhdGFkaXIpOgorICAgICIiIgorICAgIFNldHMgdXAgcmVxdWlyZWQgc2VydmVyIHNldHRp bmdzIGZvciBhbGwgdGVzdHMgaW4gdGhpcyBtb2R1bGUuIFRoZSBmaXh0dXJlCisgICAgdmFyaWFi bGUgaXMgYSB0dXBsZSAodXNlcnMsIGRicykgY29udGFpbmluZyB0aGUgdXNlciBhbmQgZGF0YWJh c2UgbmFtZXMgdGhhdAorICAgIGhhdmUgYmVlbiBjaG9zZW4gZm9yIHRoZSB0ZXN0IHNlc3Npb24u CisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICB3aXRoIHBnX3NlcnZlcl9zZXNzaW9uLnJlc3Rh cnRpbmcoKSBhcyBzOgorICAgICAgICAgICAgcy5jb25mLnNldCgKKyAgICAgICAgICAgICAgICBz c2w9Im9uIiwKKyAgICAgICAgICAgICAgICBzc2xfY2FfZmlsZT1jZXJ0cy5jYS5jZXJ0cGF0aCwK KyAgICAgICAgICAgICAgICBzc2xfY2VydF9maWxlPWNlcnRzLnNlcnZlci5jZXJ0cGF0aCwKKyAg ICAgICAgICAgICAgICBzc2xfa2V5X2ZpbGU9Y2VydHMuc2VydmVyLmtleXBhdGgsCisgICAgICAg ICAgICApCisKKyAgICAgICAgICAgICMgUmVqZWN0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBz LmhiYS5wcmVwZW5kKCJob3N0c3NsIGFsbCBhbGwgYWxsIHJlamVjdCIpCisKKyAgICBleGNlcHQg c3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICMgVGhpcyBpcyBhIGRlY2Vu dCBwbGFjZSB0byBza2lwIGlmIHRoZSBzZXJ2ZXIgaXNuJ3Qgc2V0IHVwIGZvciBTU0wuCisgICAg ICAgIGxvZ3BhdGggPSBkYXRhZGlyIC8gInBvc3RncmVzcWwubG9nIgorICAgICAgICB1bnN1cHBv cnRlZCA9IHJlLmNvbXBpbGUoIlNTTCBpcyBub3Qgc3VwcG9ydGVkIikKKworICAgICAgICB3aXRo IG9wZW4obG9ncGF0aCwgInIiKSBhcyBsb2c6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsb2c6 CisgICAgICAgICAgICAgICAgaWYgdW5zdXBwb3J0ZWQuc2VhcmNoKGxpbmUpOgorICAgICAgICAg ICAgICAgICAgICBweXRlc3Quc2tpcCgidGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNTTCIp CisKKyAgICAgICAgIyBTb21lIG90aGVyIGVycm9yIGhhcHBlbmVkLgorICAgICAgICByYWlzZQor CisgICAgdXNlcnMgPSBwZ19zZXJ2ZXJfc2Vzc2lvbi5jcmVhdGVfdXNlcnMoCisgICAgICAgICJz c2wiLAorICAgICkKKworICAgIGRicyA9IHBnX3NlcnZlcl9zZXNzaW9uLmNyZWF0ZV9kYnMoCisg ICAgICAgICJzc2wiLAorICAgICkKKworICAgIHJldHVybiAodXNlcnMsIGRicykKKworCitAcHl0 ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgY2xpZW50X2NlcnQoc3NsX3NldHVwLCBj ZXJ0cyk6CisgICAgIiIiCisgICAgQ3JlYXRlcyBhIENlcnQgZm9yIHRoZSAic3NsIiB1c2VyLgor ICAgICIiIgorICAgIGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5CisgICAgZnJvbSBjcnlw dG9ncmFwaHkueDUwOS5vaWQgaW1wb3J0IE5hbWVPSUQKKworICAgIHVzZXJzLCBfID0gc3NsX3Nl dHVwCisgICAgdXNlciA9IHVzZXJzWyJzc2wiXQorCisgICAgcmV0dXJuIGNlcnRzLm5ldyh4NTA5 Lk5hbWUoW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1FLCB1c2VyKV0pKQor CisKK0BweXRlc3QuZml4dHVyZQorZGVmIHBnX3NlcnZlcihwZ19zZXJ2ZXJfc2Vzc2lvbik6Cisg ICAgIiIiCisgICAgQSBwZXItdGVzdCBpbnN0YW5jZSBvZiBwZ19zZXJ2ZXJfc2Vzc2lvbi4gVXNl IHRoaXMgZml4dHVyZSB0byBtYWtlIGNoYW5nZXMKKyAgICB0byB0aGUgc2VydmVyIHdoaWNoIHdp bGwgYmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBldmVyeSB0ZXN0LgorICAgICIiIgorICAg IHdpdGggcGdfc2VydmVyX3Nlc3Npb24uc3ViY29udGV4dCgpIGFzIHM6CisgICAgICAgIHlpZWxk IHMKKworCisjCisjIFRlc3RzCisjCisKKworIyBGb3IgdXNlIHdpdGggdGhlIGBjcmVkc2AgcGFy YW1ldGVyIGJlbG93LgorQ0xJRU5UID0gImNsaWVudCIKK1NFUlZFUiA9ICJzZXJ2ZXIiCisKKwor QHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICMgZm10OiBvZmYKKyAgICAiYXV0aF9tZXRo b2QsICAgICAgICAgICAgICAgICAgICBjcmVkcywgIGV4cGVjdGVkX2Vycm9yIiwKK1sKKyAgICAj IFRydXN0IGFsbG93cyBhbnl0aGluZy4KKyAgICAoInRydXN0IiwgICAgICAgICAgICAgICAgICAg ICAgICBOb25lLCAgIE5vbmUpLAorICAgICgidHJ1c3QiLCAgICAgICAgICAgICAgICAgICAgICAg IENMSUVOVCwgTm9uZSksCisgICAgKCJ0cnVzdCIsICAgICAgICAgICAgICAgICAgICAgICAgU0VS VkVSLCBOb25lKSwKKworICAgICMgdmVyaWZ5LWNhIGFsbG93cyBhbnkgQ0Etc2lnbmVkIGNlcnRp ZmljYXRlLgorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJpZnktY2EiLCAgIE5vbmUsICAgInJl cXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRj ZXJ0PXZlcmlmeS1jYSIsICAgQ0xJRU5ULCBOb25lKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9 dmVyaWZ5LWNhIiwgICBTRVJWRVIsIE5vbmUpLAorCisgICAgIyBjZXJ0IGFuZCB2ZXJpZnktZnVs bCBhbGxvdyBvbmx5IHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlLgorICAgICgidHJ1c3QgY2xpZW50 Y2VydD12ZXJpZnktZnVsbCIsIE5vbmUsICAgInJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRp ZmljYXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0PXZlcmlmeS1mdWxsIiwgQ0xJRU5ULCBO b25lKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLCBTRVJWRVIsICJhdXRo ZW50aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIiKSwKKyAgICAoImNlcnQiLCAgICAgICAgICAgICAg ICAgICAgICAgICBOb25lLCAgICJyZXF1aXJlcyBhIHZhbGlkIGNsaWVudCBjZXJ0aWZpY2F0ZSIp LAorICAgICgiY2VydCIsICAgICAgICAgICAgICAgICAgICAgICAgIENMSUVOVCwgTm9uZSksCisg ICAgKCJjZXJ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVSLCAiYXV0aGVudGljYXRp b24gZmFpbGVkIGZvciB1c2VyIiksCitdLAorICAgICMgZm10OiBvbgorKQorZGVmIHRlc3RfZGly ZWN0X3NzbF9jZXJ0aWZpY2F0ZV9hdXRoZW50aWNhdGlvbigKKyAgICBwZ19zZXJ2ZXIsCisgICAg c3NsX3NldHVwLAorICAgIGNlcnRzLAorICAgIGNsaWVudF9jZXJ0LAorICAgIHJlbWFpbmluZ190 aW1lb3V0LAorICAgICMgdGVzdCBwYXJhbWV0ZXJzCisgICAgYXV0aF9tZXRob2QsCisgICAgY3Jl ZHMsCisgICAgZXhwZWN0ZWRfZXJyb3IsCispOgorICAgICIiIgorICAgIFRlc3RzIGRpcmVjdCBT U0wgY29ubmVjdGlvbnMgd2l0aCB2YXJpb3VzIGNsaWVudC1jZXJ0aWZpY2F0ZS9IQkEKKyAgICBj b21iaW5hdGlvbnMuCisgICAgIiIiCisKKyAgICAjIFNldCB1cCB0aGUgSEJBIGFzIGRlc2lyZWQg YnkgdGhlIHRlc3QuCisgICAgdXNlcnMsIGRicyA9IHNzbF9zZXR1cAorCisgICAgdXNlciA9IHVz ZXJzWyJzc2wiXQorICAgIGRiID0gZGJzWyJzc2wiXQorCisgICAgd2l0aCBwZ19zZXJ2ZXIucmVs b2FkaW5nKCkgYXMgczoKKyAgICAgICAgcy5oYmEucHJlcGVuZCgKKyAgICAgICAgICAgIFsiaG9z dHNzbCIsIGRiLCB1c2VyLCAiMTI3LjAuMC4xLzMyIiwgYXV0aF9tZXRob2RdLAorICAgICAgICAg ICAgWyJob3N0c3NsIiwgZGIsIHVzZXIsICI6OjEvMTI4IiwgYXV0aF9tZXRob2RdLAorICAgICAg ICApCisKKyAgICAjIENvbmZpZ3VyZSB0aGUgU1NMIHNldHRpbmdzIGZvciB0aGUgY2xpZW50Lgor ICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgIGN0 eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPWNlcnRzLmNhLmNlcnRwYXRoKQorICAgIGN0 eC5zZXRfYWxwbl9wcm90b2NvbHMoWyJwb3N0Z3Jlc3FsIl0pICAjIGZvciBkaXJlY3QgU1NMCisK KyAgICAjIExvYWQgdXAgYSBjbGllbnQgY2VydGlmaWNhdGUgaWYgcmVxdWlyZWQgYnkgdGhlIHRl c3QuCisgICAgaWYgY3JlZHMgPT0gQ0xJRU5UOgorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWlu KGNsaWVudF9jZXJ0LmNlcnRwYXRoLCBjbGllbnRfY2VydC5rZXlwYXRoKQorICAgIGVsaWYgY3Jl ZHMgPT0gU0VSVkVSOgorICAgICAgICAjIFVzaW5nIGEgc2VydmVyIGNlcnRpZmljYXRlIGFzIHRo ZSBjbGllbnQgY3JlZGVudGlhbCBpcyBleHBlY3RlZCB0bworICAgICAgICAjIHdvcmsgb25seSBm b3IgY2xpZW50Y2VydD12ZXJpZnktY2EgKGFuZCBgdHJ1c3RgLCBuYXR1cmFsbHkpLgorICAgICAg ICBjdHgubG9hZF9jZXJ0X2NoYWluKGNlcnRzLnNlcnZlci5jZXJ0cGF0aCwgY2VydHMuc2VydmVy LmtleXBhdGgpCisKKyAgICAjIE1ha2UgYSBkaXJlY3QgU1NMIGNvbm5lY3Rpb24uIFRoZXJlJ3Mg bm8gU1NMUmVxdWVzdCBpbiB0aGUgaGFuZHNoYWtlOyB3ZQorICAgICMgc2ltcGx5IHdyYXAgYSBU Q1AgY29ubmVjdGlvbiB3aXRoIE9wZW5TU0wuCisgICAgYWRkciA9IChwZ19zZXJ2ZXIuY29ubmlu Zm9bImhvc3RhZGRyIl0sIHBnX3NlcnZlci5jb25uaW5mb1sicG9ydCJdKQorICAgIHdpdGggc29j a2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpIGFzIHM6CisgICAgICAgIHMuc2V0dGltZW91dChy ZW1haW5pbmdfdGltZW91dCgpKSAgIyBYWFggdGhpcyByZXNldHMgZXZlcnkgb3BlcmF0aW9uCisK KyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQocywgc2VydmVyX2hvc3RuYW1lPWNlcnRzLnNl cnZlcl9ob3N0KSBhcyBjb25uOgorICAgICAgICAgICAgIyBCdWlsZCBhbmQgc2VuZCB0aGUgc3Rh cnR1cCBwYWNrZXQuCisgICAgICAgICAgICBzdGFydHVwX29wdGlvbnMgPSBkaWN0KAorICAgICAg ICAgICAgICAgIHVzZXI9dXNlciwKKyAgICAgICAgICAgICAgICBkYXRhYmFzZT1kYiwKKyAgICAg ICAgICAgICAgICBhcHBsaWNhdGlvbl9uYW1lPSJweXRlc3QiLAorICAgICAgICAgICAgKQorCisg ICAgICAgICAgICBwYXlsb2FkID0gYiIiCisgICAgICAgICAgICBmb3IgaywgdiBpbiBzdGFydHVw X29wdGlvbnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9IGsuZW5jb2RlKCkg KyBiIlwwIgorICAgICAgICAgICAgICAgIHBheWxvYWQgKz0gc3RyKHYpLmVuY29kZSgpICsgYiJc MCIKKyAgICAgICAgICAgIHBheWxvYWQgKz0gYiJcMCIgICMgbnVsbCB0ZXJtaW5hdG9yCisKKyAg ICAgICAgICAgIHBrdGxlbiA9IDQgKyA0ICsgbGVuKHBheWxvYWQpCisgICAgICAgICAgICBjb25u LnNlbmQoc3RydWN0LnBhY2soIiFJSEgiLCBwa3RsZW4sIDMsIDApICsgcGF5bG9hZCkKKworICAg ICAgICAgICAgaWYgbm90IGV4cGVjdGVkX2Vycm9yOgorICAgICAgICAgICAgICAgICMgRXhwZWN0 IGFuIEF1dGhlbnRpY2F0aW9uT0sgdG8gY29tZSBiYWNrLgorICAgICAgICAgICAgICAgIHBrdHR5 cGUsIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAg ICAgICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIlIiCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBr dGxlbiA9PSA4CisKKyAgICAgICAgICAgICAgICBhdXRobl9yZXN1bHQgPSBzdHJ1Y3QudW5wYWNr KCIhSSIsIGNvbm4ucmVjdig0KSlbMF0KKyAgICAgICAgICAgICAgICBhc3NlcnQgYXV0aG5fcmVz dWx0ID09IDAKKworICAgICAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCB0byBSZWFkeUZv clF1ZXJ5LgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAg IHBrdHR5cGUsIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAg ICAgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNvbm4ucmVjdihwa3RsZW4gLSA0KQorCisgICAg ICAgICAgICAgICAgICAgIGlmIHBrdHR5cGUgPT0gYiJaIjoKKyAgICAgICAgICAgICAgICAgICAg ICAgIGFzc2VydCBwYXlsb2FkID09IGIiSSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr CisKKyAgICAgICAgICAgICAgICAjIFNlbmQgYW4gZW1wdHkgcXVlcnkuCisgICAgICAgICAgICAg ICAgY29ubi5zZW5kKHN0cnVjdC5wYWNrKCIhY0kiLCBiIlEiLCA1KSArIGIiXDAiKQorCisgICAg ICAgICAgICAgICAgIyBFeHBlY3QgRW1wdHlRdWVyeVJlc3BvbnNlK1JlYWR5Rm9yUXVlcnkuCisg ICAgICAgICAgICAgICAgcGt0dHlwZSwgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29u bi5yZWN2KDUpKQorICAgICAgICAgICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiSSIKKyAgICAg ICAgICAgICAgICBhc3NlcnQgcGt0bGVuID09IDQKKworICAgICAgICAgICAgICAgIHBrdHR5cGUs IHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAgICAg ICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIloiCisKKyAgICAgICAgICAgICAgICBwYXlsb2FkID0g Y29ubi5yZWN2KHBrdGxlbiAtIDQpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBheWxvYWQgPT0g YiJJIgorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgTWF0Y2ggdGhlIGV4 cGVjdGVkIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgICAgICAgICAgICAgIHBrdHR5cGUsIHBr dGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAgICAgICAg ICBhc3NlcnQgcGt0dHlwZSA9PSBiIkUiCisKKyAgICAgICAgICAgICAgICBwYXlsb2FkID0gY29u bi5yZWN2KHBrdGxlbiAtIDQpCisgICAgICAgICAgICAgICAgbXNnID0gTm9uZQorCisgICAgICAg ICAgICAgICAgZm9yIGNvbXBvbmVudCBpbiBwYXlsb2FkLnNwbGl0KGIiXDAiKToKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90IGNvbXBvbmVudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrICAjIGVuZCBvZiBtZXNzYWdlCisKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBj b21wb25lbnRbOjFdLCBjb21wb25lbnRbMTpdCisgICAgICAgICAgICAgICAgICAgIGlmIGtleSA9 PSBiIlMiOgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbCA9PSBiIkZBVEFMIgor ICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSBiIk0iOgorICAgICAgICAgICAgICAgICAg ICAgICAgbXNnID0gdmFsLmRlY29kZSgpCisKKyAgICAgICAgICAgICAgICBhc3NlcnQgcmUuc2Vh cmNoKGV4cGVjdGVkX2Vycm9yLCBtc2cpLCAic2VydmVyIGVycm9yIGRpZCBub3QgbWF0Y2giCisK KyAgICAgICAgICAgICMgVGVybWluYXRlLgorICAgICAgICAgICAgY29ubi5zZW5kKHN0cnVjdC5w YWNrKCIhY0kiLCBiIlgiLCA0KSkKLS0gCjIuMzQuMQoK --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0005-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch" Content-Disposition: attachment; filename="v2-0005-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkvggq4 RnJvbSBjYjhhMGEwOWE4MWU3YTBhMjIyMDczOThkMDM4ZGRiM2Y3MjdiNDczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyIFNlcCAyMDI1IDE1OjM3OjUzIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MiA1LzZdIGNpOiBBZGQgTVRFU1RfU1VJVEVTIGZvciBvcHRpb25hbCB0ZXN0IHRh aWxvcmluZwoKU2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIGNvbnRyb2wgdGhlIHRlc3QgY3ljbGUg dGltZSBmb3IgQ2lycnVzLiBBZGQgdGhlCmRlc2lyZWQgc3VpdGVzIChyZW1lbWJlcmluZyBgLS1z dWl0ZSBzZXR1cGAhKSB0byB0aGUgdG9wLWxldmVsIGVudnZhci4KLS0tCiAuY2lycnVzLnRhc2tz LnltbCB8IDE1ICsrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS8uY2lycnVzLnRhc2tzLnltbCBiLy5jaXJy dXMudGFza3MueW1sCmluZGV4IDRlNzQ0ZjFjMTA1Li43MDZhODA5ZjY0MSAxMDA2NDQKLS0tIGEv LmNpcnJ1cy50YXNrcy55bWwKKysrIGIvLmNpcnJ1cy50YXNrcy55bWwKQEAgLTI4LDYgKzI4LDcg QEAgZW52OgogICAjIGVycm9ycy93YXJuaW5ncyBpbiBvbmUgcGxhY2UuCiAgIE1CVUlMRF9UQVJH RVQ6IGFsbCB0ZXN0cHJlcAogICBNVEVTVF9BUkdTOiAtLXByaW50LWVycm9ybG9ncyAtLW5vLXJl YnVpbGQgLUMgYnVpbGQKKyAgTVRFU1RfU1VJVEVTOiAjIC0tc3VpdGUgc2V0dXAgLS1zdWl0ZSBz c2wgLS1zdWl0ZSAuLi4KICAgUEdDVExUSU1FT1VUOiAxMjAgIyBhdm9pZHMgc3B1cmlvdXMgZmFp bHVyZXMgZHVyaW5nIHBhcmFsbGVsIHRlc3RzCiAgIFRFTVBfQ09ORklHOiAke0NJUlJVU19XT1JL SU5HX0RJUn0vc3JjL3Rvb2xzL2NpL3BnX2NpX2Jhc2UuY29uZgogICBQR19URVNUX0VYVFJBOiBr ZXJiZXJvcyBsZGFwIHNzbCBsaWJwcV9lbmNyeXB0aW9uIGxvYWRfYmFsYW5jZSBvYXV0aApAQCAt MjQ3LDcgKzI0OCw3IEBAIHRhc2s6CiAgIHRlc3Rfd29ybGRfc2NyaXB0OiB8CiAgICAgc3UgcG9z dGdyZXMgPDwtRU9GCiAgICAgICB1bGltaXQgLWMgdW5saW1pdGVkCi0gICAgICBtZXNvbiB0ZXN0 ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30KKyAgICAgIG1lc29uIHRl c3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfSAke01URVNUX1NVSVRF U30KICAgICBFT0YKIAogICAjIHRlc3QgcnVubmluZ2NoZWNrLCBmcmVlYnNkIGNob3NlbiBiZWNh dXNlIGl0J3MgY3VycmVudGx5IGZhc3QgZW5vdWdoCkBAIC0zOTEsNyArMzkyLDcgQEAgdGFzazoK ICAgICAgICMgT3RoZXJ3aXNlIHRlc3RzIHdpbGwgZmFpbCBvbiBPcGVuQlNELCBkdWUgdG8gaW5h YmlsaXR5IHRvIHN0YXJ0IGVub3VnaAogICAgICAgIyBwcm9jZXNzZXMuCiAgICAgICB1bGltaXQg LXAgMjU2Ci0gICAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RF U1RfSk9CU30KKyAgICAgIG1lc29uIHRlc3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7 VEVTVF9KT0JTfSAke01URVNUX1NVSVRFU30KICAgICBFT0YKIAogICBvbl9mYWlsdXJlOgpAQCAt NjA1LDcgKzYwNiw3IEBAIHRhc2s6CiAgICAgICB0ZXN0X3dvcmxkX3NjcmlwdDogfAogICAgICAg ICBzdSBwb3N0Z3JlcyA8PC1FT0YKICAgICAgICAgICB1bGltaXQgLWMgdW5saW1pdGVkCi0gICAg ICAgICAgbWVzb24gdGVzdCAkTVRFU1RfQVJHUyAtLW51bS1wcm9jZXNzZXMgJHtURVNUX0pPQlN9 CisgICAgICAgICAgbWVzb24gdGVzdCAkTVRFU1RfQVJHUyAtLW51bS1wcm9jZXNzZXMgJHtURVNU X0pPQlN9ICR7TVRFU1RfU1VJVEVTfQogICAgICAgICBFT0YKICAgICAgICAgIyBzbyB0aGF0IHdl IGRvbid0IHVwbG9hZCA2NGJpdCBsb2dzIGlmIDMyYml0IGZhaWxzCiAgICAgICAgIHJtIC1yZiBi dWlsZC8KQEAgLTYxNyw3ICs2MTgsNyBAQCB0YXNrOgogICAgICAgdGVzdF93b3JsZF8zMl9zY3Jp cHQ6IHwKICAgICAgICAgc3UgcG9zdGdyZXMgPDwtRU9GCiAgICAgICAgICAgdWxpbWl0IC1jIHVu bGltaXRlZAotICAgICAgICAgIFBZVEhPTkNPRVJDRUNMT0NBTEU9MCBMQU5HPUMgbWVzb24gdGVz dCAkTVRFU1RfQVJHUyAtQyBidWlsZC0zMiAtLW51bS1wcm9jZXNzZXMgJHtURVNUX0pPQlN9Cisg ICAgICAgICAgUFlUSE9OQ09FUkNFQ0xPQ0FMRT0wIExBTkc9QyBtZXNvbiB0ZXN0ICRNVEVTVF9B UkdTIC1DIGJ1aWxkLTMyIC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30gJHtNVEVTVF9TVUlU RVN9CiAgICAgICAgIEVPRgogCiAgICAgICBvbl9mYWlsdXJlOgpAQCAtNzQzLDcgKzc0NCw3IEBA IHRhc2s6CiAgIHRlc3Rfd29ybGRfc2NyaXB0OiB8CiAgICAgdWxpbWl0IC1jIHVubGltaXRlZCAj IGRlZmF1bHQgaXMgMAogICAgIHVsaW1pdCAtbiAxMDI0ICMgZGVmYXVsdCBpcyAyNTYsIHByZXR0 eSBsb3cKLSAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RFU1Rf Sk9CU30KKyAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RFU1Rf Sk9CU30gJHtNVEVTVF9TVUlURVN9CiAKICAgb25fZmFpbHVyZToKICAgICA8PDogKm9uX2ZhaWx1 cmVfbWVzb24KQEAgLTgyNiw3ICs4MjcsNyBAQCB0YXNrOgogCiAgIGNoZWNrX3dvcmxkX3Njcmlw dDogfAogICAgIHZjdmFyc2FsbCB4NjQKLSAgICBtZXNvbiB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51 bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUKKyAgICBtZXNvbiB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51 bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUgJU1URVNUX1NVSVRFUyUKIAogICBvbl9mYWlsdXJlOgog ICAgIDw8OiAqb25fZmFpbHVyZV9tZXNvbgpAQCAtODg3LDcgKzg4OCw3IEBAIHRhc2s6CiAgIHVw bG9hZF9jYWNoZXM6IGNjYWNoZQogCiAgIHRlc3Rfd29ybGRfc2NyaXB0OiB8Ci0gICAgJUJBU0gl IC1jICJtZXNvbiB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUi CisgICAgJUJBU0glIC1jICJtZXNvbiB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51bS1wcm9jZXNzZXMg JVRFU1RfSk9CUyUgJU1URVNUX1NVSVRFUyUiCiAKICAgb25fZmFpbHVyZToKICAgICA8PDogKm9u X2ZhaWx1cmVfbWVzb24KLS0gCjIuMzQuMQoK --000000000000f3c31a063f69af02 Content-Type: application/octet-stream; name="v2-0006-XXX-run-pytest-and-ssl-suite-all-OSes.patch" Content-Disposition: attachment; filename="v2-0006-XXX-run-pytest-and-ssl-suite-all-OSes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfvkvjj75 RnJvbSA1ZDk1YjUxN2Y2ZWMzOTkxNTBlNTZjZjQwZjY4ODQzMzMxZDg5ZjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyIFNlcCAyMDI1IDE1OjM4OjUyIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MiA2LzZdIFhYWCBydW4gcHl0ZXN0IGFuZCBzc2wgc3VpdGUsIGFsbCBPU2VzCgot LS0KIC5jaXJydXMuc3RhciAgICAgIHwgMiArLQogLmNpcnJ1cy50YXNrcy55bWwgfCAyICstCiAy IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS8uY2lycnVzLnN0YXIgYi8uY2lycnVzLnN0YXIKaW5kZXggZTliYjY3MmI5NTkuLjdjMWNh YWExMmYxIDEwMDY0NAotLS0gYS8uY2lycnVzLnN0YXIKKysrIGIvLmNpcnJ1cy5zdGFyCkBAIC03 Myw3ICs3Myw3IEBAIGRlZiBjb21wdXRlX2Vudmlyb25tZW50X3ZhcnMoKToKICAgICAjIFJFUE9f Q0lfQVVUT01BVElDX1RSSUdHRVJfVEFTS1M9InRhc2tfbmFtZSBvdGhlcl90YXNrIiB1bmRlciAi UmVwb3NpdG9yeQogICAgICMgU2V0dGluZ3MiIG9uIENpcnJ1cyBDSSdzIHdlYnNpdGUuCiAKLSAg ICBkZWZhdWx0X21hbnVhbF90cmlnZ2VyX3Rhc2tzID0gWydtaW5ndycsICduZXRic2QnLCAnb3Bl bmJzZCddCisgICAgZGVmYXVsdF9tYW51YWxfdHJpZ2dlcl90YXNrcyA9IFtdCiAKICAgICByZXBv X2NpX2F1dG9tYXRpY190cmlnZ2VyX3Rhc2tzID0gZW52LmdldCgnUkVQT19DSV9BVVRPTUFUSUNf VFJJR0dFUl9UQVNLUycsICcnKQogICAgIGZvciB0YXNrIGluIGRlZmF1bHRfbWFudWFsX3RyaWdn ZXJfdGFza3M6CmRpZmYgLS1naXQgYS8uY2lycnVzLnRhc2tzLnltbCBiLy5jaXJydXMudGFza3Mu eW1sCmluZGV4IDcwNmE4MDlmNjQxLi5kZGI1MzA1ZGM4MSAxMDA2NDQKLS0tIGEvLmNpcnJ1cy50 YXNrcy55bWwKKysrIGIvLmNpcnJ1cy50YXNrcy55bWwKQEAgLTI4LDcgKzI4LDcgQEAgZW52Ogog ICAjIGVycm9ycy93YXJuaW5ncyBpbiBvbmUgcGxhY2UuCiAgIE1CVUlMRF9UQVJHRVQ6IGFsbCB0 ZXN0cHJlcAogICBNVEVTVF9BUkdTOiAtLXByaW50LWVycm9ybG9ncyAtLW5vLXJlYnVpbGQgLUMg YnVpbGQKLSAgTVRFU1RfU1VJVEVTOiAjIC0tc3VpdGUgc2V0dXAgLS1zdWl0ZSBzc2wgLS1zdWl0 ZSAuLi4KKyAgTVRFU1RfU1VJVEVTOiAtLXN1aXRlIHNldHVwIC0tc3VpdGUgcHl0ZXN0IC0tc3Vp dGUgc3NsCiAgIFBHQ1RMVElNRU9VVDogMTIwICMgYXZvaWRzIHNwdXJpb3VzIGZhaWx1cmVzIGR1 cmluZyBwYXJhbGxlbCB0ZXN0cwogICBURU1QX0NPTkZJRzogJHtDSVJSVVNfV09SS0lOR19ESVJ9 L3NyYy90b29scy9jaS9wZ19jaV9iYXNlLmNvbmYKICAgUEdfVEVTVF9FWFRSQToga2VyYmVyb3Mg bGRhcCBzc2wgbGlicHFfZW5jcnlwdGlvbiBsb2FkX2JhbGFuY2Ugb2F1dGgKLS0gCjIuMzQuMQoK --000000000000f3c31a063f69af02--