Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ehkAZ-0005Lu-HU for pgadmin-hackers@arkaria.postgresql.org; Fri, 02 Feb 2018 22:50:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ehkAW-0003mY-M1 for pgadmin-hackers@arkaria.postgresql.org; Fri, 02 Feb 2018 22:50:52 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ehkAV-0003mO-MO for pgadmin-hackers@lists.postgresql.org; Fri, 02 Feb 2018 22:50:52 +0000 Received: from mail-it0-x22c.google.com ([2607:f8b0:4001:c0b::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ehkAM-0001YQ-QC for pgadmin-hackers@postgresql.org; Fri, 02 Feb 2018 22:50:49 +0000 Received: by mail-it0-x22c.google.com with SMTP id h129so9683398ita.2 for ; Fri, 02 Feb 2018 14:50:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=XQFT/EZJqt0h+09HVo7H/zLy40nXAOnmCe7o6636w3k=; b=wLMG0FPM+uGGDXt/n9lffIsg5eT1OLT0vk09Omqru946m7AngXcl9nupuRclCh9qep M9qaVCdX9rm+HCCG5LsamUEjE4Kj7KLw0oPOook2a5RtG2lFA/1kF3Nrv7B+Sp18bSkg EvPIgcN6gZsu87V/Fp2W6CSKf+ENiwaHnUHnmRYwbhpDQJbjjkmziybMjO544WaueEcu wz5qPD1XTWV13MfMM3M/WXMcofNdKe/kckAwdsdlZD5qGW1RDkzI0HT82UDL+Yhy1TU0 Vj/cmV5SLKv3lpToI5M0ge+7vdtSNIHjiI8ES4N/dPv5BiWqJhJFJfAyIpyNxOM+e4ug u3tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=XQFT/EZJqt0h+09HVo7H/zLy40nXAOnmCe7o6636w3k=; b=ExMCHbu2VhZSWA6Hjw5cFJHBRl7RtjnHtOJ385APXW+N2oiKUNmpQFsfgpjfdR9ae1 7h3hCE6fdiee70hFe+uWtrLGzV9UwyhzbmZbK6agFaWxrgzyOC99JiXOoECez7GZLWMk /gXS6kkxLS/3WuNV5G/4T7NgffDvFUAzUpEzm+FaDls3w7xwZh/mpbMVKKFQFqoOMx6m whSFm2xSxrawxCCqNi3c/fQksi4yUfo+N7y6ure0rwCMuJ4uSRPxNxC1iOBZmfBT13pI z6ZX8bUtwd1TtvJv72mqTiR6gyx9TRiVVhZ8ccTFUe5EWR94L1VwfFbAM3enU0+q31ar a7CQ== X-Gm-Message-State: AKwxytcDtSBnSrnFaVe9sjq8Gk/PBM08a6Uet6Uy9RCKx+qEdumChn7F fOFuEaJY7SKTa96/UMwylt41APDMio1fznV1chNf5Q== X-Google-Smtp-Source: AH8x224WPCrz8Nd5lnrGwKioYl0X00j15ZJzQL6p3iYTEwc9fBJ0rZBkx6TIoxLDD2/sBbrdkODPQYNHoA7hiN+7rr4= X-Received: by 10.36.52.8 with SMTP id z8mr45562603itz.130.1517611841486; Fri, 02 Feb 2018 14:50:41 -0800 (PST) MIME-Version: 1.0 From: Joao De Almeida Pereira Date: Fri, 02 Feb 2018 22:50:30 +0000 Message-ID: Subject: [pgadmin][patch] [GreenPlum] When user press Explain Plan and Explain analyze plan an error is displayed To: pgadmin-hackers Content-Type: multipart/mixed; boundary="001a114752ceb85a4f0564428a1c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a114752ceb85a4f0564428a1c Content-Type: multipart/alternative; boundary="001a114752ceb85a4c0564428a1a" --001a114752ceb85a4c0564428a1a Content-Type: text/plain; charset="UTF-8" Hi Hackers, This is quite a big patch in order to solve the problem with the Explain Plan. We sent 2 patches that have the following: *- update-javascript-packages.diff * Add package: is-docker to select a specific setting when running the Chrome tests in Docker Upgrade the version of: - babel-loader - extract-text-webpack-plugin - jasmine-core - jasmine-enzyme - moment *- explain-plan-greenplum.diff* Extract SQLEditor.execute and SQLEditor._poll into their own files and add test around them Extract SQLEditor backend functions that start executing query to their own files and add tests around it Move the Explain SQL from the front-end and now pass the Explain plan parameters as a JSON object in the start query call. Extract the compile_template_name into a function that can be used by the different places that try to select the version of the template and the server type Thanks Joao --001a114752ceb85a4c0564428a1a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,
This is quite a big patch in order to solv= e the problem with the Explain Plan.

We sent 2 pat= ches that have the following:
-=C2=A0update-javascript-package= s.diff=C2=A0
=C2=A0 =C2=A0 Add package:
= =C2=A0 =C2=A0 =C2=A0is-docker to select a specific setting when running the= Chrome tests in
=C2=A0 =C2=A0 =C2=A0Docker

<= div>=C2=A0 =C2=A0 Upgrade the version of:
=C2=A0 =C2=A0 - babel-l= oader
=C2=A0 =C2=A0 - extract-text-webpack-plugin
=C2= =A0 =C2=A0 - jasmine-core
=C2=A0 =C2=A0 - jasmine-enzyme
=C2=A0 =C2=A0 - moment
-=C2=A0explain-plan-greenplum.d= iff
=C2=A0 Extract SQLEditor.execute and SQLEditor._poll into= their own files and add test around them
=C2=A0 Extract SQLEdito= r backend functions that start executing query to their own files and add t= ests around it
=C2=A0 Move the Explain SQL from the front-end and= now pass the Explain plan parameters as a JSON object in the start query c= all.
=C2=A0 Extract the compile_template_name into a function tha= t can be used by the different places that try to select the version of the= template and the server type


Thank= s
Joao
--001a114752ceb85a4c0564428a1a-- --001a114752ceb85a4f0564428a1c Content-Type: application/octet-stream; name="explain-plan-greenplum.diff" Content-Disposition: attachment; filename="explain-plan-greenplum.diff" Content-Transfer-Encoding: base64 Content-ID: <16158b669a6ac7c15ca1> X-Attachment-Id: 16158b669a6ac7c15ca1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmU2 OWRlMjliCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1 dGVfcXVlcnkuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVl cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmU5MWM5ZTg1Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9leGVjdXRlX3F1 ZXJ5LmpzCkBAIC0wLDAgKzEsMjg3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor CitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi9nZXR0ZXh0JzsKK2ltcG9ydCAkIGZyb20gJ2pxdWVy eSc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi91cmxfZm9yJzsKK2ltcG9ydCBheGlvcyBmcm9t ICdheGlvcyc7CitpbXBvcnQgKiBhcyB0cmFuc2FjdGlvbiBmcm9tICcuL2lzX25ld190cmFuc2Fj dGlvbl9yZXF1aXJlZCc7CisKK2NsYXNzIExvYWRpbmdTY3JlZW4geworICBjb25zdHJ1Y3Rvcihz cWxFZGl0b3IpIHsKKyAgICB0aGlzLnNxbEVkaXRvciA9IHNxbEVkaXRvcjsKKyAgfQorCisgIHNl dE1lc3NhZ2UobWVzc2FnZSkgeworICAgIHRoaXMuc3FsRWRpdG9yLnRyaWdnZXIoCisgICAgICAn cGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOm1lc3NhZ2UnLAorICAgICAgZ2V0dGV4dCht ZXNzYWdlKQorICAgICk7CisgIH0KKworICBzaG93KHdpdGhNZXNzYWdlKSB7CisgICAgdGhpcy5z cWxFZGl0b3IudHJpZ2dlcigKKyAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246 c2hvdycsCisgICAgICB3aXRoTWVzc2FnZQorICAgICk7CisgIH0KKworICBoaWRlKCkgeworICAg IHRoaXMuc3FsRWRpdG9yLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpo aWRlJyk7CisgIH0KK30KKworY2xhc3MgRXhlY3V0ZVF1ZXJ5IHsKKyAgY29uc3RydWN0b3Ioc3Fs RWRpdG9yLCB1c2VyTWFuYWdlbWVudCkgeworICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0ID0gc3Fs RWRpdG9yOworICAgIHRoaXMubG9hZGluZ1NjcmVlbiA9IG5ldyBMb2FkaW5nU2NyZWVuKHNxbEVk aXRvcik7CisgICAgdGhpcy51c2VyTWFuYWdlbWVudCA9IHVzZXJNYW5hZ2VtZW50OworICB9CisK KyAgZGVsYXllZFBvbGwoKSB7CisgICAgY29uc3Qgc2VsZiA9IHRoaXM7CisgICAgc2V0VGltZW91 dCgKKyAgICAgICgpID0+IHsKKyAgICAgICAgc2VsZi5wb2xsKCk7CisgICAgICB9LCBzZWxmLnNx bFNlcnZlck9iamVjdC5QT0xMX0ZBTExCQUNLX1RJTUUoKSk7CisgIH0KKworICBleGVjdXRlKHNx bFN0YXRlbWVudCwgZXhwbGFpblBsYW4pIHsKKyAgICAvLyBJZiBpdCBpcyBhbiBlbXB0eSBxdWVy eSwgZG8gbm90aGluZy4KKyAgICBpZiAoc3FsU3RhdGVtZW50Lmxlbmd0aCA8PSAwKSByZXR1cm47 CisKKyAgICBjb25zdCBzZWxmID0gdGhpczsKKyAgICBsZXQgc2VydmljZSA9IGF4aW9zLmNyZWF0 ZSh7fSk7CisgICAgc2VsZi5leHBsYWluUGxhbiA9IGV4cGxhaW5QbGFuOworCisgICAgY29uc3Qg c3FsU3RhdGVtZW50V2l0aEFuYWx5emUgPSBFeGVjdXRlUXVlcnkucHJlcGFyZUFuYWx5emVTcWwo c3FsU3RhdGVtZW50LCBleHBsYWluUGxhbik7CisKKyAgICBzZWxmLmluaXRpYWxpemVFeGVjdXRp b25PblNxbEVkaXRvcihzcWxTdGF0ZW1lbnRXaXRoQW5hbHl6ZSk7CisKKyAgICBzZXJ2aWNlLnBv c3QoCisgICAgICB1cmxfZm9yKCdzcWxlZGl0b3IucXVlcnlfdG9vbF9zdGFydCcsIHsKKyAgICAg ICAgJ3RyYW5zX2lkJzogc2VsZi5zcWxTZXJ2ZXJPYmplY3QudHJhbnNJZCwKKyAgICAgIH0pLAor ICAgICAgSlNPTi5zdHJpbmdpZnkoc3FsU3RhdGVtZW50V2l0aEFuYWx5emUpLAorICAgICAge2hl YWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nfX0pCisgICAgICAudGhl bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIGxldCBodHRwTWVzc2FnZURhdGEgPSByZXN1 bHQuZGF0YTsKKyAgICAgICAgc2VsZi5yZW1vdmVHcmlkVmlld01hcmtlcigpOworCisgICAgICAg IGlmIChFeGVjdXRlUXVlcnkuaXNTcWxDb3JyZWN0KGh0dHBNZXNzYWdlRGF0YSkpIHsKKyAgICAg ICAgICBzZWxmLmxvYWRpbmdTY3JlZW4uc2V0TWVzc2FnZSgnV2FpdGluZyBmb3IgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiB0byBjb21wbGV0ZS4uLicpOworCisgICAgICAgICAgc2VsZi51cGRhdGVTcWxF ZGl0b3JTdGF0ZVdpdGhJbmZvcm1hdGlvbkZyb21TZXJ2ZXIoaHR0cE1lc3NhZ2VEYXRhLmRhdGEp OworCisgICAgICAgICAgLy8gSWYgc3RhdHVzIGlzIFRydWUgdGhlbiBwb2xsIHRoZSByZXN1bHQu CisgICAgICAgICAgc2VsZi5kZWxheWVkUG9sbCgpOworICAgICAgICB9IGVsc2UgeworICAgICAg ICAgIHNlbGYubG9hZGluZ1NjcmVlbi5oaWRlKCk7CisgICAgICAgICAgc2VsZi5lbmFibGVTUUxF ZGl0b3JCdXR0b25zKCk7CisgICAgICAgICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3QudXBkYXRlX21z Z19oaXN0b3J5KGZhbHNlLCBodHRwTWVzc2FnZURhdGEuZGF0YS5yZXN1bHQpOworCisgICAgICAg ICAgLy8gSGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0aGUgc3FsIHBhbmVsCisgICAgICAgICAgc2Vs Zi5zcWxTZXJ2ZXJPYmplY3QuX2hpZ2hsaWdodF9lcnJvcihodHRwTWVzc2FnZURhdGEuZGF0YS5y ZXN1bHQpOworICAgICAgICB9CisgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAg ICAgICAgc2VsZi5vbkV4ZWN1dGVIVFRQRXJyb3IoZXJyb3IucmVzcG9uc2UuZGF0YSk7CisgICAg ICB9CisgICAgKTsKKyAgfQorCisgIHBvbGwoKSB7CisgICAgY29uc3Qgc2VsZiA9IHRoaXM7Cisg ICAgbGV0IHNlcnZpY2UgPSBheGlvcy5jcmVhdGUoe30pOworICAgIHNlcnZpY2UuZ2V0KAorICAg ICAgdXJsX2Zvcignc3FsZWRpdG9yLnBvbGwnLCB7CisgICAgICAgICd0cmFuc19pZCc6IHNlbGYu c3FsU2VydmVyT2JqZWN0LnRyYW5zSWQsCisgICAgICB9KQorICAgICkudGhlbigKKyAgICAgICho dHRwTWVzc2FnZSkgPT4geworICAgICAgICBpZiAoRXhlY3V0ZVF1ZXJ5LmlzUXVlcnlGaW5pc2hl ZChodHRwTWVzc2FnZSkpIHsKKyAgICAgICAgICBzZWxmLmxvYWRpbmdTY3JlZW4uc2V0TWVzc2Fn ZSgnTG9hZGluZyBkYXRhIGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlciBhbmQgcmVuZGVyaW5nLi4u Jyk7CisKKyAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC5jYWxsX3JlbmRlcl9hZnRlcl9w b2xsKGh0dHBNZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAoRXhlY3V0ZVF1 ZXJ5LmlzUXVlcnlTdGlsbFJ1bm5pbmcoaHR0cE1lc3NhZ2UpKSB7CisgICAgICAgICAgLy8gSWYg c3RhdHVzIGlzIEJ1c3kgdGhlbiBwb2xsIHRoZSByZXN1bHQgYnkgcmVjdXJzaXZlIGNhbGwgdG8g dGhlIHBvbGwgZnVuY3Rpb24KKyAgICAgICAgICB0aGlzLmRlbGF5ZWRQb2xsKCk7CisgICAgICAg ICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3Quc2V0SXNRdWVyeVJ1bm5pbmcodHJ1ZSk7CisgICAgICAg ICAgaWYgKGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5yZXN1bHQpIHsKKyAgICAgICAgICAgIHNlbGYu c3FsU2VydmVyT2JqZWN0LnVwZGF0ZV9tc2dfaGlzdG9yeShodHRwTWVzc2FnZS5kYXRhLmRhdGEu c3RhdHVzLCBodHRwTWVzc2FnZS5kYXRhLmRhdGEucmVzdWx0LCBmYWxzZSk7CisgICAgICAgICAg fQorICAgICAgICB9IGVsc2UgaWYgKEV4ZWN1dGVRdWVyeS5pc0Nvbm5lY3Rpb25Ub1NlcnZlckxv c3RXaGlsZVBvbGxpbmcoaHR0cE1lc3NhZ2UpKSB7CisgICAgICAgICAgc2VsZi5sb2FkaW5nU2Ny ZWVuLmhpZGUoKTsKKyAgICAgICAgICAvLyBFbmFibGUvRGlzYWJsZSBxdWVyeSB0b29sIGJ1dHRv biBvbmx5IGlmIGlzX3F1ZXJ5X3Rvb2wgaXMgdHJ1ZS4KKyAgICAgICAgICBpZiAoc2VsZi5zcWxT ZXJ2ZXJPYmplY3QuaXNfcXVlcnlfdG9vbCkgeworICAgICAgICAgICAgc2VsZi5lbmFibGVTUUxF ZGl0b3JCdXR0b25zKCk7CisgICAgICAgICAgfQorICAgICAgICAgIHNlbGYuc3FsU2VydmVyT2Jq ZWN0LnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwgaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnJlc3Vs dCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoRXhlY3V0ZVF1ZXJ5LmlzUXVlcnlDYW5jZWxs ZWQoaHR0cE1lc3NhZ2UpKSB7CisgICAgICAgICAgc2VsZi5sb2FkaW5nU2NyZWVuLmhpZGUoKTsK KyAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2Us ICdFeGVjdXRpb24gQ2FuY2VsbGVkIScsIHRydWUpOworICAgICAgICB9CisgICAgICB9CisgICAg KS5jYXRjaCgKKyAgICAgIGVycm9yID0+IHsKKyAgICAgICAgY29uc3QgZXJyb3JEYXRhID0gZXJy b3IucmVzcG9uc2UuZGF0YTsKKyAgICAgICAgLy8gRW5hYmxlL0Rpc2FibGUgcXVlcnkgdG9vbCBi dXR0b24gb25seSBpZiBpc19xdWVyeV90b29sIGlzIHRydWUuCisgICAgICAgIHNlbGYuc3FsU2Vy dmVyT2JqZWN0LnJlc2V0UXVlcnlIaXN0b3J5T2JqZWN0KHNlbGYuc3FsU2VydmVyT2JqZWN0KTsK KyAgICAgICAgc2VsZi5sb2FkaW5nU2NyZWVuLmhpZGUoKTsKKyAgICAgICAgaWYgKHNlbGYuc3Fs U2VydmVyT2JqZWN0LmlzX3F1ZXJ5X3Rvb2wpIHsKKyAgICAgICAgICBzZWxmLmVuYWJsZVNRTEVk aXRvckJ1dHRvbnMoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFeGVjdXRlUXVlcnkud2Fz Q29ubmVjdGlvbkxvc3RUb1NlcnZlcihlcnJvckRhdGEpKSB7CisgICAgICAgICAgc2VsZi5oYW5k bGVDb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9 CisgICAgICAgIGlmIChzZWxmLnVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChl cnJvckRhdGEpKSB7CisgICAgICAgICAgcmV0dXJuIHNlbGYudXNlck1hbmFnZW1lbnQucGdhX2xv Z2luKCk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgbXNnID0gRXhlY3V0ZVF1ZXJ5LmV4dHJh Y3RFcnJvck1lc3NhZ2UoZXJyb3JEYXRhKTsKKworICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVj dC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1zZyk7CisgICAgICAgIC8vIEhpZ2hsaWdodCB0 aGUgZXJyb3IgaW4gdGhlIHNxbCBwYW5lbAorICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC5f aGlnaGxpZ2h0X2Vycm9yKG1zZyk7CisgICAgICB9KTsKKyAgfQorCisgIGluaXRpYWxpemVFeGVj dXRpb25PblNxbEVkaXRvcihzcWxTdGF0ZW1lbnQpIHsKKyAgICB0aGlzLmxvYWRpbmdTY3JlZW4u c2hvdygnSW5pdGlhbGl6aW5nIHF1ZXJ5IGV4ZWN1dGlvbi4uLicpOworCisgICAgJCgnI2J0bi1m bGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisKKyAgICB0aGlzLnNxbFNlcnZlck9iamVj dC5xdWVyeV9zdGFydF90aW1lID0gbmV3IERhdGUoKTsKKyAgICBpZih0eXBlb2Ygc3FsU3RhdGVt ZW50ID09PSAnb2JqZWN0JykgeworICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QucXVlcnkgPSBz cWxTdGF0ZW1lbnRbJ3NxbCddOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnNxbFNlcnZlck9i amVjdC5xdWVyeSA9IHNxbFN0YXRlbWVudDsKKyAgICB9CisKKyAgICB0aGlzLnNxbFNlcnZlck9i amVjdC5yb3dzX2FmZmVjdGVkID0gMDsKKyAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5faW5pdF9w b2xsaW5nX2ZsYWdzKCk7CisgICAgdGhpcy5kaXNhYmxlU1FMRWRpdG9yQnV0dG9ucygpOworICB9 CisKKyAgc3RhdGljIHByZXBhcmVBbmFseXplU3FsKHNxbFN0YXRlbWVudCwgYW5hbHl6ZVNxbCkg eworICAgIGxldCBzcWxTdGF0ZW1lbnRXaXRoQW5hbHl6ZSA9IHsKKyAgICAgIHNxbDogc3FsU3Rh dGVtZW50LAorICAgICAgZXhwbGFpbl9wbGFuOiBhbmFseXplU3FsLAorICAgIH07CisgICAgcmV0 dXJuIHNxbFN0YXRlbWVudFdpdGhBbmFseXplOworICB9CisKKyAgb25FeGVjdXRlSFRUUEVycm9y KGh0dHBNZXNzYWdlKSB7CisgICAgdGhpcy5sb2FkaW5nU2NyZWVuLmhpZGUoKTsKKyAgICB0aGlz LmVuYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKKworICAgIGlmIChFeGVjdXRlUXVlcnkud2FzQ29u bmVjdGlvbkxvc3RUb1NlcnZlcihodHRwTWVzc2FnZSkpIHsKKyAgICAgIHRoaXMuaGFuZGxlQ29u bmVjdGlvblRvU2VydmVyTG9zdCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0 aGlzLnVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChodHRwTWVzc2FnZSkpIHsK KyAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LnNhdmVfc3RhdGUoJ2V4ZWN1dGUnLCBbdGhpcy5l eHBsYWluUGxhbl0pOworICAgICAgdGhpcy51c2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKKyAg ICB9CisKKyAgICBpZiAodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGh0 dHBNZXNzYWdlKSkgeworICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3Quc2F2ZV9zdGF0ZSgnZXhl Y3V0ZScsIFt0aGlzLmV4cGxhaW5QbGFuXSk7CisgICAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5p bml0X3RyYW5zYWN0aW9uKCk7CisgICAgfQorCisgICAgbGV0IG1zZyA9IGh0dHBNZXNzYWdlLmVy cm9ybXNnOworICAgIGlmIChodHRwTWVzc2FnZS5yZXNwb25zZUpTT04gIT09IHVuZGVmaW5lZCkg eworICAgICAgaWYgKGh0dHBNZXNzYWdlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZyAhPT0gdW5kZWZp bmVkKSB7CisgICAgICAgIG1zZyA9IGh0dHBNZXNzYWdlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsK KyAgICAgIH0KKworICAgICAgaWYgKGh0dHBNZXNzYWdlLnN0YXR1cyA9PT0gNTAzICYmIGh0dHBN ZXNzYWdlLnJlc3BvbnNlSlNPTi5pbmZvICE9PSB1bmRlZmluZWQgJiYKKyAgICAgICAgaHR0cE1l c3NhZ2UucmVzcG9uc2VKU09OLmluZm8gPT09ICdDT05ORUNUSU9OX0xPU1QnKSB7CisgICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0 LnNhdmVfc3RhdGUoJ2V4ZWN1dGUnLCBbdGhpcy5leHBsYWluUGxhbl0pOworICAgICAgICAgIHRo aXMuc3FsU2VydmVyT2JqZWN0LmhhbmRsZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGh0dHBNZXNz YWdlKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfQorCisgICAgdGhpcy5zcWxTZXJ2ZXJP YmplY3QudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBtc2cpOworICB9CisKKyAgcmVtb3ZlR3Jp ZFZpZXdNYXJrZXIoKSB7CisgICAgaWYgKHRoaXMuc3FsU2VydmVyT2JqZWN0LmdyaWRWaWV3Lm1h cmtlcikgeworICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuZ3JpZFZpZXcubWFya2VyLmNsZWFy KCk7CisgICAgICBkZWxldGUgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuZ3JpZFZpZXcubWFya2VyOwor ICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuZ3JpZFZpZXcubWFya2VyID0gbnVsbDsKKworICAg ICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgbWFya2VyCisgICAgICB0aGlzLnNxbFNlcnZl ck9iamVjdC5ncmlkVmlldy5xdWVyeV90b29sX29iai5yZW1vdmVMaW5lQ2xhc3ModGhpcy5zcWxT ZXJ2ZXJPYmplY3QubWFya2VkX2xpbmVfbm8sICd3cmFwJywgJ0NvZGVNaXJyb3ItYWN0aXZlbGlu ZS1iYWNrZ3JvdW5kJyk7CisgICAgfQorICB9CisKKyAgZW5hYmxlU1FMRWRpdG9yQnV0dG9ucygp IHsKKyAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7 CisgICAgJCgnI2J0bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOworICB9 CisKKyAgZGlzYWJsZVNRTEVkaXRvckJ1dHRvbnMoKSB7CisgICAgdGhpcy5zcWxTZXJ2ZXJPYmpl Y3QuZGlzYWJsZV90b29sX2J1dHRvbnModHJ1ZSk7CisgICAgJCgnI2J0bi1jYW5jZWwtcXVlcnkn KS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKKyAgfQorCisgIHN0YXRpYyB3YXNDb25uZWN0aW9u TG9zdFRvU2VydmVyKGVycm9yTWVzc2FnZSkgeworICAgIHJldHVybiBlcnJvck1lc3NhZ2UucmVh ZHlTdGF0ZSA9PT0gMDsKKyAgfQorCisgIGhhbmRsZUNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKSB7 CisgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLAorICAg ICAgZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9u IHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCisgICAgKTsKKyAgfQorCisgIHVwZGF0 ZVNxbEVkaXRvclN0YXRlV2l0aEluZm9ybWF0aW9uRnJvbVNlcnZlcihtZXNzYWdlRGF0YSkgewor ICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LmNhbl9lZGl0ID0gbWVzc2FnZURhdGEuY2FuX2VkaXQ7 CisgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuY2FuX2ZpbHRlciA9IG1lc3NhZ2VEYXRhLmNhbl9m aWx0ZXI7CisgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuaW5mb19ub3RpZmllcl90aW1lb3V0ID0g bWVzc2FnZURhdGEuaW5mb19ub3RpZmllcl90aW1lb3V0OworICB9CisKKyAgc3RhdGljIGlzU3Fs Q29ycmVjdChodHRwTWVzc2FnZURhdGEpIHsKKyAgICByZXR1cm4gaHR0cE1lc3NhZ2VEYXRhLmRh dGEuc3RhdHVzOworICB9CisKKyAgc3RhdGljIGV4dHJhY3RFcnJvck1lc3NhZ2UoaHR0cE1lc3Nh Z2UpIHsKKyAgICBsZXQgbXNnID0gaHR0cE1lc3NhZ2UuZXJyb3Jtc2c7CisgICAgaWYgKGh0dHBN ZXNzYWdlLnJlc3BvbnNlSlNPTiAhPT0gdW5kZWZpbmVkICYmCisgICAgICBodHRwTWVzc2FnZS5y ZXNwb25zZUpTT04uZXJyb3Jtc2cgIT09IHVuZGVmaW5lZCkKKyAgICAgIG1zZyA9IGh0dHBNZXNz YWdlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKKworICAgIHJldHVybiBtc2c7CisgIH0KKworICBz dGF0aWMgaXNRdWVyeUZpbmlzaGVkKGh0dHBNZXNzYWdlKSB7CisgICAgcmV0dXJuIGh0dHBNZXNz YWdlLmRhdGEuZGF0YS5zdGF0dXMgPT09ICdTdWNjZXNzJzsKKyAgfQorCisgIHN0YXRpYyBpc1F1 ZXJ5U3RpbGxSdW5uaW5nKGh0dHBNZXNzYWdlKSB7CisgICAgcmV0dXJuIGh0dHBNZXNzYWdlLmRh dGEuZGF0YS5zdGF0dXMgPT09ICdCdXN5JzsKKyAgfQorCisgIHN0YXRpYyBpc1F1ZXJ5Q2FuY2Vs bGVkKGh0dHBNZXNzYWdlKSB7CisgICAgcmV0dXJuIGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5zdGF0 dXMgPT09ICdDYW5jZWwnOworICB9CisKKyAgc3RhdGljIGlzQ29ubmVjdGlvblRvU2VydmVyTG9z dFdoaWxlUG9sbGluZyhodHRwTWVzc2FnZSkgeworICAgIHJldHVybiBodHRwTWVzc2FnZS5kYXRh LmRhdGEuc3RhdHVzID09PSAnTm90Q29ubmVjdGVkJzsKKyAgfQorfQorCittb2R1bGUuZXhwb3J0 cyA9IHsKKyAgRXhlY3V0ZVF1ZXJ5OiBFeGVjdXRlUXVlcnksCit9OwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9y ZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOWQ4M2M5MjYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2lzX25l d190cmFuc2FjdGlvbl9yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDE0IEBACisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgZnVuY3Rpb24gaXNfbmV3X3RyYW5zYWN0aW9uX3Jl cXVpcmVkKHhocikgeworICByZXR1cm4geGhyLnN0YXR1cyA9PT0gNDA0ICYmIHhoci5yZXNwb25z ZUpTT04gJiYKKyAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gJiYKKyAgICB4aHIucmVzcG9uc2VK U09OLmluZm8gPT09ICdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCc7Cit9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9ucy5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpz CmluZGV4IDQ0YTY3NGI4Li4wMWQxOTIxNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKQEAgLTIsMTkgKzIsMTkgQEAg aW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIAogbGV0IHF1ZXJ5VG9vbEFjdGlvbnMgPSB7CiAgIF92 ZXJib3NlOiBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuICQoJy5leHBsYWluLXZlcmJvc2UnKS5o YXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKSA/ICdPRkYnIDogJ09OJzsKKyAgICByZXR1cm4g ISQoJy5leHBsYWluLXZlcmJvc2UnKS5oYXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKICAg fSwKIAogICBfY29zdHNFbmFibGVkOiBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuICQoJy5leHBs YWluLWNvc3RzJykuaGFzQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJykgPyAnT0ZGJyA6ICdPTic7 CisgICAgcmV0dXJuICEkKCcuZXhwbGFpbi1jb3N0cycpLmhhc0NsYXNzKCd2aXNpYmlsaXR5LWhp ZGRlbicpOwogICB9LAogCiAgIF9idWZmZXJzOiBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuICQo Jy5leHBsYWluLWJ1ZmZlcnMnKS5oYXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKSA/ICdPRkYn IDogJ09OJzsKKyAgICByZXR1cm4gISQoJy5leHBsYWluLWJ1ZmZlcnMnKS5oYXNDbGFzcygndmlz aWJpbGl0eS1oaWRkZW4nKTsKICAgfSwKIAogICBfdGltaW5nOiBmdW5jdGlvbiAoKSB7Ci0gICAg cmV0dXJuICQoJy5leHBsYWluLXRpbWluZycpLmhhc0NsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicp ID8gJ09GRicgOiAnT04nOworICAgIHJldHVybiAhJCgnLmV4cGxhaW4tdGltaW5nJykuaGFzQ2xh c3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7CiAgIH0sCiAKICAgX2NsZWFyTWVzc2FnZVRhYjogZnVu Y3Rpb24gKCkgewpAQCAtMzUsMTggKzM1LDM1IEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewog ICAgIGxldCB2ZXJib3NlID0gdGhpcy5fdmVyYm9zZSgpOwogICAgIGxldCBidWZmZXJzID0gdGhp cy5fYnVmZmVycygpOwogICAgIGxldCB0aW1pbmcgPSB0aGlzLl90aW1pbmcoKTsKLSAgICBsZXQg ZXhwbGFpbkFuYWx5emVRdWVyeSA9IGBFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5BTFlaRSBPTiwg VkVSQk9TRSAke3ZlcmJvc2V9LCBDT1NUUyAke2Nvc3RFbmFibGVkfSwgQlVGRkVSUyAke2J1ZmZl cnN9LCBUSU1JTkcgJHt0aW1pbmd9KSBgOworICAgIGNvbnN0IGV4cGxhaW5PYmplY3QgPSB7Cisg ICAgICBmb3JtYXQ6ICdqc29uJywKKyAgICAgIGFuYWx5emU6IHRydWUsCisgICAgICB2ZXJib3Nl OiB2ZXJib3NlLAorICAgICAgY29zdHM6IGNvc3RFbmFibGVkLAorICAgICAgYnVmZmVyczogYnVm ZmVycywKKyAgICAgIHRpbWluZzogdGltaW5nLAorICAgICAgc3VtbWFyeTogZmFsc2UsCisgICAg fTsKICAgICB0aGlzLl9jbGVhck1lc3NhZ2VUYWIoKTsKLSAgICBzcWxFZGl0b3JDb250cm9sbGVy LmV4ZWN1dGUoZXhwbGFpbkFuYWx5emVRdWVyeSk7CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5l eGVjdXRlKGV4cGxhaW5PYmplY3QpOwogICB9LAogCiAgIGV4cGxhaW46IGZ1bmN0aW9uIChzcWxF ZGl0b3JDb250cm9sbGVyKSB7CiAgICAgbGV0IGNvc3RFbmFibGVkID0gdGhpcy5fY29zdHNFbmFi bGVkKCk7CiAgICAgbGV0IHZlcmJvc2UgPSB0aGlzLl92ZXJib3NlKCk7CiAKLSAgICBsZXQgZXhw bGFpblF1ZXJ5ID0gYEVYUExBSU4gKEZPUk1BVCBKU09OLCBBTkFMWVpFIE9GRiwgVkVSQk9TRSAk e3ZlcmJvc2V9LCBDT1NUUyAke2Nvc3RFbmFibGVkfSwgQlVGRkVSUyBPRkYsIFRJTUlORyBPRkYp IGA7CisgICAgLy8gbGV0IGV4cGxhaW5RdWVyeSA9IGBFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5B TFlaRSBPRkYsIFZFUkJPU0UgJHt2ZXJib3NlfSwgQ09TVFMgJHtjb3N0RW5hYmxlZH0sIEJVRkZF UlMgT0ZGLCBUSU1JTkcgT0ZGKSBgOworICAgIGNvbnN0IGV4cGxhaW5PYmplY3QgPSB7CisgICAg ICBmb3JtYXQ6ICdqc29uJywKKyAgICAgIGFuYWx5emU6IGZhbHNlLAorICAgICAgdmVyYm9zZTog dmVyYm9zZSwKKyAgICAgIGNvc3RzOiBjb3N0RW5hYmxlZCwKKyAgICAgIGJ1ZmZlcnM6IGZhbHNl LAorICAgICAgdGltaW5nOiBmYWxzZSwKKyAgICAgIHN1bW1hcnk6IGZhbHNlLAorICAgIH07CiAg ICAgdGhpcy5fY2xlYXJNZXNzYWdlVGFiKCk7Ci0gICAgc3FsRWRpdG9yQ29udHJvbGxlci5leGVj dXRlKGV4cGxhaW5RdWVyeSk7CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlKGV4cGxh aW5PYmplY3QpOwogICB9LAogCiAgIGRvd25sb2FkOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJv bGxlcikgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CmluZGV4IGIxY2Ez Yjg3Li5mODg3MDAzNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19f aW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQpA QCAtOCwyOCArOCwzMiBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIiIiQSBibHVlcHJpbnQgbW9k dWxlIGltcGxlbWVudGluZyB0aGUgc3FsZWRpdG9yIGZyYW1lLiIiIgotaW1wb3J0IHNpbXBsZWpz b24gYXMganNvbgoraW1wb3J0IGNvZGVjcwogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBv cnQgcmFuZG9tCi1pbXBvcnQgY29kZWNzCiAKLWZyb20gZmxhc2sgaW1wb3J0IFJlc3BvbnNlLCB1 cmxfZm9yLCByZW5kZXJfdGVtcGxhdGUsIHNlc3Npb24sIHJlcXVlc3QsXAoraW1wb3J0IHNpbXBs ZWpzb24gYXMganNvbgorZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9uc2UsIHVybF9mb3IsIHJlbmRl cl90ZW1wbGF0ZSwgc2Vzc2lvbiwgcmVxdWVzdCwgXAogICAgIGN1cnJlbnRfYXBwCiBmcm9tIGZs YXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0CiBmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBsb2dp bl9yZXF1aXJlZAorCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIsIE9OX0RF TUFORF9SRUNPUkRfQ09VTlQKK2Zyb20gcGdhZG1pbi5taXNjLmZpbGVfbWFuYWdlciBpbXBvcnQg RmlsZW1hbmFnZXIKIGZyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IuY29tbWFuZCBpbXBvcnQg UXVlcnlUb29sQ29tbWFuZAorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5jb25z dGFudF9kZWZpbml0aW9uIGltcG9ydCBBU1lOQ19PSywgQVNZTkNfRVhFQ1VUSU9OX0FCT1JURUQs IFwKKyAgICBDT05ORUNUSU9OX1NUQVRVU19NRVNTQUdFX01BUFBJTkcsIFRYX1NUQVRVU19JTkVS Uk9SCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLnN0YXJ0X3J1bm5pbmdfcXVl cnkgaW1wb3J0IFN0YXJ0UnVubmluZ1F1ZXJ5Citmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9y LnV0aWxzLnVwZGF0ZV9zZXNzaW9uX2dyaWRfdHJhbnNhY3Rpb24gaW1wb3J0IHVwZGF0ZV9zZXNz aW9uX2dyaWRfdHJhbnNhY3Rpb24KIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdBZG1pbk1v ZHVsZQogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBnZXRfc3RvcmFnZV9kaXJlY3RvcnkKIGZy b20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGJhZF9yZXF1 ZXN0LCBcCiAgICAgc3VjY2Vzc19yZXR1cm4sIGludGVybmFsX3NlcnZlcl9lcnJvciwgdW5hdXRo b3JpemVkCiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCi1mcm9t IHBnYWRtaW4udXRpbHMuc3FsYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZSBpbXBvcnQgU1FMQXV0 b0NvbXBsZXRlCi1mcm9tIHBnYWRtaW4ubWlzYy5maWxlX21hbmFnZXIgaW1wb3J0IEZpbGVtYW5h Z2VyCiBmcm9tIHBnYWRtaW4udXRpbHMubWVudSBpbXBvcnQgTWVudUl0ZW0KIGZyb20gcGdhZG1p bi51dGlscy5leGNlcHRpb24gaW1wb3J0IENvbm5lY3Rpb25Mb3N0Ci0KLWZyb20gY29uZmlnIGlt cG9ydCBQR19ERUZBVUxUX0RSSVZFUiwgT05fREVNQU5EX1JFQ09SRF9DT1VOVAorZnJvbSBwZ2Fk bWluLnV0aWxzLnNxbGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUgaW1wb3J0IFNRTEF1dG9Db21w bGV0ZQogCiBNT0RVTEVfTkFNRSA9ICdzcWxlZGl0b3InCiAKQEAgLTM5LDI4ICs0Myw2IEBAIHRy eToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdW5x dW90ZQogCi0jIEFzeW5jIENvbnN0YW50cwotQVNZTkNfT0sgPSAxCi1BU1lOQ19SRUFEX1RJTUVP VVQgPSAyCi1BU1lOQ19XUklURV9USU1FT1VUID0gMwotQVNZTkNfTk9UX0NPTk5FQ1RFRCA9IDQK LUFTWU5DX0VYRUNVVElPTl9BQk9SVEVEID0gNQotCi0jIFRyYW5zYWN0aW9uIHN0YXR1cyBjb25z dGFudHMKLVRYX1NUQVRVU19JRExFID0gMAotVFhfU1RBVFVTX19BQ1RJVkUgPSAxCi1UWF9TVEFU VVNfSU5UUkFOUyA9IDIKLVRYX1NUQVRVU19JTkVSUk9SID0gMwotCi0jIENvbm5lY3Rpb24gc3Rh dHVzIGNvZGVzIG1hcHBpbmcKLUNPTk5FQ1RJT05fU1RBVFVTX01FU1NBR0VfTUFQUElORyA9IGRp Y3QoWwotICAgICgwLCAnVGhlIHNlc3Npb24gaXMgaWRsZSBhbmQgdGhlcmUgaXMgbm8gY3VycmVu dCB0cmFuc2FjdGlvbi4nKSwKLSAgICAoMSwgJ0EgY29tbWFuZCBpcyBjdXJyZW50bHkgaW4gcHJv Z3Jlc3MuJyksCi0gICAgKDIsICdUaGUgc2Vzc2lvbiBpcyBpZGxlIGluIGEgdmFsaWQgdHJhbnNh Y3Rpb24gYmxvY2suJyksCi0gICAgKDMsICdUaGUgc2Vzc2lvbiBpcyBpZGxlIGluIGEgZmFpbGVk IHRyYW5zYWN0aW9uIGJsb2NrLicpLAotICAgICg0LCAnVGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUg c2VydmVyIGlzIGJhZC4nKQotXSkKLQogCiBjbGFzcyBTcWxFZGl0b3JNb2R1bGUoUGdBZG1pbk1v ZHVsZSk6CiAgICAgIiIiCkBAIC0zNzYsMTMgKzM1OCw2IEBAIGRlZiBpbmRleCgpOgogICAgICkK IAogCi1kZWYgdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlvbih0cmFuc19pZCwgZGF0YSk6 Ci0gICAgaWYgJ2dyaWREYXRhJyBpbiBzZXNzaW9uOgotICAgICAgICBncmlkX2RhdGEgPSBzZXNz aW9uWydncmlkRGF0YSddCi0gICAgICAgIGdyaWRfZGF0YVtzdHIodHJhbnNfaWQpXSA9IGRhdGEK LSAgICAgICAgc2Vzc2lvblsnZ3JpZERhdGEnXSA9IGdyaWRfZGF0YQotCi0KIGRlZiBjaGVja190 cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpOgogICAgICIiIgogICAgIFRoaXMgZnVuY3Rpb24g aXMgdXNlZCB0byBjaGVjayB0aGUgdHJhbnNhY3Rpb24gaWQKQEAgLTQ1OCw3ICs0MzMsNyBAQCBk ZWYgc3RhcnRfdmlld19kYXRhKHRyYW5zX2lkKToKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25f c3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYgZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAg ICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAg ICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgogICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNU SU9OX1JFUVVJUkVEJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9 NDA0KQpAQCAtNDg2LDcgKzQ2MSw3IEBAIGRlZiBzdGFydF92aWV3X2RhdGEodHJhbnNfaWQpOgog ICAgICAgICAgICAgKQogCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIFwKLSAg ICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5v dCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29i aiBpcyBub3QgTm9uZToKICAgICAgICAgIyBzZXQgZmV0Y2hlZCByb3cgY291bnQgdG8gMCBhcyB3 ZSBhcmUgZXhlY3V0aW5nIHF1ZXJ5IGFnYWluLgogICAgICAgICB0cmFuc19vYmoudXBkYXRlX2Zl dGNoZWRfcm93X2NudCgwKQogICAgICAgICBzZXNzaW9uX29ialsnY29tbWFuZF9vYmonXSA9IHBp Y2tsZS5kdW1wcyh0cmFuc19vYmosIC0xKQpAQCAtNTU0LDEwNyArNTI5LDE5IEBAIGRlZiBzdGFy dF9xdWVyeV90b29sKHRyYW5zX2lkKToKICAgICAgICAgdHJhbnNfaWQ6IHVuaXF1ZSB0cmFuc2Fj dGlvbiBpZAogICAgICIiIgogCi0gICAgaWYgcmVxdWVzdC5kYXRhOgotICAgICAgICBzcWwgPSBq c29uLmxvYWRzKHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JykKLSAgICBlbHNlOgotICAg ICAgICBzcWwgPSByZXF1ZXN0LmFyZ3Mgb3IgcmVxdWVzdC5mb3JtCi0KLSAgICBjb25uZWN0ID0g VHJ1ZSBpZiAnY29ubmVjdCcgaW4gcmVxdWVzdC5hcmdzIGFuZCBcCi0gICAgICAgICAgICAgICAg ICAgICAgcmVxdWVzdC5hcmdzWydjb25uZWN0J10gPT0gJzEnIGVsc2UgRmFsc2UKLQotICAgIGlm ICdncmlkRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCi0gICAgICAgICAgICBzdWNjZXNzPTAsCi0gICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KCdUcmFuc2FjdGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyksCi0gICAgICAg ICAgICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsIHN0YXR1cz00MDQpCi0K LSAgICBncmlkX2RhdGEgPSBzZXNzaW9uWydncmlkRGF0YSddCi0KLSAgICAjIFJldHVybiBmcm9t IHRoZSBmdW5jdGlvbiBpZiB0cmFuc2FjdGlvbiBpZCBub3QgZm91bmQKLSAgICBpZiBzdHIodHJh bnNfaWQpIG5vdCBpbiBncmlkX2RhdGE6Ci0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCi0gICAgICAgICAgICBzdWNjZXNzPTAsCi0gICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KCdUcmFuc2FjdGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyksCi0gICAgICAgICAg ICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsCi0gICAgICAgICAgICBzdGF0 dXM9NDA0KQotCi0gICAgIyBGZXRjaCB0aGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRyYW5z YWN0aW9uIGlkLgotICAgICMgVXNlIHBpY2tsZS5sb2FkcyBmdW5jdGlvbiB0byBnZXQgdGhlIGNv bW1hbmQgb2JqZWN0Ci0gICAgc2Vzc2lvbl9vYmogPSBncmlkX2RhdGFbc3RyKHRyYW5zX2lkKV0K LSAgICB0cmFuc19vYmogPSBwaWNrbGUubG9hZHMoc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10p Ci0gICAgIyBzZXQgZmV0Y2hlZCByb3cgY291bnQgdG8gMCBhcyB3ZSBhcmUgZXhlY3V0aW5nIHF1 ZXJ5IGFnYWluLgotICAgIHRyYW5zX29iai51cGRhdGVfZmV0Y2hlZF9yb3dfY250KDApCi0KLSAg ICBjYW5fZWRpdCA9IEZhbHNlCi0gICAgY2FuX2ZpbHRlciA9IEZhbHNlCisgICAgc3FsID0gZXh0 cmFjdF9zcWxfZnJvbV9uZXR3b3JrX3BhcmFtZXRlcnMocmVxdWVzdC5kYXRhLCByZXF1ZXN0LmFy Z3MsIHJlcXVlc3QuZm9ybSkKIAotICAgIGlmIHRyYW5zX29iaiBpcyBub3QgTm9uZSBhbmQgc2Vz c2lvbl9vYmogaXMgbm90IE5vbmU6Ci0gICAgICAgIGNvbm5faWQgPSB0cmFuc19vYmouY29ubl9p ZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAg ICAgICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHRyYW5zX29i ai5zaWQpCi0gICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19v YmouZGlkLCBjb25uX2lkPWNvbm5faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF1dG9fcmVjb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPVRydWUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3RvX3N0cmluZz1UcnVlKQotICAgICAgICBleGNl cHQgQ29ubmVjdGlvbkxvc3QgYXMgZToKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihl KQotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisgICAgcmV0dXJuIFN0YXJ0UnVubmluZ1F1ZXJ5KGJsdWVwcmludCwgY3VycmVudF9hcHAp LmV4ZWN1dGUoc3FsLCB0cmFuc19pZCwgc2Vzc2lvbikKIAotICAgICAgICAjIENvbm5lY3QgdG8g dGhlIFNlcnZlciBpZiBub3QgY29ubmVjdGVkLgotICAgICAgICBpZiBjb25uZWN0IGFuZCBub3Qg Y29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0 KCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgY3VycmVudF9h cHAubG9nZ2VyLmVycm9yKG1zZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihtc2cpKQotCi0gICAgICAgICMgb24gc3VjY2Vzc2Z1bCBj b25uZWN0aW9uIHNldCB0aGUgY29ubmVjdGlvbiBpZCB0byB0aGUKLSAgICAgICAgIyB0cmFuc2Fj dGlvbiBvYmplY3QKLSAgICAgICAgdHJhbnNfb2JqLnNldF9jb25uZWN0aW9uX2lkKGNvbm5faWQp Ci0KLSAgICAgICAgIyBBcyB3ZSBjaGFuZ2VkIHRoZSB0cmFuc2FjdGlvbiBvYmplY3Qgd2UgbmVl ZCB0bwotICAgICAgICAjIHJlc3RvcmUgaXQgYW5kIHVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJs ZS4KLSAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10gPSBwaWNrbGUuZHVtcHModHJh bnNfb2JqLCAtMSkKLSAgICAgICAgdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlvbih0cmFu c19pZCwgc2Vzc2lvbl9vYmopCi0KLSAgICAgICAgIyBJZiBhdXRvIGNvbW1pdCBpcyBGYWxzZSBh bmQgdHJhbnNhY3Rpb24gc3RhdHVzIGlzIElkbGUKLSAgICAgICAgIyB0aGVuIGNhbGwgaXNfYmVn aW5fbm90X3JlcXVpcmVkKCkgZnVuY3Rpb24gdG8gY2hlY2sgQkVHSU4KLSAgICAgICAgIyBpcyBy ZXF1aXJlZCBvciBub3QuCi0KLSAgICAgICAgaWYgbm90IHRyYW5zX29iai5hdXRvX2NvbW1pdCBc Ci0gICAgICAgICAgICAgICAgYW5kIGNvbm4udHJhbnNhY3Rpb25fc3RhdHVzKCkgPT0gVFhfU1RB VFVTX0lETEUgXAotICAgICAgICAgICAgICAgIGFuZCBpc19iZWdpbl9yZXF1aXJlZChzcWwpOgot ICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoIkJFR0lOOyIpCi0KLSAgICAgICAgIyBFeGVj dXRlIHNxbCBhc3luY2hyb25vdXNseSB3aXRoIHBhcmFtcyBpcyBOb25lCi0gICAgICAgICMgYW5k IGZvcm1hdHRlZF9lcnJvciBpcyBUcnVlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzdGF0 dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9hc3luYyhzcWwpCi0gICAgICAgIGV4Y2VwdCBDb25u ZWN0aW9uTG9zdCBhcyBlOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgIyBJZiB0aGUgdHJh bnNhY3Rpb24gYWJvcnRlZCBmb3Igc29tZSByZWFzb24gYW5kCi0gICAgICAgICMgQXV0byBSb2xs QmFjayBpcyBUcnVlIHRoZW4gaXNzdWUgYSByb2xsYmFjayB0byBjbGVhbnVwLgotICAgICAgICB0 cmFuc19zdGF0dXMgPSBjb25uLnRyYW5zYWN0aW9uX3N0YXR1cygpCi0gICAgICAgIGlmIHRyYW5z X3N0YXR1cyA9PSBUWF9TVEFUVVNfSU5FUlJPUiBhbmQgdHJhbnNfb2JqLmF1dG9fcm9sbGJhY2s6 Ci0gICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgiUk9MTEJBQ0s7IikKLQotICAgICAgICBj YW5fZWRpdCA9IHRyYW5zX29iai5jYW5fZWRpdCgpCi0gICAgICAgIGNhbl9maWx0ZXIgPSB0cmFu c19vYmouY2FuX2ZpbHRlcigpCiAKK2RlZiBleHRyYWN0X3NxbF9mcm9tX25ldHdvcmtfcGFyYW1l dGVycyhyZXF1ZXN0X2RhdGEsIHJlcXVlc3RfYXJndW1lbnRzLCByZXF1ZXN0X2Zvcm1fZGF0YSk6 CisgICAgaWYgcmVxdWVzdF9kYXRhOgorICAgICAgICBzcWxfcGFyYW1ldGVycyA9IGpzb24ubG9h ZHMocmVxdWVzdF9kYXRhLCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICBpZiB0eXBlKHNxbF9w YXJhbWV0ZXJzKSBpcyBzdHI6CisgICAgICAgICAgICByZXR1cm4gZGljdChzcWw9c3FsX3BhcmFt ZXRlcnMsIGV4cGxhaW5fcGxhbj1Ob25lKQorICAgICAgICByZXR1cm4gc3FsX3BhcmFtZXRlcnMK ICAgICBlbHNlOgotICAgICAgICBzdGF0dXMgPSBGYWxzZQotICAgICAgICByZXN1bHQgPSBnZXR0 ZXh0KAotICAgICAgICAgICAgJ0VpdGhlciB0cmFuc2FjdGlvbiBvYmplY3Qgb3Igc2Vzc2lvbiBv YmplY3Qgbm90IGZvdW5kLicpCi0KLSAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAotICAg ICAgICBkYXRhPXsKLSAgICAgICAgICAgICdzdGF0dXMnOiBzdGF0dXMsICdyZXN1bHQnOiByZXN1 bHQsCi0gICAgICAgICAgICAnY2FuX2VkaXQnOiBjYW5fZWRpdCwgJ2Nhbl9maWx0ZXInOiBjYW5f ZmlsdGVyLAotICAgICAgICAgICAgJ2luZm9fbm90aWZpZXJfdGltZW91dCc6IGJsdWVwcmludC5p bmZvX25vdGlmaWVyX3RpbWVvdXQuZ2V0KCkKLSAgICAgICAgfQotICAgICkKKyAgICAgICAgcmV0 dXJuIHJlcXVlc3RfYXJndW1lbnRzIG9yIHJlcXVlc3RfZm9ybV9kYXRhCiAKIAogQGJsdWVwcmlu dC5yb3V0ZSgKQEAgLTY3NSwxMyArNTYyLDEzIEBAIGRlZiBwcmVmZXJlbmNlcyh0cmFuc19pZCk6 CiAgICAgICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCiAKICAgICAg ICAgaWYgZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAgICAgJ1RyYW5zYWN0aW9u IElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKKyAgICAgICAgICAgICdUcmFuc2FjdGlv biBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CiAgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9S RVFVSVJFRCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00 MDQpCiAKICAgICAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIFwKLSAgICAgICAg ICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25f b2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgIyBDYWxsIHRoZSBzZXRfYXV0b19jb21taXQg YW5kIHNldF9hdXRvX3JvbGxiYWNrIG1ldGhvZCBvZgogICAgICAgICAgICAgIyB0cmFuc2FjdGlv biBvYmplY3QKICAgICAgICAgICAgIHRyYW5zX29iai5zZXRfYXV0b19jb21taXQoYmx1ZXByaW50 LmF1dG9fY29tbWl0LmdldCgpKQpAQCAtNzUxLDcgKzYzOCw3IEBAIGRlZiBwb2xsKHRyYW5zX2lk KToKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYg ZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZv dW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5k IGluIHRoZSBzZXNzaW9uLicpOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1 Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDA0KQpAQCAtNzc5LDcgKzY2Niw3IEBAIGRl ZiBwb2xsKHRyYW5zX2lkKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHJhbnNfb2JqLCBR dWVyeVRvb2xDb21tYW5kKToKICAgICAgICAgICAgICAgICB0cmFuc19zdGF0dXMgPSBjb25uLnRy YW5zYWN0aW9uX3N0YXR1cygpCiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zX3N0YXR1cyA9PSBU WF9TVEFUVVNfSU5FUlJPUiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zX29iai5h dXRvX3JvbGxiYWNrKToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNfb2JqLmF1dG9fcm9sbGJh Y2spOgogICAgICAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgiUk9MTEJBQ0s7IikK IAogICAgICAgICAgICAgc3QsIHJlc3VsdCA9IGNvbm4uYXN5bmNfZmV0Y2htYW55XzJkYXJyYXko T05fREVNQU5EX1JFQ09SRF9DT1VOVCkKQEAgLTg1NCwxNSArNzQxLDE1IEBAIGRlZiBwb2xsKHRy YW5zX2lkKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBuYW1l ID09ICdjaGFyYWN0ZXIgdmFyeWluZycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwbmFtZSA9 IHR5cG5hbWUgKyAnKCcgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cihjb2xfaW5mb1snaW50ZXJuYWxfc2l6ZSddKSArIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihjb2xfaW5mb1snaW50ZXJuYWxfc2l6ZSdd KSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmICgKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBuYW1lID09ICdjaGFyYWN0ZXJbXScg b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBuYW1lID09ICdj aGFyYWN0ZXIgdmFyeWluZ1tdJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBuYW1lID0gdHlw bmFtZVs6LTJdICsgJygnICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHIoY29sX2luZm9bJ2ludGVybmFsX3NpemUnXSkgKyBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpW10nCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihjb2xfaW5mb1snaW50ZXJuYWxfc2l6 ZSddKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJylbXScKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfaW5mb1sndHlw ZV9uYW1lJ10gPSB0eXBuYW1lCiAKQEAgLTkxMyw3ICs4MDAsNyBAQCBkZWYgcG9sbCh0cmFuc19p ZCk6CiAgICAgaWYgc3RhdHVzID09ICdTdWNjZXNzJyBhbmQgcmVzdWx0IGlzIE5vbmU6CiAgICAg ICAgIHJlc3VsdCA9IGNvbm4uc3RhdHVzX21lc3NhZ2UoKQogICAgICAgICBpZiAocmVzdWx0ICE9 ICdTRUxFQ1QgMScgb3IgcmVzdWx0ICE9ICdTRUxFQ1QgMCcpIFwKLSAgICAgICAgICAgICAgICBh bmQgcmVzdWx0IGlzIG5vdCBOb25lIGFuZCBhZGRpdGlvbmFsX21lc3NhZ2VzOgorICAgICAgICAg ICAgYW5kIHJlc3VsdCBpcyBub3QgTm9uZSBhbmQgYWRkaXRpb25hbF9tZXNzYWdlczoKICAgICAg ICAgICAgIHJlc3VsdCA9IGFkZGl0aW9uYWxfbWVzc2FnZXMgKyByZXN1bHQKIAogICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCkBAIC05NTQsNyArODQxLDcgQEAgZGVmIGZldGNoKHRyYW5z X2lkLCBmZXRjaF9hbGw9Tm9uZSk6CiAgICAgICAgIGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0 cmFuc19pZCkKIAogICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0KAotICAgICAgICAgICAgJ1Ry YW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKKyAgICAgICAgJ1RyYW5z YWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZShzdWNjZXNzPTAsIGVycm9ybXNnPWVycm9yX21zZywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFV SVJFRCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQwNCkKQEAg LTEwMTgsNyArOTA1LDcgQEAgZGVmIGZldGNoX3BnX3R5cGVzKGNvbHVtbnNfaW5mbywgdHJhbnNf b2JqKToKIAogICAgIGlmIG9pZHM6CiAgICAgICAgIHN0YXR1cywgcmVzID0gZGVmYXVsdF9jb25u LmV4ZWN1dGVfZGljdCgKLSAgICAgICAgICAgIHUiU0VMRUNUIG9pZCwgZm9ybWF0X3R5cGUob2lk LG51bGwpIGFzIHR5cG5hbWUgRlJPTSBwZ190eXBlICIKKyAgICAgICAgICAgIHUiU0VMRUNUIG9p ZCwgZm9ybWF0X3R5cGUob2lkLE5VTEwpIEFTIHR5cG5hbWUgRlJPTSBwZ190eXBlICIKICAgICAg ICAgICAgIHUiV0hFUkUgb2lkIElOICVzIE9SREVSIEJZIG9pZDsiLCBbdHVwbGUob2lkcyldCiAg ICAgICAgICkKIApAQCAtMTA3NywxNyArOTY0LDE3IEBAIGRlZiBzYXZlKHRyYW5zX2lkKToKICAg ICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYgZXJyb3Jf bXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGlu IHRoZSBzZXNzaW9uLicpOgorICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRo ZSBzZXNzaW9uLicpOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9 MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9NDA0KQogCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlz IG5vdCBOb25lIFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNl c3Npb25fb2JqIGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25l IGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAgICAjIElmIHRoZXJlIGlzIG5v IHByaW1hcnkga2V5IGZvdW5kIHRoZW4gcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uLgogICAgICAg ICBpZiAobGVuKHNlc3Npb25fb2JqWydwcmltYXJ5X2tleXMnXSkgPD0gMCBvciBsZW4oY2hhbmdl ZF9kYXRhKSA8PSAwKSBcCi0gICAgICAgICAgICAgICAgYW5kICdoYXNfb2lkcycgbm90IGluIHNl c3Npb25fb2JqOgorICAgICAgICAgICAgYW5kICdoYXNfb2lkcycgbm90IGluIHNlc3Npb25fb2Jq OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAgICAg ICBkYXRhPXsKICAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IEZhbHNlLApAQCAtMTE0Niwx MiArMTAzMywxMiBAQCBkZWYgZ2V0X2ZpbHRlcih0cmFuc19pZCk6CiAgICAgICAgIGNoZWNrX3Ry YW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKIAogICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0 KAotICAgICAgICAgICAgJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4n KToKKyAgICAgICAgJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToK ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShzdWNjZXNzPTAsIGVycm9ybXNnPWVy cm9yX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJ RF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzPTQwNCkKICAgICBpZiBzdGF0dXMgYW5kIGNvbm4gaXMgbm90IE5vbmUgXAotICAg ICAgICAgICAgYW5kIHRyYW5zX29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMgbm90 IE5vbmU6CisgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2Jq IGlzIG5vdCBOb25lOgogCiAgICAgICAgIHJlcyA9IHRyYW5zX29iai5nZXRfZmlsdGVyKCkKICAg ICBlbHNlOgpAQCAtMTE4MywxMyArMTA3MCwxMyBAQCBkZWYgYXBwbHlfZmlsdGVyKHRyYW5zX2lk KToKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYg ZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZv dW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5k IGluIHRoZSBzZXNzaW9uLicpOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1 Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDA0KQogCiAgICAgaWYgc3RhdHVzIGFuZCBj b25uIGlzIG5vdCBOb25lIFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUg YW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5v dCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAgICBzdGF0dXMsIHJl cyA9IHRyYW5zX29iai5zZXRfZmlsdGVyKGZpbHRlcl9zcWwpCiAKQEAgLTEyMjYsMTMgKzExMTMs MTMgQEAgZGVmIGFwcGVuZF9maWx0ZXJfaW5jbHVzaXZlKHRyYW5zX2lkKToKICAgICAgICAgY2hl Y2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYgZXJyb3JfbXNnID09IGdl dHRleHQoCi0gICAgICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNz aW9uLicpOgorICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNzaW9u LicpOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9MCwgZXJyb3Jt c2c9ZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm89J0RB VEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGF0dXM9NDA0KQogCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25l IFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2Jq IGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNz aW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAgICByZXMgPSBOb25lCiAgICAgICAgIGZpbHRl cl9zcWwgPSAnJwpAQCAtMTI4MiwxMiArMTE2OSwxMiBAQCBkZWYgYXBwZW5kX2ZpbHRlcl9leGNs dXNpdmUodHJhbnNfaWQpOgogICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNf aWQpCiAKICAgICBpZiBlcnJvcl9tc2cgPT0gZ2V0dGV4dCgKLSAgICAgICAgICAgICdUcmFuc2Fj dGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CisgICAgICAgICdUcmFuc2FjdGlv biBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CiAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2Uoc3VjY2Vzcz0wLCBlcnJvcm1zZz1lcnJvcl9tc2csCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5mbz0nREFUQUdSSURfVFJBTlNBQ1RJT05fUkVRVUlSRUQn LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MDQpCiAgICAgaWYg c3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmog aXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJh bnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAg ICByZXMgPSBOb25lCiAgICAgICAgIGZpbHRlcl9zcWwgPSAnJwpAQCAtMTMzNSwxMyArMTIyMiwx MyBAQCBkZWYgcmVtb3ZlX2ZpbHRlcih0cmFuc19pZCk6CiAgICAgICAgIGNoZWNrX3RyYW5zYWN0 aW9uX3N0YXR1cyh0cmFuc19pZCkKIAogICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0KAotICAg ICAgICAgICAgJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKKyAg ICAgICAgJ1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShzdWNjZXNzPTAsIGVycm9ybXNnPWVycm9yX21z ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJRF9UUkFO U0FDVElPTl9SRVFVSVJFRCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHVzPTQwNCkKIAogICAgIGlmIHN0YXR1cyBhbmQgY29ubiBpcyBub3QgTm9uZSBcCi0gICAgICAg ICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9u ZToKKyAgICAgICAgYW5kIHRyYW5zX29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMg bm90IE5vbmU6CiAKICAgICAgICAgcmVzID0gTm9uZQogCkBAIC0xMzgwLDEzICsxMjY3LDEzIEBA IGRlZiBzZXRfbGltaXQodHJhbnNfaWQpOgogICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0 dXModHJhbnNfaWQpCiAKICAgICBpZiBlcnJvcl9tc2cgPT0gZ2V0dGV4dCgKLSAgICAgICAgICAg ICdUcmFuc2FjdGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CisgICAgICAgICdU cmFuc2FjdGlvbiBJRCBub3QgZm91bmQgaW4gdGhlIHNlc3Npb24uJyk6CiAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2Uoc3VjY2Vzcz0wLCBlcnJvcm1zZz1lcnJvcl9tc2csCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbz0nREFUQUdSSURfVFJBTlNBQ1RJT05f UkVRVUlSRUQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MDQp CiAKICAgICBpZiBzdGF0dXMgYW5kIGNvbm4gaXMgbm90IE5vbmUgXAotICAgICAgICAgICAgYW5k IHRyYW5zX29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMgbm90IE5vbmU6CisgICAg ICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25l OgogCiAgICAgICAgIHJlcyA9IE5vbmUKIApAQCAtMTUwMSwxMyArMTM4OCwxMyBAQCBkZWYgZ2V0 X29iamVjdF9uYW1lKHRyYW5zX2lkKToKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVz KHRyYW5zX2lkKQogCiAgICAgaWYgZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAn VHJhbnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAgICAnVHJh bnNhY3Rpb24gSUQgbm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgogICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JF UVVJUkVEJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDA0KQog CiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIFwKLSAgICAgICAgICAgIGFuZCB0 cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25lOgorICAgICAg ICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToK ICAgICAgICAgcmVzID0gdHJhbnNfb2JqLm9iamVjdF9uYW1lCiAgICAgZWxzZToKICAgICAgICAg c3RhdHVzID0gRmFsc2UKQEAgLTE1MzgsMTMgKzE0MjUsMTMgQEAgZGVmIHNldF9hdXRvX2NvbW1p dCh0cmFuc19pZCk6CiAgICAgICAgIGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkK IAogICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0KAotICAgICAgICAgICAgJ1RyYW5zYWN0aW9u IElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKKyAgICAgICAgJ1RyYW5zYWN0aW9uIElE IG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZShzdWNjZXNzPTAsIGVycm9ybXNnPWVycm9yX21zZywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQwNCkKIAogICAgIGlmIHN0 YXR1cyBhbmQgY29ubiBpcyBub3QgTm9uZSBcCi0gICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlz IG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKKyAgICAgICAgYW5kIHRyYW5z X29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMgbm90IE5vbmU6CiAKICAgICAgICAg cmVzID0gTm9uZQogCkBAIC0xNTg3LDEzICsxNDc0LDEzIEBAIGRlZiBzZXRfYXV0b19yb2xsYmFj ayh0cmFuc19pZCk6CiAgICAgICAgIGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkK IAogICAgIGlmIGVycm9yX21zZyA9PSBnZXR0ZXh0KAotICAgICAgICAgICAgJ1RyYW5zYWN0aW9u IElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKKyAgICAgICAgJ1RyYW5zYWN0aW9uIElE IG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZShzdWNjZXNzPTAsIGVycm9ybXNnPWVycm9yX21zZywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmZvPSdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQwNCkKIAogICAgIGlmIHN0 YXR1cyBhbmQgY29ubiBpcyBub3QgTm9uZSBcCi0gICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlz IG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKKyAgICAgICAgYW5kIHRyYW5z X29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMgbm90IE5vbmU6CiAKICAgICAgICAg cmVzID0gTm9uZQogCkBAIC0xNjQzLDEzICsxNTMwLDEzIEBAIGRlZiBhdXRvX2NvbXBsZXRlKHRy YW5zX2lkKToKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAg ICAgaWYgZXJyb3JfbXNnID09IGdldHRleHQoCi0gICAgICAgICAgICAnVHJhbnNhY3Rpb24gSUQg bm90IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgorICAgICAgICAnVHJhbnNhY3Rpb24gSUQgbm90 IGZvdW5kIGluIHRoZSBzZXNzaW9uLicpOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9ZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDA0KQogCiAgICAgaWYgc3RhdHVz IGFuZCBjb25uIGlzIG5vdCBOb25lIFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90 IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2Jq IGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAgICAjIENy ZWF0ZSBvYmplY3Qgb2YgU1FMQXV0b0NvbXBsZXRlIGNsYXNzIGFuZCBwYXNzIGNvbm5lY3Rpb24g b2JqZWN0CiAgICAgICAgIGF1dG9fY29tcGxldGVfb2JqID0gU1FMQXV0b0NvbXBsZXRlKApAQCAt MTY4MCwxNjUgKzE1NjcsNiBAQCBkZWYgc2NyaXB0KCk6CiAgICAgKQogCiAKLWRlZiBpc19iZWdp bl9yZXF1aXJlZChxdWVyeSk6Ci0gICAgd29yZF9sZW4gPSAwCi0gICAgcXVlcnkgPSBxdWVyeS5z dHJpcCgpCi0gICAgcXVlcnlfbGVuID0gbGVuKHF1ZXJ5KQotCi0gICAgIyBDaGVjayB3b3JkIGxl bmd0aCAoc2luY2UgImJlZ2lueCIgaXMgbm90ICJiZWdpbiIpLgotICAgIHdoaWxlICh3b3JkX2xl biA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6Ci0gICAgICAgIHdv cmRfbGVuICs9IDEKLQotICAgICMgVHJhbnNhY3Rpb24gY29udHJvbCBjb21tYW5kcy4gIFRoZXNl IHNob3VsZCBpbmNsdWRlIGV2ZXJ5IGtleXdvcmQgdGhhdAotICAgICMgIGdpdmVzIHJpc2UgdG8g YSBUcmFuc2FjdGlvblN0bXQgaW4gdGhlIGJhY2tlbmQgZ3JhbW1hciwgZXhjZXB0IGZvciB0aGUK LSAgICAjICBzYXZlcG9pbnQtcmVsYXRlZCBjb21tYW5kcy4KLSAgICAjCi0gICAgIyAgKFdlIGFz c3VtZSB0aGF0IFNUQVJUIG11c3QgYmUgU1RBUlQgVFJBTlNBQ1RJT04sIHNpbmNlIHRoZXJlIGlz Ci0gICAgIyAgcHJlc2VudGx5IG5vIG90aGVyICJTVEFSVCBmb28iIGNvbW1hbmQuKQotCi0gICAg a2V5d29yZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCi0KLSAgICBpZiB3b3JkX2xlbiA9PSA1IGFuZCBr ZXl3b3JkLmxvd2VyKCkgPT0gImFib3J0IjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgaWYg d29yZF9sZW4gPT0gNSBhbmQga2V5d29yZC5sb3dlcigpID09ICJiZWdpbiI6Ci0gICAgICAgIHJl dHVybiBGYWxzZQotICAgIGlmIHdvcmRfbGVuID09IDUgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAi c3RhcnQiOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBpZiB3b3JkX2xlbiA9PSA2OgotICAg ICAgICAjIFNFTEVDVCBpcyBwcm90ZWN0ZWQgZnJvbSBkaXJ0eSByZWFkcyBoZW5jZSBkb24ndCBy ZXF1aXJlIHRyYW5zYWN0aW9uCi0gICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSBpbiBbInNlbGVj dCIsICJjb21taXQiXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIGlmIHdvcmRfbGVu ID09IDMgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAiZW5kIjoKLSAgICAgICAgcmV0dXJuIEZhbHNl Ci0gICAgaWYgd29yZF9sZW4gPT0gOCBhbmQga2V5d29yZC5sb3dlcigpID09ICJyb2xsYmFjayI6 Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGlmIHdvcmRfbGVuID09IDcgYW5kIGtleXdvcmQu bG93ZXIoKSA9PSAicHJlcGFyZSI6Ci0gICAgICAgICMgUFJFUEFSRSBUUkFOU0FDVElPTiBpcyBh IFRDIGNvbW1hbmQsIFBSRVBBUkUgZm9vIGlzIG5vdAotICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dv cmRfbGVuOnF1ZXJ5X2xlbl0KLSAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCi0gICAgICAg IHF1ZXJ5X2xlbiA9IGxlbihxdWVyeSkKLSAgICAgICAgd29yZF9sZW4gPSAwCi0KLSAgICAgICAg d2hpbGUgKHdvcmRfbGVuIDwgcXVlcnlfbGVuKSBhbmQgcXVlcnlbd29yZF9sZW5dLmlzYWxwaGEo KToKLSAgICAgICAgICAgIHdvcmRfbGVuICs9IDEKLQotICAgICAgICBrZXl3b3JkID0gcXVlcnlb MDp3b3JkX2xlbl0KLSAgICAgICAgaWYgd29yZF9sZW4gPT0gMTEgYW5kIGtleXdvcmQubG93ZXIo KSA9PSAidHJhbnNhY3Rpb24iOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJl dHVybiBUcnVlCi0KLSAgICAjIENvbW1hbmRzIG5vdCBhbGxvd2VkIHdpdGhpbiB0cmFuc2FjdGlv bnMuIFRoZSBzdGF0ZW1lbnRzIGNoZWNrZWQgZm9yCi0gICAgIyBoZXJlIHNob3VsZCBiZSBleGFj dGx5IHRob3NlIHRoYXQgY2FsbCBQcmV2ZW50VHJhbnNhY3Rpb25DaGFpbigpIGluIHRoZQotICAg ICMgYmFja2VuZC4KLSAgICBpZiB3b3JkX2xlbiA9PSA2IGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0g InZhY3V1bSI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgd29yZF9sZW4gPT0gNyBh bmQga2V5d29yZC5sb3dlcigpID09ICJjbHVzdGVyIjoKLSAgICAgICAgIyBDTFVTVEVSIHdpdGgg YW55IGFyZ3VtZW50cyBpcyBhbGxvd2VkIGluIHRyYW5zYWN0aW9ucwotICAgICAgICBxdWVyeSA9 IHF1ZXJ5W3dvcmRfbGVuOnF1ZXJ5X2xlbl0KLSAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgp Ci0KLSAgICAgICAgaWYgcXVlcnlbMF0uaXNhbHBoYSgpOgotICAgICAgICAgICAgcmV0dXJuIFRy dWUgICMgaGFzIGFkZGl0aW9uYWwgd29yZHMKLSAgICAgICAgcmV0dXJuIEZhbHNlICAjIGl0J3Mg Q0xVU1RFUiB3aXRob3V0IGFyZ3VtZW50cwotCi0gICAgaWYgd29yZF9sZW4gPT0gNiBhbmQga2V5 d29yZC5sb3dlcigpID09ICJjcmVhdGUiOgotICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dvcmRfbGVu OnF1ZXJ5X2xlbl0KLSAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCi0gICAgICAgIHF1ZXJ5 X2xlbiA9IGxlbihxdWVyeSkKLSAgICAgICAgd29yZF9sZW4gPSAwCi0KLSAgICAgICAgd2hpbGUg KHdvcmRfbGVuIDwgcXVlcnlfbGVuKSBhbmQgcXVlcnlbd29yZF9sZW5dLmlzYWxwaGEoKToKLSAg ICAgICAgICAgIHdvcmRfbGVuICs9IDEKLQotICAgICAgICBrZXl3b3JkID0gcXVlcnlbMDp3b3Jk X2xlbl0KLSAgICAgICAgaWYgd29yZF9sZW4gPT0gOCBhbmQga2V5d29yZC5sb3dlcigpID09ICJk YXRhYmFzZSI6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgd29yZF9sZW4g PT0gMTAgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAidGFibGVzcGFjZSI6Ci0gICAgICAgICAgICBy ZXR1cm4gRmFsc2UKLQotICAgICAgICAjIENSRUFURSBbVU5JUVVFXSBJTkRFWCBDT05DVVJSRU5U TFkgaXNuJ3QgYWxsb3dlZCBpbiB4YWN0cwotICAgICAgICBpZiB3b3JkX2xlbiA9PSA3IGFuZCBr ZXl3b3JkLmxvd2VyKCkgPT0gImNsdXN0ZXIiOgotICAgICAgICAgICAgcXVlcnkgPSBxdWVyeVt3 b3JkX2xlbjpxdWVyeV9sZW5dCi0gICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnN0cmlwKCkKLSAg ICAgICAgICAgIHF1ZXJ5X2xlbiA9IGxlbihxdWVyeSkKLSAgICAgICAgICAgIHdvcmRfbGVuID0g MAotCi0gICAgICAgICAgICB3aGlsZSAod29yZF9sZW4gPCBxdWVyeV9sZW4pIGFuZCBxdWVyeVt3 b3JkX2xlbl0uaXNhbHBoYSgpOgotICAgICAgICAgICAgICAgIHdvcmRfbGVuICs9IDEKLQotICAg ICAgICAgICAga2V5d29yZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCi0KLSAgICAgICAgaWYgd29yZF9s ZW4gPT0gNSBhbmQga2V5d29yZC5sb3dlcigpID09ICJpbmRleCI6Ci0gICAgICAgICAgICBxdWVy eSA9IHF1ZXJ5W3dvcmRfbGVuOnF1ZXJ5X2xlbl0KLSAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnku c3RyaXAoKQotICAgICAgICAgICAgcXVlcnlfbGVuID0gbGVuKHF1ZXJ5KQotICAgICAgICAgICAg d29yZF9sZW4gPSAwCi0KLSAgICAgICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikg YW5kIHF1ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6Ci0gICAgICAgICAgICAgICAgd29yZF9sZW4g Kz0gMQotCi0gICAgICAgICAgICBrZXl3b3JkID0gcXVlcnlbMDp3b3JkX2xlbl0KLSAgICAgICAg ICAgIGlmIHdvcmRfbGVuID09IDEyIGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0gImNvbmN1cnJlbnRs eSI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0K LSAgICBpZiB3b3JkX2xlbiA9PSA1IGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0gImFsdGVyIjoKLSAg ICAgICAgcXVlcnkgPSBxdWVyeVt3b3JkX2xlbjpxdWVyeV9sZW5dCi0gICAgICAgIHF1ZXJ5ID0g cXVlcnkuc3RyaXAoKQotICAgICAgICBxdWVyeV9sZW4gPSBsZW4ocXVlcnkpCi0gICAgICAgIHdv cmRfbGVuID0gMAotCi0gICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1 ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6Ci0gICAgICAgICAgICB3b3JkX2xlbiArPSAxCi0KLSAg ICAgICAga2V5d29yZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCi0KLSAgICAgICAgIyBBTFRFUiBTWVNU RU0gaXNuJ3QgYWxsb3dlZCBpbiB4YWN0cwotICAgICAgICBpZiB3b3JkX2xlbiA9PSA2IGFuZCBr ZXl3b3JkLmxvd2VyKCkgPT0gInN5c3RlbSI6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg ICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgTm90ZTogdGhlc2UgdGVzdHMgd2lsbCBtYXRjaCBE Uk9QIFNZU1RFTSBhbmQgUkVJTkRFWCBUQUJMRVNQQUNFLCB3aGljaAotICAgICMgYXJlbid0IHJl YWxseSB2YWxpZCBjb21tYW5kcyBzbyB3ZSBkb24ndCBjYXJlIG11Y2guIFRoZSBvdGhlciBmb3Vy Ci0gICAgIyBwb3NzaWJsZSBtYXRjaGVzIGFyZSBjb3JyZWN0LgotICAgIGlmIHdvcmRfbGVuID09 IDQgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAiZHJvcCIgXAotICAgICAgICAgICAgb3Igd29yZF9s ZW4gPT0gNyBhbmQga2V5d29yZC5sb3dlcigpID09ICJyZWluZGV4IjoKLSAgICAgICAgcXVlcnkg PSBxdWVyeVt3b3JkX2xlbjpxdWVyeV9sZW5dCi0gICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAo KQotICAgICAgICBxdWVyeV9sZW4gPSBsZW4ocXVlcnkpCi0gICAgICAgIHdvcmRfbGVuID0gMAot Ci0gICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVu XS5pc2FscGhhKCk6Ci0gICAgICAgICAgICB3b3JkX2xlbiArPSAxCi0KLSAgICAgICAga2V5d29y ZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCi0gICAgICAgIGlmIHdvcmRfbGVuID09IDggYW5kIGtleXdv cmQubG93ZXIoKSA9PSAiZGF0YWJhc2UiOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAg ICAgIGlmIHdvcmRfbGVuID09IDYgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAic3lzdGVtIjoKLSAg ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiB3b3JkX2xlbiA9PSAxMCBhbmQga2V5 d29yZC5sb3dlcigpID09ICJ0YWJsZXNwYWNlIjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQot ICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBESVNDQVJEIEFMTCBpc24ndCBhbGxvd2VkIGlu IHhhY3RzLCBidXQgb3RoZXIgdmFyaWFudHMgYXJlIGFsbG93ZWQuCi0gICAgaWYgd29yZF9sZW4g PT0gNyBhbmQga2V5d29yZC5sb3dlcigpID09ICJkaXNjYXJkIjoKLSAgICAgICAgcXVlcnkgPSBx dWVyeVt3b3JkX2xlbjpxdWVyeV9sZW5dCi0gICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAoKQot ICAgICAgICBxdWVyeV9sZW4gPSBsZW4ocXVlcnkpCi0gICAgICAgIHdvcmRfbGVuID0gMAotCi0g ICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVuXS5p c2FscGhhKCk6Ci0gICAgICAgICAgICB3b3JkX2xlbiArPSAxCi0KLSAgICAgICAga2V5d29yZCA9 IHF1ZXJ5WzA6d29yZF9sZW5dCi0gICAgICAgIGlmIHdvcmRfbGVuID09IDMgYW5kIGtleXdvcmQu bG93ZXIoKSA9PSAiYWxsIjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1 cm4gVHJ1ZQotCi0gICAgcmV0dXJuIFRydWUKLQotCiBAYmx1ZXByaW50LnJvdXRlKCcvbG9hZF9m aWxlLycsIG1ldGhvZHM9WyJQVVQiLCAiUE9TVCJdLCBlbmRwb2ludD0nbG9hZF9maWxlJykKIEBs b2dpbl9yZXF1aXJlZAogZGVmIGxvYWRfZmlsZSgpOgpAQCAtMTg2NSw5ICsxNTkzLDkgQEAgZGVm IGxvYWRfZmlsZSgpOgogICAgICAgICApCiAKICAgICBzdGF0dXMsIGVycl9tc2csIGlzX2JpbmFy eSwgXAotICAgICAgICBpc19zdGFydHN3aXRoX2JvbSwgZW5jID0gRmlsZW1hbmFnZXIuY2hlY2tf ZmlsZV9mb3JfYm9tX2FuZF9iaW5hcnkoCi0gICAgICAgICAgICBmaWxlX3BhdGgKLSAgICAgICAg KQorICAgIGlzX3N0YXJ0c3dpdGhfYm9tLCBlbmMgPSBGaWxlbWFuYWdlci5jaGVja19maWxlX2Zv cl9ib21fYW5kX2JpbmFyeSgKKyAgICAgICAgZmlsZV9wYXRoCisgICAgKQogCiAgICAgaWYgbm90 IHN0YXR1czoKICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKQEAgLTE5NjAs MTAgKzE2ODgsMTAgQEAgZGVmIHNhdmVfZmlsZSgpOgogZGVmIHN0YXJ0X3F1ZXJ5X2Rvd25sb2Fk X3Rvb2wodHJhbnNfaWQpOgogICAgIHN5bmNfY29ubiA9IE5vbmUKICAgICBzdGF0dXMsIGVycm9y X21zZywgY29ubiwgdHJhbnNfb2JqLCBcCi0gICAgICAgIHNlc3Npb25fb2JqID0gY2hlY2tfdHJh bnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQorICAgIHNlc3Npb25fb2JqID0gY2hlY2tfdHJhbnNh Y3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBO b25lIFwKLSAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25f b2JqIGlzIG5vdCBOb25lOgorICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBz ZXNzaW9uX29iaiBpcyBub3QgTm9uZToKIAogICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdzIGlm IHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKICAgICAgICAgdHJ5OgpAQCAtMjA2Myw3ICsxNzkxLDcg QEAgZGVmIHF1ZXJ5X3Rvb2xfc3RhdHVzKHRyYW5zX2lkKToKICAgICAgICAgVFJBTlNBQ1RJT05f U1RBVFVTX1VOS05PV04gID0gNAogICAgICIiIgogICAgIHN0YXR1cywgZXJyb3JfbXNnLCBjb25u LCB0cmFuc19vYmosIFwKLSAgICAgICAgc2Vzc2lvbl9vYmogPSBjaGVja190cmFuc2FjdGlvbl9z dGF0dXModHJhbnNfaWQpCisgICAgc2Vzc2lvbl9vYmogPSBjaGVja190cmFuc2FjdGlvbl9zdGF0 dXModHJhbnNfaWQpCiAKICAgICBpZiBub3Qgc3RhdHVzIGFuZCBlcnJvcl9tc2cgYW5kIHR5cGUo ZXJyb3JfbXNnKSA9PSBzdHI6CiAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVk aXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9y LmpzCmluZGV4IDUyMTA5ZWNkLi4zNDljOWEwMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKQEAgLTEyLDYgKzEyLDggQEAgZGVm aW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICdzb3VyY2VzL3NlbGVjdGlvbi94Y2VsbF9zZWxl Y3Rpb25fbW9kZWwnLAogICAnc291cmNlcy9zZWxlY3Rpb24vc2V0X3N0YWdlZF9yb3dzJywKICAg J3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywKKyAgJ3NvdXJjZXMvc3FsZWRpdG9yL2V4ZWN1dGVf cXVlcnknLAorICAnc291cmNlcy9zcWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVk JywKICAgJ3NvdXJjZXMvaGlzdG9yeS9pbmRleC5qcycsCiAgICdzb3VyY2VzLy4uL2pzeC9oaXN0 b3J5L3F1ZXJ5X2hpc3RvcnknLAogICAncmVhY3QnLCAncmVhY3QtZG9tJywKQEAgLTI4LDcgKzMw LDggQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiBdLCBmdW5jdGlvbigKICAgYmFiZWxQ b2xseWZpbGwsIGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIGFsZXJ0aWZ5LCBwZ0FkbWluLCBC YWNrYm9uZSwgY29kZW1pcnJvciwKICAgcGdFeHBsYWluLCBHcmlkU2VsZWN0b3IsIEFjdGl2ZUNl bGxDYXB0dXJlLCBjbGlwYm9hcmQsIGNvcHlEYXRhLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwgaGFu ZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50LAotICBYQ2VsbFNlbGVjdGlvbk1vZGVsLCBzZXRT dGFnZWRSb3dzLCBTcWxFZGl0b3JVdGlscywgSGlzdG9yeUJ1bmRsZSwgcXVlcnlIaXN0b3J5LCBS ZWFjdCwgUmVhY3RET00sCisgIFhDZWxsU2VsZWN0aW9uTW9kZWwsIHNldFN0YWdlZFJvd3MsIFNx bEVkaXRvclV0aWxzLCBFeGVjdXRlUXVlcnksIHRyYW5zYWN0aW9uLAorICBIaXN0b3J5QnVuZGxl LCBxdWVyeUhpc3RvcnksIFJlYWN0LCBSZWFjdERPTSwKICAga2V5Ym9hcmRTaG9ydGN1dHMsIHF1 ZXJ5VG9vbEFjdGlvbnMsIERhdGFncmlkKSB7CiAgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhhcyBi ZWVuIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAqLwogICBpZiAocGdBZG1pbi5TcWxFZGl0b3IpCkBA IC00MywxMiArNDYsNiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKIAogICB2YXIgaXNf cXVlcnlfcnVubmluZyA9IGZhbHNlOwogCi0gIHZhciBpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQgPSBmdW5jdGlvbih4aHIpIHsKLSAgICByZXR1cm4geGhyLnN0YXR1cyA9PSA0MDQgJiYgeGhy LnJlc3BvbnNlSlNPTiAmJgotICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZUpTT04uaW5mbyAm JgotICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZUpTT04uaW5mbyA9PSAnREFUQUdSSURfVFJB TlNBQ1RJT05fUkVRVUlSRUQnOwotICB9OwotCiAgIC8vIERlZmluaW5nIEJhY2tib25lIHZpZXcg Zm9yIHRoZSBzcWwgZ3JpZC4KICAgdmFyIFNRTEVkaXRvclZpZXcgPSBCYWNrYm9uZS5WaWV3LmV4 dGVuZCh7CiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0cykgewpAQCAtNDg1LDcgKzQ4Miw3 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICAgIGlmIChwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7CiAg ICAgICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBn YV9sb2dpbigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZihpc19uZXdf dHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKKyAgICAgICAgICAgICAgICBpZih0cmFuc2FjdGlv bi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKICAgICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgIH0sCkBAIC0yMTg4LDcgKzIxODUsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcs IFsKICAgICAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dp bigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25f cmVxdWlyZWQoZSkpIHsKKyAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2Fj dGlvbl9yZXF1aXJlZChlKSkgewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19ydW5f cXVlcnknLCBbXSk7CiAgICAgICAgICAgICAgIHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwogICAg ICAgICAgICAgfQpAQCAtMjI1Niw3NCArMjI1Myw4IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICogJ1N1Y2Nlc3MnIHRoZW4gY2FsbCB0aGUgcmVuZGVyIG1ldGhvZCB0byBy ZW5kZXIgdGhlIGRhdGEuCiAgICAgICAgKi8KICAgICAgIF9wb2xsOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIHNldFRpbWVvdXQoCi0gICAgICAgICAg ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICB1cmw6IHVy bF9mb3IoJ3NxbGVkaXRvci5wb2xsJywgewotICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IHNl bGYudHJhbnNJZCwKLSAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgIG1ldGhvZDogJ0dF VCcsCi0gICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAg ICAgIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdTdWNjZXNzJykgewotICAgICAgICAgICAgICAg ICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6 bG9hZGluZy1pY29uOm1lc3NhZ2UnLAotICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdMb2Fk aW5nIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVyIGFuZCByZW5kZXJpbmcuLi4nKQotICAg ICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgICAgc2VsZi5jYWxsX3JlbmRlcl9h ZnRlcl9wb2xsKHJlcy5kYXRhKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRh LnN0YXR1cyA9PT0gJ0J1c3knKSB7Ci0gICAgICAgICAgICAgICAgICAvLyBJZiBzdGF0dXMgaXMg QnVzeSB0aGVuIHBvbGwgdGhlIHJlc3VsdCBieSByZWN1cnNpdmUgY2FsbCB0byB0aGUgcG9sbCBm dW5jdGlvbgotICAgICAgICAgICAgICAgICAgc2VsZi5fcG9sbCgpOwotICAgICAgICAgICAgICAg ICAgaXNfcXVlcnlfcnVubmluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICBpZiAocmVzLmRh dGEucmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5 KHJlcy5kYXRhLnN0YXR1cywgcmVzLmRhdGEucmVzdWx0LCBmYWxzZSk7Ci0gICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdO b3RDb25uZWN0ZWQnKSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4t c3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICAgICAgICAvLyBFbmFi bGUvRGlzYWJsZSBxdWVyeSB0b29sIGJ1dHRvbiBvbmx5IGlmIGlzX3F1ZXJ5X3Rvb2wgaXMgdHJ1 ZS4KLSAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKLSAgICAgICAg ICAgICAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7Ci0gICAgICAgICAg ICAgICAgICAgICQoJyNidG4tY2FuY2VsLXF1ZXJ5JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsK LSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19o aXN0b3J5KGZhbHNlLCByZXMuZGF0YS5yZXN1bHQsIHRydWUpOwotICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAocmVzLmRhdGEuc3RhdHVzID09PSAnQ2FuY2VsJykgewotICAgICAgICAgICAgICAg ICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwot ICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsICdFeGVjdXRp b24gQ2FuY2VsbGVkIScsIHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg fSwKLSAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAv LyBFbmFibGUvRGlzYWJsZSBxdWVyeSB0b29sIGJ1dHRvbiBvbmx5IGlmIGlzX3F1ZXJ5X3Rvb2wg aXMgdHJ1ZS4KLSAgICAgICAgICAgICAgICBzZWxmLnJlc2V0UXVlcnlIaXN0b3J5T2JqZWN0KHNl bGYpOwotICAgICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9h ZGluZy1pY29uOmhpZGUnKTsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZi5pc19xdWVyeV90b29s KSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLmRpc2FibGVfdG9vbF9idXR0b25zKGZhbHNlKTsK LSAgICAgICAgICAgICAgICAgICQoJyNidG4tY2FuY2VsLXF1ZXJ5JykucHJvcCgnZGlzYWJsZWQn LCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZS5yZWFk eVN0YXRlID09IDApIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5 KGZhbHNlLAotICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRo ZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQu JykKLSAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2Vy TWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgICAg IHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAg ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIG1zZyA9IGUucmVzcG9uc2VUZXh0 OwotICAgICAgICAgICAgICAgIGlmIChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQgJiYKLSAg ICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkKLSAg ICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotCi0gICAgICAg ICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1zZyk7Ci0gICAgICAgICAg ICAgICAgLy8gSGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0aGUgc3FsIHBhbmVsCi0gICAgICAgICAg ICAgICAgc2VsZi5faGlnaGxpZ2h0X2Vycm9yKG1zZyk7Ci0gICAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICB9KTsKLSAgICAgICAgICB9LCBzZWxmLlBPTExfRkFMTEJBQ0tfVElNRSgpKTsKKyAg ICAgICAgY29uc3QgZXhlY3V0ZVF1ZXJ5ID0gbmV3IEV4ZWN1dGVRdWVyeS5FeGVjdXRlUXVlcnko dGhpcywgcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50KTsKKyAgICAgICAgZXhlY3V0ZVF1 ZXJ5LmRlbGF5ZWRQb2xsKHRoaXMpOwogICAgICAgfSwKIAogICAgICAgLyogVGhpcyBmdW5jdGlv biBpcyB1c2VkIHRvIGNyZWF0ZSB0aGUgYmFja2dyaWQgY29sdW1ucywKQEAgLTI5NDEsNyArMjg3 Miw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICAgIHBnQWRt aW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKICAgICAgICAgICAgICAgfQog Ci0gICAgICAgICAgICAgIGlmKGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgeworICAg ICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkp IHsKICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zYXZlJywgW3ZpZXcsIGNvbnRy b2xsZXIsIHNhdmVfYXNdKTsKICAgICAgICAgICAgICAgICBzZWxmLmluaXRfdHJhbnNhY3Rpb24o KTsKICAgICAgICAgICAgICAgfQpAQCAtMzI2Nyw3ICszMTk4LDcgQEAgZGVmaW5lKCd0b29scy5x dWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1h bmFnZW1lbnQucGdhX2xvZ2luKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmKGlz X25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgeworICAgICAgICAgICAgaWYodHJhbnNhY3Rp b24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7CiAgICAgICAgICAgICAgIHNlbGYu c2F2ZV9zdGF0ZSgnX3Nob3dfZmlsdGVyJywgW10pOwogICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5pbml0X3RyYW5zYWN0aW9uKCk7CiAgICAgICAgICAgICB9CkBAIC0zMzU2LDcgKzMyODcsNyBA QCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgICAgcmV0dXJuIHBnQWRt aW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKICAgICAgICAgICAgIH0KIAot ICAgICAgICAgICAgaWYoaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7CisgICAgICAg ICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKICAg ICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfaW5jbHVkZV9maWx0ZXInLCBbXSk7CiAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgIH0K QEAgLTM0NDcsNyArMzM3OCw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAg ICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigp OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVx dWlyZWQoZSkpIHsKKyAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlv bl9yZXF1aXJlZChlKSkgewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19leGNsdWRl X2ZpbHRlcicsIFtdKTsKICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlv bigpOwogICAgICAgICAgICAgfQpAQCAtMzUxNyw3ICszNDQ4LDcgQEAgZGVmaW5lKCd0b29scy5x dWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1h bmFnZW1lbnQucGdhX2xvZ2luKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmKGlz X25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgeworICAgICAgICAgICAgaWYodHJhbnNhY3Rp b24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7CiAgICAgICAgICAgICAgIHNlbGYu c2F2ZV9zdGF0ZSgnX3JlbW92ZV9maWx0ZXInLCBbXSk7CiAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgIH0KQEAgLTM1OTIsNyArMzUyMyw3 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICByZXR1cm4gcGdB ZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwogICAgICAgICAgICAgfQog Ci0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKKyAgICAg ICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewog ICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19hcHBseV9maWx0ZXInLCBbXSk7CiAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgIH0K QEAgLTM3NDcsNyArMzY3OCw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAg ICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigp OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVx dWlyZWQoZSkpIHsKKyAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlv bl9yZXF1aXJlZChlKSkgewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zZXRfbGlt aXQnLCBbXSk7CiAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsK ICAgICAgICAgICAgIH0KQEAgLTM3OTUsMTAgKzM3MjYsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgICAgIC8vIGFuZCBleGVjdXRlIHRoZSBxdWVyeS4KICAgICAgIGV4ZWN1dGU6 IGZ1bmN0aW9uKGV4cGxhaW5fcHJlZml4KSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAg ICAgICAgICBzcWwgPSAnJywKLSAgICAgICAgICB1cmwgPSB1cmxfZm9yKCdzcWxlZGl0b3IucXVl cnlfdG9vbF9zdGFydCcsIHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwK LSAgICAgICAgICB9KTsKKyAgICAgICAgICBzcWwgPSAnJzsKIAogICAgICAgICBzZWxmLmhhc19t b3JlX3Jvd3MgPSBmYWxzZTsKICAgICAgICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFsc2U7CkBA IC0zODEyLDEwOSArMzc0MCw4IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAg ICBlbHNlCiAgICAgICAgICAgc3FsID0gc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRW YWx1ZSgpOwogCi0gICAgICAgIC8vIElmIGl0IGlzIGFuIGVtcHR5IHF1ZXJ5LCBkbyBub3RoaW5n LgotICAgICAgICBpZiAoc3FsLmxlbmd0aCA8PSAwKSByZXR1cm47Ci0KLSAgICAgICAgc2VsZi50 cmlnZ2VyKAotICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycs Ci0gICAgICAgICAgZ2V0dGV4dCgnSW5pdGlhbGl6aW5nIHF1ZXJ5IGV4ZWN1dGlvbi4uLicpCi0g ICAgICAgICk7Ci0KLSAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1 ZSk7Ci0KLSAgICAgICAgaWYgKGV4cGxhaW5fcHJlZml4ICE9IHVuZGVmaW5lZCAmJgotICAgICAg ICAgICFTLnN0YXJ0c1dpdGgoc3FsLnRyaW0oKS50b1VwcGVyQ2FzZSgpLCAnRVhQTEFJTicpKSB7 Ci0gICAgICAgICAgc3FsID0gZXhwbGFpbl9wcmVmaXggKyAnICcgKyBzcWw7Ci0gICAgICAgIH0K LQotICAgICAgICBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICBz ZWxmLnF1ZXJ5ID0gc3FsOwotICAgICAgICBzZWxmLnJvd3NfYWZmZWN0ZWQgPSAwOwotICAgICAg ICBzZWxmLl9pbml0X3BvbGxpbmdfZmxhZ3MoKTsKLSAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xf YnV0dG9ucyh0cnVlKTsKLSAgICAgICAgJCgnI2J0bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNh YmxlZCcsIGZhbHNlKTsKLQotICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYKLSAg ICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID09ICdjb25uZWN0Jykgewot ICAgICAgICAgIHVybCArPSAnP2Nvbm5lY3Q9MSc7Ci0gICAgICAgIH0KLQotICAgICAgICAkLmFq YXgoewotICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAg ICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTog SlNPTi5zdHJpbmdpZnkoc3FsKSwKLSAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsK LSAgICAgICAgICAgIC8vIFJlbW92ZSBtYXJrZXIKLSAgICAgICAgICAgIGlmIChzZWxmLmdyaWRW aWV3Lm1hcmtlcikgewotICAgICAgICAgICAgICBzZWxmLmdyaWRWaWV3Lm1hcmtlci5jbGVhcigp OwotICAgICAgICAgICAgICBkZWxldGUgc2VsZi5ncmlkVmlldy5tYXJrZXI7Ci0gICAgICAgICAg ICAgIHNlbGYuZ3JpZFZpZXcubWFya2VyID0gbnVsbDsKLQotICAgICAgICAgICAgICAvLyBSZW1v dmUgYWxyZWFkeSBleGlzdGluZyBtYXJrZXIKLSAgICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5x dWVyeV90b29sX29iai5yZW1vdmVMaW5lQ2xhc3Moc2VsZi5tYXJrZWRfbGluZV9ubywgJ3dyYXAn LCAnQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQnKTsKLSAgICAgICAgICAgIH0KLQot ICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykgewotICAgICAgICAgICAgICBzZWxmLnRy aWdnZXIoCi0gICAgICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpt ZXNzYWdlJywKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCdXYWl0aW5nIGZvciB0aGUgcXVlcnkg ZXhlY3V0aW9uIHRvIGNvbXBsZXRlLi4uJykKLSAgICAgICAgICAgICAgKTsKLQotICAgICAgICAg ICAgICBzZWxmLmNhbl9lZGl0ID0gcmVzLmRhdGEuY2FuX2VkaXQ7Ci0gICAgICAgICAgICAgIHNl bGYuY2FuX2ZpbHRlciA9IHJlcy5kYXRhLmNhbl9maWx0ZXI7Ci0gICAgICAgICAgICAgIHNlbGYu aW5mb19ub3RpZmllcl90aW1lb3V0ID0gcmVzLmRhdGEuaW5mb19ub3RpZmllcl90aW1lb3V0Owot Ci0gICAgICAgICAgICAgIC8vIElmIHN0YXR1cyBpcyBUcnVlIHRoZW4gcG9sbCB0aGUgcmVzdWx0 LgotICAgICAgICAgICAgICBzZWxmLl9wb2xsKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpo aWRlJyk7Ci0gICAgICAgICAgICAgIHNlbGYuZGlzYWJsZV90b29sX2J1dHRvbnMoZmFsc2UpOwot ICAgICAgICAgICAgICAkKCcjYnRuLWNhbmNlbC1xdWVyeScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1 ZSk7Ci0gICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCByZXMuZGF0 YS5yZXN1bHQpOwotCi0gICAgICAgICAgICAgIC8vIEhpZ2hsaWdodCB0aGUgZXJyb3IgaW4gdGhl IHNxbCBwYW5lbAotICAgICAgICAgICAgICBzZWxmLl9oaWdobGlnaHRfZXJyb3IocmVzLmRhdGEu cmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9LAotICAgICAgICAgIGVycm9yOiBm dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9y OmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICBzZWxmLmRpc2FibGVfdG9vbF9idXR0 b25zKGZhbHNlKTsKLSAgICAgICAgICAgICQoJyNidG4tY2FuY2VsLXF1ZXJ5JykucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0g ICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLAotICAgICAgICAgICAg ICAgIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlv biB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICApOwotICAg ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0g ICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnZXhlY3V0ZScsIFtleHBsYWluX3ByZWZpeF0p OwotICAgICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2lu KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKGlzX25ld190cmFuc2FjdGlvbl9y ZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ2V4ZWN1dGUnLCBb ZXhwbGFpbl9wcmVmaXhdKTsKLSAgICAgICAgICAgICAgc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7 Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0g ICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpTT04gIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg ICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewotICAgICAgICAg ICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAgICB9Ci0K LSAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8g IT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5pbmZvID09 ICdDT05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnZXhlY3V0ZScsIFtleHBs YWluX3ByZWZpeF0pOwotICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdGlvbl9s b3N0KGZhbHNlLCBlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1z Zyk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGV4ZWN1dGVRdWVy eSA9IG5ldyBFeGVjdXRlUXVlcnkuRXhlY3V0ZVF1ZXJ5KHRoaXMsIHBnQWRtaW4uQnJvd3Nlci5V c2VyTWFuYWdlbWVudCk7CisgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKHNxbCwgZXhwbGFp bl9wcmVmaXgpOwogICAgICAgfSwKIAogICAgICAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv IGhpZ2hsaWdodCB0aGUgZXJyb3IgbGluZSBhbmQKQEAgLTQwNzgsNyArMzkwNSw3IEBAIGRlZmlu ZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93 c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwogICAgICAgICAgICAgfQogCi0gICAgICAg ICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKKyAgICAgICAgICAgIGlm KHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewogICAgICAgICAg ICAgICBzZWxmLnNhdmVfc3RhdGUoJ19hdXRvX3JvbGxiYWNrJywgW10pOwogICAgICAgICAgICAg ICBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgIH0KQEAgLTQxMzksNyArMzk2 Niw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICByZXR1cm4g cGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwogICAgICAgICAgICAg fQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKKyAg ICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkg ewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19hdXRvX2NvbW1pdCcsIFtdKTsKICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwogICAgICAgICAgICAg fQpAQCAtNDIwMSw3ICs0MDI4LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAg ICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2lu KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmKGlzX25ld190cmFuc2FjdGlvbl9y ZXF1aXJlZChlKSkgeworICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0 aW9uX3JlcXVpcmVkKGUpKSB7CiAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2V4cGxh aW5fdmVyYm9zZScsIFtdKTsKICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2Fj dGlvbigpOwogICAgICAgICAgICAgfQpAQCAtNDI1MCw3ICs0MDc3LDcgQEAgZGVmaW5lKCd0b29s cy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNl ck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm KGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgeworICAgICAgICAgICAgaWYodHJhbnNh Y3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7CiAgICAgICAgICAgICAgIHNl bGYuc2F2ZV9zdGF0ZSgnX2V4cGxhaW5fY29zdHMnLCBbXSk7CiAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgIH0KQEAgLTQyOTgsNyArNDEy NSw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICByZXR1cm4g cGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwogICAgICAgICAgICAg fQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKKyAg ICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkg ewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19leHBsYWluX2J1ZmZlcnMnLCBbXSk7 CiAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICAgICAg ICAgIH0KQEAgLTQzNDUsNyArNDE3Miw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwog ICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9s b2dpbigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZihpc19uZXdfdHJhbnNhY3Rp b25fcmVxdWlyZWQoZSkpIHsKKyAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFu c2FjdGlvbl9yZXF1aXJlZChlKSkgewogICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19l eHBsYWluX3RpbWluZycsIFtdKTsKICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFu c2FjdGlvbigpOwogICAgICAgICAgICAgfQpAQCAtNDM3OSw2ICs0MjA2LDEwIEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICByZXR1cm4gaXNfcXVlcnlfcnVubmluZzsKICAg ICAgIH0sCiAKKyAgICAgIHNldElzUXVlcnlSdW5uaW5nOiBmdW5jdGlvbih2YWx1ZSkgeworICAg ICAgICBpc19xdWVyeV9ydW5uaW5nID0gdmFsdWU7CisgICAgICB9LAorCiAgICAgICAvKgogICAg ICAgICogVGhpcyBmdW5jdGlvbiBnZXQgZXhwbGFpbiBvcHRpb25zIGFuZCBhdXRvIHJvbGxiYWNr L2F1dG8gY29tbWl0CiAgICAgICAgKiB2YWx1ZXMgZnJvbSBwcmVmZXJlbmNlcwpAQCAtNDQ1NSw3 ICs0Mjg2LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgIHJl dHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7CiAgICAgICAg ICAgICB9CiAKLSAgICAgICAgICAgIGlmKGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkg eworICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVk KGUpKSB7CiAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnZ2V0X3ByZWZlcmVuY2VzJywg W10pOwogICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7CiAgICAg ICAgICAgICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxh dGVzL3NxbGVkaXRvci9zcWwvMTBfcGx1cy9leHBsYWluX3BsYW4uc3FsIGIvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsLzEwX3BsdXMvZXhwbGFpbl9w bGFuLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZmM0YThkMmQKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3Nx bGVkaXRvci9zcWwvMTBfcGx1cy9leHBsYWluX3BsYW4uc3FsCkBAIC0wLDAgKzEsMjMgQEAKK0VY UExBSU4gKAoreyUgaWYgZm9ybWF0ICV9CisgIEZPUk1BVCB7eyBmb3JtYXQudXBwZXIoKSB9fSwK K3slIGVuZGlmICV9Cit7JSBpZiBhbmFseXplIGlzIGRlZmluZWQgJX0KKyAgQU5BTFlaRSB7eyBh bmFseXplIH19LAoreyUgZW5kaWYgJX0KK3slIGlmIHZlcmJvc2UgaXMgZGVmaW5lZCAlfQorICBW RVJCT1NFIHt7IHZlcmJvc2UgfX0sCit7JSBlbmRpZiAlfQoreyUgaWYgY29zdHMgaXMgZGVmaW5l ZCAlfQorICBDT1NUUyB7eyBjb3N0cyB9fSwKK3slIGVuZGlmICV9Cit7JSBpZiB0aW1pbmcgaXMg ZGVmaW5lZCAlfQorICBUSU1JTkcge3sgdGltaW5nIH19LAoreyUgZW5kaWYgJX0KK3slIGlmIHN1 bW1hcnkgaXMgZGVmaW5lZCAlfQorICBTVU1NQVJZIHt7IHN1bW1hcnkgfX0sCit7JSBlbmRpZiAl fQoreyUgaWYgYnVmZmVycyBpcyBkZWZpbmVkICV9CisgIEJVRkZFUlMge3sgYnVmZmVycyB9fQor eyUgZW5kaWYgJX0KKykge3sgc3FsIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvOS4yX3BsdXMvZXhwbGFpbl9wbGFuLnNx bCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC85 LjJfcGx1cy9leHBsYWluX3BsYW4uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwLi4zMTUxNzRhNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC85LjJfcGx1cy9leHBsYWluX3BsYW4uc3FsCkBA IC0wLDAgKzEsMjAgQEAKK0VYUExBSU4gKAoreyUgaWYgZm9ybWF0ICV9CisgIEZPUk1BVCB7eyBm b3JtYXQudXBwZXIoKSB9fSwKK3slIGVuZGlmICV9Cit7JSBpZiBhbmFseXplIGlzIGRlZmluZWQg JX0KKyAgQU5BTFlaRSB7eyBhbmFseXplIH19LAoreyUgZW5kaWYgJX0KK3slIGlmIHZlcmJvc2Ug aXMgZGVmaW5lZCAlfQorICBWRVJCT1NFIHt7IHZlcmJvc2UgfX0sCit7JSBlbmRpZiAlfQoreyUg aWYgY29zdHMgaXMgZGVmaW5lZCAlfQorICBDT1NUUyB7eyBjb3N0cyB9fSwKK3slIGVuZGlmICV9 Cit7JSBpZiB0aW1pbmcgaXMgZGVmaW5lZCAlfQorICBUSU1JTkcge3sgdGltaW5nIH19LAoreyUg ZW5kaWYgJX0KK3slIGlmIGJ1ZmZlcnMgaXMgZGVmaW5lZCAlfQorICBCVUZGRVJTIHt7IGJ1ZmZl cnMgfX0KK3slIGVuZGlmICV9CispIHt7IHNxbCB9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvZXhwbGFpbl9w bGFuLnNxbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9y L3NxbC9kZWZhdWx0L2V4cGxhaW5fcGxhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLjcyYjIwYzk1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvZXhwbGFpbl9wbGFuLnNx bApAQCAtMCwwICsxLDE3IEBACitFWFBMQUlOICgKK3slIGlmIGZvcm1hdCAlfQorICBGT1JNQVQg e3sgZm9ybWF0LnVwcGVyKCkgfX0sCit7JSBlbmRpZiAlfQoreyUgaWYgYW5hbHl6ZSBpcyBkZWZp bmVkICV9CisgIEFOQUxZWkUge3sgYW5hbHl6ZSB9fSwKK3slIGVuZGlmICV9Cit7JSBpZiB2ZXJi b3NlIGlzIGRlZmluZWQgJX0KKyAgVkVSQk9TRSB7eyB2ZXJib3NlIH19LAoreyUgZW5kaWYgJX0K K3slIGlmIGNvc3RzIGlzIGRlZmluZWQgJX0KKyAgQ09TVFMge3sgY29zdHMgfX0sCit7JSBlbmRp ZiAlfQoreyUgaWYgYnVmZmVycyBpcyBkZWZpbmVkICV9CisgIEJVRkZFUlMge3sgYnVmZmVycyB9 fQoreyUgZW5kaWYgJX0KKykge3sgc3FsIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvZ3BkYl81LjBfcGx1cy9leHBsYWlu X3BsYW4uc3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0 b3Ivc3FsL2dwZGJfNS4wX3BsdXMvZXhwbGFpbl9wbGFuLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uYWFjYWJlNDUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvZ3BkYl81LjBfcGx1cy9l eHBsYWluX3BsYW4uc3FsCkBAIC0wLDAgKzEsNSBAQAorRVhQTEFJTgoreyUgaWYgYW5hbHl6ZSAl fQorIEFOQUxZWkUKK3slIGVuZGlmICV9Cisge3sgc3FsIH19CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLjU5MDAyNmFkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOCBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0 cy90ZXN0X2V4cGxhaW5fcGxhbl90ZW1wbGF0ZXMucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3IvdGVzdHMvdGVzdF9leHBsYWluX3BsYW5fdGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hYjAxODc4OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2V4cGxhaW5fcGxhbl90ZW1wbGF0ZXMu cHkKQEAgLTAsMCArMSwxNTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBv cworCitmcm9tIGZsYXNrIGltcG9ydCBGbGFzaywgcmVuZGVyX3RlbXBsYXRlCitmcm9tIGppbmph MiBpbXBvcnQgRmlsZVN5c3RlbUxvYWRlcgorCitmcm9tIHBnYWRtaW4gaW1wb3J0IFZlcnNpb25l ZFRlbXBsYXRlTG9hZGVyCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0 R2VuZXJhdG9yCisKKworY2xhc3MgVGVzdEV4cGxhaW5QbGFuVGVtcGxhdGVzKEJhc2VUZXN0R2Vu ZXJhdG9yKToKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgKKyAgICAgICAgICAgICdXaGVu IHJlbmRlcmluZyBQb3N0Z3JlcyA5LjAgdGVtcGxhdGUsICcKKyAgICAgICAgICAgICd3aGVuIHBh c3NpbmcgYWxsIHBhcmFtZXRlcnMsJworICAgICAgICAgICAgJ2l0IHJldHVybnMgdGhlIGV4cGxh aW4gcGxhbiB3aXRoIGFsbCBwYXJhbWV0ZXJzJywKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgICAgdGVtcGxhdGVfcGF0aD1vcy5wYXRoLmpvaW4oJ3NxbGVkaXRvcicsICdzcWwnLCAn ZGVmYXVsdCcsICdleHBsYWluX3BsYW4uc3FsJyksCisgICAgICAgICAgICAgICAgaW5wdXRfcGFy YW1ldGVycz1kaWN0KAorICAgICAgICAgICAgICAgICAgICBzcWw9J3NlbGVjdCAqIGZyb20gcGxh Y2VzJywKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSd4bWwnLAorICAgICAgICAgICAgICAg ICAgICBhbmFseXplPVRydWUsCisgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgY29zdHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZl cnM9VHJ1ZQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgc3FsX3N0YXRlbWVu dD0nc2VsZWN0ICogZnJvbSBwbGFjZXMnLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JldHVy bl92YWx1ZT0nRVhQTEFJTiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcoICBGT1JNQVQgWE1MLCAgQU5BTFlaRSBUcnVlLCAgVkVSQk9TRSBUcnVlLCAgJworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09TVFMgRmFsc2UsICBCVUZGRVJTIFRy dWUpIHNlbGVjdCAqIGZyb20gcGxhY2VzJworICAgICAgICAgICAgKQorICAgICAgICApLAorICAg ICAgICAoCisgICAgICAgICAgICAnV2hlbiByZW5kZXJpbmcgUG9zdGdyZXMgOS4wIHRlbXBsYXRl LCAnCisgICAgICAgICAgICAnd2hlbiBub3QgYWxsIHBhcmFtZXRlcnMgYXJlIHByZXNlbnQsJwor ICAgICAgICAgICAgJ2l0IHJldHVybnMgdGhlIGV4cGxhaW4gcGxhbiB3aXRoIHRoZSBwcmVzZW50 IHBhcmFtZXRlcnMnLAorICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICB0ZW1wbGF0 ZV9wYXRoPW9zLnBhdGguam9pbignc3FsZWRpdG9yJywgJ3NxbCcsICdkZWZhdWx0JywgJ2V4cGxh aW5fcGxhbi5zcWwnKSwKKyAgICAgICAgICAgICAgICBpbnB1dF9wYXJhbWV0ZXJzPWRpY3QoCisg ICAgICAgICAgICAgICAgICAgIHNxbD0nc2VsZWN0ICogZnJvbSBwbGFjZXMnLAorICAgICAgICAg ICAgICAgICAgICBmb3JtYXQ9J2pzb24nLAorICAgICAgICAgICAgICAgICAgICBidWZmZXJzPVRy dWUKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHNxbF9zdGF0ZW1lbnQ9J3Nl bGVjdCAqIGZyb20gcGxhY2VzJywKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9yZXR1cm5fdmFs dWU9J0VYUExBSU4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCAg Rk9STUFUIEpTT04sICBCVUZGRVJTIFRydWUpIHNlbGVjdCAqIGZyb20gcGxhY2VzJworICAgICAg ICAgICAgKQorICAgICAgICApLAorICAgICAgICAoCisgICAgICAgICAgICAnV2hlbiByZW5kZXJp bmcgUG9zdGdyZXMgOS4yIHRlbXBsYXRlLCAnCisgICAgICAgICAgICAnd2hlbiB0aW1pbmcgaXMg cHJlc2VudCwnCisgICAgICAgICAgICAnaXQgcmV0dXJucyB0aGUgZXhwbGFpbiBwbGFuIHdpdGgg dGltaW5nJywKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgdGVtcGxhdGVfcGF0 aD1vcy5wYXRoLmpvaW4oJ3NxbGVkaXRvcicsICdzcWwnLCAnOS4yX3BsdXMnLCAnZXhwbGFpbl9w bGFuLnNxbCcpLAorICAgICAgICAgICAgICAgIGlucHV0X3BhcmFtZXRlcnM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgICAgc3FsPSdzZWxlY3QgKiBmcm9tIHBsYWNlcycsCisgICAgICAgICAgICAg ICAgICAgIGZvcm1hdD0nanNvbicsCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnM9VHJ1ZSwK KyAgICAgICAgICAgICAgICAgICAgdGltaW5nPUZhbHNlCisgICAgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICAgICBzcWxfc3RhdGVtZW50PSdzZWxlY3QgKiBmcm9tIHBsYWNlcycsCisgICAg ICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVlPSdFWFBMQUlOICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyggIEZPUk1BVCBKU09OLCAgVElNSU5HIEZhbHNl LCAgQlVGRkVSUyBUcnVlKSBzZWxlY3QgKiBmcm9tIHBsYWNlcycKKyAgICAgICAgICAgICkKKyAg ICAgICAgKSwKKyAgICAgICAgKAorICAgICAgICAgICAgJ1doZW4gcmVuZGVyaW5nIFBvc3RncmVz IDEwIHRlbXBsYXRlLCAnCisgICAgICAgICAgICAnd2hlbiBzdW1tYXJ5IGlzIHByZXNlbnQsJwor ICAgICAgICAgICAgJ2l0IHJldHVybnMgdGhlIGV4cGxhaW4gcGxhbiB3aXRoIHN1bW1hcnknLAor ICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoPW9zLnBhdGgu am9pbignc3FsZWRpdG9yJywgJ3NxbCcsICcxMF9wbHVzJywgJ2V4cGxhaW5fcGxhbi5zcWwnKSwK KyAgICAgICAgICAgICAgICBpbnB1dF9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAg ICAgIHNxbD0nc2VsZWN0ICogZnJvbSBwbGFjZXMnLAorICAgICAgICAgICAgICAgICAgICBmb3Jt YXQ9J3lhbWwnLAorICAgICAgICAgICAgICAgICAgICBidWZmZXJzPVRydWUsCisgICAgICAgICAg ICAgICAgICAgIHRpbWluZz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgc3VtbWFyeT1UcnVl CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBzcWxfc3RhdGVtZW50PSdzZWxl Y3QgKiBmcm9tIHBsYWNlcycsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVl PSdFWFBMQUlOICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyggIEZP Uk1BVCBZQU1MLCAgVElNSU5HIEZhbHNlLCAgU1VNTUFSWSBUcnVlLCAgQlVGRkVSUyBUcnVlKSBz ZWxlY3QgKiBmcm9tIHBsYWNlcycKKyAgICAgICAgICAgICkKKyAgICAgICAgKSwKKyAgICAgICAg KAorICAgICAgICAgICAgJ1doZW4gcmVuZGVyaW5nIEdyZWVuUGx1bSA1LjMgdGVtcGxhdGUsICcK KyAgICAgICAgICAgICd3aGVuIGFsbCBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCcKKyAgICAgICAg ICAgICdpdCByZXR1cm5zIHRoZSBleHBsYWluIHdpdGhvdXQgcGFyYW1ldGVycycsCisgICAgICAg ICAgICBkaWN0KAorICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BhdGg9b3MucGF0aC5qb2luKCdz cWxlZGl0b3InLCAnc3FsJywgJ2dwZGJfNS4wX3BsdXMnLCAnZXhwbGFpbl9wbGFuLnNxbCcpLAor ICAgICAgICAgICAgICAgIGlucHV0X3BhcmFtZXRlcnM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ICAgc3FsPSdzZWxlY3QgKiBmcm9tIHBsYWNlcycsCisgICAgICAgICAgICAgICAgICAgIGZvcm1h dD0nanNvbicsCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnM9VHJ1ZQorICAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICAgc3FsX3N0YXRlbWVudD0nc2VsZWN0ICogZnJvbSBwbGFj ZXMnLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JldHVybl92YWx1ZT0nRVhQTEFJTiBzZWxl Y3QgKiBmcm9tIHBsYWNlcycKKyAgICAgICAgICAgICkKKyAgICAgICAgKSwKKyAgICAgICAgKAor ICAgICAgICAgICAgJ1doZW4gcmVuZGVyaW5nIEdyZWVuUGx1bSA1LjMgdGVtcGxhdGUsICcKKyAg ICAgICAgICAgICd3aGVuIGFuYWx5emUgaXMgdHJ1ZSwnCisgICAgICAgICAgICAnaXQgcmV0dXJu cyB0aGUgZXhwbGFpbiBhbmFseXplJywKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg ICAgdGVtcGxhdGVfcGF0aD1vcy5wYXRoLmpvaW4oJ3NxbGVkaXRvcicsICdzcWwnLCAnZ3BkYl81 LjBfcGx1cycsICdleHBsYWluX3BsYW4uc3FsJyksCisgICAgICAgICAgICAgICAgaW5wdXRfcGFy YW1ldGVycz1kaWN0KAorICAgICAgICAgICAgICAgICAgICBzcWw9J3NlbGVjdCAqIGZyb20gcGxh Y2VzJywKKyAgICAgICAgICAgICAgICAgICAgYW5hbHl6ZT1UcnVlCisgICAgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICAgICBzcWxfc3RhdGVtZW50PSdzZWxlY3QgKiBmcm9tIHBsYWNlcycs CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVlPSdFWFBMQUlOIEFOQUxZWkUg c2VsZWN0ICogZnJvbSBwbGFjZXMnCisgICAgICAgICAgICApCisgICAgICAgICksCisgICAgICAg ICgKKyAgICAgICAgICAgICdXaGVuIHJlbmRlcmluZyBHcmVlblBsdW0gNS4zIHRlbXBsYXRlLCAn CisgICAgICAgICAgICAnd2hlbiBhbmFseXplIGlzIGZhbHNlLCcKKyAgICAgICAgICAgICdpdCBy ZXR1cm5zIHRoZSBvbmx5IGV4cGxhaW4nLAorICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAg ICAgICB0ZW1wbGF0ZV9wYXRoPW9zLnBhdGguam9pbignc3FsZWRpdG9yJywgJ3NxbCcsICdncGRi XzUuMF9wbHVzJywgJ2V4cGxhaW5fcGxhbi5zcWwnKSwKKyAgICAgICAgICAgICAgICBpbnB1dF9w YXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgICAgIHNxbD0nc2VsZWN0ICogZnJvbSBw bGFjZXMnLAorICAgICAgICAgICAgICAgICAgICBhbmFseXplPUZhbHNlCisgICAgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICAgICBzcWxfc3RhdGVtZW50PSdzZWxlY3QgKiBmcm9tIHBsYWNl cycsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVlPSdFWFBMQUlOIHNlbGVj dCAqIGZyb20gcGxhY2VzJworICAgICAgICAgICAgKQorICAgICAgICApLAorICAgIF0KKworICAg IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBWZXJzaW9uZWRUZW1wbGF0 ZUxvYWRlcihGYWtlQXBwKCkpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgd2l0 aCBGYWtlQXBwKCkuYXBwX2NvbnRleHQoKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcl90 ZW1wbGF0ZShzZWxmLnRlbXBsYXRlX3BhdGgsICoqc2VsZi5pbnB1dF9wYXJhbWV0ZXJzKQorICAg ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIocmVzdWx0KS5y ZXBsYWNlKCJcbiIsICIiKSwgc2VsZi5leHBlY3RlZF9yZXR1cm5fdmFsdWUpCisKKworY2xhc3Mg RmFrZUFwcChGbGFzayk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihG YWtlQXBwLCBzZWxmKS5fX2luaXRfXygiIikKKyAgICAgICAgc2VsZi5qaW5qYV9sb2FkZXIgPSBG aWxlU3lzdGVtTG9hZGVyKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVh bHBhdGgoX19maWxlX18pKSArICIvLi4vdGVtcGxhdGVzIgorICAgICAgICApCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9leHRyYWN0X3NxbF9mcm9t X25ldHdvcmtfcGFyYW1ldGVycy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0 cy90ZXN0X2V4dHJhY3Rfc3FsX2Zyb21fbmV0d29ya19wYXJhbWV0ZXJzLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jNGUwMDJjYwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2V4dHJhY3Rfc3FsX2Zyb21fbmV0 d29ya19wYXJhbWV0ZXJzLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKK2Zyb20gd2Vya3pldWcuZGF0YXN0cnVjdHVyZXMgaW1wb3J0IEltbXV0YWJsZU11bHRp RGljdAorCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yIGltcG9ydCBleHRyYWN0X3NxbF9m cm9tX25ldHdvcmtfcGFyYW1ldGVycworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorCisKK2NsYXNzIEV4dHJhY3RTUUxGcm9tTmV0d29ya1BhcmFtZXRl cnNUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIHZhbGlk YXRlcyB0aGUgY2hhbmdlIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHkKKyAgICBieSBkZWZpbmluZyBj aGFuZ2UgcGFzc3dvcmQgc2NlbmFyaW9zOyB3aGVyZSBkaWN0IG9mCisgICAgcGFyYW1ldGVycyBk ZXNjcmliZXMgdGhlIHNjZW5hcmlvIGFwcGVuZGVkIGJ5IHRlc3QgbmFtZS4KKyAgICAiIiIKKwor ICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdTaW5nbGUgc3RyaW5nIGluIHRoZSBwYXlsb2Fk JywgZGljdCgKKyAgICAgICAgICAgIHJlcXVlc3Rfc3RyaWdpZmllZF9kYXRhPScic29tZSBzcWwi JywKKyAgICAgICAgICAgIHJlcXVlc3RfYXJndW1lbnRzPUltbXV0YWJsZU11bHRpRGljdCgpLAor ICAgICAgICAgICAgcmVxdWVzdF9mb3JtX2RhdGE9SW1tdXRhYmxlTXVsdGlEaWN0KCksCisKKyAg ICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdD1kaWN0KHNxbD0nc29tZSBzcWwnLCBleHBsYWluX3Bs YW49Tm9uZSkKKyAgICAgICAgKSksCisgICAgICAgICgnUGF5bG9hZCB0aGF0IHJlcXVlc3RzIGV4 cGxhaW4gcGxhbiB1c2luZyBqc29uJywgZGljdCgKKyAgICAgICAgICAgIHJlcXVlc3Rfc3RyaWdp ZmllZF9kYXRhPSd7InNxbCI6ICJzb21lIHNxbCIsICJleHBsYWluX3BsYW4iOiB7ImZvcm1hdCI6 ICJqc29uIiwgImFuYWx5emUiOiBmYWxzZSwgInZlcmJvc2UiOiBmYWxzZSwgImNvc3RzIjogZmFs c2UsICJidWZmZXJzIjogZmFsc2UsICJ0aW1pbmciOiBmYWxzZX19JywKKyAgICAgICAgICAgIHJl cXVlc3RfYXJndW1lbnRzPUltbXV0YWJsZU11bHRpRGljdCgpLAorICAgICAgICAgICAgcmVxdWVz dF9mb3JtX2RhdGE9SW1tdXRhYmxlTXVsdGlEaWN0KCksCisKKyAgICAgICAgICAgIGV4cGVjdGVk X3Jlc3VsdD1kaWN0KAorICAgICAgICAgICAgICAgIHNxbD0nc29tZSBzcWwnLAorICAgICAgICAg ICAgICAgIGV4cGxhaW5fcGxhbj1kaWN0KAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J2pz b24nLAorICAgICAgICAgICAgICAgICAgICBhbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAg ICAgICB2ZXJib3NlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBidWZmZXJzPUZhbHNlLAor ICAgICAgICAgICAgICAgICAgICBjb3N0cz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgdGlt aW5nPUZhbHNlCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApKQor ICAgIF0KKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJDaGVjayBjb3JyZWN0 IGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBoYW5kbGUgdG8gcnVuIHF1ZXJ5LiIiIgorCisgICAgICAg IHJlc3VsdCA9IGV4dHJhY3Rfc3FsX2Zyb21fbmV0d29ya19wYXJhbWV0ZXJzKAorICAgICAgICAg ICAgc2VsZi5yZXF1ZXN0X3N0cmlnaWZpZWRfZGF0YSwKKyAgICAgICAgICAgIHNlbGYucmVxdWVz dF9hcmd1bWVudHMsCisgICAgICAgICAgICBzZWxmLnJlcXVlc3RfZm9ybV9kYXRhCisgICAgICAg ICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQsIHNlbGYuZXhwZWN0ZWRfcmVz dWx0KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3Rf c3RhcnRfcXVlcnlfdG9vbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90 ZXN0X3N0YXJ0X3F1ZXJ5X3Rvb2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLjVlMjc1MmFlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL3Rlc3RzL3Rlc3Rfc3RhcnRfcXVlcnlfdG9vbC5weQpAQCAtMCwwICsxLDM4IEBACisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisj CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9y IGltcG9ydCBTdGFydFJ1bm5pbmdRdWVyeQorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMp OgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIEFOWQorZWxzZToKKyAgICBmcm9tIHVuaXR0 ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBBTlkKKworCitjbGFzcyBTdGFydFF1ZXJ5VG9vbChCYXNl VGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgRW5zdXJlcyB0aGF0IHRoZSBjYWxsIHRvIHRo ZSBiYWNrZW5kIHRvIHN0YXJ0IHJ1bm5pbmcgYSBxdWVyeQorICAgIGNhbGxzIHRoZSBuZWVkZWQg ZnVuY3Rpb25zCisgICAgIiIiCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuc3FsZWRpdG9y LmV4dHJhY3Rfc3FsX2Zyb21fbmV0d29ya19wYXJhbWV0ZXJzJykKKyAgICBkZWYgcnVuVGVzdChz ZWxmLCBleHRyYWN0X3NxbF9mcm9tX25ldHdvcmtfcGFyYW1ldGVyc19tb2NrKToKKyAgICAgICAg IiIiQ2hlY2sgY29ycmVjdCBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gaGFuZGxlIHRvIHJ1biBxdWVy eS4iIiIKKworICAgICAgICBleHRyYWN0X3NxbF9mcm9tX25ldHdvcmtfcGFyYW1ldGVyc19tb2Nr LnJldHVybl92YWx1ZSA9ICd0cmFuc2Zvcm1lZCBzcWwnCisKKyAgICAgICAgd2l0aCBwYXRjaC5v YmplY3QoU3RhcnRSdW5uaW5nUXVlcnksICdleGVjdXRlJywgcmV0dXJuX3ZhbHVlPSdzb21lIHJl c3VsdCcpIGFzIFN0YXJ0UnVubmluZ1F1ZXJ5X2V4ZWN1dGVfbW9jazoKKyAgICAgICAgICAgIHJl c3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCgnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0LzEy MzQnLCBkYXRhPScic29tZSBzcWwgc3RhdGVtZW50IicpCisKKyAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1cywgJzIwMCBPSycpCisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhyZXNwb25zZS5kYXRhLCAnc29tZSByZXN1bHQnKQorICAgICAgICAgICAgU3Rh cnRSdW5uaW5nUXVlcnlfZXhlY3V0ZV9tb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgndHJhbnNmb3Jt ZWQgc3FsJywgMTIzNCwgQU5ZKQorICAgICAgICAgICAgZXh0cmFjdF9zcWxfZnJvbV9uZXR3b3Jr X3BhcmFtZXRlcnNfbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJyJzb21lIHNxbCBzdGF0ZW1lbnQi JywgQU5ZLCBBTlkpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRp bHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvX19pbml0 X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjM2MjZiNjU4Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsMTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20gLmNv bnN0YW50X2RlZmluaXRpb24gaW1wb3J0ICoKK2Zyb20gLmlzX2JlZ2luX3JlcXVpcmVkIGltcG9y dCBpc19iZWdpbl9yZXF1aXJlZAorZnJvbSAudXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlv biBpbXBvcnQgdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlvbgorZnJvbSAuc3RhcnRfcnVu bmluZ19xdWVyeSBpbXBvcnQgKgorZnJvbSAuYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXIgaW1w b3J0ICoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9hcHBs eV9leHBsYWluX3BsYW5fd3JhcHBlci5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91 dGlscy9hcHBseV9leHBsYWluX3BsYW5fd3JhcHBlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uODRlNDc4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdXRpbHMvYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXIucHkKQEAgLTAs MCArMSwyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiQXBwbHkgRXhwbGFpbiBw bGFuIHdyYXBwZXIgdG8gc3FsIG9iamVjdC4iIiIKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90 ZW1wbGF0ZQorCitmcm9tIHBnYWRtaW4udXRpbHMuY29tcGlsZV90ZW1wbGF0ZV9uYW1lIGltcG9y dCBjb21waWxlX3RlbXBsYXRlX25hbWUKKworCitkZWYgYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBw ZXJfaWZfbmVlZGVkKG1hbmFnZXIsIHNxbCk6CisgICAgaWYgJ2V4cGxhaW5fcGxhbicgaW4gc3Fs IGFuZCBzcWxbJ2V4cGxhaW5fcGxhbiddOgorICAgICAgICBleHBsYWluX3BsYW4gPSBzcWxbJ2V4 cGxhaW5fcGxhbiddCisgICAgICAgIHZlciA9IG1hbmFnZXIudmVyc2lvbgorICAgICAgICBzZXJ2 ZXJfdHlwZSA9IG1hbmFnZXIuc2VydmVyX3R5cGUKKyAgICAgICAgdGVtcGxhdGVfcGF0aCA9IGNv bXBpbGVfdGVtcGxhdGVfbmFtZSgnc3FsZWRpdG9yL3NxbCcsICdleHBsYWluX3BsYW4uc3FsJywg c2VydmVyX3R5cGUsIHZlcikKKyAgICAgICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSh0ZW1wbGF0 ZV9wYXRoLCBzcWw9c3FsWydzcWwnXSwgKipleHBsYWluX3BsYW4pCisgICAgZWxzZToKKyAgICAg ICAgcmV0dXJuIHNxbFsnc3FsJ10KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci91dGlscy9jb25zdGFudF9kZWZpbml0aW9uLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3V0aWxzL2NvbnN0YW50X2RlZmluaXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjQ0YzdlY2I3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3V0aWxzL2NvbnN0YW50X2RlZmluaXRpb24ucHkKQEAgLTAsMCArMSwz MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiRGVmaW5pdGlvbiBvZiBjb25zdGFu dHMgZm9yIFNRTEVkaXRvci4iIiIKKworIyBBc3luYyBDb25zdGFudHMKK0FTWU5DX09LID0gMQor QVNZTkNfUkVBRF9USU1FT1VUID0gMgorQVNZTkNfV1JJVEVfVElNRU9VVCA9IDMKK0FTWU5DX05P VF9DT05ORUNURUQgPSA0CitBU1lOQ19FWEVDVVRJT05fQUJPUlRFRCA9IDUKKworIyBUcmFuc2Fj dGlvbiBzdGF0dXMgY29uc3RhbnRzCitUWF9TVEFUVVNfSURMRSA9IDAKK1RYX1NUQVRVU19fQUNU SVZFID0gMQorVFhfU1RBVFVTX0lOVFJBTlMgPSAyCitUWF9TVEFUVVNfSU5FUlJPUiA9IDMKKwor IyBDb25uZWN0aW9uIHN0YXR1cyBjb2RlcyBtYXBwaW5nCitDT05ORUNUSU9OX1NUQVRVU19NRVNT QUdFX01BUFBJTkcgPSBkaWN0KHsKKyAgICAwOiAnVGhlIHNlc3Npb24gaXMgaWRsZSBhbmQgdGhl cmUgaXMgbm8gY3VycmVudCB0cmFuc2FjdGlvbi4nLAorICAgIDE6ICdBIGNvbW1hbmQgaXMgY3Vy cmVudGx5IGluIHByb2dyZXNzLicsCisgICAgMjogJ1RoZSBzZXNzaW9uIGlzIGlkbGUgaW4gYSB2 YWxpZCB0cmFuc2FjdGlvbiBibG9jay4nLAorICAgIDM6ICdUaGUgc2Vzc2lvbiBpcyBpZGxlIGlu IGEgZmFpbGVkIHRyYW5zYWN0aW9uIGJsb2NrLicsCisgICAgNDogJ1RoZSBjb25uZWN0aW9uIHdp dGggdGhlIHNlcnZlciBpcyBiYWQuJworfSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci91dGlscy9pc19iZWdpbl9yZXF1aXJlZC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci91dGlscy9pc19iZWdpbl9yZXF1aXJlZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uOGRiN2I5NTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3IvdXRpbHMvaXNfYmVnaW5fcmVxdWlyZWQucHkKQEAgLTAsMCArMSwx NjkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkNoZWNrIGlmIHJlcXVpcmVzIEJF R0lOIGluIHRoZSBjdXJyZW50IHF1ZXJ5LiIiIgorCisKK2RlZiBpc19iZWdpbl9yZXF1aXJlZChx dWVyeSk6CisgICAgd29yZF9sZW4gPSAwCisgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCisgICAg cXVlcnlfbGVuID0gbGVuKHF1ZXJ5KQorCisgICAgIyBDaGVjayB3b3JkIGxlbmd0aCAoc2luY2Ug ImJlZ2lueCIgaXMgbm90ICJiZWdpbiIpLgorICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xl bikgYW5kIHF1ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6CisgICAgICAgIHdvcmRfbGVuICs9IDEK KworICAgICMgVHJhbnNhY3Rpb24gY29udHJvbCBjb21tYW5kcy4gIFRoZXNlIHNob3VsZCBpbmNs dWRlIGV2ZXJ5IGtleXdvcmQgdGhhdAorICAgICMgIGdpdmVzIHJpc2UgdG8gYSBUcmFuc2FjdGlv blN0bXQgaW4gdGhlIGJhY2tlbmQgZ3JhbW1hciwgZXhjZXB0IGZvciB0aGUKKyAgICAjICBzYXZl cG9pbnQtcmVsYXRlZCBjb21tYW5kcy4KKyAgICAjCisgICAgIyAgKFdlIGFzc3VtZSB0aGF0IFNU QVJUIG11c3QgYmUgU1RBUlQgVFJBTlNBQ1RJT04sIHNpbmNlIHRoZXJlIGlzCisgICAgIyAgcHJl c2VudGx5IG5vIG90aGVyICJTVEFSVCBmb28iIGNvbW1hbmQuKQorCisgICAga2V5d29yZCA9IHF1 ZXJ5WzA6d29yZF9sZW5dCisKKyAgICBpZiB3b3JkX2xlbiA9PSA1IGFuZCBrZXl3b3JkLmxvd2Vy KCkgPT0gImFib3J0IjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgd29yZF9sZW4gPT0g NSBhbmQga2V5d29yZC5sb3dlcigpID09ICJiZWdpbiI6CisgICAgICAgIHJldHVybiBGYWxzZQor ICAgIGlmIHdvcmRfbGVuID09IDUgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAic3RhcnQiOgorICAg ICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiB3b3JkX2xlbiA9PSA2OgorICAgICAgICAjIFNFTEVD VCBpcyBwcm90ZWN0ZWQgZnJvbSBkaXJ0eSByZWFkcyBoZW5jZSBkb24ndCByZXF1aXJlIHRyYW5z YWN0aW9uCisgICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSBpbiBbInNlbGVjdCIsICJjb21taXQi XToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIHdvcmRfbGVuID09IDMgYW5kIGtl eXdvcmQubG93ZXIoKSA9PSAiZW5kIjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgd29y ZF9sZW4gPT0gOCBhbmQga2V5d29yZC5sb3dlcigpID09ICJyb2xsYmFjayI6CisgICAgICAgIHJl dHVybiBGYWxzZQorICAgIGlmIHdvcmRfbGVuID09IDcgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAi cHJlcGFyZSI6CisgICAgICAgICMgUFJFUEFSRSBUUkFOU0FDVElPTiBpcyBhIFRDIGNvbW1hbmQs IFBSRVBBUkUgZm9vIGlzIG5vdAorICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dvcmRfbGVuOnF1ZXJ5 X2xlbl0KKyAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCisgICAgICAgIHF1ZXJ5X2xlbiA9 IGxlbihxdWVyeSkKKyAgICAgICAgd29yZF9sZW4gPSAwCisKKyAgICAgICAgd2hpbGUgKHdvcmRf bGVuIDwgcXVlcnlfbGVuKSBhbmQgcXVlcnlbd29yZF9sZW5dLmlzYWxwaGEoKToKKyAgICAgICAg ICAgIHdvcmRfbGVuICs9IDEKKworICAgICAgICBrZXl3b3JkID0gcXVlcnlbMDp3b3JkX2xlbl0K KyAgICAgICAgaWYgd29yZF9sZW4gPT0gMTEgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAidHJhbnNh Y3Rpb24iOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisK KyAgICAjIENvbW1hbmRzIG5vdCBhbGxvd2VkIHdpdGhpbiB0cmFuc2FjdGlvbnMuIFRoZSBzdGF0 ZW1lbnRzIGNoZWNrZWQgZm9yCisgICAgIyBoZXJlIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHRo YXQgY2FsbCBQcmV2ZW50VHJhbnNhY3Rpb25DaGFpbigpIGluIHRoZQorICAgICMgYmFja2VuZC4K KyAgICBpZiB3b3JkX2xlbiA9PSA2IGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0gInZhY3V1bSI6Cisg ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgaWYgd29yZF9sZW4gPT0gNyBhbmQga2V5d29yZC5s b3dlcigpID09ICJjbHVzdGVyIjoKKyAgICAgICAgIyBDTFVTVEVSIHdpdGggYW55IGFyZ3VtZW50 cyBpcyBhbGxvd2VkIGluIHRyYW5zYWN0aW9ucworICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dvcmRf bGVuOnF1ZXJ5X2xlbl0KKyAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCisKKyAgICAgICAg aWYgcXVlcnlbMF0uaXNhbHBoYSgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgICMgaGFzIGFk ZGl0aW9uYWwgd29yZHMKKyAgICAgICAgcmV0dXJuIEZhbHNlICAjIGl0J3MgQ0xVU1RFUiB3aXRo b3V0IGFyZ3VtZW50cworCisgICAgaWYgd29yZF9sZW4gPT0gNiBhbmQga2V5d29yZC5sb3dlcigp ID09ICJjcmVhdGUiOgorICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dvcmRfbGVuOnF1ZXJ5X2xlbl0K KyAgICAgICAgcXVlcnkgPSBxdWVyeS5zdHJpcCgpCisgICAgICAgIHF1ZXJ5X2xlbiA9IGxlbihx dWVyeSkKKyAgICAgICAgd29yZF9sZW4gPSAwCisKKyAgICAgICAgd2hpbGUgKHdvcmRfbGVuIDwg cXVlcnlfbGVuKSBhbmQgcXVlcnlbd29yZF9sZW5dLmlzYWxwaGEoKToKKyAgICAgICAgICAgIHdv cmRfbGVuICs9IDEKKworICAgICAgICBrZXl3b3JkID0gcXVlcnlbMDp3b3JkX2xlbl0KKyAgICAg ICAgaWYgd29yZF9sZW4gPT0gOCBhbmQga2V5d29yZC5sb3dlcigpID09ICJkYXRhYmFzZSI6Cisg ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgd29yZF9sZW4gPT0gMTAgYW5kIGtl eXdvcmQubG93ZXIoKSA9PSAidGFibGVzcGFjZSI6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK KworICAgICAgICAjIENSRUFURSBbVU5JUVVFXSBJTkRFWCBDT05DVVJSRU5UTFkgaXNuJ3QgYWxs b3dlZCBpbiB4YWN0cworICAgICAgICBpZiB3b3JkX2xlbiA9PSA3IGFuZCBrZXl3b3JkLmxvd2Vy KCkgPT0gImNsdXN0ZXIiOgorICAgICAgICAgICAgcXVlcnkgPSBxdWVyeVt3b3JkX2xlbjpxdWVy eV9sZW5dCisgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LnN0cmlwKCkKKyAgICAgICAgICAgIHF1 ZXJ5X2xlbiA9IGxlbihxdWVyeSkKKyAgICAgICAgICAgIHdvcmRfbGVuID0gMAorCisgICAgICAg ICAgICB3aGlsZSAod29yZF9sZW4gPCBxdWVyeV9sZW4pIGFuZCBxdWVyeVt3b3JkX2xlbl0uaXNh bHBoYSgpOgorICAgICAgICAgICAgICAgIHdvcmRfbGVuICs9IDEKKworICAgICAgICAgICAga2V5 d29yZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCisKKyAgICAgICAgaWYgd29yZF9sZW4gPT0gNSBhbmQg a2V5d29yZC5sb3dlcigpID09ICJpbmRleCI6CisgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5W3dv cmRfbGVuOnF1ZXJ5X2xlbl0KKyAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAoKQorICAg ICAgICAgICAgcXVlcnlfbGVuID0gbGVuKHF1ZXJ5KQorICAgICAgICAgICAgd29yZF9sZW4gPSAw CisKKyAgICAgICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dv cmRfbGVuXS5pc2FscGhhKCk6CisgICAgICAgICAgICAgICAgd29yZF9sZW4gKz0gMQorCisgICAg ICAgICAgICBrZXl3b3JkID0gcXVlcnlbMDp3b3JkX2xlbl0KKyAgICAgICAgICAgIGlmIHdvcmRf bGVuID09IDEyIGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0gImNvbmN1cnJlbnRseSI6CisgICAgICAg ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBpZiB3b3Jk X2xlbiA9PSA1IGFuZCBrZXl3b3JkLmxvd2VyKCkgPT0gImFsdGVyIjoKKyAgICAgICAgcXVlcnkg PSBxdWVyeVt3b3JkX2xlbjpxdWVyeV9sZW5dCisgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAo KQorICAgICAgICBxdWVyeV9sZW4gPSBsZW4ocXVlcnkpCisgICAgICAgIHdvcmRfbGVuID0gMAor CisgICAgICAgIHdoaWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVu XS5pc2FscGhhKCk6CisgICAgICAgICAgICB3b3JkX2xlbiArPSAxCisKKyAgICAgICAga2V5d29y ZCA9IHF1ZXJ5WzA6d29yZF9sZW5dCisKKyAgICAgICAgIyBBTFRFUiBTWVNURU0gaXNuJ3QgYWxs b3dlZCBpbiB4YWN0cworICAgICAgICBpZiB3b3JkX2xlbiA9PSA2IGFuZCBrZXl3b3JkLmxvd2Vy KCkgPT0gInN5c3RlbSI6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJu IFRydWUKKworICAgICMgTm90ZTogdGhlc2UgdGVzdHMgd2lsbCBtYXRjaCBEUk9QIFNZU1RFTSBh bmQgUkVJTkRFWCBUQUJMRVNQQUNFLCB3aGljaAorICAgICMgYXJlbid0IHJlYWxseSB2YWxpZCBj b21tYW5kcyBzbyB3ZSBkb24ndCBjYXJlIG11Y2guIFRoZSBvdGhlciBmb3VyCisgICAgIyBwb3Nz aWJsZSBtYXRjaGVzIGFyZSBjb3JyZWN0LgorICAgIGlmIHdvcmRfbGVuID09IDQgYW5kIGtleXdv cmQubG93ZXIoKSA9PSAiZHJvcCIgXAorICAgICAgICAgICAgb3Igd29yZF9sZW4gPT0gNyBhbmQg a2V5d29yZC5sb3dlcigpID09ICJyZWluZGV4IjoKKyAgICAgICAgcXVlcnkgPSBxdWVyeVt3b3Jk X2xlbjpxdWVyeV9sZW5dCisgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAoKQorICAgICAgICBx dWVyeV9sZW4gPSBsZW4ocXVlcnkpCisgICAgICAgIHdvcmRfbGVuID0gMAorCisgICAgICAgIHdo aWxlICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6 CisgICAgICAgICAgICB3b3JkX2xlbiArPSAxCisKKyAgICAgICAga2V5d29yZCA9IHF1ZXJ5WzA6 d29yZF9sZW5dCisgICAgICAgIGlmIHdvcmRfbGVuID09IDggYW5kIGtleXdvcmQubG93ZXIoKSA9 PSAiZGF0YWJhc2UiOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHdvcmRf bGVuID09IDYgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAic3lzdGVtIjoKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZQorICAgICAgICBpZiB3b3JkX2xlbiA9PSAxMCBhbmQga2V5d29yZC5sb3dlcigp ID09ICJ0YWJsZXNwYWNlIjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1 cm4gVHJ1ZQorCisgICAgIyBESVNDQVJEIEFMTCBpc24ndCBhbGxvd2VkIGluIHhhY3RzLCBidXQg b3RoZXIgdmFyaWFudHMgYXJlIGFsbG93ZWQuCisgICAgaWYgd29yZF9sZW4gPT0gNyBhbmQga2V5 d29yZC5sb3dlcigpID09ICJkaXNjYXJkIjoKKyAgICAgICAgcXVlcnkgPSBxdWVyeVt3b3JkX2xl bjpxdWVyeV9sZW5dCisgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RyaXAoKQorICAgICAgICBxdWVy eV9sZW4gPSBsZW4ocXVlcnkpCisgICAgICAgIHdvcmRfbGVuID0gMAorCisgICAgICAgIHdoaWxl ICh3b3JkX2xlbiA8IHF1ZXJ5X2xlbikgYW5kIHF1ZXJ5W3dvcmRfbGVuXS5pc2FscGhhKCk6Cisg ICAgICAgICAgICB3b3JkX2xlbiArPSAxCisKKyAgICAgICAga2V5d29yZCA9IHF1ZXJ5WzA6d29y ZF9sZW5dCisgICAgICAgIGlmIHdvcmRfbGVuID09IDMgYW5kIGtleXdvcmQubG93ZXIoKSA9PSAi YWxsIjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisg ICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91 dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLmY1ZTFmZWFlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKQEAgLTAsMCArMSwxNzIgQEAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIlN0YXJ0IGV4ZWN1dGluZyB0aGUgcXVlcnkg aW4gYXN5bmMgbW9kZS4iIiIKKworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHJhbmRvbQorCitmcm9t IGZsYXNrIGltcG9ydCBSZXNwb25zZQorZnJvbSBmbGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAor Citmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi50b29s cy5zcWxlZGl0b3IudXRpbHMuYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXIgaW1wb3J0IGFwcGx5 X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZAorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVk aXRvci51dGlscy51cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5zYWN0aW9uIGltcG9ydCB1cGRhdGVf c2Vzc2lvbl9ncmlkX3RyYW5zYWN0aW9uCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0 aWxzLmlzX2JlZ2luX3JlcXVpcmVkIGltcG9ydCBpc19iZWdpbl9yZXF1aXJlZAorZnJvbSBwZ2Fk bWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5jb25zdGFudF9kZWZpbml0aW9uIGltcG9ydCBUWF9T VEFUVVNfSURMRSwgVFhfU1RBVFVTX0lORVJST1IKKworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBn YWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIHBnYWRtaW4udXRpbHMu ZXhjZXB0aW9uIGltcG9ydCBDb25uZWN0aW9uTG9zdAorCisKK2NsYXNzIFN0YXJ0UnVubmluZ1F1 ZXJ5OgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJsdWVwcmludF9vYmplY3QsIGxvZ2dlcik6 CisgICAgICAgIHNlbGYuaHR0cF9zZXNzaW9uID0gTm9uZQorICAgICAgICBzZWxmLmJsdWVwcmlu dF9vYmplY3QgPSBibHVlcHJpbnRfb2JqZWN0CisgICAgICAgIHNlbGYuY29ubmVjdGlvbl9pZCA9 IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs b2dnZXIKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIHNxbCwgdHJhbnNfaWQsIGh0dHBfc2Vzc2lv bik6CisgICAgICAgIHNlc3Npb25fb2JqID0gU3RhcnRSdW5uaW5nUXVlcnkucmV0cmlldmVfc2Vz c2lvbl9pbmZvcm1hdGlvbihodHRwX3Nlc3Npb24sIHRyYW5zX2lkKQorICAgICAgICBpZiB0eXBl KHNlc3Npb25fb2JqKSBpcyBSZXNwb25zZToKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uX29i agorCisgICAgICAgIHRyYW5zYWN0aW9uX29iamVjdCA9IHBpY2tsZS5sb2FkcyhzZXNzaW9uX29i alsnY29tbWFuZF9vYmonXSkKKyAgICAgICAgY2FuX2VkaXQgPSBGYWxzZQorICAgICAgICBjYW5f ZmlsdGVyID0gRmFsc2UKKyAgICAgICAgaWYgdHJhbnNhY3Rpb25fb2JqZWN0IGlzIG5vdCBOb25l IGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgc2V0IGZldGNoZWQg cm93IGNvdW50IHRvIDAgYXMgd2UgYXJlIGV4ZWN1dGluZyBxdWVyeSBhZ2Fpbi4KKyAgICAgICAg ICAgIHRyYW5zYWN0aW9uX29iamVjdC51cGRhdGVfZmV0Y2hlZF9yb3dfY250KDApCisgICAgICAg ICAgICBzZWxmLl9fcmV0cmlldmVfY29ubmVjdGlvbl9pZCh0cmFuc2FjdGlvbl9vYmplY3QpCisK KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigK KyAgICAgICAgICAgICAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdl cih0cmFuc2FjdGlvbl9vYmplY3Quc2lkKQorICAgICAgICAgICAgICAgIGNvbm4gPSBtYW5hZ2Vy LmNvbm5lY3Rpb24oZGlkPXRyYW5zYWN0aW9uX29iamVjdC5kaWQsIGNvbm5faWQ9c2VsZi5jb25u ZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0 b19yZWNvbm5lY3Q9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcnJheV90b19zdHJpbmc9VHJ1ZSkKKyAgICAgICAgICAgIGV4 Y2VwdCBDb25uZWN0aW9uTG9zdDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9y KGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICAgICAgICAgICMgQ29ubmVjdCB0byB0aGUgU2VydmVyIGlmIG5vdCBj b25uZWN0ZWQuCisgICAgICAgICAgICBpZiBub3QgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAg ICAgICAgICBzdGF0dXMsIG1zZyA9IGNvbm4uY29ubmVjdCgpCisgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IobXNnKQor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihtc2cpKQorCisgICAgICAgICAgICBlZmZlY3RpdmVfc3FsX3N0YXRlbWVudCA9IGFwcGx5 X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZChtYW5hZ2VyLCBzcWwpCisKKyAgICAgICAg ICAgIHJlc3VsdCwgc3RhdHVzID0gc2VsZi5fX2V4ZWN1dGVfcXVlcnkoCisgICAgICAgICAgICAg ICAgY29ubiwKKyAgICAgICAgICAgICAgICBzZXNzaW9uX29iaiwKKyAgICAgICAgICAgICAgICBl ZmZlY3RpdmVfc3FsX3N0YXRlbWVudCwKKyAgICAgICAgICAgICAgICB0cmFuc19pZCwKKyAgICAg ICAgICAgICAgICB0cmFuc2FjdGlvbl9vYmplY3QKKyAgICAgICAgICAgICkKKworICAgICAgICAg ICAgY2FuX2VkaXQgPSB0cmFuc2FjdGlvbl9vYmplY3QuY2FuX2VkaXQoKQorICAgICAgICAgICAg Y2FuX2ZpbHRlciA9IHRyYW5zYWN0aW9uX29iamVjdC5jYW5fZmlsdGVyKCkKKworICAgICAgICBl bHNlOgorICAgICAgICAgICAgc3RhdHVzID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGdl dHRleHQoCisgICAgICAgICAgICAgICAgJ0VpdGhlciB0cmFuc2FjdGlvbiBvYmplY3Qgb3Igc2Vz c2lvbiBvYmplY3Qgbm90IGZvdW5kLicpCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAnc3RhdHVzJzogc3RhdHVz LCAncmVzdWx0JzogcmVzdWx0LAorICAgICAgICAgICAgICAgICdjYW5fZWRpdCc6IGNhbl9lZGl0 LCAnY2FuX2ZpbHRlcic6IGNhbl9maWx0ZXIsCisgICAgICAgICAgICAgICAgJ2luZm9fbm90aWZp ZXJfdGltZW91dCc6IHNlbGYuYmx1ZXByaW50X29iamVjdC5pbmZvX25vdGlmaWVyX3RpbWVvdXQu Z2V0KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorCisgICAgZGVmIF9fcmV0cmlldmVfY29u bmVjdGlvbl9pZChzZWxmLCB0cmFuc19vYmopOgorICAgICAgICBjb25uX2lkID0gdHJhbnNfb2Jq LmNvbm5faWQKKyAgICAgICAgIyBpZiBjb25uX2lkIGlzIE5vbmUgdGhlbiB3ZSB3aWxsIGhhdmUg dG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24KKyAgICAgICAgaWYgY29ubl9pZCBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbl9pZCA9IGNvbm5faWQKKworICAgIGRlZiBf X2V4ZWN1dGVfcXVlcnkoc2VsZiwgY29ubiwgc2Vzc2lvbl9vYmosIHNxbCwgdHJhbnNfaWQsIHRy YW5zX29iaik6CisgICAgICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAjIG9u IHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiBzZXQgdGhlIGNvbm5lY3Rpb24gaWQgdG8gdGhlCisgICAg ICAgICAgICAjIHRyYW5zYWN0aW9uIG9iamVjdAorICAgICAgICAgICAgdHJhbnNfb2JqLnNldF9j b25uZWN0aW9uX2lkKHNlbGYuY29ubmVjdGlvbl9pZCkKKworICAgICAgICAgICAgU3RhcnRSdW5u aW5nUXVlcnkuc2F2ZV90cmFuc2FjdGlvbl9pbl9zZXNzaW9uKHNlc3Npb25fb2JqLCB0cmFuc19p ZCwgdHJhbnNfb2JqKQorCisgICAgICAgICAgICAjIElmIGF1dG8gY29tbWl0IGlzIEZhbHNlIGFu ZCB0cmFuc2FjdGlvbiBzdGF0dXMgaXMgSWRsZQorICAgICAgICAgICAgIyB0aGVuIGNhbGwgaXNf YmVnaW5fbm90X3JlcXVpcmVkKCkgZnVuY3Rpb24gdG8gY2hlY2sgQkVHSU4KKyAgICAgICAgICAg ICMgaXMgcmVxdWlyZWQgb3Igbm90LgorCisgICAgICAgICAgICBpZiBTdGFydFJ1bm5pbmdRdWVy eS5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5KHRyYW5zX29iaiwgY29ubiwgc3FsKToK KyAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgiQkVHSU47IikKKworICAgICAgICAg ICAgIyBFeGVjdXRlIHNxbCBhc3luY2hyb25vdXNseSB3aXRoIHBhcmFtcyBpcyBOb25lCisgICAg ICAgICAgICAjIGFuZCBmb3JtYXR0ZWRfZXJyb3IgaXMgVHJ1ZS4KKyAgICAgICAgICAgIHRyeToK KyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9hc3luYyhzcWwp CisgICAgICAgICAgICBleGNlcHQgQ29ubmVjdGlvbkxvc3Q6CisgICAgICAgICAgICAgICAgcmFp c2UKKworICAgICAgICAgICAgIyBJZiB0aGUgdHJhbnNhY3Rpb24gYWJvcnRlZCBmb3Igc29tZSBy ZWFzb24gYW5kCisgICAgICAgICAgICAjIEF1dG8gUm9sbEJhY2sgaXMgVHJ1ZSB0aGVuIGlzc3Vl IGEgcm9sbGJhY2sgdG8gY2xlYW51cC4KKyAgICAgICAgICAgIGlmIFN0YXJ0UnVubmluZ1F1ZXJ5 LmlzX3JvbGxiYWNrX3N0YXRlbWVudF9yZXF1aXJlZCh0cmFuc19vYmosIGNvbm4pOgorICAgICAg ICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCJST0xMQkFDSzsiKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgc3RhdHVzID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldHRleHQo CisgICAgICAgICAgICAgICAgJ05vdCBjb25uZWN0ZWQgdG8gc2VydmVyIG9yIGNvbm5lY3Rpb24g d2l0aCB0aGUgc2VydmVyIGhhcyAnCisgICAgICAgICAgICAgICAgJ2JlZW4gY2xvc2VkLicpCisg ICAgICAgIHJldHVybiByZXN1bHQsIHN0YXR1cworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl ZiBpc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5KHRyYW5zX29iaiwgY29ubiwgc3FsKToK KyAgICAgICAgcmV0dXJuIG5vdCB0cmFuc19vYmouYXV0b19jb21taXQgXAorICAgICAgICAgICAg ICAgYW5kIGNvbm4udHJhbnNhY3Rpb25fc3RhdHVzKCkgPT0gVFhfU1RBVFVTX0lETEUgXAorICAg ICAgICAgICAgICAgYW5kIGlzX2JlZ2luX3JlcXVpcmVkKHNxbCkKKworICAgIEBzdGF0aWNtZXRo b2QKKyAgICBkZWYgaXNfcm9sbGJhY2tfc3RhdGVtZW50X3JlcXVpcmVkKHRyYW5zX29iaiwgY29u bik6CisgICAgICAgIHJldHVybiBjb25uLnRyYW5zYWN0aW9uX3N0YXR1cygpID09IFRYX1NUQVRV U19JTkVSUk9SIGFuZCB0cmFuc19vYmouYXV0b19yb2xsYmFjaworCisgICAgQHN0YXRpY21ldGhv ZAorICAgIGRlZiBzYXZlX3RyYW5zYWN0aW9uX2luX3Nlc3Npb24oc2Vzc2lvbiwgdHJhbnNhY3Rp b25faWQsIHRyYW5zYWN0aW9uKToKKyAgICAgICAgIyBBcyB3ZSBjaGFuZ2VkIHRoZSB0cmFuc2Fj dGlvbiBvYmplY3Qgd2UgbmVlZCB0bworICAgICAgICAjIHJlc3RvcmUgaXQgYW5kIHVwZGF0ZSB0 aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgICAgc2Vzc2lvblsnY29tbWFuZF9vYmonXSA9IHBp Y2tsZS5kdW1wcyh0cmFuc2FjdGlvbiwgLTEpCisgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2dyaWRf dHJhbnNhY3Rpb24odHJhbnNhY3Rpb25faWQsIHNlc3Npb24pCisKKyAgICBAc3RhdGljbWV0aG9k CisgICAgZGVmIHJldHJpZXZlX3Nlc3Npb25faW5mb3JtYXRpb24oaHR0cF9zZXNzaW9uLCB0cmFu c2FjdGlvbl9pZCk6CisgICAgICAgIGlmICdncmlkRGF0YScgbm90IGluIGh0dHBfc2Vzc2lvbjoK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg c3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoJ1RyYW5zYWN0aW9u IElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nKSwKKyAgICAgICAgICAgICAgICBpbmZvPSdE QVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsIHN0YXR1cz00MDQKKyAgICAgICAgICAgICkK KyAgICAgICAgZ3JpZF9kYXRhID0gaHR0cF9zZXNzaW9uWydncmlkRGF0YSddCisgICAgICAgICMg UmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uIGlmIHRyYW5zYWN0aW9uIGlkIG5vdCBmb3VuZAorICAg ICAgICBpZiBzdHIodHJhbnNhY3Rpb25faWQpIG5vdCBpbiBncmlkX2RhdGE6CisgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwK KyAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KCdUcmFuc2FjdGlvbiBJRCBub3QgZm91 bmQgaW4gdGhlIHNlc3Npb24uJyksCisgICAgICAgICAgICAgICAgaW5mbz0nREFUQUdSSURfVFJB TlNBQ1RJT05fUkVRVUlSRUQnLAorICAgICAgICAgICAgICAgIHN0YXR1cz00MDQKKyAgICAgICAg ICAgICkKKyAgICAgICAgIyBGZXRjaCB0aGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRyYW5z YWN0aW9uIGlkLgorICAgICAgICAjIFVzZSBwaWNrbGUubG9hZHMgZnVuY3Rpb24gdG8gZ2V0IHRo ZSBjb21tYW5kIG9iamVjdAorICAgICAgICByZXR1cm4gZ3JpZF9kYXRhW3N0cih0cmFuc2FjdGlv bl9pZCldCisKKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxz L3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rl c3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41OTAw MjZhZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGls cy90ZXN0cy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvdGVzdHMv dGVzdF9hcHBseV9leHBsYWluX3BsYW5fd3JhcHBlci5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci91dGlscy90ZXN0cy90ZXN0X2FwcGx5X2V4cGxhaW5fcGxhbl93cmFwcGVyLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi42Y2YzMjBlYgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0X2FwcGx5 X2V4cGxhaW5fcGxhbl93cmFwcGVyLnB5CkBAIC0wLDAgKzEsMTIxIEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisiIiJBcHBseSBFeHBsYWluIHBsYW4gd3JhcHBlciB0byBzcWwgb2JqZWN0LiIi IgoraW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzIGltcG9y dCBhcHBseV9leHBsYWluX3BsYW5fd3JhcHBlcl9pZl9uZWVkZWQKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKKworaWYgc3lzLnZlcnNpb25faW5mbyA8 ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6Cisg ICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3Mg U3RhcnRSdW5uaW5nUXVlcnlUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBD aGVjayB0aGF0IHRoZSBhcHBseV9leHBsYWluX3BsYW5fd2VhcHBlcl9pZl9uZWVkZWQgbWV0aG9k IHdvcmtzIGFzIGludGVuZGVkCisgICAgIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAo J1doZW4gZXhwbGFpbl9wbGFuIGlzIG5vbmUsIGl0IHNob3VsZCByZXR1cm4gdW5hbHRlcmVkIFNR TCcsIGRpY3QoCisgICAgICAgICAgICBmdW5jdGlvbl9pbnB1dF9wYXJhbWV0ZXJzPXsKKyAgICAg ICAgICAgICAgICAnbWFuYWdlcic6IE1hZ2ljTW9jaygpLAorICAgICAgICAgICAgICAgICdzcWwn OiB7CisgICAgICAgICAgICAgICAgICAgICdzcWwnOiAnc29tZSBzcWwnLAorICAgICAgICAgICAg ICAgICAgICAnZXhwbGFpbl9wbGFuJzogTm9uZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0sCisKKyAgICAgICAgICAgIGV4cGVjdF9yZW5kZXJfdGVtcGxhdGVfbW9ja19wYXJhbWV0 ZXJzPU5vbmUsCisKKyAgICAgICAgICAgIGV4cGVjdGVkX3JldHVybl92YWx1ZT0nc29tZSBzcWwn CisgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gZXhwbGFpbl9wbGFuIGlzIG5vdCBwcmVzZW50 LCBpdCBzaG91bGQgcmV0dXJuIHVuYWx0ZXJlZCBTUUwnLCBkaWN0KAorICAgICAgICAgICAgZnVu Y3Rpb25faW5wdXRfcGFyYW1ldGVycz17CisgICAgICAgICAgICAgICAgJ21hbmFnZXInOiBNYWdp Y01vY2soKSwKKyAgICAgICAgICAgICAgICAnc3FsJzogeworICAgICAgICAgICAgICAgICAgICAn c3FsJzogJ3NvbWUgc3FsJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisKKyAg ICAgICAgICAgIGV4cGVjdF9yZW5kZXJfdGVtcGxhdGVfbW9ja19wYXJhbWV0ZXJzPU5vbmUsCisK KyAgICAgICAgICAgIGV4cGVjdGVkX3JldHVybl92YWx1ZT0nc29tZSBzcWwnCisgICAgICAgICkp LAorICAgICAgICAoJ1doZW4gZXhwbGFpbl9wbGFuIGlzIHByZXNlbnQgZm9yIGEgUG9zdGdyZXMg c2VydmVyIHZlcnNpb24gMTAsIGl0IHNob3VsZCByZXR1cm4gU1FMIHdpdGggZXhwbGFpbiBwbGFu JywgZGljdCgKKyAgICAgICAgICAgIGZ1bmN0aW9uX2lucHV0X3BhcmFtZXRlcnM9eworICAgICAg ICAgICAgICAgICdtYW5hZ2VyJzogTWFnaWNNb2NrKHZlcnNpb249MTAsIHNlcnZlcl90eXBlPSdw ZycpLAorICAgICAgICAgICAgICAgICdzcWwnOiB7CisgICAgICAgICAgICAgICAgICAgICdzcWwn OiAnc29tZSBzcWwnLAorICAgICAgICAgICAgICAgICAgICAnZXhwbGFpbl9wbGFuJzogeworICAg ICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCc6ICdqc29uJywKKyAgICAgICAgICAgICAgICAg ICAgICAgICdhbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9z ZSc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVycyc6IEZhbHNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3RpbWluZyc6IFRydWUKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGV4cGVj dF9yZW5kZXJfdGVtcGxhdGVfbW9ja19wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAg dGVtcGxhdGVfbmFtZV9vcl9saXN0PSdzcWxlZGl0b3Ivc3FsLyMxMCMvZXhwbGFpbl9wbGFuLnNx bCcsCisgICAgICAgICAgICAgICAgbmFtZWRfcGFyYW1ldGVycz1kaWN0KAorICAgICAgICAgICAg ICAgICAgICBmb3JtYXQ9J2pzb24nLAorICAgICAgICAgICAgICAgICAgICBhbmFseXplPUZhbHNl LAorICAgICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgICAg IGJ1ZmZlcnM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHRpbWluZz1UcnVlCisgICAgICAg ICAgICAgICAgKSksCisKKyAgICAgICAgICAgIGV4cGVjdGVkX3JldHVybl92YWx1ZT0nRVhQTEFJ TiAoRk9STUFUIEpTT04sIEFOQUxZWkUgRkFMU0UsIFZFUkJPU0UgVFJVRSwgQ09TVFMgRkFMU0Us IEJVRkZFUlMgRkFMU0UsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVElN SU5HIFRSVUUpIHNvbWUgc3FsJworICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGV4cGxhaW5f cGxhbiBpcyBwcmVzZW50IGZvciBhIEdyZWVuUGx1bSBzZXJ2ZXIgdmVyc2lvbiA1LCBpdCBzaG91 bGQgcmV0dXJuIFNRTCB3aXRoIGV4cGxhaW4gcGxhbicsIGRpY3QoCisgICAgICAgICAgICBmdW5j dGlvbl9pbnB1dF9wYXJhbWV0ZXJzPXsKKyAgICAgICAgICAgICAgICAnbWFuYWdlcic6IE1hZ2lj TW9jayh2ZXJzaW9uPTgwMzIzLCBzZXJ2ZXJfdHlwZT0nZ3BkYicpLAorICAgICAgICAgICAgICAg ICdzcWwnOiB7CisgICAgICAgICAgICAgICAgICAgICdzcWwnOiAnc29tZSBzcWwnLAorICAgICAg ICAgICAgICAgICAgICAnZXhwbGFpbl9wbGFuJzogeworICAgICAgICAgICAgICAgICAgICAgICAg J2Zvcm1hdCc6ICdqc29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbmFseXplJzogRmFs c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAnYnVmZmVycyc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAg J3RpbWluZyc6IFRydWUKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGV4cGVjdF9yZW5kZXJfdGVtcGxhdGVfbW9j a19wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZV9vcl9saXN0 PSdzcWxlZGl0b3Ivc3FsLyNncGRiIzgwMzIzIy9leHBsYWluX3BsYW4uc3FsJywKKyAgICAgICAg ICAgICAgICBuYW1lZF9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgICAgIGZvcm1h dD0nanNvbicsCisgICAgICAgICAgICAgICAgICAgIGFuYWx5emU9RmFsc2UsCisgICAgICAgICAg ICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVycz1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgdGltaW5nPVRydWUKKyAgICAgICAgICAgICAgICApKSwK KworICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVlPSdFWFBMQUlOIHNvbWUgc3FsJwor ICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICB3aXRo IHBhdGNoKCdwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5hcHBseV9leHBsYWluX3BsYW5f d3JhcHBlci5yZW5kZXJfdGVtcGxhdGUnKSBhcyByZW5kZXJfdGVtcGxhdGVfbW9jazoKKyAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYuZXhwZWN0ZWRf cmV0dXJuX3ZhbHVlCisgICAgICAgICAgICByZXN1bHQgPSBhcHBseV9leHBsYWluX3BsYW5fd3Jh cHBlcl9pZl9uZWVkZWQoKipzZWxmLmZ1bmN0aW9uX2lucHV0X3BhcmFtZXRlcnMpCisgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQsIHNlbGYuZXhwZWN0ZWRfcmV0dXJuX3ZhbHVl KQorICAgICAgICAgICAgaWYgc2VsZi5leHBlY3RfcmVuZGVyX3RlbXBsYXRlX21vY2tfcGFyYW1l dGVyczoKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGVfbW9jay5hc3NlcnRfY2FsbGVk X3dpdGgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0X3JlbmRlcl90ZW1wbGF0ZV9t b2NrX3BhcmFtZXRlcnNbJ3RlbXBsYXRlX25hbWVfb3JfbGlzdCddLAorICAgICAgICAgICAgICAg ICAgICBzcWw9c2VsZi5mdW5jdGlvbl9pbnB1dF9wYXJhbWV0ZXJzWydzcWwnXVsnc3FsJ10sCisg ICAgICAgICAgICAgICAgICAgICoqc2VsZi5leHBlY3RfcmVuZGVyX3RlbXBsYXRlX21vY2tfcGFy YW1ldGVyc1snbmFtZWRfcGFyYW1ldGVycyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGVfbW9jay5hc3NlcnRfbm90 X2NhbGxlZCgpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMv dGVzdHMvdGVzdF9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3Rfc3RhcnRfcnVubmluZ19xdWVyeS5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZDUzYzAyNDgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvdGVzdHMvdGVzdF9zdGFydF9ydW5uaW5n X3F1ZXJ5LnB5CkBAIC0wLDAgKzEsNDQ1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1w b3J0IHN5cworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLnN0YXJ0X3J1bm5p bmdfcXVlcnkgaW1wb3J0IFN0YXJ0UnVubmluZ1F1ZXJ5Citmcm9tIHBnYWRtaW4udXRpbHMuZXhj ZXB0aW9uIGltcG9ydCBDb25uZWN0aW9uTG9zdAorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgor ICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVu aXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworZ2V0X2RyaXZlcl9leGNlcHRp b24gPSBFeGNlcHRpb24oJ2dldF9kcml2ZXIgZXhjZXB0aW9uJykKKworCitjbGFzcyBTdGFydFJ1 bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIgorICAgIENoZWNrIHRo YXQgdGhlIHN0YXJ0X3J1bm5pbmdfcXVlcnkgbWV0aG9kIHdvcmtzIGFzIGludGVuZGVkCisgICAg IiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBncmlkRGF0YSBpcyBub3Qg cHJlc2VudCBpbiB0aGUgc2Vzc2lvbiwgaXQgcmV0dXJucyBhbiBlcnJvcicsIGRpY3QoCisgICAg ICAgICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgc3FsPWRp Y3Qoc3FsPSdzb21lIHNxbCcsIGV4cGxhaW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAgICAgICB0 cmFuc19pZD0xMjMsCisgICAgICAgICAgICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoKQorICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgIHBpY2tsZV9sb2FkX3JldHVybj1Ob25lLAorICAgICAgICAg ICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5l Y3Rpb25fZXhjZXB0aW9uPU5vbmUsCisKKyAgICAgICAgICAgIGlzX2Nvbm5lY3RlZF90b19zZXJ2 ZXI9RmFsc2UsCisgICAgICAgICAgICBjb25uZWN0aW9uX2Nvbm5lY3RfcmV0dXJuPU5vbmUsCisg ICAgICAgICAgICBleGVjdXRlX2FzeW5jX3JldHVybl92YWx1ZT1Ob25lLAorICAgICAgICAgICAg aXNfYmVnaW5fcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICBpc19yb2xsYmFja19yZXF1aXJl ZD1GYWxzZSwKKyAgICAgICAgICAgIGFwcGx5X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRl ZF9yZXR1cm5fdmFsdWU9J3NvbWUgc3FsJywKKworICAgICAgICAgICAgZXhwZWN0X21ha2VfanNv bl9yZXNwb25zZV90b19oYXZlX2JlZW5fY2FsbGVkX3dpdGg9ZGljdCgKKyAgICAgICAgICAgICAg ICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgZXJyb3Jtc2c9J1RyYW5zYWN0aW9uIElEIG5v dCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nLAorICAgICAgICAgICAgICAgIGluZm89J0RBVEFHUklE X1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAgICAgICBzdGF0dXM9NDA0LAorICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgIGV4cGVjdF9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3JfdG9f aGF2ZV9iZWVuX2NhbGxlZF93aXRoPU5vbmUsCisgICAgICAgICAgICBleHBlY3RlZF9sb2dnZXJf ZXJyb3I9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdF9leGVjdXRlX3ZvaWRfY2FsbGVkX3dpdGg9 J3NvbWUgc3FsJywKKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiB0cmFuc2FjdGlvbklkIGlz IG5vdCBwcmVzZW50IGluIHRoZSBncmlkRGF0YSwgaXQgcmV0dXJucyBhbiBlcnJvcicsIGRpY3Qo CisgICAgICAgICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAg c3FsPWRpY3Qoc3FsPSdzb21lIHNxbCcsIGV4cGxhaW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAg ICAgICB0cmFuc19pZD0xMjMsCisgICAgICAgICAgICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoZ3Jp ZERhdGE9ZGljdCgpKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHBpY2tsZV9sb2FkX3Jl dHVybj1Ob25lLAorICAgICAgICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAg ICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCisKKyAgICAgICAgICAg IGlzX2Nvbm5lY3RlZF90b19zZXJ2ZXI9RmFsc2UsCisgICAgICAgICAgICBjb25uZWN0aW9uX2Nv bm5lY3RfcmV0dXJuPU5vbmUsCisgICAgICAgICAgICBleGVjdXRlX2FzeW5jX3JldHVybl92YWx1 ZT1Ob25lLAorICAgICAgICAgICAgaXNfYmVnaW5fcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAg ICBpc19yb2xsYmFja19yZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGFwcGx5X2V4cGxhaW5f cGxhbl93cmFwcGVyX2lmX25lZWRlZF9yZXR1cm5fdmFsdWU9J3NvbWUgc3FsJywKKworICAgICAg ICAgICAgZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90b19oYXZlX2JlZW5fY2FsbGVkX3dpdGg9 ZGljdCgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgZXJyb3Jt c2c9J1RyYW5zYWN0aW9uIElEIG5vdCBmb3VuZCBpbiB0aGUgc2Vzc2lvbi4nLAorICAgICAgICAg ICAgICAgIGluZm89J0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAg ICAgICBzdGF0dXM9NDA0LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGV4cGVjdF9pbnRl cm5hbF9zZXJ2ZXJfZXJyb3JfdG9faGF2ZV9iZWVuX2NhbGxlZF93aXRoPU5vbmUsCisgICAgICAg ICAgICBleHBlY3RlZF9sb2dnZXJfZXJyb3I9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdF9leGVj dXRlX3ZvaWRfY2FsbGVkX3dpdGg9J3NvbWUgc3FsJywKKyAgICAgICAgKSksCisgICAgICAgICgn V2hlbiB0aGUgY29tbWFuZCBpbmZvcm1hdGlvbiBmb3IgdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBi ZSByZXRyaWV2ZWQsIGl0IHJldHVybnMgYW4gZXJyb3InLCBkaWN0KAorICAgICAgICAgICAgZnVu Y3Rpb25fcGFyYW1ldGVycz1kaWN0KAorICAgICAgICAgICAgICAgIHNxbD1kaWN0KHNxbD0nc29t ZSBzcWwnLCBleHBsYWluX3BsYW49Tm9uZSksCisgICAgICAgICAgICAgICAgdHJhbnNfaWQ9MTIz LAorICAgICAgICAgICAgICAgIGh0dHBfc2Vzc2lvbj1kaWN0KGdyaWREYXRhPXsnMTIzJzogZGlj dChjb21tYW5kX29iaj0nJyl9KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHBpY2tsZV9s b2FkX3JldHVybj1Ob25lLAorICAgICAgICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2Us CisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCisKKyAgICAg ICAgICAgIGlzX2Nvbm5lY3RlZF90b19zZXJ2ZXI9RmFsc2UsCisgICAgICAgICAgICBjb25uZWN0 aW9uX2Nvbm5lY3RfcmV0dXJuPU5vbmUsCisgICAgICAgICAgICBleGVjdXRlX2FzeW5jX3JldHVy bl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgaXNfYmVnaW5fcmVxdWlyZWQ9RmFsc2UsCisgICAg ICAgICAgICBpc19yb2xsYmFja19yZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGFwcGx5X2V4 cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZF9yZXR1cm5fdmFsdWU9J3NvbWUgc3FsJywKKwor ICAgICAgICAgICAgZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90b19oYXZlX2JlZW5fY2FsbGVk X3dpdGg9ZGljdCgKKyAgICAgICAgICAgICAgICBkYXRhPWRpY3QoCisgICAgICAgICAgICAgICAg ICAgIHN0YXR1cz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0PSdFaXRoZXIgdHJh bnNhY3Rpb24gb2JqZWN0IG9yIHNlc3Npb24gb2JqZWN0IG5vdCBmb3VuZC4nLAorICAgICAgICAg ICAgICAgICAgICBjYW5fZWRpdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgY2FuX2ZpbHRl cj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaW5mb19ub3RpZmllcl90aW1lb3V0PTUKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgZXhwZWN0X2ludGVy bmFsX3NlcnZlcl9lcnJvcl90b19oYXZlX2JlZW5fY2FsbGVkX3dpdGg9Tm9uZSwKKyAgICAgICAg ICAgIGV4cGVjdGVkX2xvZ2dlcl9lcnJvcj1Ob25lLAorICAgICAgICAgICAgZXhwZWN0X2V4ZWN1 dGVfdm9pZF9jYWxsZWRfd2l0aD0nc29tZSBzcWwnLAorICAgICAgICApKSwKKyAgICAgICAgKCdX aGVuIGV4Y2VwdGlvbiBoYXBwZW5zIHdoaWxlIHJldHJpZXZpbmcgdGhlIGRhdGFiYXNlIGRyaXZl ciwgaXQgcmV0dXJucyBhbiBlcnJvcicsIGRpY3QoCisgICAgICAgICAgICBmdW5jdGlvbl9wYXJh bWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgc3FsPWRpY3Qoc3FsPSdzb21lIHNxbCcsIGV4 cGxhaW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAgICAgICB0cmFuc19pZD0xMjMsCisgICAgICAg ICAgICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoZ3JpZERhdGE9eycxMjMnOiBkaWN0KGNvbW1hbmRf b2JqPScnKX0pCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcGlja2xlX2xvYWRfcmV0dXJu PU1hZ2ljTW9jayhjb25uX2lkPTEsIHVwZGF0ZV9mZXRjaGVkX3Jvd19jbnQ9TWFnaWNNb2NrKCkp LAorICAgICAgICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249VHJ1ZSwKKyAgICAgICAgICAgIG1h bmFnZXJfY29ubmVjdGlvbl9leGNlcHRpb249Tm9uZSwKKworICAgICAgICAgICAgaXNfY29ubmVj dGVkX3RvX3NlcnZlcj1GYWxzZSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fY29ubmVjdF9yZXR1 cm49Tm9uZSwKKyAgICAgICAgICAgIGV4ZWN1dGVfYXN5bmNfcmV0dXJuX3ZhbHVlPU5vbmUsCisg ICAgICAgICAgICBpc19iZWdpbl9yZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGlzX3JvbGxi YWNrX3JlcXVpcmVkPUZhbHNlLAorICAgICAgICAgICAgYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBw ZXJfaWZfbmVlZGVkX3JldHVybl92YWx1ZT0nc29tZSBzcWwnLAorCisgICAgICAgICAgICBleHBl Y3RfbWFrZV9qc29uX3Jlc3BvbnNlX3RvX2hhdmVfYmVlbl9jYWxsZWRfd2l0aD1Ob25lLAorICAg ICAgICAgICAgZXhwZWN0X2ludGVybmFsX3NlcnZlcl9lcnJvcl90b19oYXZlX2JlZW5fY2FsbGVk X3dpdGg9ZGljdCgKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz0nZ2V0X2RyaXZlciBleGNlcHRp b24nCisgICAgICAgICAgICApLAorICAgICAgICAgICAgZXhwZWN0ZWRfbG9nZ2VyX2Vycm9yPWdl dF9kcml2ZXJfZXhjZXB0aW9uLAorICAgICAgICAgICAgZXhwZWN0X2V4ZWN1dGVfdm9pZF9jYWxs ZWRfd2l0aD0nc29tZSBzcWwnLAorICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIENvbm5lY3Rp b25Mb3N0IGhhcHBlbnMgd2hpbGUgcmV0cmlldmluZyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiwg aXQgcmV0dXJucyBhbiBlcnJvcicsIGRpY3QoCisgICAgICAgICAgICBmdW5jdGlvbl9wYXJhbWV0 ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgc3FsPWRpY3Qoc3FsPSdzb21lIHNxbCcsIGV4cGxh aW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAgICAgICB0cmFuc19pZD0xMjMsCisgICAgICAgICAg ICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoZ3JpZERhdGE9eycxMjMnOiBkaWN0KGNvbW1hbmRfb2Jq PScnKX0pCisgICAgICAgICAgICApLAorICAgICAgICAgICAgcGlja2xlX2xvYWRfcmV0dXJuPU1h Z2ljTW9jayhjb25uX2lkPTEsIHVwZGF0ZV9mZXRjaGVkX3Jvd19jbnQ9TWFnaWNNb2NrKCkpLAor ICAgICAgICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICBtYW5h Z2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPUNvbm5lY3Rpb25Mb3N0KCcxJywgJzInLCAnMycpLAor CisgICAgICAgICAgICBpc19jb25uZWN0ZWRfdG9fc2VydmVyPUZhbHNlLAorICAgICAgICAgICAg Y29ubmVjdGlvbl9jb25uZWN0X3JldHVybj1Ob25lLAorICAgICAgICAgICAgZXhlY3V0ZV9hc3lu Y19yZXR1cm5fdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgIGlzX2JlZ2luX3JlcXVpcmVkPUZhbHNl LAorICAgICAgICAgICAgaXNfcm9sbGJhY2tfcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICBh cHBseV9leHBsYWluX3BsYW5fd3JhcHBlcl9pZl9uZWVkZWRfcmV0dXJuX3ZhbHVlPSdzb21lIHNx bCcsCisKKyAgICAgICAgICAgIGV4cGVjdF9tYWtlX2pzb25fcmVzcG9uc2VfdG9faGF2ZV9iZWVu X2NhbGxlZF93aXRoPU5vbmUsCisgICAgICAgICAgICBleHBlY3RfaW50ZXJuYWxfc2VydmVyX2Vy cm9yX3RvX2hhdmVfYmVlbl9jYWxsZWRfd2l0aD1Ob25lLAorICAgICAgICAgICAgZXhwZWN0ZWRf bG9nZ2VyX2Vycm9yPU5vbmUsCisgICAgICAgICAgICBleHBlY3RfZXhlY3V0ZV92b2lkX2NhbGxl ZF93aXRoPSdzb21lIHNxbCcsCisgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gaXMgbm90IGNv bm5lY3RlZCB0byB0aGUgc2VydmVyIGFuZCBmYWlscyB0byBjb25uZWN0LCBpdCByZXR1cm5zIGFu IGVycm9yJywgZGljdCgKKyAgICAgICAgICAgIGZ1bmN0aW9uX3BhcmFtZXRlcnM9ZGljdCgKKyAg ICAgICAgICAgICAgICBzcWw9ZGljdChzcWw9J3NvbWUgc3FsJywgZXhwbGFpbl9wbGFuPU5vbmUp LAorICAgICAgICAgICAgICAgIHRyYW5zX2lkPTEyMywKKyAgICAgICAgICAgICAgICBodHRwX3Nl c3Npb249ZGljdChncmlkRGF0YT17JzEyMyc6IGRpY3QoY29tbWFuZF9vYmo9JycpfSkKKyAgICAg ICAgICAgICksCisgICAgICAgICAgICBwaWNrbGVfbG9hZF9yZXR1cm49TWFnaWNNb2NrKGNvbm5f aWQ9MSwgdXBkYXRlX2ZldGNoZWRfcm93X2NudD1NYWdpY01vY2soKSksCisgICAgICAgICAgICBn ZXRfZHJpdmVyX2V4Y2VwdGlvbj1GYWxzZSwKKyAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlv bl9leGNlcHRpb249Tm9uZSwKKworICAgICAgICAgICAgaXNfY29ubmVjdGVkX3RvX3NlcnZlcj1G YWxzZSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fY29ubmVjdF9yZXR1cm49W0ZhbHNlLCAnVW5h YmxlIHRvIGNvbm5lY3QgdG8gc2VydmVyJ10sCisgICAgICAgICAgICBleGVjdXRlX2FzeW5jX3Jl dHVybl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgaXNfYmVnaW5fcmVxdWlyZWQ9RmFsc2UsCisg ICAgICAgICAgICBpc19yb2xsYmFja19yZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGFwcGx5 X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZF9yZXR1cm5fdmFsdWU9J3NvbWUgc3FsJywK KworICAgICAgICAgICAgZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90b19oYXZlX2JlZW5fY2Fs bGVkX3dpdGg9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdF9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3Jf dG9faGF2ZV9iZWVuX2NhbGxlZF93aXRoPWRpY3QoCisgICAgICAgICAgICAgICAgZXJyb3Jtc2c9 J1VuYWJsZSB0byBjb25uZWN0IHRvIHNlcnZlcicKKyAgICAgICAgICAgICksCisgICAgICAgICAg ICBleHBlY3RlZF9sb2dnZXJfZXJyb3I9J1VuYWJsZSB0byBjb25uZWN0IHRvIHNlcnZlcicsCisg ICAgICAgICAgICBleHBlY3RfZXhlY3V0ZV92b2lkX2NhbGxlZF93aXRoPSdzb21lIHNxbCcsCisg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gc2VydmVyIGlzIGNvbm5lY3RlZCBhbmQgc3RhcnQg cXVlcnkgYXN5bmMgcmVxdWVzdCwgaXQgcmV0dXJucyBhbiBzdWNjZXNzIG1lc3NhZ2UnLCBkaWN0 KAorICAgICAgICAgICAgZnVuY3Rpb25fcGFyYW1ldGVycz1kaWN0KAorICAgICAgICAgICAgICAg IHNxbD1kaWN0KHNxbD0nc29tZSBzcWwnLCBleHBsYWluX3BsYW49Tm9uZSksCisgICAgICAgICAg ICAgICAgdHJhbnNfaWQ9MTIzLAorICAgICAgICAgICAgICAgIGh0dHBfc2Vzc2lvbj1kaWN0KGdy aWREYXRhPXsnMTIzJzogZGljdChjb21tYW5kX29iaj0nJyl9KQorICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgIHBpY2tsZV9sb2FkX3JldHVybj1NYWdpY01vY2soCisgICAgICAgICAgICAgICAg Y29ubl9pZD0xLAorICAgICAgICAgICAgICAgIHVwZGF0ZV9mZXRjaGVkX3Jvd19jbnQ9TWFnaWNN b2NrKCksCisgICAgICAgICAgICAgICAgc2V0X2Nvbm5lY3Rpb25faWQ9TWFnaWNNb2NrKCksCisg ICAgICAgICAgICAgICAgYXV0b19jb21taXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICBhdXRvX3Jv bGxiYWNrPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhbl9lZGl0PWxhbWJkYTogVHJ1ZSwKKyAg ICAgICAgICAgICAgICBjYW5fZmlsdGVyPWxhbWJkYTogVHJ1ZQorICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgIGdldF9kcml2ZXJfZXhjZXB0aW9uPUZhbHNlLAorICAgICAgICAgICAgbWFuYWdl cl9jb25uZWN0aW9uX2V4Y2VwdGlvbj1Ob25lLAorCisgICAgICAgICAgICBpc19jb25uZWN0ZWRf dG9fc2VydmVyPVRydWUsCisgICAgICAgICAgICBjb25uZWN0aW9uX2Nvbm5lY3RfcmV0dXJuPU5v bmUsCisgICAgICAgICAgICBleGVjdXRlX2FzeW5jX3JldHVybl92YWx1ZT1bVHJ1ZSwgJ2FzeW5j IGZ1bmN0aW9uIHJlc3VsdCBvdXRwdXQnXSwKKyAgICAgICAgICAgIGlzX2JlZ2luX3JlcXVpcmVk PUZhbHNlLAorICAgICAgICAgICAgaXNfcm9sbGJhY2tfcmVxdWlyZWQ9RmFsc2UsCisgICAgICAg ICAgICBhcHBseV9leHBsYWluX3BsYW5fd3JhcHBlcl9pZl9uZWVkZWRfcmV0dXJuX3ZhbHVlPSdz b21lIHNxbCcsCisKKyAgICAgICAgICAgIGV4cGVjdF9tYWtlX2pzb25fcmVzcG9uc2VfdG9faGF2 ZV9iZWVuX2NhbGxlZF93aXRoPWRpY3QoCisgICAgICAgICAgICAgICAgZGF0YT1kaWN0KAorICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0 PSdhc3luYyBmdW5jdGlvbiByZXN1bHQgb3V0cHV0JywKKyAgICAgICAgICAgICAgICAgICAgY2Fu X2VkaXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgY2FuX2ZpbHRlcj1UcnVlLAorICAgICAg ICAgICAgICAgICAgICBpbmZvX25vdGlmaWVyX3RpbWVvdXQ9NQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICksCisgICAgICAgICAgICBleHBlY3RfaW50ZXJuYWxfc2VydmVyX2Vycm9y X3RvX2hhdmVfYmVlbl9jYWxsZWRfd2l0aD1Ob25lLAorICAgICAgICAgICAgZXhwZWN0ZWRfbG9n Z2VyX2Vycm9yPU5vbmUsCisgICAgICAgICAgICBleHBlY3RfZXhlY3V0ZV92b2lkX2NhbGxlZF93 aXRoPSdzb21lIHNxbCcsCisgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gc2VydmVyIGlzIGNv bm5lY3RlZCBhbmQgc3RhcnQgcXVlcnkgYXN5bmMgcmVxdWVzdCBhbmQgYmVnaW4gaXMgcmVxdWly ZWQsICcKKyAgICAgICAgICdpdCByZXR1cm5zIGFuIHN1Y2Nlc3MgbWVzc2FnZScsIGRpY3QoCisg ICAgICAgICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgc3Fs PWRpY3Qoc3FsPSdzb21lIHNxbCcsIGV4cGxhaW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAgICAg ICB0cmFuc19pZD0xMjMsCisgICAgICAgICAgICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoZ3JpZERh dGE9eycxMjMnOiBkaWN0KGNvbW1hbmRfb2JqPScnKX0pCisgICAgICAgICAgICApLAorICAgICAg ICAgICAgcGlja2xlX2xvYWRfcmV0dXJuPU1hZ2ljTW9jaygKKyAgICAgICAgICAgICAgICBjb25u X2lkPTEsCisgICAgICAgICAgICAgICAgdXBkYXRlX2ZldGNoZWRfcm93X2NudD1NYWdpY01vY2so KSwKKyAgICAgICAgICAgICAgICBzZXRfY29ubmVjdGlvbl9pZD1NYWdpY01vY2soKSwKKyAgICAg ICAgICAgICAgICBhdXRvX2NvbW1pdD1UcnVlLAorICAgICAgICAgICAgICAgIGF1dG9fcm9sbGJh Y2s9RmFsc2UsCisgICAgICAgICAgICAgICAgY2FuX2VkaXQ9bGFtYmRhOiBUcnVlLAorICAgICAg ICAgICAgICAgIGNhbl9maWx0ZXI9bGFtYmRhOiBUcnVlCisgICAgICAgICAgICApLAorICAgICAg ICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICBtYW5hZ2VyX2Nv bm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCisKKyAgICAgICAgICAgIGlzX2Nvbm5lY3RlZF90b19z ZXJ2ZXI9VHJ1ZSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fY29ubmVjdF9yZXR1cm49Tm9uZSwK KyAgICAgICAgICAgIGV4ZWN1dGVfYXN5bmNfcmV0dXJuX3ZhbHVlPVtUcnVlLCAnYXN5bmMgZnVu Y3Rpb24gcmVzdWx0IG91dHB1dCddLAorICAgICAgICAgICAgaXNfYmVnaW5fcmVxdWlyZWQ9VHJ1 ZSwKKyAgICAgICAgICAgIGlzX3JvbGxiYWNrX3JlcXVpcmVkPUZhbHNlLAorICAgICAgICAgICAg YXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXJfaWZfbmVlZGVkX3JldHVybl92YWx1ZT0nc29tZSBz cWwnLAorCisgICAgICAgICAgICBleHBlY3RfbWFrZV9qc29uX3Jlc3BvbnNlX3RvX2hhdmVfYmVl bl9jYWxsZWRfd2l0aD1kaWN0KAorICAgICAgICAgICAgICAgIGRhdGE9ZGljdCgKKyAgICAgICAg ICAgICAgICAgICAgc3RhdHVzPVRydWUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdD0nYXN5 bmMgZnVuY3Rpb24gcmVzdWx0IG91dHB1dCcsCisgICAgICAgICAgICAgICAgICAgIGNhbl9lZGl0 PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGNhbl9maWx0ZXI9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgICAgaW5mb19ub3RpZmllcl90aW1lb3V0PTUKKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICApLAorICAgICAgICAgICAgZXhwZWN0X2ludGVybmFsX3NlcnZlcl9lcnJvcl90b19o YXZlX2JlZW5fY2FsbGVkX3dpdGg9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdGVkX2xvZ2dlcl9l cnJvcj1Ob25lLAorICAgICAgICAgICAgZXhwZWN0X2V4ZWN1dGVfdm9pZF9jYWxsZWRfd2l0aD0n c29tZSBzcWwnLAorICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHNlcnZlciBpcyBjb25uZWN0 ZWQgYW5kIHN0YXJ0IHF1ZXJ5IGFzeW5jIHJlcXVlc3QgYW5kIHJvbGxiYWNrIGlzIHJlcXVpcmVk LCAnCisgICAgICAgICAnaXQgcmV0dXJucyBhbiBzdWNjZXNzIG1lc3NhZ2UnLCBkaWN0KAorICAg ICAgICAgICAgZnVuY3Rpb25fcGFyYW1ldGVycz1kaWN0KAorICAgICAgICAgICAgICAgIHNxbD1k aWN0KHNxbD0nc29tZSBzcWwnLCBleHBsYWluX3BsYW49Tm9uZSksCisgICAgICAgICAgICAgICAg dHJhbnNfaWQ9MTIzLAorICAgICAgICAgICAgICAgIGh0dHBfc2Vzc2lvbj1kaWN0KGdyaWREYXRh PXsnMTIzJzogZGljdChjb21tYW5kX29iaj0nJyl9KQorICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgIHBpY2tsZV9sb2FkX3JldHVybj1NYWdpY01vY2soCisgICAgICAgICAgICAgICAgY29ubl9p ZD0xLAorICAgICAgICAgICAgICAgIHVwZGF0ZV9mZXRjaGVkX3Jvd19jbnQ9TWFnaWNNb2NrKCks CisgICAgICAgICAgICAgICAgc2V0X2Nvbm5lY3Rpb25faWQ9TWFnaWNNb2NrKCksCisgICAgICAg ICAgICAgICAgYXV0b19jb21taXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICBhdXRvX3JvbGxiYWNr PUZhbHNlLAorICAgICAgICAgICAgICAgIGNhbl9lZGl0PWxhbWJkYTogVHJ1ZSwKKyAgICAgICAg ICAgICAgICBjYW5fZmlsdGVyPWxhbWJkYTogVHJ1ZQorICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgIGdldF9kcml2ZXJfZXhjZXB0aW9uPUZhbHNlLAorICAgICAgICAgICAgbWFuYWdlcl9jb25u ZWN0aW9uX2V4Y2VwdGlvbj1Ob25lLAorCisgICAgICAgICAgICBpc19jb25uZWN0ZWRfdG9fc2Vy dmVyPVRydWUsCisgICAgICAgICAgICBjb25uZWN0aW9uX2Nvbm5lY3RfcmV0dXJuPU5vbmUsCisg ICAgICAgICAgICBleGVjdXRlX2FzeW5jX3JldHVybl92YWx1ZT1bVHJ1ZSwgJ2FzeW5jIGZ1bmN0 aW9uIHJlc3VsdCBvdXRwdXQnXSwKKyAgICAgICAgICAgIGlzX2JlZ2luX3JlcXVpcmVkPUZhbHNl LAorICAgICAgICAgICAgaXNfcm9sbGJhY2tfcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGFw cGx5X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZF9yZXR1cm5fdmFsdWU9J3NvbWUgc3Fs JywKKworICAgICAgICAgICAgZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90b19oYXZlX2JlZW5f Y2FsbGVkX3dpdGg9ZGljdCgKKyAgICAgICAgICAgICAgICBkYXRhPWRpY3QoCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cz1UcnVlLAorICAgICAgICAgICAgICAgICAgICByZXN1bHQ9J2FzeW5j IGZ1bmN0aW9uIHJlc3VsdCBvdXRwdXQnLAorICAgICAgICAgICAgICAgICAgICBjYW5fZWRpdD1U cnVlLAorICAgICAgICAgICAgICAgICAgICBjYW5fZmlsdGVyPVRydWUsCisgICAgICAgICAgICAg ICAgICAgIGluZm9fbm90aWZpZXJfdGltZW91dD01CisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgIGV4cGVjdF9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3JfdG9faGF2 ZV9iZWVuX2NhbGxlZF93aXRoPU5vbmUsCisgICAgICAgICAgICBleHBlY3RlZF9sb2dnZXJfZXJy b3I9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdF9leGVjdXRlX3ZvaWRfY2FsbGVkX3dpdGg9J3Nv bWUgc3FsJywKKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBzZXJ2ZXIgaXMgY29ubmVjdGVk IGFuZCBzdGFydCBxdWVyeSBhc3luYyByZXF1ZXN0IHdpdGggZXhwbGFpbiBwbGFuIHdyYXBwZXIs ICcKKyAgICAgICAgICdpdCByZXR1cm5zIGFuIHN1Y2Nlc3MgbWVzc2FnZScsIGRpY3QoCisgICAg ICAgICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzPWRpY3QoCisgICAgICAgICAgICAgICAgc3FsPWRp Y3Qoc3FsPSdzb21lIHNxbCcsIGV4cGxhaW5fcGxhbj1Ob25lKSwKKyAgICAgICAgICAgICAgICB0 cmFuc19pZD0xMjMsCisgICAgICAgICAgICAgICAgaHR0cF9zZXNzaW9uPWRpY3QoZ3JpZERhdGE9 eycxMjMnOiBkaWN0KGNvbW1hbmRfb2JqPScnKX0pCisgICAgICAgICAgICApLAorICAgICAgICAg ICAgcGlja2xlX2xvYWRfcmV0dXJuPU1hZ2ljTW9jaygKKyAgICAgICAgICAgICAgICBjb25uX2lk PTEsCisgICAgICAgICAgICAgICAgdXBkYXRlX2ZldGNoZWRfcm93X2NudD1NYWdpY01vY2soKSwK KyAgICAgICAgICAgICAgICBzZXRfY29ubmVjdGlvbl9pZD1NYWdpY01vY2soKSwKKyAgICAgICAg ICAgICAgICBhdXRvX2NvbW1pdD1UcnVlLAorICAgICAgICAgICAgICAgIGF1dG9fcm9sbGJhY2s9 RmFsc2UsCisgICAgICAgICAgICAgICAgY2FuX2VkaXQ9bGFtYmRhOiBUcnVlLAorICAgICAgICAg ICAgICAgIGNhbl9maWx0ZXI9bGFtYmRhOiBUcnVlCisgICAgICAgICAgICApLAorICAgICAgICAg ICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5l Y3Rpb25fZXhjZXB0aW9uPU5vbmUsCisKKyAgICAgICAgICAgIGlzX2Nvbm5lY3RlZF90b19zZXJ2 ZXI9VHJ1ZSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fY29ubmVjdF9yZXR1cm49Tm9uZSwKKyAg ICAgICAgICAgIGV4ZWN1dGVfYXN5bmNfcmV0dXJuX3ZhbHVlPVtUcnVlLCAnYXN5bmMgZnVuY3Rp b24gcmVzdWx0IG91dHB1dCddLAorICAgICAgICAgICAgaXNfYmVnaW5fcmVxdWlyZWQ9RmFsc2Us CisgICAgICAgICAgICBpc19yb2xsYmFja19yZXF1aXJlZD1UcnVlLAorICAgICAgICAgICAgYXBw bHlfZXhwbGFpbl9wbGFuX3dyYXBwZXJfaWZfbmVlZGVkX3JldHVybl92YWx1ZT0nRVhQTEFJTiBQ TEFOIHNvbWUgc3FsJywKKworICAgICAgICAgICAgZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90 b19oYXZlX2JlZW5fY2FsbGVkX3dpdGg9ZGljdCgKKyAgICAgICAgICAgICAgICBkYXRhPWRpY3Qo CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBy ZXN1bHQ9J2FzeW5jIGZ1bmN0aW9uIHJlc3VsdCBvdXRwdXQnLAorICAgICAgICAgICAgICAgICAg ICBjYW5fZWRpdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBjYW5fZmlsdGVyPVRydWUsCisg ICAgICAgICAgICAgICAgICAgIGluZm9fbm90aWZpZXJfdGltZW91dD01CisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGV4cGVjdF9pbnRlcm5hbF9zZXJ2ZXJf ZXJyb3JfdG9faGF2ZV9iZWVuX2NhbGxlZF93aXRoPU5vbmUsCisgICAgICAgICAgICBleHBlY3Rl ZF9sb2dnZXJfZXJyb3I9Tm9uZSwKKyAgICAgICAgICAgIGV4cGVjdF9leGVjdXRlX3ZvaWRfY2Fs bGVkX3dpdGg9J0VYUExBSU4gUExBTiBzb21lIHNxbCcsCisgICAgICAgICkpLAorICAgIF0KKwor ICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuc3RhcnRfcnVubmluZ19x dWVyeS5hcHBseV9leHBsYWluX3BsYW5fd3JhcHBlcl9pZl9uZWVkZWQnKQorICAgIEBwYXRjaCgn cGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuc3RhcnRfcnVubmluZ19xdWVyeS5tYWtlX2pz b25fcmVzcG9uc2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMu c3RhcnRfcnVubmluZ19xdWVyeS5waWNrbGUnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5z cWxlZGl0b3IudXRpbHMuc3RhcnRfcnVubmluZ19xdWVyeS5nZXRfZHJpdmVyJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLnN0YXJ0X3J1bm5pbmdfcXVlcnkuaW50 ZXJuYWxfc2VydmVyX2Vycm9yJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuc3FsZWRpdG9y LnV0aWxzLnN0YXJ0X3J1bm5pbmdfcXVlcnkudXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlv bicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlv bl9tb2NrLAorICAgICAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcl9tb2NrLCBnZXRf ZHJpdmVyX21vY2ssIHBpY2tsZV9tb2NrLAorICAgICAgICAgICAgICAgIG1ha2VfanNvbl9yZXNw b25zZV9tb2NrLCBhcHBseV9leHBsYWluX3BsYW5fd3JhcHBlcl9pZl9uZWVkZWRfbW9jayk6Cisg ICAgICAgICIiIkNoZWNrIGNvcnJlY3QgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGhhbmRsZSB0byBy dW4gcXVlcnkuIiIiCisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IE5vbmUKKworICAgICAgICBz ZWxmLmxvZ2dlck1vY2sgPSBNYWdpY01vY2soZXJyb3I9TWFnaWNNb2NrKCkpCisgICAgICAgIGV4 cGVjdGVkX3Jlc3BvbnNlID0gUmVzcG9uc2UocmVzcG9uc2U9anNvbi5kdW1wcyh7J2Vycm9ybXNn JzogJ3NvbWUgdmFsdWUnfSkpCisgICAgICAgIG1ha2VfanNvbl9yZXNwb25zZV9tb2NrLnJldHVy bl92YWx1ZSA9IGV4cGVjdGVkX3Jlc3BvbnNlCisgICAgICAgIGlmIHNlbGYuZXhwZWN0X2ludGVy bmFsX3NlcnZlcl9lcnJvcl90b19oYXZlX2JlZW5fY2FsbGVkX3dpdGggaXMgbm90IE5vbmU6Cisg ICAgICAgICAgICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JfbW9jay5yZXR1cm5fdmFsdWUgPSBleHBl Y3RlZF9yZXNwb25zZQorICAgICAgICBwaWNrbGVfbW9jay5sb2Fkcy5yZXR1cm5fdmFsdWUgPSBz ZWxmLnBpY2tsZV9sb2FkX3JldHVybgorICAgICAgICBibHVlcHJpbnRfbW9jayA9IE1hZ2ljTW9j ayhpbmZvX25vdGlmaWVyX3RpbWVvdXQ9TWFnaWNNb2NrKGdldD1sYW1iZGE6IDUpKQorCisgICAg ICAgIGlmIHNlbGYuaXNfYmVnaW5fcmVxdWlyZWQ6CisgICAgICAgICAgICBTdGFydFJ1bm5pbmdR dWVyeS5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5ID0gTWFnaWNNb2NrKHJldHVybl92 YWx1ZT1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgU3RhcnRSdW5uaW5nUXVlcnku aXNfYmVnaW5fcmVxdWlyZWRfZm9yX3NxbF9xdWVyeSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9 RmFsc2UpCisgICAgICAgIGlmIHNlbGYuaXNfcm9sbGJhY2tfcmVxdWlyZWQ6CisgICAgICAgICAg ICBTdGFydFJ1bm5pbmdRdWVyeS5pc19yb2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWQgPSBNYWdp Y01vY2socmV0dXJuX3ZhbHVlPVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBTdGFy dFJ1bm5pbmdRdWVyeS5pc19yb2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWQgPSBNYWdpY01vY2so cmV0dXJuX3ZhbHVlPUZhbHNlKQorCisgICAgICAgIGFwcGx5X2V4cGxhaW5fcGxhbl93cmFwcGVy X2lmX25lZWRlZF9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYuYXBwbHlfZXhwbGFpbl9wbGFuX3dy YXBwZXJfaWZfbmVlZGVkX3JldHVybl92YWx1ZQorCisgICAgICAgIG1hbmFnZXIgPSBzZWxmLl9f Y3JlYXRlX21hbmFnZXIoKQorICAgICAgICBpZiBzZWxmLmdldF9kcml2ZXJfZXhjZXB0aW9uOgor ICAgICAgICAgICAgZ2V0X2RyaXZlcl9tb2NrLnNpZGVfZWZmZWN0ID0gZ2V0X2RyaXZlcl9leGNl cHRpb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdldF9kcml2ZXJfbW9jay5yZXR1cm5f dmFsdWUgPSBNYWdpY01vY2soY29ubmVjdGlvbl9tYW5hZ2VyPWxhbWJkYSBzZXNzaW9uX2lkOiBt YW5hZ2VyKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IFN0YXJ0UnVubmlu Z1F1ZXJ5KAorICAgICAgICAgICAgICAgIGJsdWVwcmludF9tb2NrLAorICAgICAgICAgICAgICAg IHNlbGYubG9nZ2VyTW9jaworICAgICAgICAgICAgKS5leGVjdXRlKAorICAgICAgICAgICAgICAg ICoqc2VsZi5mdW5jdGlvbl9wYXJhbWV0ZXJzCisgICAgICAgICAgICApCisgICAgICAgICAgICBp ZiBzZWxmLm1hbmFnZXJfY29ubmVjdGlvbl9leGNlcHRpb24gaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgc2VsZi5mYWlsKCdFeGNlcHRpb246ICInICsgc3RyKHNlbGYubWFuYWdlcl9jb25u ZWN0aW9uX2V4Y2VwdGlvbikgKyAnIiBleGNlcHRlZCBidXQgbm90IHJhaXNlZCcpCisKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWRfcmVzcG9uc2UpCisKKyAg ICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhzZWxmLm1hbmFnZXJfY29ubmVjdGlvbl9leGNlcHRpb24sIGV4Y2VwdGlvbikKKworICAg ICAgICBzZWxmLl9fbW9ja19hc3NlcnRpb25zKGludGVybmFsX3NlcnZlcl9lcnJvcl9tb2NrLCBt YWtlX2pzb25fcmVzcG9uc2VfbW9jaykKKyAgICAgICAgaWYgc2VsZi5pc19jb25uZWN0ZWRfdG9f c2VydmVyOgorICAgICAgICAgICAgYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXJfaWZfbmVlZGVk X21vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hbmFnZXIsIHNlbGYuZnVuY3Rpb25fcGFyYW1ldGVy c1snc3FsJ10pCisKKyAgICBkZWYgX19jcmVhdGVfbWFuYWdlcihzZWxmKToKKyAgICAgICAgc2Vs Zi5jb25uZWN0aW9uID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgY29ubmVjdGVkPWxhbWJkYTog c2VsZi5pc19jb25uZWN0ZWRfdG9fc2VydmVyLAorICAgICAgICAgICAgY29ubmVjdD1NYWdpY01v Y2soKSwKKyAgICAgICAgICAgIGV4ZWN1dGVfYXN5bmM9TWFnaWNNb2NrKCksCisgICAgICAgICAg ICBleGVjdXRlX3ZvaWQ9TWFnaWNNb2NrKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5jb25u ZWN0aW9uLmNvbm5lY3QucmV0dXJuX3ZhbHVlID0gc2VsZi5jb25uZWN0aW9uX2Nvbm5lY3RfcmV0 dXJuCisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5leGVjdXRlX2FzeW5jLnJldHVybl92YWx1ZSA9 IHNlbGYuZXhlY3V0ZV9hc3luY19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgc2VsZi5tYW5hZ2Vy X2Nvbm5lY3Rpb25fZXhjZXB0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBtYW5hZ2VyID0gTWFn aWNNb2NrKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb249bGFtYmRhIGRpZCwgY29ubl9pZCwg dXNlX2JpbmFyeV9wbGFjZWhvbGRlciwgYXJyYXlfdG9fc3RyaW5nLCBhdXRvX3JlY29ubmVjdDog c2VsZi5jb25uZWN0aW9uCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBtYW5hZ2VyID0gTWFnaWNNb2NrKCkKKyAgICAgICAgICAgIG1hbmFnZXIuY29ubmVjdGlvbi5z aWRlX2VmZmVjdCA9IHNlbGYubWFuYWdlcl9jb25uZWN0aW9uX2V4Y2VwdGlvbgorICAgICAgICBy ZXR1cm4gbWFuYWdlcgorCisgICAgZGVmIF9fbW9ja19hc3NlcnRpb25zKHNlbGYsIGludGVybmFs X3NlcnZlcl9lcnJvcl9tb2NrLCBtYWtlX2pzb25fcmVzcG9uc2VfbW9jayk6CisgICAgICAgIGlm IHNlbGYuZXhwZWN0X21ha2VfanNvbl9yZXNwb25zZV90b19oYXZlX2JlZW5fY2FsbGVkX3dpdGgg aXMgbm90IE5vbmU6CisgICAgICAgICAgICBtYWtlX2pzb25fcmVzcG9uc2VfbW9jay5hc3NlcnRf Y2FsbGVkX3dpdGgoKipzZWxmLmV4cGVjdF9tYWtlX2pzb25fcmVzcG9uc2VfdG9faGF2ZV9iZWVu X2NhbGxlZF93aXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFrZV9qc29uX3Jlc3Bv bnNlX21vY2suYXNzZXJ0X25vdF9jYWxsZWQoKQorICAgICAgICBpZiBzZWxmLmV4cGVjdF9pbnRl cm5hbF9zZXJ2ZXJfZXJyb3JfdG9faGF2ZV9iZWVuX2NhbGxlZF93aXRoIGlzIG5vdCBOb25lOgor ICAgICAgICAgICAgaW50ZXJuYWxfc2VydmVyX2Vycm9yX21vY2suYXNzZXJ0X2NhbGxlZF93aXRo KCoqc2VsZi5leHBlY3RfaW50ZXJuYWxfc2VydmVyX2Vycm9yX3RvX2hhdmVfYmVlbl9jYWxsZWRf d2l0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcl9t b2NrLmFzc2VydF9ub3RfY2FsbGVkKCkKKyAgICAgICAgaWYgc2VsZi5leGVjdXRlX2FzeW5jX3Jl dHVybl92YWx1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5leGVj dXRlX2FzeW5jLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmLmV4cGVjdF9leGVjdXRlX3ZvaWRfY2Fs bGVkX3dpdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uZXhl Y3V0ZV9hc3luYy5hc3NlcnRfbm90X2NhbGxlZCgpCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3Rl ZF9sb2dnZXJfZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmxvZ2dlck1vY2su ZXJyb3IuYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGYuZXhwZWN0ZWRfbG9nZ2VyX2Vycm9yKQorICAg ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5sb2dnZXJNb2NrLmVycm9yLmFzc2VydF9ub3Rf Y2FsbGVkKCkKKworICAgICAgICBpZiBzZWxmLmlzX2JlZ2luX3JlcXVpcmVkOgorICAgICAgICAg ICAgc2VsZi5jb25uZWN0aW9uLmV4ZWN1dGVfdm9pZC5hc3NlcnRfY2FsbGVkX3dpdGgoJ0JFR0lO OycpCisgICAgICAgIGVsaWYgbm90IHNlbGYuaXNfcm9sbGJhY2tfcmVxdWlyZWQ6CisgICAgICAg ICAgICBzZWxmLmNvbm5lY3Rpb24uZXhlY3V0ZV92b2lkLmFzc2VydF9ub3RfY2FsbGVkKCkKKyAg ICAgICAgaWYgc2VsZi5pc19yb2xsYmFja19yZXF1aXJlZDoKKyAgICAgICAgICAgIHNlbGYuY29u bmVjdGlvbi5leGVjdXRlX3ZvaWQuYXNzZXJ0X2NhbGxlZF93aXRoKCdST0xMQkFDSzsnKQorICAg ICAgICBlbGlmIG5vdCBzZWxmLmlzX2JlZ2luX3JlcXVpcmVkOgorICAgICAgICAgICAgc2VsZi5j b25uZWN0aW9uLmV4ZWN1dGVfdm9pZC5hc3NlcnRfbm90X2NhbGxlZCgpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFu c2FjdGlvbi5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy91cGRhdGVfc2Vz c2lvbl9ncmlkX3RyYW5zYWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwLi5hZWY3OGYyMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci91dGlscy91cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5zYWN0aW9uLnB5CkBAIC0wLDAgKzEs MTggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIlVwZGF0ZSBzZXNzaW9uIHdpdGgg Z3JpZERhdGEuIiIiCitmcm9tIGZsYXNrIGltcG9ydCBzZXNzaW9uCisKKworZGVmIHVwZGF0ZV9z ZXNzaW9uX2dyaWRfdHJhbnNhY3Rpb24odHJhbnNfaWQsIGRhdGEpOgorICAgIGlmICdncmlkRGF0 YScgaW4gc2Vzc2lvbjoKKyAgICAgICAgZ3JpZF9kYXRhID0gc2Vzc2lvblsnZ3JpZERhdGEnXQor ICAgICAgICBncmlkX2RhdGFbc3RyKHRyYW5zX2lkKV0gPSBkYXRhCisgICAgICAgIHNlc3Npb25b J2dyaWREYXRhJ10gPSBncmlkX2RhdGEKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL2Nv bXBpbGVfdGVtcGxhdGVfbmFtZS5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2NvbXBpbGVfdGVtcGxh dGVfbmFtZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmViMjQzMWYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi91dGlscy9jb21waWxlX3RlbXBsYXRlX25h bWUucHkKQEAgLTAsMCArMSwxNyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBv cworCisKK2RlZiBjb21waWxlX3RlbXBsYXRlX25hbWUodGVtcGxhdGVfcHJlZml4LCB0ZW1wbGF0 ZV9maWxlX25hbWUsIHNlcnZlcl90eXBlLCB2ZXJzaW9uKToKKyAgICBpZiBzZXJ2ZXJfdHlwZSA9 PSAnZ3BkYic6CisgICAgICAgIHZlcnNpb25fcGF0aCA9ICcjezB9I3sxfSMnLmZvcm1hdChzZXJ2 ZXJfdHlwZSwgdmVyc2lvbikKKyAgICBlbHNlOgorICAgICAgICB2ZXJzaW9uX3BhdGggPSAnI3sw fSMnLmZvcm1hdCh2ZXJzaW9uKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4odGVtcGxhdGVfcHJl Zml4LCB2ZXJzaW9uX3BhdGgsIHRlbXBsYXRlX2ZpbGVfbmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3V0aWxzL3Rlc3RzL3Rlc3RfY29tcGlsZV90ZW1wbGF0ZV9uYW1lLnB5IGIvd2ViL3Bn YWRtaW4vdXRpbHMvdGVzdHMvdGVzdF9jb21waWxlX3RlbXBsYXRlX25hbWUucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjk3ZjFiMDVjCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vdXRpbHMvdGVzdHMvdGVzdF9jb21waWxlX3RlbXBsYXRlX25hbWUucHkKQEAg LTAsMCArMSwzNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gcGdhZG1pbi51dGlscy5j b21waWxlX3RlbXBsYXRlX25hbWUgaW1wb3J0IGNvbXBpbGVfdGVtcGxhdGVfbmFtZQorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCisKK2NsYXNzIFN0 YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgQ2hl Y2sgdGhhdCB0aGUgYXBwbHlfZXhwbGFpbl9wbGFuX3dlYXBwZXJfaWZfbmVlZGVkIG1ldGhvZCB3 b3JrcyBhcyBpbnRlbmRlZAorICAgICIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdX aGVuIHNlcnZlciBpcyBQb3N0Z3JlcyBhbmQgdmVyc2lvbiBpcyAxMCwgaXQgcmV0dXJucyB0aGUg cGF0aCB0byB0aGUgcG9zdGdyZXMgdGVtcGxhdGUnLCBkaWN0KAorICAgICAgICAgICAgc2VydmVy X3R5cGU9J3BnJywKKyAgICAgICAgICAgIHZlcnNpb249MTAwMDAwLAorCisgICAgICAgICAgICBl eHBlY3RlZF9yZXR1cm5fdmFsdWU9J3NvbWUvcHJlZml4LyMxMDAwMDAjL3NvbWVfZmlsZS5zcWwn CisgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gc2VydmVyIGlzIEdyZWVuUGx1bSBhbmQgdmVy c2lvbiBpcyA1LCBpdCByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBHcmVlblBsdW0gdGVtcGxhdGUn LCBkaWN0KAorICAgICAgICAgICAgc2VydmVyX3R5cGU9J2dwZGInLAorICAgICAgICAgICAgdmVy c2lvbj04MDMyMywKKworICAgICAgICAgICAgZXhwZWN0ZWRfcmV0dXJuX3ZhbHVlPSdzb21lL3By ZWZpeC8jZ3BkYiM4MDMyMyMvc29tZV9maWxlLnNxbCcKKyAgICAgICAgKSksCisgICAgXQorCisg ICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGNvbXBpbGVfdGVtcGxhdGVf bmFtZSgnc29tZS9wcmVmaXgnLCAnc29tZV9maWxlLnNxbCcsIHNlbGYuc2VydmVyX3R5cGUsIHNl bGYudmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0LCBzZWxmLmV4cGVj dGVkX3JldHVybl92YWx1ZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL3ZlcnNpb25l ZF90ZW1wbGF0ZV9sb2FkZXIucHkgYi93ZWIvcGdhZG1pbi91dGlscy92ZXJzaW9uZWRfdGVtcGxh dGVfbG9hZGVyLnB5CmluZGV4IDE5NjkzMDEyLi44ZTgyNTlmZSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdXRpbHMvdmVyc2lvbmVkX3RlbXBsYXRlX2xvYWRlci5weQorKysgYi93ZWIvcGdhZG1p bi91dGlscy92ZXJzaW9uZWRfdGVtcGxhdGVfbG9hZGVyLnB5CkBAIC02LDcgKzYsNiBAQAogIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKICMK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0KIGZyb20gZmxhc2sudGVtcGxhdGluZyBpbXBvcnQgRGlzcGF0 Y2hpbmdKaW5qYUxvYWRlcgogZnJvbSBqaW5qYTIgaW1wb3J0IFRlbXBsYXRlTm90Rm91bmQKIApA QCAtNTQsNiArNTMsNyBAQCBjbGFzcyBWZXJzaW9uZWRUZW1wbGF0ZUxvYWRlcihEaXNwYXRjaGlu Z0ppbmphTG9hZGVyKToKIAogICAgICAgICAgICAgdGVtcGxhdGVfcGF0aCA9IHBhdGhfc3RhcnQg KyAnLycgKyBcCiAgICAgICAgICAgICAgICAgc2VydmVyX3ZlcnNpb25bJ25hbWUnXSArICcvJyAr IGZpbGVfbmFtZQorCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN1 cGVyKFZlcnNpb25lZFRlbXBsYXRlTG9hZGVyLCBzZWxmKS5nZXRfc291cmNlKAogICAgICAgICAg ICAgICAgICAgICBlbnZpcm9ubWVudCwgdGVtcGxhdGVfcGF0aApkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcyBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKaW5kZXggMDI1MGEwZGYuLjYzYWIwNWRjIDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfZW5kcG9pbnRzLmpzCisrKyBi L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKQEAgLTgsNSArOCw5 IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBkZWZpbmUoZnVuY3Rpb24gKCkgewotICByZXR1cm4g eydzdGF0aWMnOiAnL2Jhc2UvcGdhZG1pbi9zdGF0aWMvPHBhdGg6ZmlsZW5hbWU+J307CisgIHJl dHVybiB7CisgICAgJ3N0YXRpYyc6ICcvYmFzZS9wZ2FkbWluL3N0YXRpYy88cGF0aDpmaWxlbmFt ZT4nLAorICAgICdzcWxlZGl0b3IucG9sbCc6ICcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC88 cGF0aDp0cmFuc19pZD4nLAorICAgICdzcWxlZGl0b3IucXVlcnlfdG9vbF9zdGFydCc6ICcvc3Fs ZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvPHBhdGg6dHJhbnNfaWQ+JworICB9OwogfSk7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5 X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9leGVjdXRlX3F1 ZXJ5X3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjk4ZmFlZDdk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iv ZXhlY3V0ZV9xdWVyeV9zcGVjLmpzCkBAIC0wLDAgKzEsMTcwMiBAQAorLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKworaW1wb3J0ICogYXMgc3ViamVjdCBmcm9tICdzb3VyY2VzL3NxbGVk aXRvci9leGVjdXRlX3F1ZXJ5JzsKK2ltcG9ydCAqIGFzIHRyYW5zYWN0aW9uIGZyb20gJ3NvdXJj ZXMvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCc7CitpbXBvcnQgYXhpb3Mg ZnJvbSAnYXhpb3MnOworaW1wb3J0IE1vY2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRl cic7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7 CisKK2Rlc2NyaWJlKCdFeGVjdXRlUXVlcnknLCAoKSA9PiB7CisgIGxldCBzcWxFZGl0b3JNb2Nr OworICBsZXQgbmV0d29ya01vY2s7CisgIGxldCBleGVjdXRlUXVlcnk7CisgIGxldCB1c2VyTWFu YWdlbWVudE1vY2s7CisgIGxldCBpc05ld1RyYW5zYWN0aW9uUmVxdWlyZWRNb2NrOworCisgIGNv bnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKDIwMTgsIDEsIDI5LCAxMiwgMTUsIDUyKTsKKyAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgbmV0d29ya01vY2sgPSBuZXcgTW9ja0FkYXB0ZXIoYXhpb3Mp OworICAgIGphc21pbmUuYWRkTWF0Y2hlcnMoe2pRdWVyeXRvSGF2ZUJlZW5DYWxsZWRXaXRoOiBq UXVlcnl0b0hhdmVCZWVuQ2FsbGVkV2l0aH0pOworICAgIHVzZXJNYW5hZ2VtZW50TW9jayA9IGph c21pbmUuY3JlYXRlU3B5T2JqKCdVc2VyTWFuYWdlbWVudCcsIFsKKyAgICAgICdpc19wZ2FfbG9n aW5fcmVxdWlyZWQnLAorICAgICAgJ3BnYV9sb2dpbicsCisgICAgXSk7CisKKyAgICBzcWxFZGl0 b3JNb2NrID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ1NxbEVkaXRvcicsIFsKKyAgICAgICdjYWxs X3JlbmRlcl9hZnRlcl9wb2xsJywKKyAgICAgICdkaXNhYmxlX3Rvb2xfYnV0dG9ucycsCisgICAg ICAncmVzZXRRdWVyeUhpc3RvcnlPYmplY3QnLAorICAgICAgJ3NldElzUXVlcnlSdW5uaW5nJywK KyAgICAgICd0cmlnZ2VyJywKKyAgICAgICd1cGRhdGVfbXNnX2hpc3RvcnknLAorICAgICAgJ19o aWdobGlnaHRfZXJyb3InLAorICAgICAgJ19pbml0X3BvbGxpbmdfZmxhZ3MnLAorICAgICAgJ3Nh dmVfc3RhdGUnLAorICAgICAgJ2luaXRfdHJhbnNhY3Rpb24nLAorICAgIF0pOworICAgIHNxbEVk aXRvck1vY2sudHJhbnNJZCA9IDEyMzsKKyAgICBzcWxFZGl0b3JNb2NrLnJvd3NfYWZmZWN0ZWQg PSAxMDAwOworICAgIGV4ZWN1dGVRdWVyeSA9IG5ldyBzdWJqZWN0LkV4ZWN1dGVRdWVyeShzcWxF ZGl0b3JNb2NrLCB1c2VyTWFuYWdlbWVudE1vY2spOworICAgIGlzTmV3VHJhbnNhY3Rpb25SZXF1 aXJlZE1vY2sgPSBzcHlPbih0cmFuc2FjdGlvbiwgJ2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJl ZCcpOworICB9KTsKKworICBkZXNjcmliZSgnI3BvbGwnLCAoKSA9PiB7CisgICAgbGV0IGNhbmNl bEJ1dHRvblNweTsKKyAgICBsZXQgcmVzcG9uc2U7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICAgIHNxbEVkaXRvck1vY2suUE9MTF9GQUxMQkFDS19USU1FID0gKCkgPT4geworICAgICAg ICByZXR1cm4gMDsKKyAgICAgIH07CisKKyAgICAgIGNhbmNlbEJ1dHRvblNweSA9IHNweU9uKCQu Zm4sICdwcm9wJyk7CisgICAgICBleGVjdXRlUXVlcnkuZGVsYXllZFBvbGwgPSBqYXNtaW5lLmNy ZWF0ZVNweSgnRXhlY3V0ZVF1ZXJ5LmRlbGF5ZWRQb2xsJyk7CisgICAgfSk7CisKKyAgICBhZnRl ckVhY2goKCkgPT4geworICAgIH0pOworCisgICAgY29udGV4dCgnd2hlbiBTUUxFZGl0b3IgaXMg dGhlIHF1ZXJ5IHRvb2wnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAg ICAgc3FsRWRpdG9yTW9jay5pc19xdWVyeV90b29sID0gdHJ1ZTsKKyAgICAgIH0pOworCisgICAg ICBkZXNjcmliZSgnd2hlbiBzZXJ2ZXIgYW5zd2VyIHdpdGggc3VjY2VzcycsICgpID0+IHsKKyAg ICAgICAgZGVzY3JpYmUoJ3doZW4gcXVlcnkgd2FzIHN1Y2Nlc3NmdWwnLCAoKSA9PiB7CisgICAg ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICByZXNwb25zZSA9IHsKKyAgICAg ICAgICAgICAgZGF0YToge3N0YXR1czogJ1N1Y2Nlc3MnfSwKKyAgICAgICAgICAgIH07CisgICAg ICAgICAgICBuZXR3b3JrTW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVyeV90b29sL3BvbGwvMTIz JykucmVwbHkoMjAwLCByZXNwb25zZSk7CisKKyAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xs KCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgbG9h ZGluZyBpY29uIG1lc3NhZ2UnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgo KSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRyaWdnZXIpCisgICAg ICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICAgJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywKKyAgICAgICAgICAgICAgICAg ICdMb2FkaW5nIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVyIGFuZCByZW5kZXJpbmcuLi4n CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg fSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIHJlbmRlciB0aGUg cmVzdWx0cycsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAg ICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbCkK KyAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoe3N0YXR1czogJ1N1Y2Nlc3Mn fSk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAg IH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnd2hlbiBxdWVyeSBpcyBzdGls bCBydW5uaW5nJywgKCkgPT4geworICAgICAgICAgIGNvbnRleHQoJ3doZW4gbm8gYWRkaXRpb25h bCBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZCcsICgpID0+IHsKKyAgICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgICAgICByZXNwb25zZSA9IHsKKyAgICAgICAgICAgICAgICBk YXRhOiB7c3RhdHVzOiAnQnVzeSd9LAorICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg IG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBs eSgyMDAsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKKyAg ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxkIHNldCB0aGUgZmxhZyB0byBp bmZvcm0gU1FMRWRpdG9yIGEgcXVlcnkgaXMgcnVubmluZycsIChkb25lKSA9PiB7CisgICAgICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0 b3JNb2NrLnNldElzUXVlcnlSdW5uaW5nKQorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg fSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCBkb2VzIG5v dCB1cGRhdGUgaGlzdG9yeScsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo KCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnVwZGF0ZV9tc2df aGlzdG9yeSkubm90CisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZCgpOworICAg ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9 KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCByZWN1cnNpdmVseSBjYWxsIHBvbGxpbmcnLCAo ZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgICBleHBlY3QoZXhlY3V0ZVF1ZXJ5LmRlbGF5ZWRQb2xsKQorICAgICAgICAgICAgICAgICAg LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg ICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBj b250ZXh0KCd3aGVuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQnLCAoKSA9PiB7 CisgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgcmVzcG9uc2Ug PSB7CisgICAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgICAgc3RhdHVzOiAn QnVzeScsCisgICAgICAgICAgICAgICAgICByZXN1bHQ6ICdTb21lIGltcG9ydGFudCByZXN1bHQn LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg bmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5 KDIwMCwgcmVzcG9uc2UpOworICAgICAgICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOworICAg ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgc2V0IHRoZSBmbGFnIHRvIGlu Zm9ybSBTUUxFZGl0b3IgYSBxdWVyeSBpcyBydW5uaW5nJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRv ck1vY2suc2V0SXNRdWVyeVJ1bm5pbmcpCisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNh bGxlZFdpdGgodHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9 LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSBo aXN0b3J5IG1lc3NhZ2UnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay51cGRhdGVfbXNnX2hp c3RvcnkpCisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ0J1c3knLCAn U29tZSBpbXBvcnRhbnQgcmVzdWx0JywgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQo J3Nob3VsZCByZWN1cnNpdmVseSBjYWxsIHBvbGxpbmcnLCAoZG9uZSkgPT4geworICAgICAgICAg ICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXhlY3V0ZVF1 ZXJ5LmRlbGF5ZWRQb2xsKQorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQoKTsK KyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAg ICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCd3 aGVuIHRoZSBhcHBsaWNhdGlvbiBsb3N0IGNvbm5lY3Rpb24gd2l0aCB0aGUgZGF0YWJhc2UnLCAo KSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICByZXNwb25z ZSA9IHsKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgIHN0YXR1czogJ05v dENvbm5lY3RlZCcsCisgICAgICAgICAgICAgICAgcmVzdWx0OiAnU29tZSBpbnRlcmVzdGluZyBy ZXN1bHQnLAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG5l dHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSgy MDAsIHJlc3BvbnNlKTsKKworICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKKyAgICAg ICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywg KGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg ICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAgIC50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAg ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisK KyAgICAgICAgICBpdCgnc2hvdWxkIGFkZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRl IHRoZSBNZXNzYWdlcyB0YWIgYW5kIGNsZWFyIHRoZSByZXN1bHQgZ3JpZCcsIChkb25lKSA9PiB7 CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHNx bEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0b3J5KQorICAgICAgICAgICAgICAgIC50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAg ICAgJ1NvbWUgaW50ZXJlc3RpbmcgcmVzdWx0JywKKyAgICAgICAgICAgICAgICAgIHRydWUKKyAg ICAgICAgICAgICAgICApOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAw KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgZW5hYmxlIHRoZSB0b29s IGJ1dHRvbnMnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAg ICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLmRpc2Fi bGVfdG9vbF9idXR0b25zKQorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOwor ICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBkaXNhYmxlIHRoZSBjYW5jZWwg YnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAg ICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2FuY2VsQnV0dG9uU3B5KQorICAg ICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcsIHRydWUpOwor ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg fSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCd3aGVuIHF1ZXJ5IHdhcyBjYW5j ZWxsZWQnLCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAg ICByZXNwb25zZSA9IHsKKyAgICAgICAgICAgICAgZGF0YToge3N0YXR1czogJ0NhbmNlbCd9LAor ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9y L3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKKworICAgICAgICAg ICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdz aG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmln Z2VyKQorICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxl ZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg ICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGFkZCBu ZXcgZW50cnkgdG8gaGlzdG9yeSwgYWRkIGNhbmNlbGxhdGlvbiBtZXNzYWdlIHRvIE1lc3NhZ2Vz IHRhYiBhbmQgY2xlYXIgdGhlIHJlc3VsdCBncmlkJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay51 cGRhdGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAnRXhlY3V0aW9u IENhbmNlbGxlZCEnLAorICAgICAgICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgICAgICk7 CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0p OworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgnd2hlbiBhbiBlcnJv ciBvY2N1cicsICgpID0+IHsKKyAgICAgICAgbGV0IGVycm9yTWVzc2FnZUpzb24gPSB7CisgICAg ICAgICAgZXJyb3Jtc2c6ICdTb21lIGVycm9yIGluIEpTT04nLAorICAgICAgICB9OworICAgICAg ICBsZXQgZXJyb3JNZXNzYWdlVGV4dCA9ICdTb21lIHBsYWluIHRleHQgZXJyb3InOworCisgICAg ICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgd2FzIGxvc3Qn LCAoKSA9PiB7CisgICAgICAgICAgZGVzY3JpYmUoJ3doZW4gSlNPTiByZXNwb25zZSBpcyBhdmFp bGFibGUnLCAoKSA9PiB7CisgICAgICAgICAgICBkZXNjcmliZSgnd2hlbiBsb2dpbiBpcyBub3Qg cmVxdWlyZWQnLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICAgICAgICAgIHVzZXJNYW5hZ2VtZW50TW9jay5pc19wZ2FfbG9naW5fcmVxdWlyZWQuYW5k LnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHtyZXNwb25z ZUpTT046IGVycm9yTWVzc2FnZUpzb259OworICAgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9u R2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSg0MDEsIHJlc3BvbnNl KTsKKworICAgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7CisgICAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywg KGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAg ICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmln Z2VyKQorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1p bi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgICAgICAgICAgZG9u ZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgIH0pOworCisgICAg ICAgICAgICAgIGl0KCdzaG91bGQgcmVzZXQgbGFzdCBxdWVyeSBpbmZvcm1hdGlvbicsIChkb25l KSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAgICgp ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sucmVzZXRRdWVy eUhpc3RvcnlPYmplY3QpCisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKHNxbEVkaXRvck1vY2spOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgaXQo J3Nob3VsZCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBTUUwgcGFuZWwnLCAoZG9uZSkgPT4g eworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAoKSA9PiB7 CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9oaWdobGlnaHRfZXJy b3IpCisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdTb21lIGVy cm9yIGluIEpTT04nKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg ICAgICAgfSwgMCk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91 bGQgYWRkIG5ldyBlbnRyeSB0byBoaXN0b3J5IGFuZCB1cGRhdGUgdGhlIE1lc3NhZ2VzIHRhYics IChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAg ICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBk YXRlX21zZ19oaXN0b3J5KQorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVk V2l0aChmYWxzZSwgJ1NvbWUgZXJyb3IgaW4gSlNPTicpOworICAgICAgICAgICAgICAgICAgICBk b25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7CisKKyAg ICAgICAgICAgICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9 PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAgICgpID0+ IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29s X2J1dHRvbnMpCisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZh bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgZGlzYWJs ZSB0aGUgY2FuY2VsIGJ1dHRvbicsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGlt ZW91dCgKKyAgICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhw ZWN0KGNhbmNlbEJ1dHRvblNweSkKKyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNh bGxlZFdpdGgoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg ICAgICBpdCgnc2hvdWxkIG5vdCBsb2dpbiBpcyBkaXNwbGF5ZWQnLCAoZG9uZSkgPT4geworICAg ICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAg ICAgICAgICAgICAgICAgIGV4cGVjdCh1c2VyTWFuYWdlbWVudE1vY2sucGdhX2xvZ2luKS5ub3QK KyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAg fSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4g aXMgcmVxdWlyZWQnLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgICAgICAgICAgIHVzZXJNYW5hZ2VtZW50TW9jay5pc19wZ2FfbG9naW5fcmVxdWlyZWQu YW5kLnJldHVyblZhbHVlKHRydWUpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0ge3Jlc3Bv bnNlSlNPTjogZXJyb3JNZXNzYWdlSnNvbn07CisgICAgICAgICAgICAgICAgbmV0d29ya01vY2su b25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDQwMSwgcmVzcG9u c2UpOworCisgICAgICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKKyAgICAgICAgICAg ICAgfSk7CisKKyAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGljb24n LCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAg ICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRy aWdnZXIpCisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2Fk bWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAgICAgICAgICAgICAgICBk b25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7CisKKyAg ICAgICAgICAgICAgaXQoJ3Nob3VsZCByZXNldCBsYXN0IHF1ZXJ5IGluZm9ybWF0aW9uJywgKGRv bmUpID0+IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICAg KCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5yZXNldFF1 ZXJ5SGlzdG9yeU9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxl ZFdpdGgoc3FsRWRpdG9yTW9jayk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg ICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICBp dCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBTUUwgcGFuZWwnLCAoZG9u ZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAo KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9oaWdobGln aHRfZXJyb3IpLm5vdAorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIH0sIDApOwor ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBhZGQgbmV3 IGVudHJ5IHRvIGhpc3RvcnkgYW5kIHVwZGF0ZSB0aGUgTWVzc2FnZXMgdGFiJywgKGRvbmUpID0+ IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICAgKCkgPT4g eworICAgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay51cGRhdGVfbXNnX2hp c3RvcnkpLm5vdAorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7Cisg ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUgdG9v bCBidXR0b25zJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAg ICAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRp dG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykKKyAgICAgICAgICAgICAgICAgICAgICAudG9I YXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg ICAgaXQoJ3Nob3VsZCBkaXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAg ICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICAgKCkgPT4geworICAg ICAgICAgICAgICAgICAgICBleHBlY3QoY2FuY2VsQnV0dG9uU3B5KQorICAgICAgICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAg ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg ICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgbG9naW4gaXMgZGlzcGxheWVkJywg KGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAg ICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBlY3QodXNlck1hbmFnZW1lbnRNb2Nr LnBnYV9sb2dpbikKKyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZCgpOwor ICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAg ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAg ICAgIGRlc2NyaWJlKCd3aGVuIG5vIEpTT04gcmVzcG9uc2UgaXMgYXZhaWxhYmxlJywgKCkgPT4g eworICAgICAgICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4gaXMgbm90IHJlcXVpcmVkJywgKCkg PT4geworICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgICB1 c2VyTWFuYWdlbWVudE1vY2suaXNfcGdhX2xvZ2luX3JlcXVpcmVkLmFuZC5yZXR1cm5WYWx1ZShm YWxzZSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7CisgICAgICAgICAgICAgICAgICBl cnJvcm1zZzogZXJyb3JNZXNzYWdlVGV4dCwKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAg ICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMn KS5yZXBseSg0MDEsIHJlc3BvbnNlKTsKKworICAgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5w b2xsKCk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgaGlk ZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgICBzZXRUaW1l b3V0KAorICAgICAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAg ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAg ICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgcmVzZXQgbGFzdCBxdWVy eSBpbmZvcm1hdGlvbicsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgK KyAgICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNx bEVkaXRvck1vY2sucmVzZXRRdWVyeUhpc3RvcnlPYmplY3QpCisgICAgICAgICAgICAgICAgICAg ICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNxbEVkaXRvck1vY2spOworICAgICAgICAgICAgICAg ICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7 CisKKyAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBT UUwgcGFuZWwnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAg ICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0 b3JNb2NrLl9oaWdobGlnaHRfZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKCdTb21lIHBsYWluIHRleHQgZXJyb3InKTsKKyAgICAgICAgICAgICAgICAg ICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgIH0pOwor CisgICAgICAgICAgICAgIGl0KCdzaG91bGQgYWRkIG5ldyBlbnRyeSB0byBoaXN0b3J5IGFuZCB1 cGRhdGUgdGhlIE1lc3NhZ2VzIHRhYicsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0 VGltZW91dCgKKyAgICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg ZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0b3J5KQorICAgICAgICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSwgJ1NvbWUgcGxhaW4gdGV4dCBlcnJv cicpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAw KTsKKyAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBlbmFibGUg dGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91 dCgKKyAgICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0 KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpCisgICAgICAgICAgICAgICAgICAg ICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9u ZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgIH0pOworCisgICAg ICAgICAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgY2FuY2VsIGJ1dHRvbicsIChkb25lKSA9 PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAgICgpID0+ IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbmNlbEJ1dHRvblNweSkKKyAgICAgICAg ICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2Rpc2FibGVkJywgdHJ1ZSk7Cisg ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICBpdCgnc2hvdWxkIGxvZ2luIGlzIG5vdCBk aXNwbGF5ZWQnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAg ICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdCh1c2VyTWFu YWdlbWVudE1vY2sucGdhX2xvZ2luKS5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZl QmVlbkNhbGxlZCgpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg ICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAg ICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4gaXMgcmVxdWlyZWQnLCAoKSA9PiB7CisgICAgICAg ICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgICAgIHVzZXJNYW5hZ2VtZW50 TW9jay5pc19wZ2FfbG9naW5fcmVxdWlyZWQuYW5kLnJldHVyblZhbHVlKHRydWUpOworICAgICAg ICAgICAgICAgIHJlc3BvbnNlID0geworICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c6IGVycm9y TWVzc2FnZVRleHQsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBuZXR3b3Jr TW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVyeV90b29sL3BvbGwvMTIzJykucmVwbHkoNDAxLCBy ZXNwb25zZSk7CisKKyAgICAgICAgICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOworICAgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgICBpdCgnc2hvdWxkIGhpZGUgdGhlIGxvYWRpbmcg aWNvbicsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAg ICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1v Y2sudHJpZ2dlcikKKyAgICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgo J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CisgICAgICAgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgICBpdCgnc2hvdWxkIHJlc2V0IGxhc3QgcXVlcnkgaW5mb3JtYXRpb24n LCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAg ICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnJl c2V0UXVlcnlIaXN0b3J5T2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVu Q2FsbGVkV2l0aChzcWxFZGl0b3JNb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor ICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICAgIGl0KCdzaG91bGQgbm90IGhpZ2hsaWdodCB0aGUgZXJyb3IgaW4gdGhlIFNRTCBwYW5lbCcs IChkb25lKSA9PiB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAg ICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suX2hp Z2hsaWdodF9lcnJvcikubm90CisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxs ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgbm90IGFk ZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWInLCAoZG9u ZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAo KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnVwZGF0ZV9t c2dfaGlzdG9yeSkubm90CisgICAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQo KTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgfSwgMCk7 CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGl0KCdzaG91bGQgZW5hYmxlIHRo ZSB0b29sIGJ1dHRvbnMnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo CisgICAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChz cWxFZGl0b3JNb2NrLmRpc2FibGVfdG9vbF9idXR0b25zKQorICAgICAgICAgICAgICAgICAgICAg IC50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUo KTsKKyAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICB9KTsKKworICAgICAg ICAgICAgICBpdCgnc2hvdWxkIGRpc2FibGUgdGhlIGNhbmNlbCBidXR0b24nLCAoZG9uZSkgPT4g eworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAoKSA9PiB7 CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdChjYW5jZWxCdXR0b25TcHkpCisgICAgICAgICAg ICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcsIHRydWUpOworICAg ICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAg ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBsb2dpbiBpcyBkaXNwbGF5 ZWQnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAg ICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdCh1c2VyTWFuYWdlbWVu dE1vY2sucGdhX2xvZ2luKQorICAgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVk KCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIH0sIDAp OworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgZGVzY3JpYmUoJ3doZW4gY2Fubm90IHJlYWNoIHRoZSBQeXRob24gU2VydmVyJywg KCkgPT4geworICAgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICAgIHJl c3BvbnNlID0ge3JlYWR5U3RhdGU6IDB9OworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vbkdl dCgnL3NxbGVkaXRvci9xdWVyeV90b29sL3BvbGwvMTIzJykucmVwbHkoNDAxLCByZXNwb25zZSk7 CisKKyAgICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKKyAgICAgICAgICAgIH0pOwor CisgICAgICAgICAgICBpdCgnc2hvdWxkIGhpZGUgdGhlIGxvYWRpbmcgaWNvbicsIChkb25lKSA9 PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgKCkgPT4gewor ICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudHJpZ2dlcikKKyAgICAgICAg ICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2Fk aW5nLWljb246aGlkZScpOworICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg ICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgcmVz ZXQgbGFzdCBxdWVyeSBpbmZvcm1hdGlvbicsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIHNl dFRpbWVvdXQoCisgICAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgZXhw ZWN0KHNxbEVkaXRvck1vY2sucmVzZXRRdWVyeUhpc3RvcnlPYmplY3QpCisgICAgICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JNb2NrKTsKKyAgICAgICAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOwor CisgICAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBT UUwgcGFuZWwnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAg ICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2Nr Ll9oaWdobGlnaHRfZXJyb3IpLm5vdAorICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNh bGxlZCgpOworICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0sIDAp OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgYWRkIG5ldyBlbnRy eSB0byBoaXN0b3J5IGFuZCB1cGRhdGUgdGhlIE1lc3NhZ2VzIHRhYicsIChkb25lKSA9PiB7Cisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgKCkgPT4geworICAgICAg ICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0b3J5KQorICAg ICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UsICdOb3QgY29ubmVj dGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVl biBjbG9zZWQuJyk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAg fSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCBlbmFibGUg dGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo CisgICAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVk aXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpCisgICAgICAgICAgICAgICAgICAgIC50b0hh dmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3No b3VsZCBkaXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAg ICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAg ICBleHBlY3QoY2FuY2VsQnV0dG9uU3B5KQorICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVl bkNhbGxlZFdpdGgoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7 CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg aXQoJ3Nob3VsZCBsb2dpbiBpcyBub3QgZGlzcGxheWVkJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAg ICAgICBleHBlY3QodXNlck1hbmFnZW1lbnRNb2NrLnBnYV9sb2dpbikubm90CisgICAgICAgICAg ICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7 CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsK KyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gU1FM RWRpdG9yIGlzIE5PVCB0aGUgcXVlcnkgdG9vbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICBzcWxFZGl0b3JNb2NrLmlzX3F1ZXJ5X3Rvb2wgPSBmYWxzZTsKKyAg ICAgIH0pOworCisgICAgICBkZXNjcmliZSgnd2hlbiBzZXJ2ZXIgYW5zd2VyIHdpdGggc3VjY2Vz cycsICgpID0+IHsKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4gcXVlcnkgd2FzIHN1Y2Nlc3NmdWwn LCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICByZXNw b25zZSA9IHsKKyAgICAgICAgICAgICAgZGF0YToge3N0YXR1czogJ1N1Y2Nlc3MnfSwKKyAgICAg ICAgICAgIH07CisgICAgICAgICAgICBuZXR3b3JrTW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVy eV90b29sL3BvbGwvMTIzJykucmVwbHkoMjAwLCByZXNwb25zZSk7CisKKyAgICAgICAgICAgIGV4 ZWN1dGVRdWVyeS5wb2xsKCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxk IHVwZGF0ZSB0aGUgbG9hZGluZyBpY29uIG1lc3NhZ2UnLCAoZG9uZSkgPT4geworICAgICAgICAg ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2Nr LnRyaWdnZXIpCisgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAg ICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywKKyAg ICAgICAgICAgICAgICAgICdMb2FkaW5nIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVyIGFu ZCByZW5kZXJpbmcuLi4nCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hv dWxkIHJlbmRlciB0aGUgcmVzdWx0cycsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suY2FsbF9yZW5k ZXJfYWZ0ZXJfcG9sbCkKKyAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoe3N0 YXR1czogJ1N1Y2Nlc3MnfSk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0s IDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnd2hl biBxdWVyeSBpcyBzdGlsbCBydW5uaW5nJywgKCkgPT4geworICAgICAgICAgIGNvbnRleHQoJ3do ZW4gbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZCcsICgpID0+IHsKKyAgICAg ICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgICByZXNwb25zZSA9IHsKKyAg ICAgICAgICAgICAgICBkYXRhOiB7c3RhdHVzOiAnQnVzeSd9LAorICAgICAgICAgICAgICB9Owor CisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wv cG9sbC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgZXhlY3V0ZVF1 ZXJ5LnBvbGwoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxkIHNl dCB0aGUgZmxhZyB0byBpbmZvcm0gU1FMRWRpdG9yIGEgcXVlcnkgaXMgcnVubmluZycsIChkb25l KSA9PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLnNldElzUXVlcnlSdW5uaW5nKQorICAgICAgICAgICAgICAg ICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQo J3Nob3VsZCBkb2VzIG5vdCB1cGRhdGUgaGlzdG9yeScsIChkb25lKSA9PiB7CisgICAgICAgICAg ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JN b2NrLnVwZGF0ZV9tc2dfaGlzdG9yeSkubm90CisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVl bkNhbGxlZCgpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7 CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCByZWN1cnNpdmVseSBj YWxsIHBvbGxpbmcnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXhlY3V0ZVF1ZXJ5LmRlbGF5ZWRQb2xsKQorICAg ICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7 CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgcmV0 dXJuZWQnLCAoKSA9PiB7CisgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg ICAgICAgcmVzcG9uc2UgPSB7CisgICAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAg ICAgICAgc3RhdHVzOiAnQnVzeScsCisgICAgICAgICAgICAgICAgICByZXN1bHQ6ICdTb21lIGlt cG9ydGFudCByZXN1bHQnLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH07CisK KyAgICAgICAgICAgICAgbmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9w b2xsLzEyMycpLnJlcGx5KDIwMCwgcmVzcG9uc2UpOworICAgICAgICAgICAgICBleGVjdXRlUXVl cnkucG9sbCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgc2V0 IHRoZSBmbGFnIHRvIGluZm9ybSBTUUxFZGl0b3IgYSBxdWVyeSBpcyBydW5uaW5nJywgKGRvbmUp ID0+IHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAg ZXhwZWN0KHNxbEVkaXRvck1vY2suc2V0SXNRdWVyeVJ1bm5pbmcpCisgICAgICAgICAgICAgICAg ICAudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOwor ICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgn c2hvdWxkIHVwZGF0ZSBoaXN0b3J5IG1lc3NhZ2UnLCAoZG9uZSkgPT4geworICAgICAgICAgICAg ICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9j ay51cGRhdGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxl ZFdpdGgoJ0J1c3knLCAnU29tZSBpbXBvcnRhbnQgcmVzdWx0JywgZmFsc2UpOworICAgICAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKwor ICAgICAgICAgICAgaXQoJ3Nob3VsZCByZWN1cnNpdmVseSBjYWxsIHBvbGxpbmcnLCAoZG9uZSkg PT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBl eHBlY3QoZXhlY3V0ZVF1ZXJ5LmRlbGF5ZWRQb2xsKQorICAgICAgICAgICAgICAgICAgLnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0s IDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg ICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBhcHBsaWNhdGlvbiBsb3N0IGNvbm5lY3Rpb24gd2l0aCB0 aGUgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgICAgICByZXNwb25zZSA9IHsKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAg ICAgIHN0YXR1czogJ05vdENvbm5lY3RlZCcsCisgICAgICAgICAgICAgICAgcmVzdWx0OiAnU29t ZSBpbnRlcmVzdGluZyByZXN1bHQnLAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfTsK KyAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9s bC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKKworICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5 LnBvbGwoKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgaGlkZSB0aGUg bG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g eworICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOmhpZGUnKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7Cisg ICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGFkZCBuZXcgZW50cnkgdG8gaGlz dG9yeSBhbmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWIgYW5kIGNsZWFyIHRoZSByZXN1bHQgZ3Jp ZCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0b3J5KQorICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgIGZhbHNlLAor ICAgICAgICAgICAgICAgICAgJ1NvbWUgaW50ZXJlc3RpbmcgcmVzdWx0JywKKyAgICAgICAgICAg ICAgICAgIHRydWUKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQg Tk9UIGVuYWJsZSB0aGUgdG9vbCBidXR0b25zJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNl dFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykubm90CisgICAgICAgICAgICAgICAg ICAudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg ICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIE5PVCBk aXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRp bWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoY2Fu Y2VsQnV0dG9uU3B5KS5ub3QKKyAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4gcXVlcnkgd2FzIGNh bmNlbGxlZCcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg ICAgIHJlc3BvbnNlID0geworICAgICAgICAgICAgICBkYXRhOiB7c3RhdHVzOiAnQ2FuY2VsJ30s CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0 b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDIwMCwgcmVzcG9uc2UpOworCisgICAgICAg ICAgICBleGVjdXRlUXVlcnkucG9sbCgpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQo J3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGljb24nLCAoZG9uZSkgPT4geworICAgICAgICAgICAg c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRy aWdnZXIpCisgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNx bGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAgICAgICAgICBkb25lKCk7CisgICAg ICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgYWRk IG5ldyBlbnRyeSB0byBoaXN0b3J5LCBhZGQgY2FuY2VsbGF0aW9uIG1lc3NhZ2UgdG8gTWVzc2Fn ZXMgdGFiIGFuZCBjbGVhciB0aGUgcmVzdWx0IGdyaWQnLCAoZG9uZSkgPT4geworICAgICAgICAg ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2Nr LnVwZGF0ZV9tc2dfaGlzdG9yeSkKKyAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICdFeGVjdXRp b24gQ2FuY2VsbGVkIScsCisgICAgICAgICAgICAgICAgICB0cnVlCisgICAgICAgICAgICAgICAg KTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg fSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCd3aGVuIGFuIGVy cm9yIG9jY3VyJywgKCkgPT4geworICAgICAgICBsZXQgZXJyb3JNZXNzYWdlSnNvbiA9IHsKKyAg ICAgICAgICBlcnJvcm1zZzogJ1NvbWUgZXJyb3IgaW4gSlNPTicsCisgICAgICAgIH07CisgICAg ICAgIGxldCBlcnJvck1lc3NhZ2VUZXh0ID0gJ1NvbWUgcGxhaW4gdGV4dCBlcnJvcic7CisgICAg ICAgIGxldCByZXNwb25zZTsKKworICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgY29ubmVjdGlv biB0byB0aGUgc2VydmVyIHdhcyBsb3N0JywgKCkgPT4geworICAgICAgICAgIGRlc2NyaWJlKCd3 aGVuIEpTT04gcmVzcG9uc2UgaXMgYXZhaWxhYmxlJywgKCkgPT4geworICAgICAgICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3BvbnNlID0ge3Jlc3BvbnNlSlNPTjog ZXJyb3JNZXNzYWdlSnNvbn07CisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3Fs ZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSg0MDEsIHJlc3BvbnNlKTsKKworICAg ICAgICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAg ICAgICAgIGl0KCdzaG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAg ICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAg ICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAg ICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNv bjpoaWRlJyk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCByZXNldCBsYXN0 IHF1ZXJ5IGluZm9ybWF0aW9uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgc2V0VGltZW91 dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICBleHBlY3Qoc3Fs RWRpdG9yTW9jay5yZXNldFF1ZXJ5SGlzdG9yeU9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAg LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNxbEVkaXRvck1vY2spOworICAgICAgICAgICAgICAgICAg ZG9uZSgpOworICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAg ICAgICAgIGl0KCdzaG91bGQgaGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0aGUgU1FMIHBhbmVsJywg KGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAo KSA9PiB7CisgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5faGlnaGxpZ2h0 X2Vycm9yKQorICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1NvbWUg ZXJyb3IgaW4gSlNPTicpOworICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg ICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdzaG91bGQgYWRk IG5ldyBlbnRyeSB0byBoaXN0b3J5IGFuZCB1cGRhdGUgdGhlIE1lc3NhZ2VzIHRhYicsIChkb25l KSA9PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgKCkgPT4g eworICAgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0 b3J5KQorICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UsICdT b21lIGVycm9yIGluIEpTT04nKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg ICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxk IGVuYWJsZSB0aGUgdG9vbCBidXR0b25zJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgc2V0 VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykubm90CisgICAgICAgICAgICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQo J3Nob3VsZCBkaXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAg ICAgICBleHBlY3QoY2FuY2VsQnV0dG9uU3B5KS5ub3QKKyAgICAgICAgICAgICAgICAgICAgLnRv SGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg ICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICAgIGRl c2NyaWJlKCd3aGVuIG5vIEpTT04gcmVzcG9uc2UgaXMgYXZhaWxhYmxlJywgKCkgPT4geworICAg ICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3BvbnNlID0ge2Vy cm9ybXNnOiBlcnJvck1lc3NhZ2VUZXh0fTsKKyAgICAgICAgICAgICAgbmV0d29ya01vY2sub25H ZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDQwMSwgcmVzcG9uc2Up OworCisgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7CisgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgaXQoJ3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGljb24nLCAoZG9uZSkg PT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgpID0+IHsK KyAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRyaWdnZXIpCisgICAgICAg ICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9h ZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg ICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxkIHJl c2V0IGxhc3QgcXVlcnkgaW5mb3JtYXRpb24nLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBz ZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIGV4 cGVjdChzcWxFZGl0b3JNb2NrLnJlc2V0UXVlcnlIaXN0b3J5T2JqZWN0KQorICAgICAgICAgICAg ICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yTW9jayk7CisgICAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgaXQoJ3Nob3VsZCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBTUUwg cGFuZWwnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAg ICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9o aWdobGlnaHRfZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0 aCgnU29tZSBwbGFpbiB0ZXh0IGVycm9yJyk7CisgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQo J3Nob3VsZCBhZGQgbmV3IGVudHJ5IHRvIGhpc3RvcnkgYW5kIHVwZGF0ZSB0aGUgTWVzc2FnZXMg dGFiJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAg ICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay51cGRh dGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0 aChmYWxzZSwgJ1NvbWUgcGxhaW4gdGV4dCBlcnJvcicpOworICAgICAgICAgICAgICAgICAgZG9u ZSgpOworICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg ICAgIGl0KCdzaG91bGQgbm90IGVuYWJsZSB0aGUgdG9vbCBidXR0b25zJywgKGRvbmUpID0+IHsK KyAgICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAg ICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucyku bm90CisgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgaXQoJ3Nob3VsZCBub3QgZGlzYWJsZSB0aGUgY2FuY2VsIGJ1dHRvbics IChkb25lKSA9PiB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAg KCkgPT4geworICAgICAgICAgICAgICAgICAgZXhwZWN0KGNhbmNlbEJ1dHRvblNweSkubm90Cisg ICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAg ICAgICB9KTsKKworICAgICAgICAgIGRlc2NyaWJlKCd3aGVuIGNhbm5vdCByZWFjaCB0aGUgUHl0 aG9uIFNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICAgICAgICByZXNwb25zZSA9IHtyZWFkeVN0YXRlOiAwfTsKKyAgICAgICAgICAgICAgbmV0 d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDQw MSwgcmVzcG9uc2UpOworCisgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7CisgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGlj b24nLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAg ICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRyaWdn ZXIpCisgICAgICAgICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1z cWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBp dCgnc2hvdWxkIHJlc2V0IGxhc3QgcXVlcnkgaW5mb3JtYXRpb24nLCAoZG9uZSkgPT4geworICAg ICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAg ICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnJlc2V0UXVlcnlIaXN0b3J5T2JqZWN0KQor ICAgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yTW9jayk7 CisgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3Nob3VsZCBub3QgaGlnaGxpZ2h0IHRoZSBl cnJvciBpbiB0aGUgU1FMIHBhbmVsJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgc2V0VGlt ZW91dCgKKyAgICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yTW9jay5faGlnaGxpZ2h0X2Vycm9yKS5ub3QKKyAgICAgICAgICAgICAgICAgICAg LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg ICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2hvdWxk IGFkZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWInLCAo ZG9uZSkgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgp ID0+IHsKKyAgICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnVwZGF0ZV9tc2df aGlzdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNl LCAnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBz ZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpOworICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAg ICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCdz aG91bGQgZW5hYmxlIHRoZSB0b29sIGJ1dHRvbnMnLCAoZG9uZSkgPT4geworICAgICAgICAgICAg ICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLmRpc2FibGVfdG9vbF9idXR0b25zKS5ub3QKKyAgICAgICAg ICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgIGRvbmUo KTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICBpdCgnc2hvdWxkIGRpc2FibGUgdGhlIGNhbmNlbCBidXR0b24nLCAoZG9uZSkgPT4geworICAg ICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAg ICAgICAgICAgIGV4cGVjdChjYW5jZWxCdXR0b25TcHkpLm5vdAorICAgICAgICAgICAgICAgICAg ICAudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg ICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAg IH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcjZXhlY3V0ZScs ICgpID0+IHsKKyAgICBsZXQgcmVzcG9uc2U7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgIHJlc3BvbnNlID0geworICAgICAgICAnaW5mbyc6ICcnLAorICAgICAgICAnZXJyb3Jtc2cn OiAnJywKKyAgICAgICAgJ2RhdGEnOiB7CisgICAgICAgICAgJ3N0YXR1cyc6IHRydWUsCisgICAg ICAgICAgJ2Nhbl9lZGl0JzogZmFsc2UsCisgICAgICAgICAgJ2luZm9fbm90aWZpZXJfdGltZW91 dCc6IDUsCisgICAgICAgICAgJ3Jlc3VsdCc6ICcyJywKKyAgICAgICAgICAnY2FuX2ZpbHRlcic6 IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICAncmVzdWx0JzogbnVsbCwKKyAgICAgICAgJ3N1 Y2Nlc3MnOiAxLAorICAgICAgfTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gdGhlIFNR TCBzdGF0ZW1lbnQgaXMgZW1wdHknLCAoKSA9PiB7CisgICAgICBpdCgnc2hvdWxkIHJldHVybiB3 aXRob3V0IGV4ZWN1dGluZycsIChkb25lKSA9PiB7CisgICAgICAgIGxldCB3YXNOZXR3b3JrQ2Fs bGVkID0gZmFsc2U7CisgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1ZXJ5 X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoKCkgPT4geworICAgICAgICAgIHdhc05ldHdvcmtDYWxs ZWQgPSB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBleGVjdXRlUXVlcnkuZXhlY3V0ZSgn Jywge30pOworCisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGV4cGVjdCh3 YXNOZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAgICAgICAgICBkb25lKCk7CisgICAgICAg IH0sIDApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIHRoZSBTUUwg c3RhdGVtZW50IGlzIG5vdCBlbXB0eScsICgpID0+IHsKKyAgICAgIGxldCBwb2xsU3B5OworICAg ICAgbGV0IGpxdWVyeVByb3BTcHk7CisKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICBqcXVlcnlQcm9wU3B5ID0gc3B5T24oJC5mbiwgJ3Byb3AnKTsKKyAgICAgICAgc3FsRWRpdG9y TW9jay5ncmlkVmlldyA9IHt9OworICAgICAgICBzcWxFZGl0b3JNb2NrLmdyaWRWaWV3LnF1ZXJ5 X3Rvb2xfb2JqID0gamFzbWluZS5jcmVhdGVTcHlPYmooCisgICAgICAgICAgJ1F1ZXJ5VG9vbE9i amVjdCcsCisgICAgICAgICAgWydyZW1vdmVMaW5lQ2xhc3MnXQorICAgICAgICApOworICAgICAg fSk7CisKKyAgICAgIGRlc2NyaWJlKCdiZWZvcmUgdGhlIGJhY2tlbmQgcmVxdWVzdCcsICgpID0+ IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgamFzbWluZS5jbG9jaygp Lmluc3RhbGwoKTsKKyAgICAgICAgICBqYXNtaW5lLmNsb2NrKCkubW9ja0RhdGUoc3RhcnRUaW1l KTsKKyAgICAgICAgICBqYXNtaW5lLmNsb2NrKCkudGljayg1MCk7CisgICAgICAgICAgbmV0d29y a01vY2sub25BbnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC8xMjMnKS5yZXBseSgyMDAs IHJlc3BvbnNlKTsKKyAgICAgICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5LCAncG9s bCcpOworICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsICcn KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICBqYXNtaW5lLmNsb2NrKCkudW5pbnN0YWxsKCk7CisgICAgICAgIH0pOworCisgICAgICAg IGl0KCdzaG91bGQgdXBkYXRlIGxvYWRpbmcgdGV4dCB0byAiSW5pdGlhbGl6aW5nIHF1ZXJ5IGV4 ZWN1dGlvbiInLCAoKSA9PiB7CisgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudHJpZ2dl cikKKyAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKKyAgICAgICAgICAgICAgJ0luaXRp YWxpemluZyBxdWVyeSBleGVjdXRpb24uLi4nCisgICAgICAgICAgICApOworICAgICAgICB9KTsK KworICAgICAgICBpdCgnZGlzYWJsZXMgdGhlIHJ1biBxdWVyeSBidXR0b24nLCAoKSA9PiB7Cisg ICAgICAgICAgY29uc3QgY2FsbFRvUHJvcCA9IGZpbmRKUXVlcnlDYWxsV2l0aFNlbGVjdG9yKGpx dWVyeVByb3BTcHksICcjYnRuLWZsYXNoJyk7CisKKyAgICAgICAgICBleHBlY3QoY2FsbFRvUHJv cCkualF1ZXJ5dG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAg IH0pOworCisgICAgICAgIGl0KCdlbmFibGUgdGhlIGNhbmNlbCBxdWVyeSBidXR0b24nLCAoKSA9 PiB7CisgICAgICAgICAgY29uc3QgY2FsbFRvUHJvcCA9IGZpbmRKUXVlcnlDYWxsV2l0aFNlbGVj dG9yKGpxdWVyeVByb3BTcHksICcjYnRuLWNhbmNlbC1xdWVyeScpOworCisgICAgICAgICAgZXhw ZWN0KGNhbGxUb1Byb3ApLmpRdWVyeXRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcsIGZh bHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc2FibGUgdGhlIHF1ZXJ5IHRvb2wg YnV0dG9ucycsICgpID0+IHsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxl X3Rvb2xfYnV0dG9ucykudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAgIH0pOwor CisgICAgICAgIGl0KCdpbml0aWFsaXplcyB0aGUgcG9sbGluZyBmbGFncycsICgpID0+IHsKKyAg ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5faW5pdF9wb2xsaW5nX2ZsYWdzKS50b0hhdmVC ZWVuQ2FsbGVkKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzYXZlIHRoZSBxdWVyeScs ICgpID0+IHsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5xdWVyeSkudG9FcXVhbCgn c29tZSBzcWwgcXVlcnknKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Jlc2V0IHRoZSBu dW1iZXIgb2Ygcm93cyB0aGF0IHdlcmUgYWZmZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgICAgZXhw ZWN0KHNxbEVkaXRvck1vY2sucm93c19hZmZlY3RlZCkudG9CZSgwKTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgaXQoJ3Jlc2V0IHF1ZXJ5IHN0YXJ0IHRpbWUnLCAoKSA9PiB7CisgICAgICAgICAg ZXhwZWN0KHNxbEVkaXRvck1vY2sucXVlcnlfc3RhcnRfdGltZS5nZXRUaW1lKCkpLnRvRXF1YWwo c3RhcnRUaW1lLmdldFRpbWUoKSArIDUwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAg ICAgZGVzY3JpYmUoJ3doZW4gSFRUUCByZXR1cm4gMjAwJywgKCkgPT4geworICAgICAgICBkZXNj cmliZSgnd2hlbiBiYWNrZW5kIGluZm9ybXMgdGhhdCBxdWVyeSBzdGFydGVkIHN1Y2Nlc3NmdWxs eScsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIG5l dHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHko MjAwLCByZXNwb25zZSk7CisgICAgICAgICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5 LCAnZGVsYXllZFBvbGwnKTsKKyAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21l IHNxbCBxdWVyeScsICcnKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQg Y2hhbmdlcyB0aGUgbG9hZGluZyBtZXNzYWdlIHRvICJXYWl0aW5nIGZvciB0aGUgcXVlcnkgZXhl Y3V0aW9uIHRvIGNvbXBsZXRlIicsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudHJpZ2dlcikudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxv YWRpbmctaWNvbjptZXNzYWdlJywKKyAgICAgICAgICAgICAgICAnV2FpdGluZyBmb3IgdGhlIHF1 ZXJ5IGV4ZWN1dGlvbiB0byBjb21wbGV0ZS4uLicKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAg ICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgY2FuIGVkaXQgZmxhZycsIChkb25lKSA9PiB7Cisg ICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHNxbEVk aXRvck1vY2suY2FuX2VkaXQpLnRvQmUoZmFsc2UpOworICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQg dXBkYXRlIHRoZSBjYW4gZmlsdGVyIGZsYWcnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0 VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLmNhbl9m aWx0ZXIpLnRvQmUoZmFsc2UpOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9 LCAwKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIGluZm9y bWF0aW9uIG5vdGlmaWVyIHRpbWVvdXQnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGlt ZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLmluZm9fbm90 aWZpZXJfdGltZW91dCkudG9CZSg1KTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg ICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIHN0YXJ0IHBv bGxpbmcnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg ICAgICAgICAgIGV4cGVjdChwb2xsU3B5KS50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICBkZXNjcmliZSgnd2hlbiBleHBsYWluIHBsYW4gaXMgbm90IGVtcHR5Jywg KCkgPT4geworICAgICAgICAgIGl0KCdzaG91bGQgc2VuZCB0aGUgZXhwbGFpbiBwbGFuIGluZm9y bWF0aW9vbiB0aHJvdWdoIHRoZSB3aXJlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIG5ldHdv cmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoKGNv bmZpZykgPT4geworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgICBleHBlY3QoY29uZmlnLmRhdGEpLnRvRXF1YWwoSlNPTi5zdHJpbmdpZnkoeworICAgICAg ICAgICAgICAgICAgc3FsOiAnc29tZSBzcWwgcXVlcnknLAorICAgICAgICAgICAgICAgICAgZXhw bGFpbl9wbGFuOiB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnM6IHRydWUsCisgICAgICAg ICAgICAgICAgICAgIGFuYWx5emU6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICB0aW1pbmc6 IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IGZhbHNlLAorICAgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgICAgICAgICBkb25lKCk7 CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICByZXR1cm4gWzIwMCwgJyddOwor ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5 LCAnZGVsYXllZFBvbGwnKTsKKyAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21l IHNxbCBxdWVyeScsIHsKKyAgICAgICAgICAgICAgYnVmZmVyczogdHJ1ZSwKKyAgICAgICAgICAg ICAgYW5hbHl6ZTogZmFsc2UsCisgICAgICAgICAgICAgIHRpbWluZzogdHJ1ZSwKKyAgICAgICAg ICAgICAgc3VtbWFyeTogZmFsc2UsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKwor CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCd3aGVuIGJhY2tlbmQgaW5mb3JtcyB0 aGF0IHRoZXJlIHdhcyBhIHByb2JsZW0gd2l0aCB0aGUgcXVlcnknLCAoKSA9PiB7CisgICAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICByZXNwb25zZS5kYXRhLnN0YXR1cyA9 IGZhbHNlOworICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5yZXN1bHQgPSAnc29tZXRoaW5nIHdl bnQgd3JvbmcnOworICAgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoJy9zcWxlZGl0b3IvcXVl cnlfdG9vbC9zdGFydC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgIHBv bGxTcHkgPSBzcHlPbihleGVjdXRlUXVlcnksICdwb2xsJyk7CisgICAgICAgICAgICBleGVjdXRl UXVlcnkuZXhlY3V0ZSgnc29tZSBzcWwgcXVlcnknLCAnJyk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBpdCgnaGlkZSB0aGUgbG9hZGluZyBzY3JlZW4nLCAoZG9uZSkgPT4geworICAgICAg ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JN b2NrLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2Fk aW5nLWljb246aGlkZScpOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAw KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdkaXNhYmxlIHRoZSBjYW5jZWwgcXVl cnkgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewor ICAgICAgICAgICAgICBjb25zdCBjYWxsVG9Qcm9wID0gZmluZEpRdWVyeUNhbGxXaXRoU2VsZWN0 b3IoanF1ZXJ5UHJvcFNweSwgJyNidG4tY2FuY2VsLXF1ZXJ5Jyk7CisKKyAgICAgICAgICAgICAg ZXhwZWN0KGNhbGxUb1Byb3ApLmpRdWVyeXRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcs IHRydWUpOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAg ICAgICB9KTsKKworICAgICAgICAgIGl0KCdlbmFibGUgdGhlIHF1ZXJ5IHRvb2wgYnV0dG9ucycs IChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKGZhbHNlKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgndXBkYXRlIHRoZSBoaXN0b3J5IHRh YiB3aXRoIHRoZSByZXN1bHQgbWVzc2FnZScsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRU aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRl X21zZ19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSwgJ3NvbWV0aGluZyB3ZW50 IHdyb25nJyk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ2hpZ2hsaWdodCB0aGUgZXJyb3IgaW4gdGhlIGVk aXRvcicsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg ICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suX2hpZ2hsaWdodF9lcnJvcikudG9IYXZlQmVl bkNhbGxlZFdpdGgoJ3NvbWV0aGluZyB3ZW50IHdyb25nJyk7CisgICAgICAgICAgICAgIGRvbmUo KTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3No b3VsZCBub3Qgc3RhcnQgcG9sbGluZycsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHBvbGxTcHkpLm5vdC50b0hhdmVCZWVu Q2FsbGVkKCk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBp cyBhIG1hcmtlciBzZXQgaW4gdGhlIGdyaWQnLCAoKSA9PiB7CisgICAgICAgICAgbGV0IG1hcmtl ckNsZWFyU3B5OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgc3Fs RWRpdG9yTW9jay5ncmlkVmlldy5tYXJrZXIgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigKKyAgICAg ICAgICAgICAgJ0dyaWRWaWV3TWFya2VyJywKKyAgICAgICAgICAgICAgWydjbGVhciddCisgICAg ICAgICAgICApOworICAgICAgICAgICAgbWFya2VyQ2xlYXJTcHkgPSBzcWxFZGl0b3JNb2NrLmdy aWRWaWV3Lm1hcmtlci5jbGVhcjsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3Fs ZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoMjAwLCByZXNwb25zZSk7CisgICAg ICAgICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5LCAncG9sbCcpOworICAgICAgICAg ICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycpOworICAgICAgICAg IH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBjYWxsIGNsZWFyIGZ1bmN0aW9uIG9uIG1hcmtl cicsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ICAgICAgZXhwZWN0KG1hcmtlckNsZWFyU3B5KS50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAg ICAgICAgaXQoJ3Nob3VsZCByZW1vdmVzIHRoZSBtYXJrZXInLCAoZG9uZSkgPT4geworICAgICAg ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JN b2NrLmdyaWRWaWV3Lm1hcmtlcikudG9FcXVhbChudWxsKTsKKyAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hv dWxkIHJlbW92ZSBDU1MgY2xhc3NlcyBmcm9tIHRoZSBlZGl0b3InLCAoZG9uZSkgPT4geworICAg ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0 b3JNb2NrLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLnJlbW92ZUxpbmVDbGFzcykKKyAgICAgICAg ICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yTW9jay5tYXJrZWRfbGluZV9u bywgJ3dyYXAnLCAnQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQnKTsKKyAgICAgICAg ICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisgICAgICAg IH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCd3aGVuIGNhbm5vdCByZWFjaCB0aGUg UHl0aG9uIFNlcnZlcicsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgICAgcmVzcG9uc2UgPSB7CisgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAorICAgICAgICAg IH07CisgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9z dGFydC8xMjMnKS5yZXBseSg1MDAsIHJlc3BvbnNlKTsKKworCisgICAgICAgICAgZXhlY3V0ZVF1 ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycpOworICAgICAgICB9KTsKKworICAgICAg ICBpdCgnc2hvdWxkIGhpZGUgdGhlIGxvYWRpbmcgaWNvbicsIChkb25lKSA9PiB7CisgICAgICAg ICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0 KHNxbEVkaXRvck1vY2sudHJpZ2dlcikKKyAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxl ZFdpdGgoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CisgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBp dCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBTUUwgcGFuZWwnLCAoZG9u ZSkgPT4geworICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAoKSA9PiB7CisgICAg ICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9oaWdobGlnaHRfZXJyb3IpLm5vdAorICAg ICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGFk ZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWInLCAoZG9u ZSkgPT4geworICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAoKSA9PiB7CisgICAg ICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnVwZGF0ZV9tc2dfaGlzdG9yeSkKKyAgICAg ICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UsICdOb3QgY29ubmVjdGVkIHRv IHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9z ZWQuJyk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAg ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUgdG9vbCBidXR0b25zJywgKGRv bmUpID0+IHsKKyAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgKCkgPT4geworICAg ICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykKKyAg ICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOworICAgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo J3Nob3VsZCBkaXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICBjb25zdCBj YWxsVG9Qcm9wID0gZmluZEpRdWVyeUNhbGxXaXRoU2VsZWN0b3IoanF1ZXJ5UHJvcFNweSwgJyNi dG4tY2FuY2VsLXF1ZXJ5Jyk7CisKKyAgICAgICAgICAgICAgZXhwZWN0KGNhbGxUb1Byb3ApLmpR dWVyeXRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcsIHRydWUpOworICAgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKwor ICAgICAgZGVzY3JpYmUoJ3doZW4gZXJyb3IgaXMgcmV0dXJuZWQgYnkgdGhlIHNlcnZlcicsICgp ID0+IHsKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4gaXMgbm90IHJlcXVpcmVkJywgKCkg PT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgdXNlck1hbmFn ZW1lbnRNb2NrLmlzX3BnYV9sb2dpbl9yZXF1aXJlZC5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwor ICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3Jtc2cgPSAnc29tZSBlcnJvciBtZXNzYWdlJzsKKyAg ICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQv MTIzJykucmVwbHkoNTAwLCByZXNwb25zZSk7CisKKworICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5 LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycpOworICAgICAgICAgIH0pOworCisgICAgICAg ICAgaXQoJ3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGljb24nLCAoZG9uZSkgPT4geworICAgICAg ICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLnRyaWdnZXIpCisgICAgICAgICAgICAgICAgICAudG9IYXZl QmVlbkNhbGxlZFdpdGgoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Cisg ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9 KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgbm90IGhpZ2hsaWdodCB0aGUgZXJyb3IgaW4gdGhl IFNRTCBwYW5lbCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAg ICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suX2hp Z2hsaWdodF9lcnJvcikubm90CisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZCgp OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIGFkZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBh bmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWInLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0 VGltZW91dCgKKyAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChz cWxFZGl0b3JNb2NrLnVwZGF0ZV9tc2dfaGlzdG9yeSkKKyAgICAgICAgICAgICAgICAgIC50b0hh dmVCZWVuQ2FsbGVkV2l0aChmYWxzZSwgJ3NvbWUgZXJyb3IgbWVzc2FnZScpOworICAgICAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUgdG9vbCBidXR0b25zJywgKGRvbmUpID0+IHsK KyAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAg ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykKKyAgICAg ICAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7CisgICAgICAgICAgICAg ICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKworICAgICAg ICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgY2FuY2VsIGJ1dHRvbicsIChkb25lKSA9PiB7Cisg ICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAg ICAgICAgY29uc3QgY2FsbFRvUHJvcCA9IGZpbmRKUXVlcnlDYWxsV2l0aFNlbGVjdG9yKGpxdWVy eVByb3BTcHksICcjYnRuLWNhbmNlbC1xdWVyeScpOworCisgICAgICAgICAgICAgICAgZXhwZWN0 KGNhbGxUb1Byb3ApLmpRdWVyeXRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdkaXNhYmxlZCcsIHRydWUp OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBzYXZlIHRoZSBzdGF0ZScsICgpID0+ IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yTW9jay5zYXZlX3N0YXRlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAg ICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBk aXNwbGF5IHBnYSBsb2dpbicsICgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g eworICAgICAgICAgICAgICBleHBlY3QodXNlck1hbmFnZW1lbnRNb2NrLnBnYV9sb2dpbikubm90 LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOwor ICAgICAgICB9KTsKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4gaXMgcmVxdWlyZWQnLCAo KSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICB1c2VyTWFu YWdlbWVudE1vY2suaXNfcGdhX2xvZ2luX3JlcXVpcmVkLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsK KyAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ybXNnID0gJ3NvbWUgZXJyb3IgbWVzc2FnZSc7Cisg ICAgICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0 LzEyMycpLnJlcGx5KDUwMCwgcmVzcG9uc2UpOworCisKKyAgICAgICAgICAgIGV4ZWN1dGVRdWVy eS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsICcnKTsKKyAgICAgICAgICB9KTsKKworICAgICAg ICAgIGl0KCdzaG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAgICAg ICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAg ICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAgICAgLnRvSGF2 ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwor ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAg fSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRo ZSBTUUwgcGFuZWwnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAg ICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9o aWdobGlnaHRfZXJyb3IpLm5vdAorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQo KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAg ICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBhZGQgbmV3IGVudHJ5IHRvIGhpc3Rvcnkg YW5kIHVwZGF0ZSB0aGUgTWVzc2FnZXMgdGFiJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNl dFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yTW9jay51cGRhdGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgICAudG9I YXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UsICdzb21lIGVycm9yIG1lc3NhZ2UnKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7 CisgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAg ICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpCisgICAg ICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOworICAgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAg ICAgICBpdCgnc2hvdWxkIGRpc2FibGUgdGhlIGNhbmNlbCBidXR0b24nLCAoZG9uZSkgPT4gewor ICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAg ICAgICAgIGNvbnN0IGNhbGxUb1Byb3AgPSBmaW5kSlF1ZXJ5Q2FsbFdpdGhTZWxlY3RvcihqcXVl cnlQcm9wU3B5LCAnI2J0bi1jYW5jZWwtcXVlcnknKTsKKworICAgICAgICAgICAgICAgIGV4cGVj dChjYWxsVG9Qcm9wKS5qUXVlcnl0b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZGlzYWJsZWQnLCB0cnVl KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAg ICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBzdGF0ZScsICgpID0+IHsK KyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3Qoc3Fs RWRpdG9yTW9jay5zYXZlX3N0YXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAg ICAgICAnZXhlY3V0ZScsCisgICAgICAgICAgICAgICAgWycnXQorICAgICAgICAgICAgICApOwor ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxk IGRpc3BsYXkgcGdhIGxvZ2luJywgKCkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9 PiB7CisgICAgICAgICAgICAgIGV4cGVjdCh1c2VyTWFuYWdlbWVudE1vY2sucGdhX2xvZ2luKS50 b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKyAg ICAgICAgfSk7CisgICAgICAgIGRlc2NyaWJlKCd3aGVuIGEgbmV3IHRyYW5zYWN0aW9uIGlzIG5v dCByZXF1aXJlZCcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAg ICAgICAgIGlzTmV3VHJhbnNhY3Rpb25SZXF1aXJlZE1vY2suYW5kLnJldHVyblZhbHVlKGZhbHNl KTsKKyAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ybXNnID0gJ3NvbWUgZXJyb3IgbWVzc2FnZSc7 CisgICAgICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0 YXJ0LzEyMycpLnJlcGx5KDUwMCwgcmVzcG9uc2UpOworCisKKyAgICAgICAgICAgIGV4ZWN1dGVR dWVyeS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsICcnKTsKKyAgICAgICAgICB9KTsKKworICAg ICAgICAgIGl0KCdzaG91bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAg ICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAg ICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAgICAgLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScp OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGlu IHRoZSBTUUwgcGFuZWwnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgKKyAg ICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2Nr Ll9oaWdobGlnaHRfZXJyb3IpLm5vdAorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxs ZWQoKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBhZGQgbmV3IGVudHJ5IHRvIGhpc3Rv cnkgYW5kIHVwZGF0ZSB0aGUgTWVzc2FnZXMgdGFiJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAg IHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay51cGRhdGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgICAu dG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UsICdzb21lIGVycm9yIG1lc3NhZ2UnKTsKKyAgICAg ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOwor CisgICAgICAgICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9 PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAoKSA9PiB7CisgICAg ICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpCisg ICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOworICAgICAgICAg ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBpdCgnc2hvdWxkIGRpc2FibGUgdGhlIGNhbmNlbCBidXR0b24nLCAoZG9uZSkgPT4g eworICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgKCkgPT4geworICAgICAg ICAgICAgICAgIGNvbnN0IGNhbGxUb1Byb3AgPSBmaW5kSlF1ZXJ5Q2FsbFdpdGhTZWxlY3Rvcihq cXVlcnlQcm9wU3B5LCAnI2J0bi1jYW5jZWwtcXVlcnknKTsKKworICAgICAgICAgICAgICAgIGV4 cGVjdChjYWxsVG9Qcm9wKS5qUXVlcnl0b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZGlzYWJsZWQnLCB0 cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAg ICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2F2ZSB0aGUgc3RhdGUnLCAo KSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhw ZWN0KHNxbEVkaXRvck1vY2suc2F2ZV9zdGF0ZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAg ICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3Nob3VsZCBu b3QgZGlzcGxheSBwZ2EgbG9naW4nLCAoKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHVzZXJNYW5hZ2VtZW50TW9jay5wZ2FfbG9naW4p Lm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9 KTsKKworICAgICAgICAgIGl0KCdzaG91bGQgbm90IGluaXRpYWxpemUgYSBuZXcgdHJhbnNhY3Rp b24nLCAoKSA9PiB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgZXhwZWN0KHNxbEVkaXRvck1vY2suaW5pdF90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KworICAgICAgICBkZXNjcmliZSgnd2hlbiBhIG5ldyB0cmFuc2FjdGlvbiBpcyByZXF1aXJlZCcs ICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGlzTmV3 VHJhbnNhY3Rpb25SZXF1aXJlZE1vY2suYW5kLnJldHVyblZhbHVlKHRydWUpOworICAgICAgICAg ICAgcmVzcG9uc2UuZXJyb3Jtc2cgPSAnc29tZSBlcnJvciBtZXNzYWdlJzsKKyAgICAgICAgICAg IG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVw bHkoNTAwLCByZXNwb25zZSk7CisKKyAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdz b21lIHNxbCBxdWVyeScsICcnKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdzaG91 bGQgaGlkZSB0aGUgbG9hZGluZyBpY29uJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRp bWVvdXQoCisgICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3Fs RWRpdG9yTW9jay50cmlnZ2VyKQorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAgICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAg ICAgICBpdCgnc2hvdWxkIG5vdCBoaWdobGlnaHQgdGhlIGVycm9yIGluIHRoZSBTUUwgcGFuZWwn LCAoZG9uZSkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgKCkg PT4geworICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9oaWdobGlnaHRfZXJy b3IpLm5vdAorICAgICAgICAgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgaXQoJ3Nob3VsZCBhZGQgbmV3IGVudHJ5IHRvIGhpc3RvcnkgYW5kIHVwZGF0ZSB0 aGUgTWVzc2FnZXMgdGFiJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoCisg ICAgICAgICAgICAgICgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9j ay51cGRhdGVfbXNnX2hpc3RvcnkpCisgICAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxl ZFdpdGgoZmFsc2UsICdzb21lIGVycm9yIG1lc3NhZ2UnKTsKKyAgICAgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQo J3Nob3VsZCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7CisgICAgICAgICAg ICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhw ZWN0KHNxbEVkaXRvck1vY2suZGlzYWJsZV90b29sX2J1dHRvbnMpCisgICAgICAgICAgICAgICAg ICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hv dWxkIGRpc2FibGUgdGhlIGNhbmNlbCBidXR0b24nLCAoZG9uZSkgPT4geworICAgICAgICAgICAg c2V0VGltZW91dCgKKyAgICAgICAgICAgICAgKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0 IGNhbGxUb1Byb3AgPSBmaW5kSlF1ZXJ5Q2FsbFdpdGhTZWxlY3RvcihqcXVlcnlQcm9wU3B5LCAn I2J0bi1jYW5jZWwtcXVlcnknKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChjYWxsVG9Qcm9w KS5qUXVlcnl0b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBzdGF0ZScsICgpID0+IHsKKyAgICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5z YXZlX3N0YXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnZXhlY3V0 ZScsCisgICAgICAgICAgICAgICAgWycnXQorICAgICAgICAgICAgICApOworICAgICAgICAgICAg fSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBkaXNwbGF5 IHBnYSBsb2dpbicsICgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAg ICAgICAgICAgICBleHBlY3QodXNlck1hbmFnZW1lbnRNb2NrLnBnYV9sb2dpbikubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAg ICAgICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIGEgbmV3IHRyYW5zYWN0aW9uJywgKCkgPT4gewor ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChzcWxF ZGl0b3JNb2NrLmluaXRfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAg ICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0p OworICB9KTsKKworICBsZXQgZmluZEpRdWVyeUNhbGxXaXRoU2VsZWN0b3IgPSAoanF1ZXJ5U3B5 LCBzZWxlY3RvcikgPT4geworICAgIGxldCByZXN1bHQgPSB1bmRlZmluZWQ7CisKKyAgICBqcXVl cnlTcHkuY2FsbHMuYWxsKCkuZm9yRWFjaCgoY2FsbCkgPT4geworICAgICAgaWYgKGNhbGwub2Jq ZWN0LnNlbGVjdG9yID09PSBzZWxlY3RvcikgeworICAgICAgICByZXN1bHQgPSBjYWxsOworICAg ICAgfQorICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CisgIH07Cit9KTsKKworY29uc3QgalF1 ZXJ5dG9IYXZlQmVlbkNhbGxlZFdpdGggPSBmdW5jdGlvbiAodXRpbCkgeworICByZXR1cm4gewor ICAgIGNvbXBhcmU6IGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgIGxldCByZXN1bHQgPSB7fTsK KyAgICAgIGxldCBleHBlY3RlZEFyZ3MgPSBqYXNtaW5lLnV0aWwuYXJnc1RvQXJyYXkoYXJndW1l bnRzKS5zbGljZSgxKTsKKyAgICAgIGlmIChhY3R1YWwub2JqZWN0ID09PSB1bmRlZmluZWQgfHwg YWN0dWFsLm9iamVjdC5zZWxlY3RvciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHRocm93IG5l dyBFcnJvcignRXhwZWN0ZWQgYSBKUXVlcnkgb2JqZWN0LCBidXQgZ290ICcgKyBqYXNtaW5lLnBw KGFjdHVhbCkgKyAnLicpOworICAgICAgfQorCisgICAgICByZXN1bHQucGFzcyA9IHV0aWwuZXF1 YWxzKGFjdHVhbC5hcmdzLCBleHBlY3RlZEFyZ3MsICcnKTsKKyAgICAgIGlmIChyZXN1bHQucGFz cykgeworICAgICAgICByZXN1bHQubWVzc2FnZSA9ICdsYXJpZm8nOworICAgICAgfSBlbHNlIHsK KyAgICAgICAgcmVzdWx0Lm1lc3NhZ2UgPQorICAgICAgICAgICdFeHBlY3RlZCBqcXVlcnkgd2l0 aCBzZWxlY3RvciAiJyArCisgICAgICAgICAgYWN0dWFsLm9iamVjdC5zZWxlY3RvciArCisgICAg ICAgICAgJyIgdG8gaGF2ZSBiZWVuIGNhbGxlZCB3aXRoICcgKworICAgICAgICAgIGphc21pbmUu cHAoZXhwZWN0ZWRBcmdzKSArCisgICAgICAgICAgJyBidXQgd2FzIGNhbGxlZCB3aXRoICcgKwor ICAgICAgICAgIGphc21pbmUucHAoYWN0dWFsLmFyZ3MpOworICAgICAgfQorCisgICAgICByZXR1 cm4gcmVzdWx0OworICAgIH0sCisgIH07Cit9OworCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWRfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlv bl9yZXF1aXJlZF9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5k MzIzNzAwZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3Fs ZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZF9zcGVjLmpzCkBAIC0wLDAgKzEsNjUg QEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7aXNfbmV3X3RyYW5z YWN0aW9uX3JlcXVpcmVkfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0 b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkJzsKKworZGVzY3JpYmUoJyNpc19uZXdfdHJh bnNhY3Rpb25fcmVxdWlyZWQnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCd3aGVuIHN0YXR1cyBpcyBu b3QgNDA0JywgKCkgPT4geworICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkgPT4gewor ICAgICAgZXhwZWN0KGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh7CisgICAgICAgIHN0YXR1 czogMzAwLAorICAgICAgfSkpLnRvQmUoZmFsc2UpOworICAgIH0pOworICB9KTsKKworICBkZXNj cmliZSgnd2hlbiBzdGF0dXMgaXMgNDA0JywgKCkgPT4geworICAgIGRlc2NyaWJlKCd3aGVuIHJl c3BvbnNlSlNPTiBpcyBub3QgcHJlc2VudCcsICgpID0+IHsKKyAgICAgIGl0KCdzaG91bGQgcmV0 dXJuIGZhbHNlJywgKCkgPT4geworICAgICAgICBleHBlY3QoaXNfbmV3X3RyYW5zYWN0aW9uX3Jl cXVpcmVkKHsKKyAgICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgfSkpLnRvQmVGYWxzeSgp OworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnd2hlbiByZXNwb25zZUpTT04g aXMgcHJlc2VudCcsICgpID0+IHsKKyAgICAgIGRlc2NyaWJlKCd3aGVuIGluZm8gaXMgbm90IHBy ZXNlbnQgaW5zaWRlIHJlc3BvbnNlSlNPTicsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBy ZXR1cm4gZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgZXhwZWN0KGlzX25ld190cmFuc2FjdGlv bl9yZXF1aXJlZCh7CisgICAgICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHJlc3Bv bnNlSlNPTjoge30sCisgICAgICAgICAgfSkpLnRvQmVGYWxzeSgpOworICAgICAgICB9KTsKKyAg ICAgIH0pOworCisgICAgICBkZXNjcmliZSgnd2hlbiBpbmZvIGlzIHByZXNlbnQgaW5zaWRlIHJl c3BvbnNlSlNPTicsICgpID0+IHsKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4gaW5mbyB2YWx1ZSBp cyBub3QgIkRBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEIicsICgpID0+IHsKKyAgICAgICAg ICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChp c19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoeworICAgICAgICAgICAgICBzdGF0dXM6IDQwNCwK KyAgICAgICAgICAgICAgcmVzcG9uc2VKU09OOiB7CisgICAgICAgICAgICAgICAgaW5mbzogJ3Nv bWUgaW5mb3JtYXRpb24nLAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSkpLnRvQmUo ZmFsc2UpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgn d2hlbiBpbmZvIHZhbHVlIGlzICJEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCInLCAoKSA9 PiB7CisgICAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCAoKSA9PiB7CisgICAgICAg ICAgICBleHBlY3QoaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKHsKKyAgICAgICAgICAgICAg c3RhdHVzOiA0MDQsCisgICAgICAgICAgICAgIHJlc3BvbnNlSlNPTjogeworICAgICAgICAgICAg ICAgIGluZm86ICdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCcsCisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICB9KSkudG9CZSh0cnVlKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9uc19zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3Nw ZWMuanMKaW5kZXggYzQ2YjRhMjQuLmYzYWM3ODE1IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnNfc3BlYy5qcworKysgYi93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnNfc3Bl Yy5qcwpAQCAtNDMsNyArNDMsNiBAQCBkZXNjcmliZSgncXVlcnlUb29sQWN0aW9ucycsICgpID0+ IHsKIAogICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlX2RhdGFfcXVl cnkpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKICAgICAgIH0pOwotCiAgICAgfSk7CiAgIH0pOwogCkBA IC01MSw2MCArNTAsMTAwIEBAIGRlc2NyaWJlKCdxdWVyeVRvb2xBY3Rpb25zJywgKCkgPT4gewog ICAgIGRlc2NyaWJlKCd3aGVuIHZlcmJvc2UgYW5kIGNvc3RzIGFyZSBub3Qgc2VsZWN0ZWQgYW5k IGJ1ZmZlcnMgYW5kIHRpbWluZyBhcmUgbm90IHNlbGVjdGVkJywgKCkgPT4gewogICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHNldFVwU3BpZXMoJycsICcnKTsKLSAgICAgICAgc3B5 T24ocXVlcnlUb29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5kLnJldHVyblZhbHVlKCdPRkYnKTsK LSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQucmV0 dXJuVmFsdWUoJ09GRicpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2J1ZmZl cnMnKS5hbmQucmV0dXJuVmFsdWUoJ09GRicpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rp b25zLCAnX3RpbWluZycpLmFuZC5yZXR1cm5WYWx1ZSgnT0ZGJyk7CisgICAgICAgIHNweU9uKHF1 ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7CisgICAg ICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfY29zdHNFbmFibGVkJykuYW5kLnJldHVyblZh bHVlKGZhbHNlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19idWZmZXJzJyku YW5kLnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywg J190aW1pbmcnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwogICAgICAgfSk7CisKICAgICAgIGl0 KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgpID0+IHsKICAgICAgICAgcXVlcnlUb29s QWN0aW9ucy5leHBsYWluQW5hbHl6ZShzcWxFZGl0b3JDb250cm9sbGVyKTsKLSAgICAgICAgbGV0 IGV4cGxhaW5BbmFseXplUXVlcnkgPSAnRVhQTEFJTiAoRk9STUFUIEpTT04sIEFOQUxZWkUgT04s IFZFUkJPU0UgT0ZGLCBDT1NUUyBPRkYsIEJVRkZFUlMgT0ZGLCBUSU1JTkcgT0ZGKSAnOwotICAg ICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlKS50b0hhdmVCZWVuQ2FsbGVk V2l0aChleHBsYWluQW5hbHl6ZVF1ZXJ5KTsKKworICAgICAgICAvLyBsZXQgZXhwbGFpbkFuYWx5 emVRdWVyeSA9ICdFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5BTFlaRSBPTiwgVkVSQk9TRSBPRkYs IENPU1RTIE9GRiwgQlVGRkVSUyBPRkYsIFRJTUlORyBPRkYpICc7CisgICAgICAgIGNvbnN0IGV4 cGxhaW5PYmplY3QgPSB7CisgICAgICAgICAgZm9ybWF0OiAnanNvbicsCisgICAgICAgICAgYW5h bHl6ZTogdHJ1ZSwKKyAgICAgICAgICB2ZXJib3NlOiBmYWxzZSwKKyAgICAgICAgICBjb3N0czog ZmFsc2UsCisgICAgICAgICAgYnVmZmVyczogZmFsc2UsCisgICAgICAgICAgdGltaW5nOiBmYWxz ZSwKKyAgICAgICAgICBzdW1tYXJ5OiBmYWxzZSwKKyAgICAgICAgfTsKKworICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBs YWluT2JqZWN0KTsKICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgZGVzY3JpYmUoJ3doZW4gdmVy Ym9zZSBhbmQgY29zdHMgYW5kIGJ1ZmZlcnMgYW5kIHRpbWluZyBhcmUgYWxsIHNlbGVjdGVkJywg KCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHNldFVwU3BpZXMoJycs ICcnKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5kLnJl dHVyblZhbHVlKCdPTicpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3Rz RW5hYmxlZCcpLmFuZC5yZXR1cm5WYWx1ZSgnT04nKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29s QWN0aW9ucywgJ19idWZmZXJzJykuYW5kLnJldHVyblZhbHVlKCdPTicpOwotICAgICAgICBzcHlP bihxdWVyeVRvb2xBY3Rpb25zLCAnX3RpbWluZycpLmFuZC5yZXR1cm5WYWx1ZSgnT04nKTsKKyAg ICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5kLnJldHVyblZhbHVl KHRydWUpOworICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3RzRW5hYmxlZCcp LmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywg J19idWZmZXJzJykuYW5kLnJldHVyblZhbHVlKHRydWUpOworICAgICAgICBzcHlPbihxdWVyeVRv b2xBY3Rpb25zLCAnX3RpbWluZycpLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKICAgICAgIH0pOwog ICAgICAgaXQoJ2NhbGxzIHRoZSBleGVjdXRlIGZ1bmN0aW9uJywgKCkgPT4gewogICAgICAgICBx dWVyeVRvb2xBY3Rpb25zLmV4cGxhaW5BbmFseXplKHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAg ICAgICBsZXQgZXhwbGFpbkFuYWx5emVRdWVyeSA9ICdFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5B TFlaRSBPTiwgVkVSQk9TRSBPTiwgQ09TVFMgT04sIEJVRkZFUlMgT04sIFRJTUlORyBPTikgJzsK LSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuZXhlY3V0ZSkudG9IYXZlQmVlbkNh bGxlZFdpdGgoZXhwbGFpbkFuYWx5emVRdWVyeSk7CisgICAgICAgIGNvbnN0IGV4cGxhaW5PYmpl Y3QgPSB7CisgICAgICAgICAgZm9ybWF0OiAnanNvbicsCisgICAgICAgICAgYW5hbHl6ZTogdHJ1 ZSwKKyAgICAgICAgICB2ZXJib3NlOiB0cnVlLAorICAgICAgICAgIGNvc3RzOiB0cnVlLAorICAg ICAgICAgIGJ1ZmZlcnM6IHRydWUsCisgICAgICAgICAgdGltaW5nOiB0cnVlLAorICAgICAgICAg IHN1bW1hcnk6IGZhbHNlLAorICAgICAgICB9OworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29u dHJvbGxlci5leGVjdXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBsYWluT2JqZWN0KTsKICAg ICAgIH0pOwogICAgIH0pOwogCiAgICAgZGVzY3JpYmUoJ3doZW4gdmVyYm9zZSBpcyBzZWxlY3Rl ZCBhbmQgY29zdHMgaXMgbm90IHNlbGVjdGVkIGFuZCBidWZmZXIgaXMgc2VsZWN0ZWQgYW5kIHRp bWluZyBpcyBub3Qgc2VsZWN0ZWQnLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK ICAgICAgICAgc2V0VXBTcGllcygnJywgJycpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rp b25zLCAnX3ZlcmJvc2UnKS5hbmQucmV0dXJuVmFsdWUoJ09OJyk7Ci0gICAgICAgIHNweU9uKHF1 ZXJ5VG9vbEFjdGlvbnMsICdfY29zdHNFbmFibGVkJykuYW5kLnJldHVyblZhbHVlKCdPRkYnKTsK LSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19idWZmZXJzJykuYW5kLnJldHVyblZh bHVlKCdPTicpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3RpbWluZycpLmFu ZC5yZXR1cm5WYWx1ZSgnT0ZGJyk7CisgICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdf dmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29s QWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOworICAgICAg ICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2J1ZmZlcnMnKS5hbmQucmV0dXJuVmFsdWUodHJ1 ZSk7CisgICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdGltaW5nJykuYW5kLnJldHVy blZhbHVlKGZhbHNlKTsKICAgICAgIH0pOwogICAgICAgaXQoJ2NhbGxzIHRoZSBleGVjdXRlIGZ1 bmN0aW9uJywgKCkgPT4gewogICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4cGxhaW5BbmFseXpl KHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAgICAgICBsZXQgZXhwbGFpbkFuYWx5emVRdWVyeSA9 ICdFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5BTFlaRSBPTiwgVkVSQk9TRSBPTiwgQ09TVFMgT0ZG LCBCVUZGRVJTIE9OLCBUSU1JTkcgT0ZGKSAnOwotICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29u dHJvbGxlci5leGVjdXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBsYWluQW5hbHl6ZVF1ZXJ5 KTsKKworICAgICAgICBjb25zdCBleHBsYWluT2JqZWN0ID0geworICAgICAgICAgIGZvcm1hdDog J2pzb24nLAorICAgICAgICAgIGFuYWx5emU6IHRydWUsCisgICAgICAgICAgdmVyYm9zZTogdHJ1 ZSwKKyAgICAgICAgICBjb3N0czogZmFsc2UsCisgICAgICAgICAgYnVmZmVyczogdHJ1ZSwKKyAg ICAgICAgICB0aW1pbmc6IGZhbHNlLAorICAgICAgICAgIHN1bW1hcnk6IGZhbHNlLAorICAgICAg ICB9OworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLmV4ZWN1dGUpLnRvSGF2 ZUJlZW5DYWxsZWRXaXRoKGV4cGxhaW5PYmplY3QpOwogICAgICAgfSk7CiAgICAgfSk7CiAKICAg ICBkZXNjcmliZSgnd2hlbiB2ZXJib3NlIGlzICBub3Qgc2VsZWN0ZWQgYW5kIGNvc3RzIGlzIHNl bGVjdGVkIGFuZCBidWZmZXIgaXMgbm90IHNlbGVjdGVkIGFuZCB0aW1pbmcgaXMgIHNlbGVjdGVk JywgKCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHNldFVwU3BpZXMo JycsICcnKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5k LnJldHVyblZhbHVlKCdPRkYnKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19j b3N0c0VuYWJsZWQnKS5hbmQucmV0dXJuVmFsdWUoJ09OJyk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5 VG9vbEFjdGlvbnMsICdfYnVmZmVycycpLmFuZC5yZXR1cm5WYWx1ZSgnT0ZGJyk7Ci0gICAgICAg IHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdGltaW5nJykuYW5kLnJldHVyblZhbHVlKCdPTicp OworICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3ZlcmJvc2UnKS5hbmQucmV0dXJu VmFsdWUoZmFsc2UpOworICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3RzRW5h YmxlZCcpLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0 aW9ucywgJ19idWZmZXJzJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgICAgc3B5T24o cXVlcnlUb29sQWN0aW9ucywgJ190aW1pbmcnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7CiAgICAg ICB9KTsKICAgICAgIGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgpID0+IHsKICAg ICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluQW5hbHl6ZShzcWxFZGl0b3JDb250cm9sbGVy KTsKLSAgICAgICAgbGV0IGV4cGxhaW5BbmFseXplUXVlcnkgPSAnRVhQTEFJTiAoRk9STUFUIEpT T04sIEFOQUxZWkUgT04sIFZFUkJPU0UgT0ZGLCBDT1NUUyBPTiwgQlVGRkVSUyBPRkYsIFRJTUlO RyBPTikgJzsKLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuZXhlY3V0ZSkudG9I YXZlQmVlbkNhbGxlZFdpdGgoZXhwbGFpbkFuYWx5emVRdWVyeSk7CisKKyAgICAgICAgY29uc3Qg ZXhwbGFpbk9iamVjdCA9IHsKKyAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKKyAgICAgICAgICBh bmFseXplOiB0cnVlLAorICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLAorICAgICAgICAgIGNvc3Rz OiB0cnVlLAorICAgICAgICAgIGJ1ZmZlcnM6IGZhbHNlLAorICAgICAgICAgIHRpbWluZzogdHJ1 ZSwKKyAgICAgICAgICBzdW1tYXJ5OiBmYWxzZSwKKyAgICAgICAgfTsKKworICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBs YWluT2JqZWN0KTsKICAgICAgIH0pOwogICAgIH0pOwogICB9KTsKQEAgLTExMywzOSArMTUyLDY3 IEBAIGRlc2NyaWJlKCdxdWVyeVRvb2xBY3Rpb25zJywgKCkgPT4gewogICAgIGRlc2NyaWJlKCd3 aGVuIHZlcmJvc2UgYW5kIGNvc3RzIGFyZSBzZWxlY3RlZCcsICgpID0+IHsKICAgICAgIGJlZm9y ZUVhY2goKCkgPT4gewogICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICAgIHNweU9u KHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZSgnT04nKTsKLSAg ICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQucmV0dXJu VmFsdWUoJ09OJyk7CisgICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScp LmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKKyAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywg J19jb3N0c0VuYWJsZWQnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7CiAgICAgICB9KTsKKwogICAg ICAgaXQoJ2NhbGxzIHRoZSBleGVjdXRlIGZ1bmN0aW9uJywgKCkgPT4gewogICAgICAgICBxdWVy eVRvb2xBY3Rpb25zLmV4cGxhaW4oc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0gICAgICAgIGxldCBl eHBsYWluUXVlcnkgPSAnRVhQTEFJTiAoRk9STUFUIEpTT04sIEFOQUxZWkUgT0ZGLCBWRVJCT1NF IE9OLCBDT1NUUyBPTiwgQlVGRkVSUyBPRkYsIFRJTUlORyBPRkYpICc7Ci0gICAgICAgIGV4cGVj dChzcWxFZGl0b3JDb250cm9sbGVyLmV4ZWN1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGxh aW5RdWVyeSk7CisgICAgICAgIGNvbnN0IGV4cGxhaW5PYmplY3QgPSB7CisgICAgICAgICAgZm9y bWF0OiAnanNvbicsCisgICAgICAgICAgYW5hbHl6ZTogZmFsc2UsCisgICAgICAgICAgdmVyYm9z ZTogdHJ1ZSwKKyAgICAgICAgICBjb3N0czogdHJ1ZSwKKyAgICAgICAgICBidWZmZXJzOiBmYWxz ZSwKKyAgICAgICAgICB0aW1pbmc6IGZhbHNlLAorICAgICAgICAgIHN1bW1hcnk6IGZhbHNlLAor ICAgICAgICB9OworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci5leGVjdXRlKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBsYWluT2JqZWN0KTsKICAgICAgIH0pOwogICAgIH0pOwog CiAgICAgZGVzY3JpYmUoJ3doZW4gdmVyYm9zZSBhbmQgY29zdHMgYXJlIG5vdCBzZWxlY3RlZCcs ICgpID0+IHsKICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewogICAgICAgICBzZXRVcFNwaWVzKCcn LCAnJyk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5y ZXR1cm5WYWx1ZSgnT0ZGJyk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfY29z dHNFbmFibGVkJykuYW5kLnJldHVyblZhbHVlKCdPRkYnKTsKKyAgICAgICAgc3B5T24ocXVlcnlU b29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgICAg c3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQucmV0dXJuVmFsdWUo ZmFsc2UpOwogICAgICAgfSk7CisKICAgICAgIGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlv bicsICgpID0+IHsKICAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluKHNxbEVkaXRvckNv bnRyb2xsZXIpOwotICAgICAgICBsZXQgZXhwbGFpblF1ZXJ5ID0gJ0VYUExBSU4gKEZPUk1BVCBK U09OLCBBTkFMWVpFIE9GRiwgVkVSQk9TRSBPRkYsIENPU1RTIE9GRiwgQlVGRkVSUyBPRkYsIFRJ TUlORyBPRkYpICc7Ci0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLmV4ZWN1dGUp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGxhaW5RdWVyeSk7CisgICAgICAgIGNvbnN0IGV4cGxh aW5PYmplY3QgPSB7CisgICAgICAgICAgZm9ybWF0OiAnanNvbicsCisgICAgICAgICAgYW5hbHl6 ZTogZmFsc2UsCisgICAgICAgICAgdmVyYm9zZTogZmFsc2UsCisgICAgICAgICAgY29zdHM6IGZh bHNlLAorICAgICAgICAgIGJ1ZmZlcnM6IGZhbHNlLAorICAgICAgICAgIHRpbWluZzogZmFsc2Us CisgICAgICAgICAgc3VtbWFyeTogZmFsc2UsCisgICAgICAgIH07CisKKyAgICAgICAgZXhwZWN0 KHNxbEVkaXRvckNvbnRyb2xsZXIuZXhlY3V0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwbGFp bk9iamVjdCk7CiAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGRlc2NyaWJlKCd3aGVuIHZlcmJv c2UgaXMgc2VsZWN0ZWQgYW5kIGNvc3RzIGlzIG5vdCBzZWxlY3RlZCcsICgpID0+IHsKICAgICAg IGJlZm9yZUVhY2goKCkgPT4gewogICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICAg IHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZSgnT04n KTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQu cmV0dXJuVmFsdWUoJ09GRicpOworICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3Zl cmJvc2UnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7CisgICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFj dGlvbnMsICdfY29zdHNFbmFibGVkJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKICAgICAgIH0p OworCiAgICAgICBpdCgnY2FsbHMgdGhlIGV4ZWN1dGUgZnVuY3Rpb24nLCAoKSA9PiB7CiAgICAg ICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhwbGFpbihzcWxFZGl0b3JDb250cm9sbGVyKTsKLSAgICAg ICAgbGV0IGV4cGxhaW5RdWVyeSA9ICdFWFBMQUlOIChGT1JNQVQgSlNPTiwgQU5BTFlaRSBPRkYs IFZFUkJPU0UgT04sIENPU1RTIE9GRiwgQlVGRkVSUyBPRkYsIFRJTUlORyBPRkYpICc7Ci0gICAg ICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLmV4ZWN1dGUpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKGV4cGxhaW5RdWVyeSk7CisgICAgICAgIGNvbnN0IGV4cGxhaW5PYmplY3QgPSB7CisgICAg ICAgICAgZm9ybWF0OiAnanNvbicsCisgICAgICAgICAgYW5hbHl6ZTogZmFsc2UsCisgICAgICAg ICAgdmVyYm9zZTogdHJ1ZSwKKyAgICAgICAgICBjb3N0czogZmFsc2UsCisgICAgICAgICAgYnVm ZmVyczogZmFsc2UsCisgICAgICAgICAgdGltaW5nOiBmYWxzZSwKKyAgICAgICAgICBzdW1tYXJ5 OiBmYWxzZSwKKyAgICAgICAgfTsKKyAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIu ZXhlY3V0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwbGFpbk9iamVjdCk7CiAgICAgICB9KTsK ICAgICB9KTsKICAgfSk7Cg== --001a114752ceb85a4f0564428a1c Content-Type: application/octet-stream; name="update-javascript-packages.diff" Content-Disposition: attachment; filename="update-javascript-packages.diff" Content-Transfer-Encoding: base64 Content-ID: <16158b669b34be2588a2> X-Attachment-Id: 16158b669b34be2588a2 ZGlmZiAtLWdpdCBhL3dlYi9rYXJtYS5jb25mLmpzIGIvd2ViL2thcm1hLmNvbmYuanMKaW5kZXgg ZTliMGUwNjIuLjlmMDRjYjQ4IDEwMDY0NAotLS0gYS93ZWIva2FybWEuY29uZi5qcworKysgYi93 ZWIva2FybWEuY29uZi5qcwpAQCAtMSw2ICsxLDYgQEAKIC8vIEthcm1hIGNvbmZpZ3VyYXRpb24K LS8vIEdlbmVyYXRlZCBvbiBXZWQgTWFyIDAxIDIwMTcgMTQ6MTk6MjggR01ULTA1MDAgKEVTVCkK IGNvbnN0IHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2sudGVzdC5jb25maWcuanMn KTsKK2NvbnN0IGlzRG9ja2VyID0gcmVxdWlyZSgnaXMtZG9ja2VyJykoKTsKIAogbW9kdWxlLmV4 cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgIGNvbmZpZy5zZXQoewpAQCAtOCw3ICs4LDcg QEAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgcmVwb3J0ZXJzOiBb J3Byb2dyZXNzJywgJ2tqaHRtbCddLAogICAgIHBsdWdpbnM6IFsKICAgICAgICdrYXJtYS13ZWJw YWNrJywKLSAgICAgICdrYXJtYS1waGFudG9tanMtbGF1bmNoZXInLAorICAgICAgJ2thcm1hLWNo cm9tZS1sYXVuY2hlcicsCiAgICAgICAna2FybWEtamFzbWluZScsCiAgICAgICAna2FybWEtamFz bWluZS1odG1sLXJlcG9ydGVyJywKICAgICBdLApAQCAtNTYsNyArNTYsMTUgQEAgbW9kdWxlLmV4 cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAKICAgICAvLyBzdGFydCB0aGVzZSBicm93c2Vy cwogICAgIC8vIGF2YWlsYWJsZSBicm93c2VyIGxhdW5jaGVyczogaHR0cHM6Ly9ucG1qcy5vcmcv YnJvd3NlL2tleXdvcmQva2FybWEtbGF1bmNoZXIKLSAgICBicm93c2VyczogWydQaGFudG9tSlMn XSwKKyAgICBjdXN0b21MYXVuY2hlcnM6IHsKKyAgICAgIENocm9tZUN1c3RvbTogeworICAgICAg ICBiYXNlOiAnQ2hyb21lSGVhZGxlc3MnLAorICAgICAgICAvLyBXZSBtdXN0IGRpc2FibGUgdGhl IENocm9tZSBzYW5kYm94IHdoZW4gcnVubmluZyBDaHJvbWUgaW5zaWRlIERvY2tlciAoQ2hyb21l J3Mgc2FuZGJveCBuZWVkcworICAgICAgICAvLyBtb3JlIHBlcm1pc3Npb25zIHRoYW4gRG9ja2Vy IGFsbG93cyBieSBkZWZhdWx0KQorICAgICAgICBmbGFnczogaXNEb2NrZXIgPyBbJy0tbm8tc2Fu ZGJveCddIDogW10KKyAgICAgIH0KKyAgICB9LAorICAgIGJyb3dzZXJzOiBbJ0Nocm9tZUN1c3Rv bSddLAogCiAKICAgICAvLyBDb250aW51b3VzIEludGVncmF0aW9uIG1vZGUKZGlmZiAtLWdpdCBh L3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDAxYTU1ZWM0Li5hNmM5 NjU5YiAxMDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93ZWIvcGFja2FnZS5qc29u CkBAIC0xLDggKzEsOSBAQAogewogICAibGljZW5zZSI6ICJQb3N0Z3JlU1FMIiwKICAgImRldkRl cGVuZGVuY2llcyI6IHsKKyAgICAiYXhpb3MtbW9jay1hZGFwdGVyIjogIl4xLjExLjAiLAogICAg ICJiYWJlbC1jb3JlIjogIn42LjI0LjAiLAotICAgICJiYWJlbC1sb2FkZXIiOiAifjYuNC4xIiwK KyAgICAiYmFiZWwtbG9hZGVyIjogIn43LjEuMiIsCiAgICAgImJhYmVsLXByZXNldC1lczIwMTUi OiAifjYuMjQuMCIsCiAgICAgImJhYmVsLXByZXNldC1yZWFjdCI6ICJ+Ni4yMy4wIiwKICAgICAi Y3Jvc3MtZW52IjogIl41LjAuMSIsCkBAIC0xMSwxNCArMTIsMTYgQEAKICAgICAiZW56eW1lLW1h dGNoZXJzIjogIl4zLjEuMCIsCiAgICAgImVzbGludCI6ICIzLjE5LjAiLAogICAgICJlc2xpbnQt cGx1Z2luLXJlYWN0IjogIl42LjEwLjMiLAotICAgICJleHRyYWN0LXRleHQtd2VicGFjay1wbHVn aW4iOiAiXjIuMS4yIiwKKyAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIl4zLjAu MiIsCiAgICAgImZpbGUtbG9hZGVyIjogIl4wLjExLjIiLAogICAgICJpbWFnZS13ZWJwYWNrLWxv YWRlciI6ICJeMy4zLjEiLAotICAgICJqYXNtaW5lLWNvcmUiOiAifjIuNS4yIiwKLSAgICAiamFz bWluZS1lbnp5bWUiOiAiXjMuMS4wIiwKKyAgICAiaXMtZG9ja2VyIjogIl4xLjEuMCIsCisgICAg Imphc21pbmUtY29yZSI6ICJ+Mi45LjAiLAorICAgICJqYXNtaW5lLWVuenltZSI6ICJ+NC4wLjAi LAogICAgICJrYXJtYSI6ICJ+MS41LjAiLAogICAgICJrYXJtYS1iYWJlbC1wcmVwcm9jZXNzb3Ii OiAiXjYuMC4xIiwKICAgICAia2FybWEtYnJvd3NlcmlmeSI6ICJ+NS4xLjEiLAorICAgICJrYXJt YS1jaHJvbWUtbGF1bmNoZXIiOiAiXjIuMi4wIiwKICAgICAia2FybWEtamFzbWluZSI6ICJ+MS4x LjAiLAogICAgICJrYXJtYS1qYXNtaW5lLWh0bWwtcmVwb3J0ZXIiOiAiXjAuMi4yIiwKICAgICAi a2FybWEtcGhhbnRvbWpzLWxhdW5jaGVyIjogIn4xLjAuMiIsCkBAIC02OSw3ICs3Miw3IEBACiAg ICAgImpxdWVyeSI6ICIxLjExLjIiLAogICAgICJqcXVlcnktY29udGV4dG1lbnUiOiAiXjIuNS4w IiwKICAgICAianF1ZXJ5LXVpIjogIl4xLjEyLjEiLAotICAgICJtb21lbnQiOiAiXjIuMTguMSIs CisgICAgIm1vbWVudCI6ICJeMi4yMC4xIiwKICAgICAibW91c2V0cmFwIjogIl4xLjYuMSIsCiAg ICAgInByb3AtdHlwZXMiOiAiXjE1LjUuMTAiLAogICAgICJyZWFjdCI6ICJmaWxlOi4uL3dlYi9w Z2FkbWluL3N0YXRpYy92ZW5kb3IvcmVhY3QiLApkaWZmIC0tZ2l0IGEvd2ViL3lhcm4ubG9jayBi L3dlYi95YXJuLmxvY2sKaW5kZXggYjU3YTgwY2EuLjQ0NjRiMTQwIDEwMDY0NAotLS0gYS93ZWIv eWFybi5sb2NrCisrKyBiL3dlYi95YXJuLmxvY2sKQEAgLTI4Myw2ICsyODMsMTIgQEAgYXN5bmNA XjIuMS4yLCBhc3luY0BeMi4xLjU6CiAgIGRlcGVuZGVuY2llczoKICAgICBsb2Rhc2ggIl40LjE0 LjAiCiAKK2FzeW5jQF4yLjQuMToKKyAgdmVyc2lvbiAiMi42LjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMi42LjAudGd6IzYxYTI5YWJi NmZjYzAyNmZlYTc3ZTU2ZDFjNmVjNTNhNzk1OTUxZjQiCisgIGRlcGVuZGVuY2llczoKKyAgICBs b2Rhc2ggIl40LjE0LjAiCisKIGFzeW5jQH4wLjkuMDoKICAgdmVyc2lvbiAiMC45LjIiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMC45LjIu dGd6I2FlYTc0ZDVlNjFjMWY4OTk2MTNiZjY0YmRhNjZkNGM3OGYyZmQxN2QiCkBAIC0zMTQsNiAr MzIwLDEyIEBAIGF3czRAXjEuMi4xLCBhd3M0QF4xLjYuMDoKICAgdmVyc2lvbiAiMS42LjAiCiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3czQvLS9hd3M0LTEuNi4w LnRneiM4M2VmNWNhODYwYjJiMzJlNGEwZGVlZGVlOGM3NzFiOWRiNTc0NzFlIgogCitheGlvcy1t b2NrLWFkYXB0ZXJAXjEuMTEuMDoKKyAgdmVyc2lvbiAiMS4xMS4wIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9heGlvcy1tb2NrLWFkYXB0ZXIvLS9heGlvcy1tb2Nr LWFkYXB0ZXItMS4xMS4wLnRneiM5NmU0YmIyNzAyY2Y2OTAwZjJhZTVmOWJkYmVmNmU1ZGM4NjY2 OWUyIgorICBkZXBlbmRlbmNpZXM6CisgICAgZGVlcC1lcXVhbCAiXjEuMC4xIgorCiBheGlvc0Be MC4xNi4xOgogICB2ZXJzaW9uICIwLjE2LjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2F4aW9zLy0vYXhpb3MtMC4xNi4yLnRneiNiYTRmOTJmMTcxNjdkZmJhYjQw OTgzNzg1NDU0YjlhYzE0OWMzYzZkIgpAQCAtNDczLDE0ICs0ODUsMTMgQEAgYmFiZWwtaGVscGVy c0BeNi4yNC4xOgogICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCiAgICAgYmFiZWwtdGVtcGxh dGUgIl42LjI0LjEiCiAKLWJhYmVsLWxvYWRlckB+Ni40LjE6Ci0gIHZlcnNpb24gIjYuNC4xIgot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1sb2FkZXIvLS9i YWJlbC1sb2FkZXItNi40LjEudGd6IzBiMzQxMTJkNWIwNzQ4YThkY2RiZjUxYWNmNmY5YmQ0MmQ1 MGI4Y2EiCitiYWJlbC1sb2FkZXJAfjcuMS4yOgorICB2ZXJzaW9uICI3LjEuMiIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbG9hZGVyLy0vYmFiZWwtbG9h ZGVyLTcuMS4yLnRneiNmNmNiZTEyMjcxMGYxYWEyYWY0ZDg4MWM2ZDViNTQzNThjYTI0MTI2Igog ICBkZXBlbmRlbmNpZXM6Ci0gICAgZmluZC1jYWNoZS1kaXIgIl4wLjEuMSIKLSAgICBsb2FkZXIt dXRpbHMgIl4wLjIuMTYiCisgICAgZmluZC1jYWNoZS1kaXIgIl4xLjAuMCIKKyAgICBsb2FkZXIt dXRpbHMgIl4xLjAuMiIKICAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBvYmplY3QtYXNzaWduICJe NC4wLjEiCiAKIGJhYmVsLW1lc3NhZ2VzQF42LjIzLjA6CiAgIHZlcnNpb24gIjYuMjMuMCIKQEAg LTE0NDUsNiArMTQ1NiwxMCBAQCBjaXBoZXItYmFzZUBeMS4wLjAsIGNpcGhlci1iYXNlQF4xLjAu MSwgY2lwaGVyLWJhc2VAXjEuMC4zOgogICAgIGluaGVyaXRzICJeMi4wLjEiCiAgICAgc2FmZS1i dWZmZXIgIl41LjAuMSIKIAorY2lyY3VsYXItanNvbi1lczZAXjIuMC4xOgorICB2ZXJzaW9uICIy LjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2lyY3VsYXIt anNvbi1lczYvLS9jaXJjdWxhci1qc29uLWVzNi0yLjAuMi50Z3ojZTRmNGEwOTNlNDlmYjRiNmFi YTExNTczNjU3NDYxMTJhNzhiZDM0NCIKKwogY2lyY3VsYXItanNvbkBeMC4zLjE6CiAgIHZlcnNp b24gIjAuMy4zIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaXJj dWxhci1qc29uLy0vY2lyY3VsYXItanNvbi0wLjMuMy50Z3ojODE1Yzk5ZWE4NGY2ODA5NTI5ZDJm NDU3OTFiZGY4MjcxMTM1MmQ2NiIKQEAgLTIwMTcsNiArMjAzMiwxMCBAQCBkZWVwLWVxdWFsLWlk ZW50QF4xLjEuMToKICAgZGVwZW5kZW5jaWVzOgogICAgIGxvZGFzaC5pc2VxdWFsICJeMy4wIgog CitkZWVwLWVxdWFsQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlZXAtZXF1YWwvLS9kZWVwLWVxdWFsLTEuMC4xLnRn eiNmNWQyNjAyOTJiNjYwZTA4NGVmZjRjZGJjOWYwOGFkMzI0NzQ0OGI1IgorCiBkZWVwLWV4dGVu ZEB+MC40LjA6CiAgIHZlcnNpb24gIjAuNC4yIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9kZWVwLWV4dGVuZC8tL2RlZXAtZXh0ZW5kLTAuNC4yLnRneiM0OGI2OTlj MjdlMzM0YmY4OWYxMDg5MmJlNDMyZjZlNGM3ZDM0YTdmIgpAQCAtMjM2MywxMiArMjM4MiwxOSBA QCBlbnRpdGllc0BeMS4xLjEsIGVudGl0aWVzQH4xLjEuMToKICAgdmVyc2lvbiAiMS4xLjEiCiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VudGl0aWVzLy0vZW50aXRp ZXMtMS4xLjEudGd6IzZlNWMyZDBhNTYyMWI1ZGFkYWVjZWY4MGI5MGVkZmI1Y2Q3NzcyZjAiCiAK LWVuenltZS1tYXRjaGVyc0BeMy4xLjAsIGVuenltZS1tYXRjaGVyc0BeMy44LjM6Citlbnp5bWUt bWF0Y2hlcnNAXjMuMS4wOgogICB2ZXJzaW9uICIzLjguMyIKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vZW56eW1lLW1hdGNoZXJzLy0vZW56eW1lLW1hdGNoZXJzLTMu OC4zLnRneiM2MjY5ZDQ3YjBkODFkNTIyMjc0NWRhNTAzZjI3YWMwMDNiYTIwOGQyIgogICBkZXBl bmRlbmNpZXM6CiAgICAgZGVlcC1lcXVhbC1pZGVudCAiXjEuMS4xIgogCitlbnp5bWUtbWF0Y2hl cnNAXjQuMC4yOgorICB2ZXJzaW9uICI0LjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vZW56eW1lLW1hdGNoZXJzLy0vZW56eW1lLW1hdGNoZXJzLTQuMC4yLnRn eiMzZjQ0NTdkMGQwZGEzZTI2OGFmNGJlZTlmMjIyNDM5ZGZjYTI2MjE0IgorICBkZXBlbmRlbmNp ZXM6CisgICAgY2lyY3VsYXItanNvbi1lczYgIl4yLjAuMSIKKyAgICBkZWVwLWVxdWFsLWlkZW50 ICJeMS4xLjEiCisKIGVuenltZUB+Mi44LjI6CiAgIHZlcnNpb24gIjIuOC4yIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbnp5bWUvLS9lbnp5bWUtMi44LjIudGd6 IzZjOGJjYjA1MDEyYWJjNGFhNGJjMzIxM2ZiMjM3ODBiOWI1YjE3MTQiCkBAIC0yNzAxLDEyICsy NzI3LDEyIEBAIGV4dGdsb2JAXjAuMy4xOgogICBkZXBlbmRlbmNpZXM6CiAgICAgaXMtZXh0Z2xv YiAiXjEuMC4wIgogCi1leHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5AXjIuMS4yOgotICB2ZXJz aW9uICIyLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0 cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luLy0vZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luLTIu MS4yLnRneiM3NTZlZjRlZmE4MTU1YzM2ODE4MzNmYmMzNGRhNTNiOTQxNzQ2ZDZjIgorZXh0cmFj dC10ZXh0LXdlYnBhY2stcGx1Z2luQF4zLjAuMjoKKyAgdmVyc2lvbiAiMy4wLjIiCisgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBs dWdpbi8tL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbi0zLjAuMi50Z3ojNWYwNDNlYWEwMmY5 NzUwYTkyNThiNzhjMGE2ZTBkYzE0MDhmYjJmNyIKICAgZGVwZW5kZW5jaWVzOgotICAgIGFzeW5j ICJeMi4xLjIiCi0gICAgbG9hZGVyLXV0aWxzICJeMS4wLjIiCisgICAgYXN5bmMgIl4yLjQuMSIK KyAgICBsb2FkZXItdXRpbHMgIl4xLjEuMCIKICAgICBzY2hlbWEtdXRpbHMgIl4wLjMuMCIKICAg ICB3ZWJwYWNrLXNvdXJjZXMgIl4xLjAuMSIKIApAQCAtMjgzNCwxMyArMjg2MCwxMyBAQCBmaW5h bGhhbmRsZXJAMS4wLjY6CiAgICAgc3RhdHVzZXMgIn4xLjMuMSIKICAgICB1bnBpcGUgIn4xLjAu MCIKIAotZmluZC1jYWNoZS1kaXJAXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluZC1jYWNoZS1kaXIvLS9maW5kLWNh Y2hlLWRpci0wLjEuMS50Z3ojYzhkZWZhZTU3YzhhNTJhOGE3ODRmOWUzMWM1N2M3NDJlOTkzYTBi OSIKK2ZpbmQtY2FjaGUtZGlyQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbmQtY2FjaGUtZGlyLy0vZmluZC1jYWNo ZS1kaXItMS4wLjAudGd6IzkyODhlM2U5ZTNjYzM3NDg3MTdkMzllYWRlMTdjZjcxZmMzMGVlNmYi CiAgIGRlcGVuZGVuY2llczoKICAgICBjb21tb25kaXIgIl4xLjAuMSIKLSAgICBta2RpcnAgIl4w LjUuMSIKLSAgICBwa2ctZGlyICJeMS4wLjAiCisgICAgbWFrZS1kaXIgIl4xLjAuMCIKKyAgICBw a2ctZGlyICJeMi4wLjAiCiAKIGZpbmQtdXBAXjEuMC4wOgogICB2ZXJzaW9uICIxLjEuMiIKQEAg LTI4NDksNyArMjg3NSw3IEBAIGZpbmQtdXBAXjEuMC4wOgogICAgIHBhdGgtZXhpc3RzICJeMi4w LjAiCiAgICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKIAotZmluZC11cEBeMi4wLjA6CitmaW5k LXVwQF4yLjAuMCwgZmluZC11cEBeMi4xLjA6CiAgIHZlcnNpb24gIjIuMS4wIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maW5kLXVwLy0vZmluZC11cC0yLjEuMC50 Z3ojNDVkMWI3ZTUwNmM3MTdkZGQ0ODI3NzVhMmI3NzkyMGEzYzBjNTdhNyIKICAgZGVwZW5kZW5j aWVzOgpAQCAtMjk0Myw2ICsyOTY5LDEyIEBAIGZvcm0tZGF0YUB+Mi4zLjE6CiAgICAgY29tYmlu ZWQtc3RyZWFtICJeMS4wLjUiCiAgICAgbWltZS10eXBlcyAiXjIuMS4xMiIKIAorZnMtYWNjZXNz QF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2ZzLWFjY2Vzcy8tL2ZzLWFjY2Vzcy0xLjAuMS50Z3ojZDZhODdmMjYyMjcx Y2VmZWJlYzMwYzU1MzQwN2ZiOTk1ZGE4Nzc3YSIKKyAgZGVwZW5kZW5jaWVzOgorICAgIG51bGwt Y2hlY2sgIl4xLjAuMCIKKwogZnMtZXh0cmFAfjEuMC4wOgogICB2ZXJzaW9uICIxLjAuMCIKICAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnMtZXh0cmEvLS9mcy1leHRy YS0xLjAuMC50Z3ojY2QzY2U1ZjdlN2NiNjE0NTg4M2ZjYWUzMTkxZTk4NzdmODU4Nzk1MCIKQEAg LTI5ODQsMTEgKzMwMTYsMTEgQEAgZnVuY3Rpb24tYmluZEBeMS4wLjIsIGZ1bmN0aW9uLWJpbmRA XjEuMS4wLCBmdW5jdGlvbi1iaW5kQF4xLjEuMToKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vZnVuY3Rpb24tYmluZC8tL2Z1bmN0aW9uLWJpbmQtMS4xLjEudGd6I2E1 Njg5OWQzZWEzYzliYWI4NzRiYjk3NzNiN2M1ZWRlOTJmNDg5NWQiCiAKIGZ1bmN0aW9uLnByb3Rv dHlwZS5uYW1lQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lLy0vZnVuY3Rpb24u cHJvdG90eXBlLm5hbWUtMS4wLjMudGd6IzAwOTlhZTU1NzJlOWRkNmYwM2M5N2QwMjNmZDkyYmNj NWU2MzllYWMiCisgIHZlcnNpb24gIjEuMS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9mdW5jdGlvbi5wcm90b3R5cGUubmFtZS8tL2Z1bmN0aW9uLnByb3RvdHlw ZS5uYW1lLTEuMS4wLnRneiM4YmQ3NjNjYzBhZjg2MGE4NTljYzVkNDkzODRkNzRiOTMyY2QyMzI3 IgogICBkZXBlbmRlbmNpZXM6CiAgICAgZGVmaW5lLXByb3BlcnRpZXMgIl4xLjEuMiIKLSAgICBm dW5jdGlvbi1iaW5kICJeMS4xLjAiCisgICAgZnVuY3Rpb24tYmluZCAiXjEuMS4xIgogICAgIGlz LWNhbGxhYmxlICJeMS4xLjMiCiAKIGdhdWdlQH4yLjcuMzoKQEAgLTM3NzgsNiArMzgxMCwxMCBA QCBpcy1kYXRlLW9iamVjdEBeMS4wLjE6CiAgIHZlcnNpb24gIjEuMC4xIgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kYXRlLW9iamVjdC8tL2lzLWRhdGUtb2Jq ZWN0LTEuMC4xLnRneiM5YWEyMGViNmFlZWJiZmY3N2ZiZDMzZTc0Y2EwMWIzMzU4MWQzYTE2Igog Citpcy1kb2NrZXJAXjEuMS4wOgorICB2ZXJzaW9uICIxLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZG9ja2VyLy0vaXMtZG9ja2VyLTEuMS4wLnRneiNm MDQzNzRkNGVlZTUzMTBlOWE4ZTExM2JmMTQ5NTQxMWU0NjE3NmExIgorCiBpcy1kb3RmaWxlQF4x LjAuMDoKICAgdmVyc2lvbiAiMS4wLjMiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2lzLWRvdGZpbGUvLS9pcy1kb3RmaWxlLTEuMC4zLnRneiNhNmEyZjMyZmZkMmRm YjA0ZjVjYTI1ZWNkMGY2YjgzY2Y3OThhMWUxIgpAQCAtNDAzMywxNSArNDA2OSwxNSBAQCBpc3Vy bEBeMS4wLjAtYWxwaGE1OgogICAgIGhhcy10by1zdHJpbmctdGFnLXggIl4xLjIuMCIKICAgICBp cy1vYmplY3QgIl4xLjAuMSIKIAotamFzbWluZS1jb3JlQH4yLjUuMjoKLSAgdmVyc2lvbiAiMi41 LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2phc21pbmUtY29y ZS8tL2phc21pbmUtY29yZS0yLjUuMi50Z3ojNmY2MWJkNzkwNjFlMjdmNDNlNmY5MzU1ZTQ0YjNj NmNhYjZmZjI5NyIKK2phc21pbmUtY29yZUB+Mi45LjA6CisgIHZlcnNpb24gIjIuOS4xIgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qYXNtaW5lLWNvcmUvLS9qYXNt aW5lLWNvcmUtMi45LjEudGd6I2I2YmJjMWQ4ZTY1MjUwZDU2ZjU4ODg0NjE3MDVlYmVlZWI4OGYy MmYiCiAKLWphc21pbmUtZW56eW1lQF4zLjEuMDoKLSAgdmVyc2lvbiAiMy44LjMiCi0gIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2phc21pbmUtZW56eW1lLy0vamFzbWlu ZS1lbnp5bWUtMy44LjMudGd6I2M5YzA0ZjgyZTdhNDdkMmFlYWQ2ZDJmMDljODQ3MjJmYzQwOGVl MjAiCitqYXNtaW5lLWVuenltZUB+NC4wLjA6CisgIHZlcnNpb24gIjQuMC4yIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qYXNtaW5lLWVuenltZS8tL2phc21pbmUt ZW56eW1lLTQuMC4yLnRneiNkNWQzNDUzMTY0ZDlmZTk4MjE0NGViNjIxMTQ3ZWRhYmE4NTkxNGJl IgogICBkZXBlbmRlbmNpZXM6Ci0gICAgZW56eW1lLW1hdGNoZXJzICJeMy44LjMiCisgICAgZW56 eW1lLW1hdGNoZXJzICJeNC4wLjIiCiAKIGpxdWVyeS1jb250ZXh0bWVudUAxLjYuNzoKICAgdmVy c2lvbiAiMS42LjciCkBAIC00MTkxLDYgKzQyMjcsMTMgQEAga2FybWEtYnJvd3NlcmlmeUB+NS4x LjE6CiAgICAgbWluaW1hdGNoICJeMy4wLjAiCiAgICAgb3Mtc2hpbSAiXjAuMS4zIgogCitrYXJt YS1jaHJvbWUtbGF1bmNoZXJAXjIuMi4wOgorICB2ZXJzaW9uICIyLjIuMCIKKyAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20va2FybWEtY2hyb21lLWxhdW5jaGVyLy0va2Fy bWEtY2hyb21lLWxhdW5jaGVyLTIuMi4wLnRneiNjZjFiOWQwNzEzNmNjMThmZTIzOTMyN2QyNDY1 NGMzZGJjMzY4YWNmIgorICBkZXBlbmRlbmNpZXM6CisgICAgZnMtYWNjZXNzICJeMS4wLjAiCisg ICAgd2hpY2ggIl4xLjIuMSIKKwoga2FybWEtamFzbWluZS1odG1sLXJlcG9ydGVyQF4wLjIuMjoK ICAgdmVyc2lvbiAiMC4yLjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2thcm1hLWphc21pbmUtaHRtbC1yZXBvcnRlci8tL2thcm1hLWphc21pbmUtaHRtbC1yZXBv cnRlci0wLjIuMi50Z3ojNDhhOGU1ZWYxODgwNzYxN2VlMmI1ZTMzYzExOTRjMzViNDM5NTI0YyIK QEAgLTQ0MTcsNyArNDQ2MCw3IEBAIGxvYWRlci1ydW5uZXJAXjIuMy4wOgogICB2ZXJzaW9uICIy LjMuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9hZGVyLXJ1 bm5lci8tL2xvYWRlci1ydW5uZXItMi4zLjAudGd6I2Y0ODJhZWE4MmQ1NDNlMDc5MjE3MDBkNWE0 NmVmMjZmZGFjNmI4YTIiCiAKLWxvYWRlci11dGlsc0BeMC4yLjE2LCBsb2FkZXItdXRpbHNAXjAu Mi41LCBsb2FkZXItdXRpbHNAfjAuMi4yOgorbG9hZGVyLXV0aWxzQF4wLjIuNSwgbG9hZGVyLXV0 aWxzQH4wLjIuMjoKICAgdmVyc2lvbiAiMC4yLjE3IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMC4yLjE3LnRneiNm ODZlNjM3NGQ0MzIwNWE2ZTZjNjBlOTE5NmYxN2MwMjk5YmZiMzQ4IgogICBkZXBlbmRlbmNpZXM6 CkBAIC00ODkxLDEwICs0OTM0LDE0IEBAIG1vbWVudC10aW1lem9uZUBeMC40LjA6CiAgIGRlcGVu ZGVuY2llczoKICAgICBtb21lbnQgIj49IDIuNi4wIgogCi0ibW9tZW50QD49IDIuNi4wIiwgbW9t ZW50QF4yLjEwLCBtb21lbnRAXjIuMTguMToKKyJtb21lbnRAPj0gMi42LjAiLCBtb21lbnRAXjIu MTA6CiAgIHZlcnNpb24gIjIuMTguMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vbW9tZW50Ly0vbW9tZW50LTIuMTguMS50Z3ojYzM2MTkzZGQzY2UxYzJlZWQyYWRi N2M4MDJkYmJjNzdhODFiMWMwZiIKIAorbW9tZW50QF4yLjIwLjE6CisgIHZlcnNpb24gIjIuMjAu MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbW9tZW50Ly0vbW9t ZW50LTIuMjAuMS50Z3ojZDZlYjFhNDZjYmNjMTRhMmIyZjk0MzQxMTJjMWZmODkwN2YzMTNmZCIK KwogbW91c2V0cmFwQF4xLjYuMToKICAgdmVyc2lvbiAiMS42LjEiCiAgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21vdXNldHJhcC8tL21vdXNldHJhcC0xLjYuMS50Z3oj MmEwODVmNWM3NTEyOTRjNzVlN2U4MWY2ZWMyNTQ1YjI5Y2JmNDJkOSIKQEAgLTUxMjMsNiArNTE3 MCwxMCBAQCBudGgtY2hlY2tAfjEuMC4xOgogICBkZXBlbmRlbmNpZXM6CiAgICAgYm9vbGJhc2Ug In4xLjAuMCIKIAorbnVsbC1jaGVja0BeMS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9udWxsLWNoZWNrLy0vbnVsbC1jaGVj ay0xLjAuMC50Z3ojOTc3ZGZmZDcxNzYwMTJiOWVjMzBkMmEzOWRiNWNmNzJhMDQzOWVkZCIKKwog bnVtMmZyYWN0aW9uQF4xLjIuMjoKICAgdmVyc2lvbiAiMS4yLjIiCiAgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL251bTJmcmFjdGlvbi8tL251bTJmcmFjdGlvbi0xLjIu Mi50Z3ojNmY2ODJiNmEwMjdhNGU5ZGRmYTQ1NjRjZDI1ODlkMWQ0ZTY2OWVkZSIKQEAgLTU1MDYs MTEgKzU1NTcsMTEgQEAgcGlua2llQF4yLjAuMDoKICAgdmVyc2lvbiAiMi4wLjQiCiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpbmtpZS8tL3BpbmtpZS0yLjAuNC50 Z3ojNzI1NTZiODBjZmEwZDQ4YTk3NGU4MGU3NzI0OGU4MGVkNGY3Zjg3MCIKIAotcGtnLWRpckBe MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9wa2ctZGlyLy0vcGtnLWRpci0xLjAuMC50Z3ojN2E0YjUwOGE4ZDViYjJkNjI5 ZDQ0NzA1NmZmNGU5YzkzMTRjZjNkNCIKK3BrZy1kaXJAXjIuMC4wOgorICB2ZXJzaW9uICIyLjAu MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGtnLWRpci8tL3Br Zy1kaXItMi4wLjAudGd6I2Y2ZDVkMTEwOWUxOWQ2M2VkZjQyOGUwYmQ1N2UxMjc3NzYxNTMzNGIi CiAgIGRlcGVuZGVuY2llczoKLSAgICBmaW5kLXVwICJeMS4wLjAiCisgICAgZmluZC11cCAiXjIu MS4wIgogCiBwbHVyYWxpemVAXjEuMi4xOgogICB2ZXJzaW9uICIxLjIuMSIKQEAgLTc0MDUsNyAr NzQ1Niw3IEBAIHdoaWNoLW1vZHVsZUBeMi4wLjA6CiAgIHZlcnNpb24gIjIuMC4wIgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGljaC1tb2R1bGUvLS93aGljaC1t b2R1bGUtMi4wLjAudGd6I2Q5ZWYwN2RjZTc3Yjk5MDJiOGEzYThmYTRiMzFjM2UzZjdlNmU4N2Ei CiAKLXdoaWNoQDEsIHdoaWNoQF4xLjIuOToKK3doaWNoQDEsIHdoaWNoQF4xLjIuMSwgd2hpY2hA XjEuMi45OgogICB2ZXJzaW9uICIxLjMuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vd2hpY2gvLS93aGljaC0xLjMuMC50Z3ojZmYwNGJkZmMwMTBlZTU0N2Q3ODBi ZWMzOGUxYWMxYzI3NzdkMjUzYSIKICAgZGVwZW5kZW5jaWVzOgo= --001a114752ceb85a4f0564428a1c--