Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aY74G-0005DQ-Rs for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 07:07:33 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aY74F-0000kY-9d for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 07:07:31 +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) (envelope-from ) id 1aY74A-0000kL-8l for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 07:07:26 +0000 Received: from mail-lf0-x236.google.com ([2a00:1450:4010:c07::236]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aY741-0006Lx-Kn for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 07:07:25 +0000 Received: by mail-lf0-x236.google.com with SMTP id 78so109059511lfy.3 for ; Mon, 22 Feb 2016 23:07:17 -0800 (PST) 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:date:message-id:subject:from:to :cc:content-type; bh=VhmWlDaCVULGZSi4BETsSAEvbzhCvnHoLoVRmBQgDkE=; b=XPJZ07rsua38EeJ36We2SBePB43Ghos59rgIPpK4EPssmRb0irSe+R7VueoZUQGAF4 Lm+YkUVyGXgNjs4PXPQi/CPB7wuvYX/mPMxES4TxXXhZcr9WxDL8kC03Y7t86Lk5ejvJ +xtnlDWkK7nLB+jwgZNP6ztxcPwI2JW5KpwAXeWEIilomPGzVQrDK6XWbXza3Ulxmaqd jKx/UBqPv3s+pLpIZBOX9e8aB23rBdUQd77qq+yBKRM3c7+qGLQAzzmIV1hp4IjU2A5E 2UKOLitNdsCoL1prqA4alSGZUxTF/PsVvb4oozXZHrI9rCMoUn/WAUvST6tlKWEmCA8V gf1g== 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:date :message-id:subject:from:to:cc:content-type; bh=VhmWlDaCVULGZSi4BETsSAEvbzhCvnHoLoVRmBQgDkE=; b=ajk9QLe7n/BhsJxqSAHz5BLYc9nYj68iqrpgQTFz5OzY80MqE5Pv3aLKYBxWZphCeJ FT54iusO09XqvuWreKmDdOISTYLaerBBO4pZvLD+X6O2gy5ZqWAE6Csa/7OVOC1/esQh ODtqYmi5wPyvLMGzStLTz8P0WkxweDaWOHqVF/tHpYbefa6h7iwShjlhfO58jKc4VdiQ a69ATrrT3FqkZhJ2FXI23yOjzMo81yQDXcrOdQ39Dbx9Hn4TbxTXbyv+kbjtR3FiBBXS g/GQQS8PHJUyV6tq5j27LTa9DC/IhakRMCDvI2mAOfFZs/H0U5ArLVASr3Dv9UZm6zFQ shKg== X-Gm-Message-State: AG10YOQkcj07OJ7Uf97YBEA7BcaVBtjqwRnCtsu7G2LxPIgG9yhWRHtwjuj9n/a50n4Nj9LX9zPYKkjFuBBKpmJS MIME-Version: 1.0 X-Received: by 10.25.4.7 with SMTP id 7mr11436045lfe.45.1456211235838; Mon, 22 Feb 2016 23:07:15 -0800 (PST) Received: by 10.25.159.85 with HTTP; Mon, 22 Feb 2016 23:07:15 -0800 (PST) In-Reply-To: References: Date: Tue, 23 Feb 2016 12:37:15 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Neel Patel Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a113fbce06e527e052c6a9909 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 --001a113fbce06e527e052c6a9909 Content-Type: multipart/alternative; boundary=001a113fbce06e5277052c6a9907 --001a113fbce06e5277052c6a9907 Content-Type: text/plain; charset=UTF-8 Hi, Please find attached Revised patch for the Domain module and also my comments inline as below. Thanks, Khushboo On Wed, Feb 3, 2016 at 4:22 PM, Neel Patel wrote: > Hi Khushboo, > > Please find below review comments. > > - Reverse engineering SQL generation is not implemented for domain node. > Done > - "Length" and "Precision" fields should be enabled/disabled based on the > selection of "Base Type" value. > This implementation is dependent on the 'Type' module. Once that will be done, I will merge my code. > - Query is not getting generated properly. Some of the parameters are not > reflected in query. As we have provided Length and Precision value in > below numeric base type. Also do proper indentation in generated query. > > * Wrong Query :- * > CREATE DOMAIN my_schema.test_123 > AS "numeric" > DEFAULT 5 > ; > > * Correct Query :- * > CREATE DOMAIN my_schema.test_123 > AS numeric(22,4) > DEFAULT 5 > NOT NULL; > > Done > - After creation of new domain with base type "aclitem" , wrong "Length" > field value is getting displayed. > Done > - We are getting error saying "*TypeError: the JSON object must be str, > not 'dict*'" when we add constraint w > ith "NOT VALID" and NO INHERIT. > Done > - We should add property "System Domain?" when we select any domain node. > Done > - We think for creation of Security Label, we should include the schema > name along with domain name. > *Wrong Query :- * > SECURITY LABEL FOR pv_label ON DOMAIN test_123 IS 'label_val'; > Correct Query :- > SECURITY LABEL FOR pv_label ON DOMAIN .test_123 IS > 'label_val'; > > > Done > Let us know in case of any issues. > > Thanks, > Neel Patel > > On Tue, Feb 2, 2016 at 3:51 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi Neel, >> >> Thanks for reviewing my patch. >> >> I have modified the code as per your suggestions and also fixed some of >> the issues got while doing unit testing. >> Please find attached patch for the same. >> >> >> Thanks, >> Khushboo >> >> >> >> On Wed, Jan 20, 2016 at 10:56 PM, Neel Patel > > wrote: >> >>> Hi Khushboo, >>> >>> Please find below review comments. >>> >>> - While creating new Domain and clicking on SQL tab, python side we are >>> getting error saying "*TypeError: 'bool' object is not callable".* >>> We are not able to create any domain. Fix this issue so that we can >>> test other functionality. >>> - Implement the reverse engineering SQL generation for the domain node. >>> - As per the checklist, remove the "Use Slony" from Constraints tab, as >>> it is not required. >>> - No need to pass "*qtIdent=self.qtIdent*" as function argument in >>> "create" and "getSQL" function in domains/__init__.py >>> - In "Security" tab , provider and security label fields are not >>> editable. >>> - In PG version 9.1, when we update the existing domain name then "ALTER >>> DOMAIN" is not supported. >>> Currently there is no checking for the PG version 9.1 and 9.2_plus. It >>> will fail when we connect to database 9.1 >>> >>> e.g. >>> For PG version 9.1 - Update command should be as below. >>> ALTER TYPE xyz RENAME TO abc; >>> For PG version 9.2 onwards - Update command should be as below. >>> ALTER DOMAIN xyz RENAME TO abc; >>> >>> - Some of the SQL file, qtIdent is not used. Please check all the >>> related SQL files. >>> e.g. - In update.sql file "data.owner" should be >>> "conn|qtIdent(data.owner)" >>> >>> {% if data.owner %} >>> ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }} >>> OWNER TO {{ data.owner }}; >>> {% endif %} >>> >>> Let us know for any issues. >>> >>> Thanks, >>> Neel Patel >>> >>> On Wed, Jan 20, 2016 at 2:50 PM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi Neel, >>>> >>>> Please find updated patch. >>>> >>>> Thanks, >>>> Khushboo >>>> >>>> On Wed, Jan 20, 2016 at 12:50 PM, Neel Patel < >>>> neel.patel@enterprisedb.com> wrote: >>>> >>>>> Hi Khushboo, >>>>> >>>>> While applying the patch file, we are getting below warnings. >>>>> >>>>> ######################################### >>>>> domains (1).patch:1340: trailing whitespace. >>>>> oid: undefined, >>>>> domains (1).patch:1483: trailing whitespace. >>>>> (nspname = 'pg_catalog' AND EXISTS >>>>> domains (1).patch:1487: trailing whitespace. >>>>> OR (nspname = 'information_schema' AND EXISTS >>>>> domains (1).patch:1489: trailing whitespace. >>>>> OR (nspname LIKE '_%' AND EXISTS >>>>> domains (1).patch:1642: trailing whitespace. >>>>> (select 1 from pg_class where relnamespace=typnamespace and relname = >>>>> typname and relkind != 'c') AND (typname not like '_%' OR NOT EXISTS >>>>> (select 1 from pg_class where relnamespace=typnamespace and relname = >>>>> substring(typname from 2)::name and relkind != 'c')) >>>>> warning: squelched 4 whitespace errors >>>>> warning: 9 lines add whitespace errors. >>>>> ######################################### >>>>> >>>>> Can you please remove the whitespace and regenerate the patch ? >>>>> >>>>> Thanks, >>>>> Neel Patel >>>>> >>>>> On Wed, Jan 20, 2016 at 12:37 PM, Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Resending patch with binary option. >>>>>> >>>>>> On Wed, Jan 20, 2016 at 10:18 AM, Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Please find attached patch for the Domain Module. >>>>>>> >>>>>>> The patch will be modified after Types module implementation as we >>>>>>> need to populate Base Type and some Type related validations from the >>>>>>> Types module. >>>>>>> >>>>>>> Please review it and let me know the feedback. >>>>>>> >>>>>>> Thanks, >>>>>>> Khushboo >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org >>>>>> ) >>>>>> To make changes to your subscription: >>>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>>> >>>>>> >>>>> >>>> >>> >> > --001a113fbce06e5277052c6a9907 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find attached Revised patch fo= r the Domain module=C2=A0 and also my comments inline as below.

Thanks,
Khushboo

On Wed, Feb 3, 2016 at 4:22 PM, Neel Pate= l <neel.patel@enterprisedb.com> wrote:
Hi Khushbo= o,

Please find below review comments.

=C2=A0- Reverse engineering = SQL generation is not implemented for domain node.
Done
=C2=A0- &= quot;Length" and "Precision" fields should be enabled/disabl= ed based on the selection of "Base Type" value.
This implementation is depen= dent on the 'Type' module. Once that will be done, I will merge my = code.=C2=A0
=C2=A0- Query is not getting generated properly. = Some of the parameters are not reflected in query.=C2=A0 As we have provide= d Length and Precision value in=C2=A0
=C2=A0 =C2=A0below numeric = base type. Also do proper indentation in generated query.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Wrong Query :-=C2=A0
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CREATE DOMAIN my_schema.test_1= 23
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 AS "numeric"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DEFAULT 5
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 ;

=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0Correct Query :-=C2=A0
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0CREATE DOMAIN my_schema.test_123
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0AS numeric(22,4)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0DEFAULT 5
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NOT NULL;

=C2=A0Done
=C2=A0- After creation of new doma= in with base type "aclitem" , wrong "Length" field valu= e is getting displayed.
Done=C2=A0
=C2=A0- We are getting error saying &= quot;TypeError: the JSON object must be str, not 'dict'"= ; when we add constraint w
ith "NOT VALID" a= nd NO INHERIT.
Done=C2=A0
=C2=A0- We should add property "System Do= main?" when we select any domain node.
Done=C2=A0
=C2=A0- We think = for creation of Security Label, we should include the schema name along wit= h domain name.
=C2=A0 =C2=A0 Wrong Query :-=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0SECURITY LABEL FOR pv_label ON DOMAIN test_123= IS 'label_val';
=C2=A0 =C2=A0 Correct Query :-=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0SECURITY LABEL FOR=C2=A0pv_label=C2=A0ON = DOMAIN <schema_name>.test_123 IS 'label_val';

<= /div>

Done=C2=A0
Let us know in case of any issues.<= /div>

Thanks,
Neel Patel
=

On Tue, Feb 2, 20= 16 at 3:51 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.c= om> wrote:
Hi Neel,

Thanks f= or reviewing my patch.

I have modified the code as per your su= ggestions and also fixed some of the issues got while doing unit testing.
Please find attached patch for the same.


Thanks,
Khushboo



On Wed, Jan 20,= 2016 at 10:56 PM, Neel Patel <neel.patel@enterprisedb.com&g= t; wrote:
Hi Khushboo,

Please find below review commen= ts.

- While creating new Domain and clicking on SQ= L tab, python side we are getting error saying "TypeError: 'boo= l' object is not callable".
=C2=A0 We are not= able to create any domain. Fix this issue so that we can test other functi= onality.
- Implement the reverse engineering SQL generation for t= he domain node.
- As per the checklist, remove the "Use Slon= y" from Constraints tab, as it is not required.
- No need to= pass "qtIdent=3Dself.qtIdent" as function argument in &qu= ot;create" and "getSQL" function in domains/__init__.py
- In "Security" tab , provider and security label fields ar= e not editable.
- In PG version 9.1, when we update the existing = domain name then "ALTER DOMAIN" is not supported.=C2=A0
=C2=A0 Currently there is no checking for the PG version 9.1 and 9.2_plus.= It will fail when we connect to database 9.1

=C2= =A0 e.g.
=C2=A0 For PG version 9.1 - Update command should be as = below.
=C2=A0 ALTER TYPE xyz RENAME TO abc;
=C2=A0 For = PG version 9.2 onwards - Update command should be as below.
=C2= =A0 ALTER DOMAIN xyz RENAME TO abc;

- Some of the = SQL file, qtIdent is not used. Please check all the related SQL files.
=C2=A0 e.g. =C2=A0- In update.sql file "data.owner" should = be "conn|qtIdent(data.owner)"

=C2=A0 =C2= =A0 {% if data.owner %}
=C2=A0 =C2=A0 ALTER DOMAIN {{ conn|qtIden= t(o_data.basensp, name) }}
=C2=A0 =C2=A0 =C2=A0 OWNER TO {{ data.= owner }};
=C2=A0 {% endif %}

Let us know= for any issues.

Thanks,
Neel Patel

= On Wed, Jan 20, 2016 at 2:50 PM, Khushboo Vashi <khushboo.va= shi@enterprisedb.com> wrote:
Hi Neel,

= Please find updated patch.

Thanks,
Khushboo
=

On Wed,= Jan 20, 2016 at 12:50 PM, Neel Patel <neel.patel@enterprisedb.c= om> wrote:
Hi Khushboo,

While applying the patc= h file, we are getting below warnings.

