Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bnXC5-000448-9k for pgadmin-hackers@arkaria.postgresql.org; Fri, 23 Sep 2016 20:35:37 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bnXC4-0006tr-Qa for pgadmin-hackers@arkaria.postgresql.org; Fri, 23 Sep 2016 20:35:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bnXBj-0006aW-58 for pgadmin-hackers@postgresql.org; Fri, 23 Sep 2016 20:35:15 +0000 Received: from mail-it0-x230.google.com ([2607:f8b0:4001:c0b::230]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bnXBd-0007BM-4p for pgadmin-hackers@postgresql.org; Fri, 23 Sep 2016 20:35:14 +0000 Received: by mail-it0-x230.google.com with SMTP id 186so26602485itf.0 for ; Fri, 23 Sep 2016 13:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=6LMHXLHU0kgarj179kGUMSGVXxbxps7YtScN73TW9T0=; b=zaX8TBMZsh2sfM9aFtI0en9zQtY6zVXDpF2fnenPsAp9sILhn9cxnnhFrR4Ser+uTp uVutIYrC0UlwiNjbJqXvRDcnSEr/1IVa18WyWUBPiAnidb1a9z4cxf9bsQ/H7bkGyO/t iy1CSVK04SMVZcinUS6jaxx55TBV0fBaC/qNUYt0wQ2bUxKI2c8YsXzquwA8zDi84mUI bzHkUXpGITR1qEyScag+vgGVaRJnW+xvjJeys1+ik+JbvhNj004jALm0HXOoihKBO7+2 N4fvsu+OplIsF6PnQNs1qZHVmGkIW0AOn3QJ31yWcCVBBA4jSXGxr0dX8ySW3tP1s4N6 bTPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=6LMHXLHU0kgarj179kGUMSGVXxbxps7YtScN73TW9T0=; b=UxMxtZyMvhOFiKSBzv0m9L+FIY0D9htIzKwH2aUcD9tr0Cxq5Z7LnH9pWmTGhiKz5I OFKYmWHi0lTyEj8SI+HkcrES5wJBLw830ee93WCkYBrVTVA6SrbV3kf6NS33Aq4C8piE wCxv7DWTvnR2zJWfUeEa5JyGzBz6nz4sj2P7RMPc9Pf2mVxZXR1M/V4/8BwXKFBTbSvM AEREiXmWs6mihyUfPDYa6gqp9gkF+Zrfnw8ECcVKrKBRJcdJ+Bx7MjQkZlgsB2l7R2Z4 cqGbE6o26xRrZYzeuVBdZAxnIgEoXU4vulG7qXMWj9zFA3wckBHDWl6vnukW0Nbgra9l Dlwg== X-Gm-Message-State: AA6/9RkbbK4ryINRrF+RB/P5VtSXV/opImz8rjUr1fJVYI8OTT9oGq6obbTPoIHAwEg10F++ouaZIU9xh3G78RCf X-Received: by 10.36.10.196 with SMTP id 187mr5302952itw.93.1474662906992; Fri, 23 Sep 2016 13:35:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.50.212 with HTTP; Fri, 23 Sep 2016 13:34:46 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Sat, 24 Sep 2016 02:04:46 +0530 Message-ID: Subject: Re: PATCH: pgAgent support To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11440d46bd0187053d32b62a X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a11440d46bd0187053d32b62a Content-Type: multipart/alternative; boundary=001a11440d46bd0181053d32b628 --001a11440d46bd0181053d32b628 Content-Type: text/plain; charset=UTF-8 Hi Dave, On Thu, Sep 22, 2016 at 8:27 PM, Dave Page wrote: > Thanks. From the pgAgent patch: > > - The date/time format is different again. Should be locale or ISO > (consistent across the app) > Using ISO now. > > - I think we need to add hints under the less obvious options - e.g. > Job class and host agent > I added few string. Will need your feedback on that. > > - On the job step subnode control, lets move the Script to it's own > tab (called Code). We should alter the label based on the Kind option > - either "SQL query" or "Script" > Done > > - Why can't we use the Date/time picker for Exceptions? I assume we > just need to either disable Date or Time selection? > Done. I was avoiding to show date time picker for multiple reasons: 1. It needed a special effort to show datetime picker in the backgrid cell. 2. The datetime picker did not fit in the subnode control. A special DatetimePickerCell was needed to be created the cell with datetime picker. And, I had to specify the min-height in the exceptions tab as a hack. > > - The SQL tab doesn't use the available space. See screenshot. > Fixed. This was a general issue for the properties dialog having more than 550px. We have hardcoded the height to 500px of CodeMirror in the SQL tab. > > - The SQL should have blank lines between sections, e.g. before -- > Steps and -- Schedules > Done. Also - fixed an issue of setting the helpMessage in SwitchControl. Again - attaching two patches. 1. Misc changes - Setting the CodeMirror height when panel is resized, which you had mentioned. - Added a new CellEditor (DatetimePickerEditor) for datetime picker. 2. pgAgent support (updated) -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* --001a11440d46bd0181053d32b628 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi Dave,


On Thu, Sep 22, 2016 at 8:27 PM, Dave Page <dpage= @pgadmin.org> wrote:
Thanks. From the pgAgent patch:

- The date/time format is different again. Should be locale or ISO
(consistent across the app)
Using ISO now.

- I think we need to add hints under the less obvious options - e.g.
Job class and host agent
I added few string.
Will need your feedback on that.=C2=A0

- On the job step subnode control, lets move the Script to it's own
tab (called Code). We should alter the label based on the Kind option
- either "SQL query" or "Script"
D= one=C2=A0

- Why can't we use the Date/time picker for Exceptions? I assume we
just need to either disable Date or Time selection?
Do= ne.
=C2=A0
I was avoiding to show date time picker for = multiple reasons:
1. It needed a special effort to show datetime = picker in the backgrid cell.
2. The datetime picker did not fit i= n the subnode control.

A special DatetimePickerCel= l was needed to be created the cell with datetime picker.
And, I = had to specify the min-height in the exceptions tab as a hack.=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
- The SQL tab doesn't use the available space. See screenshot.
Fixed.
=C2=A0
This was a general issue for= the properties dialog having more than 550px.
We have hardcoded = the height to 500px of CodeMirror in the SQL tab.=C2=A0

- The SQL should have blank lines between sections, e.g. before --
Steps and -- Schedules
Done.=C2=A0

Also - fixed an issue of setting the helpMessage in SwitchControl.

Again - attaching two patches.
1. Misc cha= nges
- Setting the CodeMirror height when panel is resized, which= you had mentioned.
- Added a new CellEditor (DatetimePickerE= ditor) for datetime picker.
2. pgAgent support (updated)

--

Thanks & Regards,=

Ashesh Vashi
<= span style=3D"font-style:italic">EnterpriseDB INDIA:=C2=A0
Enterprise PostgreSQL Comp= any



--001a11440d46bd0181053d32b628-- --001a11440d46bd0187053d32b62a Content-Type: application/octet-stream; name="pgagent_v4.patch" Content-Disposition: attachment; filename="pgagent_v4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_itg86oqz0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9f LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWFk N2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9fLnB5CkBAIC0w LDAgKzEsNTI3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBwZ0FnZW50IEpvYnMgTm9k ZSIiIgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitpbXBvcnQganNv bgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2Vf cmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2tfYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdf REVGQVVMVF9EUklWRVIKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVj dGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zyb20gcGdhZG1p bi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMgaW1wb3J0IHNlcnZlcnMK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVz cG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIG1ha2VfcmVz cG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZSwgc3VjY2Vzc19yZXR1cm4K K2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK KworCitjbGFzcyBKb2JNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgor ICAgIE5PREVfVFlQRSA9ICdwZ2Ffam9iJworICAgIENPTExFQ1RJT05fTEFC RUwgPSBfKCJwZ0FnZW50IEpvYnMiKQorCisgICAgZGVmIGdldF9ub2Rlcyhz ZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0 ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICBp ZiBzZWxmLnNob3dfbm9kZToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuZ2Vu ZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoc2lkKQorCisgICAgQHBy b3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAi IiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2VydmVy LCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMKKyAgICAg ICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g c2VydmVycy5TZXJ2ZXJNb2R1bGUuTk9ERV9UWVBFCisKKyAgICBkZWYgQmFj a2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAg ICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3Nob3dfbm9kZScpOgorICAgICAgICAg ICAgaWYgbm90IHNlbGYuc2hvd19ub2RlOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rp b24oKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3Nj YWxhcigiIiIKK1NFTEVDVAorICAgIGhhc190YWJsZV9wcml2aWxlZ2UoJ3Bn YWdlbnQucGdhX2pvYicsICdJTlNFUlQsIFNFTEVDVCwgVVBEQVRFJykgaGFz X3ByaXZpbGVkZ2UKK1dIRVJFIEVYSVNUUygKKyAgICBTRUxFQ1QgaGFzX3Nj aGVtYV9wcml2aWxlZ2UoJ3BnYWdlbnQnLCAnVVNBR0UnKQorICAgIFdIRVJF IEVYSVNUUygKKyAgICAgICAgU0VMRUNUIGNsLm9pZCBGUk9NIHBnX2NsYXNz IGNsCisgICAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMu b2lkPXJlbG5hbWVzcGFjZQorICAgICAgICBXSEVSRSByZWxuYW1lPSdwZ2Ff am9iJyBBTkQgbnNwbmFtZT0ncGdhZ2VudCcKKyAgICApCispCisiIiIpCisg ICAgICAgIGlmIHN0YXR1cyBhbmQgcmVzOgorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdCgiIiIKK1NFTEVDVCBFWElTVFMo CisgICAgICAgIFNFTEVDVCAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNv bHVtbnMKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIHRhYmxlX3NjaGVt YT0ncGdhZ2VudCcgQU5EIHRhYmxlX25hbWU9J3BnYV9qb2JzdGVwJyBBTkQK KyAgICAgICAgICAgIGNvbHVtbl9uYW1lPSdqc3Rjb25uc3RyJworICAgICkg aGFzX2Nvbm5zdHIiIiIpCisKKyAgICAgICAgICAgIG1hbmFnZXIuZGJfaW5m b1sncGdBZ2VudCddID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJl dHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3Bl cnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQgb2YgY3NzIHRvIGluY2x1ZGUg aW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisgICAgICAgIHNuaXBwZXRzID0g WworICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICJicm93c2VyL2Nzcy9jb2xsZWN0aW9uLmNzcyIsCisgICAgICAgICAg ICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAg ICAgIF89XworICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAicGdhX2pvYi9jc3MvcGdhX2pv Yi5jc3MiLAorICAgICAgICAgICAgICAgIG5vZGVfdHlwZT1zZWxmLm5vZGVf dHlwZSwKKyAgICAgICAgICAgICAgICBfPV8KKyAgICAgICAgICAgICkKKyAg ICAgICAgXQorCisgICAgICAgIGZvciBzdWJtb2R1bGUgaW4gc2VsZi5zdWJt b2R1bGVzOgorICAgICAgICAgICAgc25pcHBldHMuZXh0ZW5kKHN1Ym1vZHVs ZS5jc3NzbmlwcGV0cykKKworICAgICAgICByZXR1cm4gc25pcHBldHMKKwor CitibHVlcHJpbnQgPSBKb2JNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3Mg Sm9iVmlldyhQR0NoaWxkTm9kZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJs dWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30KKyAgICBdCisgICAgaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAg XQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzog WworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUn OiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsn Z2V0JzogJ3Byb3BlcnRpZXMnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAg ICBdLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZXMnfSwgeydn ZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3Fs J31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0 JzogJ21zcWwnfV0sCisgICAgICAgICdydW5fbm93JzogW3sncG9zdCc6ICdy dW5fbm93J31dLAorICAgICAgICAnY2xhc3Nlcyc6IFt7fSwgeydnZXQnOiAn am9iX2NsYXNzZXMnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6 ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0 YXRpc3RpY3MnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7 J2dldCc6ICdtb2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNr X3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2ls bCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAg bWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oKQor CisgICAgICAgICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhl IHNxbCBzY3JpcHRzLgorICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRo ID0gJ3BnYV9qb2Ivc3FsL3ByZTMuNCcKKworICAgICAgICAgICAgaWYgbm90 ICgncGdBZ2VudCcgaW4gc2VsZi5tYW5hZ2VyLmRiX2luZm8pOgorICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dCgiIiIKK1NFTEVDVCBFWElTVFMoCisgICAgICAgIFNFTEVDVCAxIEZST00g aW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMKKyAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgIHRhYmxlX3NjaGVtYT0ncGdhZ2VudCcgQU5EIHRhYmxlX25h bWU9J3BnYV9qb2JzdGVwJyBBTkQKKyAgICAgICAgICAgIGNvbHVtbl9uYW1l PSdqc3Rjb25uc3RyJworICAgICkgaGFzX2Nvbm5zdHIiIiIpCisKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwg KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gd3JhcAorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQs IHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgamlkPWppZCwgY29ubj1z ZWxmLmNvbm4KKyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGlmIGppZCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyc2V0Wydyb3dzJ10pICE9IDE6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICAg ICAgICAgIGVycm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGQgbm90IGZpbmQgdGhlIHBnQWdlbnQgam9iIG9uIHRoZSBzZXJ2ZXIu IgorICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0 YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIHJzZXRbJ3Jvd3MnXVswXVsnam9iaWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgc2lkLAorICAgICAgICAgICAgICAgICAgICBy c2V0Wydyb3dzJ11bMF1bJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgImljb24tcGdhX2pvYiIgaWYgcnNldFsncm93cyddWzBdWydqb2JlbmFi bGVkJ10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9i LWRpc2FibGVkIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAgIHJlcyA9 IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVw cmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAg ICAgIHJvd1snam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgc2lkLAor ICAgICAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgImljb24tcGdhX2pvYiIgaWYgcm93Wydqb2JlbmFibGVk J10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9iLWRp c2FibGVkIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVy dGllcyhzZWxmLCBnaWQsIHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICApCisgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAg ICAgICAgaWYgamlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGVu KHJzZXRbJ3Jvd3MnXSkgIT0gMToKKyAgICAgICAgICAgICAgICByZXR1cm4g Z29uZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygKKyAgICAg ICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCB0aGUgcGdBZ2Vu dCBqb2Igb24gdGhlIHNlcnZlci4iCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXMgPSByc2V0Wydy b3dzJ11bMF0KKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3RlcHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAg ICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQn XVsnaGFzX2Nvbm5zdHInXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorICAgICAgICAgICAgcmVzWydqc3RlcHMnXSA9IHJzZXRbJ3Jvd3Mn XQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzY2hlZHVsZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBq aWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorICAgICAgICAgICAgcmVzWydqc2NoZWR1bGVzJ10gPSBy c2V0Wydyb3dzJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcyA9 IHJzZXRbJ3Jvd3MnXQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVz IChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAg ICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMu CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgK KyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAicGdhX2pvYi9qcy9wZ2Ffam9iLmpzIiwKKyAgICAgICAgICAgICAgICBf PV8KKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVu dC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkKToKKyAgICAgICAgIiIiQ3JlYXRlIHRoZSBwZ0Fn ZW50IGpvYi4iIiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAg ICAgICAgIHUnam9ibmFtZScKKyAgICAgICAgXQorCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0Zi04JykK KyAgICAgICAgKQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJn czoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICBz dWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oCisg ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGhlIHJl cXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0JFR0lOJykKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lk PVRydWUsCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5h Z2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAg ICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNy ZWF0ZWQgZGF0YWJhc2UKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPXJlcywg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisg ICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAg ICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqb2JpZCddLAorICAgICAg ICAgICAgICAgIHNpZCwKKyAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUn XSwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2IiCisgICAg ICAgICAgICApCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAg ICAgICAiIiJVcGRhdGUgdGhlIHBnQWdlbnQgSm9iLiIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0 Zi04JykKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfdm9pZCgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uLCBqaWQ9amlkLAorICAgICAgICAgICAg ICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50 J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAgICAgICAgKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNyZWF0ZWQgZGF0YWJhc2UKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICAgICAgamlkPXJlcywgY29ubj1zZWxmLmNvbm4KKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgamlkLAorICAgICAgICAgICAgICAgIHNpZCwKKyAgICAg ICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXBnYV9qb2IiIGlmIHJvd1snam9iZW5hYmxlZCddIGVsc2UK KyAgICAgICAgICAgICAgICAgICAgImljb24tcGdhX2pvYi1kaXNhYmxlZCIK KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGppZCk6 CisgICAgICAgICIiIkRlbGV0ZSB0aGUgcGdBZ2VudCBKb2IuIiIiCisKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10p LAorICAgICAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uCisg ICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2Uoc3VjY2Vzcz0xKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBqaWQ9Tm9uZSk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAg ICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24u bG9hZHMoCisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcp IGlmIGhhc2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAg ICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFsKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlLnNxbCcgaWYgamlkIGlzIE5vbmUgZWxzZSAndXBkYXRl LnNxbCcKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICBq aWQ9amlkLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uLCBmZXRjaF9pZD1G YWxzZSwKKyAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFn ZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAg ICAgICApLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHN0YXRpc3RpY3Mo c2VsZiwgZ2lkLCBzaWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBz dGF0aXN0aWNzCisgICAgICAgIFJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9y IGEgcGFydGljdWxhciBkYXRhYmFzZSBpZiBqaWQgaXMgc3BlY2lmaWVkLAor ICAgICAgICBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gc3RhdGlzdGljcyBm b3IgYWxsIHRoZSBkYXRhYmFzZXMgaW4gdGhhdAorICAgICAgICBzZXJ2ZXIu CisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3N0YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBj b25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJl cywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBz aWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgIiIi CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uLCBs YXN0X3N5c3RlbV9vaWQ9MAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgIHN0YXR1cywgcmVzPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzdGVwcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwgY29u bj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2Vs Zi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQor ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3dbJ2pzdGVwcyddID0gcmVz Wydyb3dzJ10KKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3NjaGVkdWxlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcm93 Wydqc2NoZWR1bGVzJ10gPSByZXNbJ3Jvd3MnXQorICAgICAgICBmb3Igc2No ZWR1bGUgaW4gcm93Wydqc2NoZWR1bGVzJ106CisgICAgICAgICAgICBzY2hl ZHVsZVsnanNjZXhjZXB0aW9ucyddID0gW10KKyAgICAgICAgICAgIGlmIHNj aGVkdWxlWydqZXhpZCddOgorICAgICAgICAgICAgICAgIGlkeCA9IDAKKyAg ICAgICAgICAgICAgICBmb3IgZXhjIGluIHNjaGVkdWxlWydqZXhpZCddOgor ICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVsnanNjZXhjZXB0aW9ucydd LmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAnamV4aWQnOiBl eGMsCisgICAgICAgICAgICAgICAgICAgICAgICAnamV4ZGF0ZSc6IHNjaGVk dWxlWydqZXhkYXRlJ11baWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdqZXh0aW1lJzogc2NoZWR1bGVbJ2pleHRpbWUnXVtpZHhdCisgICAgICAg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIGlkeCs9MQor ICAgICAgICAgICAgZGVsIHNjaGVkdWxlWydqZXhpZCddCisgICAgICAgICAg ICBkZWwgc2NoZWR1bGVbJ2pleGRhdGUnXQorICAgICAgICAgICAgZGVsIHNj aGVkdWxlWydqZXh0aW1lJ10KKworICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBk YXRhPXJvdywgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lkPUZhbHNlLAorICAg ICAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZv WydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBy dW5fbm93KHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgbmV4dCBydW4gdG8g bm93LCB0byBpbmZvcm0gdGhlIHBnQWdlbnQgdG8KKyAgICAgICAgcnVuIHRo ZSBqb2Igbm93LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAorICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdydW5fbm93LnNxbCddKSwKKyAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAg ICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gc3VjY2Vzc19yZXR1cm4oCisgICAgICAgICAgICBt ZXNzYWdlPV8oIlVwZGF0ZWQgdGhlIG5leHQtcnVudGltZSB0byBub3chIikK KyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBqb2JfY2xhc3NlcyhzZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzZXQgb2Yg am9iIGNsYXNzZXMuCisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2pv Yl9jbGFzc2VzLnNxbCddKSkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCitKb2JWaWV3 LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3NjaGVkdWxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL19f aW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjI0ZWExYmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy9f X2luaXRfXy5weQpAQCAtMCwwICsxLDQ0MSBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBwZ0Fn ZW50IEpvYiBTY2hlZHVsZSBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0Citmcm9t IGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4uYnJv d3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQor ZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2Rl VmlldworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNv bl9yZXNwb25zZSwgZ29uZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWph eF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisKK2Zyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorCisKK2NsYXNzIEpvYlNj aGVkdWxlTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIK KyAgICBjbGFzcyBKb2JTY2hlZHVsZU1vZHVsZShDb2xsZWN0aW9uTm9kZU1v ZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgSm9iU2NoZWR1 bGUgbm9kZSBkZXJpdmVkIGZyb20gQ29sbGVjdGlvbk5vZGVNb2R1bGUuCisK KyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgamlkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBnZW5l cmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5v ZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBmcm9t IGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2Rl LgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ3BnYV9zY2hlZHVsZScK KyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiU2NoZWR1bGVzIikK KworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGppZCk6Cisg ICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0 ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUKKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IERhdGFiYXNl IElkCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRl X2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGppZCkKKworICAgIEBwcm9wZXJ0 eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSB0byBtYWtlIHRoZSBub2Rl IGEgbGVhZiBub2RlLgorCisgICAgICAgIFJldHVybnM6IEZhbHNlIGFzIHRo aXMgaXMgdGhlIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcmV0 dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xv YWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1 bGUgc2NyaXB0IGZvciBsYW5ndWFnZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFi YXNlIG5vZGVzIGFyZSBpbml0aWFsaXplZC4KKworICAgICAgICBSZXR1cm5z OiBub2RlIHR5cGUgb2YgdGhlIHNlcnZlciBtb2R1bGUuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gJ3BnYV9qb2InCisKKworYmx1ZXByaW50ID0g Sm9iU2NoZWR1bGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgSm9iU2No ZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xh c3MgSm9iU2NoZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldykKKworICAgICAg ICBBIHZpZXcgY2xhc3MgZm9yIEpvYlNjaGVkdWxlIG5vZGUgZGVyaXZlZCBm cm9tIFBHQ2hpbGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICBy ZXNwb25zaWJsZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcg bGlrZSB1cGRhdGluZyBsYW5ndWFnZQorICAgICAgICBub2RlLCBzaG93aW5n IHByb3BlcnRpZXMsIHNob3dpbmcgc3FsIGluIHNxbCBwYW5lLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJn cykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg Sm9iU2NoZWR1bGVWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICog bW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChp ZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAg T3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKwor ICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNo ZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5u aW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5h Z2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgor CisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4gdGhhdCBj b2xsZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIGxhbmd1YWdlIG5vZGUuCisKKyAgICAqIHByb3Bl cnRpZXMoZ2lkLCBzaWQsIGppZCwganNjaWQpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3Rl ZCBsYW5ndWFnZSBub2RlCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgamlk LCBqc2NpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0 aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUKKworICAg ICogbXNxbChnaWQsIHNpZCwgamlkLCBqc2NpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRo ZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisgICAgIiIiCisKKyAgICBub2Rl X3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRz ID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAgXQorICAgIGlk cyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdqc2NpZCd9 CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAn b2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdw dXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0Jywg J3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ25vZGVz JzogW3snZ2V0JzogJ25vZGVzJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAg ICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwn fV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdt b2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIF9pbml0XyhzZWxmLCAq Kmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNl ZCB0byBpbml0aWFsaXplIHRoZSBKb2JTY2hlZHVsZVZpZXcgYW5kIGl0cyBi YXNlIHZpZXcuCisgICAgICAgIEluaXRpYWxpemUgYWxsIHRoZSB2YXJpYWJs ZXMgY3JlYXRlL3VzZWQgZHluYW1pY2FsbHkgbGlrZSBjb25uLCB0ZW1wbGF0 ZV9wYXRoLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqKmt3YXJn czoKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxm Lm1hbmFnZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIoSm9iU2NoZWR1bGVW aWV3LCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBtb2R1 bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3Bl cnR5IGRlZmluZXMgd2hldGhlciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhp cyBub2RlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1ha2VfcmVz cG9uc2UoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgInBnYV9zY2hlZHVsZS9qcy9wZ2Ffc2NoZWR1bGUuanMiLAor ICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24v eC1qYXZhc2NyaXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3By ZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVjayB0aGUKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB0aGUgdmlldy4gSXQgYWxzbyBhdHRhY2hlcworICAgICAgICBt YW5hZ2VyLCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhl cmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQg Z2lkLHNpZCxqaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBzZWxmLmRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9E UklWRVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBzZWxmLmRyaXZl ci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAg ICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKCkKKwor ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40JworCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywg Kiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwg amlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRo YXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAiIiIKKyAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVz Wydyb3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2Vs ZiwgZ2lkLCBzaWQsIGppZCwganNjaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFsbCB0 aGUgY2hpbGQgbm9kZXMgd2l0aGluIHRoZSBjb2xsZWN0aW9uLgorICAgICAg ICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg ICAgamlkOiBKb2IgSUQKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtd CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICBqc2NpZCA9IGpzY2lkLAorICAgICAgICAgICAgamlk ID0gamlkCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlc3VsdCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICBpZiBqc2Np ZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyZXN1bHRbJ3Jv d3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShlcnJv cm1zZz0iQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIp CisKKyAgICAgICAgICAgIHJvdyA9IHJlc3VsdFsncm93cyddWzBdCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgK KyAgICAgICAgICAgICAgICAgICAgcm93Wydqc2NpZCddLAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2pzY2pvYmlkJ10sCisgICAgICAgICAgICAgICAg ICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIsCisgICAgICAgICAgICAgICAgICAgIGVu YWJsZWQ9cm93Wydqc2NlbmFibGVkJ10KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICApCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10sCisgICAgICAgICAgICAg ICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAg cm93Wydqc2NuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imlj b24tcGdhX3NjaGVkdWxlIiwKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxl ZD1yb3dbJ2pzY2VuYWJsZWQnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hv dyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAgICAganNjaWQ6IEpvYlNjaGVk dWxlIElECisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZD1q c2NpZCwgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNb J3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKGVycm9y bXNnPSJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIikK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg IHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRh dGEgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9i IElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAg Zm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMo CisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhh c2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAg ICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAg ICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgZmV0Y2hfaWQ9RmFs c2UKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfdm9pZCgnQkVHSU4nKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uY29ubmVjdGVkKCk6 CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmV4ZWN1dGVfdm9pZCgnRU5E JykKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3Zv aWQoJ0VORCcpCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rl cy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZCA9IHJlcywKKyAgICAgICAg ICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJvdyA9IHJl c1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRl X2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10s CisgICAgICAgICAgICAgICAgcm93Wydqc2Nqb2JpZCddLAorICAgICAgICAg ICAgICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgIGljb249 Imljb24tcGdhX3NjaGVkdWxlIgorICAgICAgICAgICAgKQorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShz ZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0 aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAg ICAgICAgICAganNjaWQ6IEpvYlNjaGVkdWxlIElECisgICAgICAgICIiIgor ICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVz dC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMoCisgICAgICAgICAgICAgICAg ICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhhc2F0dHIodiwgJ2RlY29kZScp IGVsc2UgdgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2Vw dCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgZGF0YT1kYXRh CisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX3ZvaWQoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn bm9kZXMuc3FsJ10pLAorICAgICAgICAgICAganNjaWQgPSBqc2NpZCwKKyAg ICAgICAgICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJv dyA9IHJlc1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqc2NpZCdd LAorICAgICAgICAgICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAg ICAgICAgICByb3dbJ2pzY25hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIKKyAgICAgICAgICAgICkKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNl bGYsIGdpZCwgc2lkLCBqaWQsIGpzY2lkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGpp ZDogSm9iIElECisgICAgICAgICAgICBqc2NpZDogSm9iIFNjaGVkdWxlIElE IChvcHRpb25hbCkKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSB7fQor ICAgICAgICBzcWwgPSAnJworICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0 LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0ganNvbi5sb2FkcygKKyAgICAgICAgICAgICAgICAg ICAgdi5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0cih2LCAnZGVjb2RlJykg ZWxzZSB2CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0 IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKwor ICAgICAgICBpZiBqc2NpZCBpcyBOb25lOgorICAgICAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAor ICAgICAgICAgICAgICAgIGZldGNoX2lkPUZhbHNlCisgICAgICAgICAgICAp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgamlk PWppZCwKKyAgICAgICAgICAgICAgICBqc2NpZD1qc2NpZCwKKyAgICAgICAg ICAgICAgICBkYXRhPWRhdGEKKyAgICAgICAgICAgICkKKworICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1z cWwsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworCitK b2JTY2hlZHVsZVZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL3N0YXRpYy9pbWcvY29sbC1w Z2Ffc2NoZWR1bGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3RhdGljL2ltZy9j b2xsLXBnYV9zY2hlZHVsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNDNiMmFlNApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu ZCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvc2NoZWR1bGVzL3N0YXRpYy9pbWcvY29sbC1wZ2Ffc2NoZWR1 bGUucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3Rh dGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3Rh dGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjQyMDMxNzQKQmluYXJ5IGZpbGVzIC9kZXYvbnVs bCBhbmQgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3NjaGVkdWxlcy9zdGF0aWMvaW1nL3BnYV9zY2hlZHVs ZS5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy90ZW1w bGF0ZXMvcGdhX3NjaGVkdWxlL2Nzcy9wZ2Ffc2NoZWR1bGUuY3NzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zY2hlZHVsZXMvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9jc3MvcGdhX3Nj aGVkdWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jNjJiMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMv dGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9jc3MvcGdhX3NjaGVkdWxlLmNzcwpA QCAtMCwwICsxLDcgQEAKKy5pY29uLXBnYV9zY2hlZHVsZSB7CisgIGJhY2tn cm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffc2NoZWR1 bGUuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9wZ2Ffc2NoZWR1bGUucG5nJykg fX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw ZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFs aWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3NjaGVkdWxlcy90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL2pzL3Bn YV9zY2hlZHVsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL3RlbXBsYXRlcy9wZ2Ff c2NoZWR1bGUvanMvcGdhX3NjaGVkdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjc0YzFmZmEKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3NjaGVkdWxlcy90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL2pzL3Bn YV9zY2hlZHVsZS5qcwpAQCAtMCwwICsxLDQ3NSBAQAorZGVmaW5lKFsKKyAg ICAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3BnYWRtaW4nLCAnbW9tZW50JywKKyAgICAgICAgJ3BnYWRtaW4u YnJvd3NlcicsICdhbGVydGlmeScsICdiYWNrZm9ybScsICdwZ2FkbWluLmJh Y2tmb3JtJworICAgICAgICBdLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1p biwgbW9tZW50LCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5LCBCYWNrZm9ybSkgewor CisgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9zY2hlZHVsZSdd KSB7CisgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9zY2hlZHVsZSdd ID0KKyAgICAgIHBnQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAg ICAgIG5vZGU6ICdwZ2Ffc2NoZWR1bGUnLAorICAgICAgICBsYWJlbDogJ3t7 IF8oJ1NjaGVkdWxlcycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtcGdh X3NjaGVkdWxlJywKKyAgICAgICAgY29sdW1uczogWydqc2NpZCcsICdqc2Nu YW1lJywgJ2pzY2VuYWJsZWQnXSwKKyAgICAgICAgaGFzU3RhdGlzdGljczog ZmFsc2UKKyAgICAgIH0pOworICB9CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9k ZXNbJ3BnYV9zY2hlZHVsZSddKSB7CisKKyAgICB2YXIgd2Vla2RheXMgPSBb CisgICAgICAgICAgJ3t7IF8oIlN1bmRheSIpIH19JywgJ3t7IF8oIk1vbmRh eSIpIH19JywgJ3t7IF8oIlR1ZXNkYXkiKSB9fScsCisgICAgICAgICAgJ3t7 IF8oIldlZG5lc2RheSIpIH19JywgJ3t7IF8oIlRodXJzZGF5IikgfX0nLCAn e3sgXygiRnJpZGF5IikgfX0nLAorICAgICAgICAgICd7eyBfKCJTYXR1cmRh eSIpIH19JworICAgICAgICBdLAorICAgICAgICBtb250aGRheXMgPSBbCisg ICAgICAgICAgJ3t7IF8oIjFzdCIpIH19JywgJ3t7IF8oIjJuZCIpIH19Jywg J3t7IF8oIjNyZCIpIH19JywKKyAgICAgICAgICAne3sgXygiNHRoIikgfX0n LCAne3sgXygiNXRoIikgfX0nLCAne3sgXygiNnRoIikgfX0nLAorICAgICAg ICAgICd7eyBfKCI3dGgiKSB9fScsICd7eyBfKCI4dGgiKSB9fScsICd7eyBf KCI5dGgiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjEwdGgiKSB9fScsICd7 eyBfKCIxMXRoIikgfX0nLCAne3sgXygiMTJ0aCIpIH19JywKKyAgICAgICAg ICAne3sgXygiMTN0aCIpIH19JywgJ3t7IF8oIjE0dGgiKSB9fScsICd7eyBf KCIxNXRoIikgfX0nLAorICAgICAgICAgICd7eyBfKCIxNnRoIikgfX0nLCAn e3sgXygiMTd0aCIpIH19JywgJ3t7IF8oIjE4dGgiKSB9fScsCisgICAgICAg ICAgJ3t7IF8oIjE5dGgiKSB9fScsICd7eyBfKCIyMHRoIikgfX0nLCAne3sg XygiMjFzdCIpIH19JywKKyAgICAgICAgICAne3sgXygiMjJuZCIpIH19Jywg J3t7IF8oIjIzcmQiKSB9fScsICd7eyBfKCIyNHRoIikgfX0nLAorICAgICAg ICAgICd7eyBfKCIyNXRoIikgfX0nLCAne3sgXygiMjZ0aCIpIH19JywgJ3t7 IF8oIjI3dGgiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjI4dGgiKSB9fScs ICd7eyBfKCIyOXRoIikgfX0nLCAne3sgXygiMzB0aCIpIH19JywKKyAgICAg ICAgICAne3sgXygiMzFzdCIpIH19JywgJ3t7IF8oIkxhc3QgZGF5IikgfX0n CisgICAgICAgIF0sCisgICAgICAgIG1vbnRocyA9IFsKKyAgICAgICAgICAn e3sgXygiSmFudWFyeSIpIH19JywgJ3t7IF8oIkZlYnJ1YXJ5IikgfX0nLCAn e3sgXygiTWFyY2giKSB9fScsCisgICAgICAgICAgJ3t7IF8oIkFwcmlsIikg fX0nLCAne3sgXygiTWF5IikgfX0nLCAne3sgXygiSnVuZSIpIH19JywKKyAg ICAgICAgICAne3sgXygiSnVseSIpIH19JywgJ3t7IF8oIkF1Z3VzdCIpIH19 JywgJ3t7IF8oIlNlcHRlbWJlciIpIH19JywKKyAgICAgICAgICAne3sgXygi T2N0b2JlciIpIH19JywgJ3t7IF8oIk5vdmVtYmVyIikgfX0nLCAne3sgXygi RGVjZW1iZXIiKSB9fScKKyAgICAgICAgXSwKKyAgICAgICAgaG91cnMgPSBb CisgICAgICAgICAgJ3t7IF8oIjAwIikgfX0nLCAne3sgXygiMDEiKSB9fScs ICd7eyBfKCIwMiIpIH19JywgJ3t7IF8oIjAzIikgfX0nLAorICAgICAgICAg ICd7eyBfKCIwNCIpIH19JywgJ3t7IF8oIjA1IikgfX0nLCAne3sgXygiMDYi KSB9fScsICd7eyBfKCIwNyIpIH19JywKKyAgICAgICAgICAne3sgXygiMDgi KSB9fScsICd7eyBfKCIwOSIpIH19JywgJ3t7IF8oIjEwIikgfX0nLCAne3sg XygiMTEiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjEyIikgfX0nLCAne3sg XygiMTMiKSB9fScsICd7eyBfKCIxNCIpIH19JywgJ3t7IF8oIjE1IikgfX0n LAorICAgICAgICAgICd7eyBfKCIxNiIpIH19JywgJ3t7IF8oIjE3IikgfX0n LCAne3sgXygiMTgiKSB9fScsICd7eyBfKCIxOSIpIH19JywKKyAgICAgICAg ICAne3sgXygiMjAiKSB9fScsICd7eyBfKCIyMSIpIH19JywgJ3t7IF8oIjIy IikgfX0nLCAne3sgXygiMjMiKSB9fScKKyAgICAgICAgXSwKKyAgICAgICAg bWludXRlcyA9IFsKKyAgICAgICAgICAne3sgXygiMDAiKSB9fScsICd7eyBf KCIwMSIpIH19JywgJ3t7IF8oIjAyIikgfX0nLCAne3sgXygiMDMiKSB9fScs CisgICAgICAgICAgJ3t7IF8oIjA0IikgfX0nLCAne3sgXygiMDUiKSB9fScs ICd7eyBfKCIwNiIpIH19JywgJ3t7IF8oIjA3IikgfX0nLAorICAgICAgICAg ICd7eyBfKCIwOCIpIH19JywgJ3t7IF8oIjA5IikgfX0nLCAne3sgXygiMTAi KSB9fScsICd7eyBfKCIxMSIpIH19JywKKyAgICAgICAgICAne3sgXygiMTIi KSB9fScsICd7eyBfKCIxMyIpIH19JywgJ3t7IF8oIjE0IikgfX0nLCAne3sg XygiMTUiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjE2IikgfX0nLCAne3sg XygiMTciKSB9fScsICd7eyBfKCIxOCIpIH19JywgJ3t7IF8oIjE5IikgfX0n LAorICAgICAgICAgICd7eyBfKCIyMCIpIH19JywgJ3t7IF8oIjIxIikgfX0n LCAne3sgXygiMjIiKSB9fScsICd7eyBfKCIyMyIpIH19JywKKyAgICAgICAg ICAne3sgXygiMjQiKSB9fScsICd7eyBfKCIyNSIpIH19JywgJ3t7IF8oIjI2 IikgfX0nLCAne3sgXygiMjciKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjI4 IikgfX0nLCAne3sgXygiMjkiKSB9fScsICd7eyBfKCIzMCIpIH19JywgJ3t7 IF8oIjMxIikgfX0nLAorICAgICAgICAgICd7eyBfKCIzMiIpIH19JywgJ3t7 IF8oIjMzIikgfX0nLCAne3sgXygiMzQiKSB9fScsICd7eyBfKCIzNSIpIH19 JywKKyAgICAgICAgICAne3sgXygiMzYiKSB9fScsICd7eyBfKCIzNyIpIH19 JywgJ3t7IF8oIjM4IikgfX0nLCAne3sgXygiMzkiKSB9fScsCisgICAgICAg ICAgJ3t7IF8oIjQwIikgfX0nLCAne3sgXygiNDEiKSB9fScsICd7eyBfKCI0 MiIpIH19JywgJ3t7IF8oIjQzIikgfX0nLAorICAgICAgICAgICd7eyBfKCI0 NCIpIH19JywgJ3t7IF8oIjQ1IikgfX0nLCAne3sgXygiNDYiKSB9fScsICd7 eyBfKCI0NyIpIH19JywKKyAgICAgICAgICAne3sgXygiNDgiKSB9fScsICd7 eyBfKCI0OSIpIH19JywgJ3t7IF8oIjUwIikgfX0nLCAne3sgXygiNTEiKSB9 fScsCisgICAgICAgICAgJ3t7IF8oIjUyIikgfX0nLCAne3sgXygiNTMiKSB9 fScsICd7eyBfKCI1NCIpIH19JywgJ3t7IF8oIjU1IikgfX0nLAorICAgICAg ICAgICd7eyBfKCI1NiIpIH19JywgJ3t7IF8oIjU3IikgfX0nLCAne3sgXygi NTgiKSB9fScsICd7eyBfKCI1OSIpIH19JworICAgICAgICBdLAorICAgICAg ICBBbnlEYXRldGltZUNlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uTW9tZW50 Q2VsbC5leHRlbmQoeworICAgICAgICAgIGVkaXRvcjogQmFja2dyaWQuRXh0 ZW5zaW9uLkRhdGV0aW1lUGlja2VyRWRpdG9yLAorICAgICAgICAgIHJlbmRl cjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aGlzLiRlbC5lbXB0eSgp OworICAgICAgICAgICAgdmFyIG1vZGVsID0gdGhpcy5tb2RlbDsKKyAgICAg ICAgICAgIHRoaXMuJGVsLnRleHQodGhpcy5mb3JtYXR0ZXIuZnJvbVJhdyht b2RlbC5nZXQodGhpcy5jb2x1bW4uZ2V0KCJuYW1lIikpLCBtb2RlbCkgfHwg J3t7IF8oJzxBbnk+JykgfX0nKTsKKyAgICAgICAgICAgIHRoaXMuZGVsZWdh dGVFdmVudHMoKTsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg ICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgQm9vbGVhbkFycmF5Rm9y bWF0dGVyID0gZnVuY3Rpb24oc2VsZWN0b3IsIGluZGV4ZXMpIHsKKyAgICAg ICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgICBzZWxmLnNlbGVj dG9yID0gc2VsZWN0b3I7CisgICAgICAgICAgc2VsZi5pbmRleGVzID0gaW5k ZXhlczsKKworICAgICAgICAgIHRoaXMuZnJvbVJhdyA9IGZ1bmN0aW9uKHJh d0RhdGEpIHsKKyAgICAgICAgICAgIGlmICghXy5pc0FycmF5KHJhd0RhdGEp KSB7CisgICAgICAgICAgICAgIHJldHVybiByYXdEYXRhOworICAgICAgICAg ICAgfQorCisgICAgICAgICAgICB2YXIgcmVzID0gW10sIGlkeCA9IDAsIHJl c0lkeCA9IFtdOworCisgICAgICAgICAgICBmb3IgKDsgaWR4IDwgcmF3RGF0 YS5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgICAgIGlmICghcmF3RGF0 YVtpZHhdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgICByZXMucHVzaChzZWxmLnNlbGVjdG9yW2lkeF0pOworICAgICAgICAg ICAgICByZXNJZHgucHVzaChpZHggKyAxKTsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXhlcyA/IHJlc0lkeCA6IHJl cy5qb2luKCcsICcpOworICAgICAgICAgIH0KKyAgICAgICAgICB0aGlzLnRv UmF3ID0gZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgaWYgKCFzZWxmLmlu ZGV4ZXMpCisgICAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICAgICAg dmFyIHJlcyA9IFtdLCBpID0gMCwgbCA9IHNlbGYuc2VsZWN0b3IubGVuZ3Ro OworCisgICAgICAgICAgICBmb3IgKDsgaSA8IGw7IGkrKykgeworICAgICAg ICAgICAgICByZXMucHVzaChfLmluZGV4T2YoZCwgU3RyaW5nKGkgKyAxKSkg IT0gLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZS5s b2cocmVzKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAg fQorCisgICAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgICAgIH0sCisgICAg ICAgIEJvb2xlYW5BcnJheU9wdGlvbnMgPSBmdW5jdGlvbihjdHJsKSB7Cisg ICAgICAgICAgdmFyIHNlbGVjdG9yID0gY3RybC5maWVsZC5nZXQoJ3NlbGVj dG9yJyksCisgICAgICAgICAgICAgIHZhbCA9IGN0cmwubW9kZWwuZ2V0KGN0 cmwuZmllbGQuZ2V0KCduYW1lJykpLAorICAgICAgICAgICAgICByZXMgPSBb XTsKKworICAgICAgICAgIGlmIChzZWxlY3RvcikgeworICAgICAgICAgICAg cmVzID0gXy5tYXAoCisgICAgICAgICAgICAgIHNlbGVjdG9yLCBmdW5jdGlv bih2LCBpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHtsYWJlbDogdiwg dmFsdWU6IGkgKyAxLCBzZWxlY3RlZDogdmFsW2ldfTsKKyAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgICB9CisgICAgICAgICAg cmV0dXJuIHJlczsKKyAgICAgICAgfSwKKyAgICAgICAgRXhjZXB0aW9uTW9k ZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICAg IGRlZmF1bHRzOiB7CisgICAgICAgICAgICBqZXhpZDogdW5kZWZpbmVkLAor ICAgICAgICAgICAgamV4ZGF0ZTogbnVsbCwKKyAgICAgICAgICAgIGpleHRp bWU6IG51bGwKKyAgICAgICAgICB9LAorICAgICAgICAgIGlkQXR0cmlidXRl OiAnamV4aWQnLAorICAgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAg IGlkOiAnamV4ZGF0ZScsIHR5cGU6ICd0ZXh0JywgbGFiZWw6ICd7eyBfKCdE YXRlJykgfX0nLAorICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsIHBsYWNl aG9sZGVyOiAne3sgXygnPGFueT4nKSB9fScsCisgICAgICAgICAgICBjZWxs OiBBbnlEYXRldGltZUNlbGwsIG9wdGlvbnM6IHtmb3JtYXQ6ICdZWVlZLU1N LUREJ30sCisgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0OiAnWVlZWS1NTS1E RCcsIG1vZGVsRm9ybWF0OiAnWVlZWS1NTS1ERCcsCisgICAgICAgICAgICBj ZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcsIGFsbG93RW1w dHk6IHRydWUKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnamV4 dGltZScsIHR5cGU6ICd0ZXh0JywgcGxhY2Vob2xkZXI6ICd7eyBfKCc8YW55 PicpIH19JywKKyAgICAgICAgICAgIGxhYmVsOiAne3sgXygnVGltZScpIH19 JywgZWRpdGFibGU6IHRydWUsIGNlbGw6IEFueURhdGV0aW1lQ2VsbCwKKyAg ICAgICAgICAgIG9wdGlvbnM6IHtmb3JtYXQ6ICdISDptbSd9LCBkaXNwbGF5 Rm9ybWF0OiAnSEg6bW0nLAorICAgICAgICAgICAgbW9kZWxGb3JtYXQ6ICdI SDptbTpzcycsIGRpc3BsYXlJblVUQzogZmFsc2UsIGFsbG93RW1wdHk6IHRy dWUsCisgICAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVy Y2VudF81MCcsIG1vZGFsSW5VVEM6IGZhbHNlCisgICAgICAgICAgfV0sCisg ICAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg dmFyIHNlbGYgPSB0aGlzLCBleGNlcHRpb25zID0gdGhpcy5jb2xsZWN0aW9u LAorICAgICAgICAgICAgICAgIGRhdGVzID0ge30sIGVyck1zZywgaGFzRXhj ZXB0aW9uRXJyID0gZmFsc2UsCisgICAgICAgICAgICAgICAgZCA9ICh0aGlz LmdldCgnamV4ZGF0ZScpIHx8ICc8YW55PicpLAorICAgICAgICAgICAgICAg IHQgPSB0aGlzLmdldCgnamV4dGltZScpIHx8ICc8YW55PicsCisgICAgICAg ICAgICAgICAgaWQgPSB0aGlzLmdldCgnamV4aWQnKSB8fCB0aGlzLmNpZDsK KworICAgICAgICAgICAgc2VsZi5lcnJvck1vZGVsLnVuc2V0KCdqc2NkYXRl Jyk7CisgICAgICAgICAgICBpZiAoZCA9PSB0ICYmIGQgPT0gJzxhbnk+Jykg eworICAgICAgICAgICAgICBlcnJNc2cgPSAne3sgXygnUGxlYXNlIHNwZWNp ZnkgZGF0ZS90aW1lLicpIH19JzsKKyAgICAgICAgICAgICAgc2VsZi5lcnJv ck1vZGVsLnNldCgnanNjZGF0ZScsIGVyck1zZyk7CisgICAgICAgICAgICAg IHJldHVybiBlcnJNc2cgOworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICBleGNlcHRpb25zLmVhY2goZnVuY3Rpb24oZXgpIHsKKyAgICAgICAgICAg ICAgaWYgKGhhc0V4Y2VwdGlvbkVyciB8fCBpZCA9PSAoZXguZ2V0KCdqZXhp ZCcpIHx8IGV4LmNpZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg ICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBkID09IChleC5n ZXQoJ2pleGRhdGUnKSB8fCAnPGFueT4nKSAmJgorICAgICAgICAgICAgICAg IHQgPT0gKGV4LmdldCgnamV4dGltZScpIHx8ICc8YW55PicpCisgICAgICAg ICAgICAgICkgeworICAgICAgICAgICAgICAgIGVyck1zZyA9ICd7eyBfKCdQ bGVhc2Ugc3BlY2lmeSB1bmlxdWUgc2V0IG9mIGV4Y2VwdGlvbnMuJykgfX0n OworICAgICAgICAgICAgICAgIGlmIChleC5lcnJvck1vZGVsLmdldCgnanNj ZGF0ZScpICE9IGVyck1zZykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5l cnJvck1vZGVsLnNldCgnanNjZGF0ZScsIGVyck1zZyk7CisgICAgICAgICAg ICAgICAgaGFzRXhjZXB0aW9uRXJyID0gdHJ1ZTsKKyAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHJldHVybiBlcnJN c2c7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgIHBnQnJvd3Nl ci5Ob2Rlc1sncGdhX3NjaGVkdWxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRl bmQoeworICAgICAgcGFyZW50X3R5cGU6ICdwZ2Ffam9iJywKKyAgICAgIHR5 cGU6ICdwZ2Ffc2NoZWR1bGUnLAorICAgICAgaGFzU1FMOiBmYWxzZSwKKyAg ICAgIGhhc0RlcGVuZHM6IGZhbHNlLAorICAgICAgaGFzU3RhdGlzdGljczog ZmFsc2UsCisgICAgICBjYW5Ecm9wOiBmdW5jdGlvbihub2RlKSB7CisgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIGxhYmVsOiAne3sg XygnU2NoZWR1bGUnKSB9fScsCisgICAgICBub2RlX2ltYWdlOiAnaWNvbi1w Z2Ffc2NoZWR1bGUnLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAg ICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAq LworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsK KworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAg bmFtZTogJ2NyZWF0ZV9wZ2Ffc2NoZWR1bGVfb25fam9iJywgbm9kZTogJ3Bn YV9qb2InLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydv YmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3Bl cnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3Jp dHk6IDQsIGxhYmVsOiAne3sgXygnU2NoZWR1bGUuLi4nKSB9fScsCisgICAg ICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXBnYV9zY2hlZHVsZScsIGRh dGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICB9LHsKKyAgICAgICAg ICBuYW1lOiAnY3JlYXRlX3BnYV9zY2hlZHVsZV9vbl9jb2xsJywgbm9kZTog J2NvbGwtcGdhX3NjaGVkdWxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1NjaGVkdWxlLi4u JykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ff c2NoZWR1bGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAg fSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffc2NoZWR1bGUnLCBu b2RlOiAncGdhX3NjaGVkdWxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1NjaGVkdWxlLi4u JykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ff c2NoZWR1bGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAg fV0pOworICAgICAgfSwKKyAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5N b2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAgICAg IGpzY2lkOiBudWxsLAorICAgICAgICAgIGpzY2pvYmlkOiBudWxsLAorICAg ICAgICAgIGpzY25hbWU6ICcnLAorICAgICAgICAgIGpzY2Rlc2M6ICcnLAor ICAgICAgICAgIGpzY2VuYWJsZWQ6IHRydWUsCisgICAgICAgICAganNjc3Rh cnQ6IG51bGwsCisgICAgICAgICAganNjZW5kOiBudWxsLAorICAgICAgICAg IGpzY3dlZWtkYXlzOiBfLm1hcCh3ZWVrZGF5cywgZnVuY3Rpb24oKSB7IHJl dHVybiBmYWxzZTsgfSksCisgICAgICAgICAganNjbW9udGhkYXlzOiBfLm1h cChtb250aGRheXMsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pLAor ICAgICAgICAgIGpzY21vbnRoczogXy5tYXAobW9udGhzLCBmdW5jdGlvbigp IHsgcmV0dXJuIGZhbHNlOyB9KSwKKyAgICAgICAgICBqc2Nob3VyczogXy5t YXAoaG91cnMsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pLAorICAg ICAgICAgIGpzY21pbnV0ZXM6IF8ubWFwKG1pbnV0ZXMsIGZ1bmN0aW9uKCkg eyByZXR1cm4gZmFsc2U7IH0pLAorICAgICAgICAgIGpzY2V4Y2VwdGlvbnM6 IFtdCisgICAgICAgIH0sCisgICAgICAgIGlkQXR0cmlidXRlOiAnanNjaWQn LAorICAgICAgICBwYXJzZTogZnVuY3Rpb24oZCkgeworICAgICAgICAgIGQu anNjZXhjZXB0aW9ucyA9IFtdOworICAgICAgICAgIGlmIChkLmpleGlkICYm IGQuamV4aWQubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgaWR4ID0gMDsK KyAgICAgICAgICAgIGZvciAoOyBpZHggPCBkLmpleGlkLmxlbmd0aDsgaWR4 KyspIHsKKyAgICAgICAgICAgICAgZC5qc2NleGNlcHRpb25zLnB1c2goewor ICAgICAgICAgICAgICAgICdqZXhpZCc6IGQuamV4aWRbaWR4XSwKKyAgICAg ICAgICAgICAgICAnamV4ZGF0ZSc6IGQuamV4ZGF0ZVtpZHhdLAorICAgICAg ICAgICAgICAgICdqZXh0aW1lJzogZC5qZXh0aW1lW2lkeF0KKyAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg ICAgIGRlbGV0ZSBkLmpleGlkOworICAgICAgICAgIGRlbGV0ZSBkLmpleGRh dGU7CisgICAgICAgICAgZGVsZXRlIGQuamV4dGltZTsKKworICAgICAgICAg IHJldHVybiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUucGFyc2Uu YXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgfSwKKyAgICAgICAg c2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnanNjaWQnLCBsYWJlbDogJ3t7 IF8oJ0lEJykgfX0nLCB0eXBlOiAnaW50ZWdlcicsCisgICAgICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUnLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY25h bWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0JywK KyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf NDUnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsgcmV0dXJu IGZhbHNlOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanNjZW5h YmxlZCcsIGxhYmVsOiAne3sgXygnRW5hYmxlZCcpIH19JywgdHlwZTogJ3N3 aXRjaCcsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgeyByZXR1 cm4gZmFsc2U7IH0sCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzUnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anNjc3RhcnQnLCBsYWJlbDogJ3t7IF8oJ1N0YXJ0JykgfX0nLCB0eXBlOiAn dGV4dCcsCisgICAgICAgICAgY29udHJvbDogJ2RhdGV0aW1lcGlja2VyJywg Y2VsbDogJ21vbWVudCcsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u KCkgeyByZXR1cm4gZmFsc2U7IH0sCisgICAgICAgICAgZGlzcGxheUZvcm1h dDogJ1lZWVktTU0tREQgSEg6bW06U1MgWicsCisgICAgICAgICAgbW9kZWxG b3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFonLCBvcHRpb25zOiB7Cisg ICAgICAgICAgICBmb3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFonLAor ICAgICAgICAgIH0sIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2Vu dF8yNScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc2NlbmQnLCBs YWJlbDogJ3t7IF8oJ0VuZCcpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAg ICAgIGNvbnRyb2w6ICdkYXRldGltZXBpY2tlcicsIGNlbGw6ICdtb21lbnQn LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsgcmV0dXJuIGZh bHNlOyB9LCBkaXNwbGF5SW5VVEM6IGZhbHNlLAorICAgICAgICAgIGRpc3Bs YXlGb3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFonLCBvcHRpb25zOiB7 CisgICAgICAgICAgICBmb3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFon LCB1c2VDdXJyZW50OiBmYWxzZQorICAgICAgICAgIH0sIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yNScsCisgICAgICAgICAgbW9kZWxG b3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFonCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnanNjd2Vla2RheXMnLCBsYWJlbDone3sgXygnV2Vl ayBEYXlzJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY29udHJv bDogQmFja2Zvcm0uQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgZm9y bWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKHdlZWtkYXlzLCBm YWxzZSkKKyAgICAgICAgICB9KSwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc2Ntb250aGRheXMnLCBsYWJl bDone3sgXygnTW9udGggRGF5cycpIH19JywgdHlwZTogJ3RleHQnLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wuZXh0ZW5kKHsKKyAg ICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJheUZvcm1hdHRl cihtb250aGRheXMsIGZhbHNlKQorICAgICAgICAgIH0pLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY21v bnRocycsIGxhYmVsOid7eyBfKCdNb250aHMnKSB9fScsIHR5cGU6ICd0ZXh0 JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Db250cm9sLmV4dGVu ZCh7CisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlG b3JtYXR0ZXIobW9udGhzLCBmYWxzZSkKKyAgICAgICAgICB9KSwgbW9kZTog Wydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdq c2Nob3VycycsIGxhYmVsOid7eyBfKCdIb3VycycpIH19JywgdHlwZTogJ3Rl eHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wuZXh0 ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJh eUZvcm1hdHRlcihob3VycywgZmFsc2UpCisgICAgICAgICAgfSksIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anNjbWludXRlcycsIGxhYmVsOid7eyBfKCdNaW51dGVzJykgfX0nLCB0eXBl OiAndGV4dCcsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ29udHJv bC5leHRlbmQoeworICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVh bkFycmF5Rm9ybWF0dGVyKG1pbnV0ZXMsIGZhbHNlKQorICAgICAgICAgIH0p LCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2pzY2V4Y2VwdGlvbnMnLCBsYWJlbDone3sgXygnRXhjZXB0aW9u cycpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJh Y2tmb3JtLkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRl cjogbmV3IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICB0aGlzLmZyb21S YXcgPSBmdW5jdGlvbihyYXdEYXRhKSB7CisgICAgICAgICAgICAgICAgdmFy IHJlcyA9ICcnLCBpZHggPSAwLCBkOworCisgICAgICAgICAgICAgICAgaWYg KCFyYXdEYXRhKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwor ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAoOyBp ZHggPCByYXdEYXRhLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgICAgICAgICAg ICAgIGQgPSByYXdEYXRhW2lkeF07CisgICAgICAgICAgICAgICAgICBpZiAo aWR4KQorICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAnLCAnOworICAg ICAgICAgICAgICAgICAgcmVzICs9ICdbJyArIFN0cmluZygoZC5qZXhkYXRl IHx8ICcnKSArICcgJyArIChkLmpleHRpbWUgfHwgJycpKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpICsgJ10nOworICAgICAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgdGhpcy50b1JhdyA9IGZ1bmN0aW9uKGRhdGEpIHsg cmV0dXJuIGRhdGE7IH0KKworICAgICAgICAgICAgICByZXR1cm4gdGhpczsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgdHlwZTogJ25lc3RlZCcs IGxhYmVsOiAne3sgXygnRGF5cycpIH19JywgZ3JvdXA6ICd7eyBfKCdSZXBl YXQnKSB9fScsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCAnZWRpdCdd LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkZpZWxkc2V0Q29udHJv bC5leHRlbmQoeworICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgdmFyIHJlcyA9IEJhY2tmb3JtLkZpZWxkc2V0Q29u dHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KAorICAgICAgICAgICAgICAg IHRoaXMsIGFyZ3VtZW50cworICAgICAgICAgICAgICApOworCisgICAgICAg ICAgICAgIHRoaXMuJGVsLnByZXBlbmQoCisgICAgICAgICAgICAgICAgJzxk aXYgY2xhc3M9IicgKyBCYWNrZm9ybS5oZWxwTWVzc2FnZUNsYXNzTmFtZSAr ICcgc2V0LWdyb3VwIHBnLWVsLXhzLTEyIj57eyBfKCJTY2hlZHVsZXMgYXJl IHNwZWNpZmllZCB1c2luZyBhIDxiPmNyb24tc3R5bGU8L2I+IGZvcm1hdC48 YnIvPjx1bD48bGk+Rm9yIGVhY2ggc2VsZWN0ZWQgdGltZSBvciBkYXRlIGVs ZW1lbnQsIHRoZSBzY2hlZHVsZSB3aWxsIGV4ZWN1dGUuPGJyLz5lLmcuIFRv IGV4ZWN1dGUgYXQgNSBtaW51dGVzIHBhc3QgZXZlcnkgaG91ciwgc2ltcGx5 IHNlbGVjdCDigJgwNeKAmSBpbiB0aGUgTWludXRlcyBsaXN0IGJveC48YnIv PjwvbGk+PGxpPlZhbHVlcyBmcm9tIG1vcmUgdGhhbiBvbmUgZmllbGQgbWF5 IGJlIHNwZWNpZmllZCBpbiBvcmRlciB0byBmdXJ0aGVyIGNvbnRyb2wgdGhl IHNjaGVkdWxlLjxici8+ZS5nLiBUbyBleGVjdXRlIGF0IDEyOjA1IGFuZCAx NDowNSBldmVyeSBNb25kYXkgYW5kIFRodXJzZGF5LCB5b3Ugd291bGQgY2xp Y2sgbWludXRlIDA1LCBob3VycyAxMiBhbmQgMTQsIGFuZCB3ZWVrZGF5cyBN b25kYXkgYW5kIFRodXJzZGF5LjwvbGk+PGxpPkZvciBhZGRpdGlvbmFsIGZs ZXhpYmlsaXR5LCB0aGUgTW9udGggRGF5cyBjaGVjayBsaXN0IGluY2x1ZGVz IGFuIGV4dHJhIExhc3QgRGF5IG9wdGlvbi4gVGhpcyBtYXRjaGVzIHRoZSBs YXN0IGRheSBvZiB0aGUgbW9udGgsIHdoZXRoZXIgaXQgaGFwcGVucyB0byBi ZSB0aGUgMjh0aCwgMjl0aCwgMzB0aCBvciAzMXN0LjwvbGk+PC91bD4iKSB9 fTwvZGl2PicKKyAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICBy ZXR1cm4gcmVzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pLAorICAg ICAgICAgIHNjaGVtYTpbeworICAgICAgICAgICAgaWQ6ICdqc2N3ZWVrZGF5 cycsIGxhYmVsOid7eyBfKCdXZWVrIERheXMnKSB9fScsIGNlbGw6ICdzZWxl Y3QyJywKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygnRGF5cycpIH19Jywg Y29udHJvbDogJ3NlbGVjdDInLCB0eXBlOiAnYXJyYXknLAorICAgICAgICAg ICAgc2VsZWN0MjogeworICAgICAgICAgICAgICBmaXJzdF9lbXB0eTogZmFs c2UsCisgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLAorICAgICAgICAg ICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgICAgICBwbGFjZWhv bGRlcjogJ3t7IF8oIlNlbGVjdCB0aGUgd2Vla2RheXMuLi4iKSB9fScsCisg ICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICAgICAgICBk cm9wZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0Mi5hbWQucmVxdWlyZSgKKyAg ICAgICAgICAgICAgICAnc2VsZWN0Mi9zZWxlY3RBbGxBZGFwdGVyJworICAg ICAgICAgICAgICApCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2Vs ZWN0b3I6IHdlZWtkYXlzLAorICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcg Qm9vbGVhbkFycmF5Rm9ybWF0dGVyKHdlZWtkYXlzLCB0cnVlKSwKKyAgICAg ICAgICAgIG9wdGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAg ICB9LHsKKyAgICAgICAgICAgIGlkOiAnanNjbW9udGhkYXlzJywgbGFiZWw6 J3t7IF8oJ01vbnRoIERheXMnKSB9fScsIGNlbGw6ICdzZWxlY3QyJywKKyAg ICAgICAgICAgIGdyb3VwOiAne3sgXygnRGF5cycpIH19JywgY29udHJvbDog J3NlbGVjdDInLCB0eXBlOiAnYXJyYXknLAorICAgICAgICAgICAgc2VsZWN0 MjogeworICAgICAgICAgICAgICBmaXJzdF9lbXB0eTogZmFsc2UsCisgICAg ICAgICAgICAgIG11bHRpcGxlOiB0cnVlLAorICAgICAgICAgICAgICBhbGxv d0NsZWFyOiB0cnVlLAorICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7 IF8oIlNlbGVjdCB0aGUgbW9udGggZGF5cy4uLiIpIH19JywKKyAgICAgICAg ICAgICAgd2lkdGg6ICdzdHlsZScsCisgICAgICAgICAgICAgIGRyb3Bkb3du QWRhcHRlcjogJC5mbi5zZWxlY3QyLmFtZC5yZXF1aXJlKAorICAgICAgICAg ICAgICAgICdzZWxlY3QyL3NlbGVjdEFsbEFkYXB0ZXInCisgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmb3JtYXR0ZXI6 IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0ZXIobW9udGhkYXlzLCB0cnVlKSwK KyAgICAgICAgICAgIHNlbGVjdG9yOiBtb250aGRheXMsIG9wdGlvbnM6IEJv b2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAg IGlkOiAnanNjbW9udGhzJywgbGFiZWw6J3t7IF8oJ01vbnRocycpIH19Jywg Y2VsbDogJ3NlbGVjdDInLAorICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdE YXlzJykgfX0nLCBjb250cm9sOiAnc2VsZWN0MicsIHR5cGU6ICdhcnJheScs CisgICAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgICAgIGZpcnN0 X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUs CisgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAg ICAgIHBsYWNlaG9sZGVyOiAne3sgXygiU2VsZWN0IHRoZSBtb250aHMuLi4i KSB9fScsCisgICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAg ICAgICAgICBkcm9wZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0Mi5hbWQucmVx dWlyZSgKKyAgICAgICAgICAgICAgICAnc2VsZWN0Mi9zZWxlY3RBbGxBZGFw dGVyJworICAgICAgICAgICAgICApCisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKG1v bnRocywgdHJ1ZSksCisgICAgICAgICAgICBzZWxlY3RvcjogbW9udGhzLCBv cHRpb25zOiBCb29sZWFuQXJyYXlPcHRpb25zCisgICAgICAgICAgfV0KKyAg ICAgICAgfSx7CisgICAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6 ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnVGltZXMnKSB9fScsCisgICAg ICAgICAgZ3JvdXA6ICd7eyBfKCdSZXBlYXQnKSB9fScsIG1vZGU6IFsnY3Jl YXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAg ICAgIGlkOiAnanNjaG91cnMnLCBsYWJlbDone3sgXygnSG91cnMnKSB9fScs IGNlbGw6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygn VGltZXMnKSB9fScsIGNvbnRyb2w6ICdzZWxlY3QyJywgdHlwZTogJ2FycmF5 JywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgICAgZmly c3RfZW1wdHk6IGZhbHNlLAorICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1 ZSwKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSwKKyAgICAgICAg ICAgICAgcGxhY2Vob2xkZXI6ICd7eyBfKCJTZWxlY3QgdGhlIGhvdXJzLi4u IikgfX0nLAorICAgICAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAg ICAgICAgICAgZHJvcGRvd25BZGFwdGVyOiAkLmZuLnNlbGVjdDIuYW1kLnJl cXVpcmUoCisgICAgICAgICAgICAgICAgJ3NlbGVjdDIvc2VsZWN0QWxsQWRh cHRlcicKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJheUZvcm1hdHRlciho b3VycywgdHJ1ZSksCisgICAgICAgICAgICBzZWxlY3RvcjogaG91cnMsIG9w dGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAnanNjbWludXRlcycsIGxhYmVsOid7eyBfKCdNaW51 dGVzJykgfX0nLCBjZWxsOiAnc2VsZWN0MicsCisgICAgICAgICAgICBncm91 cDogJ3t7IF8oJ1RpbWVzJykgfX0nLCBjb250cm9sOiAnc2VsZWN0MicsIHR5 cGU6ICdhcnJheScsCisgICAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAg ICAgICAgIGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICAgICAgbXVs dGlwbGU6IHRydWUsCisgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUs CisgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygiU2VsZWN0IHRo ZSBtaW51dGVzLi4uIikgfX0nLAorICAgICAgICAgICAgICB3aWR0aDogJ3N0 eWxlJywKKyAgICAgICAgICAgICAgZHJvcGRvd25BZGFwdGVyOiAkLmZuLnNl bGVjdDIuYW1kLnJlcXVpcmUoCisgICAgICAgICAgICAgICAgJ3NlbGVjdDIv c2VsZWN0QWxsQWRhcHRlcicKKyAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJh eUZvcm1hdHRlcihtaW51dGVzLCB0cnVlKSwKKyAgICAgICAgICAgIHNlbGVj dG9yOiBtaW51dGVzLCBvcHRpb25zOiBCb29sZWFuQXJyYXlPcHRpb25zCisg ICAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc2Nl eGNlcHRpb25zJywgdHlwZTogJ2NvbGxlY3Rpb24nLCBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgbGFiZWw6ICIiLCBjYW5FZGl0OiBm YWxzZSwgbW9kZWw6IEV4Y2VwdGlvbk1vZGVsLCBjYW5BZGQ6IHRydWUsCisg ICAgICAgICAgZ3JvdXA6ICd7eyBfKCdFeGNlcHRpb25zJykgfX0nLCBjYW5E ZWxldGU6IHRydWUsCisgICAgICAgICAgY29sczogWydqZXhkYXRlJywgJ2pl eHRpbWUnXSwgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24nCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnanNjZGVzYycsIGxhYmVsOiAne3sg XygnQ29tbWVudCcpIH19JywgdHlwZTogJ211bHRpbGluZScKKyAgICAgICAg fV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAg ICAgICAgdmFyIHZhbCA9IHRoaXMuZ2V0KCdqc2NuYW1lJyksCisgICAgICAg ICAgICAgIGVyck1zZyA9IG51bGw7CisKKyAgICAgICAgICBpZiAoXy5pc1Vu ZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAgICAg IFN0cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycp IHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnTmFtZSBjYW5ub3Qg YmUgZW1wdHkuJykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgnanNjbmFtZScsIG1zZyk7CisgICAgICAgICAgICBlcnJNc2cgPSBt c2c7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC51bnNldCgnanNjbmFtZScpOworICAgICAgICAgIH0KKworICAg ICAgICAgIHZhbCA9IHRoaXMuZ2V0KCdqc2NzdGFydCcpOworICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSB8fAor ICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdQ bGVhc2UgZW50ZXIgdGhlIHN0YXJ0IHRpbWUuJykgfX0nOworICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnanNjc3RhcnQnLCBtc2cpOworICAg ICAgICAgICAgZXJyTXNnID0gZXJyTXNnIHx8IG1zZzsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdq c2NzdGFydCcpOworICAgICAgICAgIH0KKworICAgICAgICAgIHZhbCA9IHRo aXMuZ2V0KCdqc2NlbmQnKTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5l ZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAgICAgIFN0cmlu Zyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnUGxlYXNlIGVudGVyIHRoZSBl bmQgdGltZS4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCdqc2NlbmQnLCBtc2cpOworICAgICAgICAgICAgZXJyTXNnID0gZXJy TXNnIHx8IG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnVuc2V0KCdqc2NlbmQnKTsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICByZXR1cm4gZXJyTXNnOworICAgICAgICB9CisgICAg ICB9KQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rl c1sncGdhX3NjaGVkdWxlJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rh dGljL2ltZy9jb2xsLXBnYV9qb2IucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGF0aWMvaW1nL2Nv bGwtcGdhX2pvYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNzA1ZTIzMwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2IucG5nIGRpZmZlcgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zdGF0aWMvaW1nL3BnYV9qb2ItZGlzYWJsZWQucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC9zdGF0aWMvaW1nL3BnYV9qb2ItZGlzYWJsZWQucG5nCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YmYzZWYKQmluYXJ5IGZp bGVzIC9kZXYvbnVsbCBhbmQgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi1k aXNhYmxlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0YXRpYy9p bWcvcGdhX2pvYi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi5wbmcK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc1NDY3NApC aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RhdGljL2ltZy9w Z2Ffam9iLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvX19p bml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3N0ZXBzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGVkN2EKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3N0ZXBzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNTM2 IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisiIiJJbXBsZW1lbnRzIHBnQWdlbnQgSm9iIFN0ZXAgTm9kZSIiIgorCitp bXBvcnQganNvbgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKK2Zy b20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25z ZSwgcmVxdWVzdAorZnJvbSBmbGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAor ZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVj dGlvbk5vZGVNb2R1bGUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGlt cG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGdvbmUsIFwKKyAgICBtYWtl X3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9l cnJvcgorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2Ry aXZlcgorCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIK KworCitjbGFzcyBKb2JTdGVwTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxl KToKKyAgICAiIiIKKyAgICBjbGFzcyBKb2JTdGVwTW9kdWxlKENvbGxlY3Rp b25Ob2RlTW9kdWxlKQorCisgICAgICAgIEEgbW9kdWxlIGNsYXNzIGZvciBK b2JTdGVwIG5vZGUgZGVyaXZlZCBmcm9tIENvbGxlY3Rpb25Ob2RlTW9kdWxl LgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBnZXRfbm9k ZXMoZ2lkLCBzaWQsIGppZCkKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8g Z2VuZXJhdGUgdGhlIGJyb3dzZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAg KiBub2RlX2lub2RlKCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4g ZnJvbSBpdHMgYmFzZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYg bm9kZS4KKyAgICAiIiIKKworICAgIE5PREVfVFlQRSA9ICdwZ2Ffam9ic3Rl cCcKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiU3RlcHMiKQor CisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAg ICAgICAgIiIiCisgICAgICAgIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRl IHRoZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZQorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVf YnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoamlkKQorCisgICAgQHByb3BlcnR5 CisgICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IHRvIG1ha2UgdGhlIG5vZGUg YSBsZWFmIG5vZGUuCisKKyAgICAgICAgUmV0dXJuczogRmFsc2UgYXMgdGhp cyBpcyB0aGUgbGVhZiBub2RlCisgICAgICAgICIiIgorICAgICAgICByZXR1 cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9h ZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVs ZSBzY3JpcHQgZm9yIGxhbmd1YWdlLCB3aGVuIGFueSBvZiB0aGUgZGF0YWJh c2Ugbm9kZXMgYXJlIGluaXRpYWxpemVkLgorCisgICAgICAgIFJldHVybnM6 IG5vZGUgdHlwZSBvZiB0aGUgc2VydmVyIG1vZHVsZS4KKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiAncGdhX2pvYicKKworCitibHVlcHJpbnQgPSBK b2JTdGVwTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIEpvYlN0ZXBWaWV3 KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xhc3MgSm9iU3Rl cFZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBjbGFz cyBmb3IgSm9iU3RlcCBub2RlIGRlcml2ZWQgZnJvbSBQR0NoaWxkTm9kZVZp ZXcuIFRoaXMgY2xhc3MgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIGFs bCB0aGUgc3R1ZmYgcmVsYXRlZCB0byB2aWV3IGxpa2UgdXBkYXRpbmcgbGFu Z3VhZ2UKKyAgICAgICAgbm9kZSwgc2hvd2luZyBwcm9wZXJ0aWVzLCBzaG93 aW5nIHNxbCBpbiBzcWwgcGFuZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0t LS0tLQorICAgICogX19pbml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhv ZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEpvYlN0ZXBWaWV3IGFuZCBp dCdzIGJhc2Ugdmlldy4KKworICAgICogbW9kdWxlX2pzKCkKKyAgICAgIC0g VGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlzdHMg Zm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0 eSBmb3IgeW91ciBvd24gbG9naWMKKworICAgICogY2hlY2tfcHJlY29uZGl0 aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBh IGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFz ZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxz byBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9w YXRoIHByb3BlcnRpZXMgdG8gc2VsZgorCisgICAgKiBsaXN0KCkKKyAgICAg IC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBsYW5n dWFnZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorCisgICAgKiBu b2RlcygpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRvIGNy ZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlv bi4KKyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIGxhbmd1 YWdlIG5vZGUuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGppZCwg anN0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBw cm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisKKyAg ICAqIHVwZGF0ZShnaWQsIHNpZCwgamlkLCBqc3RpZCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVj dGVkIGxhbmd1YWdlIG5vZGUKKworICAgICogbXNxbChnaWQsIHNpZCwgamlk LCBqc3RpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJl dHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBu b2RlCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9k ZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWworICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lk JzogJ2ppZCd9CisgICAgXQorICAgIGlkcyA9IFsKKyAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdqc3RpZCd9CisgICAgXQorCisgICAgb3BlcmF0 aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAg eydnZXQnOiAncHJvcGVydGllcycsICdwdXQnOiAndXBkYXRlJ30sCisgICAg ICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAg ICAgICAgXSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGVzJ30s IHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6 ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6 IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dCisgICAgfSkKKwor ICAgIGRlZiBfaW5pdF8oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiIK KyAgICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgSm9i U3RlcFZpZXcgYW5kIGl0cyBiYXNlIHZpZXcuCisgICAgICAgIEluaXRpYWxp emUgYWxsIHRoZSB2YXJpYWJsZXMgY3JlYXRlL3VzZWQgZHluYW1pY2FsbHkg bGlrZSBjb25uLCB0ZW1wbGF0ZV9wYXRoLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICAqKmt3YXJnczoKKyAgICAgICAgIiIiCisgICAgICAgIHNl bGYuY29ubiA9IE5vbmUKKyAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0g Tm9uZQorICAgICAgICBzZWxmLm1hbmFnZXIgPSBOb25lCisKKyAgICAgICAg c3VwZXIoSm9iU3RlcFZpZXcsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQor CisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgcHJvcGVydHkgZGVmaW5lcyB3aGV0aGVyIGphdmFzY3JpcHQg ZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICBy ZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAicGdhX2pvYnN0ZXAvanMvcGdhX2pv YnN0ZXAuanMiLAorICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAn YXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgKQorCisgICAg ZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Ig d2hpY2ggd2lsbCBjaGVjayB0aGUKKyAgICAgICAgZGF0YWJhc2UgY29ubmVj dGlvbiBiZWZvcmUgcnVubmluZyB0aGUgdmlldy4gSXQgYWxzbyBhdHRhY2hl cworICAgICAgICBtYW5hZ2VyLCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9w ZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBz KGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAg ICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJn cyB3aWxsIGhvbGQgZ2lkLHNpZCxqaWQKKyAgICAgICAgICAgIHNlbGYgPSBh cmdzWzBdCisgICAgICAgICAgICBzZWxmLmRyaXZlciA9IGdldF9kcml2ZXIo UEdfREVGQVVMVF9EUklWRVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIg PSBzZWxmLmRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQn XSkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25u ZWN0aW9uKCkKKworICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0g J3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQnCisKKyAgICAgICAgICAgIGlmIG5v dCAoJ3BnQWdlbnQnIGluIHNlbGYubWFuYWdlci5kYl9pbmZvKToKKyAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoIiIiCitTRUxFQ1QgRVhJU1RTKAorICAgICAgICBTRUxFQ1QgMSBGUk9N IGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zCisgICAgICAgIFdIRVJFCisg ICAgICAgICAgICB0YWJsZV9zY2hlbWE9J3BnYWdlbnQnIEFORCB0YWJsZV9u YW1lPSdwZ2Ffam9ic3RlcCcgQU5ECisgICAgICAgICAgICBjb2x1bW5fbmFt ZT0nanN0Y29ubnN0cicKKyAgICApIGhhc19jb25uc3RyIiIiKQorCisgICAg ICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXSA9 IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdz LCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lk LCBqaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4g dGhhdCBjb2xsZWN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9iIElECisgICAgICAgICIiIgor ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgaGFzX2Nv bm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nv bm5zdHInXQorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGpp ZCwganN0aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZXMg d2l0aGluIHRoZSBjb2xsZWN0aW9uLgorICAgICAgICBIZXJlIGl0IHdpbGwg Y3JlYXRlIGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBKb2IgSUQK KyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICBq c3RpZCA9IGpzdGlkLAorICAgICAgICAgICAgamlkID0gamlkCisgICAgICAg ICkKKworICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlc3VsdCkKKworICAgICAgICBpZiBqc3RpZCBpcyBub3QgTm9uZToK KyAgICAgICAgICAgIGlmIGxlbihyZXN1bHRbJ3Jvd3MnXSkgPT0gMDoKKyAg ICAgICAgICAgICAgICByZXR1cm4gZ29uZShlcnJvcm1zZz0iQ291bGRuJ3Qg ZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIpCisKKyAgICAgICAgICAg IHJvdyA9IHJlc3VsdFsncm93cyddWzBdCisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHNlbGYuYmx1 ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAg ICAgICAgcm93Wydqc3RpZCddLAorICAgICAgICAgICAgICAgICAgICByb3db J2pzdGpvYmlkJ10sCisgICAgICAgICAgICAgICAgICAgIHJvd1snanN0bmFt ZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2Jz dGVwIiwKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD1yb3dbJ2pzdGVu YWJsZWQnXSwKKyAgICAgICAgICAgICAgICAgICAga2luZD1yb3dbJ2pzdGtp bmQnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg ICAgICBmb3Igcm93IGluIHJlc3VsdFsncm93cyddOgorICAgICAgICAgICAg cmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5n ZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJv d1snanN0aWQnXSwKKyAgICAgICAgICAgICAgICAgICAgcm93Wydqc3Rqb2Jp ZCddLAorICAgICAgICAgICAgICAgICAgICByb3dbJ2pzdG5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wZ2Ffam9ic3RlcCIsCisg ICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ9cm93Wydqc3RlbmFibGVkJ10s CisgICAgICAgICAgICAgICAgICAgIGtpbmQ9cm93Wydqc3RraW5kJ10KKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVz LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwg Z2lkLCBzaWQsIGppZCwganN0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhl IHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAg ICAgICAgIGpzdGlkOiBKb2JTdGVwIElECisgICAgICAgICIiIgorICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisg ICAgICAgICAgICBqc3RpZD1qc3RpZCwKKyAgICAgICAgICAgIGppZD1qaWQs CisgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5m b1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAgICkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgcmV0 dXJuIGdvbmUoZXJyb3Jtc2c9IkNvdWxkbid0IGZpbmQgdGhlIHNwZWNpZmll ZCBqb2Igc3RlcC4iKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBq aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5v ZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEg PSB7fQorICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMo KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRhW2td ID0ganNvbi5sb2FkcygKKyAgICAgICAgICAgICAgICAgICAgdi5kZWNvZGUo J3V0Zi04JykgaWYgaGFzYXR0cih2LCAnZGVjb2RlJykgZWxzZSB2CisgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6 CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKworICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAg IGppZD1qaWQsCisgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAg ICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCdd WydoYXNfY29ubnN0ciddCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICBq c3RpZCA9IHJlcywKKyAgICAgICAgICAgIGppZCA9IGppZAorICAgICAgICAp CisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRh cnJheShzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIHJvdyA9IHJlc1sncm93cyddWzBdCisgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXNl bGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAg ICAgICAgICByb3dbJ2pzdGlkJ10sCisgICAgICAgICAgICAgICAgcm93Wydq c3Rqb2JpZCddLAorICAgICAgICAgICAgICAgIHJvd1snanN0bmFtZSddLAor ICAgICAgICAgICAgICAgIGljb249Imljb24tcGdhX2pvYnN0ZXAiCisgICAg ICAgICAgICApCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1 cGRhdGUgdGhlIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2Rl LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAg ICAgIGppZDogSm9iIElECisgICAgICAgICAgICBqc3RpZDogSm9iU3RlcCBJ RAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBp ZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICAgICAg cmVxdWVzdC5kYXRhLmRlY29kZSgndXRmLTgnKQorICAgICAgICApCisKKyAg ICAgICAgaWYgKAorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLmRiX2luZm9b J3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXSBhbmQKKyAgICAgICAgICAgICdq c3Rjb25udHlwZScgbm90IGluIGRhdGEgYW5kCisgICAgICAgICAgICAoJ2pz dGRibmFtZScgaW4gZGF0YSBvciAnanN0Y29ubnN0cicgaW4gZGF0YSkKKyAg ICAgICAgKToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAganN0aWQ9 anN0aWQsCisgICAgICAgICAgICAgICAgamlkPWppZCwKKyAgICAgICAgICAg ICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2Vu dCddWydoYXNfY29ubnN0ciddCisgICAgICAgICAgICApCisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQor CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICAgICAgICAg IGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgIHJvdyA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICBkYXRhWydq c3Rjb25udHlwZSddID0gcm93Wydqc3Rjb25udHlwZSddCisKKyAgICAgICAg ICAgIGlmIHJvd1snanN0Y29ubnR5cGUnXToKKyAgICAgICAgICAgICAgICBp ZiBub3QgKCdqc3RkYm5hbWUnIGluIGRhdGEpOgorICAgICAgICAgICAgICAg ICAgICBkYXRhWydqc3RkYm5hbWUnXSA9IHJvd1snanN0ZGJuYW1lJ10KKyAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgbm90ICgnanN0 Y29ubnN0cicgaW4gZGF0YSk6CisgICAgICAgICAgICAgICAgICAgIGRhdGFb J2pzdGNvbm5zdHInXSA9IHJvd1snanN0Y29ubnN0ciddCisKKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAg ICAgICBqaWQ9amlkLAorICAgICAgICAgICAganN0aWQ9anN0aWQsCisgICAg ICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICBoYXNfY29ubnN0cj1z ZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0cidd CisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX3ZvaWQoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn bm9kZXMuc3FsJ10pLAorICAgICAgICAgICAganN0aWQgPSBqc3RpZCwKKyAg ICAgICAgICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJv dyA9IHJlc1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqc3RpZCdd LAorICAgICAgICAgICAgICAgIHJvd1snanN0am9iaWQnXSwKKyAgICAgICAg ICAgICAgICByb3dbJ2pzdG5hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9qb2JzdGVwIgorICAgICAgICAgICAgKQorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2Vs ZiwgZ2lkLCBzaWQsIGppZCwganN0aWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlm aWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElE CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgamlk OiBKb2IgSUQKKyAgICAgICAgICAgIGpzdGlkOiBKb2IgU3RlcCBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHt9CisgICAgICAgIHNxbCA9ICcn CisgICAgICAgIGZvciBrLCB2IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgor ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBq c29uLmxvYWRzKAorICAgICAgICAgICAgICAgICAgICB2LmRlY29kZSgndXRm LTgnKSBpZiBoYXNhdHRyKHYsICdkZWNvZGUnKSBlbHNlIHYKKyAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg ICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisgICAgICAgIGlmIGpzdGlk IGlzIE5vbmU6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwK KyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAg aGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsn aGFzX2Nvbm5zdHInXQorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNlbGYubWFuYWdl ci5kYl9pbmZvWydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10gYW5kCisgICAg ICAgICAgICAgICAgJ2pzdGNvbm50eXBlJyBub3QgaW4gZGF0YSBhbmQKKyAg ICAgICAgICAgICAgICAoJ2pzdGRibmFtZScgaW4gZGF0YSBvciAnanN0Y29u bnN0cicgaW4gZGF0YSkKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgIGpzdGlkPWpzdGlkLAorICAg ICAgICAgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgICAgICAg ICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCdd WydoYXNfY29ubnN0ciddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChz cWwpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jv d3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUo CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRo ZSBzcGVjaWZpZWQgam9iIHN0ZXAuIgorICAgICAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg cm93ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICBkYXRhWydq c3Rjb25udHlwZSddID0gcm93Wydqc3Rjb25udHlwZSddCisKKyAgICAgICAg ICAgICAgICBpZiByb3dbJ2pzdGNvbm50eXBlJ106CisgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCAoJ2pzdGRibmFtZScgaW4gZGF0YSk6CisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhWydqc3RkYm5hbWUnXSA9IHJvd1snanN0 ZGJuYW1lJ10KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgICAgICBpZiBub3QgKCdqc3Rjb25uc3RyJyBpbiBkYXRhKToKKyAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFbJ2pzdGNvbm5zdHInXSA9IHJvd1sn anN0Y29ubnN0ciddCisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9 amlkLAorICAgICAgICAgICAgICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAgICAgICBoYXNfY29ubnN0 cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0 ciddCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9c3FsLAorICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIHN0YXRpc3RpY3Moc2VsZiwgZ2lkLCBzaWQsIGpp ZCwganN0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdGlzdGljcwor ICAgICAgICBSZXR1cm5zIHRoZSBzdGF0aXN0aWNzIGZvciBhIHBhcnRpY3Vs YXIgZGF0YWJhc2UgaWYgamlkIGlzIHNwZWNpZmllZCwKKyAgICAgICAgb3Ro ZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHN0YXRpc3RpY3MgZm9yIGFsbCB0aGUg ZGF0YWJhc2VzIGluIHRoYXQKKyAgICAgICAgc2VydmVyLgorICAgICAgICAi IiIKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzdGF0cy5z cWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwganN0aWQ9anN0aWQs IGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICApCisgICAgICAgICkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9 cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKwor Sm9iU3RlcFZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2Jz dGVwLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2Jz dGVwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 MWI4NmE3CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVw cy9zdGF0aWMvaW1nL2NvbGwtcGdhX2pvYnN0ZXAucG5nIGRpZmZlcgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC9zdGVwcy9zdGF0aWMvaW1nL3BnYV9qb2JzdGVwLnBu ZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvc3RlcHMvc3RhdGljL2ltZy9wZ2Ffam9ic3RlcC5wbmcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmODk4YQpCaW5h cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvc3RhdGljL2lt Zy9wZ2Ffam9ic3RlcC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0 ZXBzL3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9jc3MvcGdhX3N0ZXAuY3NzIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvY3NzL3BnYV9zdGVw LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzk2 NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy90ZW1wbGF0ZXMv cGdhX2pvYnN0ZXAvY3NzL3BnYV9zdGVwLmNzcwpAQCAtMCwwICsxLDcgQEAK Ky5pY29uLXBnYV9qb2JzdGVwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJs KCd7eyB1cmxfZm9yKCdOT0RFLXBnYV9qb2JzdGVwLnN0YXRpYycsIGZpbGVu YW1lPSdpbWcvcGdhX2pvYnN0ZXAucG5nJykgfX0nKSAhaW1wb3J0YW50Owor ICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBhbGlnbi1jb250 ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgIGhl aWdodDogMS4zZW07Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3RlbXBs YXRlcy9wZ2Ffam9ic3RlcC9qcy9wZ2Ffam9ic3RlcC5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rl cHMvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL2pzL3BnYV9qb2JzdGVwLmpzCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTc0OTYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3RlbXBsYXRlcy9wZ2Ffam9i c3RlcC9qcy9wZ2Ffam9ic3RlcC5qcwpAQCAtMCwwICsxLDI3NSBAQAorZGVm aW5lKFsKKyAgICAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICAgICAncGdhZG1pbi5i cm93c2VyJywgJ2FsZXJ0aWZ5JywgJ2JhY2tmb3JtJywgJ3BnYWRtaW4uYmFj a2Zvcm0nCisgICAgICAgIF0sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWlu LCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5LCBCYWNrZm9ybSkgeworCisgIGlmICgh cGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9qb2JzdGVwJ10pIHsKKyAgICBw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcGdhX2pvYnN0ZXAnXSA9CisgICAgICBw Z0Jyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAn cGdhX2pvYnN0ZXAnLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ1N0ZXBzJykg fX0nLAorICAgICAgICB0eXBlOiAnY29sbC1wZ2Ffam9ic3RlcCcsCisgICAg ICAgIGNvbHVtbnM6IFsKKyAgICAgICAgICAnanN0aWQnLCAnanN0bmFtZScs ICdqc3RlbmFibGVkJywgJ2pzdGtpbmQnLCAnanN0Y29ubnR5cGUnLAorICAg ICAgICAgICdqc3RvbmVycm9yJworICAgICAgICBdLAorICAgICAgICBoYXNT dGF0aXN0aWNzOiBmYWxzZQorICAgICAgfSk7CisgIH0KKworICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1sncGdhX2pvYnN0ZXAnXSkgeworICAgIHBnQnJvd3Nl ci5Ob2Rlc1sncGdhX2pvYnN0ZXAnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVu ZCh7CisgICAgICBwYXJlbnRfdHlwZTogJ3BnYV9qb2InLAorICAgICAgdHlw ZTogJ3BnYV9qb2JzdGVwJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAg IGhhc0RlcGVuZHM6IGZhbHNlLAorICAgICAgaGFzU3RhdGlzdGljczogdHJ1 ZSwKKyAgICAgIGhhc0NvbGxlY3RpdmVTdGF0aXN0aWNzOiB0cnVlLAorICAg ICAgd2lkdGg6ICc3MCUnLAorICAgICAgaGVpZ2h0OiAnODAlJywKKyAgICAg IGNhbkRyb3A6IGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICB9LAorICAgICAgbGFiZWw6ICd7eyBfKCdTdGVwcycpIH19 JywKKyAgICAgIG5vZGVfaW1hZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICBj b25zb2xlLmxvZyhhcmd1bWVudHMpOworICAgICAgICByZXR1cm4gJ2ljb24t cGdhX2pvYnN0ZXAnOworICAgICAgfSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9u KCkgeworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24g b2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisg ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXpl ZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbewor ICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdhX2pvYnN0ZXBfb25fam9iJywg bm9kZTogJ3BnYV9qb2InLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBw bGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3df b2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRl JywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnSm9iIFN0ZXAuLi4nKSB9 fScsCisgICAgICAgICAgZGF0YTogeydhY3Rpb24nOiAnY3JlYXRlJ30sIGlj b246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffam9ic3RlcCcKKyAgICAgICAgfSx7 CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffam9ic3RlcF9vbl9jb2xs Jywgbm9kZTogJ2NvbGwtcGdhX2pvYnN0ZXAnLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxs YmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnSm9i IFN0ZXAuLi4nKSB9fScsCisgICAgICAgICAgZGF0YTogeydhY3Rpb24nOiAn Y3JlYXRlJ30sIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffam9ic3RlcCcK KyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffam9i c3RlcCcsIG5vZGU6ICdwZ2Ffam9ic3RlcCcsIG1vZHVsZTogdGhpcywKKyAg ICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxi YWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdv cnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdKb2Ig U3RlcC4uLicpIH19JywKKyAgICAgICAgICBkYXRhOiB7J2FjdGlvbic6ICdj cmVhdGUnfSwgaWNvbjogJ3djVGFiSWNvbiBpY29uLXBnYV9qb2JzdGVwJwor ICAgICAgICB9XSk7CisgICAgICB9LAorICAgICAgbW9kZWw6IHBnQnJvd3Nl ci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7Cisg ICAgICAgICAganN0aWQ6IG51bGwsCisgICAgICAgICAganN0am9iaWQ6IG51 bGwsCisgICAgICAgICAganN0bmFtZTogJycsCisgICAgICAgICAganN0ZGVz YzogJycsCisgICAgICAgICAganN0ZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAg ICBqc3RraW5kOiB0cnVlLAorICAgICAgICAgIGpzdGNvbm50eXBlOiB0cnVl LAorICAgICAgICAgIGpzdGNvZGU6ICcnLAorICAgICAgICAgIGpzdGNvbm5z dHI6IG51bGwsCisgICAgICAgICAganN0ZGJuYW1lOiBudWxsLAorICAgICAg ICAgIGpzdG9uZXJyb3I6ICdmJywKKyAgICAgICAgICBqc3RuZXh0cnVuOiAn JworICAgICAgICB9LAorICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUu aW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAg IGlmICh0aGlzLmlzTmV3KCkgJiYgdGhpcy5nZXQoJ2pzdGNvbm50eXBlJykp IHsKKyAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzICYmIGFyZ3Vt ZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXTsKKworICAgICAgICAg ICAgaWYgKGFyZ3MpIHsKKyAgICAgICAgICAgICAgdGhpcy5zZXQoCisgICAg ICAgICAgICAgICAgJ2pzdGRibmFtZScsCisgICAgICAgICAgICAgICAgKGFy Z3NbJ25vZGVfaW5mbyddIHx8IGFyZ3MuY29sbGVjdGlvbi50b3BbJ25vZGVf aW5mbyddKVsnc2VydmVyJ11bJ2RiJ10KKyAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg IGlkQXR0cmlidXRlOiAnanN0aWQnLAorICAgICAgICBzY2hlbWE6IFt7Cisg ICAgICAgICAgaWQ6ICdqc3RpZCcsIGxhYmVsOiAne3sgXygnSUQnKSB9fScs IHR5cGU6ICdpbnRlZ2VyJywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3Nl czogJ3dpZHRoX3BlcmNlbnRfNScsIG1vZGU6IFsncHJvcGVydGllcyddCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0bmFtZScsIGxhYmVsOiAn e3sgXygnTmFtZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICAg ICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNjAnCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZW5hYmxlZCcsIGxhYmVs OiAne3sgXygnRW5hYmxlZCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAg ICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuIGZhbHNlOyB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0a2luZCcsIGxhYmVs OiAne3sgXygnS2luZCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICAg ICAgb3B0aW9uczogeworICAgICAgICAgICAgJ29uVGV4dCc6ICd7eyBfKCdT UUwnKSB9fScsICdvZmZUZXh0JzogJ3t7IF8oJ0JhdGNoJykgfX0nLAorICAg ICAgICAgICAgJ29uQ29sb3InOiAncHJpbWFyeScsICdvZmZDb2xvcic6ICdw cmltYXJ5JworICAgICAgICAgIH0sIGNvbnRyb2w6IEJhY2tmb3JtLlN3aXRj aENvbnRyb2wsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsg cmV0dXJuIGZhbHNlOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anN0Y29ubnR5cGUnLCBsYWJlbDogJ3t7IF8oJ0Nvbm5lY3Rpb24gdHlwZScp IH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZGVwczogWydqc3Rr aW5kJ10sIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5nZXQoJ2pzdGtpbmQnKTsg fSwKKyAgICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAnb25UZXh0 JzogJ3t7IF8oJ0xvY2FsJykgfX0nLCAnb2ZmVGV4dCc6ICd7eyBfKCdSZW1v dGUnKSB9fScsCisgICAgICAgICAgICAnb25Db2xvcic6ICdwcmltYXJ5Jywg J29mZkNvbG9yJzogJ3ByaW1hcnknCisgICAgICAgICAgfQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2pzdGNvbm50eXBlJywgbGFiZWw6ICd7eyBf KCdDb25uZWN0aW9uIHR5cGUnKSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3 aXRjaCcsIGRlcHM6IFsnanN0a2luZCddLCBtb2RlOiBbJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0 dXJuICFtLmdldCgnanN0a2luZCcpOyB9LAorICAgICAgICAgIG9wdGlvbnM6 IHsKKyAgICAgICAgICAgICdvblRleHQnOiAne3sgXygnTG9jYWwnKSB9fScs ICdvZmZUZXh0JzogJ3t7IF8oJ1JlbW90ZScpIH19JywKKyAgICAgICAgICAg ICdvbkNvbG9yJzogJ3ByaW1hcnknLCAnb2ZmQ29sb3InOiAncHJpbWFyeScK KyAgICAgICAgICB9LCBoZWxwTWVzc2FnZTogJ3t7IF8oJ1BsZWFzZSBzZWxl Y3QgdGhlIDxiPkxvY2FsL1JlbW90ZTwvYj4uIFRoaXMgd2lsbCBhbGxvdyB0 byBydW4gdGhpcyBqb2Igc3RlcCBvbiB0aGUgc2FtZSBkYXRhYmFzZSBzZXJ2 ZXIgYnkgc2VsZWN0aW5nIHRoZSBkYXRhYmFzZSwgb3Igb24gYSByZW1vdGUg ZGF0YWJhc2Ugc2VydmVyLCB3aGljaCBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRo ZSBjb25uZWN0aW9uIHN0cmluZy4nKSB9fScKKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqc3RkYm5hbWUnLCBsYWJlbDogJ3t7IF8oJ0RhdGFiYXNl JykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydwcm9w ZXJ0aWVzJ10sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiBmYWxz ZTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGNvbm5zdHIn LCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAg ICAgIGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiBzdHJpbmcnKSB9fScKKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3RkYm5hbWUnLCBsYWJlbDog J3t7IF8oJ0RhdGFiYXNlJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAg ICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgbm9kZTogJ2RhdGFi YXNlJywKKyAgICAgICAgICBjYWNoZV9ub2RlOiAnZGF0YWJhc2UnLCBzZWxl Y3QyOiB7YWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICcnfSwKKyAg ICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg cmV0dXJuICFtLmdldCgnanN0a2luZCcpIHx8ICFtLmdldCgnanN0Y29ubnR5 cGUnKTsKKyAgICAgICAgICB9LCBkZXBzOiBbJ2pzdGtpbmQnLCAnanN0Y29u bnR5cGUnXSwgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAg IGhlbHBNZXNzYWdlOiAne3sgXygnUGxlYXNlIHNlbGVjdCBhIGRhdGFiYXNl IGZyb20gdGhlIGxpc3QuJykgfX0nCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnanN0Y29ubnN0cicsIGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiBz dHJpbmcnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBkZXBzOiBb J2pzdGtpbmQnLCAnanN0Y29ubnR5cGUnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhbS5nZXQoJ2pzdGtpbmQnKSB8 fCBtLmdldCgnanN0Y29ubnR5cGUnKTsKKyAgICAgICAgICB9LCBoZWxwTWVz c2FnZTogUygKKyAgICAgICAgICAgICd7eyBfKCJQbGVhc2Ugc3BlY2lmeSB0 aGUgY29ubmVjdGlvbiBzdHJpbmcgZm9yIHRoZSByZW1vdGUgZGF0YWJhc2Ug c2VydmVyLiBFYWNoIHBhcmFtZXRlciBzZXR0aW5nIGlzIGluIHRoZSBmb3Jt IGtleXdvcmQgPSB2YWx1ZS4gU3BhY2VzIGFyb3VuZCB0aGUgZXF1YWwgc2ln biBhcmUgb3B0aW9uYWwuIFRvIHdyaXRlIGFuIGVtcHR5IHZhbHVlLCBvciBh IHZhbHVlIGNvbnRhaW5pbmcgc3BhY2VzLCBzdXJyb3VuZCBpdCB3aXRoIHNp bmdsZSBxdW90ZXMsIGUuZy4sIGtleXdvcmQgPSBcXCdhIHZhbHVlXFwnLiBT aW5nbGUgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcyB3aXRoaW4gdGhlIHZhbHVl IG11c3QgYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBpLmUuLCBcXFwn IGFuZCBcXFxcLjxicj5SZWZlcmVuY2U6ICVzIikgfX0nCisgICAgICAgICAg KS5zcHJpbnRmKAorICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL2RvY3MvY3VycmVudC9zdGF0aWMvbGlicHEtY29u bmVjdC5odG1sI0xJQlBRLUNPTk5TVFJJTkciIHRhcmdldD0iX2JsYW5rIj5M aWJQUSBjb25uZWN0aW9uIHN0cmluZ3M8L2E+JworICAgICAgICAgICkudmFs dWUoKSwgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnanN0b25lcnJvcicsIGxhYmVsOiAne3sgXygnT24g ZXJyb3InKSB9fScsIGNlbGw6ICdzZWxlY3QyJywKKyAgICAgICAgICBjb250 cm9sOiAnc2VsZWN0MicsIG9wdGlvbnM6IFsKKyAgICAgICAgICAgIHsnbGFi ZWwnOiAne3sgXygiRmFpbCIpIH19JywgJ3ZhbHVlJzogImYifSwKKyAgICAg ICAgICAgIHsnbGFiZWwnOiAne3sgXygiU3VjY2VzcyIpIH19JywgJ3ZhbHVl JzogInMifSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAne3sgXygiSWdub3Jl IikgfX0nLCAndmFsdWUnOiAiaSJ9CisgICAgICAgICAgXSwgc2VsZWN0Mjog e2FsbG93Q2xlYXI6IGZhbHNlfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZGVzYycsIGxhYmVsOiAne3sg XygnQ29tbWVudCcpIH19JywgdHlwZTogJ211bHRpbGluZScKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdqc3Rjb2RlJywgbGFiZWw6ICcnLCBjZWxs OiAnc3RyaW5nJywgZGVwczogWydqc3RraW5kJ10sCisgICAgICAgICAgdHlw ZTogJ3RleHQnLCBjb250cm9sOiAnc3FsLWZpZWxkJywgZ3JvdXA6ICd7eyBf KCdDb2RlJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlNx bEZpZWxkQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgcmVuZGVyOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuZ2V0 KCdqc3RraW5kJykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnNl dCgnbGFiZWwnLCAne3sgXygnU1FMIHF1ZXJ5JykgfX0nKTsKKyAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnNl dCgnbGFiZWwnLCAne3sgXygnU2NyaXB0JykgfX0nKTsKKyAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICByZXR1cm4gQmFja2Zvcm0uU3FsRmllbGRD b250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkoCisgICAgICAgICAgICAg ICAgdGhpcywgYXJndW1lbnRzCisgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICB9CisgICAgICAgICAgfSkKKyAgICAgICAgfV0sCisgICAgICAgIHZh bGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAgICAgICAgdmFyIHZhbCA9 IHRoaXMuZ2V0KCdqc3RuYW1lJyksCisgICAgICAgICAgICAgIGVyck1zZyA9 IG51bGw7CisKKyAgICAgICAgICBpZiAoCisgICAgICAgICAgICBfLmlzVW5k ZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSB8fAorICAgICAgICAgICAg U3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJwor ICAgICAgICAgICkgeworICAgICAgICAgICAgZXJyTXNnID0gJ3t7IF8oJ05h bWUgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2pzdG5hbWUnLCBlcnJNc2cpOworICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQo J2pzdG5hbWUnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHRoaXMu Z2V0KCdqc3RraW5kJykpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmdldCgn anN0Y29ubnR5cGUnKSkgeworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwudW5zZXQoJ2pzdGNvbm5zdHInKTsKKyAgICAgICAgICAgICAgdmFsID0g dGhpcy5nZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgICAgICBpZiAoCisg ICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxs KHZhbCkgfHwKKyAgICAgICAgICAgICAgICAgIFN0cmluZyh2YWwpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycKKyAgICAgICAgICAgICAgKSB7 CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdQbGVhc2Ugc2Vs ZWN0IGEgZGF0YWJhc2UuJykgfX0nOworICAgICAgICAgICAgICAgIGVyck1z ZyA9IGVyck1zZyB8fCBtc2c7CisgICAgICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnNldCgnanN0ZGJuYW1lJywgbXNnKTsKKyAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgICAgICB2YXIgbXNnLAorICAg ICAgICAgICAgICAgIHIgPSAvXHMqXGIoXHcrKVxzKj1ccyooJyhbXidcXF0q KD86XFwuW14nXFxdKikqKSd8XHcqKS9nOworICAgICAgICAgICAgICB2YWwg PSB0aGlzLmdldCgnanN0Y29ubnN0cicpOworICAgICAgICAgICAgICBpZiAo CisgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNO dWxsKHZhbCkgfHwKKyAgICAgICAgICAgICAgICAgIFN0cmluZyh2YWwpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycKKyAgICAgICAgICAgICAg KSB7CisgICAgICAgICAgICAgICAgbXNnID0gICd7eyBfKCJQbGVhc2UgZW50 ZXIgYSBjb25uZWN0aW9uIHN0cmluZy4iKSB9fSc7CisgICAgICAgICAgICAg IH0gZWxzZSBpZiAoU3RyaW5nKHZhbCkucmVwbGFjZShyLCAnJykgIT0gJycp IHsKKyAgICAgICAgICAgICAgICBtc2cgPSAne3sgXygiUGxlYXNlIGVudGVy IGEgdmFsaWQgY29ubmVjdGlvbiBzdHJpbmcuIikgfX0nOworICAgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBtLAorICAgICAg ICAgICAgICAgICAgICBwYXJhbXMgPSB7CisgICAgICAgICAgICAgICAgICAg ICAgJ2hvc3QnOiB0cnVlLCAnaG9zdGFkZHInOiB0cnVlLCAncG9ydCc6IHRy dWUsCisgICAgICAgICAgICAgICAgICAgICAgJ2RibmFtZSc6IHRydWUsICd1 c2VyJzogdHJ1ZSwgJ3Bhc3N3b3JkJzogdHJ1ZSwKKyAgICAgICAgICAgICAg ICAgICAgICAnY29ubmVjdF90aW1lb3V0JzogdHJ1ZSwgJ2NsaWVudF9lbmNv ZGluZyc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0 aW9uX25hbWUnOiB0cnVlLCAnb3B0aW9ucyc6IHRydWUsCisgICAgICAgICAg ICAgICAgICAgICAgJ2ZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUnOiB0cnVl LCAnc3NsbW9kZSc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ3Nz bGNlcnQnOiB0cnVlLCAnc3Nsa2V5JzogdHJ1ZSwgJ3NzbHJvb3RjZXJ0Jzog dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnc3NsY3JsJzogdHJ1ZSwg J2tlZXBhbGl2ZXMnOiB0cnVlLCAnc2VydmljZSc6IHRydWUsCisgICAgICAg ICAgICAgICAgICAgICAgJ2tlZXBhbGl2ZXNfaWRsZSc6IHRydWUsICdrZWVw YWxpdmVzX2ludGVydmFsJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAna2VlcGFsaXZlc19jb3VudCc6IHRydWUsICdzc2xjb21wcmVzc2lvbic6 IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVwZWVyJzog dHJ1ZSwgJ2tyYnNydm5hbWUnOiB0cnVlLCAnZ3NzbGliJzogdHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIHdoaWxl KChtID0gci5leGVjKHZhbCkpKSB7CisgICAgICAgICAgICAgICAgICBpZiAo cGFyYW1zW21bMV1dKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtWzJd KQorICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgICAgICAgICBtc2cgPSAne3sgXygiUGxlYXNlIGVudGVyIGEgdmFsaWQg Y29ubmVjdGlvbiBzdHJpbmcuIikgfX0nOworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgICAgbXNnID0gUygKKyAgICAgICAgICAgICAgICAgICAgJ3t7IF8oIklu dmFsaWQgcGFyYW1ldGVyIGluIHRoZSBjb25uZWN0aW9uIHN0cmluZyAtICVz LiIpIH19JworICAgICAgICAgICAgICAgICAgKS5zcHJpbnRmKG1bMV0pLnZh bHVlKCk7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAo bXNnKSB7CisgICAgICAgICAgICAgICAgZXJyTXNnID0gZXJyTXNnIHx8IG1z ZzsKKyAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdqc3Rj b25uc3RyJywgbXNnKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2pzdGNvbm5zdHIn KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQo J2pzdGNvbm5zdHInKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51 bnNldCgnanN0ZGJuYW1lJyk7CisgICAgICAgICAgfQorCisgICAgICAgICAg dmFsID0gdGhpcy5nZXQoJ2pzdGNvZGUnKTsKKyAgICAgICAgICBpZiAoCisg ICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFs KSB8fAorICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKSA9PSAnJworICAgICAgICAgICkgeworICAgICAgICAgICAg dmFyIG1zZyA9ICd7eyBfKCdQbGVhc2Ugc3BlY2lmeSBjb2RlIHRvIGV4ZWN1 dGUuJykgfX0nOworICAgICAgICAgICAgZXJyTXNnID0gZXJyTXNnIHx8IG1z ZzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pzdGNvZGUn LCBtc2cpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoJ2pzdGNvZGUnKTsKKyAgICAgICAgICB9CisK KyAgICAgICAgICByZXR1cm4gZXJyTXNnOworICAgICAgICB9CisgICAgICB9 KQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1sn cGdhX2pvYiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9t YWNyb3MvcGdhX2V4Y2VwdGlvbi5tYWNyb3MgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9t YWNyb3MvcGdhX2V4Y2VwdGlvbi5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMzhlZWMyOQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2FfZXhjZXB0aW9uLm1hY3JvcwpA QCAtMCwwICsxLDI0IEBACit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyBUaGlzIHdpbGwgYmUgc3Bl Y2lmaWMgbWFjcm8gZm9yIHBnYV9leGNlcHRpb24uICN9Cit7IyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7 JSBtYWNybyBJTlNFUlQoanNjaWQsIGRhdGEpIC0lfQorLS0gSW5zZXJ0aW5n IGEgc2NoZWR1bGUgZXhjZXB0aW9uIHslIGlmIGpzY2lkICV9KHNjaGVkdWxl OiB7eyBqc2NpZHxxdExpdGVyYWx9fSl7JSBlbmRpZiAlfQorCitJTlNFUlQg SU5UTyBwZ2FnZW50LnBnYV9leGNlcHRpb24gKAorICAgIGpleHNjaWQsIGpl eGRhdGUsIGpleHRpbWUKKykgVkFMVUVTICgKKyAgICB7JSBpZiBqc2NpZCAl fXt7IGpzY2lkfHF0TGl0ZXJhbCB9fXslIGVsc2UgJX1zY2lkeyUgZW5kaWYg JX0sIHslIGlmIGRhdGEuamV4ZGF0ZSAlfXRvX2RhdGUoe3sgZGF0YS5qZXhk YXRlfHF0TGl0ZXJhbCB9fSwgJ01NL0REL1lZWVknKTo6ZGF0ZXslIGVsc2Ug JX1OVUxMOjpkYXRleyUgZW5kaWYgJX0sIHslIGlmIGRhdGEuamV4dGltZSAl fXt7IGRhdGEuamV4dGltZXxxdExpdGVyYWwgfX06OnRpbWUgd2l0aG91dCB0 aW1lIHpvbmV7JSBlbHNlICV9TlVMTDo6dGltZSB3aXRob3V0IHRpbWUgem9u ZXslIGVuZGlmICV9CisKKyk7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3Jv IFVQREFURShqc2NpZCwgZGF0YSkgLSV9CistLSBVcGRhdGluZyBhbiBleGlz dGluZyBzY2hlZHVsZSBleGNlcHRpb24gKGlkOiB7eyBkYXRhLmpleGlkfHF0 TGl0ZXJhbCB9fSwgc2NoZWR1bGU6IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fSkK K1VQREFURSBwZ2FnZW50LnBnYV9leGNlcHRpb24gU0VUCisgICAgeyUgaWYg J2pleGRhdGUnIGluIGRhdGEgJX1qZXhkYXRlPXslIGlmIGRhdGEuamV4ZGF0 ZSAlfXRvX2RhdGUoe3sgZGF0YS5qZXhkYXRlfHF0TGl0ZXJhbCB9fSwgJ01N L0REL1lZWVknKTo6ZGF0ZXslIGVsc2UgJX1OVUxMOjpkYXRleyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGlmICdqZXh0aW1lJyBpbiBkYXRhJX17JSBpZiAn amV4ZGF0ZScgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX1qZXh0aW1lPXslIGlm IGRhdGEuamV4dGltZSAlfXt7IGRhdGEuamV4dGltZXxxdExpdGVyYWwgfX06 OnRpbWUgd2l0aG91dCB0aW1lIHpvbmV7JSBlbHNlICV9TlVMTDo6dGltZSB3 aXRob3V0IHRpbWUgem9uZXslIGVuZGlmICV9eyUgZW5kaWYgJX0KKworV0hF UkUgamV4aWQ9e3sgZGF0YS5qZXhpZHxxdExpdGVyYWwgfX06OmludGVnZXIg QU5EIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcjsKK3sl LSBlbmRtYWNybyAlfQoreyUgbWFjcm8gREVMRVRFKGpzY2lkLCBkYXRhKSAt JX0KKy0tIERlbGV0aW5nIGEgc2NoZWR1bGUgZXhjZXB0aW9uIChpZDoge3sg ZGF0YS5qZXhpZHxxdExpdGVyYWwgfX0sIHNjaGVkdWxlOiB7eyBqc2NpZHxx dExpdGVyYWwgfX0pCitERUxFVEUgRlJPTSBwZ2FnZW50LnBnYV9leGNlcHRp b24gV0hFUkUgamV4aWQ9e3sgZGF0YS5qZXhpZHxxdExpdGVyYWwgfX06Omlu dGVnZXIgQU5EIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6aW50ZWdl cjsKK3slLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZGJmMzE3ZgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MKQEAg LTAsMCArMSw1MSBAQAoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIFRoaXMgd2lsbCBiZSBzcGVjaWZp YyBtYWNybyBmb3IgcGdhX2pvYnN0ZXAuICN9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgbWFjcm8g SU5TRVJUKGhhc19jb25uc3RyLCBqaWQsIGRhdGEpIC0lfQorLS0gSW5zZXJ0 aW5nIGEgc3RlcCAoam9iaWQ6IHt7IGppZHxxdExpdGVyYWwgfX0pCitJTlNF UlQgSU5UTyBwZ2FnZW50LnBnYV9qb2JzdGVwICgKKyAgICBqc3Rqb2JpZCwg anN0bmFtZSwganN0ZW5hYmxlZCwganN0a2luZCwKKyAgICB7JSBpZiBoYXNf Y29ubnN0ciAlfWpzdGNvbm5zdHIsIHslIGVuZGlmICV9anN0ZGJuYW1lLCBq c3RvbmVycm9yLAorICAgIGpzdGNvZGUsIGpzdGRlc2MKKykgVkFMVUVTICgK KyAgICB7JSBpZiBqaWQgJX17eyBqaWR8cXRMaXRlcmFsIH19eyUgZWxzZSAl fWppZHslIGVuZGlmICV9LCB7eyBkYXRhLmpzdG5hbWV8cXRMaXRlcmFsIH19 Ojp0ZXh0LCB7JSBpZiBkYXRhLmpzdGVuYWJsZWQgJX10cnVleyUgZWxzZSAl fWZhbHNlIHslIGVuZGlmICV9LCB7JSBpZiBkYXRhLmpzdGtpbmQgJX0ncyd7 JSBlbHNlICV9J2IneyUgZW5kaWYgJX06OmNoYXJhY3RlcigxKSwKKyAgICB7 JSBpZiBoYXNfY29ubnN0ciAlfXslIGlmIGRhdGEuanN0Y29ubnR5cGUgJX0n J3slIGVsc2UgJX17eyBkYXRhLmpzdGNvbm5zdHJ8cXRMaXRlcmFsIH19eyUg ZW5kaWYgJX06OnRleHQsIHslIGlmIG5vdCBkYXRhLmpzdGNvbm50eXBlICV9 Jyc6Om5hbWV7JSBlbHNlICV9e3sgZGF0YS5qc3RkYm5hbWV8cXRMaXRlcmFs IH19eyUgZW5kaWYgJX06Om5hbWV7JSBlbHNlICV9e3sgZGF0YS5qc3RkYm5h bWV8cXRMaXRlcmFsIH19OjpuYW1leyUgZW5kaWYgJX0sIHt7IGRhdGEuanN0 b25lcnJvcnxxdExpdGVyYWwgfX06OmNoYXJhY3RlcigxKSwKKyAgICB7eyBk YXRhLmpzdGNvZGV8cXRMaXRlcmFsIH19Ojp0ZXh0LCB7eyBkYXRhLmpzdGRl c2N8cXRMaXRlcmFsIH19Ojp0ZXh0CispIHslIGlmIGppZCAlfVJFVFVSTklO RyBqc3RpZHslIGVuZGlmICV9OworeyUtIGVuZG1hY3JvICV9Cit7JSBtYWNy byBVUERBVEUoaGFzX2Nvbm5zdHIsIGppZCwganN0aWQsIGRhdGEpIC0lfQor LS0gVXBkYXRpbmcgdGhlIGV4aXN0aW5nIHN0ZXAgKGlkOiB7eyBqc3RpZHxx dExpdGVyYWwgfX0gam9iaWQ6IHt7IGppZHxxdExpdGVyYWwgfX0pCitVUERB VEUgcGdhZ2VudC5wZ2Ffam9ic3RlcAorU0VUCisgICAgeyUgaWYgaGFzX2Nv bm5zdHIgJX17JSBpZiAnanN0Y29ubnR5cGUnIGluIGRhdGEgJX17JSBpZiBk YXRhLmpzdGNvbm50eXBlICV9anN0ZGJuYW1lPXt7IGRhdGEuanN0ZGJuYW1l fHF0TGl0ZXJhbCB9fSwganN0Y29ubnN0cj0nJ3slIGVsc2UgJX1qc3RkYm5h bWU9JycsIGpzdGNvbm5zdHI9e3sgZGF0YS5qc3Rjb25uc3RyfHF0TGl0ZXJh bCB9fXslIGVuZGlmICV9eyUgaWYgJ2pzdG5hbWUnIGluIGRhdGEgb3IgJ2pz dGVuYWJsZWQnIGluIGRhdGEgb3IgJ2pzdGRlc2MnIGluIGRhdGEgb3IgJ2pz dG9uZXJyb3InIGluIGRhdGEgb3IgJ2pzdGNvZGUnIGluIGRhdGEgJX0seyUg ZW5kaWYgJX17JSBlbmRpZiAlfXslIGVsc2UgJX17JSBpZiAnanN0ZGJuYW1l JyBpbiBkYXRhICV9anN0ZGJuYW1lPXt7IGRhdGEuanN0ZGJuYW1lfHF0TGl0 ZXJhbCB9fTo6bmFtZXslIGVuZGlmICV9eyUgaWYgJ2pzdG5hbWUnIGluIGRh dGEgb3IgJ2pzdGVuYWJsZWQnIGluIGRhdGEgb3IgJ2pzdGRlc2MnIGluIGRh dGEgb3IgJ2pzdG9uZXJyb3InIGluIGRhdGEgb3IgJ2pzdGNvZGUnIGluIGRh dGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc3RuYW1lJyBp biBkYXRhICAlfQorCisgICAganN0bmFtZT17eyBkYXRhLmpzdG5hbWV8cXRM aXRlcmFsIH19Ojp0ZXh0eyUgaWYgJ2pzdGVuYWJsZWQnIGluIGRhdGEgb3Ig J2pzdGRlc2MnIGluIGRhdGEgb3IgJ2pzdG9uZXJyb3InIGluIGRhdGEgb3Ig J2pzdGNvZGUnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXsl IGlmICdqc3RlbmFibGVkJyBpbiBkYXRhICV9CisKKyAgICBqc3RlbmFibGVk PXslIGlmIGRhdGEuanN0ZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7 JSBlbmRpZiAlfXslIGlmICdqc3RkZXNjJyBpbiBkYXRhIG9yICdqc3RvbmVy cm9yJyBpbiBkYXRhIG9yICdqc3Rjb2RlJyBpbiBkYXRhICV9LHslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiAnanN0ZGVzYycgaW4gZGF0YSAlfQorCisg ICAganN0ZGVzYz17eyBkYXRhLmpzdGRlc2N8cXRMaXRlcmFsIH19eyUgaWYg J2pzdG9uZXJyb3InIGluIGRhdGEgb3IgJ2pzdGNvZGUnIGluIGRhdGEgJX0s eyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc3RvbmVycm9yJyBpbiBk YXRhICV9CisKKyAgICBqc3RvbmVycm9yPXt7IGRhdGEuanN0b25lcnJvcnxx dExpdGVyYWwgfX17JSBpZiAnanN0Y29kZScgaW4gZGF0YSAlfSx7JSBlbmRp ZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzdGNvZGUnIGluIGRhdGEgJX0KKwor ICAgIGpzdGNvZGU9e3sgZGF0YS5qc3Rjb2RlfHF0TGl0ZXJhbCB9fXslIGVu ZGlmICV9CisKK1dIRVJFIGpzdGlkPXt7IGpzdGlkfHF0TGl0ZXJhbCB9fTo6 aW50ZWdlciBBTkQganN0am9iaWQ9e3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50 ZWdlcjsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8gREVMRVRFKGppZCwg anN0aWQpIC0lfQorLS0gRGVsZXRpbmcgYSBzdGVwIChpZDoge3sganN0aWR8 cXRMaXRlcmFsIH19LCBqb2JpZDoge3sgamlkfHF0TGl0ZXJhbCB9fSkKK0RF TEVURSBGUk9NIHBnYWdlbnQucGdhX2pvYnN0ZXAgV0hFUkUganN0aWQ9e3sg anN0aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyIEFORCBqc3Rqb2JpZD17eyBq aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyOworeyUtIGVuZG1hY3JvICV9Cit7 JSBtYWNybyBQUk9QRVJUSUVTKGhhc19jb25uc3RyLCBqaWQsIGpzdGlkKSAt JX0KK1NFTEVDVAorICAgIGpzdGlkLCAganN0am9iaWQsIGpzdG5hbWUsIGpz dGRlc2MsIGpzdGVuYWJsZWQsIGpzdGtpbmQgPSAncyc6OmJwY2hhciBhcyBq c3RraW5kLAorICAgIGpzdGNvZGUsIENBU0UgV0hFTiBqc3RkYm5hbWUgIT0g JycgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EIEFTIGpzdGNvbm50eXBlLAor ICAgIHslIGlmIGhhc19jb25uc3RyICV9anN0Y29ubnN0ciwgeyUgZW5kaWYg JX0ganN0ZGJuYW1lLCBqc3RvbmVycm9yLCBqc2NuZXh0cnVuCitGUk9NCisg ICAgcGdhZ2VudC5wZ2Ffam9ic3RlcAorV0hFUkUKK3slIGlmIGpzdGlkICV9 CisgICAganN0aWQgPSB7eyBqc3RpZHxxdExpdGVyYWwgfX06OmludGVnZXIg QU5ECit7JSBlbmRpZiAlfQorICAgIGpzdGpvYmlkID0ge3sgamlkfHF0TGl0 ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkganN0bmFtZTsKK3slLSBlbmRt YWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvbWFjcm9zL3Bn YV9zY2hlZHVsZS5tYWNyb3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9tYWNyb3MvcGdh X3NjaGVkdWxlLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lOGYxMjljCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1w bGF0ZXMvbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MKQEAgLTAsMCArMSwx MDcgQEAKK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjfQoreyMgVGhpcyB3aWxsIGJlIHNwZWNpZmljIG1hY3Jv IGZvciBwZ2Ffc2NoZWR1bGUuICN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGltcG9ydCAnbWFj cm9zL3BnYV9leGNlcHRpb24ubWFjcm9zJyBhcyBFWENFUFRJT05TICV9Cit7 JSBtYWNybyBJTlNFUlQoamlkLCBkYXRhKSAtJX0KKy0tIEluc2VydGluZyBh IHNjaGVkdWxleyUgaWYgamlkICV9IChqb2JpZDoge3sgamlkfHF0TGl0ZXJh bCB9fSl7JSBlbmRpZiAlfQorCitJTlNFUlQgSU5UTyBwZ2FnZW50LnBnYV9z Y2hlZHVsZSgKKyAgICBqc2Nqb2JpZCwganNjbmFtZSwganNjZGVzYywganNj ZW5hYmxlZCwKKyAgICBqc2NzdGFydCwgeyUgaWYgZGF0YS5qc2NlbmQgJX1q c2NlbmQseyUgZW5kaWYgJX0KKyAgICBqc2NtaW51dGVzLCBqc2Nob3Vycywg anNjd2Vla2RheXMsIGpzY21vbnRoZGF5cywganNjbW9udGhzCispIFZBTFVF UyAoCisgICAgeyUgaWYgamlkICV9e3sgamlkfHF0TGl0ZXJhbCB9fXslIGVs c2UgJX1qaWR7JSBlbmRpZiAlfSwge3sgZGF0YS5qc2NuYW1lfHF0TGl0ZXJh bCB9fTo6dGV4dCwge3sgZGF0YS5qc2NkZXNjfHF0TGl0ZXJhbCB9fTo6dGV4 dCwgeyUgaWYgZGF0YS5qc2NlbmFibGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxz ZXslIGVuZGlmICV9LAorICAgIHt7IGRhdGEuanNjc3RhcnR8cXRMaXRlcmFs IH19Ojp0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUsIHslIGlmIGRhdGEuanNj ZW5kICV9e3sgZGF0YS5qc2NlbmR8cXRMaXRlcmFsIH19Ojp0aW1lc3RhbXAg d2l0aCB0aW1lIHpvbmUseyUgZW5kaWYgJX0KKworICAgIC0tIE1pbnV0ZXMK KyAgICB7eyBkYXRhLmpzY21pbnV0ZXN8cXRMaXRlcmFsIH19Ojpib29sZWFu W10sCisgICAgLS0gSG91cnMKKyAgICB7eyBkYXRhLmpzY2hvdXJzfHF0TGl0 ZXJhbCB9fTo6Ym9vbGVhbltdLAorICAgIC0tIFdlZWsgZGF5cworICAgIHt7 IGRhdGEuanNjd2Vla2RheXN8cXRMaXRlcmFsIH19Ojpib29sZWFuW10sCisg ICAgLS0gTW9udGggZGF5cworICAgIHt7IGRhdGEuanNjbW9udGhkYXlzfHF0 TGl0ZXJhbCB9fTo6Ym9vbGVhbltdLAorICAgIC0tIE1vbnRocworICAgIHt7 IGRhdGEuanNjbW9udGhzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdCispIFJF VFVSTklORyBqc2NpZCBJTlRPIHNjaWQ7eyUgaWYgJ2pzY2V4Y2VwdGlvbnMn IGluIGRhdGEgJX0KK3slIGZvciBleGMgaW4gZGF0YS5qc2NleGNlcHRpb25z ICV9CisKK3t7IEVYQ0VQVElPTlMuSU5TRVJUKE5vbmUsIGV4YykgfX17JSBl bmRmb3IgJX17JSBlbmRpZiAlfQoreyUtIGVuZG1hY3JvICV9Cit7JSBtYWNy byBVUERBVEUoamlkLCBqc2NpZCwgZGF0YSkgLSV9Cit7JSBpZiAnanNjbmFt ZScgaW4gZGF0YSBvciAnanNjZW5hYmxlZCcgaW4gZGF0YSBvciAnanNjZGVz YycgaW4gZGF0YSBvciAnanNjc3RhcnQnIGluIGRhdGEgb3IgJ2pzY2VuZCcg aW4gZGF0YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2Ntb250aHMnIGlu IGRhdGEgb3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5 cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtk YXlzJyBpbiBkYXRhICV9CistLSBVcGRhdGluZyB0aGUgc2NoZWR1bGUgKGlk OiB7eyBqc2NpZHxxdExpdGVyYWwgfX0sIGpvYmlkOiB7eyBqaWR8cXRMaXRl cmFsIH19KQorVVBEQVRFIHBnYWdlbnQucGdhX3NjaGVkdWxlCitTRVR7JSBp ZiAnanNjbmFtZScgaW4gZGF0YSAlfQorCisgICAganNjbmFtZT17eyBkYXRh LmpzY25hbWV8cXRMaXRlcmFsIH19Ojp0ZXh0eyUgaWYgJ2pzY2Rlc2MnIGlu IGRhdGEgb3IgJ2pzY3N0YXJ0JyBpbiBkYXRhIG9yICdqc2NlbmQnIGluIGRh dGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjbW9udGhzJyBpbiBkYXRh IG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Ntb250aGRheXMnIGlu IGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5cycg aW4gZGF0YSBvciAnanNjZW5hYmxlZCcgaW4gZGF0YSAlfSx7JSBlbmRpZiAl fXslIGVuZGlmICV9eyUgaWYgJ2pzY2VuYWJsZWQnIGluIGRhdGEgJX0KKwor ICAgIGpzY2VuYWJsZWQ9eyUgaWYgZGF0YS5qc2NlbmFibGVkICV9dHJ1ZXsl IGVsc2UgJX1mYWxzZXslIGVuZGlmICV9eyUgaWYgJ2pzY2Rlc2MnIGluIGRh dGEgb3IgJ2pzY3N0YXJ0JyBpbiBkYXRhIG9yICdqc2NlbmQnIGluIGRhdGEg b3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjbW9udGhzJyBpbiBkYXRhIG9y ICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Ntb250aGRheXMnIGluIGRh dGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5cycgaW4g ZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY2Rlc2Mn IGluIGRhdGEgJX0KKworICAgIGpzY2Rlc2M9eyUgaWYgZGF0YS5qc2NkZXNj ICV9e3sgZGF0YS5qc2NkZXNjfHF0TGl0ZXJhbCB9fTo6dGV4dHslIGVsc2Ug JX0nJzo6dGV4dHslIGVuZGlmICV9eyUgaWYgJ2pzY3N0YXJ0JyBpbiBkYXRh IG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAn anNjbW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9y ICdqc2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRh IG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVu ZGlmICV9eyUgaWYgJ2pzY3N0YXJ0JyBpbiBkYXRhICV9CisKKyAgICBqc2Nz dGFydD17eyBkYXRhLmpzY3N0YXJ0fHF0TGl0ZXJhbCB9fTo6dGV4dHslIGlm ICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNj bW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdq c2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9y ICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlm ICV9eyUgaWYgJ2pzY2VuZCcgaW4gZGF0YSAlfQorCisgICAganNjZW5kPXsl IGlmIGRhdGEuanNjZW5kICV9e3sgZGF0YS5qc2NlbmR8cXRMaXRlcmFsIH19 Ojp0aW1lc3RhbXB0enslIGVsc2UgJX1OVUxMOjp0aW1lc3RhbXB0enslIGVu ZGlmICV9eyUgaWYgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjbW9udGhzJyBp biBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Ntb250aGRh eXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVr ZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYg J2pzY21vbnRocycgaW4gZGF0YSAlfQorCisgICAganNjbW9udGhzPXt7IGRh dGEuanNjbW9udGhzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdeyUgaWYgJ2pz Y21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5cycgaW4gZGF0YSBv ciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtkYXlzJyBpbiBkYXRh ICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanNjbWludXRlcycg aW4gZGF0YSAlfQorCisgICAganNjbWludXRlcz17eyBkYXRhLmpzY21pbnV0 ZXN8cXRMaXRlcmFsIH19Ojpib29sZWFuW117JSBpZiAnanNjbW9udGhkYXlz JyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNjd2Vla2Rh eXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdq c2Ntb250aGRheXMnIGluIGRhdGEgJX0KKworICAgIGpzY21vbnRoZGF5cz17 eyBkYXRhLmpzY21vbnRoZGF5c3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXXsl IGlmICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNjd2Vla2RheXMnIGluIGRh dGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc2Nob3Vycycg aW4gZGF0YSAlfQorCisgICAganNjaG91cnM9e3sgZGF0YS5qc2Nob3Vyc3xx dExpdGVyYWwgfX06OmJvb2xlYW5bXXslIGlmICdqc2N3ZWVrZGF5cycgaW4g ZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY3dlZWtk YXlzJyBpbiBkYXRhICV9CisKKyAgICBqc2N3ZWVrZGF5cz17eyBkYXRhLmpz Y3dlZWtkYXlzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdeyUgZW5kaWYgJX0K KworV0hFUkUganNjaWQ9e3sganNjaWR8cXRMaXRlcmFsIH19OjppbnRlZ2Vy IEFORCBqc2Nqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyO3sl IGVuZGlmICV9eyUgaWYgJ2pzY2V4Y2VwdGlvbnMnIGluIGRhdGEgJX0KK3sl IGlmICdhZGRlZCcgaW4gZGF0YS5qc2NleGNlcHRpb25zIGFuZCBkYXRhLmpz Y2V4Y2VwdGlvbnMuYWRkZWR8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgZXhj IGluIGRhdGEuanNjZXhjZXB0aW9ucy5hZGRlZCAlfQore3sgRVhDRVBUSU9O Uy5JTlNFUlQoanNjaWQsIGV4YykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMg YW5kIGRhdGEuanNjZXhjZXB0aW9ucy5kZWxldGVkfGxlbmd0aCA+IDAgJX0K KworeyUgZm9yIGV4YyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMuZGVsZXRlZCAl fQore3sgRVhDRVBUSU9OUy5ERUxFVEUoanNjaWQsIGV4YykgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRh LmpzY2V4Y2VwdGlvbnMgYW5kIGRhdGEuanNjZXhjZXB0aW9ucy5jaGFuZ2Vk fGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIGV4YyBpbiBkYXRhLmpzY2V4Y2Vw dGlvbnMuY2hhbmdlZCAlfQore3sgRVhDRVBUSU9OUy5VUERBVEUoanNjaWQs IGV4YykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3JvIERFTEVURShqaWQsIGpz Y2lkKSAtJX0KKy0tIFJlbW92aW5nIHRoZSBleGlzdGluZyBzY2hlZHVsZSAo aWQ6IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fSwgam9iaWQ6IHt7IGppZHxxdExp dGVyYWwgfX0pCitERUxFVEUgRlJPTSBwZ2FnZW50LnBnYV9zY2hlZHVsZSBX SEVSRSBqc2NpZD17eyBqc2NpZHxxdExpdGVyYWwgfX06OmludGVnZXIgQU5E IGpzY2pvYmlkPXt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXI7Cit7JS0g ZW5kbWFjcm8gJX0KK3slIG1hY3JvIEZFVENIX0NVUlJFTlQoKSAtJX0KK1NF TEVDVCBqc2NpZCBGUk9NIHBnYWdlbnQucGdhX3NjaGVkdWxlIFdIRVJFIHht aW46OnRleHQgPSAodHhpZF9jdXJyZW50KCkgJSAoMl4zMik6OmJpZ2ludCk6 OnRleHQ7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3JvIFBST1BFUlRJRVMo amlkLCBqc2NpZCkgLSV9CitTRUxFQ1QKKyAgICBqc2NpZCwgIGpzY2pvYmlk LCBqc2NuYW1lLCBqc2NkZXNjLCBqc2NlbmFibGVkLCBqc2NzdGFydCwganNj ZW5kLAorICAgIGpzY21pbnV0ZXMsIGpzY2hvdXJzLCBqc2N3ZWVrZGF5cywg anNjbW9udGhkYXlzLCBqc2Ntb250aHMsCisgICAgamV4aWQsIGpleGRhdGUs IGpleHRpbWUKK0ZST00KKyAgICBwZ2FnZW50LnBnYV9zY2hlZHVsZSBzCisg ICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBq ZXhzY2lkLCBhcnJheV9hZ2coamV4aWQpIEFTIGpleGlkLCBhcnJheV9hZ2co dG9fY2hhcihqZXhkYXRlLCAnWVlZWS1NTS1ERCcpKSBBUyBqZXhkYXRlLAor ICAgICAgICAgICAgYXJyYXlfYWdnKGpleHRpbWUpIEFTIGpleHRpbWUKKyAg ICAgICAgRlJPTQorICAgICAgICAgICAgcGdhZ2VudC5wZ2FfZXhjZXB0aW9u IGV4CisgICAgICAgIEdST1VQIEJZCisgICAgICAgICAgICBqZXhzY2lkCisg ICAgKSBlIE9OIHMuanNjaWQgPSBlLmpleHNjaWQKK1dIRVJFCit7JSBpZiBq c2NpZCAlfQorICAgcy5qc2NpZCA9IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6 aW50ZWdlciBBTkQKK3slIGVuZGlmICV9CisgICBzLmpzY2pvYmlkID0ge3sg amlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkganNjbmFtZTsK K3slLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9jc3MvcGdhX2pvYi5jc3MgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9iL2Nzcy9wZ2Ffam9iLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zNDU2YjQwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYi9jc3MvcGdhX2pvYi5jc3MKQEAgLTAsMCArMSwy OCBAQAorLmljb24tcGdhX2pvYiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVy bCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffam9iLnN0YXRpYycsIGZpbGVuYW1l PSdpbWcvcGdhX2pvYi5wbmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJhY2tn cm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNvbnRlbnQ6IGNl bnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAx LjNlbTsKK30KKworLmljb24tcGdhX2pvYi1kaXNhYmxlZCB7CisgIGJhY2tn cm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffam9iLnN0 YXRpYycsIGZpbGVuYW1lPSdpbWcvcGdhX2pvYi1kaXNhYmxlZC5wbmcnKSB9 fScpICFpbXBvcnRhbnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl YXQ7CisgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxp Z246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxLjNlbTsKK30KKworLnBnLWVsLWNv bnRhaW5lcltlbD1zbV0gLnBnYS1yb3VuZC1ib3JkZXIgeworICBib3JkZXI6 IDFweCBzb2xpZCBkYXJrZ3JheTsKKyAgYm9yZGVyLXJhZGl1czogMTJweDsK K30KKworLnBnLWVsLWNvbnRhaW5lcltlbD1zbV0gLnBnYS1yb3VuZC1ib3Jk ZXIgeworICBtYXJnaW46IDVweDsKK30KKworZGl2W3JvbGU9dGFicGFuZWxd ID4gLnBnYWRtaW4tY29udHJvbC1ncm91cC5mb3JtLWdyb3VwLnBnLWVsLXhz LTEyLmpzY2V4Y2VwdGlvbnMgeworICBtaW4taGVpZ2h0OiA0MDBweDsKK30K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2IvanMvcGdhX2pv Yi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2IvanMvcGdhX2pvYi5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzY5ZTI5Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9qcy9w Z2Ffam9iLmpzCkBAIC0wLDAgKzEsMTYxIEBACitkZWZpbmUoCisgIFsKKyAg ICAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcn LCAncGdhZG1pbicsCisgICAgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlm eScsICdwZ2FkbWluLm5vZGUucGdhX2pvYnN0ZXAnLAorICAgICdwZ2FkbWlu Lm5vZGUucGdhX3NjaGVkdWxlJworICBdLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSkgeworCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydjb2xsLXBnYV9qb2InXSkgeworICAgIHZhciBwZ2Ff am9icyA9IHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffam9iJ10gPQorICAg ICAgcGdCcm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9k ZTogJ3BnYV9qb2InLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ3BnYV9qb2Jz JykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1wZ2Ffam9iJywKKyAgICAg ICAgY29sdW1uczogWydqb2JpZCcsICdqb2JuYW1lJywgJ2pvYmVuYWJsZWQn LCAnamxnc3RhdHVzJywgJ2pvYm5leHRydW4nLCAnam9ibGFzdHJ1bicsICdq b2JkZXNjJ10sCisgICAgICAgIGhhc1N0YXRpc3RpY3M6IGZhbHNlCisgICAg ICB9KTsKKyAgfTsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncGdhX2pv YiddKSB7CisgICAgcGdCcm93c2VyLk5vZGVzWydwZ2Ffam9iJ10gPSBwZ0Jy b3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdzZXJ2 ZXInLAorICAgICAgdHlwZTogJ3BnYV9qb2InLAorICAgICAgaGFzU1FMOiB0 cnVlLAorICAgICAgaGFzRGVwZW5kczogZmFsc2UsCisgICAgICBoYXNTdGF0 aXN0aWNzOiB0cnVlLAorICAgICAgaGFzQ29sbGVjdGl2ZVN0YXRpc3RpY3M6 IHRydWUsCisgICAgICB3aWR0aDogJzgwJScsCisgICAgICBoZWlnaHQ6ICc4 MCUnLAorICAgICAgY2FuRHJvcDogZnVuY3Rpb24obm9kZSkgeworICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBsYWJlbDogJ3t7IF8o J3BnQWdlbnQgSm9iJykgfX0nLAorICAgICAgbm9kZV9pbWFnZTogZnVuY3Rp b24oKSB7CisgICAgICAgIHJldHVybiAnaWNvbi1wZ2Ffam9iJzsKKyAgICAg IH0sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZv aWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAg IGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOwor CisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAg IHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX3BnYV9qb2Jfb25fY29sbCcsIG5vZGU6ICdjb2xsLXBnYV9qb2InLCBt b2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAor ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxh YmVsOiAne3sgXygncGdBZ2VudCBKb2IuLi4nKSB9fScsCisgICAgICAgICAg aWNvbjogJ3djVGFiSWNvbiBpY29uLXBnYV9qb2InLCBkYXRhOiB7YWN0aW9u OiAnY3JlYXRlJ30KKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2Ny ZWF0ZV9wZ2Ffam9iJywgbm9kZTogJ3BnYV9qb2InLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn cGdBZ2VudCBKb2IuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFi SWNvbiBpY29uLXBnYV9qb2InLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30K KyAgICAgICAgfV0pOworICAgICAgfSwKKyAgICAgIG1vZGVsOiBwZ0Jyb3dz ZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogewor ICAgICAgICAgIGpvYm5hbWU6ICcnLAorICAgICAgICAgIGpvYmlkOiB1bmRl ZmluZWQsCisgICAgICAgICAgam9iZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAg ICBqb2Job3N0YWdlbnQ6ICcnLAorICAgICAgICAgIGpvYmpjbGlkOiAxLAor ICAgICAgICAgIGpvYmNyZWF0ZWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBq b2JjaGFuZ2VkOiB1bmRlZmluZWQsCisgICAgICAgICAgam9ibmV4dHJ1bjog dW5kZWZpbmVkLAorICAgICAgICAgIGpvYmxhc3RydW46IHVuZGVmaW5lZCwK KyAgICAgICAgICBqbGdzdGF0dXM6IHVuZGVmaW5lZCwKKyAgICAgICAgICBq b2JydW5uaW5nYXQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2JkZXNjOiAn JywKKyAgICAgICAgICBqc3RlcHM6IFtdLAorICAgICAgICAgIGpzY2hlZHVs ZXM6IFtdCisgICAgICAgIH0sCisgICAgICAgIGlkQXR0cmlidXRlOiAnam9i aWQnLAorICAgICAgICBwYXJzZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg dmFyIGQgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUucGFyc2Uu YXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgICAgICAgIGlmIChkKSB7 CisgICAgICAgICAgICBkLmpvYnJ1bm5pbmdhdCA9IGQuamFnaG9zdGFnZW50 IHx8ICJ7eyBfKCdOb3QgcnVubmluZyBjdXJyZW50bHkuJykgfX0iOworICAg ICAgICAgICAgZC5qbGdzdGF0dXMgPSBkLmpsZ3N0YXR1cyB8fCAie3sgXygn VW5rbm93bicpIH19IjsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJu IGQ7CisgICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAg ICBpZDogJ2pvYm5hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5 cGU6ICd0ZXh0JywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMzAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn am9iaWQnLCBsYWJlbDone3sgXygnSUQnKSB9fScsIG1vZGU6IFsncHJvcGVy dGllcyddLAorICAgICAgICAgIHR5cGU6ICdpbnQnCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnam9iZW5hYmxlZCcsIGxhYmVsOid7eyBfKCdFbmFi bGVkJykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAgICAgICAgICBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNScKKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdqb2JjbGFzcycsIGxhYmVsOiAne3sgXygnSm9iIENs YXNzJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydw cm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2Jq Y2xpZCcsIGxhYmVsOiAne3sgXygnSm9iIENsYXNzJykgfX0nLCB0eXBlOiAn aW50ZWdlcicsCisgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRp b25zJywgdXJsOiAnY2xhc3NlcycsIHVybF93aXRoX2lkOiBmYWxzZSwKKyAg ICAgICAgICBjYWNoZV9ub2RlOiAnc2VydmVyJywgbW9kZTogWydjcmVhdGUn LCAnZWRpdCddLAorICAgICAgICAgIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBm YWxzZX0sCisgICAgICAgICAgaGVscE1lc3NhZ2U6ICd7eyBfKCdQbGVhc2Ug c2VsZWN0IG9uZSBvZiB0aGUgY2F0ZWdvcnkuIFRoaXMgd2lsbCBkZWZpbmUg dGhlIHR5cGUgb2YgdGhlIGpvYi4nKSB9fScKKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqb2Job3N0YWdlbnQnLCBsYWJlbDogJ3t7IF8oJ0hvc3Qg QWdlbnQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBtb2RlOiBb J2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgaGVscE1lc3NhZ2U6ICd7 eyBfKCdQbGVhc2Ugc3BlY2lmeSB0aGUgaG9zdG5hbWUgb2YgdGhlIG1hY2hp bmUgb24gd2hpY2ggcGdBZ2VudCBpcyBydW5uaW5nLiBUaGlzIHdpbGwgYWxs b3cgdG8gcnVuIHRoaXMgam9iIG9uIGEgcGFydGljdWxhciBhZ2VudCBvbmx5 LicpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYmhvc3Rh Z2VudCcsIGxhYmVsOiAne3sgXygnSG9zdCBBZ2VudCcpIH19JywgdHlwZTog J3RleHQnLAorICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnam9iY3JlYXRlZCcsIHR5cGU6ICd0 ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgbGFiZWw6 ICd7eyBfKCdDcmVhdGVkJykgfX0nCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnam9iY2hhbmdlZCcsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9w ZXJ0aWVzJ10sCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdDaGFuZ2VkJykg fX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9ibmV4dHJ1bics IHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisgICAgICAg ICAgbGFiZWw6ICd7eyBfKCdOZXh0IHJ1bicpIH19JywgY2VsbEhlYWRlckNs YXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2pvYmxhc3RydW4nLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsn cHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnTGFzdCBy dW4nKSB9fScsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8y MCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqbGdzdGF0dXMnLCB0 eXBlOiAndGV4dCcsIGxhYmVsOiAne3sgXygnTGFzdCByZXN1bHQnKSB9fScs CisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50 XzUnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2pvYnJ1bm5pbmdhdCcsIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdSdW5u aW5nIGF0JykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9i ZGVzYycsIGxhYmVsOid7eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVs dGlsaW5lJywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRo X3BlcmNlbnRfMTUnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0 ZXBzJywgbGFiZWw6ICcnLCBncm91cDogJ3t7IF8oIlN0ZXBzIikgfX0nLAor ICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgbW9kZTogWydlZGl0Jywg J2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZXNb J3BnYV9qb2JzdGVwJ10ubW9kZWwsIGNhbkVkaXQ6IHRydWUsCisgICAgICAg ICAgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24nLCBjYW5BZGQ6IHRy dWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjb2x1bW5zOiBbCisg ICAgICAgICAgICAnanN0bmFtZScsICdqc3RlbmFibGVkJywgJ2pzdGtpbmQn LCAnanN0Y29ubnR5cGUnLCAnanN0b25lcnJvcicKKyAgICAgICAgICBdCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnanNjaGVkdWxlcycsIGxhYmVs OiAnJywgZ3JvdXA6ICd7eyBfKCJTY2hlZHVsZXMiKSB9fScsCisgICAgICAg ICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCisgICAgICAgICAgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24n LCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBj YW5FZGl0OiB0cnVlLCBtb2RlbDogcGdCcm93c2VyLk5vZGVzWydwZ2Ffc2No ZWR1bGUnXS5tb2RlbCwKKyAgICAgICAgICBjb2x1bW5zOiBbJ2pzY25hbWUn LCAnanNjZW5hYmxlZCcsICdqc2NzdGFydCcsICdqc2NlbmQnXQorICAgICAg ICB9XSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKKyAg ICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0KCdqb2JuYW1lJyk7CisgICAg ICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkgfHwgXy5pc051bGwobmFt ZSkgfHwKKyAgICAgICAgICAgIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMr fFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0g J3t7IF8oJ05hbWUgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pvYm5hbWUnLCBtc2cpOworICAg ICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdqb2JuYW1lJyk7Cisg ICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9 CisgICAgICB9KQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nl ci5Ob2Rlc1sncGdhX2pvYiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvY3JlYXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQv dGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9jcmVhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZGNmNmYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUz LjQvY3JlYXRlLnNxbApAQCAtMCwwICsxLDMxIEBACit7JSBpbXBvcnQgJ21h Y3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MnIGFzIFNURVAgJX0KK3slIGltcG9y dCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9 CitETyAkJAorREVDTEFSRQorICAgIGppZCBpbnRlZ2VyO3slIGlmICdqc2No ZWR1bGVzJyBpbiBkYXRhIGFuZCBkYXRhLmpzY2hlZHVsZXN8bGVuZ3RoID4g MCAlfQorCisgICAgc2NpZCBpbnRlZ2VyO3slIGVuZGlmICV9CisKK0JFR0lO CistLSBDcmVhdGluZyBhIG5ldyBqb2IKK0lOU0VSVCBJTlRPIHBnYWdlbnQu cGdhX2pvYigKKyAgICBqb2JqY2xpZCwgam9ibmFtZSwgam9iZGVzYywgam9i aG9zdGFnZW50LCBqb2JlbmFibGVkCispIFZBTFVFUyAoCisgICAge3sgZGF0 YS5qb2JqY2xpZHxxdExpdGVyYWwgfX06OmludGVnZXIsIHt7IGRhdGEuam9i bmFtZXxxdExpdGVyYWwgfX06OnRleHQsIHt7IGRhdGEuam9iZGVzY3xxdExp dGVyYWwgfX06OnRleHQsIHt7IGRhdGEuam9iaG9zdGFnZW50fHF0TGl0ZXJh bCB9fTo6dGV4dCwgeyUgaWYgZGF0YS5qb2JlbmFibGVkICV9dHJ1ZXslIGVs c2UgJX1mYWxzZXslIGVuZGlmICV9CisKKykgUkVUVVJOSU5HIGpvYmlkIElO VE8gamlkO3slIGlmICdqc3RlcHMnIGluIGRhdGEgYW5kIGRhdGEuanN0ZXBz fGxlbmd0aCA+IDAgJX0KKworCistLSBTdGVwcworeyUgZm9yIHN0ZXAgaW4g ZGF0YS5qc3RlcHMgJX17eyBTVEVQLklOU0VSVChoYXNfY29ubnN0ciwgTm9u ZSwgc3RlcCkgfX17JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9eyUgaWYgJ2pz Y2hlZHVsZXMnIGluIGRhdGEgYW5kIGRhdGEuanNjaGVkdWxlc3xsZW5ndGgg PiAwICV9CisKKworLS0gU2NoZWR1bGVzCit7JSBmb3Igc2NoZWR1bGUgaW4g ZGF0YS5qc2NoZWR1bGVzICV9e3sgU0NIRURVTEUuSU5TRVJUKE5vbmUsIHNj aGVkdWxlKSB9fXslIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworRU5ECisk JDt7JSBpZiBmZXRjaF9pZCAlfQorCitTRUxFQ1Qgam9iaWQgRlJPTSBwZ2Fn ZW50LnBnYV9qb2IgV0hFUkUgeG1pbjo6dGV4dCA9ICh0eGlkX2N1cnJlbnQo KSAlICgyXjMyKTo6YmlnaW50KTo6dGV4dDt7JSBlbmRpZiAlfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L2RlbGV0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvZGVs ZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z ZTNjZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdh X2pvYi9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSBAQAorREVM RVRFIEZST00gcGdhZ2VudC5wZ2Ffam9iIFdIRVJFIGpvYmlkID0ge3sgamlk fHF0TGl0ZXJhbCB9fTo6aW50ZWdlcjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9qb2JfY2xhc3Nlcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvam9iX2NsYXNzZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MzE5 MWEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9i L3NxbC9wcmUzLjQvam9iX2NsYXNzZXMuc3FsCkBAIC0wLDAgKzEgQEAKK1NF TEVDVCBqY2xpZCBBUyB2YWx1ZSwgamNsbmFtZSBBUyBsYWJlbCBGUk9NIHBn YWdlbnQucGdhX2pvYmNsYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9iL3NxbC9wcmUzLjQvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvcGdhX2pvYi9zcWwvcHJlMy40L25vZGVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTk2ZWFmCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L25vZGVz LnNxbApAQCAtMCwwICsxLDggQEAKK1NFTEVDVAorICAgIGpvYmlkLCBqb2Ju YW1lLCBqb2JlbmFibGVkCitGUk9NCisgICAgcGdhZ2VudC5wZ2Ffam9iCit7 JSBpZiBqaWQgJX0KK1dIRVJFIGpvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9 fTo6aW50ZWdlcgoreyUgZW5kaWYgJX0KK09SREVSIEJZIGpvYm5hbWU7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQv cHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9w cmUzLjQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDU2ZDgyMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQv dGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNxbApA QCAtMCwwICsxLDIxIEBACitTRUxFQ1QKKyAgICBqLmpvYmlkIEFTIGpvYmlk LCBqLmpvYm5hbWUgYXMgam9ibmFtZSwgai5qb2JlbmFibGVkIGFzIGpvYmVu YWJsZWQsCisgICAgai5qb2JkZXNjIEFTIGpvYmRlc2MsIGouam9iaG9zdGFn ZW50IEFTIGpvYmhvc3RhZ2VudCwKKyAgICBqLmpvYmNyZWF0ZWQgQVMgam9i Y3JlYXRlZCwgai5qb2JjaGFuZ2VkIEFTIGpvYmNoYW5nZWQsCisgICAgYWcu amFnc3RhdGlvbiBBUyBqYWdhZ2VudCwgc3ViLmpsZ3N0YXR1cyBBUyBqbGdz dGF0dXMsCisgICAgai5qb2JhZ2VudGlkIEFTIGpvYmFnZW50aWQsIGouam9i bmV4dHJ1biBBUyBqb2JuZXh0cnVuLAorICAgIGouam9ibGFzdHJ1biBBUyBq b2JsYXN0cnVuLCBqLmpvYmpjbGlkIEFTIGpvYmpjbGlkLAorICAgIGpjLmpj bG5hbWUgQVMgam9iY2xhc3MKK0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2Ig agorICAgIExFRlQgT1VURVIgSk9JTiBwZ2FnZW50LnBnYV9qb2JhZ2VudCBh ZyBPTiBhZy5qYWdwaWQ9am9iYWdlbnRpZAorICAgIExFRlQgT1VURVIgSk9J TiAoCisgICAgICAgIFNFTEVDVCBESVNUSU5DVCBPTiAoamxnam9iaWQpIGps Z3N0YXR1cywgamxnam9iaWQKKyAgICAgICAgRlJPTSBwZ2FnZW50LnBnYV9q b2Jsb2cKKyAgICAgICAgT1JERVIgQlkgamxnam9iaWQsIGpsZ2lkIERFU0MK KyAgICApIHN1YiBPTiBzdWIuamxnam9iaWQgPSBqLmpvYmlkCisgICAgTEVG VCBKT0lOIHBnYWdlbnQucGdhX2pvYmNsYXNzIGpjIE9OIChqLmpvYmpjbGlk ID0gamMuamNsaWQpCit7JSBpZiBqaWQgJX0KK1dIRVJFIGouam9iaWQgPSB7 eyBqaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCit7JSBlbmRpZiAlfQorT1JE RVIgQlkgai5qb2JuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9zcWwvcHJlMy40L3J1bl9ub3cuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3J1bl9ub3cuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjJjYzEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvcnVu X25vdy5zcWwKQEAgLTAsMCArMSwzIEBACitVUERBVEUgcGdhZ2VudC5wZ2Ff am9iCitTRVQgam9ibmV4dHJ1bj1ub3coKTo6dGltZXN0YW1wdHoKK1dIRVJF IGpvYmlkPXt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9zY2hlZHVs ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3Nj aGVkdWxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzcwMGRjZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L3BnYV9qb2Ivc3FsL3ByZTMuNC9zY2hlZHVsZXMuc3FsCkBAIC0wLDAgKzEs MiBAQAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3Jvcycg YXMgU0NIRURVTEUgJX0KK3t7IFNDSEVEVUxFLlBST1BFUlRJRVMoamlkLCBq c2NpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Iv c3FsL3ByZTMuNC9zdGF0cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9i L3NxbC9wcmUzLjQvc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmJlOWY2MWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc3RhdHMuc3FsCkBAIC0w LDAgKzEsMTEgQEAKK1NFTEVDVAorICAgIGpsZ2lkIEFTIHt7IGNvbm58cXRJ ZGVudChfKCdSdW4nKSkgfX0sCisgICAgamxnc3RhdHVzIEFTIHt7IGNvbm58 cXRJZGVudChfKCdTdGF0dXMnKSkgfX0sCisgICAgamxnc3RhcnQgQVMge3sg Y29ubnxxdElkZW50KF8oJ1N0YXJ0IHRpbWUnKSkgfX0sCisgICAgamxnZHVy YXRpb24gQVMge3sgY29ubnxxdElkZW50KF8oJ0R1cmF0aW9uJykpIH19LAor ICAgIChqbGdzdGFydCArIGpsZ2R1cmF0aW9uKSBBUyB7eyBjb25ufHF0SWRl bnQoXygnRW5kIHRpbWUnKSkgfX0KK0ZST00KKyAgICBwZ2FnZW50LnBnYV9q b2Jsb2cKK1dIRVJFCisgICAgamxnam9iaWQgPSB7eyBqaWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyCitPUkRFUiBCWSBqbGdpZCBERVNDOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0ZXBzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9zdGVwcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjM2Vj ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Iv c3FsL3ByZTMuNC9zdGVwcy5zcWwKQEAgLTAsMCArMSwyIEBACit7JSBpbXBv cnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MnIGFzIFNURVAgJX0KK3t7 IFNURVAuUFJPUEVSVElFUyhoYXNfY29ubnN0ciwgamlkLCBqc3RpZCkgfX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMu NC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJl My40L3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDg1NTg0MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC91cGRhdGUuc3FsCkBAIC0wLDAgKzEs MjAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3Jvcycg YXMgU1RFUCAlfQoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1h Y3JvcycgYXMgU0NIRURVTEUgJX0KK3slIGlmICdqb2JqY2xpZCcgaW4gZGF0 YSBvciAnam9ibmFtZScgaW4gZGF0YSBvciAnam9iZGVzYycgaW4gZGF0YSBv ciAnam9iaG9zdGFnZW50JyBpbiBkYXRhIG9yICdqb2JlbmFibGVkJyBpbiBk YXRhICV9CitVUERBVEUgcGdhZ2VudC5wZ2Ffam9iCitTRVQgeyUgaWYgJ2pv YmpjbGlkJyBpbiBkYXRhICV9am9iamNsaWQ9e3sgZGF0YS5qb2JqY2xpZHxx dExpdGVyYWwgfX06OmludGVnZXJ7JSBpZiAnam9ibmFtZScgaW4gZGF0YSBv ciAnam9iZGVzYycgaW4gZGF0YSBvciAnam9iaG9zdGFnZW50JyBpbiBkYXRh IG9yICdqb2JlbmFibGVkJyBpbiBkYXRhICV9LCB7JSBlbmRpZiAlfXslIGVu ZGlmICV9Cit7JSBpZiAnam9ibmFtZScgaW4gZGF0YSAlfWpvYm5hbWU9e3sg ZGF0YS5qb2JuYW1lfHF0TGl0ZXJhbCB9fTo6dGV4dHslaWYgJ2pvYmRlc2Mn IGluIGRhdGEgb3IgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSBvciAnam9iZW5h YmxlZCcgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX17JSBlbmRpZiAlfQoreyUg aWYgJ2pvYmRlc2MnIGluIGRhdGEgJX1qb2JkZXNjPXt7IGRhdGEuam9iZGVz Y3xxdExpdGVyYWwgfX06OnRleHR7JWlmICdqb2Job3N0YWdlbnQnIGluIGRh dGEgb3IgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX0sIHslIGVuZGlmICV9eyUg ZW5kaWYgJX0KK3slaWYgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSAlfWpvYmhv c3RhZ2VudD17eyBkYXRhLmpvYmhvc3RhZ2VudHxxdExpdGVyYWwgfX06OnRl eHR7JSBpZiAnam9iZW5hYmxlZCcgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX17 JSBlbmRpZiAlfQoreyUgaWYgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX1qb2Jl bmFibGVkPXslIGlmIGRhdGEuam9iZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9 ZmFsc2V7JSBlbmRpZiAlfXslIGVuZGlmICV9CisKK1dIRVJFIGpvYmlkID0g e3sgamlkIH19OworeyUgZW5kaWYgJX17JSBpZiAnanN0ZXBzJyBpbiBkYXRh ICV9CisKK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmpzdGVwcyAlfXslIGZv ciBzdGVwIGluIGRhdGEuanN0ZXBzLmRlbGV0ZWQgJX17eyBTVEVQLkRFTEVU RShqaWQsIHN0ZXAuanN0aWQpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0K K3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmpzdGVwcyAlfXslIGZvciBzdGVw IGluIGRhdGEuanN0ZXBzLmNoYW5nZWQgJX17eyBTVEVQLlVQREFURShoYXNf Y29ubnN0ciwgamlkLCBzdGVwLmpzdGlkLCBzdGVwKSB9fXslIGVuZGZvciAl fXslIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuanN0ZXBzICV9 eyUgZm9yIHN0ZXAgaW4gZGF0YS5qc3RlcHMuYWRkZWQgJX17eyBTVEVQLklO U0VSVChoYXNfY29ubnN0ciwgamlkLCBzdGVwKSB9fXslIGVuZGZvciAlfXsl IGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanNjaGVkdWxlcycgaW4gZGF0 YSAlfQorCit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5qc2NoZWR1bGVzICV9 eyUgZm9yIHNjaGVkdWxlIGluIGRhdGEuanNjaGVkdWxlcy5kZWxldGVkICV9 e3sgU0NIRURVTEUuREVMRVRFKGppZCwgc2NoZWR1bGUuanNjaWQpIH19eyUg ZW5kZm9yICV9eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRh LmpzY2hlZHVsZXMgJX17JSBmb3Igc2NoZWR1bGUgaW4gZGF0YS5qc2NoZWR1 bGVzLmNoYW5nZWQgJX17eyBTQ0hFRFVMRS5VUERBVEUoaGFzX2Nvbm5zdHIs IGppZCwgc2NoZWR1bGUuanNjaWQsIHNjaGVkdWxlKSB9fXslIGVuZGZvciAl fXslIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuanNjaGVkdWxl cyAlfXslIGZvciBzY2hlZHVsZSBpbiBkYXRhLmpzY2hlZHVsZXMuYWRkZWQg JX17eyBTQ0hFRFVMRS5JTlNFUlQoaGFzX2Nvbm5zdHIsIGppZCwgc2NoZWR1 bGUpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMu NC9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3Fs L3ByZTMuNC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjRkZDIxNzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2NyZWF0ZS5zcWwKQEAg LTAsMCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5t YWNyb3MnIGFzIFNURVAgJX0KK3t7IFNURVAuSU5TRVJUKGhhc19jb25uc3Ry LCBqaWQsIGRhdGEpIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffam9ic3RlcC9zcWwvcHJlMy40L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkYjFhYwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9w cmUzLjQvZGVsZXRlLnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAn bWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMgU1RFUCAlfQore3sgU1RF UC5ERUxFVEUoamlkLCBqc3RpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvbm9kZXMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9ub2Rlcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNiNmY0Ywot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVw L3NxbC9wcmUzLjQvbm9kZXMuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVD VAorICAgIGpzdGlkLCBqc3Rqb2JpZCwganN0bmFtZSwganN0ZW5hYmxlZCwg anN0a2luZCA9ICdzJzo6YnBjaGFyIEFTIGpzdGtpbmQKK0ZST00KKyAgICBw Z2FnZW50LnBnYV9qb2JzdGVwCitXSEVSRQoreyUgaWYganN0aWQgJX0KKyAg ICBqc3RpZCA9IHt7IGpzdGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQK K3slIGVuZGlmICV9CisgICAganN0am9iaWQgPSB7eyBqaWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyCitPUkRFUiBCWSBqc3RuYW1lOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9wcm9wZXJ0 aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUz LjQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNjBjM2VjZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvcHJvcGVydGllcy5zcWwK QEAgLTAsMCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3Rl cC5tYWNyb3MnIGFzIFNURVAgJX0KK3t7IFNURVAuUFJPUEVSVElFUyhoYXNf Y29ubnN0ciwgamlkLCBqc3RpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvc3RhdHMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9zdGF0cy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJlZTg1NAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVw L3NxbC9wcmUzLjQvc3RhdHMuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK1NFTEVD VAorICAgIGpzbGlkIEFTIHt7IGNvbm58cXRJZGVudChfKCdSdW4nKSkgfX0s CisgICAganNsc3RhdHVzIEFTIHt7IGNvbm58cXRJZGVudChfKCdTdGF0dXMn KSkgfX0sCisgICAganNscmVzdWx0IEFTIHt7IGNvbm58cXRJZGVudChfKCdS ZXN1bHQnKSkgfX0sCisgICAganNsc3RhcnQgQVMge3sgY29ubnxxdElkZW50 KF8oJ1N0YXJ0IHRpbWUnKSkgfX0sCisgICAgKGpzbHN0YXJ0ICsganNsZHVy YXRpb24pIEFTIHt7IGNvbm58cXRJZGVudChfKCdFbmQgdGltZScpKSB9fSwK KyAgICBqc2xkdXJhdGlvbiBBUyB7eyBjb25ufHF0SWRlbnQoXygnRHVyYXRp b24nKSkgfX0sCisgICAganNsb3V0cHV0IEFTIHt7IGNvbm58cXRJZGVudChf KCdPdXRwdXQnKSkgfX0KK0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2JzdGVw bG9nCitXSEVSRQorICAgIGpzbGpzdGlkID0ge3sganN0aWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyCitPUkRFUiBCWSBqc2xpZCBERVNDOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC91cGRh dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMu NC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjMxNjM1NWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3VwZGF0ZS5zcWwKQEAgLTAsMCAr MSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3Mn IGFzIFNURVAgJX0KK3t7IFNURVAuVVBEQVRFKGhhc19jb25uc3RyLCBqaWQs IGpzdGlkLCBkYXRhKSB9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L2NyZWF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmNjU3ZgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9z cWwvcHJlMy40L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxMCBAQAoreyUgaW1w b3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcycgYXMgU0NIRURVTEUg JX0KK0RPICQkCitERUNMQVJFCisgIGpzY2lkIGludGVnZXI7CitCRUdJTgor e3sgU0NIRURVTEUuSU5TRVJUKGppZCwgZGF0YSkgfX0KK0VORAorJCQgTEFO R1VBR0UgJ3BscGdzcWwnO3slIGlmIGZldGNoX2lkICV9CisKK3t7IFNDSEVE VUxFLkZFVENIX0NVUlJFTlQoKSB9fXslIGVuZGlmICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9kZWxl dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUz LjQvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5jZjQzMDcxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvZGVsZXRlLnNxbApAQCAtMCww ICsxLDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNy b3MnIGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVMRS5ERUxFVEUoamlkLCBq c2NpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hl ZHVsZS9zcWwvcHJlMy40L25vZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9zY2hlZHVsZS9zcWwvcHJlMy40L25vZGVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDBmMDgzCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQv bm9kZXMuc3FsCkBAIC0wLDAgKzEsMTEgQEAKK1NFTEVDVAorICAgIGpzY2lk LCBqc2Nqb2JpZCwganNjbmFtZSwganNjZW5hYmxlZAorRlJPTQorICAgIHBn YWdlbnQucGdhX3NjaGVkdWxlCitXSEVSRQoreyUgaWYganNjaWQgJX0KKyAg ICBqc2NpZCA9IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgoreyUg ZWxzZSAlfQorICAgIGpzY2pvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9fTo6 aW50ZWdlcgoreyUgZW5kaWYgJX0KK09SREVSIEJZIGpzY25hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMu NC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjZjYmQ5ZTQKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9wcm9w ZXJ0aWVzLnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAnbWFjcm9z L3BnYV9zY2hlZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hF RFVMRS5QUk9QRVJUSUVTKGppZCwganN0aWQpIH19CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQv dXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5lOGZiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvdXBkYXRlLnNxbApAQCAtMCwwICsx LDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3Mn IGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVMRS5VUERBVEUoamlkLCBqc2Np ZCwgZGF0YSkgfX0K --001a11440d46bd0187053d32b62a Content-Type: application/octet-stream; name="misc_changes_v3.patch" Content-Disposition: attachment; filename="misc_changes_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_itg86or91 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jy b3dzZXIvanMvbm9kZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxh dGVzL2Jyb3dzZXIvanMvbm9kZS5qcwppbmRleCA4MjEzYzc0Li5mZDcwMWUw IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9i cm93c2VyL2pzL25vZGUuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90 ZW1wbGF0ZXMvYnJvd3Nlci9qcy9ub2RlLmpzCkBAIC0zMzAsNiArMzMwLDIw IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIE1lbnUsIEJhY2tib25l LCBBbGVydGlmeSwgcGdCcm93c2VyLCBCYWNrZm9ybSkgewogICAgICAgaWYg KHAgJiYgcC5sZW5ndGggPT0gMSkKICAgICAgICAgcmV0dXJuOwogCisgICAg ICB2YXIgZXZlbnRzID0ge307CisgICAgICBldmVudHNbd2NEb2NrZXIuRVZF TlQuUkVTSVpFX0VOREVEXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg JGNvbnRhaW5lciA9IHRoaXMuJGNvbnRhaW5lci5maW5kKCcub2JqX3Byb3Bl cnRpZXMnKS5maXJzdCgpLAorICAgICAgICAgICAgdiA9ICRjb250YWluZXIu ZGF0YSgnb2JqLXZpZXcnKTsKKworICAgICAgICBpZiAodiAmJiB2Lm1vZGVs ICYmIHYubW9kZWwpIHsKKyAgICAgICAgICB2Lm1vZGVsLnRyaWdnZXIoCisg ICAgICAgICAgICAncGctYnJvd3Nlci1yZXNpemVkJywgeworICAgICAgICAg ICAgICAndmlldyc6IHYsICdwYW5lbCc6IHRoaXMsICdjb250YWluZXInOiAk Y29udGFpbmVyCisgICAgICAgICAgfSk7CisKKyAgICAgICAgfQorICAgICAg fTsKKwogICAgICAgcCA9IG5ldyBwZ0Jyb3dzZXIuUGFuZWwoewogICAgICAg ICAgIG5hbWU6ICdub2RlX3Byb3BzJywKICAgICAgICAgICBzaG93VGl0bGU6 IHRydWUsCkBAIC0zMzksOCArMzUzLDkgQEAgZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgTWVudSwgQmFja2JvbmUsIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIs IEJhY2tmb3JtKSB7CiAgICAgICAgICAgY29udGVudDogJzxkaXYgY2xhc3M9 Im9ial9wcm9wZXJ0aWVzIj48ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZv IHBnLXBhbmVsLW1lc3NhZ2UiPnt7IF8oJ1BsZWFzZSB3YWl0IHdoaWxlIHdl IGZldGNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub2RlIGZyb20gdGhlIHNl cnZlciEnKSB9fTwvZGl2PjwvZGl2PicsCiAgICAgICAgICAgb25DcmVhdGU6 IGZ1bmN0aW9uKG15UGFuZWwsICRjb250YWluZXIpIHsKICAgICAgICAgICAg ICRjb250YWluZXIuYWRkQ2xhc3MoJ3BnLW5vLW92ZXJmbG93Jyk7Ci0gICAg ICAgICAgfQotICAgICAgICB9KTsKKyAgICAgICAgICB9LAorICAgICAgICAg IGV2ZW50czogZXZlbnRzCisgICAgICB9KTsKICAgICAgIHAubG9hZChwZ0Jy b3dzZXIuZG9ja2VyKTsKICAgICB9LAogICAgIC8qCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9zdGF0aWMvY3NzL292ZXJyaWRlcy5jc3MgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvY3NzL292ZXJyaWRlcy5jc3MKaW5kZXggZjBjNTcwMy4u NDEwZjVlYyAxMDA3NTUKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9v dmVycmlkZXMuY3NzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3Zl cnJpZGVzLmNzcwpAQCAtNTIsNyArNTIsNyBAQCBpZnJhbWUgewogfQogCiAv KiBFbnN1cmUgdGhlIGNvZGVtaXJyb3IgZWRpdG9yIGRpc3BsYXlzIGZ1bGwg aGVpZ2h0IGd1dHRlcnMgd2hlbiByZXNpemVkICovCi0uQ29kZU1pcnJvciwg LkNvZGVNaXJyb3ItZ3V0dGVycyB7CisuQ29kZU1pcnJvci1ndXR0ZXJzIHsK ICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgCiB9IAogCkBAIC05OTYs MTAgKzk5Niw2IEBAIHVsLm5hdi5uYXYtdGFicyB7CiAgIGJhY2tncm91bmQt cG9zaXRpb246IDBweCAycHg7CiB9CiAKLS5wZ2FkbWluLWNvbnRyb2xzLlNR TD4uQ29kZU1pcnJvciB7Ci0gIGhlaWdodDogNTAwcHggIWltcG9ydGFudDsK LX0KLQogLyogVGhpcyBydWxlIHdpbGwgc3RvcCBDaHJvbWUgYXBwbHkgaGln aGxpZ2h0aW5nIHRvIGVsZW1lbnRzIHN1Y2ggYXMgRElWJ3MgdXNlZCBhcyBt b2RhbHMgKi8gCiAqOmZvY3VzIHsKICAgb3V0bGluZTogbm9uZTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWlu LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4u anMKaW5kZXggYWE2M2QzZS4uYjJjYWVjNiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKKysrIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKQEAgLTQz OSwxMCArNDM5LDEwIEBACiAgICAgICAnICAgIDxsYWJlbD4nLAogICAgICAg JyAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9IjwlPWV4dHJh Q2xhc3Nlcy5qb2luKFwnIFwnKSU+IiBuYW1lPSI8JT1uYW1lJT4iIDwlPXZh bHVlID8gImNoZWNrZWQ9XCdjaGVja2VkXCciIDogIiIlPiA8JT1kaXNhYmxl ZCA/ICJkaXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVk IiA6ICIiJT4gLz4nLAogICAgICAgJyAgICA8L2xhYmVsPicsCi0gICAgICAn ICAgPCUgaWYgKGhlbHBNZXNzYWdlICYmIGhlbHBNZXNzYWdlLmxlbmd0aCkg eyAlPicsCi0gICAgICAnICAgICA8c3BhbiBjbGFzcz0iPCU9QmFja2Zvcm0u aGVscE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3NhZ2UlPjwvc3Bh bj4nLAotICAgICAgJyAgIDwlIH0gJT4nLAogICAgICAgJyAgPC9kaXY+JywK KyAgICAgICcgIDwlIGlmIChoZWxwTWVzc2FnZSAmJiBoZWxwTWVzc2FnZS5s ZW5ndGgpIHsgJT4nLAorICAgICAgJyAgICA8c3BhbiBjbGFzcz0iPCU9QmFj a2Zvcm0uaGVscE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3NhZ2Ul Pjwvc3Bhbj4nLAorICAgICAgJyAgPCUgfSAlPicsCiAgICAgICAnPC9kaXY+ JywKICAgICBdLmpvaW4oIlxuIikpLAogICAgIGdldFZhbHVlRnJvbURPTTog ZnVuY3Rpb24oKSB7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQAogICAgICAgdGhp cy5kaWFsb2cgPSBvLmRpYWxvZzsKICAgICAgIHRoaXMudGFiSW5kZXggPSBv LnRhYkluZGV4OwogCi0gICAgICBfLmJpbmRBbGwodGhpcywgJ29uVGFiQ2hh bmdlJyk7CisgICAgICBfLmJpbmRBbGwodGhpcywgJ29uVGFiQ2hhbmdlJywg J29uUGFuZWxSZXNpemVkJyk7CiAgICAgfSwKICAgICBnZXRWYWx1ZUZyb21E T006IGZ1bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0 ZXIudG9SYXcodGhpcy4kZWwuZmluZCgidGV4dGFyZWEiKS52YWwoKSwgdGhp cy5tb2RlbCk7CkBAIC0xMzgyLDYgKzEzODIsNyBAQAogICAgICAgICB0aGlz LnNxbEN0cmwgPSBudWxsOwogICAgICAgICB0aGlzLiRlbC5lbXB0eSgpOwog ICAgICAgICB0aGlzLm1vZGVsLm9mZigncGctcHJvcGVydHktdGFiLWNoYW5n ZWQnLCB0aGlzLm9uVGFiQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5t b2RlbC5vZmYoJ3BnLWJyb3dzZXItcmVzaXplZCcsIHRoaXMub25QYW5lbFJl c2l6ZWQsIHRoaXMpOwogICAgICAgfQogICAgICAgLy8gVXNlIHRoZSBCYWNr Zm9ybSBDb250cm9sJ3MgcmVuZGVyIGZ1bmN0aW9uCiAgICAgICBCYWNrZm9y bS5Db250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKQEAgLTE0MDEsNiArMTQwMiw3IEBACiAgICAgICAgKiBiZWVuIGNs aWNrZWQgb3IsIG5vdC4KICAgICAgICAqLwogICAgICAgdGhpcy5tb2RlbC5v bigncGctcHJvcGVydHktdGFiLWNoYW5nZWQnLCB0aGlzLm9uVGFiQ2hhbmdl LCB0aGlzKTsKKyAgICAgIHRoaXMubW9kZWwub24oJ3BnLWJyb3dzZXItcmVz aXplZCcsIHRoaXMub25QYW5lbFJlc2l6ZWQsIHRoaXMpOwogCiAgICAgICBy ZXR1cm4gdGhpczsKICAgICB9LApAQCAtMTQ0OCw2ICsxNDUwLDI5IEBACiAg ICAgICAgICAgdGhpcy5zcWxDdHJsLnNldFZhbHVlKCctLSAnICsgd2luZG93 LnBnQWRtaW4uQnJvd3Nlci5tZXNzYWdlcy5TUUxfTk9fQ0hBTkdFKTsKICAg ICAgICAgfQogICAgICAgICB0aGlzLnNxbEN0cmwucmVmcmVzaC5hcHBseSh0 aGlzLnNxbEN0cmwpOworCisgICAgICAgIHRoaXMuJGVsLmZpbmQoJy5Db2Rl TWlycm9yJykuY3NzKAorICAgICAgICAgICAgJ2Nzc1RleHQnLAorICAgICAg ICAgICAgJ2hlaWdodDogJyArICgKKyAgICAgICAgICAgICAgdGhpcy4kZWwu Y2xvc2VzdCgnLnRhYi1jb250ZW50JykuaGVpZ2h0KCkgKyA4CisgICAgICAg ICAgICAgICkgKyAncHggIWltcG9ydGFudDsnCisgICAgICAgICAgICApOwor ICAgICAgfQorICAgIH0sCisgICAgb25QYW5lbFJlc2l6ZWQ6IGZ1bmN0aW9u KG8pIHsKKyAgICAgIGlmIChvICYmIG8uY29udGFpbmVyKSB7CisgICAgICAg IHZhciAkdGFiQ29udGVudCA9IG8uY29udGFpbmVyLmZpbmQoCisgICAgICAg ICAgICAgICcuYmFja2Zvcm0tdGFiID4gLnRhYi1jb250ZW50JworICAgICAg ICAgICAgKS5maXJzdCgpLAorICAgICAgICAgICAgJHNxbFBhbmUgPSAkdGFi Q29udGVudC5maW5kKAorICAgICAgICAgICAgICAnZGl2W3JvbGU9dGFicGFu ZWxdLnRhYi1wYW5lLlNRTCcKKyAgICAgICAgICAgICk7CisgICAgICAgIGlm ICgkc3FsUGFuZS5oYXNDbGFzcygnYWN0aXZlJykpIHsKKyAgICAgICAgICAk c3FsUGFuZS5maW5kKCcuQ29kZU1pcnJvcicpLmNzcygKKyAgICAgICAgICAg ICdjc3NUZXh0JywKKyAgICAgICAgICAgICdoZWlnaHQ6ICcgKyAoJHRhYkNv bnRlbnQuaGVpZ2h0KCkgKyA4KSArICdweCAhaW1wb3J0YW50OycKKyAgICAg ICAgICApCisgICAgICAgIH0KICAgICAgIH0KICAgICB9LAogICAgIHJlbW92 ZTogZnVuY3Rpb24oKSB7CkBAIC0xNDU5LDYgKzE0ODQsOCBAQAogICAgICAg ICB0aGlzLiRlbC5lbXB0eSgpOwogICAgICAgfQogICAgICAgdGhpcy5tb2Rl bC5vZmYoJ3BnLXByb3BlcnR5LXRhYi1jaGFuZ2VkJywgdGhpcy5vblRhYkNo YW5nZSwgdGhpcyk7CisgICAgICB0aGlzLm1vZGVsLm9mZigncGctYnJvd3Nl ci1yZXNpemVkJywgdGhpcy5vblBhbmVsUmVzaXplZCwgdGhpcyk7CisKICAg ICAgIEJhY2tmb3JtLkNvbnRyb2wuX19zdXBlcl9fLnJlbW92ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOwogICAgIH0KIH0pOwpAQCAtMjMwMCwxMiArMjMy NywxMiBAQAogICAgICAgdHlwZTogInRleHQiLAogICAgICAgbGFiZWw6ICIi LAogICAgICAgb3B0aW9uczogewotICAgICAgICBmb3JtYXQ6ICJNTU0gRCBZ WVlZIEhIOm1tOnNzLlNTUyBaIiwKKyAgICAgICAgZm9ybWF0OiAiWVlZWS1N TS1ERCBISDptbTpzcyBaIiwKICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLAog ICAgICAgICBzaG93VG9kYXlCdXR0b246IHRydWUsCiAgICAgICAgIHRvb2xi YXJQbGFjZW1lbnQ6ICd0b3AnCiAgICAgICB9LAotICAgICAgcGxhY2Vob2xk ZXI6ICJNTU0gRCBZWVlZIEhIOm1tOnNzLlNTUyBaIiwKKyAgICAgIHBsYWNl aG9sZGVyOiAiWVlZWS1NTS1ERCBISDptbTpzcyBaIiwKICAgICAgIGV4dHJh Q2xhc3NlczogW10sCiAgICAgICBoZWxwTWVzc2FnZTogbnVsbAogICAgIH0s CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQv YmFja2dyaWQucGdhZG1pbi5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9i YWNrZ3JpZC9iYWNrZ3JpZC5wZ2FkbWluLmpzCmluZGV4IGFmNThjMDYuLjVm ZWUzYjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNr Z3JpZC9iYWNrZ3JpZC5wZ2FkbWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9iYWNrZ3JpZC9iYWNrZ3JpZC5wZ2FkbWluLmpzCkBAIC0xLDcg KzEsMTAgQEAKIChmdW5jdGlvbihyb290LCBmYWN0b3J5KSB7CiAgIC8vIFNl dCB1cCBCYWNrZm9ybSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgZW52aXJvbm1l bnQuIFN0YXJ0IHdpdGggQU1ELgogICBpZiAodHlwZW9mIGRlZmluZSA9PT0g J2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7Ci0gICAgZGVmaW5lKFsndW5k ZXJzY29yZScsICdqcXVlcnknLCAnYmFja2JvbmUnLCAnYmFja2Zvcm0nLCAn YmFja2dyaWQnLCAnYWxlcnRpZnknLCAnbW9tZW50J10sCisgICAgZGVmaW5l KFsKKyAgICAgICd1bmRlcnNjb3JlJywgJ2pxdWVyeScsICdiYWNrYm9uZScs ICdiYWNrZm9ybScsICdiYWNrZ3JpZCcsICdhbGVydGlmeScsCisgICAgICAn bW9tZW50JywgJ2Jvb3RzdHJhcC5kYXRldGltZXBpY2tlcicKKyAgICBdLAog ICAgICBmdW5jdGlvbihfLCAkLCBCYWNrYm9uZSwgQmFja2Zvcm0sIEJhY2tn cmlkLCBBbGVydGlmeSwgbW9tZW50KSB7CiAgICAgICAvLyBFeHBvcnQgZ2xv YmFsIGV2ZW4gaW4gQU1EIGNhc2UgaW4gY2FzZSB0aGlzIHNjcmlwdCBpcyBs b2FkZWQgd2l0aAogICAgICAgLy8gb3RoZXJzIHRoYXQgbWF5IHN0aWxsIGV4 cGVjdCBhIGdsb2JhbCBCYWNrZm9ybS4KQEAgLTExNTgsNiArMTE2MSw3OSBA QAogICAgIH0KICAgfSk7CiAKKyAgdmFyIERhdGV0aW1lUGlja2VyRWRpdG9y ID0gQmFja2dyaWQuRXh0ZW5zaW9uLkRhdGV0aW1lUGlja2VyRWRpdG9yID0g QmFja2dyaWQuSW5wdXRDZWxsRWRpdG9yLmV4dGVuZCh7CisgICAgcG9zdFJl bmRlcjogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisg ICAgICAgICAgZXZhbEYgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZh ciBhcmdzID0gW107CisgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVz aC5hcHBseShhcmdzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgdmFyIGYg PSBhcmdzLnNoaWZ0KCk7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YoZikg PT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGYuYXBw bHkoc2VsZiwgYXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy ZXR1cm4gZjsKKyAgICAgICAgICB9LAorICAgICAgICAgIG9wdGlvbnMgPSBf LmV4dGVuZCh7CisgICAgICAgICAgICBmb3JtYXQ6ICJZWVlZLU1NLUREIEhI Om1tOnNzIFoiLAorICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLAorICAg ICAgICAgICAgc2hvd1RvZGF5QnV0dG9uOiB0cnVlLAorICAgICAgICAgICAg dG9vbGJhclBsYWNlbWVudDogJ3RvcCcKKyAgICAgICAgICB9LCBldmFsRih0 aGlzLmNvbHVtbi5nZXQoJ29wdGlvbnMnKSksIHsKKyAgICAgICAgICAgIGtl eUJpbmRzOiB7CisgICAgICAgICAgICAgICJzaGlmdCB0YWIiOiBmdW5jdGlv bih3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2lkZ2V0KSB7Cisg ICAgICAgICAgICAgICAgICAvLyBibHVyIHRoZSBpbnB1dAorICAgICAgICAg ICAgICAgICAgc2V0VGltZW91dCgKKyAgICAgICAgICAgICAgICAgICAgZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZUl0 KHtrZXlDb2RlOiA5LCBzaGlmdEtleTogdHJ1ZX0pOworICAgICAgICAgICAg ICAgICAgICB9LCAxMAorICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHRh YjogZnVuY3Rpb24od2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdp ZGdldCkgeworICAgICAgICAgICAgICAgICAgLy8gYmx1ciB0aGUgaW5wdXQK KyAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAgICAgICAgICAg ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xvc2VJdCh7a2V5Q29kZTogOX0pOworICAgICAgICAgICAgICAgICAg ICB9LCAxMAorICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9KTsKKyAgICAgIHRoaXMuJGVsLmRhdGV0aW1lcGlja2VyKG9wdGlvbnMp OworICAgICAgdGhpcy4kZWwuZGF0ZXRpbWVwaWNrZXIoJ3Nob3cnKTsKKyAg ICAgIHRoaXMucGlja2VyID0gdGhpcy4kZWwuZGF0YSgnRGF0ZVRpbWVQaWNr ZXInKTsKKyAgICB9LAorICAgIGV2ZW50czogeworICAgICAgJ2RwLmhpZGUn OiAnY2xvc2VJdCcKKyAgICB9LAorICAgIGNsb3NlSXQ6IGZ1bmN0aW9uKGV2 KSB7CisgICAgICB2YXIgZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZXIsCisg ICAgICAgICAgbW9kZWwgPSB0aGlzLm1vZGVsOworICAgICAgICAgIGNvbHVt biA9IHRoaXMuY29sdW1uOworICAgICAgICAgIHZhbCA9IHRoaXMuJGVsLnZh bCgpOworICAgICAgICAgIG5ld1ZhbHVlID0gZm9ybWF0dGVyLnRvUmF3KHZh bCwgbW9kZWwpOworCisgICAgICBpZiAodGhpcy5pc19jbG9zaW5nKQorICAg ICAgICByZXR1cm47CisgICAgICB0aGlzLmlzX2Nsb3NpbmcgPSB0cnVlOwor ICAgICAgdGhpcy4kZWwuZGF0ZXRpbWVwaWNrZXIoJ2Rlc3Ryb3knKTsKKyAg ICAgIHRoaXMuaXNfY2xvc2luZyA9IGZhbHNlOworCisgICAgICB2YXIgY29t bWFuZCA9IG5ldyBCYWNrZ3JpZC5Db21tYW5kKGV2KTsKKworICAgICAgaWYg KF8uaXNVbmRlZmluZWQobmV3VmFsdWUpKSB7CisgICAgICAgIG1vZGVsLnRy aWdnZXIoImJhY2tncmlkOmVycm9yIiwgbW9kZWwsIGNvbHVtbiwgdmFsKTsK KyAgICAgIH0gZWxzZSB7CisgICAgICAgIG1vZGVsLnNldChjb2x1bW4uZ2V0 KCJuYW1lIiksIG5ld1ZhbHVlKTsKKyAgICAgICAgbW9kZWwudHJpZ2dlcigi YmFja2dyaWQ6ZWRpdGVkIiwgbW9kZWwsIGNvbHVtbiwgY29tbWFuZCk7Cisg ICAgICB9CisgICAgfQorICB9KTsKKwogICBfLmV4dGVuZChNb21lbnRDZWxs LnByb3RvdHlwZSwgTW9tZW50Rm9ybWF0dGVyLnByb3RvdHlwZS5kZWZhdWx0 cyk7CiAKICAgcmV0dXJuIEJhY2tncmlkOwo= --001a11440d46bd0187053d32b62a Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a11440d46bd0187053d32b62a--