Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b19p8-0000Va-JJ for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 09:55:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b19p8-0008E6-0f for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 09:55:58 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b19ol-000801-4m for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 09:55:35 +0000 Received: from mail-lf0-x235.google.com ([2a00:1450:4010:c07::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b19oZ-0007MG-Ir for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 09:55:33 +0000 Received: by mail-lf0-x235.google.com with SMTP id j8so85349547lfd.2 for ; Fri, 13 May 2016 02:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=U6Z+PO3/lAw18/8sxgVX3MLHyiSWwGV/cqUV8ZGb3fE=; b=0Tc03YFJrDCh64oJIRPfP4ublWeic5n7vF2NyrnGk6Its1kHSbxfpuTvTObAWvmIc6 FbnLoqFNZd4UlxA4KY4yBY9hcp3hVbyhcE5TmVpe+h4195mV1TuxuaJ227TG2Rx58L9i 7lmZlNH4uxG70ej58g1riQ+AZ42rY3ZnRUhqrhFD8ypd+HWovek2ZNU/71mi4wbhDCLs cZzxYwW7tcZIs+l6FEusKR5HozkYAIWrAFBq9/Pc9/N+YJ93Tn9VLoafG6Rc6//SWVmB asCcqEfjaCW0+8eVeXErTveLEnEVKce5TkekSbKRPHaTht9Umm+dLun/XWKnTTFjUBys WdDw== 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; bh=U6Z+PO3/lAw18/8sxgVX3MLHyiSWwGV/cqUV8ZGb3fE=; b=gx+f2xzubu1gTE/KOos4cjXCIYGY4cuTMhSZkxR+VVrFxknuRI7rPl07DPNu4TAUo5 QG2sR63lyw0H8jieObDPWPmrVqh985AocOQkGTgknAesYZPLE1RlA87IaBzk/fW5U8tx SIaiPQGWgF40tMwmtNFyVKNRn6JBYob35RdC9TYi/tFVg2k3bucFgTB2AH0Vp4/YGDf2 4HpKGXDpW25VKkzL5we4VQsHatYnDLWZ443gN4n+3vtkpDfbcpQ4GjT/gY4oo01jy07Q P7gsvHp6DFMXMvYC1u7A7VbLXkpppPquU4syeApl6wvSbTDHJHjNn97XnD20tQKWjz2B 66+Q== X-Gm-Message-State: AOPr4FVTXsOfclflhHF+gfjHMPpRa+/ivZEdsJBnncKJp/Wol2vUBFiH8X/3uP8eau51N8GAbFos5iC3L3OJ00mW MIME-Version: 1.0 X-Received: by 10.25.166.200 with SMTP id p191mr6339184lfe.124.1463133320758; Fri, 13 May 2016 02:55:20 -0700 (PDT) Received: by 10.25.206.85 with HTTP; Fri, 13 May 2016 02:55:20 -0700 (PDT) In-Reply-To: References: <58B5FCCE-9882-44C0-B990-8BF5D2FA17DC@enterprisedb.com> <928839C0-1CD1-4307-9C62-6A693D6F0533@enterprisedb.com> <2BC9FA40-F05D-48AA-8796-29808FC15498@enterprisedb.com> Date: Fri, 13 May 2016 15:25:20 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Foreign Table Module From: Khushboo Vashi To: Murtuza Zabuawala Cc: Dave Page , Ashesh Vashi , Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114015ced804e10532b645e0 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 --001a114015ced804e10532b645e0 Content-Type: multipart/alternative; boundary=001a114015ced804db0532b645de --001a114015ced804db0532b645de Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached updated patch for the foreign table module. Thanks, Khushboo On Fri, May 13, 2016 at 10:50 AM, Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > *1)* If we delete one inherited table and add another one > It generated drop columns sql for that inherited table which throws error, > for example "Test123"."TEST" has col1, col2 in it, once we remove table > see the wrong drop column sql. > > SQL: > ---- > ALTER FOREIGN TABLE pem.asdas > DROP COLUMN col1; > > ALTER FOREIGN TABLE pem.asdas > DROP COLUMN col2; > > ALTER FOREIGN TABLE pem.asdas INHERIT pemdata.number_of_wal_files; > > ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST"; > > Expected: > --------- > ALTER FOREIGN TABLE pem.asdas INHERIT pemdata.number_of_wal_files; > > ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST"; > > Done > > *2)* In EDIT mode, Changing just column name of existing column first > drops the entire column > and adds it again, instead of just renaming column name > > (*** Consider a case when user have data in the table & just want to > rename column col1 to col2 > or any other attribute like default value/not null etc, why do we need to > drop entire column in that case? ***) > > SQL: > ---- > ALTER FOREIGN TABLE test.test_ft > DROP COLUMN c1; > > ALTER FOREIGN TABLE test.test_ft > ADD COLUMN c12 bigint NOT NULL; > > Expected: > --------- > ALTER FOREIGN TABLE test.test_ft > RENAME c1 TO c12; > > > Done > *3)* We should not allow user to delete columns inherited from > other table in edit mode from UI > > > Done > *4)* We should not allow user to delete constraint inherited from > other table in edit mode from UI > > Done > > *5)* Issue from my last email still exists, changing type of column > creates wrong sql if it has Length/Precision. > > eg: col12 was numeric(12) which I changed to aclitem > See the wrong sql > > ALTER FOREIGN TABLE pem."test-2" > DROP COLUMN col12; > > ALTER FOREIGN TABLE pem."test-2" > ADD COLUMN col12 aclitem(12) NOT NULL COLLATE pg_catalog."default"; > > > Expected: > --------- > ALTER FOREIGN TABLE pem."test-2" > ADD COLUMN col12 aclitem; > > Done > > *6)* EDIT mode, clearing Data Type from column throws Error on console > > TypeError: this.dataAdapter is null > > Couldn't reproduce. > > *7)* EDIT mode, If i have blank column row and clicks on SQL tab throws > error > > app_iter = app(environ, start_response) > TypeError: 'KeyError' object is not callable > > Done > > *8)* User can clear Owner which we should not allow to clear OR we have > to generate SQL for that opration > > > Done > *9)* I do not have option to provide Statistics attribute for column > > Done > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > On Wed, May 11, 2016 at 3:17 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch for the Foreign Table module. >> >> Thanks, >> Khushboo >> >> On Tue, May 10, 2016 at 4:33 PM, Dave Page wrote: >> >>> >>> >>> On Mon, May 9, 2016 at 1:23 PM, Ashesh Vashi < >>> ashesh.vashi@enterprisedb.com> wrote: >>> >>>> On Mon, May 9, 2016 at 5:50 PM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find the attached updated patch for the Foreign Tables module. >>>>> >>>> >>> Feedback from my initial testing: >>> >>> - Owner is missing from the New dialogue. >>> >>> Done >> >>> - The Properties list shows "Select from the list" in a combo box for >>> Owner and >>> Inherits. >>> >> >> >>> >>> >> This is a generalize issue, I will create a new Kanban card for the same. >> >>> - s/Oid/OID >>> >>> Done >> >>> - s/Foreign Server/Foreign server >>> >>> Done >> >>> - SQL Help filenames are not defined. >>> >>> Done >> >>> - SQL formatting is weird, e.g. >>> >>> CREATE FOREIGN TABLE public.redis_table >>> (id text NOT NULL COLLATE pg_catalog."default", >>> value text NULL COLLATE pg_catalog."default") >>> SERVER redis_server1 >>> OPTIONS (database '0'); >>> >>> instead of: >>> >>> CREATE FOREIGN TABLE public.redis_table ( >>> id text NOT NULL COLLATE pg_catalog."default", >>> value text NULL COLLATE pg_catalog."default" >>> ) >>> SERVER redis_server1 >>> OPTIONS (database '0'); >>> >>> >> Done >> >>> - In the validation error messages, please replace ! with . and "can >>> not" with >>> "cannot" for consistency with recently reviewed strings. >>> >>> >> Done >> >>> - s/mulitple/multiple (in the js). >>> >>> Done >> >>> - How do I manage the ACL? >>> >>> Done. I missed this as I was following pgAdmin-3 as usual. >> >>> Thanks. >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> > --001a114015ced804db0532b645de Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch for the foreign table module.

Thanks,
Khushboo

On = Fri, May 13, 2016 at 10:50 AM, Murtuza Zabuawala <murtuza= .zabuawala@enterprisedb.com> wrote:
1) If we delete one inherited table a= nd add another one
It generated drop columns sql for that inherit= ed table which throws error,
for example "Test123".&quo= t;TEST" has col1, col2 in it, once we remove table=C2=A0
see= the wrong drop column sql.

SQL:
----=C2= =A0
ALTER FOREIGN TABLE pem.asdas
=C2=A0 =C2=A0 DROP CO= LUMN col1;

ALTER FOREIGN TABLE pem.asdas
=C2=A0 =C2=A0 DROP COLUMN col2;

ALTER FOREIGN TAB= LE pem.asdas INHERIT pemdata.number_of_wal_files;

= ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST&quo= t;;

Expected:
---------
ALTER = FOREIGN TABLE pem.asdas INHERIT pemdata.number_of_wal_files;

=
ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123".&qu= ot;TEST";

Done=C2=A0
=

<= div>2) In EDIT mode, Changing just column name of existing column fi= rst drops the entire column
and adds it again, instead of just re= naming column name=C2=A0

(= *** Consider a case when user have data in the table & just want= to rename column col1 to col2=C2=A0
or any other attribute like = default value/not null etc, why do we need to drop entire column in that ca= se? ***)

SQL:
=
----=C2=A0
ALTER FOREIGN TABLE test.test_ft
=C2=A0= =C2=A0 DROP COLUMN c1;

ALTER FOREIGN TABLE test.t= est_ft
=C2=A0 =C2=A0 ADD COLUMN c12 bigint NOT NULL;
Expected:
---------
ALTER FOREIGN TABLE te= st.test_ft
RENAME c1= TO c12;


Done=C2= =A0
3) We should not allow user to delete columns inherited from=C2=A0
other table in edit mode from UI


=
Done=C2=A0
4) We should not allow user to delete c= onstraint inherited from=C2=A0
other table in edit mode from UI

Done=C2=A0

5) Is= sue from my last email still exists, changing type of column
crea= tes wrong sql if it has Length/Precision.

eg: col1= 2 was numeric(12) which I changed to aclitem=C2=A0
See the wrong = sql

ALTER FOREIGN TABLE pem."test-2"
=C2=A0 =C2=A0 DROP COLUMN col12;

ALTER FORE= IGN TABLE pem."test-2"
=C2=A0 =C2=A0 ADD COLUMN col12 a= clitem(12) NOT NULL COLLATE pg_catalog."default";

<= /div>

Expected:
---------
ALTER FORE= IGN TABLE pem."test-2"
=C2=A0 =C2=A0 ADD COLUMN col12 a= clitem;

Done=C2=A0

= 6) EDIT mode, clearing Data Type from column throws Error on console

TypeError: this.dataAdapter is null

Couldn't reproduce.=C2=A0

7) EDIT mode, If i have blank column row and clicks on SQL tab throws error<= /div>

=C2=A0 =C2=A0 app_iter =3D app(environ, start_resp= onse)
TypeError: 'KeyError' object is not callable
<= div>
Done=C2=A0

8) User ca= n clear Owner which we should not allow to clear OR we have to generate SQL= for that opration


Done=C2=A0
9) I do not have option to provide Statistics attribute for = column

Done=C2=A0

--
Regards,
Murtuza Zabuawala
EnterpriseD= B:=C2=A0http://www.enterprisedb.co= m
The Enterprise PostgreSQL Company


On Wed, May 11, 2016 at 3:17 PM, Khushboo Va= shi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Pl= ease find the attached updated patch for the Foreign Table module.

Thanks,
Khushboo

On Tue, May 10, 2016 at 4:33 PM, Dave Page = <dpage@pgadmin.org> wrote:


On Mon, May 9, 2016 at 1:23 PM, Ashesh Vashi &= lt;ashes= h.vashi@enterprisedb.com> wrote:

On Mon, May 9, 2016 at = 5:50 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.com= > wrote:

Hi,

Ple= ase find the attached updated patch for the Foreign Tables module.

Feedback from my initial testing:

- Owner is= missing from the New dialogue.

Done=C2=A0
- T= he Properties list shows "Select from the list" in a combo box fo= r Owner and
=C2=A0 Inherits.
=
=C2=A0
=C2=A0
This is a generalize issue, I will create a new Kanba= n card for the same.
<= div class=3D"gmail_extra">
- s/Oid/OID
=

Done=C2=A0
- s/Foreign Server/Foreign server
<= div>
Done=C2=A0
- SQL Help filenames are not defined.

Done=C2=A0
- SQL formatting is weird, e.g.
<= div>
CREATE FOREIGN TABLE public.redis_table
(id te= xt NOT NULL COLLATE pg_catalog."default",
value text NU= LL COLLATE pg_catalog."default")
=C2=A0 =C2=A0 SERVER r= edis_server1
=C2=A0 =C2=A0 OPTIONS (database '0');
<= div>=C2=A0 =C2=A0=C2=A0
instead of:

CREA= TE FOREIGN TABLE public.redis_table (
=C2=A0 =C2=A0 id text NOT N= ULL COLLATE pg_catalog."default",
=C2=A0 =C2=A0 value t= ext NULL COLLATE pg_catalog."default"
)
=C2= =A0 =C2=A0 SERVER redis_server1
=C2=A0 =C2=A0 OPTIONS (database &= #39;0');
=C2=A0 =C2=A0=C2=A0
Done=C2=A0
- In the validatio= n error messages, please replace ! with . and "can not" with=C2= =A0
=C2=A0 "cannot" for consistency with recently revie= wed strings.
=C2=A0=C2=A0
Done=C2=A0
- s/mulitple/multiple (in= the js).

Done=C2= =A0
- How do I manage the A= CL?=C2=A0

Done. I m= issed this as I was following pgAdmin-3 as usual.=C2=A0
Thanks.


--
Dave Page
Blog: http://pgsnake.blog= spot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com=
The Enterprise PostgreSQL Company



--001a114015ced804db0532b645de-- --001a114015ced804e10532b645e0 Content-Type: text/x-patch; charset=US-ASCII; name="pgAdmin4_foreign_table_ver5.patch" Content-Disposition: attachment; filename="pgAdmin4_foreign_table_ver5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io5jsdx50 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MWZiNmQzYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTEyMSBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyB0aGUgRm9yZWlnbiBUYWJsZSBNb2R1bGUuIiIiCisKK2lt cG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eSwgXAorICAgIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dAorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIGdvbmUKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zy b20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcyBhcyBzY2hlbWFzCitm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3Jl cXVpcmVkCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKKyAgICBT Y2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRp bHMgaW1wb3J0IFwKKyAgICBwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGls cyBpbXBvcnQgcGFyc2VfcHJpdl9mcm9tX2RiLCBcCisgICAgcGFyc2VfcHJp dl90b19kYgorCisKK2NsYXNzIEZvcmVpZ25UYWJsZU1vZHVsZShTY2hlbWFD aGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgRm9yZWlnblRhYmxl TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKworICAgICAgICBUaGlz IGNsYXNzIHJlcHJlc2VudHMgVGhlIEZvcmVpZ24gVGFibGUgTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIEluaXRpYWxpemUgdGhlIEZvcmVp Z24gVGFibGUgTW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCkKKyAgICAgIC0gR2VuZXJhdGUgdGhlIEZvcmVpZ24gVGFi bGUgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCk6Cisg ICAgICAtIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUgRm9y ZWlnbiBUYWJsZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0 X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBG b3JlaWduIFRhYmxlLCB3aGVuIHNjaGVtYSBub2RlIGlzCisgICAgICAgIGlu aXRpYWxpemVkLgorICAgICIiIgorICAgIE5PREVfVFlQRSA9ICdmb3JlaWdu LXRhYmxlJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJGb3Jl aWduIFRhYmxlcyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRm9yZWlnblRhYmxlTW9kdWxl LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNl bGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9u ZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBGb3Jl aWduIFRhYmxlIGNvbGxlY3Rpb24gbm9kZS4KKyAgICAgICAgIiIiCisgICAg ICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25v ZGUoc2NpZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2Rl KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGUgbm9kZSBh cyBsZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFs c2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3Jp cHQgZm9yIGZvcmVpZ24gdGFibGUsIHdoZW4gdGhlCisgICAgICAgIHNjaGVt YSBub2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAg cmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQorCisKK2Js dWVwcmludCA9IEZvcmVpZ25UYWJsZU1vZHVsZShfX25hbWVfXykKKworCitj bGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5 cGVSZWFkZXIpOgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25UYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgVGhpcyBjbGFzcyBpbmhlcml0 cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVz IGZvcgorICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVz cG9uc2libGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBv cGVyYXRpb25zIGZvcgorICAgIHRoZSBGb3JlaWduIFRhYmxlLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxpZGF0ZV9yZXF1ZXN0 KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAg VmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNyZWF0ZSwg dXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAqIG1vZHVsZV9qcygp OgorICAgICAgLSBPdmVycmlkZXMgdGhpcyBwcm9wZXJ0eSB0byBkZWZpbmUg amF2YXNjcmlwdCBmb3IgRm9yZWlnbiBUYWJsZSBub2RlLgorCisgICAgKiBj aGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAtIFdvcmtzIGFzIGEgZGVj b3JhdG9yLgorICAgICAgLSBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBz dGF0dXMuCisgICAgICAtIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQg dGVtcGxhdGUgcGF0aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgIC0gTGlzdCB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAg ICogbm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVy bnMgYWxsIHRoZSBGb3JlaWduIFRhYmxlIHRvIGdlbmVyYXRlIE5vZGVzIGlu IHRoZSBicm93c2VyLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBGb3JlaWdu IFRhYmxlIHByb3BlcnRpZXMuCisKKyAgICAqIGdldF9jb2xsYXRpb25zKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVy bnMgQ29sbGF0aW9ucy4KKworICAgICogZ2V0X3R5cGVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgRGF0YSBU eXBlcy4KKworICAgICogZ2V0X2ZvcmVpZ25fc2VydmVycyhnaWQsIHNpZCwg ZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBG b3JlaWduIFNlcnZlcnMuCisKKyAgICAqIGdldF90YWJsZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUg Rm9yZWlnbiBUYWJsZXMgYXMgd2VsbCBhcyBQbGFpbiBUYWJsZXMuCisKKyAg ICAqIGdldF9jb2x1bW5zKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9u ZSk6CisgICAgICAtIFJldHVybnMgdGhlIFRhYmxlIENvbHVtbnMuCisKKyAg ICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gQ3Jl YXRlcyBhIG5ldyBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogdXBk YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBVcGRh dGVzIHRoZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogZGVsZXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBEcm9wcyB0 aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIHNxbChnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgU1FM IGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIG1zcWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgKiBnZXRfc3FsKGdpZCwg c2lkLCBkYXRhLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0 ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIEZv cmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBk ZXBlbmRlbnRzIGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAg ICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToK KyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRm9y ZWlnbiBUYWJsZSBvYmplY3QuCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUg PSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWwor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ3NjaWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZm9pZCd9CisgICAgXQorCisg ICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAg ICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVs ZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAg ICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAg J2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAgICAn bm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwK KyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdt c3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAg ICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAg ICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31d LAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9k dWxlX2pzJ31dLAorICAgICAgICAnZ2V0X2NvbGxhdGlvbnMnOiBbCisgICAg ICAgICAgICB7J2dldCc6ICdnZXRfY29sbGF0aW9ucyd9LAorICAgICAgICAg ICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfQorICAgICAgICAgICAgXSwK KyAgICAgICAgJ2dldF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dl dCc6ICd0eXBlcyd9XSwKKyAgICAgICAgJ2dldF9mb3JlaWduX3NlcnZlcnMn OiBbeydnZXQnOiAnZ2V0X2ZvcmVpZ25fc2VydmVycyd9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfZm9yZWlnbl9z ZXJ2ZXJzJ31dLAorICAgICAgICAnZ2V0X3RhYmxlcyc6IFt7J2dldCc6ICdn ZXRfdGFibGVzJ30sIHsnZ2V0JzogJ2dldF90YWJsZXMnfV0sCisgICAgICAg ICdnZXRfY29sdW1ucyc6IFt7J2dldCc6ICdnZXRfY29sdW1ucyd9LCB7J2dl dCc6ICdnZXRfY29sdW1ucyd9XQorICAgIH0pCisKKyAgICBkZWYgdmFsaWRh dGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFz IGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0aW5nIHJlcXVlc3Qgb24g dGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUgYW5kIG1vZGlmaWVkIFNR TC4KKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAgICAgICAgICAgICAg ICAgICBuYW1lOiBOYW1lIG9mIHRoZSBGb3JlaWduIFRhYmxlCisgICAgICAg ICAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9yZWlnbiBTZXJ2ZXIgTmFtZQor CisgICAgICAgIEFib3ZlIGJvdGggdGhlIGFyZ3VtZW50cyB3aWxsIG5vdCBi ZSB2YWxpZGF0ZWQgaW4gdGhlIHVwZGF0ZSBhY3Rpb24uCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoc2VsZiwg Kiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30KKworICAgICAg ICAgICAgaWYgcmVxdWVzdC5kYXRhOgorICAgICAgICAgICAgICAgIHJlcSA9 IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXEgPSByZXF1ZXN0LmFyZ3Mg b3IgcmVxdWVzdC5mb3JtCisKKyAgICAgICAgICAgIGlmICdmb2lkJyBub3Qg aW4ga3dhcmdzOgorICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBb CisgICAgICAgICAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAgICAg ICAgICAgJ2Z0c3J2bmFtZScKKyAgICAgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVthcmddID09 ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRu J3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9k ID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9 IFsnY29uc3RyYWludHMnLCAnY29sdW1ucycsICdmdG9wdGlvbnMnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjbGFiZWxzJywg J2luaGVyaXRzJywgJ2FjbCddCisgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2luaGVyaXRzJ10K KworICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAg ICAgICAgICAgICBpZiBrZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXld ICE9ICcnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVx W2tleV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAj IENvdmVydHMgc3RyaW5nIGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQu CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXSBpZlwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHJlcVtrZXldKSA9 PSBsaXN0IGFuZCBsZW4ocmVxW2tleV0pID09IDAgZWxzZSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAganNvbi5sb2FkcyhyZXFba2V5XSkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmhlcml0cyc6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IFRhYmxl IGlkcyBmcm9tIHVuaWNvZGUvc3RyaW5nIHRvIGludAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgYW5kIG1ha2UgdHVwbGUgZm9yICdJTicgcXVl cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0 dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFba2V5XV0pCisKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5oZXJpdHMpID09IDE6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIHR1cHBs ZSBoYXMgLCBhZnRlciB0aGUgZmlyc3QgcGFyYW0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHNpbmdsZSBwYXJhbWV0 ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU28sIHdl IG5lZWQgdG8gbWFrZSBpdCB0dXBsZSBleHBsaWNpdGx5LgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9ICIoIiArIHN0cihp bmhlcml0c1swXSkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBpbmhlcml0czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBGZXRjaCBUYWJsZSBOYW1lcyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUg SWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFzIHdl IG5lZWQgVGFibGUgbmFtZXMgdG8gZ2VuZXJhdGUgdGhlIFNRTC4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3RhYmxlcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy ZWxpZD1pbmhlcml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBp biByZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFba2V5XSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0 cyddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0g PSBbXQorCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICd0eXBu b3RudWxsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9 IFRydWUgaWYgKHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg VHJ1ZSkgZWxzZSBGYWxzZSBpZlwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVxW2tleV0gPT0gJ2ZhbHNlJyBvciByZXFba2V5XSkgaXMgRmFs c2UgZWxzZSAnJworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gcmVxW2tleV0KKworICAg ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisgICAgICAgICAgICBzZWxmLnJlcXVlc3QgPSBkYXRhCisgICAg ICAgICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIExvYWQgSlMgZmlsZSAoZm9yZWlnbl90YWJsZXMu anMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICJmb3JlaWduX3RhYmxlcy9qcy9mb3Jl aWduX3RhYmxlcy5qcyIsCisgICAgICAgICAgICAgICAgXz1nZXR0ZXh0Cisg ICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlw ZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisK KyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIK KyAgICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIENoZWNr cyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAgIEF0 dGFjaGVzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aCB0byB0aGUgY2xhc3Mgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAg QHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgZHJp dmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIo a3dhcmdzWydzaWQnXSkKKworICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2Ug Y29ubmVjdGlvbgorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5h Z2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisKKyAgICAgICAg ICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAgICAgICAg ICAgIGlmIG5vdCBzZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAg ICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9uCisgICAgICAg ICAgICBzZXJ2ZXJfdHlwZSA9IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQor CisgICAgICAgICAgICAjIFNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2Ny aXB0cyBkZXBlbmRpbmcKKyAgICAgICAgICAgICMgb24gdGhlIHNlcnZlciB2 ZXJzaW9uLgorCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTA1MDA6CisgICAg ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fdGFi bGVzL3NxbC85LjVfcGx1cycKKyAgICAgICAgICAgIGVsaWYgdmVyID49IDkw MjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdm b3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMnCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdmb3Jl aWduX3RhYmxlcy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVy biBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg TGlzdCBhbGwgdGhlIEZvcmVpZ24gVGFibGVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdub2RlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10s CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBGb3JlaWduIFRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgTm9kZXMuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdub2RlLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJz ZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgK KyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisg ICAgICAgICAgICAgICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAg IHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29u LWZvcmVpZ24tdGFibGUiCisgICAgICAgICAgICAgICAgKSkKKworICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGUgcHJvcGVydGll cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0 aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpCisKKyAgICAgICAgaWYg bm90IGRhdGE6CisgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KCIi IgorQ291bGQgbm90IGZpbmQgdGhlIGZvcmVpZ24gdGFibGUgaW4gdGhlIGRh dGFiYXNlLgorSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIg dXNlciBvcgorc2hpZnRlZCB0byB0aGUgYW5vdGhlciBzY2hlbWEuCisiIiIp KQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAg ICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUg SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAn JywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb2xsYXRpb25zLnNxbCddKSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgeyds YWJlbCc6IHJvd1snY29weV9jb2xsYXRpb24nXSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWx1ZSc6IHJvd1snY29weV9jb2xsYXRpb24nXX0KKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB0eXBlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyB0aGUgRGF0YSBUeXBlcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisKKyAgICAg ICAgY29uZGl0aW9uID0gIiIidHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElO ICgnYicsICdjJywgJ2QnLCAnZScsICdyJykKK0FORCBOT1QgRVhJU1RTIChT RUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWVzcGFjZT10eXBu YW1lc3BhY2UKK0FORCByZWxuYW1lID0gdHlwbmFtZSBBTkQgcmVsa2luZCAh PSAnYycpIEFORAorKHR5cG5hbWUgTk9UIExJS0UgJ18lJyBPUiBOT1QgRVhJ U1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFCityZWxuYW1lc3Bh Y2U9dHlwbmFtZXNwYWNlIEFORCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5h bWUgRlJPTSAyKTo6bmFtZQorQU5EIHJlbGtpbmQgIT0gJ2MnKSkiIiIKKwor ICAgICAgICBpZiBzZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3Rz OgorICAgICAgICAgICAgY29uZGl0aW9uICs9ICIgQU5EIG5zcC5uc3BuYW1l ICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIgorCisgICAgICAgICMgR2V0IFR5 cGVzCisgICAgICAgIHN0YXR1cywgdHlwZXMgPSBzZWxmLmdldF90eXBlcyhz ZWxmLmNvbm4sIGNvbmRpdGlvbikKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz10eXBlcykKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgZGF0YT10eXBlcywKKyAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBnZXRfZm9yZWlnbl9zZXJ2ZXJzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBGb3JlaWduIFNlcnZlcnMuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAg ICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2ZvcmVpZ25fc2Vy dmVycy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ3Nydm5h bWUnXSwgJ3ZhbHVlJzogcm93WydzcnZuYW1lJ119CisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGdldF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGVzIGFzIHdlbGwgYXMgUGxhaW4g VGFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJ ZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzLnNxbCddKSwgZm9p ZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNldFsncm93 cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNfdHlwZSwg ZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAg ICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAgICAg ICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKGV4Y190eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj X3ZhbHVlLCBleGNfdHJhY2ViYWNrLCBsaW1pdD0yKSkKKworICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZXhjX3ZhbHVlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbHVtbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9p ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIFRh YmxlIENvbHVtbnMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRh YmxlIElkCisgICAgICAgICAgICBhdHRyZWxpZDogVGFibGUgb2lkCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICAgSlNPTiBBcnJheSB3aXRo IGJlbG93IHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgIGF0dG5hbWU6IENv bHVtbiBOYW1lCisgICAgICAgICAgICAgIGRhdGF0eXBlOiBDb2x1bW4gRGF0 YSBUeXBlCisgICAgICAgICAgICAgIGluaGVyaXRlZF9mcm9tOiBQYXJlbnQg VGFibGUgZnJvbSB3aGljaCB0aGUgcmVsYXRlZCBjb2x1bW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlzIGluaGVyaXR0ZWQuCisgICAgICAg ICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ2F0dHJlbGlkJyBpbiBkYXRh OgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90YWJsZV9jb2x1 bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXR0cmVsaWQ9ZGF0YVsnYXR0cmVsaWQnXSkKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3Mn XSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjX3R5 cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayA9IHN5cy5leGNfaW5mbygp CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IodHJhY2Vi YWNrLnByaW50X2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICBleGNfdHlw ZSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUsCisgICAgICAgICAgICAg ICAgZXhjX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICBsaW1pdD0yCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl eGNfdmFsdWUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMg YSBuZXcgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBm b2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBGb3Jl aWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBO YW1lCisgICAgICAgICAgICBmdHNydm5hbWU6IEZvcmVpZ24gU2VydmVyIE5h bWUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRm9yZWlnbiBU YWJsZSBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisgICAgICAgICIiIgorICAg ICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBTUUwgdG8gY3JlYXRlIEZv cmVpZ24gVGFibGUKKyAgICAgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHNlbGYucmVxdWVzdCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgICMgTmVlZCBvaWQgdG8gYWRkIG9iamVj dCBpbiB0aGUgdHJlZSBhdCBicm93c2VyLgorICAgICAgICAgICAgYmFzZW5z cCA9IHNlbGYucmVxdWVzdFsnYmFzZW5zcCddIGlmICgnYmFzZW5zcCcgaW4g c2VsZi5yZXF1ZXN0KSBcCisgICAgICAgICAgICAgICAgZWxzZSBOb25lCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vuc3A9YmFzZW5zcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXNlbGYucmVx dWVzdFsnbmFtZSddKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvaWQs IHNjaWQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICByZXR1cm4g anNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAg Zm9pZCwKKyAgICAgICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5yZXF1ZXN0WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgIGljb249Imljb24tZm9yZWlnbi10YWJsZSIKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZm9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9wcyB0aGUgRm9y ZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFi bGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuY21kID09ICdk ZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVy YXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICAjIEZldGNoIE5hbWUgYW5kIFNjaGVtYSBOYW1l IHRvIGRlbGV0ZSB0aGUgZm9yZWlnbiB0YWJsZS4KKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxl dGUuc3FsJ10pLCBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICBuYW1lLCBiYXNlbnNwID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbnNwPWJhc2Vuc3As CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1j YXNjYWRlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJGb3JlaWduIFRhYmxlIGRy b3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgJ3Nj aWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAor ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVw ZGF0ZXMgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lk OiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAgICAgICBzdGF0 dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBz ZWxmLnJlcXVlc3QsIGZvaWQpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9U1FMKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIFNR TCBhbmQgU1FMLnN0cmlwKCdcbicpIGFuZCBTUUwuc3RyaXAoJyAnKToKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfb2lkLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9pZD1mb2lkKQorICAgICAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBzY2lkID0gcmVzWydyb3dzJ11bMF1b J3NjaWQnXQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgICAgICBpbmZvPSJGb3JlaWduIFRhYmxlIHVwZGF0ZWQi LAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgICAgICdpZCc6IGZvaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lk Jzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAg ICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg ICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lk Jzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnMgdGhlIFNRTCBmb3IgdGhlIEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAi IiIKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZm9pZCwgaW5oZXJpdHM9VHJ1ZSkKKworICAg ICAgICBjb2xfZGF0YSA9IFtdCisgICAgICAgIGZvciBjIGluIGRhdGFbJ2Nv bHVtbnMnXToKKyAgICAgICAgICAgIGlmIChub3QgJ2luaGVyaXRlZGZyb20n IGluIGMpIG9yIChjWydpbmhlcml0ZWRmcm9tJ10gaXMgTm9uZSk6CisgICAg ICAgICAgICAgICAgY29sX2RhdGEuYXBwZW5kKGMpCisKKyAgICAgICAgZGF0 YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHNxbF9oZWFkZXIgPSAi IiItLSB7MH06IHsxfQorCistLSBEUk9QIHswfSB7MX07CisKKyIiIi5mb3Jt YXQoJ0ZPUkVJR04gVEFCTEUnLCBkYXRhWydiYXNlbnNwJ10gKyAiLiIgKyBk YXRhWyduYW1lJ10pCisKKyAgICAgICAgU1FMID0gc3FsX2hlYWRlciArIFNR TAorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNR TC5zdHJpcCgnXG4nKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAg ICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBG b3JlaWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9y ZWlnbiBTZXJ2ZXIgTmFtZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAg ICAgICBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3Jl aWduIFRhYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCBTUUwg PSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgc2VsZi5yZXF1 ZXN0LCBmb2lkKQorICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRh dGE9U1FMLnN0cmlwKCdcbicpLAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IHJldHVybiBTUUwKKworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRhdGEsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBHZW5yYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRl L3VwZGF0ZSB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZv aWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIGlmIGZvaWQgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgb2xkX2RhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzPVRydWUp CisKKyAgICAgICAgICAgICAgICBpZiBub3Qgb2xkX2RhdGE6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIiIiCisgICAgICAg IENvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWduIHRhYmxlIGluIHRoZSBkYXRh YmFzZS4KKyAgICAgICAgSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFu b3RoZXIgdXNlciBvcgorICAgICAgICBzaGlmdGVkIHRvIHRoZSBhbm90aGVy IHNjaGVtYS4KKyAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgICMg UHJlcGFyZSBkaWN0IG9mIGNvbHVtbnMgd2l0aCBrZXkgPSBjb2x1bW4ncyBh dHRudW0KKyAgICAgICAgICAgICAgICAjIFdpbGwgdXNlIHRoaXMgaW4gdGhl IHVwZGF0ZSB0ZW1wbGF0ZSB3aGVuIGFueSBjb2x1bW4gaXMKKyAgICAgICAg ICAgICAgICAjIGNoYW5nZWQsIHRvIGlkZW50aWZ5IHRoZSBjb2x1bW5zLgor ICAgICAgICAgICAgICAgIGNvbF9kYXRhID0ge30KKyAgICAgICAgICAgICAg ICBmb3IgYyBpbiBvbGRfZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAg ICAgICAgICBjb2xfZGF0YVtjWydhdHRudW0nXV0gPSBjCisKKyAgICAgICAg ICAgICAgICBvbGRfZGF0YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAg ICAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCAnYWRkZWQn IGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sdW1ucyddWydhZGRlZCddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMo CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ11bJ2Fk ZGVkJ10pCisKKyAgICAgICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddWydjaGFuZ2VkJ10gPSBzZWxm Ll9mb3JtYXRfY29sdW1ucygKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFbJ2NvbHVtbnMnXVsnY2hhbmdlZCddKQorCisgICAgICAgICAgICAgICAg IyBQYXJzZSBQcml2aWxlZ2VzCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcg aW4gZGF0YSBhbmQgJ2FkZGVkJyBpbiBkYXRhWydhY2wnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnYWNsJ11bJ2FkZGVkJ10gPSBwYXJzZV9wcml2 X3RvX2RiKGRhdGFbJ2FjbCddWydhZGRlZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhIiwgInIi LCAidyIsICJ4Il0pCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2FjbCddOgorICAgICAgICAgICAg ICAgICAgICBkYXRhWydhY2wnXVsnY2hhbmdlZCddID0gcGFyc2VfcHJpdl90 b19kYigKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2FjbCddWydj aGFuZ2VkJ10sWyJhIiwgInIiLCAidyIsICJ4Il0pCisgICAgICAgICAgICAg ICAgaWYgJ2FjbCcgaW4gZGF0YSBhbmQgJ2RlbGV0ZWQnIGluIGRhdGFbJ2Fj bCddOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydhY2wnXVsnZGVsZXRl ZCddID0gcGFyc2VfcHJpdl90b19kYigKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbJ2FjbCddWydkZWxldGVkJ10sWyJhIiwgInIiLCAidyIsICJ4 Il0pCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVsnY29s dW1ucyddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMoZGF0YVsnY29sdW1ucydd KQorCisgICAgICAgICAgICAgICAgIyBQYXJzZSBQcml2aWxlZ2VzCisgICAg ICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgZGF0YVsnYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ2Fj bCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWyJhIiwgInIiLCAidyIsICJ4Il0pCisKKyAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEp CisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgU1FMCisKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBlCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVu ZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5k ZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRo ZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6 IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVu ZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4s IGZvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXgg cmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSAgRm9yZWlnbiBUYWJsZSBvYmpl Y3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisg ICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2Vs Zi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgZm9pZCkKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1k ZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICApCisKKyAgICBkZWYgX2Zvcm1hdF9jb2x1bW5zKHNlbGYsIGNv bHVtbnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRm9ybWF0IFRhYmxlIENv bHVtbnMuCisgICAgICAgICIiIgorICAgICAgICBjb2xzID0gW10KKyAgICAg ICAgZm9yIGMgaW4gY29sdW1uczoKKyAgICAgICAgICAgIGlmIGxlbihjKSA+ IDA6CisgICAgICAgICAgICAgICAgaWYgJ1tdJyBpbiBjWydkYXRhdHlwZSdd OgorICAgICAgICAgICAgICAgICAgICBjWydkYXRhdHlwZSddID0gY1snZGF0 YXR5cGUnXS5yZXBsYWNlKCdbXScsICcnKQorICAgICAgICAgICAgICAgICAg ICBjWydpc0FycmF5VHlwZSddID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgICAgIGNbJ2lzQXJyYXlUeXBlJ10gPSBG YWxzZQorICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKGMpCisKKyAgICAg ICAgcmV0dXJuIGNvbHMKKworCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVz KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsIGluaGVyaXRzPUZh bHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIEZvcmVp Z24gVGFibGUgcHJvcGVydGllcyB3aGljaCB3aWxsIGJlIHVzZWQgaW4KKyAg ICAgICAgcHJvcGVydGllcywgc3FsIGFuZCBnZXRfc3FsIGZ1bmN0aW9ucy4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEg SWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAg ICAgICAgIGluaGVyaXRzOiBJZiBUcnVlIHRoZW4gaW5oZXJpdGVkIHRhYmxl IHdpbGwgYmUgZmV0Y2hlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAg ZGF0YWJhc2UKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg IGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVy biBGYWxzZQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisg ICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDkwMjAwOgorICAg ICAgICAgICAgIyBGZXRjaCBwcml2aWxlZ2VzCisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9pZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCBhY2xyZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2xyZXMpCisKKyAgICAgICAgICAg ICMgR2V0IEZvcm1hdHRlZCBQcml2aWxlZ2VzCisgICAgICAgICAgICBkYXRh LnVwZGF0ZShzZWxmLl9mb3JtYXRfcHJvYWNsX2Zyb21fZGIoYWNscmVzWydy b3dzJ10pKQorCisgICAgICAgICMgR2V0IGZvcm1hdHRlZCBTZWN1cml0eSBM YWJlbHMKKyAgICAgICAgaWYgJ3NlY2xhYmVscycgaW4gZGF0YToKKyAgICAg ICAgICAgIGRhdGEudXBkYXRlKHBhcnNlX3NlY19sYWJlbHNfZnJvbV9kYihk YXRhWydzZWNsYWJlbHMnXSkpCisKKyAgICAgICAgIyBHZXQgZm9ybWF0dGVk IFZhcmlhYmxlcworICAgICAgICBpZiAnZnRvcHRpb25zJyBpbiBkYXRhOgor ICAgICAgICAgICAgZGF0YS51cGRhdGUoeydzdHJmdG9wdGlvbnMnOiBkYXRh WydmdG9wdGlvbnMnXX0pCisgICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxm Ll9wYXJzZV92YXJpYWJsZXNfZnJvbV9kYihkYXRhWydmdG9wdGlvbnMnXSkp CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5zcWwnXSksIGZvaWQ9 Zm9pZCkKKyAgICAgICAgc3RhdHVzLCBjb25zID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNv bnMpCisKKyAgICAgICAgaWYgY29ucyBhbmQgJ3Jvd3MnIGluIGNvbnM6Cisg ICAgICAgICAgICBkYXRhWydjb25zdHJhaW50cyddID0gY29uc1sncm93cydd CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwgZm9pZD1mb2lk KQorICAgICAgICBzdGF0dXMsIGNvbHMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y29scykK KworICAgICAgICAjIFRoZSBMZW5ndGggYW5kIHRoZSBwcmVjaXNpb24gb2Yg dGhlIERhdGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0ZWQuCisgICAgICAgICMg VGhlIEZvcm1hdCB3ZSBnZXR0aW5nIGZyb20gZGF0YWJhc2UgaXM6IG51bWVy aWMoMSwxKQorICAgICAgICAjIFNvLCB3ZSBuZWVkIHRvIHNlcGFyYXRlIGl0 IGFzIExlbmd0aDogMSwgUHJlY2lzaW9uOiAxCisgICAgICAgIGZvciBjIGlu IGNvbHNbJ3Jvd3MnXToKKyAgICAgICAgICAgIGlmIGNbJ2Z1bGx0eXBlJ10g IT0gJycgYW5kIGNbJ2Z1bGx0eXBlJ10uZmluZCgiKCIpID4gMDoKKyAgICAg ICAgICAgICAgICBzdWJzdHIgPSBjWydmdWxsdHlwZSddW2NbJ2Z1bGx0eXBl J10uZmluZCgiKCIpICsgMTpjWydmdWxsdHlwZSddLmZpbmQoIikiKV0KKyAg ICAgICAgICAgICAgICB0eXBsZW4gPSBzdWJzdHIuc3BsaXQoIiwiKQorICAg ICAgICAgICAgICAgIGlmIGxlbih0eXBsZW4pID4gMToKKyAgICAgICAgICAg ICAgICAgICAgY1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAg ICAgICAgICAgICAgICBjWydwcmVjaXNpb24nXSA9IGludCh0eXBsZW5bMV0p CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg Y1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAgICAgICAgICAg ICAgICBjWydwcmVjaXNpb24nXSA9IE5vbmUKKworICAgICAgICBpZiBjb2xz IGFuZCAncm93cycgaW4gY29sczoKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IGNvbHNbJ3Jvd3MnXQorCisgICAgICAgIGRhdGFbJ3N0cmNvbHVt biddID0gJycKKyAgICAgICAgc3RyX2NvbHMgPSBbXQorICAgICAgICBpZiAn Y29sdW1ucycgaW4gZGF0YToKKyAgICAgICAgICAgIGZvciBjIGluIGRhdGFb J2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICBzdHJfY29scy5hcHBlbmQo Y1snc3RyY29sdW1uJ10pCisgICAgICAgICAgICBkYXRhWydzdHJjb2x1bW4n XSA9ICcsICcuam9pbihzdHJfY29scykKKworICAgICAgICAjIEdldCBJbmhl cml0ZWQgdGFibGUgbmFtZXMgZnJvbSB0aGVpciBPSUQKKyAgICAgICAgaWYg aW5oZXJpdHM6CisgICAgICAgICAgICBpZiAnaW5oZXJpdHMnIGluIGRhdGEg YW5kIGRhdGFbJ2luaGVyaXRzJ106CisgICAgICAgICAgICAgICAgaW5oZXJp dHMgPSB0dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFbJ2luaGVyaXRzJ11d KQorICAgICAgICAgICAgICAgIGlmIGxlbihpbmhlcml0cykgPT0gMToKKyAg ICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSAiKCIgKyBzdHIoaW5oZXJp dHNbMF0pICsgIikiCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfdGFibGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXR0cmVsaWQ9aW5oZXJpdHMpCisgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiBy ZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnaW5o ZXJpdHMnXSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0cyddCisKKyAgICAg ICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfZm9ybWF0X3Byb2FjbF9mcm9t X2RiKHNlbGYsIHByb2FjbCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1 cm5zIHByaXZpbGVnZXMuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBw cm9hY2w6IFByaXZpbGVnZXMgRGljdAorICAgICAgICAiIiIKKyAgICAgICAg cHJpdmlsZWdlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcHJvYWNsOgor ICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisg ICAgICAgICAgICBwcml2aWxlZ2VzLmFwcGVuZChwcml2KQorCisgICAgICAg IHJldHVybiB7ImFjbCI6IHByaXZpbGVnZXN9CisKKyAgICBkZWYgX3BhcnNl X3ZhcmlhYmxlc19mcm9tX2RiKHNlbGYsIGRiX3ZhcmlhYmxlcyk6CisgICAg ICAgICIiIgorICAgICAgICBGdW5jdGlvbiB0byBmb3JtYXQgdGhlIG91dHB1 dCBmb3IgdmFyaWFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBkYl92YXJpYWJsZXM6IFZhcmlhYmxlIG9iamVjdAorCisgICAgICAgICAg ICAgICAgRXhwZWN0ZWQgT2JqZWN0IEZvcm1hdDoKKyAgICAgICAgICAgICAg ICAgICAgWydvcHRpb24xPXZhbHVlMScsIC4uXQorICAgICAgICAgICAgICAg IHdoZXJlOgorICAgICAgICAgICAgICAgICAgICB1c2VyX25hbWUgYW5kIGRh dGFiYXNlIGFyZSBvcHRpb25hbAorICAgICAgICBSZXR1cm5zOgorICAgICAg ICAgICAgVmFyaWFibGUgT2JqZWN0IGluIGJlbG93IGZvcm1hdDoKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6IFsK KyAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ3Zhcl9uYW1lJywgJ3Zh bHVlJzogJ3Zhcl92YWx1ZScsCisgICAgICAgICAgICAgICAgICAgICd1c2Vy X25hbWUnOiAndXNlcl9uYW1lJywgJ2RhdGFiYXNlJzogJ2RhdGFiYXNlX25h bWUnfSwKKyAgICAgICAgICAgICAgICAgICAgLi4uXQorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICB3aGVyZToKKyAgICAgICAgICAgICAg ICAgICAgdXNlcl9uYW1lIGFuZCBkYXRhYmFzZSBhcmUgb3B0aW9uYWwKKyAg ICAgICAgIiIiCisgICAgICAgIHZhcmlhYmxlc19sc3QgPSBbXQorCisgICAg ICAgIGlmIGRiX3ZhcmlhYmxlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg IGZvciByb3cgaW4gZGJfdmFyaWFibGVzOgorICAgICAgICAgICAgICAgIHZh cl9uYW1lLCB2YXJfdmFsdWUgPSByb3cuc3BsaXQoIj0iKQorICAgICAgICAg ICAgICAgICMgQmVjYXVzZSB3ZSBzYXZlIGFzIGJvb2xlYW4gc3RyaW5nIGlu IGRiIHNvIGl0IG5lZWRzCisgICAgICAgICAgICAgICAgIyBjb252ZXJzaW9u CisgICAgICAgICAgICAgICAgaWYgdmFyX3ZhbHVlID09ICdmYWxzZScgb3Ig dmFyX3ZhbHVlID09ICdvZmYnOgorICAgICAgICAgICAgICAgICAgICB2YXJf dmFsdWUgPSBGYWxzZQorCisgICAgICAgICAgICAgICAgdmFyX2RpY3QgPSB7 J29wdGlvbic6IHZhcl9uYW1lLCAndmFsdWUnOiB2YXJfdmFsdWV9CisKKyAg ICAgICAgICAgICAgICB2YXJpYWJsZXNfbHN0LmFwcGVuZCh2YXJfZGljdCkK KworICAgICAgICByZXR1cm4geyJmdG9wdGlvbnMiOiB2YXJpYWJsZXNfbHN0 fQorCitGb3JlaWduVGFibGVWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVl cHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy9zdGF0aWMvaW1nL2NvbGwtZm9yZWlnbi10YWJsZS5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2NvbGwtZm9y ZWlnbi10YWJsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMxZjc0 MmJiY2EwNTk4MGYzYzRjYmYzYzE2YWYwZTBjZjlhZmE0MQpHSVQgYmluYXJ5 IHBhdGNoCmxpdGVyYWwgNDkyCnpjbVY8STBUY2QtUCk8aDszS3xMazAwMGUx TkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8RDAwMDAxYjVjaF8wSXRwKQp6PT5Q eCN4PT43MU1Qc0A0QShpS2YmaTw2b2BLe0lSJUd+UFM8TEJuKj1qUF8tI258 Unt4IyUjUT0hbmghUW4yIX4KeikkUUhnLUdqXmlkZEI7MiExLTNQXkdVMWxK KkRrMnA2ZSU+PkU3UG5nVWtJJnRNRU9mP0lAWSktezBUajteTzF1Cno8S15Z JGhyczlIO05ZakhyPnZ+Mz9DazlCPyhYVTc+RVlxd3Jsekstc0htOzJ0KkBg ST5nd3V7JUpiKnY9ai1lMQp6PTstTEZzajJWcEBBMntSP2R8UVZzO2FRQ3Uo R25VPG1CWT1AYkcpYWApfFBiRDRGUHFwVCMycDAwMDRXUWNoQzwKeks8M3pI MDAwMDFWb09JdjBFaCkwTkJ7cjszMjtiUmF7dkdmNjk1MVU2OUU5NG9FUUtB MDAocVFPK15SVzB+ezQ3CnpDVmM7JWNLYHFZbz1IU09SMmI3OyYlRi05RmJx Yn5kXkNhOUY1eT1RM0poVXRtUTFkTSF1ITckUDc2WlI8SVIhZgp6ODJyWUpn R0ZXQ2EjaHoyQGY2eml6ZDxgUUBIMnpXJDI9bnVIQyUkND9UKG0yQWw3ZyQ9 RTVZfGlBWGZLN3NFajsKelBMaWAySmM9UXkwNHZzTT0rJl5kSCtZZERKQ2wr Y0VRYnlVZUlIIThxfUwjRjFvazI/NFFrTm5QVChxVGBYT1RRCmk8REg0OGts TlVOWitgPU0oaFVtbUs7Ull0MDAwMDxNTlVNbkxTVFg9VGx2dWQKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9pbWcvZm9yZWlnbi10YWJsZS5wbmcg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2Zv cmVpZ24tdGFibGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzEz Mzg4NWEwYzBjNzA1MGU0Yzg1ODBhZGZkNzVmOGNlYWE4NTIKR0lUIGJpbmFy eSBwYXRjaApsaXRlcmFsIDU2Mwp6Y21WLTMwP2hyMVApPGg7M0t8TGswMDBl MU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+ UHgjKWxmYFNNZGFrPEEoaUtpKEVwT3BgPVpuSnk0ZFp9LXw2NHU9akc8LT1I fSt3O3BNRSg9VlAoeEV9UTYhCnomO056WXsoaXsoYjtKNT56VzhDZF9FeGc8 T1JWcmZyfHZoUD5AQSQ/Q1liNGslPjhTPV8oNyliSGxnZTtvYShnSgp6PyVt enAtcm5CZC17MFdpO05qdW47Xk59dDxLeU0hPCVockw9Oy1MXz5GTVhePWMl Y3d0Z05pOz9Da0NCP2VGakoKej5nd3ZKcj5DZj5zSTlIN3VkbERgPitBNkZA YmRFVj8oWGladEU7ZkV1KDdlUnZhKylBQCR2S1heWSEpaHdZOWJPCnpfVilQ cl9fbnNUeFZYNllfeER0I0tSb35kMDBER1RQRSFDdD1HYk5jMDAwNEVPR2lX aWh5QCk7MDAwMDlhN2JCbQp6MDAwWFUwMDBYVTBSV251N3l0a08yWHNrSU1G LW1oOTJGPWVsSldtcjAwMDJXTmtsPFo3fUhoSC1FTStGNUMhMCEKeiFhYFNP RSE1JnFPTiYlKHc/SVRPYVQ5SF9HNHVaSzxTZXhwJmZSPURuYW1MYT9uVmQh ND8hclNfKSkxKmc0KUNRCnpEYjFjSUZacHlmVWtyKXlZbnJfPTZ6P0JAUCVm OSU9VzR6QWBjYEl1K2tXWDBqVH1IVktrV3VKQ0kmVE1ne25XYQp6dHV8eU1C SSs0QDl1MCpzQldzQ2FSbzhvQDAzZFh3YlBWaEVxPzIrMWwzWnNhMkchSU1j UjVWVCRhTmw/b3JSZEYKejBMYUx0NEU2YiE7fl9VSU5iK1pKKzsrV0BMKVNv aUBQcWsofDBfeXo2d3wmUVF7P352MDAyb3ZQREhMa1YxbkZoCkJDbkVwPQoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L2pzL2ZvcmVpZ25fdGFibGVzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25f dGFibGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmVkZWQzZDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9y ZWlnbl90YWJsZXMuanMKQEAgLTAsMCArMSw3NTEgQEAKKy8qIENyZWF0ZSBh bmQgUmVnaXN0ZXIgRm9yZWlnbiBUYWJsZSBDb2xsZWN0aW9uIGFuZCBOb2Rl LiAqLworZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5i cm93c2VyJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IGFsZXJ0aWZ5KSB7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwt Zm9yZWlnbi10YWJsZSddKSB7CisgICAgdmFyIGZvcmVpZ250YWJsZSA9IHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1mb3JlaWduLXRhYmxlJ10gPQor ICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAg ICAgICAgbm9kZTogJ2ZvcmVpZ24tdGFibGUnLAorICAgICAgICBsYWJlbDog J3t7IF8oJ0ZvcmVpZ24gVGFibGVzJykgfX0nLAorICAgICAgICB0eXBlOiAn Y29sbC1mb3JlaWduLXRhYmxlJywKKyAgICAgICAgY29sdW1uczogWyduYW1l JywgJ293bmVyJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9Owor CisgIC8vIFNlY3VyaXR5IE1vZGVsCisgIHZhciBTZWN1cml0eU1vZGVsID0g QmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rl Lk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHByb3Zp ZGVyOiBudWxsLAorICAgICAgbGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNj aGVtYTogW3sKKyAgICAgIGlkOiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8o J1Byb3ZpZGVyJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJs ZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAn CisgICAgfSx7CisgICAgICBpZDogJ3NlY3VyaXR5X2xhYmVsJywgbGFiZWw6 ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19JywKKyAgICAgIHR5cGU6ICd0 ZXh0JywgZWRpdGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0 aF9wZXJjZW50XzUwJworICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICBlcnJtc2cg PSBudWxsLAorICAgICAgICAgIGRhdGEgPSB0aGlzLnRvSlNPTigpOworCisg ICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8 fAorICAgICAgICBfLmlzTnVsbChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8fAor ICAgICAgICBTdHJpbmcoZGF0YS5zZWN1cml0eV9sYWJlbCkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICByZXR1cm4gXygi UGxlYXNlIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBhbGwgdGhlIHNlY3VyaXR5 IHByb3ZpZGVycy4iKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBudWxsOwor ICAgIH0KKyAgfSk7CisKKyAgLy8gSW50ZWdlciBDZWxsIGZvciBDb2x1bW5z IExlbmd0aCBhbmQgUHJlY2lzaW9uCisgIHZhciBJbnRlZ2VyRGVwQ2VsbCA9 IEJhY2tncmlkLkludGVnZXJDZWxsLmV4dGVuZCh7CisgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgQmFja2dyaWQuTnVtYmVyQ2Vs bC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5kZW50Q2VsbC5w cm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgfSwKKyAgICAgIGRlcGVuZGVudENoYW5nZWQ6IGZ1bmN0aW9uICgp IHsKKyAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICAgICAgdmFyIG1v ZGVsID0gdGhpcy5tb2RlbDsKKyAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMu Y29sdW1uOworICAgICAgICBlZGl0YWJsZSA9IHRoaXMuY29sdW1uLmdldCgi ZWRpdGFibGUiKTsKKworICAgICAgICBpc19lZGl0YWJsZSA9IF8uaXNGdW5j dGlvbihlZGl0YWJsZSkgPyAhIWVkaXRhYmxlLmFwcGx5KGNvbHVtbiwgW21v ZGVsXSkgOiAhIWVkaXRhYmxlOworICAgICAgICBpZiAoaXNfZWRpdGFibGUp eyB0aGlzLiRlbC5hZGRDbGFzcygiZWRpdGFibGUiKTsgfQorICAgICAgICBl bHNlIHsgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoImVkaXRhYmxlIik7IH0KKwor ICAgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICAgIHJldHVy biB0aGlzOworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0 ZW5zaW9uLkRlcGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZQorICAgIH0p OworCisKKyAgLy8gQ29sdW1ucyBNb2RlbAorICB2YXIgQ29sdW1uc01vZGVs ID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBp ZEF0dHJpYnV0ZTogJ2F0dG51bScsCisgICAgZGVmYXVsdHM6IHsKKyAgICAg IGF0dG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGRhdGF0eXBlOiB1bmRlZmlu ZWQsCisgICAgICB0eXBsZW46IHVuZGVmaW5lZCwKKyAgICAgIHByZWNpc2lv bjogdW5kZWZpbmVkLAorICAgICAgdHlwZGVmYXVsdDogdW5kZWZpbmVkLAor ICAgICAgYXR0bm90bnVsbDogdW5kZWZpbmVkLAorICAgICAgY29sbG5hbWU6 IHVuZGVmaW5lZCwKKyAgICAgIGF0dG51bTogdW5kZWZpbmVkLAorICAgICAg aW5oZXJpdGVkZnJvbTogdW5kZWZpbmVkLAorICAgICAgaW5oZXJpdGVkaWQ6 IHVuZGVmaW5lZCwKKyAgICAgIGF0dHN0YXR0YXJnZXQ6IHVuZGVmaW5lZAor ICAgIH0sCisgICAgdHlwZV9vcHRpb25zOiB1bmRlZmluZWQsCisgICAgc2No ZW1hOiBbeworICAgICAgICBpZDogJ2F0dG5hbWUnLCBsYWJlbDone3sgXygn TmFtZScpIH19JywgY2VsbDogJ3N0cmluZycsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZV9jb2x1bW4nLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnCisgICAgICB9LHsKKyAg ICAgICAgaWQ6ICdkYXRhdHlwZScsIGxhYmVsOid7eyBfKCdEYXRhIFR5cGUn KSB9fScsIGNlbGw6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgIGNv bnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHR5cGU6ICd0ZXh0JywgdXJs OiAnZ2V0X3R5cGVzJywKKyAgICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJs ZV9jb2x1bW4nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MjAnLAorICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYpewor ICAgICAgICAgICAgc2VsZi5tb2RlbC50eXBlX29wdGlvbnMgPSBkOworICAg ICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAgfQorICAgICAgfSx7Cisg ICAgICAgIGlkOiAndHlwbGVuJywgbGFiZWw6J3t7IF8oJ0xlbmd0aCcpIH19 JywKKyAgICAgICAgY2VsbDogSW50ZWdlckRlcENlbGwsCisgICAgICAgIHR5 cGU6ICd0ZXh0JywgZGVwczogWydkYXRhdHlwZSddLAorICAgICAgICBlZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAvLyBXZSB3aWxsIHN0b3Jl IHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94CisgICAgICAgICAg aWYoIShfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAg ICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCisg ICAgICAgICAgICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRm cm9tJykpCisgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJp dGVkZnJvbScpKSkpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAgICAgdmFy IG9mX3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKTsKKyAgICAgICAgaWYobS50 eXBlX29wdGlvbnMpIHsKKyAgICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcs IGZhbHNlLCB7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgICAgICAvLyBpdGVy YXRpbmcgb3ZlciBhbGwgdGhlIHR5cGVzCisgICAgICAgICAgXy5lYWNoKG0u dHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAgICAgICAgICAvLyBp ZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGlu IG9wdGlvbnMKKyAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVl ICkgeworICAgICAgICAgICAgICAgICBtLnNldCgndHlwbGVuJywgdW5kZWZp bmVkKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBsZW5ndGggaXMgYWxsb3dl ZCBmb3Igc2VsZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgIGlmKG8ubGVu Z3RoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIC8v IHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICBt LnNldCgnaXNfdGxlbmd0aCcsIHRydWUsIHtzaWxlbnQ6IHRydWV9KTsKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNldCgnbWF4 X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAg ICAgICByZXR1cm4gbS5nZXQoJ2lzX3RsZW5ndGgnKTsKKyAgICAgICAgfQor ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJworICAgICAgfSx7 CisgICAgICAgIGlkOiAncHJlY2lzaW9uJywgbGFiZWw6J3t7IF8oJ1ByZWNp c2lvbicpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBkZXBzOiBbJ2Rh dGF0eXBlJ10sCisgICAgICAgIGNlbGw6IEludGVnZXJEZXBDZWxsLAorICAg ICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCEo Xy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAgICAgICAg ICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAgICAg ICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkZnJvbScp KQorICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZy b20nKSkpKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKTsKKyAgICAgICAgICBpZihtLnR5 cGVfb3B0aW9ucykgeworICAgICAgICAgICAgIG0uc2V0KCdpc19wcmVjaXNp b24nLCBmYWxzZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgLy8g aXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgICAgXy5l YWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAgICAgICAg ICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1h dGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUg PT0gby52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICBtLnNldCgncHJlY2lz aW9uJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmVj ZXNzaW9uIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAg ICAgICAgICBpZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAor ICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIHRydWUs IHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdt aW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVu dDogdHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9KTsKKyAgICAgICAgICByZXR1cm4gbS5nZXQoJ2lzX3By ZWNpc2lvbicpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MTAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICd0eXBkZWZhdWx0JywgbGFi ZWw6J3t7IF8oJ0RlZmF1bHQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAg ICAgY2VsbDogJ3N0cmluZycsIG1pbl92ZXJzaW9uOiA5MDMwMCwKKyAgICAg ICAgcGxhY2Vob2xkZXI6ICJFbnRlciBhbiBleHByZXNzaW9uIG9yIGEgdmFs dWUuIiwKKyAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzEwJywKKyAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGlk JykpCisgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVk aWQnKSkKKyAgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2lu aGVyaXRlZGZyb20nKSkKKyAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0 KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg ICAgICBpZiAodGhpcy5nZXQoJ25vZGVfaW5mbycpLnNlcnZlci52ZXJzaW9u IDwgOTAzMDApeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg ICAgfSx7CisgICAgICAgIGlkOiAnYXR0bm90bnVsbCcsIGxhYmVsOid7eyBf KCdOb3QgTnVsbCcpIH19JywKKyAgICAgICAgY2VsbDogJ2Jvb2xlYW4nLHR5 cGU6ICdzd2l0Y2gnLCBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVtbics CisgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8x MCcKKyAgICAgIH0seworICAgICAgICBpZDogJ2F0dHN0YXR0YXJnZXQnLCBs YWJlbDone3sgXygnU3RhdGlzdGljcycpIH19JywgbWluX3ZlcnNpb246IDkw MjAwLAorICAgICAgICBjZWxsOiAnaW50ZWdlcicsIHR5cGU6ICdpbnQnLCBl ZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICBpZiAoXy5pc1VuZGVm aW5lZChtLmlzTmV3KSB8fCBtLmlzTmV3KCkpIHsgcmV0dXJuIGZhbHNlOyB9 CisgICAgICAgIGlmICh0aGlzLmdldCgnbm9kZV9pbmZvJykuc2VydmVyLnZl cnNpb24gPCA5MDIwMCl7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0 KCdpbmhlcml0ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVk aWQnKSkKKyAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGZyb20nKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpID8gdHJ1ZSA6IGZhbHNlCisgICAgICAgIH0sIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF8xMCcKKyAgICAgIH0seworICAgICAgICBp ZDogJ2NvbGxuYW1lJywgbGFiZWw6J3t7IF8oJ0NvbGxhdGlvbicpIH19Jywg Y2VsbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgY29udHJvbDog J25vZGUtYWpheC1vcHRpb25zJywgdHlwZTogJ3RleHQnLCB1cmw6ICdnZXRf Y29sbGF0aW9ucycsCisgICAgICAgIG1pbl92ZXJzaW9uOiA5MDMwMCwgZWRp dGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZiAoIShfLmlzVW5k ZWZpbmVkKG0uaXNOZXcpKSAmJiAhbS5pc05ldygpKSB7IHJldHVybiBmYWxz ZTsgfQorICAgICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChtLmdldCgn aW5oZXJpdGVkaWQnKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlk JykpCisgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGZyb20nKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpID8gdHJ1ZSA6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAgIH0sewor ICAgICAgICBpZDogJ2F0dG51bScsIGNlbGw6ICdzdHJpbmcnLHR5cGU6ICd0 ZXh0JywgdmlzaWJsZTogZmFsc2UKKyAgICAgIH0seworICAgICAgICBpZDog J2luaGVyaXRlZGZyb20nLCBsYWJlbDone3sgXygnSW5oZXJpdGVkIEZyb20n KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICB0eXBlOiAndGV4dCcs IHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCdd LAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MTAnCisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAg ICAgdmFyIGVyciA9IHt9LAorICAgICAgZXJybXNnOworCisgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnYXR0bmFtZScpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ2F0dG5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdDb2x1 bW4gTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgZXJy bXNnID0gZXJybXNnIHx8IGVyclsnYXR0bmFtZSddOworICAgICAgfQorCisg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZGF0YXR5cGUnKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScpKQorICAgICAgLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgZXJyWydi YXNlbnNwJ10gPSAne3sgXygnQ29sdW1uIERhdGF0eXBlIGNhbiBub3QgYmUg ZW1wdHkhJykgfX0nOworICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJy WydkYXRhdHlwZSddOworICAgICAgfQorCisgICAgICB0aGlzLmVycm9yTW9k ZWwuY2xlYXIoKS5zZXQoZXJyKTsKKworICAgICAgcmV0dXJuIGVycm1zZzsK KyAgICB9LAorICAgIGlzX2VkaXRhYmxlX2NvbHVtbjogZnVuY3Rpb24obSkg eworICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0 ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAg ICAgICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykp IHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSA/IHRydWUg OiBmYWxzZQorICAgIH0sCisgICAgdG9KU09OOiBCYWNrYm9uZS5Nb2RlbC5w cm90b3R5cGUudG9KU09OCisgIH0pOworCisgIHZhciBmb3JtYXROb2RlID0g ZnVuY3Rpb24ob3B0KSB7CisgICAgaWYgKCFvcHQuaWQpIHsKKyAgICAgIHJl dHVybiBvcHQudGV4dDsKKyAgICB9CisKKyAgICB2YXIgb3B0aW1hZ2UgPSAk KG9wdC5lbGVtZW50KS5kYXRhKCdpbWFnZScpOworCisgICAgaWYoIW9wdGlt YWdlKXsKKyAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICB9IGVsc2Ugewor ICAgICAgcmV0dXJuICQoCisgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNz PSJ3Y1RhYkljb24gJyArIG9wdGltYWdlICsgJyIvPicgKyBvcHQudGV4dCAr ICc8L3NwYW4+JworICAgICAgICAgICk7CisgICAgfQorICB9OworCisKKyAg LyogTm9kZUFqYXhPcHRpb25zTXVsdGlwbGVDb250cm9sIGlzIGZvciBtdWx0 aXBsZSBzZWxlY3Rpb24gb2YgQ29tYm9ib3guCisgICogIFRoaXMgY29udHJv bCBpcyB1c2VkIHRvIHNlbGVjdCBNdWx0aXBsZSBQYXJlbnQgVGFibGVzIHRv IGJlIGluaGVyaXRlZC4KKyAgKiAgSXQgYWxzbyBwb3B1bGF0ZXMvdmFjYXRl cyBDb2x1bW5zIG9uIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiB0aGUgb3B0 aW9uIChpLmUuIHRhYmxlIG5hbWUpLgorICAqICBUbyBwb3B1bGF0ZXMgdGhl IGNvbHVtbiwgaXQgY2FsbHMgdGhlIHNlcnZlciBhbmQgZmV0Y2ggdGhlIGNv bHVtbnMgZGF0YQorICAqICBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlLgorICAq LworCisgIHZhciBOb2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBC YWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBCYWNr Zm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgdGVt cGxhdGU6IF8udGVtcGxhdGUoWworICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9 QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48 L2xhYmVsPicsCisgICAgICAnPGRpdiBjbGFzcz0iPCU9QmFja2Zvcm0uY29u dHJvbHNDbGFzc05hbWUlPiA8JT1leHRyYUNsYXNzZXMuam9pbihcJyBcJykl PiI+JywKKyAgICAgICcgIDxzZWxlY3QgY2xhc3M9InBnYWRtaW4tbm9kZS1z ZWxlY3QgZm9ybS1jb250cm9sIiBuYW1lPSI8JT1uYW1lJT4iIHN0eWxlPSJ3 aWR0aDoxMDAlOyIgdmFsdWU9PCUtdmFsdWUlPiA8JT1kaXNhYmxlZCA/ICJk aXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIi JT4gPicsCisgICAgICAnICA8L3NlbGVjdD4nLAorICAgICAgJzwvZGl2Pidd LmpvaW4oIlxuIikpLAorICAgIGRlZmF1bHRzOiBfLmV4dGVuZCgKKyAgICAg IHt9LCBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlw ZS5kZWZhdWx0cywKKyAgICAgIHsKKyAgICAgICAgc2VsZWN0MjogeworICAg ICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xk ZXI6ICdTZWxlY3QgZnJvbSB0aGUgbGlzdCcsCisgICAgICAgICAgd2lkdGg6 ICdzdHlsZScsCisgICAgICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZvcm1hdE5v ZGUsCisgICAgICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdE5vZGUK KyAgICAgICAgfQorICAgICAgfSksCisgICAgcmVuZGVyOiBmdW5jdGlvbigp IHsKKyAgICAgIHZhciBmaWVsZCA9IF8uZGVmYXVsdHModGhpcy5maWVsZC50 b0pTT04oKSwgdGhpcy5kZWZhdWx0cyksCisgICAgICAgIGF0dHJpYnV0ZXMg PSB0aGlzLm1vZGVsLnRvSlNPTigpLAorICAgICAgICBhdHRyQXJyID0gZmll bGQubmFtZS5zcGxpdCgnLicpLAorICAgICAgICBuYW1lID0gYXR0ckFyci5z aGlmdCgpLAorICAgICAgICBwYXRoID0gYXR0ckFyci5qb2luKCcuJyksCisg ICAgICAgIHJhd1ZhbHVlID0gdGhpcy5rZXlQYXRoQWNjZXNzb3IoYXR0cmli dXRlc1tuYW1lXSwgcGF0aCksCisgICAgICAgIGRhdGEgPSBfLmV4dGVuZChm aWVsZCwgeworICAgICAgICAgIHJhd1ZhbHVlOiByYXdWYWx1ZSwKKyAgICAg ICAgICB2YWx1ZTogdGhpcy5mb3JtYXR0ZXIuZnJvbVJhdyhyYXdWYWx1ZSwg dGhpcy5tb2RlbCksCisgICAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRl cywKKyAgICAgICAgICBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0dGVyCisgICAg ICAgIH0pLAorICAgICAgICBldmFsRiA9IGZ1bmN0aW9uKGYsIGQsIG0pIHsK KyAgICAgICAgICByZXR1cm4gKF8uaXNGdW5jdGlvbihmKSA/ICEhZi5hcHBs eShkLCBbbV0pIDogISFmKTsKKyAgICAgICAgfTsKKworICAgICAgLy8gRXZh bHVhdGUgdGhlIGRpc2FibGVkLCB2aXNpYmxlLCBhbmQgcmVxdWlyZWQgb3B0 aW9uCisgICAgICBfLmV4dGVuZChkYXRhLCB7CisgICAgICAgIGRpc2FibGVk OiBldmFsRihkYXRhLmRpc2FibGVkLCBkYXRhLCB0aGlzLm1vZGVsKSwKKyAg ICAgICAgdmlzaWJsZTogIGV2YWxGKGRhdGEudmlzaWJsZSwgZGF0YSwgdGhp cy5tb2RlbCksCisgICAgICAgIHJlcXVpcmVkOiBldmFsRihkYXRhLnJlcXVp cmVkLCBkYXRhLCB0aGlzLm1vZGVsKQorICAgICAgfSk7CisKKyAgICAgIGlm IChmaWVsZC5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCBmaWVsZC5taW5f dmVyc2lvbikgeworICAgICAgICBmaWVsZC52ZXJzaW9uX2NvbXBhdGlibGUg PSBmYWxzZQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgIH0KKyAgICAg IGVsc2UgeworICAgICAgICAvLyBFdmFsdWF0aW9uIHRoZSBvcHRpb25zCisg ICAgICAgIGlmIChfLmlzRnVuY3Rpb24oZGF0YS5vcHRpb25zKSkgeworICAg ICAgICB0cnkgeworICAgICAgICAgIGRhdGEub3B0aW9ucyA9IGRhdGEub3B0 aW9ucy5hcHBseSh0aGlzKQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg ICAgICAvLyBEbyBub3RoaW5nCisgICAgICAgICAgZGF0YS5vcHRpb25zID0g W10KKyAgICAgICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoJ3BnYWRtaW4tdmll dzp0cmFuc2Zvcm06ZXJyb3InLCBzZWxmLm1vZGVsLCBzZWxmLmZpZWxkLCBl KTsKKyAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYW4g dXAgZmlyc3QKKyAgICAgICAgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoQmFja2Zv cm0uaGlkZGVuQ2xhc3NuYW1lKTsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0 aGlzLnRlbXBsYXRlKGRhdGEpKS5hZGRDbGFzcyhmaWVsZC5uYW1lKTsKKwor ICAgICAgICBpZiAoIWRhdGEudmlzaWJsZSkgeworICAgICAgICB0aGlzLiRl bC5hZGRDbGFzcyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUpOworICAgICAg ICB9IGVsc2UgeworICAgICAgICB2YXIgb3B0cyA9IF8uZXh0ZW5kKAorICAg ICAgICAgIHt9LCB0aGlzLmRlZmF1bHRzLnNlbGVjdDIsIGRhdGEuc2VsZWN0 MiwKKyAgICAgICAgICB7CisgICAgICAgICAgICAnZGF0YSc6IGRhdGEub3B0 aW9ucworICAgICAgICAgIH0pOworICAgICAgICB0aGlzLiRlbC5maW5kKCJz ZWxlY3QiKS5zZWxlY3QyKG9wdHMpLnZhbChkYXRhLnJhd1ZhbHVlKS50cmln Z2VyKCJjaGFuZ2UiKTsKKyAgICAgICAgdGhpcy51cGRhdGVJbnZhbGlkKCk7 CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB0aGlzOworICAg IH0sCisgICAgb25DaGFuZ2U6IGZ1bmN0aW9uKGUpIHsKKyAgICAgIHZhciBt b2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgICAgJGVsID0gJChlLnRhcmdl dCksCisgICAgICAgICAgYXR0ckFyciA9IHRoaXMuZmllbGQuZ2V0KCJuYW1l Iikuc3BsaXQoJy4nKSwKKyAgICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlm dCgpLAorICAgICAgICAgIHBhdGggPSBhdHRyQXJyLmpvaW4oJy4nKSwKKyAg ICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCisgICAg ICAgICAgY2hhbmdlcyA9IHt9LAorICAgICAgICAgIGNvbHVtbnMgPSBtb2Rl bC5nZXQoJ2NvbHVtbnMnKSwKKyAgICAgICAgICBpbmhlcml0cyA9IG1vZGVs LmdldChuYW1lKTsKKworICAgICAgaWYgKHRoaXMubW9kZWwuZXJyb3JNb2Rl bCBpbnN0YW5jZW9mIEJhY2tib25lLk1vZGVsKSB7CisgICAgICAgIGlmIChf LmlzRW1wdHkocGF0aCkpIHsKKyAgICAgICAgICB0aGlzLm1vZGVsLmVycm9y TW9kZWwudW5zZXQobmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgdmFyIG5lc3RlZEVycm9yID0gdGhpcy5tb2RlbC5lcnJvck1vZGVsLmdl dChuYW1lKTsKKyAgICAgICAgICBpZiAobmVzdGVkRXJyb3IpIHsKKyAgICAg ICAgICAgIHRoaXMua2V5UGF0aFNldHRlcihuZXN0ZWRFcnJvciwgcGF0aCwg bnVsbCk7CisgICAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0 KG5hbWUsIG5lc3RlZEVycm9yKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgIH0KKworICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICBp ZiAodHlwZW9mKGluaGVyaXRzKSAgPT0gInN0cmluZyIpeyBpbmhlcml0cyA9 IEpTT04ucGFyc2UoaW5oZXJpdHMpOyB9CisKKyAgICAgIC8vIFJlbW92ZSBD b2x1bW5zIGlmIGluaGVyaXQgb3B0aW9uIGlzIGRlc2VsZWN0ZWQgZnJvbSB0 aGUgY29tYm9ib3gKKyAgICAgIGlmKF8uc2l6ZShKU09OLnBhcnNlKHZhbHVl KSkgPCBfLnNpemUoaW5oZXJpdHMpKSB7CisgICAgICAgIHZhciBkaWYgPSAg Xy5kaWZmZXJlbmNlKGluaGVyaXRzLCBKU09OLnBhcnNlKHZhbHVlKSk7Cisg ICAgICAgIHZhciBybXZfY29sdW1ucyA9IGNvbHVtbnMud2hlcmUoe2luaGVy aXRlZGlkOiBwYXJzZUludChkaWZbMF0pfSk7CisgICAgICAgIGNvbHVtbnMu cmVtb3ZlKHJtdl9jb2x1bW5zKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAg ICAgIHsKKyAgICAgICAgXy5lYWNoKEpTT04ucGFyc2UodmFsdWUpLCBmdW5j dGlvbihpKSB7CisgICAgICAgICAgLy8gRmV0Y2ggQ29sdW1ucyBmcm9tIHNl cnZlcgorICAgICAgICAgIHZhciBmbmRfY29sdW1ucyA9IGNvbHVtbnMud2hl cmUoe2luaGVyaXRlZGlkOiBwYXJzZUludChpKX0pOworICAgICAgICAgIGlm IChmbmRfY29sdW1ucyAmJiBmbmRfY29sdW1ucy5sZW5ndGggPD0gMCkgewor ICAgICAgICAgICAgaW5odGVkX2NvbHVtbnMgPSBzZWxmLmZldGNoQ29sdW1u cyhpKTsKKyAgICAgICAgICAgIGNvbHVtbnMuYWRkKGluaHRlZF9jb2x1bW5z KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAg ICBjaGFuZ2VzW25hbWVdID0gXy5pc0VtcHR5KHBhdGgpID8gdmFsdWUgOiBf LmNsb25lKG1vZGVsLmdldChuYW1lKSkgfHwge307CisgICAgICB0aGlzLnN0 b3BMaXN0ZW5pbmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhp cy5yZW5kZXIpOworICAgICAgbW9kZWwuc2V0KGNoYW5nZXMpOworICAgICAg dGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0 aGlzLnJlbmRlcik7CisgICAgfSwKKyAgICBmZXRjaENvbHVtbnM6IGZ1bmN0 aW9uKHRhYmxlX2lkKXsKKyAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAg ICAgICB1cmwgPSAnZ2V0X2NvbHVtbnMnLAorICAgICAgICAgIG0gPSBzZWxm Lm1vZGVsLnRvcCB8fCBzZWxmLm1vZGVsOworCisgICAgICBpZiAodXJsKSB7 CisgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9u b2RlJyksCisgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdl dCgnbm9kZV9pbmZvJyksCisgICAgICAgICAgICBmdWxsX3VybCA9IG5vZGUu Z2VuZXJhdGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICBub2RlLCBbCisg ICAgICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZpZWxkLmdldCgnbm9k ZV9kYXRhJyksCisgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ3Vy bF93aXRoX2lkJykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAgICAgICAgICAg ICBdKSwKKyAgICAgICAgICAgIGNhY2hlX2xldmVsID0gdGhpcy5maWVsZC5n ZXQoJ2NhY2hlX2xldmVsJykgfHwgbm9kZS50eXBlLAorICAgICAgICAgICAg Y2FjaGVfbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9ub2RlJyk7CisK KyAgICAgICAgY2FjaGVfbm9kZSA9IChjYWNoZV9ub2RlICYmIHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1snY2FjaGVfbm9kZSddKSB8fCBub2RlOworCisgICAg ICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2Vs Zi5maWVsZCk7CisgICAgICAgIGRhdGEgPSB7YXR0cmVsaWQ6IHRhYmxlX2lk fQorCisgICAgICAgIC8vIEZldGNoaW5nIENvbHVtbnMgZGF0YSBmb3IgdGhl IHNlbGVjdGVkIHRhYmxlLgorICAgICAgICAkLmFqYXgoeworICAgICAgICAg IGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICB1cmw6IGZ1bGxfdXJsLAorICAg ICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgc3VjY2VzczogZnVuY3Rp b24ocmVzKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogV2Ug d2lsbCBjYWNoZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlvZCBvZiB0aW1l IGZvciBhdm9pZGluZworICAgICAgICAgICAgICogc2FtZSBjYWxscy4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgZGF0YSA9IGNhY2hlX25vZGUu Y2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCByZXMuZGF0YSk7 CisKKyAgICAgICAgICB9LAorICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNo OmVycm9yJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgfQorICAgICAg ICB9KTsKKyAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hl ZCcsIG0sIHNlbGYuZmllbGQpOworCisgICAgICAgIC8vIFRvIGZldGNoIG9u bHkgb3B0aW9ucyBmcm9tIGNhY2hlLCB3ZSBkbyBub3QgbmVlZCB0aW1lIGZy b20gJ2F0JworICAgICAgICAvLyBhdHRyaWJ1dGUgYnV0IG9ubHkgb3B0aW9u cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSXQgaXMgZmVhc2libGUgdGhh dCB0aGUgZGF0YSBtYXkgbm90IGhhdmUgYmVlbiBmZXRjaGVkLgorICAgICAg ICBkYXRhID0gKGRhdGEgJiYgZGF0YS5kYXRhKSB8fCBbXTsKKyAgICAgICAg cmV0dXJuIGRhdGE7CisgICAgICB9CisgICAgfSwKKyAgfSk7CisKKworICAv LyBDb25zdHJhaW50cyBNb2RlbAorICB2YXIgQ29uc3RyYWludE1vZGVsID0g cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBpZEF0 dHJpYnV0ZTogJ2Nvbm9pZCcsCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o YXR0cnMsIGFyZ3MpIHsKKyAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0 cnMpID09PSAwKTsKKyAgICAgIGlmICghaXNOZXcpIHsKKyAgICAgICAgdGhp cy5jb252YWxpZGF0ZWRfZGVmYXVsdCA9IHRoaXMuZ2V0KCdjb252YWxpZGF0 ZWQnKQorICAgICAgfQorICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKKyAgICB9LAorICAgIGRlZmF1bHRzOiB7CisgICAgICBjb25vaWQ6IHVu ZGVmaW5lZCwKKyAgICAgIGNvbm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGNv bnNyYzogdW5kZWZpbmVkLAorICAgICAgY29ubm9pbmhlcml0OiB1bmRlZmlu ZWQsCisgICAgICBjb252YWxpZGF0ZWQ6IHRydWUsCisgICAgICBjb25pc2xv Y2FsOiB1bmRlZmluZWQKKyAgICB9LAorICAgIGNvbnZhbGlkYXRlZF9kZWZh dWx0OiB0cnVlLAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnY29ub2lk JywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5nJywgdmlzaWJsZTogZmFs c2UKKyAgICB9LHsKKyAgICAgIGlkOiAnY29ubmFtZScsIGxhYmVsOid7eyBf KCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZScsIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF8zMCcKKyAgICB9LHsKKyAgICAgIGlkOiAn Y29uc3JjJywgbGFiZWw6J3t7IF8oJ0NoZWNrJykgfX0nLCB0eXBlOiAnbXVs dGlsaW5lJywKKyAgICAgIGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLCBjZWxs OiBCYWNrZ3JpZC5FeHRlbnNpb24uVGV4dGFyZWFDZWxsLAorICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMwJworICAgIH0sewor ICAgICAgaWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDone3sgXygnTm8gSW5o ZXJpdCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICBjZWxsOiAnYm9v bGVhbicsIGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLAorICAgICAgY2VsbEhl YWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJworICAgIH0seworICAg ICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDone3sgXygnVmFsaWRhdGU/ JykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAgICAgIGNlbGw6ICdib29sZWFu JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJywKKyAg ICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgIHZhciBzZXJ2 ZXIgPSB0aGlzLmdldCgnbm9kZV9pbmZvJykuc2VydmVyOworICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChtLmlzTmV3KSkgeyByZXR1cm4gdHJ1ZTsgfQor ICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgIGlmKG0uZ2V0 KCdjb252YWxpZGF0ZWQnKSAmJiBtLmNvbnZhbGlkYXRlZF9kZWZhdWx0KSB7 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy biB0cnVlOworICAgICAgfQorICAgICB9CisgICAgXSwKKyAgICB2YWxpZGF0 ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZXJyID0ge30sCisgICAgICBl cnJtc2c7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdj b25uYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnY29ubmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIGVyclsn Y29ubmFtZSddID0gJ3t7IF8oJ0NvbnN0cmFpbnQgTmFtZSBjYW4gbm90IGJl IGVtcHR5IScpIH19JzsKKyAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnY29ubmFtZSddOworICAgICAgfQorCisgICAgICBpZiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnY29uc3JjJykpIHx8IFN0cmluZyh0aGlzLmdldCgn Y29uc3JjJykpCisgICAgICAucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICBlcnJbJ2NvbnNyYyddID0gJ3t7IF8oJ0NvbnN0 cmFpbnQgQ2hlY2sgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAg IGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2NvbnNyYyddOworICAgICAgfQor CisgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKKwor ICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICB9LAorICAgIGlzX2VkaXRhYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgIHJldHVybiBfLmlzVW5kZWZpbmVk KG0uaXNOZXcpID8gdHJ1ZSA6IG0uaXNOZXcoKTsKKyAgICB9LAorICAgIHRv SlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNPTgorICB9KTsK KworCisgIC8vIE9wdGlvbnMgTW9kZWwKKyAgdmFyIE9wdGlvbnNNb2RlbCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVm YXVsdHM6IHsKKyAgICAgIG9wdGlvbjogdW5kZWZpbmVkLAorICAgICAgdmFs dWU6IHVuZGVmaW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAg aWQ6ICdvcHRpb24nLCBsYWJlbDone3sgXygnT3B0aW9uJykgfX0nLCBjZWxs OiAnc3RyaW5nJywgdHlwZTogJ3RleHQnLAorICAgICAgZWRpdGFibGU6IHRy dWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzUwJworICAg IH0seworICAgICAgaWQ6ICd2YWx1ZScsIGxhYmVsOid7eyBfKCdWYWx1ZScp IH19JywgY2VsbDogJ3N0cmluZycsdHlwZTogJ3RleHQnLAorICAgICAgZWRp dGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50 XzUwJworICAgIH0KKyAgICBdLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbigp IHsKKyAgICAgIC8vIFRPRE86IEFkZCB2YWxpZGF0aW9uIGhlcmUKKyAgICB9 LAorICAgIHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNP TgorICB9KTsKKworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydmb3JlaWdu LXRhYmxlJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2ZvcmVp Z24tdGFibGUnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICB0 eXBlOiAnZm9yZWlnbi10YWJsZScsCisgICAgICBzcWxBbHRlckhlbHA6ICdz cWwtYWx0ZXJmb3JlaWdudGFibGUuaHRtbCcsCisgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZWZvcmVpZ250YWJsZS5odG1sJywKKyAgICAgIGxh YmVsOiAne3sgXygnRm9yZWlnbiBUYWJsZScpIH19JywKKyAgICAgIGNvbGxl Y3Rpb25fdHlwZTogJ2NvbGwtZm9yZWlnbi10YWJsZScsCisgICAgICBoYXNT UUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFy ZW50X3R5cGU6IFsnc2NoZW1hJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigp IHsKKyAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAg ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQg PSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX2ZvcmVpZ24tdGFibGVfb25fY29sbCcs IG5vZGU6ICdjb2xsLWZvcmVpZ24tdGFibGUnLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxs YmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRm9y ZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJ Y29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdjcmVh dGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Zv cmVpZ24tdGFibGUnLCBub2RlOiAnZm9yZWlnbi10YWJsZScsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0 J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCdGb3JlaWduIFRhYmxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1mb3JlaWduLXRhYmxlJywgZGF0YToge2FjdGlv bjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6 ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdj cmVhdGVfZm9yZWlnbi10YWJsZScsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnRm9yZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29u OiAnd2NUYWJJY29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnLCBjaGVjazogZmFsc2V9LAorICAgICAgICAgIGVuYWJs ZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKworICAg ICAgfSwKKyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1h J10uY2FuQ2hpbGREcm9wLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJv d3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgbW9k ZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAg ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAg ICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOworICAg ICAgICAgIGlmIChpc05ldykgeworICAgICAgICAgICAgLy8gU2V0IFNlbGVj dGVkIFNjaGVtYQorICAgICAgICAgICAgc2NoZW1hID0gYXJncy5ub2RlX2lu Zm8uc2NoZW1hLmxhYmVsCisgICAgICAgICAgICB0aGlzLnNldCh7J2Jhc2Vu c3AnOiBzY2hlbWF9LCB7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgICAgICAg IC8vIFNldCBDdXJyZW50IFVzZXIKKyAgICAgICAgICAgIHZhciB1c2VySW5m byA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZl ci5faWRdLnVzZXI7CisgICAgICAgICAgICB0aGlzLnNldCh7J293bmVyJzog dXNlckluZm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90 eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAg ICAgfSwKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1 bmRlZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAg ICAgb3duZXI6IHVuZGVmaW5lZCwKKyAgICAgICAgICBiYXNlbnNwOiB1bmRl ZmluZWQsCisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAg ICAgICAgICBmdHNydm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdHJj b2x1bW46IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdHJmdG9wdGlvbnM6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBpbmhlcml0czogW10sCisgICAgICAgICAg Y29sdW1uczogW10sCisgICAgICAgICAgY29uc3RyYWludHM6IFtdLAorICAg ICAgICAgIGZ0b3B0aW9uczogW10sCisgICAgICAgICAgcmVsYWNsOiBbXSwK KyAgICAgICAgICBzdHJhY2w6IFtdLAorICAgICAgICAgIHNlY2xhYmVsczog W10KKyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn b3duZXInLCBsYWJlbDone3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlO YW1lQ29udHJvbCwKKyAgICAgICAgICBub2RlOiAncm9sZScsICB0eXBlOiAn dGV4dCcsIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UgfQorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2Jhc2Vuc3AnLCBsYWJlbDone3sgXygn U2NoZW1hJykgfX0nLCBjZWxsOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAg ICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBjYWNoZV9s ZXZlbDogJ2RhdGFiYXNlJywgdHlwZTogJ3RleHQnLAorICAgICAgICAgICBu b2RlOiAnc2NoZW1hJywgbW9kZTpbJ2NyZWF0ZScsICdlZGl0J10KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOid7 eyBfKCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAnbXVsdGlsaW5lJworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2Z0c3J2bmFtZScsIGxhYmVsOid7eyBfKCdGb3JlaWduIHNlcnZlcicp IH19JywgY2VsbDogJ3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ0RlZmlu aXRpb24nLCB1cmw6ICdnZXRfZm9yZWlnbl9zZXJ2ZXJzJywgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdpbmhlcml0cycsIGxhYmVsOid7eyBfKCdJ bmhlcml0cycpIH19JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnRGVmaW5p dGlvbicsCisgICAgICAgICAgdHlwZTogJ2xpc3QnLCBtaW5fdmVyc2lvbjog OTA1MDAsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucy1tdWx0aXBsZScs CisgICAgICAgICAgdXJsOiAnZ2V0X3RhYmxlcycsIHNlbGVjdDI6IHttdWx0 aXBsZTogdHJ1ZX0sCisgICAgICAgICAgJ2NhY2hlX2xldmVsJzogJ2RhdGFi YXNlJywKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYp eworICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuZ2V0KCdtb2RlJykgPT0g J2VkaXQnKSB7CisgICAgICAgICAgICAgIG9pZCA9IHRoaXMubW9kZWwuZ2V0 KCdvaWQnKTsKKyAgICAgICAgICAgICAgcyA9IF8uZmluZFdoZXJlKGQsIHsn aWQnOiBvaWR9KTsKKyAgICAgICAgICAgICAgaWYgKHMpIHsKKyAgICAgICAg ICAgICAgICBkID0gXy5yZWplY3QoZCwgcyk7CisgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAg ICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzdHJjb2x1bW4n LCBsYWJlbDone3sgXygnQ29sdW1ucycpIH19JywgY2VsbDogJ3N0cmluZycs IGdyb3VwOiAnRGVmaW5pdGlvbicsCisgICAgICAgICAgdHlwZTogJ3RleHQn LCBtaW5fdmVyc2lvbjogOTA1MDAsIG1vZGU6IFsncHJvcGVydGllcyddCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29sdW1ucycsIGxhYmVsOid7 eyBfKCdDb2x1bW5zJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAnQ29sdW1ucycsIHZpc2li bGU6IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAg ICAgbW9kZWw6IENvbHVtbnNNb2RlbCwgY2FuQWRkOiB0cnVlLCBjYW5EZWxl dGU6IHRydWUsIGNhbkVkaXQ6IGZhbHNlLAorICAgICAgICAgIGNvbHVtbnM6 IFsnYXR0bmFtZScsICdkYXRhdHlwZScsICd0eXBsZW4nLCAncHJlY2lzaW9u JywgJ3R5cGRlZmF1bHQnLCAnYXR0bm90bnVsbCcsICdhdHRzdGF0dGFyZ2V0 JywgJ2NvbGxuYW1lJywgJ2luaGVyaXRlZGZyb20nXSwKKyAgICAgICAgICBj YW5EZWxldGVSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVy biAoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkgfHwgXy5p c051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCisgICAgICAgICAgICAgIHx8 IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgfHwgXy5p c051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkpID8gdHJ1ZSA6IGZhbHNl CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg ICAgaWQ6ICdjb25zdHJhaW50cycsIGxhYmVsOid7eyBfKCdDb25zdHJhaW50 cycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ2Nv bGxlY3Rpb24nLCBncm91cDogJ0NvbnN0cmFpbnRzJywgdmlzaWJsZTogZmFs c2UsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtb2Rl bDogQ29uc3RyYWludE1vZGVsLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTog dHJ1ZSwgY29sdW1uczogWydjb25uYW1lJywnY29uc3JjJywgJ2Nvbm5vaW5o ZXJpdCcsICdjb252YWxpZGF0ZWQnXSwKKyAgICAgICAgICBjYW5FZGl0OiBm dW5jdGlvbihvKSB7CisgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEJh Y2tib25lLk1vZGVsKSB7CisgICAgICAgICAgICAgIGlmIChvIGluc3RhbmNl b2YgQ29uc3RyYWludE1vZGVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IG8uaXNOZXcoKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfSwgbWluX3Zl cnNpb246IDkwNTAwLCBjYW5EZWxldGVSb3c6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIHJldHVybiAobS5nZXQoJ2NvbmlzbG9jYWwnKSA9PSB0cnVl KSA/IHRydWUgOiBmYWxzZQorICAgICAgICAgIH0KKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdzdHJmdG9wdGlvbnMnLCBsYWJlbDone3sgXygnT3B0 aW9ucycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTog J3RleHQnLCBncm91cDogJ0RlZmluaXRpb24nLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Z0b3B0aW9ucycs IGxhYmVsOid7eyBfKCdPcHRpb25zJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAnT3B0aW9u cycsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtb2Rl bDogT3B0aW9uc01vZGVsLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1 ZSwgY2FuRWRpdDogZmFsc2UsCisgICAgICAgICAgY29udHJvbDogJ3VuaXF1 ZS1jb2wtY29sbGVjdGlvbicsIHVuaXF1ZUNvbCA6IFsnb3B0aW9uJ10KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyZWxhY2wnLCBsYWJlbDogJ3t7 IF8oJ1ByaXZpbGVnZXMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19 JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgbWluX3ZlcnNp b246IDkwMjAwCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnYWNsJywg bGFiZWw6ICd7eyBfKCdQcml2aWxlZ2VzJykgfX0nLCBtb2RlbDogcGdBZG1p bgorICAgICAgICAgIC5Ccm93c2VyLk5vZGUuUHJpdmlsZWdlUm9sZU1vZGVs LmV4dGVuZCgKKyAgICAgICAgICB7cHJpdmlsZWdlczogWydhJywncicsJ3cn LCd4J119KSwgdW5pcXVlQ29sIDogWydncmFudGVlJywgJ2dyYW50b3InXSwK KyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9u JywgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywKKyAgICAgICAgICBt b2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgY2FuQWRkOiB0 cnVlLCBjYW5EZWxldGU6IHRydWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNv bGxlY3Rpb24nLAorICAgICAgICAgIG1pbl92ZXJzaW9uOiA5MDIwMAorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVscycsIGxhYmVsOiAn e3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAorICAgICAgICAgIG1vZGVs OiBTZWN1cml0eU1vZGVsLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAg ICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19JywgbW9kZTogWydlZGl0 JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1pbl92ZXJzaW9uOiA5MDEwMCwg Y2FuQWRkOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5E ZWxldGU6IHRydWUsCisgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wt Y29sbGVjdGlvbicsIHVuaXF1ZUNvbCA6IFsncHJvdmlkZXInXQorICAgICAg ICB9CisgICAgICAgIF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigp CisgICAgICAgIHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAg ICAgICAgIGVycm1zZywKKyAgICAgICAgICAgICAgc2VjbGFiZWxzID0gdGhp cy5nZXQoJ3NlY2xhYmVscycpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRl ZmluZWQodGhpcy5nZXQoJ25hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdu YW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIGVyclsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2Fubm90IGJl IGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8 fCBlcnJbJ25hbWUnXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnYmFzZW5zcCcpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ2Jhc2Vuc3AnKSkKKyAgICAgICAgICAucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgZXJyWydiYXNl bnNwJ10gPSAne3sgXygnU2NoZW1hIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7 CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydiYXNlbnNw J107CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ2Z0c3J2bmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQo J2Z0c3J2bmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7CisgICAgICAgICAgICBlcnJbJ2Z0c3J2bmFtZSddID0gJ3t7IF8oJ0Zv cmVpZ24gc2VydmVyIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAg ICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydmdHNydm5hbWUnXTsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIo KS5zZXQoZXJyKTsKKworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAg ICB9CisgICAgICB9KSwKKyAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAgICAgICAgLy9JZiBjaGVjayBpcyBm YWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQorICAgICAg ICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQorICAgICAgICAg IHJldHVybiB0cnVlOworCisgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisgICAgICAgIC8vIFRvIGl0 ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisgICAgICAg IHdoaWxlIChpKSB7CisgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRo ZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9yZWlnbiB0YWJsZQorICAgICAg ICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkK KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgaWYgKCdj b2xsLWZvcmVpZ24tdGFibGUnID09IGQuX3R5cGUpIHsKKyAgICAgICAgICAg IC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCisgICAg ICAgICAgICBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbDsKKyAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRl bURhdGEocHJldl9pKSA6IG51bGw7CisgICAgICAgICAgICBpZiggcHJldl9k Ll90eXBlID09ICdjYXRhbG9nJykgeworICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg ICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs OworICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Cisg ICAgICAgIH0KKyAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2Fu dCB0byBhbGxvdyBjcmVhdGUgbWVudQorICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgIH0KKyAgfSk7CisKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIu Tm9kZXNbJ2ZvcmVpZ24tdGFibGUnXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3Nx bC85LjFfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmRjZDYwMjcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzNiBA QAoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3Mn IGFzIFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9CitDUkVBVEUgRk9SRUlH TiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5h bWUpIH19KAoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMgJX0KKyAgICB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUp fX0ge3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMu dHlwbGVuICV9KHt7Yy50eXBsZW59fSB7JSBpZiBjLnByZWNpc2lvbiAlfSwg e3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBj LmlzQXJyYXlUeXBlICV9W117JSBlbmRpZiAlfXslIGlmIGMuYXR0bm90bnVs bCAlfQorIE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3sl IGlmIG5vdCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAlfXslIGVuZGZvciAt JX17JSBlbmRpZiAlfQorCispCisgICAgU0VSVkVSIHt7IGNvbm58cXRJZGVu dChkYXRhLmZ0c3J2bmFtZSkgfX17JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQor Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucyAlfQoreyUgaWYgby5vcHRp b24gYW5kIG8udmFsdWUgJX0KK3slIGlmIGxvb3AuZmlyc3QgJX0gICAgT1BU SU9OUyAoeyUgZW5kaWYgJX17JSBpZiBub3QgbG9vcC5maXJzdCAlfSwgeyUg ZW5kaWYgJX17e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19eyUg aWYgbG9vcC5sYXN0ICV9KXslIGVuZGlmICV9eyUgZW5kaWYgJX0KK3slIGVu ZGZvciAlfXslIGVuZGlmIC0lfTsKK3slIGlmIGRhdGEub3duZXIgJX0KKwor QUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNl bnNwLCBkYXRhLm5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS5vd25l ciB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAl fQorCitDT01NRU5UIE9OIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRh LmRlc2NyaXB0aW9uIH19JzsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5z ZWNsYWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7 JSBpZiByLnNlY3VyaXR5X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7 IFNFQ0xBQkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFt ZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNw KSB9fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9w bHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2RlbGV0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0 M2UwNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3Bs dXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDE1IEBACit7JSBpZiBzY2lkIGFu ZCBmb2lkICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNw bmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBP VVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1j LnJlbG5hbWVzcGFjZSkKK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7 e3NjaWR9fTo6b2lkCisgICAgQU5EIGMub2lkID0ge3tmb2lkfX06Om9pZDsK K3slIGVuZGlmICV9CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBj YXNjYWRlICV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRp b25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlv bnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1 OWMxN2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9w bHVzL2dldF9jb2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDEwIEBACitTRUxF Q1QgLS1uc3BuYW1lLCBjb2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3Ro KG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4K KyAgICBjb25jYXQobnNwbmFtZSwgJy4iJywgY29sbG5hbWUsJyInKQorICAg IEVMU0UgJycgRU5EIEFTIGNvcHlfY29sbGF0aW9uCitGUk9NCisgICAgcGdf Y29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBuCitXSEVSRQorICAgIGMuY29s bG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkKKyAgICBuc3BuYW1lLCBjb2xs bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0 X2NvbHVtbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29s dW1ucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NGJmNWUxNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4x X3BsdXMvZ2V0X2NvbHVtbnMuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK1NFTEVD VAorICAgIGF0dG5hbWUsIGF0dG5kaW1zLCBhdHR0eXBtb2QsIGZvcm1hdF90 eXBlKHQub2lkLE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIGZvcm1hdF90eXBl KHQub2lkLCBhdHQuYXR0dHlwbW9kKSBBUyBmdWxsdHlwZSwgYXR0bm90bnVs bCwgYXR0bnVtLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgZnJvbSBwZ190eXBl IHQyIFdIRVJFIHQyLnR5cG5hbWU9dC50eXBuYW1lKSA+IDEgQVMgaXNkdXAs CisgICAgKAorICAgICAgICBhdHRuYW1lIHx8ICcgJyB8fCBmb3JtYXRfdHlw ZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkgfHwgJyAnIHx8CisgICAgICAgIChD QVNFIFdIRU4gYXR0bm90bnVsbD0ndHJ1ZScKKyAgICAgICAgVEhFTiAnTk9U IE5VTEwnIEVMU0UgJ05VTEwnCisgICAgICAgIEVORCkKKyAgICApIGFzIHN0 cmNvbHVtbgorRlJPTQorICAgIHBnX2F0dHJpYnV0ZSBhdHQKK0pPSU4KKyAg ICBwZ190eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKK0pPSU4KKyAgICBwZ19u YW1lc3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5vaWQKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX3R5cGUgYiBPTiB0LnR5cGVsZW09Yi5vaWQK K1dIRVJFCisgICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19OjpvaWQKKyAgICBB TkQgYXR0bnVtPjAKK09SREVSIGJ5IGF0dG51bTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzkzNTQ5Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29u c3RyYWludHMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgY29u bmFtZSwgY29udHlwZSwgY29uc3JjCitGUk9NCisgICAgcGdfY29uc3RyYWlu dAorV0hFUkUKKyAgICBjb25yZWxpZD17e2ZvaWR9fTo6b2lkCitPUkRFUiBi eSBjb25uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1 cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4x X3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4MGYwMgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVy cy5zcWwKQEAgLTAsMCArMSw1IEBACitTRUxFQ1QKKyAgICBzcnZuYW1lCitG Uk9NCisgICAgcGdfZm9yZWlnbl9zZXJ2ZXIKK09SREVSIEJZIHNydm5hbWU7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfb2lk LnNxbApAQCAtMCwwICsxLDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitTRUxF Q1QKKyAgICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBwZ19j bGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1j LnJlbG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFz ZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5hbWV8 cXRMaXRlcmFsIH19OworCit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAorICAg IGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBj CitXSEVSRQorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL25vZGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9ub2RlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzczMWM1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9ub2RlLnNxbApA QCAtMCwwICsxLDE0IEBACitTRUxFQ1QKKyAgICBjLm9pZCwgYy5yZWxuYW1l IEFTIG5hbWUsIHBnX2dldF91c2VyYnlpZChyZWxvd25lcikgQVMgb3duZXIs CisgICAgZnRvcHRpb25zLCBuc3BuYW1lIGFzIGJhc2Vuc3AsIGRlc2NyaXB0 aW9uCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2ZvcmVp Z25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5h bWVzcGFjZSkKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9u IGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdw Z19jbGFzcyc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFj ZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YWJjMWIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAKK1NFTEVDVAorICAgIGMub2lkLCBj LnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93bmVyKSBB UyBvd25lciwKKyAgICBmdG9wdGlvbnMsIHNydm5hbWUgQVMgZnRzcnZuYW1l LCBkZXNjcmlwdGlvbiwgbnNwbmFtZSBhcyBiYXNlbnNwLAorICAgIChTRUxF Q1QKKyAgICAgICAgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJl bCkKKyAgICBGUk9NCisgICAgICAgIHBnX3NlY2xhYmVsIHNsMQorICAgIFdI RVJFCisgICAgICAgIHNsMS5vYmpvaWQ9Yy5vaWQpIEFTIHNlY2xhYmVscwor RlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19mb3JlaWduX3Rh YmxlIGZ0IE9OIGMub2lkPWZ0LmZ0cmVsaWQKK0xFRlQgT1VURVIgSk9JTgor ICAgIHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZ0LmZ0c2VydmVyPWZzLm9p ZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9O IChkZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNz Jzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorV0hFUkUKKyAg ICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICB7JSBpZiBm b2lkICV9CisgICAgQU5EIGMub2lkID0ge3tmb2lkfX06Om9pZAorICAgIHsl IGVuZGlmICV9CitPUkRFUiBCWSBjLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZDM0YjJkMAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEw OSBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNy b3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFt ZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0KK3slIGlm IGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5u YW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5u YW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRp ZiAlfQoreyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEub3duZXIgJX0KKwor QUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS5vd25lciB9 fTsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3sl IGZvciBjIGluIGRhdGEuY29sdW1ucy5kZWxldGVkICV9CisKK0FMVEVSIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIERST1AgQ09MVU1OIHt7Y29ubnxxdElkZW50KGMuYXR0 bmFtZSl9fTsKK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRhdGEuY29s dW1ucy5hZGRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09M VU1OIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlw ZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5 cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXsl IGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtd eyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHsl IGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQg JX0gREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlm IGMuY29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlm ICV9OworeyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5z LmNoYW5nZWQgJX0KK3slIHNldCBjb2xfbmFtZSA9IG9fZGF0YVsnY29sdW1u cyddW2MuYXR0bnVtXVsnYXR0bmFtZSddICV9Cit7JSBpZiBjLmF0dG5hbWUg IT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRuYW1lJ10gJX0K K3slIHNldCBjb2xfbmFtZSA9IGMuYXR0bmFtZSAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBSRU5BTUUgQ09MVU1OIHt7Y29ubnxxdElkZW50KG9fZGF0 YVsnY29sdW1ucyddW2MuYXR0bnVtXVsnYXR0bmFtZSddKX19IFRPIHt7Y29u bnxxdElkZW50KGMuYXR0bmFtZSl9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBj LmF0dG5vdG51bGwgIT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydh dHRub3RudWxsJ10gJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUxURVIg Q09MVU1OIHt7Y29ubnxxdElkZW50KGNvbF9uYW1lKX19eyUgaWYgYy5hdHRu b3RudWxsICV9IFNFVHslIGVsc2UgJX0gRFJPUHslIGVuZGlmICV9IE5PVCBO VUxMOworeyUgZW5kaWYgJX0KK3slIGlmIGMuZGF0YXR5cGUgIT0gb19kYXRh Wydjb2x1bW5zJ11bYy5hdHRudW1dWydkYXRhdHlwZSddIG9yIGMudHlwbGVu ICE9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsndHlwbGVuJ10gb3IK K2MucHJlY2lzaW9uICE9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsn cHJlY2lzaW9uJ10gJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUxURVIg Q09MVU1OIHt7Y29ubnxxdElkZW50KGNvbF9uYW1lKX19IFRZUEUge3sgY29u bnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9 KHt7Yy50eXBsZW59fXslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lz aW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJheVR5 cGUgJX1bXXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KK3slIGlmIGMudHlw ZGVmYXVsdCAhPSBvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ3R5cGRl ZmF1bHQnXSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xV TU4ge3tjb25ufHF0SWRlbnQoY29sX25hbWUpfX17JSBpZiBjLnR5cGRlZmF1 bHQgJX0gU0VUIERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVsc2UgJX0g RFJPUCBERUZBVUxUeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuZnRvcHRpb25zICV9 Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5kZWxldGVkICV9Cit7JSBp ZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K KyAgICBPUFRJT05TIChEUk9QIHt7by5vcHRpb259fSk7Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5h ZGRlZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgT1BUSU9OUyAoQUREIHt7by5vcHRpb259fSB7 e28udmFsdWV8cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZv ciAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuY2hhbmdlZCAlfQor eyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9SRUlH TiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUp IH19CisgICAgT1BUSU9OUyAoU0VUIHt7by5vcHRpb259fSB7e28udmFsdWV8 cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgLSV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMg JX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVs cy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5VTlNFVChjb25uLCAnRk9SRUlH TiBUQUJMRScsIG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcg aW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAl fQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9CisKK3t7IFNFQ0xB QkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlk ZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBz ZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9CisKK3t7IFNFQ0xB QkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlk ZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuZGVzY3JpcHRp b24gJX0KKworQ09NTUVOVCBPTiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBJUyB7eyBkYXRh LmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmIC0lfQoreyUg aWYgZGF0YS5iYXNlbnNwICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNF VCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4yX3BsdXMvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3Bs dXMvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xMjFhMDM1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjJfcGx1cy9hY2wuc3FsCkBAIC0wLDAgKzEsMzUgQEAKK1NFTEVDVAorICAg IENPQUxFU0NFKGd0LnJvbG5hbWUsICdwdWJsaWMnKSBBUyBncmFudGVlLAor ICAgIGcucm9sbmFtZSBBUyBncmFudG9yLCBhcnJheV9hZ2cocHJpdmlsZWdl X3R5cGUpIEFTIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50 YWJsZSkgQVMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAg ICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUsCisgICAg ICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdDT05O RUNUJyBUSEVOICdjJworICAgICAgICBXSEVOICdDUkVBVEUnIFRIRU4gJ0Mn CisgICAgICAgIFdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAgICAgV0hF TiAnRVhFQ1VURScgVEhFTiAnWCcKKyAgICAgICAgV0hFTiAnSU5TRVJUJyBU SEVOICdhJworICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVOICd4Jwor ICAgICAgICBXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisgICAgICAgIFdIRU4g J1RFTVBPUkFSWScgVEhFTiAnVCcKKyAgICAgICAgV0hFTiAnVFJJR0dFUicg VEhFTiAndCcKKyAgICAgICAgV0hFTiAnVFJVTkNBVEUnIFRIRU4gJ0QnCisg ICAgICAgIFdIRU4gJ1VQREFURScgVEhFTiAndycKKyAgICAgICAgV0hFTiAn VVNBR0UnIFRIRU4gJ1UnCisgICAgICAgIEVMU0UgJ1VOS05PV04nCisgICAg ICAgIEVORCBBUyBwcml2aWxlZ2VfdHlwZQorICAgIEZST00KKyAgICAgICAg KFNFTEVDVAorICAgICAgICAgICAgKGQpLmdyYW50ZWUgQVMgZ3JhbnRlZSwg KGQpLmdyYW50b3IgQVMgZ3JhbnRvciwKKyAgICAgICAgICAgIChkKS5pc19n cmFudGFibGUgQVMgaXNfZ3JhbnRhYmxlLAorICAgICAgICAgICAgKGQpLnBy aXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlCisgICAgICAgIEZST00K KyAgICAgICAgICAgIChTRUxFQ1QgYWNsZXhwbG9kZShkYi5yZWxhY2wpIEFT IGQgRlJPTSBwZ19jbGFzcyBkYgorICAgICAgICAgICAgV0hFUkUgZGIub2lk ID0ge3tmb2lkfX06Ok9JRCkgYQorICAgICAgICApIGQKKyAgICApIGQKKyAg ICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50 b3IgPSBnLm9pZCkKKyAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xl cyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkgZy5yb2xu YW1lLCBndC5yb2xuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjJfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjQ5N2IxMjQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku Ml9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw0NCBAQAoreyUgaW1wb3J0 ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxF ICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNy b3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQorQ1JFQVRFIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0 YS5uYW1lKSB9fSgKK3slIGlmIGRhdGEuY29sdW1ucyAlfQoreyUgZm9yIGMg aW4gZGF0YS5jb2x1bW5zICV9CisgICAge3tjb25ufHF0SWRlbnQoYy5hdHRu YW1lKX19IHt7Y29ubnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlm IGMudHlwbGVuICV9KHt7Yy50eXBsZW59fXslIGlmIGMucHJlY2lzaW9uICV9 LCB7e2MucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlm IGMuaXNBcnJheVR5cGUgJX1bXXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3Ru dWxsICV9CisgTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfXsl IGlmIGMudHlwZGVmYXVsdCAlfQorIERFRkFVTFQge3tjLnR5cGRlZmF1bHR9 fXslIGVuZGlmICV9eyUgaWYgYy5jb2xsbmFtZSAlfQorIENPTExBVEUge3tj LmNvbGxuYW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90IGxvb3AubGFzdCAl fSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0lfXslIGVuZGlmICV9CisKKykK KyAgICBTRVJWRVIge3sgY29ubnxxdElkZW50KGRhdGEuZnRzcnZuYW1lKSB9 fXslIGlmIGRhdGEuZnRvcHRpb25zICV9CisKK3slIGZvciBvIGluIGRhdGEu ZnRvcHRpb25zICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQor eyUgaWYgbG9vcC5maXJzdCAlfSAgICBPUFRJT05TICh7JSBlbmRpZiAlfXsl IGlmIG5vdCBsb29wLmZpcnN0ICV9LCB7JSBlbmRpZiAlfXt7by5vcHRpb259 fSB7e28udmFsdWV8cXRMaXRlcmFsfX17JSBpZiBsb29wLmxhc3QgJX0peyUg ZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX07 Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQor ICAgIE9XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAtJX0K K3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7Cit7 JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuYWNsICV9CisKK3slIGZvciBwcml2 IGluIGRhdGEuYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3Jh bnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5k Zm9yIC0lfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAl fQorCit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfXslIGlmIHIuc2Vj dXJpdHlfbGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KK3t7IFNFQ0xBQkxFLlNF VChjb25uLCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRl ciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5k aWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2RlbGV0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiMDk2OQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNx bApAQCAtMCwwICsxLDE3IEBACit7JSBpZiBzY2lkIGFuZCBmb2lkICV9CitT RUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNwbmFtZSBhcyBiYXNl bnNwCitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lOCisg ICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFj ZSkKK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lk CitBTkQKKyAgICBjLm9pZCA9IHt7Zm9pZH19OjpvaWQ7Cit7JSBlbmRpZiAl fQorCisKK3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlJX0g Q0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkMjc0YgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2Nv bGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUIC0tbnNwbmFt ZSwgY29sbG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+ IDAgQU5EIGxlbmd0aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgY29uY2F0 KG5zcG5hbWUsICcuIicsIGNvbGxuYW1lLCciJykKKyAgICBFTFNFICcnIEVO RCBBUyBjb3B5X2NvbGxhdGlvbgorRlJPTQorICAgIHBnX2NvbGxhdGlvbiBj LCBwZ19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLmNvbGxuYW1lc3BhY2U9 bi5vaWQKK09SREVSIEJZIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29sdW1ucy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzAzYWQ3Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29sdW1u cy5zcWwKQEAgLTAsMCArMSwzNCBAQAorU0VMRUNUCisgICAgYXR0bmFtZSwg YXR0bmRpbXMsIGF0dHR5cG1vZCwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkg QVMgZGF0YXR5cGUsCisgICAgYXR0bm90bnVsbCwgYXR0c3RhdHRhcmdldCwg YXR0bnVtLCBmb3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkgQVMg ZnVsbHR5cGUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+ IDAgQU5EIGxlbmd0aChjbC5jb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25j YXQoY24ubnNwbmFtZSwgJy4iJywgY2wuY29sbG5hbWUsJyInKSBFTFNFICcn IEVORCBBUyBjb2xsbmFtZSwKKyAgICAoU0VMRUNUIENPVU5UKDEpIGZyb20g cGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPXQudHlwbmFtZSkgPiAxIEFT IGlzZHVwLAorICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVmLmFkYmlu LCBkZWYuYWRyZWxpZCkgQVMgdHlwZGVmYXVsdCwKKyAgICAoCisgICAgICAg IGF0dG5hbWUgfHwgJyAnIHx8IGZvcm1hdF90eXBlKHQub2lkLCBhdHQuYXR0 dHlwbW9kKSB8fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hFTiBhdHRub3Ru dWxsPSd0cnVlJworICAgICAgICBUSEVOICdOT1QgTlVMTCcgRUxTRSAnTlVM TCcKKyAgICAgICAgRU5EKSB8fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hF TiBwZ19jYXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVs aWQpPD4nJworICAgICAgICBUSEVOICdERUZBVUxUICcgfHwgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihkZWYuYWRiaW4sIGRlZi5hZHJlbGlkKQorICAgICAg ICBFTFNFICcnIEVORCkKKyAgICApIGFzIHN0cmNvbHVtbgorRlJPTQorICAg IHBnX2F0dHJpYnV0ZSBhdHQKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5v aWQ9YXR0dHlwaWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIHQu dHlwbmFtZXNwYWNlPW5zcC5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X2F0dHJkZWYgZGVmIE9OIGFkcmVsaWQ9YXR0LmF0dHJlbGlkIEFORCBhZG51 bT1hdHQuYXR0bnVtCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ190eXBlIGIg T04gdC50eXBlbGVtPWIub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19j b2xsYXRpb24gY2wgT04gdC50eXBjb2xsYXRpb249Y2wub2lkCitMRUZUIE9V VEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgY24gT04gY2wuY29sbG5hbWVz cGFjZT1jbi5vaWQKK1dIRVJFCisgICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19 OjpvaWQKKyAgICBBTkQgYXR0bnVtPjAKK09SREVSIGJ5IGF0dG51bTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFp bnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFp bnRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 M2E4Mjk4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJf cGx1cy9nZXRfY29uc3RyYWludHMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VM RUNUCisgICAgY29ubmFtZSwgY29udHlwZSwgY29uc3JjLCBjb25pc2xvY2Fs CitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb25yZWxp ZD17e2ZvaWR9fTo6b2lkCitPUkRFUiBieSBjb25uYW1lOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X2ZvcmVpZ25fc2Vy dmVycy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MWM5NWNlNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4y X3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwKQEAgLTAsMCArMSw2IEBA CitTRUxFQ1QKKyAgICBzcnZuYW1lCitGUk9NCisgICAgcGdfZm9yZWlnbl9z ZXJ2ZXIKK09SREVSIEJZCisgICAgc3J2bmFtZTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjlhNWY1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEs MTkgQEAKK3slIGlmIGJhc2Vuc3AgJX0KK1NFTEVDVAorICAgIGMub2lkLCBi bi5vaWQgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAg ICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWMucmVsbmFtZXNwYWNlCitX SEVSRQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJhbCB9 fQorICAgIEFORCBjLnJlbG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07CisK K3slIGVsaWYgZm9pZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lc3BhY2Ug YXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK1dIRVJFCisgICAgYy5v aWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMl9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmJjNzMxYzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMl9wbHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAK K1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0 X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMs IG5zcG5hbWUgYXMgYmFzZW5zcCwgZGVzY3JpcHRpb24KK0ZST00KKyAgICBw Z19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBj Lm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1l c3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVGVCBP VVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jq b2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xh c3MpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAorT1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwv OS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYzU1N2M4NwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCAr MSwyNyBAQAorU0VMRUNUCisgICAgYy5vaWQsIGMucmVsbmFtZSBBUyBuYW1l LCBjLnJlbGFjbCwgcGdfZ2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25l ciwKKyAgICBmdG9wdGlvbnMsIHNydm5hbWUgQVMgZnRzcnZuYW1lLCBkZXNj cmlwdGlvbiwgbnNwbmFtZSBhcyBiYXNlbnNwLCBjb25zcmMsCisgICAgKFNF TEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxh YmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2hzZWNsYWJlbCBzbDEKKyAg ICBXSEVSRQorICAgICAgICBzbDEub2Jqb2lkPWMub2lkKSBBUyBzZWNsYWJl bHMKK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWln bl90YWJsZSBmdCBPTiBjLm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19mb3JlaWduX3NlcnZlciBmcyBPTiBmdC5mdHNlcnZlcj1m cy5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRl cyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19j bGFzcyc6OnJlZ2NsYXNzKQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFt ZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX2NvbnN0cmFpbnQgY24gT04gKGNuLmNvbnJl bGlkPWMub2lkKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2Np ZH19OjpvaWQKKyAgICB7JSBpZiBmb2lkICV9CisgICAgQU5EIGMub2lkID0g e3tmb2lkfX06Om9pZAorICAgIHslIGVuZGlmICV9CitPUkRFUiBCWSBjLnJl bG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL3Vw ZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1w bGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmYjQzMwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvdXBk YXRlLnNxbApAQCAtMCwwICsxLDE0OCBAQAoreyUgaW1wb3J0ICdtYWNyb3Mv c2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBp bXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBS SVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUgPSBvX2Rh dGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5h bWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0K KyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07 Cit7JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3sl IGVuZGlmIC0lfQoreyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5k aWYgLSV9Cit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGluIGRh dGEuY29sdW1ucy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUg e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAg IERST1AgQ09MVU1OIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fTsKK3sl IGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRhdGEuY29sdW1ucy5hZGRlZCAl fQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09MVU1OIHt7Y29ubnxx dElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlwZUlkZW50KGMuZGF0 YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYg Yy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXsl IGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtdeyUgZW5kaWYgJX0K K3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVsc2UgJX0gTlVM THslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVMVCB7 e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sbG5hbWUg JX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlmICV9OworeyUgZW5k Zm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmNoYW5nZWQgJX0K K3slIHNldCBjb2xfbmFtZSA9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVt XVsnYXR0bmFtZSddICV9Cit7JSBpZiBjLmF0dG5hbWUgIT0gb19kYXRhWydj b2x1bW5zJ11bYy5hdHRudW1dWydhdHRuYW1lJ10gJX0KK3slIHNldCBjb2xf bmFtZSA9IGMuYXR0bmFtZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBS RU5BTUUgQ09MVU1OIHt7Y29ubnxxdElkZW50KG9fZGF0YVsnY29sdW1ucydd W2MuYXR0bnVtXVsnYXR0bmFtZSddKX19IFRPIHt7Y29ubnxxdElkZW50KGMu YXR0bmFtZSl9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwg IT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRub3RudWxsJ10g JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29u bnxxdElkZW50KGNvbF9uYW1lKX19eyUgaWYgYy5hdHRub3RudWxsICV9IFNF VHslIGVsc2UgJX0gRFJPUHslIGVuZGlmICV9IE5PVCBOVUxMOworeyUgZW5k aWYgJX0KK3slIGlmIGMuZGF0YXR5cGUgIT0gb19kYXRhWydjb2x1bW5zJ11b Yy5hdHRudW1dWydkYXRhdHlwZSddIG9yIGMudHlwbGVuICE9IG9fZGF0YVsn Y29sdW1ucyddW2MuYXR0bnVtXVsndHlwbGVuJ10gb3IKK2MucHJlY2lzaW9u ICE9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsncHJlY2lzaW9uJ10g JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29u bnxxdElkZW50KGNvbF9uYW1lKX19IFRZUEUge3sgY29ubnxxdFR5cGVJZGVu dChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59 fXslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBlbmRp ZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUgJX1bXXslIGVu ZGlmICV9OworeyUgZW5kaWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAhPSBv X2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ3R5cGRlZmF1bHQnXSAlfQor CitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoY29sX25hbWUpfX17JSBpZiBjLnR5cGRlZmF1bHQgJX0gU0VUIERF RkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVsc2UgJX0gRFJPUCBERUZBVUxU eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRzdGF0dGFy Z2V0ICE9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsnYXR0c3RhdHRh cmdldCddICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFMVEVSIENPTFVN TiB7e2Nvbm58cXRJZGVudChjb2xfbmFtZSl9fSBTRVQgU1RBVElTVElDUyB7 JSBpZiBjLmF0dHN0YXR0YXJnZXQgJX17e2MuYXR0c3RhdHRhcmdldH19eyUg ZWxzZSAlfS0xeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuY29uc3RyYWludHMgJX0K K3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMuZGVsZXRlZCAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3tjb25ufHF0 SWRlbnQoYy5jb25uYW1lKX19OworeyUgZW5kZm9yICV9Cit7JSBmb3IgYyBp biBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9CisKK0FMVEVSIEZPUkVJR04g VEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIEFERCBDT05TVFJBSU5UIHt7Y29ubnxxdElkZW50KGMuY29ubmFt ZSl9fSB7JSBpZiBjLmNvbnNyYyAlfSBDSEVDSyAoe3tjLmNvbnNyY319KXsl IGVuZGlmICV9IHslIGlmIGMuY29ubm9pbmhlcml0ICV9IE5PIElOSEVSSVR7 JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBp ZiBkYXRhLmZ0b3B0aW9ucyAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlv bnMuZGVsZXRlZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0K KworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgT1BUSU9OUyAoIERST1Age3tvLm9w dGlvbn19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGZvciBv IGluIGRhdGEuZnRvcHRpb25zLmFkZGVkICV9Cit7JSBpZiBvLm9wdGlvbiBh bmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPUFRJT05T IChBREQge3tvLm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7 JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0 b3B0aW9ucy5jaGFuZ2VkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1 ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPUFRJT05TIChTRVQge3tv Lm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuYWNs ICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5hY2wgJX0KK3slIGZvciBw cml2IGluIGRhdGEuYWNsLmRlbGV0ZWQgJX0KKwore3sgUFJJVklMRUdFLlVO U0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgbmFtZSwgb19k YXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor eyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEuYWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmFjbC5jaGFuZ2VkICV9CisKK3t7IFBSSVZJTEVHRS5VTlNFVEFM TChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIG5hbWUsIG9fZGF0YS5i YXNlbnNwKSB9fQorCit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgbmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2 LndpdGhfZ3JhbnQsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5hY2wgJX0K K3slIGZvciBwcml2IGluIGRhdGEuYWNsLmFkZGVkICV9CisKK3t7IFBSSVZJ TEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBw cml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgb19kYXRhLmJh c2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRp ZiAtJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQor eyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRl bGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRl bGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0ZPUkVJR04g VEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEuYmFzZW5zcCkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnYWRkZWQnIGlu IHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQorCit7eyBTRUNMQUJM RS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVy LCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2Vj bGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNMQUJM RS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVy LCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9u ICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sgZGF0YS5k ZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX0KK3slIGlm IGRhdGEuYmFzZW5zcCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNv bm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQg U0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3ApIH19OworeyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuNV9wbHVzL2FjbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L2FjbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MTIxYTAzNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvYWNsLnNxbApAQCAtMCwwICsxLDM1IEBACitTRUxFQ1QKKyAgICBD T0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgQVMgZ3JhbnRlZSwKKyAg ICBnLnJvbG5hbWUgQVMgZ3JhbnRvciwgYXJyYXlfYWdnKHByaXZpbGVnZV90 eXBlKSBBUyBwcml2aWxlZ2VzLAorICAgIGFycmF5X2FnZyhpc19ncmFudGFi bGUpIEFTIGdyYW50YWJsZQorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAg ZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRhYmxlLAorICAgICAg ICBDQVNFIGQucHJpdmlsZWdlX3R5cGUKKyAgICAgICAgV0hFTiAnQ09OTkVD VCcgVEhFTiAnYycKKyAgICAgICAgV0hFTiAnQ1JFQVRFJyBUSEVOICdDJwor ICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4g J0VYRUNVVEUnIFRIRU4gJ1gnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAg ICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdU RU1QT1JBUlknIFRIRU4gJ1QnCisgICAgICAgIFdIRU4gJ1RSSUdHRVInIFRI RU4gJ3QnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAg ICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4gJ1VT QUdFJyBUSEVOICdVJworICAgICAgICBFTFNFICdVTktOT1dOJworICAgICAg ICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAgIChT RUxFQ1QKKyAgICAgICAgICAgIChkKS5ncmFudGVlIEFTIGdyYW50ZWUsIChk KS5ncmFudG9yIEFTIGdyYW50b3IsCisgICAgICAgICAgICAoZCkuaXNfZ3Jh bnRhYmxlIEFTIGlzX2dyYW50YWJsZSwKKyAgICAgICAgICAgIChkKS5wcml2 aWxlZ2VfdHlwZSBBUyBwcml2aWxlZ2VfdHlwZQorICAgICAgICBGUk9NCisg ICAgICAgICAgICAoU0VMRUNUIGFjbGV4cGxvZGUoZGIucmVsYWNsKSBBUyBk IEZST00gcGdfY2xhc3MgZGIKKyAgICAgICAgICAgIFdIRVJFIGRiLm9pZCA9 IHt7Zm9pZH19OjpPSUQpIGEKKyAgICAgICAgKSBkCisgICAgKSBkCisgICAg TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFudG9y ID0gZy5vaWQpCisgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMg Z3QgT04gKGQuZ3JhbnRlZSA9IGd0Lm9pZCkKK0dST1VQIEJZIGcucm9sbmFt ZSwgZ3Qucm9sbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l ZjU3MDA4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVf cGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNjEgQEAKK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAl fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9z JyBhcyBQUklWSUxFR0UgJX0KK3slIHNldCBpc19jb2x1bW5zID0gW10gJX0K K3slIGlmIGRhdGEgJX0KK0NSRUFURSBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0oCit7JSBpZiBk YXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGluIGRhdGEuY29sdW1ucyAlfQor eyUgaWYgKG5vdCBjLmluaGVyaXRlZGZyb20gb3IgYy5pbmhlcml0ZWRmcm9t ID09Jycgb3IgIGMuaW5oZXJpdGVkZnJvbSA9PSBOb25lIG9yICBjLmluaGVy aXRlZGZyb20gPT0gJ05vbmUnICkgJX0KK3slIGlmIGlzX2NvbHVtbnMuYXBw ZW5kKCcxJykgJX17JSBlbmRpZiAlfQorICAgIHt7Y29ubnxxdElkZW50KGMu YXR0bmFtZSl9fSB7e2Nvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17 JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNpc2lv biAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17 JSBpZiBjLmlzQXJyYXlUeXBlICV9W117JSBlbmRpZiAlfQoreyUgaWYgYy5h dHRub3RudWxsICV9IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYg JX0KK3slIGlmIGMudHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBkZWZh dWx0fX17JSBlbmRpZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRF IHt7Yy5jb2xsbmFtZX19eyUgZW5kaWYgJX0KK3slIGlmIG5vdCBsb29wLmxh c3QgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KKworKQoreyUgaWYgZGF0YS5pbmhlcml0cyAlfQor ICAgIElOSEVSSVRTICh7JSBmb3IgaSBpbiBkYXRhLmluaGVyaXRzICV9eyUg aWYgaSAlfXt7aX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwgeyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGVuZGZvciAlfSkKK3slIGVuZGlmICV9CisgICAg U0VSVkVSIHt7IGNvbm58cXRJZGVudChkYXRhLmZ0c3J2bmFtZSkgfX17JSBp ZiBkYXRhLmZ0b3B0aW9ucyAlfQorCit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0 aW9ucyAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KK3slIGlm IGxvb3AuZmlyc3QgJX0gICAgT1BUSU9OUyAoeyUgZW5kaWYgJX17JSBpZiBu b3QgbG9vcC5maXJzdCAlfSwgeyUgZW5kaWYgJX17e28ub3B0aW9ufX0ge3tv LnZhbHVlfHF0TGl0ZXJhbH19eyUgaWYgbG9vcC5sYXN0ICV9KXslIGVuZGlm ICV9eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9OworeyUg aWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNv bm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAgICBP V05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5kaWYgLSV9Cit7JSBp ZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0 cmFpbnRzICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIEFERCBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7 eyBjLmNvbnNyYyB9fSl7JSBpZiBub3QgYy5jb252YWxpZGF0ZWQgJX0gTk9U IFZBTElEeyUgZW5kaWYgJX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJ TkhFUklUeyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRh Lm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nOwor eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmFjbCAlfQorCit7JSBmb3IgcHJp diBpbiBkYXRhLmFjbCAlfQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFC TEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dy YW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAtJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMg JX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNl Y3VyaXR5X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7IFNFQ0xBQkxF LlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIGRhdGEubmFtZSwgci5wcm92 aWRlciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fQoreyUg ZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2RlbGV0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2RlbGV0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiMDk2OQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZGVsZXRl LnNxbApAQCAtMCwwICsxLDE3IEBACit7JSBpZiBzY2lkIGFuZCBmb2lkICV9 CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwgbnNwbmFtZSBhcyBi YXNlbnNwCitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBPVVRFUiBKT0lO CisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAobnNwLm9pZD1jLnJlbG5hbWVz cGFjZSkKK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6 b2lkCitBTkQKKyAgICBjLm9pZCA9IHt7Zm9pZH19OjpvaWQ7Cit7JSBlbmRp ZiAlfQorCisKK3slIGlmIG5hbWUgJX0KK0RST1AgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRl JX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkMjc0Ygot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0 X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUIC0tbnNw bmFtZSwgY29sbG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1l KSA+IDAgQU5EIGxlbmd0aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgY29u Y2F0KG5zcG5hbWUsICcuIicsIGNvbGxuYW1lLCciJykKKyAgICBFTFNFICcn IEVORCBBUyBjb3B5X2NvbGxhdGlvbgorRlJPTQorICAgIHBnX2NvbGxhdGlv biBjLCBwZ19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLmNvbGxuYW1lc3Bh Y2U9bi5vaWQKK09SREVSIEJZIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sdW1ucy5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY3MGU4Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29s dW1ucy5zcWwKQEAgLTAsMCArMSw1MyBAQAorV0lUSCBJTkhfVEFCTEVTIEFT CisgICAgKFNFTEVDVAorICAgICBkaXN0aW5jdCBvbiAoYXQuYXR0bmFtZSkg YXR0bmFtZSwgcGguaW5ocGFyZW50IEFTIGluaGVyaXRlZGlkLCBwaC5pbmhz ZXFubywKKyAgICAgY29uY2F0KG5tc3BfcGFyZW50Lm5zcG5hbWUsICcuJyxw YXJlbnQucmVsbmFtZSApIEFTIGluaGVyaXRlZGZyb20KKyAgICBGUk9NCisg ICAgICAgIHBnX2F0dHJpYnV0ZSBhdAorICAgIEpPSU4KKyAgICAgICAgcGdf aW5oZXJpdHMgcGggT04gcGguaW5ocGFyZW50ID0gYXQuYXR0cmVsaWQgQU5E IHBoLmluaHJlbGlkID0ge3tmb2lkfX06Om9pZAorICAgIEpPSU4KKyAgICAg ICAgcGdfY2xhc3MgcGFyZW50IE9OIHBoLmluaHBhcmVudCAgPSBwYXJlbnQu b2lkCisgICAgSk9JTgorICAgICAgICBwZ19uYW1lc3BhY2Ugbm1zcF9wYXJl bnQgT04gbm1zcF9wYXJlbnQub2lkICA9IHBhcmVudC5yZWxuYW1lc3BhY2UK KyAgICBHUk9VUCBCWSBhdC5hdHRuYW1lLCBwaC5pbmhwYXJlbnQsIHBoLmlu aHNlcW5vLCBpbmhlcml0ZWRmcm9tCisgICAgT1JERVIgQlkgYXQuYXR0bmFt ZSwgcGguaW5ocGFyZW50LCBwaC5pbmhzZXFubywgaW5oZXJpdGVkZnJvbQor ICAgICkKK1NFTEVDVCBJTkguaW5oZXJpdGVkZnJvbSwgSU5ILmluaGVyaXRl ZGlkLAorICAgIGF0dC5hdHRuYW1lLCBhdHQuYXR0bmRpbXMsIGF0dC5hdHR0 eXBtb2QsIGZvcm1hdF90eXBlKHQub2lkLE5VTEwpIEFTIGRhdGF0eXBlLAor ICAgIGF0dC5hdHRub3RudWxsLCBhdHQuYXR0c3RhdHRhcmdldCwgYXR0LmF0 dG51bSwgZm9ybWF0X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIEFTIGZ1 bGx0eXBlLAorICAgIENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAw IEFORCBsZW5ndGgoY2wuY29sbG5hbWUpID4gMCBUSEVOCisgICAgY29uY2F0 KGNuLm5zcG5hbWUsICcuIicsIGNsLmNvbGxuYW1lLCciJykKKyAgICBFTFNF ICcnIEVORCBBUyBjb2xsbmFtZSwKKyAgICBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpIEFTIHR5cGRlZmF1bHQsCisg ICAgKAorICAgICAgICBhdHQuYXR0bmFtZSB8fCAnICcgfHwgZm9ybWF0X3R5 cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIHx8ICcgJyB8fAorICAgICAgICAo Q0FTRSBXSEVOIGF0dG5vdG51bGw9J3RydWUnCisgICAgICAgIFRIRU4gJ05P VCBOVUxMJyBFTFNFICdOVUxMJworICAgICAgICBFTkQpIHx8ICcgJyB8fAor ICAgICAgICAoQ0FTRSBXSEVOIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVm LmFkYmluLCBkZWYuYWRyZWxpZCk8PicnCisgICAgICAgIFRIRU4gJ0RFRkFV TFQgJyB8fCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVm LmFkcmVsaWQpCisgICAgICAgIEVMU0UgJycgRU5EKQorICAgICkgYXMgc3Ry Y29sdW1uLAorCisgICAgKFNFTEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUg dDIgV0hFUkUgdDIudHlwbmFtZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1cAor RlJPTQorICAgIHBnX2F0dHJpYnV0ZSBhdHQKK0xFRlQgSk9JTgorICAgIElO SF9UQUJMRVMgYXMgSU5IIE9OIGF0dC5hdHRuYW1lID0gSU5ILmF0dG5hbWUK K0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5v aWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2F0dHJkZWYgZGVmIE9OIGFk cmVsaWQ9YXR0LmF0dHJlbGlkIEFORCBhZG51bT1hdHQuYXR0bnVtCitMRUZU IE9VVEVSIEpPSU4KKyAgICBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIub2lk CitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb2xsYXRpb24gY2wgT04gdC50 eXBjb2xsYXRpb249Y2wub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19u YW1lc3BhY2UgY24gT04gY2wuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJF CisgICAgYXR0LmF0dHJlbGlkPXt7Zm9pZH19OjpvaWQKKyAgICBBTkQgYXR0 LmF0dG51bT4wCisgICAgT1JERVIgQlkgYXR0LmF0dG5hbWU7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb25zdHJhaW50cy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb25zdHJhaW50cy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgzMzNk YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMv Z2V0X2NvbnN0cmFpbnRzLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAor ICAgIG9pZCBhcyBjb25vaWQsIGNvbm5hbWUsIGNvbnR5cGUsIGNvbnNyYywg Y29ubm9pbmhlcml0LCBjb252YWxpZGF0ZWQsIGNvbmlzbG9jYWwKK0ZST00K KyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNvbnJlbGlkPXt7Zm9p ZH19OjpvaWQKK09SREVSIGJ5IGNvbm5hbWU7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTdiZGQz Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9n ZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApAQCAtMCwwICsxLDYgQEAKK1NFTEVD VAorICAgIHNydm5hbWUKK0ZST00KKyAgICBwZ19mb3JlaWduX3NlcnZlcgor T1JERVIKKyAgICBCWSBzcnZuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjVfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOWE1ZjVkMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS41X3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOSBAQAor eyUgaWYgYmFzZW5zcCAlfQorU0VMRUNUCisgICAgYy5vaWQsIGJuLm9pZCBh cyBzY2lkCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX25h bWVzcGFjZSBibiBPTiBibi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dIRVJFCisg ICAgYm4ubnNwbmFtZSA9IHt7IGJhc2Vuc3B8cXRMaXRlcmFsIH19CisgICAg QU5EIGMucmVsbmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxp ZiBmb2lkICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWVzcGFjZSBhcyBzY2lk CitGUk9NCisgICAgcGdfY2xhc3MgYworV0hFUkUKKyAgICBjLm9pZCA9IHt7 Zm9pZH19OjpvaWQ7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjVfcGx1cy9nZXRfdGFibGVfY29sdW1ucy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2dldF90YWJsZV9jb2x1bW5zLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4MmRiCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfdGFi bGVfY29sdW1ucy5zcWwKQEAgLTAsMCArMSwxNCBAQAoreyUgaWYgYXR0cmVs aWQgICV9CitTRUxFQ1QKKyAgICBhLmF0dG5hbWUsIGZvcm1hdF90eXBlKGEu YXR0dHlwaWQsIE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIHF1b3RlX2lkZW50 KG4ubnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBhcyBp bmhlcml0ZWRmcm9tLAorICAgIGMub2lkIGFzIGluaGVyaXRlZGlkCitGUk9N CisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX25hbWVzcGFjZSBuIE9O IGMucmVsbmFtZXNwYWNlPW4ub2lkCitKT0lOCisgICAgcGdfYXR0cmlidXRl IGEgT04gYS5hdHRyZWxpZCA9IGMub2lkIEFORCBOT1QgYS5hdHRpc2Ryb3Bw ZWQgQU5EIGEuYXR0bnVtPjAKK1dIRVJFCisgICAgYy5vaWQgPSB7e2F0dHJl bGlkfX06Ok9JRAoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlcy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzL2dldF90YWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjgzNDQ1YTIKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF90YWJsZXMuc3FsCkBAIC0wLDAg KzEsMjIgQEAKK3slIGlmIGF0dHJlbGlkICAlfQorU0VMRUNUCisgICAgYXJy YXlfYWdnKHF1b3RlX2lkZW50KG4ubnNwbmFtZSkgfHwgJy4nIHx8IHF1b3Rl X2lkZW50KGMucmVsbmFtZSkpIGFzIGluaGVyaXRzCitGUk9NCisgICAgcGdf Y2xhc3MgYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5yZWxuYW1l c3BhY2U9bi5vaWQgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAnZicpCisgICAg QU5EIGMub2lkIGluIHt7YXR0cmVsaWR9fTsKKworeyUgZWxzZSAlfQorU0VM RUNUCisgICAgYy5vaWQgQVMgaWQsIHF1b3RlX2lkZW50KG4ubnNwbmFtZSkg fHwgJy4nIHx8IHF1b3RlX2lkZW50KGMucmVsbmFtZSkgYXMgdGV4dAorRlJP TQorICAgIHBnX2NsYXNzIGMsIHBnX25hbWVzcGFjZSBuCitXSEVSRQorICAg IGMucmVsbmFtZXNwYWNlPW4ub2lkIEFORCBjLnJlbGtpbmQgSU4gKCdyJywg J2YnKQoreyUgaWYgZm9pZCAlfQorICAgIEFORCBjLm9pZCA8PiB7e2ZvaWR9 fTo6b2lkCit7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBuLm5zcG5hbWUs IGMucmVsbmFtZTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuNV9wbHVzL25vZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVf cGx1cy9ub2RlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5iYzczMWM1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3Nx bC85LjVfcGx1cy9ub2RlLnNxbApAQCAtMCwwICsxLDE0IEBACitTRUxFQ1QK KyAgICBjLm9pZCwgYy5yZWxuYW1lIEFTIG5hbWUsIHBnX2dldF91c2VyYnlp ZChyZWxvd25lcikgQVMgb3duZXIsCisgICAgZnRvcHRpb25zLCBuc3BuYW1l IGFzIGJhc2Vuc3AsIGRlc2NyaXB0aW9uCitGUk9NCisgICAgcGdfY2xhc3Mg YworSk9JTgorICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQu ZnRyZWxpZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5z cCBPTiAobnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkKK0xFRlQgT1VURVIgSk9J TgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9p ZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorV0hF UkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09SREVS IEJZIGMucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjM5NzZhMDcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuNV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzEgQEAK K1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgYy5yZWxh Y2wsIHBnX2dldF91c2VyYnlpZChyZWxvd25lcikgQVMgb3duZXIsCisgICAg ZnRvcHRpb25zLCBzcnZuYW1lIEFTIGZ0c3J2bmFtZSwgZGVzY3JpcHRpb24s IG5zcG5hbWUgQVMgYmFzZW5zcCwKKyAgICAoU0VMRUNUCisgICAgICAgIGFy cmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisgICAgRlJPTQor ICAgICAgICBwZ19zaHNlY2xhYmVsIHNsMQorICAgIFdIRVJFCisgICAgICAg IHNsMS5vYmpvaWQ9Yy5vaWQpIEFTIHNlY2xhYmVscworICAgIHslIGlmIGZv aWQgJX0sCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2coaS5pbmhw YXJlbnQpIEZST00gcGdfaW5oZXJpdHMgaQorICAgIFdIRVJFCisgICAgICAg IGkuaW5ocmVsaWQgPSB7e2ZvaWR9fTo6b2lkIEdST1VQIEJZIGkuaW5ocmVs aWQpIEFTIGluaGVyaXRzCisgICAgeyUgZW5kaWYgJX0KK0ZST00KKyAgICBw Z19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBj Lm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19mb3Jl aWduX3NlcnZlciBmcyBPTiBmdC5mdHNlcnZlcj1mcy5vaWQKK0xFRlQgT1VU RVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9p ZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNz KQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAo bnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkKK1dIRVJFCisgICAgYy5yZWxuYW1l c3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAgeyUgaWYgZm9pZCAlfQorICAg IEFORCBjLm9pZCA9IHt7Zm9pZH19OjpvaWQKKyAgICB7JSBlbmRpZiAlfQor T1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3Nx bC85LjVfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1 cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFhZWQ3MDAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxODIgQEAKK3slIGlt cG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNM QUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2Uu bWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNl dCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfXsl IGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9SRUlH TiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0 YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBl bmRpZiAlfXslIGVuZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3Ig YyBpbiBkYXRhLmNvbHVtbnMuZGVsZXRlZCAlfQoreyUgaWYgKG5vdCBjLmlu aGVyaXRlZGZyb20gb3IgYy5pbmhlcml0ZWRmcm9tID09Jycgb3IgIGMuaW5o ZXJpdGVkZnJvbSA9PSBOb25lIG9yICBjLmluaGVyaXRlZGZyb20gPT0gJ05v bmUnICkgJX0KK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgQ09MVU1OIHt7 Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuYWRkZWQgJX0K K3slIGlmIChub3QgYy5pbmhlcml0ZWRmcm9tIG9yIGMuaW5oZXJpdGVkZnJv bSA9PScnIG9yICBjLmluaGVyaXRlZGZyb20gPT0gTm9uZSBvciAgYy5pbmhl cml0ZWRmcm9tID09ICdOb25lJyApICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIEFERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19IHt7 IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxl biAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnBy ZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBjLmlzQXJy YXlUeXBlICV9W117JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRub3RudWxsICV9 IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3slIGlmIGMu dHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17JSBlbmRp ZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsbmFt ZX19eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yIC0lfQor eyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmNoYW5nZWQgJX0KK3slIHNldCBj b2xfbmFtZSA9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsnYXR0bmFt ZSddICV9Cit7JSBpZiBjLmF0dG5hbWUgIT0gb19kYXRhWydjb2x1bW5zJ11b Yy5hdHRudW1dWydhdHRuYW1lJ10gJX0KK3slIHNldCBjb2xfbmFtZSA9IGMu YXR0bmFtZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBSRU5BTUUgQ09M VU1OIHt7Y29ubnxxdElkZW50KG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVt XVsnYXR0bmFtZSddKX19IFRPIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9 fTsKK3slIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwgIT0gb19kYXRh Wydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRub3RudWxsJ10gJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxxdElkZW50 KGNvbF9uYW1lKX19eyUgaWYgYy5hdHRub3RudWxsICV9IFNFVHslIGVsc2Ug JX0gRFJPUHslIGVuZGlmICV9IE5PVCBOVUxMOworeyUgZW5kaWYgJX0KK3sl IGlmIGMuZGF0YXR5cGUgIT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1d WydkYXRhdHlwZSddIG9yIGMudHlwbGVuICE9IG9fZGF0YVsnY29sdW1ucydd W2MuYXR0bnVtXVsndHlwbGVuJ10gb3IKK2MucHJlY2lzaW9uICE9IG9fZGF0 YVsnY29sdW1ucyddW2MuYXR0bnVtXVsncHJlY2lzaW9uJ10gJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxxdElkZW50 KGNvbF9uYW1lKX19IFRZUEUge3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0 eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59fXslIGlmIGMu cHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBl bmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUgJX1bXXslIGVuZGlmICV9Owor eyUgZW5kaWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAhPSBvX2RhdGFbJ2Nv bHVtbnMnXVtjLmF0dG51bV1bJ3R5cGRlZmF1bHQnXSAlfQorCitBTFRFUiBG T1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRlbnQoY29s X25hbWUpfX17JSBpZiBjLnR5cGRlZmF1bHQgJX0gU0VUIERFRkFVTFQge3tj LnR5cGRlZmF1bHR9fXslIGVsc2UgJX0gRFJPUCBERUZBVUxUeyUgZW5kaWYg JX07Cit7JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRzdGF0dGFyZ2V0ICE9IG9f ZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsnYXR0c3RhdHRhcmdldCddICV9 CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58 cXRJZGVudChjb2xfbmFtZSl9fSBTRVQgU1RBVElTVElDUyB7JSBpZiBjLmF0 dHN0YXR0YXJnZXQgJX17e2MuYXR0c3RhdHRhcmdldH19eyUgZWxzZSAlfS0x eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQoreyUgaWYgZGF0YS5pbmhlcml0cyBhbmQgZGF0YS5pbmhlcml0 c3xsZW5ndGggPiAwJX0KK3slIGlmIG9fZGF0YS5pbmhlcml0cyA9PSBOb25l IG9yIG9fZGF0YS5pbmhlcml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBpbmhl cml0cyA9ICcnICV9Cit7JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMgPSBv X2RhdGEuaW5oZXJpdHMgJX0KK3slIGVuZGlmICV9Cit7JSBmb3IgaSBpbiBk YXRhLmluaGVyaXRzICV9Cit7JSBpZiBpIG5vdCBpbiBpbmhlcml0cyAlfXsl IGlmIGkgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19IElOSEVSSVQge3tpfX07Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGlmIG9fZGF0YS5pbmhlcml0cyBhbmQgJ2luaGVyaXRzJyBp biBkYXRhICV9Cit7JSBpZiBkYXRhLmluaGVyaXRzID09IE5vbmUgb3IgZGF0 YS5pbmhlcml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBpbmhlcml0cyA9ICcn ICV9Cit7JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMgPSBkYXRhLmluaGVy aXRzICV9Cit7JSBlbmRpZiAlfQoreyUgZm9yIGkgaW4gb19kYXRhLmluaGVy aXRzICV9eyUgaWYgaSBub3QgaW4gaW5oZXJpdHMgJX17JSBpZiBpICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fSBOTyBJTkhFUklUIHt7aX19O3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25z dHJhaW50cy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERS T1AgQ09OU1RSQUlOVCB7e2Nvbm58cXRJZGVudChjLmNvbm5hbWUpfX07Cit7 JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFk ZGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBjLmNv bnNyYyB9fSl7JSBpZiBub3QgYy5jb252YWxpZGF0ZWQgJX0gTk9UIFZBTElE eyUgZW5kaWYgJX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhFUklU eyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGZvciBjIGluIGRhdGEu Y29uc3RyYWludHMuY2hhbmdlZCAlfQoreyUgaWYgYy5jb252YWxpZGF0ZWQg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgVkFMSURBVEUgQ09OU1RSQUlO VCB7eyBjb25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fTsKK3slIGVuZGlmICV9 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmZ0b3B0 aW9ucyAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuZGVsZXRlZCAl fQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5h bWUpIH19CisgICAgT1BUSU9OUyAoIERST1Age3tvLm9wdGlvbn19KTsKK3sl IGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGZvciBvIGluIGRhdGEuZnRv cHRpb25zLmFkZGVkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAl fQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPUFRJT05TIChBREQge3tvLm9w dGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5jaGFu Z2VkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRF UiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICBPUFRJT05TIChTRVQge3tvLm9wdGlvbn19IHt7 by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNl Y2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQg c2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4g c2VjbGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29u biwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEu YmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlm ICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9CisK K3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUs IHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNw KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5n ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KKwor e3sgU0VDTEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwg ci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3Ap IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5k ZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorSVMge3sg ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX0K K3slIGlmIGRhdGEuYWNsICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5h Y2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuYWNsLmRlbGV0ZWQgJX0KKwor e3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgbmFtZSwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmIC0lfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEuYWNsICV9 Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmFjbC5jaGFuZ2VkICV9CisKK3t7IFBS SVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUs IG5hbWUsIG9fZGF0YS5iYXNlbnNwKSB9fQorCit7eyBQUklWSUxFR0UuU0VU KGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgbmFtZSwgcHJpdi53aXRo b3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIG9fZGF0YS5iYXNlbnNwKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcg aW4gZGF0YS5hY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuYWNsLmFkZGVk ICV9CisKK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5n cmFudGVlLCBuYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9n cmFudCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuYmFzZW5zcCAlfQor CitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJ ZGVudChkYXRhLmJhc2Vuc3ApIH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cg== --001a114015ced804e10532b645e0 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 --001a114015ced804e10532b645e0--