###########= ##############################
domains (1).patch:1340: trail= ing whitespace.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 oid: undefined= ,=C2=A0
domains (1).patch:1483: trailing whitespace.
= =C2=A0 =C2=A0 (nspname =3D 'pg_catalog' AND EXISTS=C2=A0
= domains (1).patch:1487: trailing whitespace.
=C2=A0 =C2=A0 OR (ns= pname =3D 'information_schema' AND EXISTS=C2=A0
domains (= 1).patch:1489: trailing whitespace.
=C2=A0 =C2=A0 OR (nspname LIK= E '_%' AND EXISTS=C2=A0
domains (1).patch:1642: trailing = whitespace.
=C2=A0(select 1 from pg_class where relnamespace=3Dty= pnamespace and relname =3D typname and relkind !=3D 'c') AND (typna= me not like '_%' OR NOT EXISTS (select 1 from pg_class where relnam= espace=3Dtypnamespace and relname =3D substring(typname from 2)::name and r= elkind !=3D 'c'))=C2=A0
warning: squelched 4 whitespace e= rrors
warning: 9 lines add whitespace errors.
###= ######################################

Can you= please remove the whitespace and regenerate the patch ?

Thanks,
Neel Patel
<= br>
On Wed, Jan 20, 2016 at 12:37 PM, K= hushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
<= div>
Resending patch with binary option.

On Wed, Jan= 20, 2016 at 10:18 AM, Khushboo Vashi <khushboo.vashi@enterp= risedb.com> wrote:
Hi,

Please fin= d attached patch for the Domain Module.

The patch will be modi= fied after Types module implementation as we need to populate Base Type=C2= =A0 and some Type related validations from the Types module.

<= div>Please review it and let me know the feedback.

= Thanks,
Khushboo



--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=







--001a113fbce06e5277052c6a9907-- --001a113fbce06e527e052c6a9909 Content-Type: text/x-patch; charset=US-ASCII; name="Domains_ver_2.patch" Content-Disposition: attachment; filename="Domains_ver_2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikz2i1tl0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNWI1OTEKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsODA1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJUaGUgRG9tYWluIE1vZHVsZS4iIiIK KworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1w bGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBm bGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBt YWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZl cl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBH Q2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv biBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9ydCBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9y dCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5k cml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQ R19ERUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBz CisKKworY2xhc3MgRG9tYWluTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxl KToKKyAgICAiIiIKKyAgICBjbGFzcyBEb21haW5Nb2R1bGUoQ29sbGVjdGlv bk5vZGVNb2R1bGUpOgorCisgICAgICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50 cyBUaGUgRG9tYWluIE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0t LS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAg LSBJbml0aWFsaXplIHRoZSBEb21haW4gTW9kdWxlLgorCisgICAgKiBnZXRf bm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gR2VuZXJhdGUg dGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIHNjcmlwdF9s b2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZG9t YWluLCB3aGVuIHNjaGVtYSBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVk LgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ2RvbWFpbicKKyAgICBD T0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRG9tYWlucyIpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg c3VwZXIoRG9tYWluTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKipr d2FyZ3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAg c2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IEdlbmVyYXRlIHRoZSBkb21haW4gY29sbGVjdGlvbiBub2RlLgorICAgICAg ICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2VyX2Nv bGxlY3Rpb25fbm9kZShzY2lkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm IHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9h ZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZG9tYWluLCB3aGVuIHNjaGVtYSBu b2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQor CisKK2JsdWVwcmludCA9IERvbWFpbk1vZHVsZShfX25hbWVfXykKKworCitj bGFzcyBEb21haW5WaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisg ICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhpcyBjbGFzcyBpbmhlcml0 cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVz IGZvcgorICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVz cG9uc2libGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBv cGVyYXRpb25zIGZvcgorICAgIHRoZSBEb21haW4uCisKKyAgICBNZXRob2Rz OgorICAgIC0tLS0tLS0KKyAgICAqIHZhbGlkYXRlX3JlcXVlc3QoZik6Cisg ICAgICAtIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0 aW5nIHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUg YW5kIG1vZGlmaWVkIFNRTC4KKworICAgICogbW9kdWxlX2pzKCk6CisgICAg ICAtIE92ZXJyaWRlcyB0aGlzIHByb3BlcnR5IHRvIGRlZmluZSBqYXZhc2Ny aXB0IGZvciBEb21haW4gbm9kZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0 aW9uKGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg IC0gIENoZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAg IC0gIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgIC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisg ICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAg ICogZ2V0X3NjaGVtYXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25l KToKKyAgICAgIC0gUmV0dXJucyBTY2hlbWFzIGZvciB0aGUgcGFydGljdWxh ciBkYXRhYmFzZS4KKworICAgICogZ2V0X2NvbGxhdGlvbnMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBDb2xs YXRpb25zLgorCisgICAgKiBnZXRfdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVzLgor CisgICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAt IENyZWF0ZXMgYSBuZXcgRG9tYWluIG9iamVjdC4KKworICAgICogdXBkYXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVz IHRoZSBEb21haW4gb2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4g b2JqZWN0LgorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9t YWluIG9iamVjdC4KKworICAgICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBT UUwuCisKKyAgICAqIGdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRv aWQ9Tm9uZSk6CisgICAgICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVu dHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAg ICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAg ICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBv YmplY3QuCisKKyAgICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVz IGZvciB0aGUgRG9tYWluIG9iamVjdC4KKyAgICAiIiIKKworICAgIG5vZGVf dHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMg PSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAg IHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9CisgICAgXQorICAgIGlkcyA9IFsK KyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkb2lkJ30KKyAgICBd CisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmonOiBb CisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0ZSc6 ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAgeydn ZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisg ICAgICAgICdkZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAg ICAgICAnY2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRyZW4nfV0sCisgICAg ICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVz J31dLAorICAgICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAg ICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31d LAorICAgICAgICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVz J31dLAorICAgICAgICAnZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVu dHMnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6 ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdnZXRfc2NoZW1hcyc6IFt7J2dl dCc6ICdnZXRfc2NoZW1hcyd9LCB7J2dldCc6ICdnZXRfc2NoZW1hcyd9XSwK KyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAgICAgICAgeydn ZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2dldF90 eXBlcyc6IFt7J2dldCc6ICdnZXRfdHlwZXMnfSwgeydnZXQnOiAnZ2V0X3R5 cGVzJ31dCisgICAgfSkKKworICAgIGRlZiB2YWxpZGF0ZV9yZXF1ZXN0KGYp OgorICAgICAgICAiIiIKKyAgICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3Iu CisgICAgICAgIFZhbGlkYXRpbmcgcmVxdWVzdCBvbiB0aGUgcmVxdWVzdCBv ZiBjcmVhdGUsIHVwZGF0ZSBhbmQgbW9kaWZpZWQgU1FMLgorCisgICAgICAg IFJlcXVpcmVkIEFyZ3M6CisgICAgICAgICAgICAgICAgICAgIG5hbWU6IE5h bWUgb2YgdGhlIERvbWFpbgorICAgICAgICAgICAgICAgICAgICBvd25lcjog RG9tYWluIE93bmVyCisgICAgICAgICAgICAgICAgICAgIGJhc2Vuc3A6IFNj aGVtYSBOYW1lCisgICAgICAgICAgICAgICAgICAgIGJhc3R0eXBlOiBEYXRh IFR5cGUgb2YgdGhlIERvbWFpbgorCisgICAgICAgIEFib3ZlIGJvdGggdGhl IGFyZ3VtZW50cyB3aWxsIG5vdCBiZSB2YWxpZGF0ZWQgaW4gdGhlIHVwZGF0 ZSBhY3Rpb24uCisgICAgICAgICIiIgorCisgICAgICAgIEB3cmFwcyhmKQor ICAgICAgICBkZWYgd3JhcChzZWxmLCAqKmt3YXJncyk6CisKKyAgICAgICAg ICAgIGRhdGEgPSB7fQorICAgICAgICAgICAgaWYgcmVxdWVzdC5kYXRhOgor ICAgICAgICAgICAgICAgIHJlcSA9IGpzb24ubG9hZHMocmVxdWVzdC5kYXRh KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXEgPSBy ZXF1ZXN0LmFyZ3Mgb3IgcmVxdWVzdC5mb3JtCisKKyAgICAgICAgICAgIGlm ICdkb2lkJyBub3QgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgIHJlcXVp cmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAgICAgICAgICduYW1lJywKKyAg ICAgICAgICAgICAgICAgICAgJ293bmVyJywKKyAgICAgICAgICAgICAgICAg ICAgJ2Jhc2Vuc3AnLAorICAgICAgICAgICAgICAgICAgICAnYmFzZXR5cGUn CisgICAgICAgICAgICAgICAgXQorCisgICAgICAgICAgICAgICAgZm9yIGFy ZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgICAgICBpZiBh cmcgbm90IGluIHJlcSBvciByZXFbYXJnXSA9PSAnJzoKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICglcykuIiAlIGFyZworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg dHJ5OgorICAgICAgICAgICAgICAgIGxpc3RfcGFyYW1zID0gW10KKyAgICAg ICAgICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJzoKKyAgICAg ICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2NvbnN0cmFpbnRzJywg J3NlY2xhYmVscyddCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHJl cToKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGxpc3RfcGFyYW1z IGFuZCByZXFba2V5XSAhPSAnJyBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYW5kIHJlcVtrZXldIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg ICAgICAgICAgICAgIyBDb3ZlcnRzIHN0cmluZyBpbnRvIHB5dGhvbiBsaXN0 IGFzIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtr ZXldID0ganNvbi5sb2FkcyhyZXFba2V5XSkKKyAgICAgICAgICAgICAgICAg ICAgZWxpZiBrZXkgPT0gJ3R5cG5vdG51bGwnOgorICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YVtrZXldID0gVHJ1ZSBpZiByZXFba2V5XSA9PSAndHJ1 ZScgb3IgcmVxW2tleV0gaXNcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVl IGVsc2VcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNlIGlm IHJlcVtrZXldID09ICdmYWxzZScgb3IgcmVxW2tleV0gaXMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGYWxzZSBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gcmVx W2tleV0KKworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgICAgICAgICBzZWxmLnJlcXVlc3Qg PSBkYXRhCisgICAgICAgICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykK KworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgZGVmIG1vZHVsZV9qcyhz ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlcyB0aGlzIHBy b3BlcnR5IHRvIGRlZmluZSBqYXZhc2NyaXB0IGZvciBEb21haW4gbm9kZS4K KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICJkb21haW5zL2pzL2RvbWFpbnMuanMiLAorICAgICAgICAgICAgICAgIF89 Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIDIwMCwgeydD b250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAg ICAgICAgKQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAg ICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAg ICAgICBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAg ICAgIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aC4KKyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBk ZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZiA9 IGFyZ3NbMF0KKyAgICAgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdf REVGQVVMVF9EUklWRVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBk cml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAg ICAgICAgICAjIEdldCBkYXRhYmFzZSBjb25uZWN0aW9uCisgICAgICAgICAg ICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dh cmdzWydkaWQnXSkKKyAgICAgICAgICAgIHNlbGYucXRJZGVudCA9IGRyaXZl ci5xdElkZW50CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbm4uY29u bmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlv bl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgiQ29u bmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIikKKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdl ci52ZXJzaW9uCisgICAgICAgICAgICBzZXJ2ZXJfdHlwZSA9IHNlbGYubWFu YWdlci5zZXJ2ZXJfdHlwZQorCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0 IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICBp ZiB2ZXIgPj0gOTAyMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0 ZV9wYXRoID0gJ2RvbWFpbnMvc3FsLzkuMl9wbHVzJworICAgICAgICAgICAg ZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1w bGF0ZV9wYXRoID0gJ2RvbWFpbnMvc3FsLzkuMV9wbHVzJworCisgICAgICAg ICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgcmV0 dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg bGlzdChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIExpc3QgdGhlIERvbWFpbnMuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgor CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnbm9kZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cydd LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJu cyBhbGwgdGhlIERvbWFpbnMgdG8gZ2VuZXJhdGUgTm9kZXMgaW4gdGhlIGJy b3dzZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFtdCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnbm9kZS5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cg aW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAg ICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAg ICAgICAgICAgICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAgIHJv d1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWRv bWFpbiIKKyAgICAgICAgICAgICAgICApKQorCisgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg UmV0dXJucyB0aGUgRG9tYWluIHByb3BlcnRpZXMuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAg ICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YSA9 IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgIyBUaGUgTGVuZ3RoIGFuZCB0 aGUgcHJlY2lzaW9uIG9mIHRoZSBEYXRhdHlwZSBzaG91bGQgYmUgc2VwYXJh dGUuCisgICAgICAgICMgVGhlIEZvcm1hdCB3ZSBnZXR0aW5nIGZyb20gZGF0 YWJhc2UgaXM6IG51bWVyaWMoMSwxKQorICAgICAgICAjIFNvLCB3ZSBuZWVk IHRvIHNlcGFyYXRlIExlbmd0aDogMSwgUHJlY2lzaW9uOiAxCisgICAgICAg IGlmIGRhdGFbJ2Z1bGx0eXBlJ10gIT0gJycgYW5kIGRhdGFbJ2Z1bGx0eXBl J10uZmluZCgiKCIpID4gMDoKKyAgICAgICAgICAgIHN1YnN0ciA9IGRhdGFb J2Z1bGx0eXBlJ11bZGF0YVsnZnVsbHR5cGUnXS5maW5kKCIoIikgKyAxOmxl bigKKyAgICAgICAgICAgICAgICBkYXRhWydmdWxsdHlwZSddKSAtIDFdCisg ICAgICAgICAgICB0eXBsZW4gPSBzdWJzdHIuc3BsaXQoIiwiKQorICAgICAg ICAgICAgaWYgbGVuKHR5cGxlbikgPiAxOgorICAgICAgICAgICAgICAgIGRh dGFbJ3R5cGxlbiddID0gdHlwbGVuWzBdCisgICAgICAgICAgICAgICAgZGF0 YVsncHJlY2lzaW9uJ10gPSB0eXBsZW5bMV0KKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgZGF0YVsndHlwbGVuJ10gPSB0eXBsZW4KKyAg ICAgICAgICAgICAgICBkYXRhWydwcmVjaXNpb24nXSA9ICcnCisKKyAgICAg ICAgIyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf Y29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsnY29uc3RyYWludHMnXSA9 IHJlc1sncm93cyddCisKKyAgICAgICAgIyBTZXQgU3lzdGVtIERvbWFpbiBT dGF0dXMKKyAgICAgICAgZGF0YVsnc3lzZG9tYWluJ10gPSBGYWxzZQorICAg ICAgICBpZiBkb2lkIDw9IHNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2Rh dGxhc3RzeXNvaWQnXToKKyAgICAgICAgICAgIGRhdGFbJ3N5c2RvbWFpbidd ID0gVHJ1ZQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAg ICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBnZXRfc2NoZW1hcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBk b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBTY2hl bWFzIGZvciB0aGUgcGFydGljdWxhciBkYXRhYmFzZS4KKworICAgICAgICBB cmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAg ICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFi YXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAg ICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAiIiIKKworICAgICAgICBy ZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCkK KyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzog cm93Wyduc3BuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3ZhbHVlJzogcm93Wyduc3BuYW1lJ119KQorCisgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9 cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0 X2NvbGxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgQ29sbGF0aW9u cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAi IiIKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAn J31dCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Nv bGxhdGlvbnMuc3FsJ10pKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICByZXMu YXBwZW5kKHsnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydjb3B5X2Nv bGxhdGlvbiddfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZ2V0X3R5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IFR5cGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAg ICAgICIiIgorCisgICAgICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBzaG91 bGQgYmUgcmVtb3ZlZCBvbmNlCisgICAgICAgICMgVHlwZXMgbW9kdWxlIHdp bGwgYmUgY29tcGxldGVkLgorCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzog JycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdnZXRfdHlwZXMuc3FsJ10pKQorICAgICAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg ICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICB7J2xhYmVs Jzogcm93Wyd0eXBuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAndmFs dWUnOiByb3dbJ3R5cG5hbWUnXX0KKyAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIEB2YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIGNyZWF0ZShzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IENyZWF0ZXMgYSBuZXcgRG9tYWluIG9iamVjdC4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGRvaWQ6IERvbWFpbiBJZAorCisgICAgICAgIFJlcXVpcmVkIEFyZ3M6Cisg ICAgICAgICAgICBuYW1lOiBEb21haW4gTmFtZQorICAgICAgICAgICAgb3du ZXI6IE93bmVyIE5hbWUKKyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBO YW1lCisgICAgICAgICAgICBiYXNldHlwZTogRG9tYWluIEJhc2UgVHlwZQor CisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBEb21haW4gb2JqZWN0 IGluIGpzb24gZm9ybWF0LgorICAgICAgICAiIiIKKworICAgICAgICBkYXRh ID0gc2VsZi5yZXF1ZXN0CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEpCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICAjIFdlIG5lZWQgb2lkIHRvIHRvIGFkZCBvYmplY3QgaW4gdHJlZSBhdCBi cm93c2VyLCBiZWxvdyBzcWwgd2lsbAorICAgICAgICAgICAgIyBnaXZlcyB0 aGUgc2FtZQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbnNwPWRh dGFbJ2Jhc2Vuc3AnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIHN0YXR1cywg ZG9pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1kb2lkKQorCisgICAg ICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2Rl PXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAg ICAgICAgICAgICAgICAgZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgc2Np ZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbiIKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9wcyB0aGUgRG9t YWluIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAor ICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRl JzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9u CisgICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lk KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1uYW1lKQorCisgICAgICAgICAgICBuYW1lLCBiYXNlbnNwID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWU9bmFtZSwgYmFzZW5zcD1iYXNlbnNwLCBjYXNjYWRlPWNhc2NhZGUpCisg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3Nj YWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAg ICAgICBpbmZvPWdldHRleHQoIkRvbWFpbiBkcm9wcGVkIiksCisgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGRv aWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRp ZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAor ICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZCk6CisgICAgICAgICIiIgorICAgICAgICBVcGRhdGVzIHRoZSBEb21haW4g b2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAg ICAgICIiIgorCisgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRfc3Fs KGdpZCwgc2lkLCBzZWxmLnJlcXVlc3QsIHNjaWQsIGRvaWQpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9U1FMKQorCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAg ICAgICAgIGluZm89IkRvbWFpbiB1cGRhdGVkIiwKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBk b2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5m bz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGRvaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6 CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRo ZSBEb21haW4gb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWlu IElkCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2Np ZCwgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11b MF0KKworICAgICAgICAjIEdldCBEb21haW4gQ29uc3RyYWludHMKKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb25zdHJhaW50cy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBkYXRhWydjb25z dHJhaW50cyddID0gcmVzWydyb3dzJ10KKworICAgICAgICAjIFRvZ2dsZSBW YWxpZGF0ZSBhbmQgaW5oZXJpdCBvcHRpb25zIGZvciAnQ1JFQVRFIFF1ZXJ5 JworICAgICAgICBmb3IgYyBpbiBkYXRhWydjb25zdHJhaW50cyddOgorICAg ICAgICAgICAgY1snY29udmFsaWRhdGVkJ10gPSBGYWxzZSBpZiBjWydjb252 YWxpZGF0ZWQnXSBlbHNlIFRydWUKKyAgICAgICAgICAgIGNbJ2Nvbm5vaW5o ZXJpdCddID0gRmFsc2UgaWYgY1snY29ubm9pbmhlcml0J10gZWxzZSBUcnVl CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVl c3QKKyAgICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBk b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUg bW9kaWZpZWQgU1FMLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBn aWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIg SWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElk CisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5hbWU6 IERvbWFpbiBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFtZQor ICAgICAgICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAgICAg IGJhc2V0eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRh dGUgdGhlIERvbWFpbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc3RhdHVz LCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIHNlbGYucmVxdWVzdCwg c2NpZCwgZG9pZCkKKworICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRh dGE9U1FMLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwK KworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lk LCBkb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGVz IHRoZSBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21h aW4uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAg IiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZG9pZCBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NpZD1zY2lkLCBkb2lkPWRvaWQpCisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKwor ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVz Wydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTAorCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgZQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQg dGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAg ICAgIGZvciB0aGUgRG9tYWluIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lk OiBEb21haW4gSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNf cmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIGRvaWQp CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlc3BvbnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJl dHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRG9tYWluIG5v ZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAg IiIiCisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9k ZXBlbmRlbmNpZXMoc2VsZi5jb25uLCBkb2lkKQorICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICApCisKK0RvbWFpblZpZXcucmVnaXN0ZXJfbm9k ZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvX19pbml0 X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcw ZTU4NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs NjQwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisiIiJUaGUgRG9tYWluIENvbnN0cmFpbnQgTW9kdWxlLiIiIgorCitp bXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRl LCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNr LmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2Vf cmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vy cm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGls ZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGlt cG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJv d3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMu ZG9tYWlucyBcCisgICAgYXMgZG9tYWlucworZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJvbSBwZ2Fk bWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBjb25m aWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIGZ1bmN0b29scyBp bXBvcnQgd3JhcHMKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50TW9kdWxl KENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICBjbGFzcyBE b21haW5Db25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToK KworICAgICAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgVGhlIERvbWFpbiBD b25zdHJhaW50IE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0t LQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgLSBJ bml0aWFsaXplIHRoZSBEb21haW4gQ29uc3RyYWludCBNb2R1bGUuCisKKyAg ICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBH ZW5lcmF0ZSB0aGUgRG9tYWluIENvbnN0cmFpbnQgY29sbGVjdGlvbiBub2Rl LgorCisgICAgKiBub2RlX2lub2RlKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisg ICAgICAtIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUgRG9t YWluIENvbnN0cmFpbnQgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAqIHNj cmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBm b3IgdGhlIERvbWFpbiBDb25zdHJhaW50LCB3aGVuIGFueSBvZiB0aGUKKyAg ICAgICAgRG9tYWluIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisg ICAgTk9ERV9UWVBFID0gJ2RvbWFpbi1jb25zdHJhaW50cycKKyAgICBDT0xM RUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRG9tYWluIENvbnN0cmFpbnRzIikK KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgor ICAgICAgICBzdXBlcihEb21haW5Db25zdHJhaW50TW9kdWxlLCBzZWxmKS5f X2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYubWluX3Zl ciA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAg ZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBEb21haW4g Q29uc3RyYWludCBjb2xsZWN0aW9uIG5vZGUuCisgICAgICAgICIiIgorICAg ICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9u b2RlKGRvaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9k ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoaXMg cHJvcGVydHkgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisgICAg ICAgICIiIgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0 eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisg ICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIHRoZSBEb21haW4g Q29uc3RyYWludCwgd2hlbiBhbnkgb2YgdGhlCisgICAgICAgIERvbWFpbiBu b2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0 dXJuIGRvbWFpbnMuRG9tYWluTW9kdWxlLk5PREVfVFlQRQorCisKK2JsdWVw cmludCA9IERvbWFpbkNvbnN0cmFpbnRNb2R1bGUoX19uYW1lX18pCisKKwor Y2xhc3MgRG9tYWluQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToK KyAgICAiIiIKKyAgICBjbGFzcyBEb21haW5Db25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgorCisgICAgVGhpcyBjbGFzcyBpbmhlcml0cyBQR0No aWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVzIGZvcgor ICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVzcG9uc2li bGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBvcGVyYXRp b25zIGZvcgorICAgIHRoZSBEb21haW4gQ29uc3RyYWludC4KKworICAgIE1l dGhvZHM6CisgICAgLS0tLS0tLQorCisgICAgKiBtb2R1bGVfanMoKToKKyAg ICAgIC0gT3ZlcnJpZGVzIHRoaXMgcHJvcGVydHkgdG8gZGVmaW5lIGphdmFz Y3JpcHQgZm9yIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAgICAqIGNo ZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgIC0gV29ya3MgYXMgYSBkZWNv cmF0b3IuCisgICAgICAtICBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBz dGF0dXMuCisgICAgICAtICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5k IHRlbXBsYXRlIHBhdGguCisKKyAgICAqIGxpc3QoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCk6CisgICAgICAtIExpc3QgdGhlIERvbWFpbiBDb25zdHJh aW50cy4KKworICAgICogbm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAtIFJldHVybnMgYWxsIHRoZSBEb21haW4gQ29uc3RyYWludHMgdG8g Z2VuZXJhdGUgTm9kZXMgaW4gdGhlIGJyb3dzZXIuCisKKyAgICAqIHByb3Bl cnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIFJl dHVybnMgdGhlIERvbWFpbiBDb25zdHJhaW50IHByb3BlcnRpZXMuCisKKyAg ICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gQ3Jl YXRlcyBhIG5ldyBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAq IHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0g VXBkYXRlcyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAg KiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAt IERyb3BzIHRoZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAq IHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAg LSBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBEb21haW4gQ29uc3RyYWludCBv YmplY3QuCisKKyAgICAqIG1zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FMLgor CisgICAgKiBnZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkPU5v bmUpOgorICAgICAgLSBHZW5lcmF0ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRv IGNyZWF0ZS91cGRhdGUgdGhlIERvbWFpbiBDb25zdHJhaW50LgorICAgICAg ICBvYmplY3QuCisKKyAgICAqIGRlcGVuZGVudHMoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAtIFJldHVybnMgdGhlIGRlcGVu ZGVudHMgZm9yIHRoZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAg ICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBj b2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0 aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorICAgICIiIgorICAgIG5v ZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9p ZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30s CisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9LAorICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2RvaWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnY29pZCd9CisgICAgXQor CisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWwor ICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAn ZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0 JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAg ICAgICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAg ICAgJ2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAg ICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9 XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAg ICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwK KyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisg ICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9 XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRz J31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAn bW9kdWxlX2pzJ31dCisgICAgfSkKKworICAgIGRlZiBtb2R1bGVfanMoc2Vs Zik6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlkZXMgdGhpcyBwcm9w ZXJ0eSB0byBkZWZpbmUgamF2YXNjcmlwdCBmb3IgRG9tYWluIENvbnN0cmFp bnQgbm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICJkb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNvbnN0 cmFpbnRzLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdldHRleHQKKyAgICAg ICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVudC1UeXBlJzog J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAgICkKKworICAg IGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAg ICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAgQ2hlY2tzIGRh dGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAgICBBdHRhY2ggY29u bmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVS KQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rp b25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5j b25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlk J10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVu dAorCisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiBy ZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNl bGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4g cHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBn ZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9z dCEiKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgdmVyID0g c2VsZi5tYW5hZ2VyLnZlcnNpb24KKworICAgICAgICAgICAgIyB3ZSB3aWxs IHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAg ICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVt cGxhdGVfcGF0aCA9ICdkb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVz JworICAgICAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdz LCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlz dCB0aGUgRG9tYWluIENvbnN0cmFpbnRzLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9p ZDogRG9tYWluIElkCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhbGwgdGhlIERv bWFpbiBDb25zdHJhaW50cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2Vy dmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAg ICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFp biBJZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25v ZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAg ICAgICAgICAgICAgIGRvaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1sn bmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWRvbWFp bi1jb25zdHJhaW50cyIKKyAgICAgICAgICAgICAgICApKQorCisgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRh PXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgRG9tYWluIENvbnN0cmFpbnRz IHByb3BlcnR5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisg ICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAg ICAiIiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQsIGNvaWQ9Y29p ZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg cmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlcyBhIG5ldyBEb21haW4g Q29uc3RyYWludCBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21h aW4gSWQKKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAgICAgICAgICAg bmFtZTogIENvbnN0cmFpbnRzIE5hbWUKKyAgICAgICAgICAgIGNvbnNyYzog Q29uc3RyYWludHMgQ2hlY2sKKworICAgICAgICBSZXR1cm5zOgorICAgICAg ICAgICAgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0IGluIGpzb24gZm9ybWF0 LgorICAgICAgICAiIiIKKworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIFwKKyAgICAgICAgICAgIGpzb24ubG9h ZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAgICByZXF1aXJlZF9h cmdzID0gWworICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAgICAgJ2Nv bnNyYycKKyAgICAgICAgXQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWly ZWRfYXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAg ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAg ICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNn PWdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3Qg ZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFyZworICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgICMgR2V0IFNjaGVtYSBhbmQgRG9tYWlu LgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnZXRfZG9tYWluLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgZG9tYWluLCBzY2hlbWEgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBkb21haW49ZG9tYWluLCBzY2hlbWE9c2NoZW1hKQorICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FM KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgIyBHZXQgdGhlIHJlY2VudGx5IGFkZGVkIGNvbnN0 cmFpbnRzIG9pZAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRv aWQsIG5hbWU9ZGF0YVsnbmFtZSddKQorICAgICAgICAgICAgc3RhdHVzLCBj b2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1kb2lkKQorCisgICAgICAg ICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNl bGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAg ICAgICAgICAgICAgY29pZCwKKyAgICAgICAgICAgICAgICAgICAgZG9pZCwK KyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAgICAg ICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbi1jb25zdHJhaW50cyIKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAg ICBEcm9wcyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBE b21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQsIGNv aWQ9Y29pZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAg ICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJEb21haW4gQ29uc3RyYWludCBk cm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICdz Y2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwK KyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAg ICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlcyB0aGUgRG9tYWlu IENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9t YWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJ ZAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBp ZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisgICAgICAgICAgICBqc29uLmxvYWRz KHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKworICAgICAgICBzdGF0dXMsIFNR TCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwg Y29pZCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBTUUwgYW5k IHN0YXR1czoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89 IkRvbWFpbiBDb25zdHJhaW50IHVwZGF0ZWQiLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGNv aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZG9pZCc6IGRvaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3Ro aW5nIHRvIHVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogY29pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdkb2lkJzogZG9pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lk JzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIFNRTCBmb3IgdGhlIERvbWFp biBDb25zdHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAg ICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDog U2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERv bWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9tYWluIENvbnN0cmFpbnQg SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBHZXQgU2NoZW1hIGFuZCBE b21haW4uCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfZG9tYWluLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9pZCkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmFtZSkKKworICAgICAg ICBkb21haW4sIHNjaGVtYSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBkYXRhID0g cmVzWydyb3dzJ11bMF0KKyAgICAgICAgZGF0YVsnY29udmFsaWRhdGVkJ10g PSBGYWxzZSBpZiBkYXRhWydjb252YWxpZGF0ZWQnXSBlbHNlIFRydWUKKyAg ICAgICAgZGF0YVsnY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBkYXRhWydj b25ub2luaGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZD1Ob25lKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTC4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9t YWluIENvbnN0cmFpbnQgSWQKKworICAgICAgICBSZXF1aXJlZCBBcmdzOgor ICAgICAgICAgICAgbmFtZTogICBDb25zdHJhaW50cyBOYW1lCisgICAgICAg ICAgICBjb25zcmM6IENvbnN0cmFpbnRzIENoZWNrCisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIERvbWFpbiBDb25zdHJhaW50IG9iamVjdCBp biBqc29uIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBy ZXF1ZXN0LmFyZ3MKKworICAgICAgICBpZiBjb2lkIGlzIE5vbmU6CisgICAg ICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgICAgICdu YW1lJywKKyAgICAgICAgICAgICAgICAnY29uc3JjJworICAgICAgICAgICAg XQorCisgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Cisg ICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgICAg IGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMp LiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMsIFNRTCA9IHNlbGYuZ2V0 X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29pZCkKKyAgICAg ICAgaWYgc3RhdHVzIGFuZCBTUUw6CisgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9U1FMLAor ICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwKKworICAgIGRl ZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkLCBj b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGVzIHRo ZSBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21haW4g Q29uc3RyYWludC4KKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQK KyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElkCisgICAg ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBjb2lkIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkb2lkPWRvaWQsIGNvaWQ9Y29pZCkKKyAgICAgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor CisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2Vs Zi5jb25uCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RvbWFpbi5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvaWQ9ZG9pZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmFtZSkK KworICAgICAgICAgICAgICAgIGRvbWFpbiwgc2NoZW1hID0gcmVzWydyb3dz J11bMF0KKworICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKyAg ICAgICAgICAgIHJldHVybiBUcnVlLCBTUUwKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5k IHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRG9tYWlu IENvbnN0cmFpbnQgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZ2lkOiAgU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6ICBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogIERhdGFiYXNlIElkCisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERv bWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9tYWluIENvbnN0cmFpbnQg SWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0g c2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIGNvaWQpCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3Bv bnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCBkb2lkLCBjb2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRG9tYWluIENvbnN0 cmFpbnQgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAor ICAgICAgICAgICAgY29pZDogRG9tYWluIENvbnN0cmFpbnQgSWQKKyAgICAg ICAgIiIiCisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdl dF9kZXBlbmRlbmNpZXMoc2VsZi5jb25uLCBjb2lkKQorICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1k ZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICApCisKK0RvbWFpbkNvbnN0cmFpbnRWaWV3 LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9zdGF0 aWMvaW1nL2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzLnBuZyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcv Y29sbC1kb21haW4tY29uc3RyYWludHMucG5nCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLmQ2MmUxMzcwNWM1MGU2YzBjZjhmMTlkNjgwMDUzZTg2NDNlMjg3 NTEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxNAp6Y21lQVNATj8ob2xI eWB1VkJxIWlhMHZwXjB3QiE3Mz8kIyllRlBGdjNHZk1WMT0yVHJPODQ3e0ps YHx0YFFwYXMKem48aFMrbD1yTVk+UkdQcXZseWRpelJKJj5CYE9tI1Z9Ui15 T00/N0A4NjJNN05DUj4+M3Becj1md1R1MHlQZUZvCnoxMlRMKVRedkk9dHx1 b1BVfHxaRjx0Z2FIRypRc1EhP20mVHE9PzNtQ3V9SiNEeDN4QG1NfX1eaUU9 NU5JV1huawp6a3BuQzRhaSVhPkA7R2c3PXV1bXM9OWJJSz1FZ2R+KHVzLTNn QEl2MDJnZnNLXkpQXilnSD1taEJUNztkT0ghP3AKemkmQjlVZ09QIXVmdiV5 RXU3UDJRayU1KG92NllGNXd0PWFZZnF9KExSWEckNXglbnhYWF9YS1MyOXt0 QUFrfGd8ClhXKUthaHJpWlFwWUdDa21ePmJQMGwrWGtLeXlSVX0KCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvZG9tYWlu LWNvbnN0cmFpbnRzLWJhZC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25zdHJh aW50cy1iYWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYTA0NWI4 ZmFmZGMwODY0MGQ1M2IyYTg2YjFkY2FiY2IwZmUwZmQKR0lUIGJpbmFyeSBw YXRjaApsaXRlcmFsIDU3OQp6Y21WLUowPSlmK1ApPGg7M0t8TGswMDBlMU5K TFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+UHgk QVclJEhNUjFaOSNRKkBSRUhtZEhBbTw8Oz1wYGxURGw2JExFMTUkfG5NNnl4 SjMjNiZGfV4pUXg8cDNuCnpII2g0eklLKU91Izc5ZlRNQCNISktrWSg4P0wk UUVMYENqSk1lYXNNP25nKDtRQj58b05iWDJVP24rQVVPSDEhZQp6T3oleGk/ QGRuY1BFWEtSUz9eQ3ojYW10UVFCbSt4UXQocSNAS2FScVI4O1UpUnE8OTxA bUUqWVZxKGB+VikwdkIKeitHUzwpVlBXJVBWJT0kSmFnIUpIWGxWNnFaU2Ao JF9IdUgzcGQ8RW5jSl9DN2YxQFhXcWJHdT5EdT04dWhwakopCnp2TjRhZ0g8 aTNVck1ZZ1d5SzxleU4xVnErcDJ0YkEhRzVDM1BPIW0kcXxIdlYjRCR+Sk9z djtmdGtfcXYtQ2VRWAp6VCpjQyUkSjM7Pjw2X0wkdDxLcjgpIXd8ckBvPmNQ YW00WCorfm1pYF5Le0dsY3x4aDxOZE4hPDBkIUpNUXZnOGIKeiprJTkjMDBD bDRNPz9VSzFzekJMMDAwU2FOTGgwTDAxRmNVMDFGY1YwR2daXzAwMDA3YlYq R2AyaXBmMzQ8Uk9nCnoocDcyejAwNTZrTF90Ji0pMXsyWjNjXnFUMW1ERW9k eTZJWnVDVyZzMVYhYF40fSRnb2U/KDE4QGIyRGIqaip3MQp6JTRNKHA7Jlp3 PzlaYUtBeG8qeDtDT1h9PDhmempxS1J2XjJrRjFzcHltWUhNakUybTdIbHxh fmVtQ053RzgoaT8KejhJI2BgKGtpQnJFYmh9KFFuOFRMMiskfWIzSG5eN3Bg SzZSI182elEyJD91eDtsWEJZQj5oa05AQyVnPzR2VkJNClIkYmJMPDAwMm92 UERITGtWMW1pbjBPU0F3CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9zdGF0aWMv aW1nL2RvbWFpbi1jb25zdHJhaW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uOWQxZDJhMDYxYzc5NDgxNjhkN2IxYzI0NzRkNzY5YjMxNzA5ZjFj ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDA2CnpjbWVBU0BOPyhvbEh5 YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9WEBGME5FMDh7VlkybmhIY15l TWFVJWpgZAp6YUkkIytIdUVLQ3twS0VaS1luPmgoK2FJTUheTWpHamNzM31m OUNxeXQmZnZ4N0FUKil4dl5gTDtoZntIaV9pUDQKenhnSyUmVj9xNjVfNGMq Ozh9RyU7Sk1NWTxTTE1fX19NNEJpOXtFXiE8WVVwWCZuMWdhYDdQZ0Z3RWtk UyEoI1A8CnpObiZATjlPcWlLKGkmKG5WQFolLUZvVk9oOCktbGVYTXNtI0Zf ODhFVzREdnBjMGZqaXI7QjVWI08zNksxc24hTwp6aFJWZn01alNzR1BIP2Y8 eHVkY3x2Qm9ZPCY1Y2I9dVRHQjl2MTg3SjRJSStpdDU/amhuOEZ7VHNDWklX UmFkJEQKemcxKks5VyVjdTJOc0QoaEVmVlQjKndtI3BZdztEMDQrMEUodVFF P3NgWjYqWlhvcVR2WWVZIyhWbzlvMWEjMVJmCnpWbFhsPUd8KTlQKGxzeSlG KjJ8K0Z9NS0+KEtheChHQkJ7MXNWYXd9QXZacklHcCFQJCFOM3glMGlAYz56 em18ewpUKWIhOWJLbilDQHU2ezEtb0QhTTw9NE9eawoKbGl0ZXJhbCAwCkhj bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9jc3MvZG9tYWluLWNvbnN0cmFpbnRzLmNzcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvY3NzL2RvbWFpbi1jb25zdHJhaW50cy5jc3MKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdiNjYxMgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvY3Nz L2RvbWFpbi1jb25zdHJhaW50cy5jc3MKQEAgLTAsMCArMSw4IEBACisucGct aWNvbi1kb21haW4tY29uc3RyYWludHMgeworICBiYWNrZ3JvdW5kLWltYWdl OiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtZG9tYWluLWNvbnN0cmFpbnRzLnN0 YXRpYycsIGZpbGVuYW1lPSdpbWcvZG9tYWluLWNvbnN0cmFpbnRzLnBuZycp IH19JykgIWltcG9ydGFudDsKKyAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAg YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVu dDogY2VudGVyOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWln aHQ6IDEuM2VtOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9qcy9kb21haW4tY29uc3RyYWludHMuanMgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL2pzL2RvbWFpbi1jb25zdHJhaW50cy5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWUyM2E4Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9k b21haW4tY29uc3RyYWludHMuanMKQEAgLTAsMCArMSwxMjkgQEAKKy8vIERv bWFpbiBDb25zdHJhaW50IE1vZHVsZTogQ29sbGVjdGlvbiBhbmQgTm9kZQor ZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3Vu ZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2Vy JywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10s CitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5KSB7CisKKyAgLy8gRGVmaW5lIERvbWFpbiBDb25zdHJhaW50IENvbGxl Y3Rpb24gTm9kZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21h aW4tY29uc3RyYWludHMnXSkgeworICAgIHZhciBkb21haW5fY29uc3RyYWlu dHMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluLWNvbnN0 cmFpbnRzJ10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24u ZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycs CisgICAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRzJykg fX0nLAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4tY29uc3RyYWludHMn CisgICAgICB9KTsKKyAgfTsKKworICAvLyBEb21haW4gQ29uc3RyYWludCBO b2RlCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydkb21haW4tY29uc3RyYWlu dHMnXSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZG9tYWluLWNv bnN0cmFpbnRzJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAg dHlwZTogJ2RvbWFpbi1jb25zdHJhaW50cycsCisgICAgICBsYWJlbDogJ3t7 IF8oJ0RvbWFpbiBDb25zdHJhaW50cycpIH19JywKKyAgICAgIGNvbGxlY3Rp b25fdHlwZTogJ2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzJywKKyAgICAgIGhh c1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBw YXJlbnRfdHlwZTogWydkb21haW4nXSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9u KCkgeworICAgICAgICAvLyBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24g b2YgbWVudXMKKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAg ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9 IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAg ICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluX29uX2NvbGwnLCBub2RlOiAn Y29sbC1kb21haW4tY29uc3RyYWludHMnLCBtb2R1bGU6IHRoaXMsCisgICAg ICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFj azogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5 OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRG9tYWlu IENvbnN0cmFpbnQuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFi SWNvbiBpY29uLWRvbWFpbi1jb25zdHJhaW50cycsIGRhdGE6IHthY3Rpb246 ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAn Y2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX2RvbWFpbi1jb25zdHJhaW50cycsIG5vZGU6ICdkb21haW4tY29uc3Ry YWludHMnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydv YmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3Bl cnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3Jp dHk6IDQsIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnQuLi4nKSB9 fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbi1j b25zdHJhaW50cycsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazog dHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAg ICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2RvbWFpbi1jb25zdHJh aW50cycsIG5vZGU6ICdkb21haW4nLCBtb2R1bGU6IHRoaXMsCisgICAgICAg ICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazog J3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAn Y3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRG9tYWluIENv bnN0cmFpbnQuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNv biBpY29uLWRvbWFpbi1jb25zdHJhaW50cycsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnLCBjaGVjazogZmFsc2V9LAorICAgICAgICAgIGVuYWJsZTogJ2Nh bkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKworICAgICAgfSwK KyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLAorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2Rl Lk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAg ICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIGRlc2NyaXB0aW9uOiB1 bmRlZmluZWQsCisgICAgICAgICAgY29uc3JjOiB1bmRlZmluZWQsCisgICAg ICAgICAgY29ubm9pbmhlcml0OiB1bmRlZmluZWQsCisgICAgICAgICAgY29u dmFsaWRhdGVkOiB1bmRlZmluZWQKKyAgICAgICAgfSwKKyAgICAgICAgLy8g RG9tYWluIENvbnN0cmFpbnQgU2NoZW1hCisgICAgICAgIHNjaGVtYTogW3sK KyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9 fScsIHR5cGU6J3RleHQnLCBjZWxsOidzdHJpbmcnLAorICAgICAgICAgIGRp c2FibGVkOiAnaXNEaXNhYmxlZCcKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiAne3sgXygnQ29tbWVudCcpIH19 JywgdHlwZTogJ211bHRpbGluZScsIGNlbGw6CisgICAgICAgICAgJ3N0cmlu ZycsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBk aXNhYmxlZDogZnVuY3Rpb24KKyAgICAgICAgIChtKSB7IHJldHVybiAhbS5p c05ldygpOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29uc3Jj JywgbGFiZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGlu ZScsIGNlbDoKKyAgICAgICAgICAnc3RyaW5nJywgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLAorICAgICAg ICAgICdjcmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkg eyByZXR1cm4gIW0uaXNOZXcoKTsgfQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2Nvbm5vaW5oZXJpdCcsIGxhYmVsOiAne3sgXygnTm8gSW5oZXJp dCcpIH19JywgdHlwZToKKyAgICAgICAgICAnc3dpdGNoJywgY2VsbDogJ2Jv b2xlYW4nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIG1vZGU6 CisgICAgICAgICAgWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10s IGRpc2FibGVkOiAnaXNEaXNhYmxlZCcKKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDogIkRvbid0IFZhbGlkYXRl IiwgdHlwZTogJ3N3aXRjaCcsIGNlbGw6CisgICAgICAgICAgJ2Jvb2xlYW4n LCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGRpc2FibGVkOiAn aXNEaXNhYmxlZCcsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCAnZWRp dCddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29udmFsaWRhdGVk JywgbGFiZWw6ICd7eyBfKCdWYWxpZD8nKSB9fScsIHR5cGU6ICdzd2l0Y2gn LCBjZWxsOgorICAgICAgICAgICdib29sZWFuJywgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH1dLAorICAg ICAgICAvLyBDbGllbnQgU2lkZSBWYWxpZGF0aW9uCisgICAgICAgIHZhbGlk YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisg ICAgICAgICAgICAgIGVycm1zZzsKKworICAgICAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKHRoaXMuZ2V0KCduYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgn bmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Cisg ICAgICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBub3Qg YmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNn IHx8IGVyclsnbmFtZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdjb25zcmMnKSkgfHwgU3RyaW5n KHRoaXMuZ2V0KCdjb25zcmMnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBf KCdDaGVjayBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAg IGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2NvbnNyYyddOworICAgICAgICAg IH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChl cnIpOworCisgICAgICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7CisgICAgICAg ICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVycm1zZ30p OworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9CisK KyAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB9LAorICAgICAg ICBpc0Rpc2FibGVkOiBmdW5jdGlvbihtKXsKKyAgICAgICAgICBpZiAoIW0u aXNOZXcoKSkgeworICAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9k ZV9pbmZvLnNlcnZlcjsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIudmVyc2lv biA8IDkwMjAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICB9KSwKKyAgfSk7 CisKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbidd OworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRz L3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmJhZDcyCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEgYW5kIHNj aGVtYSBhbmQgZG9tYWluICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7 IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IENIRUNLICh7eyBkYXRhLmNv bnNyYyB9fSk7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwYzNj MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSw0IEBACit7 JSBpZiBkYXRhICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KGRh dGEubnNwbmFtZSwgZGF0YS5yZWxuYW1lKSB9fQorICAgIERST1AgQ09OU1RS QUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3Nx bC85LjFfcGx1cy9nZXRfZG9tYWluLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9kb21haW4uc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDBjMGUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25z dHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFf cGx1cy9nZXRfZG9tYWluLnNxbApAQCAtMCwwICsxLDggQEAKK1NFTEVDVAor ICAgIGQudHlwbmFtZSBhcyBkb21haW4sIGJuLm5zcG5hbWUgYXMgc2NoZW1h CitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfbmFtZXNwYWNl IGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBkLm9p ZCA9IHt7ZG9pZH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTllMDhjCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QK KyAgICBvaWQsIGNvbm5hbWUgYXMgbmFtZQorRlJPTQorICAgIHBnX2NvbnN0 cmFpbnQKK1dIRVJFCisgICAgY29udHlwaWQgPSB7e2RvaWR9fTo6b2lkCisg ICAgQU5EIGNvbm5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9w cm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3Fs LzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjk1YjczMTAKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1w bGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9wcm9wZXJ0 aWVzLnNxbApAQCAtMCwwICsxLDMwIEBACitTRUxFQ1QKKyAgICAnVEFCTEUn IEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25uYW1lIGFzIG5hbWUsIHJlbG5h bWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHBnX2dldF9leHByKGNv bmJpbiwgY29ucmVsaWQsIHRydWUpIGFzIGNvbnNyYworRlJPTQorICAgIHBn X2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX2NsYXNzIGNsIE9OIGNsLm9p ZD1jb25yZWxpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBubC5v aWQ9cmVsbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNj cmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5jbGFz c29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBj b250eXBlID0gJ2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9fTo6b2lkCitV TklPTgorU0VMRUNUCisgICAgJ0RPTUFJTicgQVMgb2JqZWN0a2luZCwgYy5v aWQsIGNvbm5hbWUgYXMgbmFtZSwgdHlwbmFtZSBhcyByZWxuYW1lLCBuc3Bu YW1lLCBkZXNjcmlwdGlvbiwKKyAgICByZWdleHBfcmVwbGFjZShwZ19nZXRf Y29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxc KS4qJywgRSdcXDEnKSBhcyBjb25zcmMKK0ZST00KKyAgICBwZ19jb25zdHJh aW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQK K0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVz cGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVz IE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2Nv bnN0cmFpbnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9ICdj JyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAoreyUgaWYgY29pZCAl fQorICBBTkQgYy5vaWQgPSB7eyBjb2lkIH19Cit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3Bs dXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3Fs LzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDU3NDQzMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwK QEAgLTAsMCArMSw0IEBACit7JSBpZiBkYXRhLm5hbWUgJX0KK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5y ZWxuYW1lKSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUwZTQ4 NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw4IEBACit7 JSBpZiBkYXRhIGFuZCBzY2hlbWEgYW5kIGRvbWFpbiAlfQorQUxURVIgRE9N QUlOIHt7IGNvbm58cXRJZGVudChzY2hlbWEsIGRvbWFpbikgfX0KKyAgICBB REQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBD SEVDSyAoe3sgZGF0YS5jb25zcmMgfX0peyUgaWYgZGF0YS5jb252YWxpZGF0 ZWQgJX0KKworICAgIE5PVCBWQUxJRHslIGVuZGlmICV9eyUgaWYgZGF0YS5j b25ub2luaGVyaXQgJX0KKworICAgIE5PIElOSEVSSVR7JSBlbmRpZiAlfTsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0 cmFpbnRzL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFp bi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEg JX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uc3BuYW1l LCBkYXRhLnJlbG5hbWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNv bm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFp bnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVz L2dldF9kb21haW4uc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21h aW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9z cWwvOS4yX3BsdXMvZ2V0X2RvbWFpbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMTA0MGMwZQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3Rl bXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9k b21haW4uc3FsCkBAIC0wLDAgKzEsOCBAQAorU0VMRUNUCisgICAgZC50eXBu YW1lIGFzIGRvbWFpbiwgYm4ubnNwbmFtZSBhcyBzY2hlbWEKK0ZST00KKyAg ICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4u b2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQub2lkID0ge3tkb2lk fX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3Nx bC85LjJfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OWUwOGMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9n ZXRfb2lkLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIG9pZCwg Y29ubmFtZSBhcyBuYW1lCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hF UkUKKyAgICBjb250eXBpZCA9IHt7ZG9pZH19OjpvaWQKKyAgICBBTkQgY29u bmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMv cHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uODBiN2NlZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBA IC0wLDAgKzEsMjkgQEAKK1NFTEVDVAorICAgICdUQUJMRScgQVMgb2JqZWN0 a2luZCwgYy5vaWQsIGNvbm5hbWUgYXMgbmFtZSwgcmVsbmFtZSwgbnNwbmFt ZSwgZGVzY3JpcHRpb24sCisgICAgcGdfZ2V0X2V4cHIoY29uYmluLCBjb25y ZWxpZCwgdHJ1ZSkgYXMgY29uc3JjLCBjb25ub2luaGVyaXQsIGNvbnZhbGlk YXRlZAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBn X2NsYXNzIGNsIE9OIGNsLm9pZD1jb25yZWxpZAorSk9JTgorICAgIHBnX25h bWVzcGFjZSBubCBPTiBubC5vaWQ9cmVsbmFtZXNwYWNlCitMRUZUIE9VVEVS IEpPSU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9 Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2Ns YXNzKQorV0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb25yZWxpZCA9 ICB7e2RvaWR9fTo6b2lkCitVTklPTgorU0VMRUNUCisgICAgJ0RPTUFJTicg QVMgb2JqZWN0a2luZCwgYy5vaWQsIGNvbm5hbWUgYXMgbmFtZSwgdHlwbmFt ZSBhcyByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlwdGlvbiwKKyAgICByZWdl eHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSks IEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywKKyAgICAgIEUnXFwxJykgYXMgY29u c3JjLCBjb25ub2luaGVyaXQsIGNvbnZhbGlkYXRlZCAgRlJPTSBwZ19jb25z dHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlw aWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X2NvbnN0cmFpbnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9 ICdjJyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAoreyUgaWYgY29p ZCAlfQorICBBTkQgYy5vaWQgPSB7eyBjb2lkIH19Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv c3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZDU3NDQzMAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5z cWwKQEAgLTAsMCArMSw0IEBACit7JSBpZiBkYXRhLm5hbWUgJX0KK0FMVEVS IERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0 YS5yZWxuYW1lKSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChvX2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRh dGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2ltZy9jb2xsLWRvbWFp bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU2MjE1MjhhMWRiYTQ5 Mjg1MzhmZTU1NTdiOWI5ODhlZDc4ZDZhYgpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgNDYyCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5 bGBHYkt9VTRUIUJFMEJKZW9xZlc9O2dGezBQRDhfbwp6aSZwTl8oSylCN2BG UGklMml4YEB2OUxVKHROVVEqIUsxY3pYT3h1Z2dvR1RfKCNwQHpmNEp3ISF6 SFYpYDNGN1QKemQtVW19SH1gaVJJaWpjY0BXcSM+JnB0a1JgU3N6RzU0VXo2 elc0bWc/TUxzZ1o5amJiPkV+eSF6VFNCOWBSZTEoCnpqUzFTOTkoXzloQFlD NGBBNVkpXl9ePkBKMytNdklrfDRpZTI4VS1pKHRzUyEwKn1hSUFuZ0loWllR KHRmUSl1ZQp6N3NuOFolYnxVQCNoTWdFU1V2czR3S29TeE8+fntPPS1ZcSQ4 XyFyKS1eZSU0LWw2Zi1Kb3gxJTh9RklWeD5GQ1cKelBNVndsdVFHYmtQMWJj U3dWVjBkXz9QWmJaVmlzJUhlWVRXeVUqJE92WXAkdVRjM1FMYkQ/MnRyT25E dWhaYT5mCno9M2Rfeyh6RVI5eHQoPG4zVXNCSTRTTkM/WSFyQlc8bTJgbj55 RFJ5ZyR1b0U4UXh9Ym8xRDBxdzt0I3UpZV9mOwp6bDlhQGZSSUI4b1IzT0Qq V01GOFpZaU9pdlU+SVUjVX1hKSNXbiFYalV9fE14VUA9b3c0bjskNWVvQUlx Qn05WFAKZUMwR01Vd1V2UHhNOG0xK3A9KkV8Nyg4QTVULUdAeUd5d29SQ0My TGoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2ltZy9kb21haW4tc20ucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0aWMvaW1nL2RvbWFpbi1zbS5w bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUyMWNkZGVhYWFmMGVlNGUz YzYwZTk0ODA3OGQ3MGUxN2UwNjg5MwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy YWwgNDAxCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBH Ykt9VDdYWjhFMERldTlldSpWO2dGezBLYHBJZwp6YzZLYHI0SWVJQWN9UTNI eFZgPTN5K0B4dWRVSnBHa3QyRn5Qb0k1IV43OEEkQ20oTEBKYmNZUj07NGJt X252PmIKentwa0kqP1Q3RCNneWlTdktZUjd7X1M0VGRvX3hPZ187WGB8X043 T2smT2lLZ19RQSl+X2RsTG84NXt3JGlMb1RlCnpGUE9wTSpeTStIaHFKJlZ2 S1VCdmZVKD1qWSYjJCQkPHhJI01CO01xYElBQnAyMFJUOXdVWGthTCgxUihw T24/Ywp6PjM4PCtlPkthTjJ7JTBKZEBzTWJZJCsxM1omJVo8JSFQKypTTnUr Iyh7UnI9e19LeFVoc3dIZElEMFFXVENCdkQKeilea3k7QGd1YEUjUkFDI2xg SmNuZWxTMHJ4a0tON2IxQj5INTZnWCkwJlA8KmFnOFdSTmkwZFZOLWp6VFFW ZDIwCnpoNmNLWk0hRSl1QXd+dlBDZE83S0NmV3czUnQ1JFpHZ2FrS0gwMCl8 V1RzVUBHI0ZUZEhHb3VHOEpJeWRvU0dpRwpRMkI/OS0pNzgmcW9sYDsrMDNf cTNnYTd+bAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0aWMvaW1nL2RvbWFpbi5wbmcg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9pbWcvZG9tYWluLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmNhOTI5MzI1ODU0YjhmMzQ3 ODc0MjVlODA5NGQwOGM3NTk4M2JjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh bCA0MjQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdi S31QSm1Ce0UwQkplb3FmVz07Z0Z7MFBEOF43CnppJnM2YGJMOG94SH1gaVJk SFU/KmxiMnJ+Sl42VGg9aXheJHpUU1dTPD9mPm9IK0NIVWFefXBWZmBhV3ZN dDdmbQp6eCY4Rj5qZmR+QVkoSEZgbVVpUkc9Vzk8c1V3UUJAS1I+QFFMSG8r JVBadUEzSXspeX4qJDFEX0pvdEYoe3p2SHQKem8ldWxmNyl5ZnVmKkJtMS1B RHMrSTE0LT9pLUVLVTdgdlUhd2dXUFhKelgzX0JyY2JwZT1YRmNBbVNGTmVD M3EmCnpsIVorKFJzWU4xMiYtTld7UCpeIzxyeDgyXzItK2lpJlNxZkdnT2BK Y2pAOzAxQEhUSHsmJjcjdj9qfUkpPUo2bQp6ZWB+aHBwWm43P1dBfCV6IX1U NnBmPnowSWpiWnJTNUlDRCoyNzUqX2JBbylyOHQjVmc0QSpMeik7eGM0Sktx MDMKelhYQ316ZClZd2lSWkNuV04+VU9fUW12QVVRaF5rTWslNklzdUF6fnhm bmtWfGZ0ODd8bTVHVkFmdkpeJmZ5R1EhCnFJVFFgS2A2LSFjbEBKWEVtUzdE YSltOD4oNURsbE1ocHF1P1ZETlBIYjZNdzwmOyRWT1I9RnF1CgpsaXRlcmFs IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL2Nzcy9kb21haW5zLmNzcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvY3NzL2Rv bWFpbnMuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmFiOWU3NzYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL2Nzcy9kb21haW5zLmNzcwpAQCAt MCwwICsxLDggQEAKKy5wZy1pY29uLWRvbWFpbiB7CisgIGJhY2tncm91bmQt aW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1kb21haW4uc3RhdGljJywg ZmlsZW5hbWU9J2ltZy9kb21haW4ucG5nJykgfX0nKSAhaW1wb3J0YW50Owor ICBib3JkZXItcmFkaXVzOiAxMHB4OworICBiYWNrZ3JvdW5kLXJlcGVhdDog bm8tcmVwZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRp Y2FsLWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL2pzL2RvbWFpbnMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL2pzL2RvbWFpbnMuanMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkMWIwMQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv anMvZG9tYWlucy5qcwpAQCAtMCwwICsxLDI3NyBAQAorLy8gRG9tYWluIE1v ZHVsZTogQ29sbGVjdGlvbiBhbmQgTm9kZS4KK2RlZmluZSgKKyAgICAgICAg WydqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycs ICdwZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIC8vIERl ZmluZSBEb21haW4gQ29sbGVjdGlvbiBOb2RlCisgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydjb2xsLWRvbWFpbiddKSB7CisgICAgdmFyIGRvbWFpbnMgPSBw Z0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10gPQorICAgICAg cGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAg bm9kZTogJ2RvbWFpbicsCisgICAgICAgIGxhYmVsOiAne3sgXygnRG9tYWlu cycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtZG9tYWluJywKKyAgICAg ICAgY29sdW1uczogWyduYW1lJywgJ29pZCcsICdvd25lcicsICdiYXNlbnNw JywgJ2Rlc2NyaXB0aW9uJywgJ2Jhc2V0eXBlJywKKyAgICAgICAgICAgICAg ICAgICd0eXBkZWZhdWx0JywgJ3R5cG5vdG51bGwnLCAnc3lzZG9tYWluJ10K KyAgICAgIH0pOworICB9OworCisgIC8vIFNlY3VyaXR5IE1vZGVsCisgIHZh ciBTZWN1cml0eU1vZGVsID0gQmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVs dHM6IHsKKyAgICAgIHByb3ZpZGVyOiBudWxsLAorICAgICAgc2VjdXJpdHlf bGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlk OiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8oJ1Byb3ZpZGVyJykgfX0nLAor ICAgICAgdHlwZTogJ3RleHQnCisgICAgfSx7CisgICAgICBpZDogJ3NlY3Vy aXR5X2xhYmVsJywgbGFiZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19 JywKKyAgICAgIHR5cGU6ICd0ZXh0JworICAgIH1dLAorICAgIHZhbGlkYXRl OiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAg ICBlcnJtc2cgPSBudWxsLAorICAgICAgICAgIGRhdGEgPSB0aGlzLnRvSlNP TigpOworCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRhLmxhYmVsKSB8 fAorICAgICAgICBfLmlzTnVsbChkYXRhLmxhYmVsKSB8fAorICAgICAgICBT dHJpbmcoZGF0YS5sYWJlbCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICByZXR1cm4gXygiUGxlYXNlIHNwZWNpZnkgdGhl IHZhbHVlIGZvciBhbGwgdGhlIHNlY3VyaXR5IHByb3ZpZGVycy4iKTsKKyAg ICAgIH0KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAg Ly8gQ29uc3RyYWludCBNb2RlbAorICB2YXIgQ29uc3RyYWludHNNb2RlbCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgaWRB dHRyaWJ1dGU6ICdjb25uYW1lJywKKyAgICBkZWZhdWx0czogeworICAgICAg Y29ubmFtZTogdW5kZWZpbmVkLAorICAgICAgZGVzY3JpcHRpb246IHVuZGVm aW5lZCwKKyAgICAgIGNvbnNyYzogdW5kZWZpbmVkLAorICAgICAgY29ubm9p bmhlcml0OiB1bmRlZmluZWQsCisgICAgICBjb252YWxpZGF0ZWQ6IHVuZGVm aW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAgaWQ6ICdjb25u YW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcs IGNlbGw6ICdzdHJpbmcnCisgICAgfSx7CisgICAgICBpZDogJ2Rlc2NyaXB0 aW9uJywgbGFiZWw6ICd7eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVs dGlsaW5lJywgY2VsbDogJ3N0cmluZycKKyAgICB9LHsKKyAgICAgIGlkOiAn Y29uc3JjJywgbGFiZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211 bHRpbGluZScsCisgICAgICBjZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICd7eyBf KCdEZWZpbml0aW9uJykgfX0nCisgICAgfSx7CisgICAgICBpZDogJ2Nvbm5v aW5oZXJpdCcsIGxhYmVsOiAne3sgXygnTm8gSW5oZXJpdCcpIH19JywgdHlw ZTogJ3N3aXRjaCcsCisgICAgICBjZWxsOidib29sZWFuJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nCisgICAgfSx7CisgICAgICBpZDogJ2Nv bnZhbGlkYXRlZCcsIGxhYmVsOiAne3sgXygnVmFsaWQ/JykgfX0nLCB0eXBl OgorICAgICAgJ3N3aXRjaCcsIGNlbGw6ICdib29sZWFuJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtb2RlOgorICAgICAgWydwcm9wZXJ0 aWVzJ10KKyAgICB9LHsKKyAgICAgIGlkOiAnY29udmFsaWRhdGVkJywgbGFi ZWw6ICJEb24ndCBWYWxpZGF0ZSIsIHR5cGU6CisgICAgICAnc3dpdGNoJywg Y2VsbDogJ2Jvb2xlYW4nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9 fScsIG1vZGU6CisgICAgICBbJ2NyZWF0ZScsICdlZGl0J10KKyAgICB9XSwK KyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICAvLyBUT0RPOiBB ZGQgdmFsaWRhdGlvbiBoZXJlCisgICAgfSwKKyAgICB0b0pTT046IEJhY2ti b25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04KKyAgfSk7CisKKyAgLy8gRG9t YWluIE5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddKSB7 CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydkb21haW4nXSA9IHBnQnJv d3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICB0eXBlOiAnZG9tYWluJywKKyAg ICAgIGxhYmVsOiAne3sgXygnRG9tYWluJykgfX0nLAorICAgICAgY29sbGVj dGlvbl90eXBlOiAnY29sbC1kb21haW4nLAorICAgICAgaGFzU1FMOiB0cnVl LAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBl OiBbJ3NjaGVtYSddLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAg ICAgIC8vIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cwor ICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJl dHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKwor ICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAgbmFt ZTogJ2NyZWF0ZV9kb21haW5fb25fY29sbCcsIG5vZGU6ICdjb2xsLWRvbWFp bicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVj dCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGll cycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTog NCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4nKSB9fScsCisgICAgICAgICAg aWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbicsIGRhdGE6IHthY3Rpb246 ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAn Y2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX2RvbWFpbicsIG5vZGU6ICdkb21haW4nLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxs YmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRG9t YWluLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRy dWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAg fSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9kb21haW4nLCBub2RlOiAn c2NoZW1hJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9w ZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9y aXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbi4uLicpIH19JywKKyAgICAg ICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAgZW5h YmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9CisgICAgICAgIF0pOworCisg ICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hl bWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdC cm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICAv LyBEb21haW4gTm9kZSBNb2RlbAorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7 CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIG9pZDog dW5kZWZpbmVkLAorICAgICAgICAgIG93bmVyOiB1bmRlZmluZWQsCisgICAg ICAgICAgYmFzZW5zcDogdW5kZWZpbmVkLAorICAgICAgICAgIGRlc2NyaXB0 aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgYmFzZXR5cGU6IHVuZGVmaW5l ZCwKKyAgICAgICAgICB0eXBsZW46IHVuZGVmaW5lZCwKKyAgICAgICAgICBw cmVjaXNpb246IHVuZGVmaW5lZCwKKyAgICAgICAgICB0eXBkZWZhdWx0OiB1 bmRlZmluZWQsCisgICAgICAgICAgdHlwbm90bnVsbDogdW5kZWZpbmVkLAor ICAgICAgICAgIHN5c2RvbWFpbjogdW5kZWZpbmVkLAorICAgICAgICAgIGNv bGxuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgY29uc3RyYWludHM6IFtd LAorICAgICAgICAgIHNlY2xhYmVsczogW10KKyAgICAgICAgfSwKKyAgICAg ICAgLy8gRG9tYWluIFNjaGVtYQorICAgICAgICBzY2hlbWE6IFt7CisgICAg ICAgICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6 IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oJ09pZCcpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnICwg bW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdvd25lcicsIGxhYmVsOid7eyBfKCdPd25lcicpIH19JywgY2VsbDog J3N0cmluZycsIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29u dHJvbCwKKyAgICAgICAgICBub2RlOiAncm9sZScsICB0eXBlOiAndGV4dCcs IG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnLCAncHJvcGVydGllcyddCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnYmFzZW5zcCcsIGxhYmVsOid7eyBf KCdTY2hlbWEnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9k ZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgdXJs OiAnZ2V0X3NjaGVtYXMnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn ZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScKKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdiYXNldHlwZScsIGxhYmVsOid7 eyBfKCdCYXNlIFR5cGUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9s OiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTpbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1cmw6ICdnZXRfdHlwZXMn LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAh bS5pc05ldygpOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlw bGVuJywgbGFiZWw6J3t7IF8oJ0xlbmd0aCcpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0Rl ZmluaXRpb24nKSB9fScsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVy biAhbS5pc05ldygpOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn cHJlY2lzaW9uJywgbGFiZWw6J3t7IF8oJ1ByZWNpc2lvbicpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDog J3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7IHJldHVybiAhbS5pc05ldygpOyB9CisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAndHlwZGVmYXVsdCcsIGxhYmVsOid7eyBfKCdEZWZhdWx0Jykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3R5cG5vdG51bGwnLCBsYWJlbDone3sgXygnTm90 IE51bGwnKSB9fScsIGNlbGw6ICdib29sZWFuJywKKyAgICAgICAgICB0eXBl OiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnc3lzZG9tYWluJywgbGFiZWw6 J3t7IF8oJ1N5c3RlbSBEb21haW4/JykgfX0nLCBjZWxsOiAnYm9vbGVhbics CisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JywgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdjb2xsbmFtZScsIGxhYmVsOid7eyBfKCdD b2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9k ZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1cmw6ICdnZXRfY29sbGF0 aW9ucycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBy ZXR1cm4gIW0uaXNOZXcoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnY29uc3RyYWludHMnLCBsYWJlbDone3sgXygnQ29u c3RyYWludHMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICd7eyBfKCdDb25zdHJhaW50cycp IH19JywgdmlzaWJsZTogZmFsc2UsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKKyAgICAgICAgICBtb2RlbDogQ29uc3RyYWludHNNb2RlbCwgY2FuQWRk OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGNhbkVkaXQ6IGZ1bmN0aW9uKG8p IHsKKyAgICAgICAgICAgIGlmIChvIGluc3RhbmNlb2YgQmFja2JvbmUuTW9k ZWwpIHsKKyAgICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBDb25zdHJh aW50c01vZGVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uaXNOZXco KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8oJ1NlY3Vy aXR5IExhYmVscycpIH19JywKKyAgICAgICAgICBtb2RlbDogU2VjdXJpdHlN b2RlbCwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAn e3sgXygnU2VjdXJpdHknKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKKyAgICAgICAgICBtaW5fdmVyc2lvbjogOTAxMDAsIGNhbkFkZDogdHJ1 ZSwKKyAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUK KyAgICAgICAgfQorICAgICAgICBdLAorICAgICAgICB2YWxpZGF0ZTogZnVu Y3Rpb24oKSAvLyBDbGllbnQgU2lkZSBWYWxpZGF0aW9uCisgICAgICAgIHsK KyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAgIGVycm1z ZywKKyAgICAgICAgICAgICAgc2VjbGFiZWxzID0gdGhpcy5nZXQoJ3NlY2xh YmVscycpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ25hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVy clsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9 fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1l J107CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ2Jhc2V0eXBlJykpIHx8IFN0cmluZyh0aGlzLmdldCgn YmFzZXR5cGUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykg eworICAgICAgICAgICAgZXJyWydiYXNldHlwZSddID0gJ3t7IF8oJ0Jhc2Ug VHlwZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVy cm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Jhc2V0eXBlJ107CisgICAgICAgICAg fQorCisgICAgICAgICAgaWYgKHNlY2xhYmVscykgeworICAgICAgICAgICAg dmFyIHNlY0xhYmVsc0VycjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw OyBpIDwgc2VjbGFiZWxzLm1vZGVscy5sZW5ndGggJiYgIXNlY0xhYmVsc0Vy cjsgaSsrKSB7CisgICAgICAgICAgICAgIHNlY0xhYmVsc0VyciA9IChzZWNs YWJlbHMubW9kZWxzW2ldKS52YWxpZGF0ZS5hcHBseShzZWNsYWJlbHMubW9k ZWxzW2ldKTsKKyAgICAgICAgICAgICAgaWYgKHNlY0xhYmVsc0Vycikgewor ICAgICAgICAgICAgICAgIGVyclsnc2VjbGFiZWxzJ10gPSBzZWNMYWJlbHNF cnI7CisgICAgICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IHNlY0xh YmVsc0VycjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg ICAgICAgIH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigp LnNldChlcnIpOworCisgICAgICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7Cisg ICAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVy cm1zZ30pOworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAg ICB9CisKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAg ICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CisgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhl biAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgaWYgKGRh dGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAgICByZXR1cm4g dHJ1ZTsKKworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0g aXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3aGlsZSAo aSkgeworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gY3JlYXRlIGRvbWFpbgorICAgICAgICAgIGlmIChfLmluZGV4 T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworCisgICAgICAgICAgaWYgKCdjb2xsLWRvbWFpbicgPT0g ZC5fdHlwZSkgeworICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90 IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgIHByZXZfaSA9IHQuaGFz UGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAg cHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsK KyAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpID0gdC5oYXNQYXJlbnQo aSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgZCA9IGkgPyB0 Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBi eSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51 CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIGlzRGlz YWJsZWQ6IGZ1bmN0aW9uKG0peworICAgICAgICAgIGlmICghbS5pc05ldygp KSB7CisgICAgICAgICAgICB2YXIgc2VydmVyID0gdGhpcy5ub2RlX2luZm8u c2VydmVyOworICAgICAgICAgICAgaWYgKHNlcnZlci52ZXJzaW9uIDwgOTAy MDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgIH0KKyAgfSk7CisKKyAgfQorCisgIHJldHVy biBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddOworfSk7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjFfcGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvYmFj a2VuZF9zdXBwb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi44ZjNkYjhlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv YmFja2VuZF9zdXBwb3J0LnNxbApAQCAtMCwwICsxLDIwIEBACitTRUxFQ1QK KyAgICBDQVNFIFdIRU4gbnNwLm5zcG5hbWUgSU4gKCdzeXMnLCAnZGJvJywg J2luZm9ybWF0aW9uX3NjaGVtYScpIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVO RCBBUyBkYlN1cHBvcnQKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitX SEVSRQorICAgIG5zcC5vaWQ9e3tzY2lkfX06OmludAorICAgIEFORCAoCisg ICAgICAgIChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBFWElTVFMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZS T00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19jbGFzcycgQU5EIHJl bG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAgT1IgKG5zcG5h bWUgPSAncGdhZ2VudCcgQU5EIEVYSVNUUworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBuc3Au b2lkIExJTUlUIDEpKQorICAgIE9SIChuc3BuYW1lID0gJ2luZm9ybWF0aW9u X3NjaGVtYScgQU5EIEVYSVNUUworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ3RhYmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElN SVQgMSkpCisgICAgT1IgKG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElTVFMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAx IEZST00gcGdfcHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZlcnNpb24nIEFO RCBwcm9uYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorICAgICkKKyAg ICBBTkQKKyAgICAgICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0ZW1wXFwl JworICAgIEFORAorICAgICAgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRv YXN0X3RlbXBcXCUnCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9z cWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yOWFlMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4x X3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDM2IEBACit7JSBpbXBvcnQg J21hY3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBp ZiBkYXRhICV9CitDUkVBVEUgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRh LmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAgICBBUyB7eyBjb25ufHF0VHlw ZUlkZW50KGRhdGEuYmFzZXR5cGUpIH19eyUgaWYgZGF0YS50eXBsZW4gJX0o e3tkYXRhLnR5cGxlbn19IHslIGlmIGRhdGEucHJlY2lzaW9uICV9LCB7e2Rh dGEucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGRh dGEuY29sbG5hbWUgJX0KKworICAgIENPTExBVEUge3sgZGF0YS5jb2xsbmFt ZSBhbmQgZGF0YS5jb2xsbmFtZSAhPSAicGdfY2F0YWxvZy5cImRlZmF1bHRc IiIgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwZGVmYXVsdCAlfQorCisg ICAgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQgfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEudHlwbm90bnVsbCAlfQorCisgICAgTk9UIE5VTEwKK3slIGVu ZGlmIC0lfTsKKworeyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb25zdHJhaW50cyAlfQoreyUgaWYgYy5jb25uYW1lIGFu ZCBjLmNvbnNyYyAlfUFMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQUREIENPTlNUUkFJTlQg e3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29u c3JjIH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNl bnNwLCBkYXRhLm5hbWUpIH19IE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChk YXRhLm93bmVyKSB9fTsKKworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQor Q09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5z cCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRhLmRlc2NyaXB0aW9u IH19JzsKK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9 Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgci5zZWN1 cml0eV9sYWJlbCBhbmQgci5wcm92aWRlciAlfQore3sgU0VDTEFCTEUuQVBQ TFkoY29ubiwgJ0RPTUFJTicsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5z ZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kaWYgJX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi MWU0OWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxldGUuc3Fs CkBAIC0wLDAgKzEsMTUgQEAKK3slIGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NF TEVDVAorICAgIGQudHlwbmFtZSBhcyBuYW1lLCBibi5uc3BuYW1lIGFzIGJh c2Vuc3AKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1l c3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAg IGQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorICAgIEFORCBkLm9p ZD17e2RvaWR9fTo6aW50OworeyUgZW5kaWYgJX0KKworeyUgaWYgbmFtZSAl fQorICAgIERST1AgRE9NQUlOIHt7IGNvbm58cXRJZGVudChiYXNlbnNwLCBu YW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURFeyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9u cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5ZmRiYgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApAQCAtMCww ICsxLDEwIEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xsbmFtZSwKKyAgICBD QVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGNvbGxu YW1lKSA+IDAgVEhFTgorICAgIGNvbmNhdChuc3BuYW1lLCAnLiInLCBjb2xs bmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29weV9jb2xsYXRpb24K K0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dI RVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCitPUkRFUiBCWQorICAg IG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0 X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0ODg0 NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50 cy5zcWwKQEAgLTAsMCArMSwyOSBAQAorU0VMRUNUCisgICAgJ1RBQkxFJyBB UyBvYmplY3RraW5kLCBjLm9pZCwgY29ubmFtZSwgcmVsbmFtZSwgbnNwbmFt ZSwgZGVzY3JpcHRpb24sCisgICAgcGdfZ2V0X2V4cHIoY29uYmluLCBjb25y ZWxpZCwgdHJ1ZSkgYXMgY29uc3JjCitGUk9NCisgICAgcGdfY29uc3RyYWlu dCBjCitKT0lOCisgICAgcGdfY2xhc3MgY2wgT04gY2wub2lkPWNvbnJlbGlk CitKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1yZWxuYW1l c3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRl cyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19j b25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRQorICAgIGNvbnR5cGUgPSAn YycgQU5EIGNvbnJlbGlkID0gIHt7ZG9pZH19OjpvaWQKK1VOSU9OCitTRUxF Q1QKKyAgICAnRE9NQUlOJyBBUyBvYmplY3RraW5kLCBjLm9pZCwgY29ubmFt ZSwgdHlwbmFtZSBhcyByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlwdGlvbiwK KyAgICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihjLm9p ZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEnKSBhcyBj b25zCitGUk9NCisgICAgcGdfY29uc3RyYWludCBjCitKT0lOCisgICAgcGdf dHlwZSB0IE9OIHQub2lkPWNvbnR5cGlkCitKT0lOCisgICAgcGdfbmFtZXNw YWNlIG5sIE9OIG5sLm9pZD10eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9J TgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9p ZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3Mp CitXSEVSRQorICAgIGNvbnR5cGUgPSAnYycKK0FORCBjb250eXBpZCA9ICB7 e2RvaWR9fTo6b2lkCitPUkRFUiBCWSBjb25uYW1lOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWViNzY4Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAs MCArMSw5IEBACitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBuYW1lIGFzIG5h bWUKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICBibi5u c3BuYW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwgfX0KKyAgQU5EIGQudHlw bmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9w bHVzL2dldF9zY2hlbWFzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9zY2hlbWFzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGIzMzM4 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X3NjaGVtYXMuc3Fs CkBAIC0wLDAgKzEsMjQgQEAKK1NFTEVDVAorICAgIG5zcC5uc3BuYW1lCitG Uk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAorTEVGVCBPVVRFUiBKT0lOCisg ICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPW5zcC5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfbmFtZXNwYWNlJzo6cmVnY2xhc3MpCitM RUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jYXRhbG9nLnBnX2RlZmF1bHRfYWNs IGRhY2wgT04gKGRhY2wuZGVmYWNsbmFtZXNwYWNlID0gbnNwLm9pZCkKK1dI RVJFCisgICAgTk9UICgobnNwbmFtZSA9ICdwZ19jYXRhbG9nJyBBTkQgRVhJ U1RTCisgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAncGdfY2xhc3MnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lk IExJTUlUIDEpKSBPUgorICAgIChuc3BuYW1lID0gJ3BnYWdlbnQnIEFORCBF WElTVFMKKyAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUg cmVsbmFtZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9p ZCBMSU1JVCAxKSkgT1IKKyAgICAobnNwbmFtZSA9ICdpbmZvcm1hdGlvbl9z Y2hlbWEnIEFORCBFWElTVFMKKyAgICAgICAgKFNFTEVDVCAxIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0YWJsZXMnIEFORCByZWxuYW1lc3Bh Y2UgPSBuc3Aub2lkIExJTUlUIDEpKSBPUgorICAgIChuc3BuYW1lIExJS0Ug J18lJyBBTkQgRVhJU1RTCisgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX3By b2MgV0hFUkUgcHJvbmFtZT0nc2xvbnl2ZXJzaW9uJyBBTkQgcHJvbmFtZXNw YWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICApQU5ECisgICAgbnNwbmFt ZSBOT1QgTElLRSBFJ3BnXFx0ZW1wXFwlJyBBTkQKKyAgICBuc3BuYW1lIE5P VCBMSUtFIEUncGdcXHRvYXN0X3RlbXBcXCUnIEFORAorICAgIC0tIEFEREVE OiBCZWNhdXNlIFdlIG5lZWQgdG8gb21pdCBzeXN0ZW0gc2NoZW1hIGV4Y2Vw dCB0aGUgb25lIG9uIHdoaWNoIHdlIGFyZSB0cnlpbmcgdG8gIGNyZWF0ZSBj b2xsYXRpb24KKyAgICAoIG5zcC5vaWQgPSB7eyBzY2lkIH19IE9SIG5zcG5h bWUgTk9UIExJS0UgRSdwZ1xcXyUnICkKK09SREVSIEJZCisgICAgbnNwbmFt ZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFf cGx1cy9nZXRfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjk3NjIxYjAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1 cy9nZXRfdHlwZXMuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK1NFTEVDVAorICAg ICoKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGZvcm1hdF90eXBlKHQu b2lkLE5VTEwpIEFTIHR5cG5hbWUsCisgICAgICAgIENBU0UgV0hFTiB0eXBl bGVtID4gMCBUSEVOIHR5cGVsZW0gRUxTRSB0Lm9pZCBFTkQgYXMgZWxlbW9p ZCwKKyAgICAgICAgdHlwbGVuLCB0eXB0eXBlLCB0Lm9pZCwgbnNwbmFtZSwK KyAgICAgICAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hF UkUgdDIudHlwbmFtZSA9IHQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCisgICAg RlJPTQorICAgICAgICBwZ190eXBlIHQKKyAgICBKT0lOCisgICAgICAgIHBn X25hbWVzcGFjZSBuc3AgT04gdHlwbmFtZXNwYWNlPW5zcC5vaWQKKyAgICBX SEVSRQorICAgICAgICAoTk9UICh0eXBuYW1lID0gJ3Vua25vd24nIEFORCBu c3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkKKyAgICAgICAgIEFORCB0eXBpc2Rl ZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZScsICdyJykKKyAg ICAgICAgIEFORCBOT1QgRVhJU1RTCisgICAgICAgICAoc2VsZWN0IDEgZnJv bSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFu ZCByZWxuYW1lID0gdHlwbmFtZSBhbmQgcmVsa2luZCAhPSAnYycpCisgICAg ICAgICBBTkQgKHR5cG5hbWUgbm90IGxpa2UgJ18lJyBPUiBOT1QgRVhJU1RT CisgICAgICAgICAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxu YW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gc3Vic3RyaW5n KHR5cG5hbWUgZnJvbSAyKTo6bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpKQor ICAgICAgICAgICkgQVMgZHVtbXkKK09SREVSIEJZCisgICAgbnNwbmFtZSA8 PiAncGdfY2F0YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUs IDEKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL25vZGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv bm9kZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u N2JkM2U1YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL25vZGUuc3Fs CkBAIC0wLDAgKzEsMTMgQEAKK1NFTEVDVAorICAgIGQub2lkLCBkLnR5cG5h bWUgYXMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKGQudHlwb3duZXIpIGFzIG93 bmVyLAorICAgIGJuLm5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBn X3R5cGUgZAorSk9JTgorICAgIHBnX3R5cGUgYiBPTiBiLm9pZCA9IGQudHlw YmFzZXR5cGUKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lk PWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQudHlwbmFtZXNwYWNlID0g e3tzY2lkfX06Om9pZAorT1JERVIgQlkKKyAgICBkLnR5cG5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3By b3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjIxNmZhZmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9wcm9w ZXJ0aWVzLnNxbApAQCAtMCwwICsxLDI4IEBACitTRUxFQ1QKKyAgICBkLm9p ZCwgZC50eXBuYW1lIGFzIG5hbWUsIGQudHlwYmFzZXR5cGUsIGZvcm1hdF90 eXBlKGIub2lkLE5VTEwpIGFzIGJhc2V0eXBlLCBwZ19nZXRfdXNlcmJ5aWQo ZC50eXBvd25lcikgYXMgb3duZXIsCisgICAgYy5vaWQgQVMgY29sbG9pZCwg Zm9ybWF0X3R5cGUoYi5vaWQsIGQudHlwdHlwbW9kKSBBUyBmdWxsdHlwZSwK KyAgICBDQVNFIFdIRU4gbGVuZ3RoKGNuLm5zcG5hbWUpID4gMCBBTkQgbGVu Z3RoKGMuY29sbG5hbWUpID4gMCBUSEVOCisgICAgY29uY2F0KGNuLm5zcG5h bWUsICcuIicsIGMuY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFT IGNvbGxuYW1lLAorICAgIGQudHlwdHlwbW9kLCBkLnR5cG5vdG51bGwsIGQu dHlwZGVmYXVsdCwgZC50eXBuZGltcywgZC50eXBkZWxpbSwgYm4ubnNwbmFt ZSBhcyBiYXNlbnNwLAorICAgIGRlc2NyaXB0aW9uLCAoU0VMRUNUIENPVU5U KDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPWQudHlwbmFt ZSkgPiAxIEFTIGRvbWlzZHVwLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgRlJP TSBwZ190eXBlIHQzIFdIRVJFIHQzLnR5cG5hbWU9Yi50eXBuYW1lKSA+IDEg QVMgYmFzZWlzZHVwCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAg cGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNldHlwZQorSk9JTgorICAg IHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK0xF RlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVz Lm9iam9pZD1kLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVn Y2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb2xsYXRpb24gYyBP TiBkLnR5cGNvbGxhdGlvbj1jLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfbmFtZXNwYWNlIGNuIE9OIGMuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dI RVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAg eyUgaWYgZG9pZCAlfQorICAgIEFORCBkLm9pZD17e2RvaWR9fTo6aW50Cisg ICAgeyUgZW5kaWYgJX0KK09SREVSIEJZCisgICAgZC50eXBuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3VwZGF0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgw YTIwZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwK QEAgLTAsMCArMSw3MiBAQAoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUg PSBvX2RhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBk YXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRZUEUge3sgY29u bnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAg ICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7 JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CisKK3slIGlmIGRhdGEudHlwbm90bnVsbCBhbmQgbm90IG9fZGF0 YS50eXBub3RudWxsICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBOT1QgTlVMTDsK K3slIGVsaWYgJ3R5cG5vdG51bGwnIGluIGRhdGEgYW5kIG5vdCBkYXRhLnR5 cG5vdG51bGwgYW5kIG9fZGF0YS50eXBub3RudWxsJX0KK0FMVEVSIERPTUFJ TiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19Cisg ICAgRFJPUCBOT1QgTlVMTDsKK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEu dHlwZGVmYXVsdCAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgREVGQVVMVCB7eyBk YXRhLnR5cGRlZmF1bHR8cXRMaXRlcmFsIH19OworeyUgZWxpZiBub3QgZGF0 YS50eXBkZWZhdWx0IGFuZCBvX2RhdGEudHlwZGVmYXVsdCAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBEUk9QIERFRkFVTFQ7Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5vd25lciAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQorCit7JSBpZiBk YXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFp bnRzLmRlbGV0ZWQgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQo b19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19Cit7JSBlbmRmb3IgJX0K K3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMuYWRkZWQgJX0KK3slIGlm IGMuY29ubmFtZSBhbmQgYy5jb25zcmMgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQURE IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hF Q0sgKHt7IGMuY29uc3JjIH19ICk7Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KKworeyUgc2V0IHNlY2xhYmVscyA9IGRhdGEu c2VjbGFiZWxzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFu ZCBzZWNsYWJlbHMuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBp biBzZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25u LCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJhc2Vuc3Ap IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQn IGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFC TEUuQVBQTFkoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIK Ky5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFi ZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQ TFkoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWws IG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAt JX0KKworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19Owor eyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuYmFzZW5zcCAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vu c3ApIH19OworeyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMl9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9i YWNrZW5kX3N1cHBvcnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjhmM2RiOGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1 cy9iYWNrZW5kX3N1cHBvcnQuc3FsCkBAIC0wLDAgKzEsMjAgQEAKK1NFTEVD VAorICAgIENBU0UgV0hFTiBuc3AubnNwbmFtZSBJTiAoJ3N5cycsICdkYm8n LCAnaW5mb3JtYXRpb25fc2NoZW1hJykgVEhFTiB0cnVlIEVMU0UgZmFsc2Ug RU5EIEFTIGRiU3VwcG9ydAorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AK K1dIRVJFCisgICAgbnNwLm9pZD17e3NjaWR9fTo6aW50CisgICAgQU5EICgK KyAgICAgICAgKG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5EIEVYSVNUUwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEg RlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyBBTkQg cmVsbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICBPUiAobnNw bmFtZSA9ICdwZ2FnZW50JyBBTkQgRVhJU1RTCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAncGdhX2pvYicgQU5EIHJlbG5hbWVzcGFjZSA9IG5z cC5vaWQgTElNSVQgMSkpCisgICAgT1IgKG5zcG5hbWUgPSAnaW5mb3JtYXRp b25fc2NoZW1hJyBBTkQgRVhJU1RTCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAndGFibGVzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9pZCBM SU1JVCAxKSkKKyAgICBPUiAobnNwbmFtZSBMSUtFICdfJScgQU5EIEVYSVNU UworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0VMRUNU IDEgRlJPTSBwZ19wcm9jIFdIRVJFIHByb25hbWU9J3Nsb255dmVyc2lvbicg QU5EIHByb25hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAgKQor ICAgIEFORAorICAgICAgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRlbXBc XCUnCisgICAgQU5ECisgICAgICAgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xc dG9hc3RfdGVtcFxcJScKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjZkZmU1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85 LjJfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMzcgQEAKK3slIGltcG9y dCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK0NSRUFURSBET01BSU4ge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIEFTIHt7IGNvbm58cXRU eXBlSWRlbnQoZGF0YS5iYXNldHlwZSkgfX17JSBpZiBkYXRhLnR5cGxlbiAl fSh7e2RhdGEudHlwbGVufX0geyUgaWYgZGF0YS5wcmVjaXNpb24gJX0sIHt7 ZGF0YS5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYg ZGF0YS5jb2xsbmFtZSBhbmQgZGF0YS5jb2xsbmFtZSAhPSAicGdfY2F0YWxv Zy5cImRlZmF1bHRcIiIgJX0KKworICAgIENPTExBVEUge3sgZGF0YS5jb2xs bmFtZSB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CisK KyAgICBERUZBVUxUIHt7IGRhdGEudHlwZGVmYXVsdCB9fXslIGVuZGlmICV9 eyUgaWYgZGF0YS50eXBub3RudWxsICV9CisKKyAgICBOT1QgTlVMTHslIGVu ZGlmIC0lfTsKKworeyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb25zdHJhaW50cyAlfQoreyUgaWYgYy5jb25uYW1lIGFu ZCBjLmNvbnNyYyAlfUFMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQUREIENPTlNUUkFJTlQg e3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29u c3JjIH19KXslIGlmIGMuY29udmFsaWRhdGVkICV9CisKKyAgICBOT1QgVkFM SUQgeyUgZW5kaWYgJX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhF UklUeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAtJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChk YXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0gT1dORVIgVE8ge3sgY29ubnxx dElkZW50KGRhdGEub3duZXIpIH19OworCit7JSBpZiBkYXRhLmRlc2NyaXB0 aW9uICV9CitDT01NRU5UIE9OIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVz Y3JpcHRpb24gfX0nOworeyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5zZWNs YWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBp ZiByLnNlY3VyaXR5X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9Cit7eyBTRUNM QUJMRS5BUFBMWShjb25uLCAnRE9NQUlOJywgZGF0YS5uYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBl bmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9w bHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uN2Y0MzdlZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2Rl bGV0ZS5zcWwKQEAgLTAsMCArMSwxNiBAQAoreyUgaWYgc2NpZCBhbmQgZG9p ZCAlfQorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIG5hbWUsIGJuLm5zcG5h bWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgorICAg IHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dI RVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitBTkQK KyAgICBkLm9pZD17e2RvaWR9fTo6aW50OworeyUgZW5kaWYgJX0KKworeyUg aWYgbmFtZSAlfQorICAgIERST1AgRE9NQUlOIHt7IGNvbm58cXRJZGVudChi YXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURFeyUgZW5k aWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRf Y29sbGF0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBs YXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5YzE3ZAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNx bApAQCAtMCwwICsxLDEwIEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xsbmFt ZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVu Z3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4KKyAgICBjb25jYXQobnNwbmFtZSwg Jy4iJywgY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvcHlf Y29sbGF0aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBnX25hbWVz cGFjZSBuCitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9pZAorT1JE RVIgQlkKKyAgICBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29u c3RyYWludHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjAxYzg0NzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRf Y29uc3RyYWludHMuc3FsCkBAIC0wLDAgKzEsMjkgQEAKK1NFTEVDVAorICAg ICdUQUJMRScgQVMgb2JqZWN0a2luZCwgYy5vaWQsIGNvbm5hbWUsIHJlbG5h bWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHBnX2dldF9leHByKGNv bmJpbiwgY29ucmVsaWQsIHRydWUpIGFzIGNvbnNyYywgY29ubm9pbmhlcml0 LCBjb252YWxpZGF0ZWQKK0ZST00KKyAgICBwZ19jb25zdHJhaW50IGMKK0pP SU4KKyAgICBwZ19jbGFzcyBjbCBPTiBjbC5vaWQ9Y29ucmVsaWQKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXJlbG5hbWVzcGFjZQor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChk ZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFp bnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9ICdjJyBBTkQg Y29ucmVsaWQgPSAge3tkb2lkfX06Om9pZAorVU5JT04KK1NFTEVDVAorICAg ICdET01BSU4nIEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25uYW1lLCB0eXBu YW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHJl Z2V4cF9yZXBsYWNlKHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVl KSwgRSdDSEVDSyBcXCgoLiopXFwpLionLCBFJ1xcMScpIGFzIGNvbnNyYywg Y29ubm9pbmhlcml0LCBjb252YWxpZGF0ZWQKK0ZST00KKyAgICBwZ19jb25z dHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlw aWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X2NvbnN0cmFpbnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9 ICdjJyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkK KyAgICBjb25uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi43ZjFhZmQxCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QK KyAgICBkLm9pZCwgZC50eXBuYW1lIGFzIG5hbWUKK0ZST00KKyAgICBwZ190 eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQu dHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNl bnNwfHF0TGl0ZXJhbCB9fQorICAgIEFORCBkLnR5cG5hbWU9e3sgbmFtZXxx dExpdGVyYWwgfX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfc2NoZW1h cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjJfcGx1cy9nZXRfc2NoZW1hcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM2MmRkNgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2dldF9zY2hlbWFzLnNxbApAQCAtMCwwICsxLDI0 IEBACitTRUxFQ1QKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBnX25h bWVzcGFjZSBuc3AKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1uc3Aub2lkIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX25hbWVzcGFjZSc6OnJlZ2NsYXNzKQorIExFRlQgT1VURVIgSk9J TgorICAgIHBnX2NhdGFsb2cucGdfZGVmYXVsdF9hY2wgZGFjbCBPTiAoZGFj bC5kZWZhY2xuYW1lc3BhY2UgPSBuc3Aub2lkKQorV0hFUkUKKyAgICBOT1Qg KChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBFWElTVFMKKyAgICAgICAg KFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19j bGFzcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpIE9S CisgICAgKG5zcG5hbWUgPSAncGdhZ2VudCcgQU5EIEVYSVNUUworICAgICAg ICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3Bn YV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKSBP UgorICAgIChuc3BuYW1lID0gJ2luZm9ybWF0aW9uX3NjaGVtYScgQU5EIEVY SVNUUworICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ3RhYmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQg TElNSVQgMSkpIE9SCisgICAgKG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElT VFMKKyAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfcHJvYyBXSEVSRSBwcm9u YW1lPSdzbG9ueXZlcnNpb24nIEFORCBwcm9uYW1lc3BhY2UgPSBuc3Aub2lk IExJTUlUIDEpKQorICAgIClBTkQKKyAgICBuc3BuYW1lIE5PVCBMSUtFIEUn cGdcXHRlbXBcXCUnIEFORAorICAgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xc dG9hc3RfdGVtcFxcJScgQU5ECisgIC0tIEFEREVEOiBCZWNhdXNlIFdlIG5l ZWQgdG8gb21pdCBzeXN0ZW0gc2NoZW1hIGV4Y2VwdCB0aGUgb25lIG9uIHdo aWNoIHdlIGFyZSB0cnlpbmcgdG8gIGNyZWF0ZSBjb2xsYXRpb24KKyAgICAo IG5zcC5vaWQgPSB7eyBzY2lkIH19IE9SIG5zcG5hbWUgTk9UIExJS0UgRSdw Z1xcXyUnICkKK09SREVSIEJZCisgICAgbnNwbmFtZTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMl9wbHVzL2dldF90eXBlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfdHlwZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZDQ2 ZjcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfdHlwZXMuc3Fs CkBAIC0wLDAgKzEsMjIgQEAKK1NFTEVDVAorICAgICoKK0ZST00KKyAgICAo U0VMRUNUCisgICAgICAgIGZvcm1hdF90eXBlKHQub2lkLE5VTEwpIEFTIHR5 cG5hbWUsCisgICAgICAgIENBU0UgV0hFTiB0eXBlbGVtID4gMCBUSEVOIHR5 cGVsZW0gRUxTRSB0Lm9pZCBFTkQgYXMgZWxlbW9pZCwKKyAgICAgICAgdHlw bGVuLCB0eXB0eXBlLCB0Lm9pZCwgbnNwbmFtZSwKKyAgICAgICAgKFNFTEVD VCBDT1VOVCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZSA9 IHQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCisgICAgRlJPTQorICAgICAgICBw Z190eXBlIHQKKyAgICBKT0lOCisgICAgICAgIHBnX25hbWVzcGFjZSBuc3Ag T04gdHlwbmFtZXNwYWNlPW5zcC5vaWQKKyAgICBXSEVSRQorICAgICAgICAo Tk9UICh0eXBuYW1lID0gJ3Vua25vd24nIEFORCBuc3BuYW1lID0gJ3BnX2Nh dGFsb2cnKSkKKyAgICAgICAgIEFORCB0eXBpc2RlZmluZWQgQU5EIHR5cHR5 cGUgSU4gKCdiJywgJ2MnLCAnZScsICdyJykKKyAgICAgICAgIEFORCBOT1Qg RVhJU1RTCisgICAgICAgICAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVy ZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gdHlw bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpCisgICAgICAgICBBTkQgKHR5cG5h bWUgbm90IGxpa2UgJ18lJyBPUiBOT1QgRVhJU1RTCisgICAgICAgICAoc2Vs ZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFt ZXNwYWNlIGFuZCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5hbWUgZnJvbSAy KTo6bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpKQorICAgICAgICAgKSBBUyBk dW1teQorT1JERVIgQlkKKyAgICBuc3BuYW1lIDw+ICdwZ19jYXRhbG9nJywg bnNwbmFtZSA8PiAncHVibGljJywgbnNwbmFtZSwgMQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9ub2RlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmQzZTViCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4yX3BsdXMvbm9kZS5zcWwKQEAgLTAsMCArMSwxMyBA QAorU0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZSBhcyBuYW1lLCBwZ19n ZXRfdXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIsCisgICAgYm4ubnNw bmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisg ICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNldHlwZQorSk9JTgor ICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UK K1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitP UkRFUiBCWQorICAgIGQudHlwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRkMmQwMQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMjkgQEAKK1NFTEVDVAorICAgIGQub2lkLCBkLnR5cG5hbWUgYXMg bmFtZSwgZC50eXBiYXNldHlwZSwgZm9ybWF0X3R5cGUoYi5vaWQsTlVMTCkg YXMgYmFzZXR5cGUsIHBnX2dldF91c2VyYnlpZChkLnR5cG93bmVyKSBhcyBv d25lciwKKyAgICBjLm9pZCBBUyBjb2xsb2lkLCBmb3JtYXRfdHlwZShiLm9p ZCwgZC50eXB0eXBtb2QpIEFTIGZ1bGx0eXBlLAorICAgIENBU0UgV0hFTiBs ZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoYy5jb2xsbmFtZSkg PiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwgJy4iJywgYy5jb2xs bmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29sbG5hbWUsCisgICAg ZC50eXB0eXBtb2QsIGQudHlwbm90bnVsbCwgZC50eXBkZWZhdWx0LCBkLnR5 cG5kaW1zLCBkLnR5cGRlbGltLCBibi5uc3BuYW1lIGFzIGJhc2Vuc3AsCisg ICAgZGVzY3JpcHRpb24sIChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBl IHQyIFdIRVJFIHQyLnR5cG5hbWU9ZC50eXBuYW1lKSA+IDEgQVMgZG9taXNk dXAsCisgICAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5cGUgdDMgV0hF UkUgdDMudHlwbmFtZT1iLnR5cG5hbWUpID4gMSBBUyBiYXNlaXNkdXAsCisg ICAgKFNFTEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVs KSBGUk9NIHBnX3Noc2VjbGFiZWwgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9ZC5v aWQpIEFTIHNlY2xhYmVscworRlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgor ICAgIHBnX3R5cGUgYiBPTiBiLm9pZCA9IGQudHlwYmFzZXR5cGUKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNl CitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04g KGRlcy5vYmpvaWQ9ZC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6 OnJlZ2NsYXNzKQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfY29sbGF0aW9u IGMgT04gZC50eXBjb2xsYXRpb249Yy5vaWQKK0xFRlQgT1VURVIgSk9JTgor ICAgIHBnX25hbWVzcGFjZSBjbiBPTiBjLmNvbGxuYW1lc3BhY2U9Y24ub2lk CitXSEVSRQorICAgIGQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAor eyUgaWYgZG9pZCAlfQorICBBTkQgZC5vaWQ9e3tkb2lkfX06OmludAoreyUg ZW5kaWYgJX0KK09SREVSIEJZCisgICAgZC50eXBuYW1lOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9z cWwvOS4yX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxOTg3YQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAs MCArMSw3MCBAQAoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUgPSBvX2Rh dGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5h bWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJF TkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIHNl dCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX0KK3slIGlmIGRhdGEudHlwbm90bnVsbCBhbmQgbm90IG9fZGF0YS50eXBu b3RudWxsICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBOT1QgTlVMTDsKK3slIGVs aWYgJ3R5cG5vdG51bGwnIGluIGRhdGEgYW5kIG5vdCBkYXRhLnR5cG5vdG51 bGwgYW5kIG9fZGF0YS50eXBub3RudWxsJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJP UCBOT1QgTlVMTDsKK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEudHlwZGVm YXVsdCAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5 cGRlZmF1bHR8cXRMaXRlcmFsIH19OworeyUgZWxpZiBub3QgZGF0YS50eXBk ZWZhdWx0IGFuZCBvX2RhdGEudHlwZGVmYXVsdCAlfQorQUxURVIgRE9NQUlO IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAg ICBEUk9QIERFRkFVTFQ7Cit7JSBlbmRpZiAlfQoreyUgaW1wb3J0ICdtYWNy b3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0 YS5vd25lciAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQorCit7JSBpZiBk YXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFp bnRzLmRlbGV0ZWQgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQo b19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19Cit7JSBlbmRmb3IgJX0K K3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMuYWRkZWQgJX0KK0FMVEVS IERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUp IH19CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29u bmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19ICkKK3slIGlmIGMuY29u dmFsaWRhdGVkICV9IE5PVCBWQUxJRCB7JSBlbmRpZiAlfSB7JSBpZiBjLmNv bm5vaW5oZXJpdCAlfSBOTyBJTkhFUklUIHslIGVuZGlmICV9OworeyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBzZXQgc2VjbGFiZWxzID0gZGF0 YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMg YW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciBy IGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNv bm4sICdET01BSU4nLCBuYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEuYmFzZW5z cCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRl ZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4g MCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9Cit7eyBTRUNM QUJMRS5BUFBMWShjb25uLCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwg ci5sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBz ZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBz ZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwg J0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwsIG9fZGF0YS5i YXNlbnNwKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBp ZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMg e3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAl fQorCit7JSBpZiBkYXRhLmJhc2Vuc3AgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTsKK3sl IGVuZGlmICV9CisKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMv bWFjcm9zL3NlY3VyaXR5Lm1hY3JvcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9tYWNyb3Mvc2VjdXJp dHkubWFjcm9zCmluZGV4IDgzZmI5ZDIuLjZjZTRmMzAgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rl bXBsYXRlcy9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9t YWNyb3Mvc2VjdXJpdHkubWFjcm9zCkBAIC0xLDYgKzEsMTcgQEAKLXslIG1h Y3JvIEFQUExZKGNvbm4sIHR5cGUsIG5hbWUsIHByb3ZpZGVyLCBsYWJlbCkg LSV9Ci1TRUNVUklUWSBMQUJFTCBGT1Ige3sgY29ubnxxdElkZW50KHByb3Zp ZGVyKSB9fSBPTiB7eyB0eXBlIH19IHt7IGNvbm58cXRJZGVudChuYW1lKSB9 fSBJUyB7eyBsYWJlbHxxdExpdGVyYWwgfX07Cit7JSBtYWNybyBBUFBMWShj b25uLCB0eXBlLCBuYW1lLCBwcm92aWRlciwgbGFiZWwsIHNjaGVtYSkgLSV9 Cit7JSBpZiBzY2hlbWEgJX0KK3slIHNldCBuYW1lID0gIGNvbm58cXRJZGVu dChzY2hlbWEsIG5hbWUpICAlfQoreyUgZWxzZSAlfQoreyUgc2V0IG5hbWUg PSAgY29ubnxxdElkZW50KG5hbWUpICV9Cit7JSBlbmRpZiAlfQorU0VDVVJJ VFkgTEFCRUwgRk9SIHt7IGNvbm58cXRJZGVudChwcm92aWRlcikgfX0gT04g e3sgdHlwZSB9fSB7eyBuYW1lIH19IElTIHt7CitsYWJlbHxxdExpdGVyYWwg fX07CiB7JS0gZW5kbWFjcm8gJX0KLXslIG1hY3JvIERST1AoY29ubiwgdHlw ZSwgbmFtZSwgcHJvdmlkZXIpIC0lfQotU0VDVVJJVFkgTEFCRUwgRk9SIHt7 IGNvbm58cXRJZGVudChwcm92aWRlcikgfX0gT04ge3sgdHlwZSB9fSB7eyBj b25ufHF0SWRlbnQobmFtZSkgfX0gSVMgTlVMTDsKK3slIG1hY3JvIERST1Ao Y29ubiwgdHlwZSwgbmFtZSwgcHJvdmlkZXIsIHNjaGVtYSkgLSV9Cit7JSBp ZiBzY2hlbWEgJX0KK3slIHNldCBuYW1lID0gIGNvbm58cXRJZGVudChzY2hl bWEsIG5hbWUpICAlfQoreyUgZWxzZSAlfQoreyUgc2V0IG5hbWUgPSAgY29u bnxxdElkZW50KG5hbWUpICV9Cit7JSBlbmRpZiAlfQorU0VDVVJJVFkgTEFC RUwgRk9SIHt7IGNvbm58cXRJZGVudChwcm92aWRlcikgfX0gT04ge3sgdHlw ZSB9fSB7eyBuYW1lIH19IElTIE5VTEw7CiB7JS0gZW5kbWFjcm8gJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFt b2RlbC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFt b2RlbC5qcwppbmRleCA5Mzg1YWRmLi42MWU4MWVkIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0YW1vZGVsLmpz CkBAIC0zNDAsNyArMzQwLDEzIEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQs IEJhY2tib25lKSB7CiAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzW2td OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICAgICByZXNba10gPSAob2JqICYmIG9iai50b0pTT04o KSk7CisgICAgICAgICAgICAgICAgaWYgKG9iaiAmJiAob2JqIGluc3RhbmNl b2YgQXJyYXkpKSB7CisgICAgICAgICAgICAgICAgICByZXNba10gPSBvYmo7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXNba10gPSBv YmogJiYgb2JqLnRvSlNPTigpOworICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBy ZXM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zv cm0ucGdhZG1pbi5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9y bS5wZ2FkbWluLmpzCmluZGV4IDQzNDYxNTYuLmFlODA3Y2IgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpz CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWlu LmpzCkBAIC0xMDU4LDExICsxMDU4LDEzIEBACiAgICAgICBpZiAoZGF0YS5k aXNhYmxlZCA9PSBmYWxzZSAmJiBkYXRhLmNhbkVkaXQpIHsKICAgICAgICAg ICB2YXIgZWRpdENlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uT2JqZWN0Q2Vs bC5leHRlbmQoewogICAgICAgICAgICAgc2NoZW1hOiBncmlkU2NoZW1hLnNj aGVtYQotICAgICAgICAgIH0pOworICAgICAgICAgIH0pLAorICAgICAgICAg IGNhbkVkaXQgPSBzZWxmLmZpZWxkLmhhcygnY2FuRWRpdCcpICYmCisgICAg ICAgICAgc2VsZi5maWVsZC5nZXQoJ2NhbkVkaXQnKSB8fCB0cnVlOwogCiAg ICAgICAgICAgZ3JpZFNjaGVtYS5jb2x1bW5zLnVuc2hpZnQoewogICAgICAg ICAgICAgbmFtZTogInBnLWJhY2tmb3JtLWVkaXQiLCBsYWJlbDogIiIsIGNl bGwgOiBlZGl0Q2VsbCwKLSAgICAgICAgICAgIGNlbGxfcHJpb3JpdHk6IC0y CisgICAgICAgICAgICBjZWxsX3ByaW9yaXR5OiAtMiwgZWRpdGFibGU6IGNh bkVkaXQKICAgICAgICAgICB9KTsKICAgICAgIH0KIApAQCAtMTEwMSw3ICsx MTAzLDcgQEAKICAgICAgICAgZ3JpZC5pbnNlcnRSb3coe30pOwogICAgICAg ICB2YXIgbmV3Um93ID0gJChncmlkLmJvZHkucm93c1tjb2xsZWN0aW9uLmxl bmd0aCAtIDFdLiRlbCk7CiAgICAgICAgIG5ld1Jvdy5hdHRyKCJjbGFzcyIs ICJuZXciKS5jbGljayhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgJCh0aGlz KS5hdHRyKCJjbGFzcyIsICIiKTsKKyAgICAgICAgICAkKHRoaXMpLmF0dHIo ImNsYXNzIiwgImVkaXRhYmxlIik7CiAgICAgICAgIH0pOwogICAgICAgICAk KG5ld1JvdykucGdNYWtlVmlzaWJsZSgnYmFja2Zvcm0tdGFiJyk7CiAgICAg ICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MjgsOCArMTUzMCwxNSBAQAogICAg ICAgLyoKICAgICAgICAqIEFkZCBlbXB0eSBvcHRpb24gYXMgU2VsZWN0MiBy ZXF1aXJlcyBhbnkgZW1wdHkgJzxvcHRpb24+PG9wdGlvbj4nIGZvcgogICAg ICAgICogc29tZSBvZiBpdHMgZnVuY3Rpb25hbGl0eSB0byB3b3JrIGFuZCBp bml0aWFsaXplIHNlbGVjdDIgY29udHJvbC4KKyAgICAgICAqCisgICAgICAg KiBCdXQgLSBub3QgZm9yIG11bHRpcGxlIHNlbGVjdGlvbi4KICAgICAgICAq LwotICAgICAgdGhpcy4kZWwuZmluZCgic2VsZWN0IikucHJlcGVuZCgkKCc8 b3B0aW9uPjwvb3B0aW9uPicpKS5zZWxlY3QyKGNvbC5zZWxlY3QyKTsKKyAg ICAgIHZhciBzID0gdGhpcy4kZWwuZmluZCgic2VsZWN0Iik7CisgICAgICBp ZiAoIWNvbC5zZWxlY3QyLm11bHRpcGxlKSB7CisgICAgICAgIHMucHJlcGVu ZCgkKCc8b3B0aW9uPjwvb3B0aW9uPicpKTsKKyAgICAgIH0KKyAgICAgIHMu c2VsZWN0Mihjb2wuc2VsZWN0Mik7CisKICAgICAgIHJldHVybiB0aGlzOwog ICAgIH0KICAgfSk7Cg== --001a113fbce06e527e052c6a9909 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 --001a113fbce06e527e052c6a9909--