Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aj78k-0003Gr-Hc for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 Mar 2016 15:25:39 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aj78k-0004F7-3N for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 Mar 2016 15:25:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aj78M-0003wu-Hb for pgadmin-hackers@postgresql.org; Thu, 24 Mar 2016 15:25:14 +0000 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aj78B-0008JG-23 for pgadmin-hackers@postgresql.org; Thu, 24 Mar 2016 15:25:14 +0000 Received: by mail-lf0-x22b.google.com with SMTP id c62so34389222lfc.1 for ; Thu, 24 Mar 2016 08:25:02 -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=j5qHtb+6vC0LcdN6qlU7VazqAQgQJCEvmriiMMbwvcM=; b=jgQShxq7Q8HaxrfvTVTdIWaLtvOZ18/voCTOHtG9sPYFnnhwIEU5ThcyUZglULI15J hHkvgbi0wrb1821ZvOJbBOfzUG1X6/HoP9YrXZFw4t07X88n+CXC8jONt+oji6k5yWpt T9NK0wP2RUPkOZ/zS7FiCz1cbtnaUIUQm0f1Aoopukx/3bv8AgG7Q34EVL8aZUqkBI2S TiMKgccXhuW0eD7X7V3AQUFxGqoJ/PzuMzomOQnRnmBoRDbjJDMZipRIL2xiuEIUPaVr EwVojnkizYnrdhYEJJBQnU26q7Plwrsglv6P/tKGoSUbVetgLI/lvez6th6Vu8Ly5NnV HxzQ== 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=j5qHtb+6vC0LcdN6qlU7VazqAQgQJCEvmriiMMbwvcM=; b=LAzhUNg4kZvBS5z1SEF6SDUqpULEPV9x2rBzo0nWqJF8twK6vS3we92lpWbqPsELOF klMV4in0Au+0ag7eDMFGv+GfgvJF/lR10mB+A/AT+WKMMNPYkvkslmG4yWMNB5t6Jjjt UnOtRnEqtelzZldQD58F8tYjrmjP3RKvwLrnfOu+sarHLFDS/LvV52CpL1led8xl32L6 Vs5E+48nESKzbaApzZpq3g4EBXIl2Ssr2nKlO9XGqBR05ScSZjPpTDTQcvqtfBSug8nw Zl3WE3D7l3unhLKDEuudd2RBvBPO4BdWJM3BjDRYQ2o+Oy44WzO7jqLOrXD+pWIVkOGK lxMQ== X-Gm-Message-State: AD7BkJI+i3SpjmHYP2lMzZes0WDzwtE2lSz9AyNKxV+m/1IIrrnksOmj6/bYdmuKU/dWxbrXbZgXXRHPx1qXZs1L MIME-Version: 1.0 X-Received: by 10.25.80.81 with SMTP id e78mr1369302lfb.133.1458833101448; Thu, 24 Mar 2016 08:25:01 -0700 (PDT) Received: by 10.25.159.85 with HTTP; Thu, 24 Mar 2016 08:25:01 -0700 (PDT) In-Reply-To: References: Date: Thu, 24 Mar 2016 20:55:01 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11406a18ccaa55052ecd0c5a 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 --001a11406a18ccaa55052ecd0c5a Content-Type: multipart/alternative; boundary=001a11406a18ccaa48052ecd0c58 --001a11406a18ccaa48052ecd0c58 Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached updated patch for the Domains Module. Thanks, Khushboo On Thu, Mar 24, 2016 at 5:29 PM, Dave Page wrote: > Hi > > You're going to hate me for this.... > > - I added an un-validated constraint to a domain, then opened the > domain properties and clicked the Validate? option for it. The SQL is > generated, but the Save button is not enabled. > Done. > > - If I right-click a domain, I get Create options for "Domain" (with a > constraint icon) and "Domain..." with a domain icon. > > As per the discussion with Ashesh, He has updated the context menu JS file with the new version and that is causing the issue. He is going to fix this issue as this is generic for the all context menu. I will create a new task for this in kanban and assign it to Ashesh. See attached screenshot. > > Thanks. > > On Thu, Mar 24, 2016 at 9:54 AM, Khushboo Vashi > wrote: > > Hi, > > > > Please find the attached updated patch for the Domain module. > > > > Thanks, > > Khushboo > > > > On Wed, Mar 23, 2016 at 6:35 PM, Dave Page wrote: > >> > >> Hi > >> > >> Almost there :-s > >> > >> - The hint for default should be a placeholder in the textbox itself > >> (like combos have "Select from the list" > > > > Done > >> > >> - I should be able to check the "Validate?" option on one or more > >> constraints from within the Domain dialogue > > > > Done. > > Constraint Name can also be changed through the Domain dialogue. > >> > >> - Please ensure the capitalisation of all property labels is > >> consistent - it should be "Base type" not "Base Type", "System > >> domain?" not "System Domain?" etc. > > > > Done > >> > >> - The check constraint reverse engineered SQL should include the path > >> to the constraint, e.g. > >> > > Done > >> > >> -- CHECK: schema.domain.check_at > >> > >> Once that's done, it can be committed I think. > >> > >> Thanks. > >> > >> On Wed, Mar 23, 2016 at 7:27 AM, Khushboo Vashi > >> wrote: > >> > Updated one comment. > >> > > >> > On Wed, Mar 23, 2016 at 12:48 PM, Khushboo Vashi > >> > wrote: > >> >> > >> >> Hi, > >> >> > >> >> Please find attached updated patch for the Domains module. > >> >> > >> >> On Wed, Mar 16, 2016 at 9:40 PM, Dave Page > wrote: > >> >>> > >> >>> Hi > >> >>> > >> >>> On Wed, Mar 16, 2016 at 2:03 PM, Khushboo Vashi > >> >>> wrote: > >> >>> > Hi, > >> >>> > > >> >>> > Please find the updated Domain Module Patch. > >> >>> > > >> >>> > To test this patch, please apply Backgrid Textarea Cell Patch > before > >> >>> > this. > >> >>> > >> >>> Thanks. I believe with the following fixes, we'll be done :-) > >> >>> > >> >>> - Default values should be auto-quoted when necessary (ie. strings, > on > >> >>> a text-based domain). > >> >> > >> >> As per our discussion, this should leave unquoted. > >> > > >> > And also added a hint to the field stated 'Enter an expression or a > >> > value.' > >> >> > >> >> > >> >>> - "System Domain?" should be in the General section, between owner > and > >> >>> comment. > >> >> > >> >> Done > >> >>> > >> >>> - The switches should use the same colouring/styling as other > objects, > >> >>> e.g. > >> >>> > >> >>> options: { > >> >>> 'onText': 'Yes', 'offText': 'No', > >> >>> 'onColor': 'success', 'offColor': 'primary', > >> >>> 'size': 'small' > >> >>> } > >> >> > >> >> Done > >> >>> > >> >>> - Please remove the Schema property from the main properties tab > (not > >> >>> the properties dialogue). > >> >> > >> >> Done > >> >>> > >> >>> - No icon is show for Checks on the Dependents tab for a domain. > >> >> > >> >> Done > >> >>> > >> >>> - The add button on the Security Labels tab is spelt "Add". Why is > >> >>> that? Other instances of this grid use "ADD" which is the default in > >> >>> backform.pgadmin.js. > >> >> > >> >> Done > >> >>> > >> >>> - Dependencies on domain check constraints are listed as being on a > >> >>> "Type" not a "Domain". > >> >> > >> >> Done > >> >>> > >> >>> - If adding a domain constraint using the grid on the Domain > dialogue, > >> >>> I cannot specify "NOT VALID". We need a checkbox for that in a > narrow > >> >>> columns at the end. Unchecking it for an existing constraint should > be > >> >>> the equivalent of doing "ALTER DOMAIN ... VALIDATE CONSTRAINT" > >> >> > >> >> Done > >> >>> > >> >>> - If I switch the "Don't Validate" switch on a constraint, there are > >> >>> leading blank lines in the generated SQL. The same occurs when > adding > >> >>> a comment to a constraint. > >> >> > >> >> Done > >> >>> > >> >>> - I think we need to reverse the meaning of "Don't Validate" and > >> >>> rename to match the "Valid?" field that's on the properties list. > >> >>> Otherwise it's not clear they're the same thing. > >> >> > >> >> Done > >> >>> > >> >>> - s/Not Null/Not Null?/ > >> >> > >> >> Done > >> >>> > >> >>> > >> >>> > >> >>> -- > >> >>> Dave Page > >> >>> Blog: http://pgsnake.blogspot.com > >> >>> Twitter: @pgsnake > >> >>> > >> >>> EnterpriseDB UK: http://www.enterprisedb.com > >> >>> The Enterprise PostgreSQL Company > >> >> > >> >> > >> > > >> > >> > >> > >> -- > >> Dave Page > >> Blog: http://pgsnake.blogspot.com > >> Twitter: @pgsnake > >> > >> EnterpriseDB UK: http://www.enterprisedb.com > >> The Enterprise PostgreSQL Company > > > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a11406a18ccaa48052ecd0c58 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch for the Domains Module.

Thanks,
Khus= hboo

On Thu,= Mar 24, 2016 at 5:29 PM, Dave Page <dpage@pgadmin.org> wrot= e:
Hi

You're going to hate me for this....

- I added an un-validated constraint to a domain, then opened the
domain properties and clicked the Validate? option for it. The SQL is
generated, but the Save button is not enabled.
Done.=C2=A0

- If I right-click a domain, I get Create options for "Domain" (w= ith a
constraint icon) and "Domain..." with a domain icon.

As per the discussion with Ashesh, He has updat= ed the context menu JS file with the new version and that is causing the is= sue.
He is going = to fix this issue as this is generic for the all context menu.
I will create a new task for = this in kanban and assign it to Ashesh.

See attached screenshot.

Thanks.

On Thu, Mar 24, 2016 at 9:54 AM, Khushboo Vashi
<khushboo.vashi@enterprisedb.com> wrote:
> Hi,
>
> Please find the attached updated patch for the Domain module.
>
> Thanks,
> Khushboo
>
> On Wed, Mar 23, 2016 at 6:35 PM, Dave Page <dpage@pgadmin.org> wrote:
>>
>> Hi
>>
>> Almost there :-s
>>
>> - The hint for default should be a placeholder in the textbox itse= lf
>> (like combos have "Select from the list"
>
> Done
>>
>> - I should be able to check the "Validate?" option on on= e or more
>> constraints from within the Domain dialogue
>
> Done.
> Constraint Name can also be changed through the Domain dialogue.
>>
>> - Please ensure the capitalisation of all property labels is
>> consistent - it should be "Base type" not "Base Typ= e", "System
>> domain?" not "System Domain?" etc.
>
> Done
>>
>> - The check constraint reverse engineered SQL should include the p= ath
>> to the constraint, e.g.
>>
> Done
>>
>> -- CHECK: schema.domain.check_at
>>
>> Once that's done, it can be committed I think.
>>
>> Thanks.
>>
>> On Wed, Mar 23, 2016 at 7:27 AM, Khushboo Vashi
>> <khushboo.vashi@enterprisedb.com> wrote:
>> > Updated one comment.
>> >
>> > On Wed, Mar 23, 2016 at 12:48 PM, Khushboo Vashi
>> > <khushboo.vashi@enterprisedb.com> wrote:
>> >>
>> >> Hi,
>> >>
>> >> Please find attached updated patch for the Domains module= .
>> >>
>> >> On Wed, Mar 16, 2016 at 9:40 PM, Dave Page <dpage@pgadmin.org> wrot= e:
>> >>>
>> >>> Hi
>> >>>
>> >>> On Wed, Mar 16, 2016 at 2:03 PM, Khushboo Vashi
>> >>> <khushboo.vashi@enterprisedb.com> wrote:
>> >>> > Hi,
>> >>> >
>> >>> > Please find the updated Domain Module Patch.
>> >>> >
>> >>> > To test this patch, please apply Backgrid Textar= ea Cell Patch before
>> >>> > this.
>> >>>
>> >>> Thanks. I believe with the following fixes, we'll= be done :-)
>> >>>
>> >>> - Default values should be auto-quoted when necessary= (ie. strings, on
>> >>> a text-based domain).
>> >>
>> >> As per our discussion, this should leave unquoted.
>> >
>> > And also added a hint to the field stated 'Enter an expre= ssion or a
>> > value.'
>> >>
>> >>
>> >>> - "System Domain?" should be in the General= section, between owner and
>> >>> comment.
>> >>
>> >> Done
>> >>>
>> >>> - The switches should use the same colouring/styling = as other objects,
>> >>> e.g.
>> >>>
>> >>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0options: {
>> >>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'o= nText': 'Yes', 'offText': 'No',
>> >>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'o= nColor': 'success', 'offColor': 'primary',
>> >>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0's= ize': 'small'
>> >>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> >>
>> >> Done
>> >>>
>> >>> - Please remove the Schema property from the main pro= perties tab (not
>> >>> the properties dialogue).
>> >>
>> >> Done
>> >>>
>> >>> - No icon is show for Checks on the Dependents tab fo= r a domain.
>> >>
>> >> Done
>> >>>
>> >>> - The add button on the Security Labels tab is spelt = "Add". Why is
>> >>> that? Other instances of this grid use "ADD"= ; which is the default in
>> >>> backform.pgadmin.js.
>> >>
>> >> Done
>> >>>
>> >>> - Dependencies on domain check constraints are listed= as being on a
>> >>> "Type" not a "Domain".
>> >>
>> >> Done
>> >>>
>> >>> - If adding a domain constraint using the grid on the= Domain dialogue,
>> >>> I cannot specify "NOT VALID". We need a che= ckbox for that in a narrow
>> >>> columns at the end. Unchecking it for an existing con= straint should be
>> >>> the equivalent of doing "ALTER DOMAIN ... VALIDA= TE CONSTRAINT"
>> >>
>> >> Done
>> >>>
>> >>> - If I switch the "Don't Validate" swit= ch on a constraint, there are
>> >>> leading blank lines in the generated SQL. The same oc= curs when adding
>> >>> a comment to a constraint.
>> >>
>> >> Done
>> >>>
>> >>> - I think we need to reverse the meaning of "Don= 't Validate" and
>> >>> rename to match the "Valid?" field that'= ;s on the properties list.
>> >>> Otherwise it's not clear they're the same thi= ng.
>> >>
>> >> Done
>> >>>
>> >>> - s/Not Null/Not Null?/
>> >>
>> >> Done
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Dave Page
>> >>> Blog: http://pgsnake.blogspot.com
>> >>> Twitter: @pgsnake
>> >>>
>> >>> EnterpriseDB UK: http://www.enterprisedb.com
>> >>> The Enterprise PostgreSQL Company
>> >>
>> >>
>> >
>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>
>



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

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

--001a11406a18ccaa48052ecd0c58-- --001a11406a18ccaa55052ecd0c5a Content-Type: text/x-patch; charset=US-ASCII; name="Domains_ver_8.patch" Content-Disposition: attachment; filename="Domains_ver_8.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_im6fhjcz0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMWIyNGEKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsODI0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBEb21haW4g Tm9kZS4iIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20g cGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVy bmFsX3NlcnZlcl9lcnJvciwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIu dXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUK K2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzLnV0aWxzIGltcG9ydCBcCisgICAgU2NoZW1hQ2hpbGRNb2R1bGUsIERh dGFUeXBlUmVhZGVyCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnV0aWxzIGltcG9ydCBcCisgICAgcGFy c2Vfc2VjX2xhYmVsc19mcm9tX2RiCitmcm9tIGZ1bmN0b29scyBpbXBvcnQg d3JhcHMKKworCitjbGFzcyBEb21haW5Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1 bGUpOgorICAgICIiIgorICAgIGNsYXNzIERvbWFpbk1vZHVsZShTY2hlbWFD aGlsZE1vZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXByZXNlbnRz IFRoZSBEb21haW4gTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0t LS0tCisgICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAt IEluaXRpYWxpemUgdGhlIERvbWFpbiBNb2R1bGUuCisKKyAgICAqIGdldF9u b2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBHZW5lcmF0ZSB0 aGUgZG9tYWluIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogc2NyaXB0X2xv YWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21h aW4sIHdoZW4gc2NoZW1hIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQu CisgICAgIiIiCisKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWluJworICAgIENP TExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJEb21haW5zIikKKworICAgIGRl ZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBz dXBlcihEb21haW5Nb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3 YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBz ZWxmLm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg R2VuZXJhdGUgdGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisgICAgICAg ICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29s bGVjdGlvbl9ub2RlKHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg c2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2Fk IHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdoZW4gc2NoZW1hIG5v ZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAg ICAgICByZXR1cm4gc2NoZW1hcy5TY2hlbWFNb2R1bGUuTk9ERV9UWVBFCisK KworYmx1ZXByaW50ID0gRG9tYWluTW9kdWxlKF9fbmFtZV9fKQorCisKK2Ns YXNzIERvbWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRl cik6CisgICAgIiIiCisgICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhp cyBjbGFzcyBpbmhlcml0cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBk aWZmZXJlbnQgcm91dGVzIGZvcgorICAgIHRoZSBtb2R1bGUuIEFsc28sIGlu aGVyaXRzIERhdGFUeXBlUmVhZGVyIHRvIGdldCBkYXRhIHR5cGVzLgorCisg ICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRvIENyZWF0ZSwgUmVhZCwg VXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBmb3IKKyAgICB0aGUgRG9t YWluLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxp ZGF0ZV9yZXF1ZXN0KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRv ci4KKyAgICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0 IG9mIGNyZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAq IG1vZHVsZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbnMu anMpIGZvciB0aGlzIG1vZHVsZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0 aW9uKGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg IC0gIENoZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAg IC0gIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgIC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisg ICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAg ICogZ2V0X2NvbGxhdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1O b25lKToKKyAgICAgIC0gUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgKiBj cmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMg YSBuZXcgRG9tYWluIG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21h aW4gb2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gb2JqZWN0Lgor CisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVj dC4KKworICAgICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5v bmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAg ICAqIGdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6 CisgICAgICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3Jl YXRlL3VwZGF0ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICogZGVwZW5k ZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisK KyAgICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk KToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUg RG9tYWluIG9iamVjdC4KKworICAgICogdHlwZXMoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZm5pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVz LgorICAgICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVf dHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdkaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lk J30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ2RvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBk aWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0Jzog J3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBk YXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAn Y3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2Rl bGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dl dCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0Jzog J25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBb eydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdt c3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7 J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6 IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRl bnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVs ZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAg ICAgJ2dldF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dldCc6ICd0 eXBlcyd9XSwKKyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAg ICAgICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAg IHsnZ2V0JzogJ2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgXQorICAgIH0p CisKKyAgICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIi CisgICAgICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxp ZGF0aW5nIHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRh dGUgYW5kIG1vZGlmaWVkIFNRTC4KKworICAgICAgICBSZXF1aXJlZCBBcmdz OgorICAgICAgICAgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHRoZSBEb21h aW4KKyAgICAgICAgICAgICAgICAgICAgb3duZXI6IERvbWFpbiBPd25lcgor ICAgICAgICAgICAgICAgICAgICBiYXNlbnNwOiBTY2hlbWEgTmFtZQorICAg ICAgICAgICAgICAgICAgICBiYXNldHlwZTogRGF0YSBUeXBlIG9mIHRoZSBE b21haW4KKworICAgICAgICBBYm92ZSBib3RoIHRoZSBhcmd1bWVudHMgd2ls bCBub3QgYmUgdmFsaWRhdGVkIGluIHRoZSB1cGRhdGUgYWN0aW9uLgorICAg ICAgICAiIiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdy YXAoc2VsZiwgKiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30K KyAgICAgICAgICAgIGlmIHJlcXVlc3QuZGF0YToKKyAgICAgICAgICAgICAg ICByZXEgPSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVxID0gcmVxdWVz dC5hcmdzIG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAgICAgICBpZiAnZG9p ZCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9h cmdzID0gWworICAgICAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAg ICAgICAgICAgICAgICdiYXNldHlwZScKKyAgICAgICAgICAgICAgICBdCisK KyAgICAgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6Cisg ICAgICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVth cmddID09ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1z Zz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGRuJ3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg bGlzdF9wYXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3Qu bWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3Bh cmFtcyA9IFsnY29uc3RyYWludHMnLCAnc2VjbGFiZWxzJ10KKworICAgICAg ICAgICAgICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAg ICBpZiBrZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMg c3RyaW5nIGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBqc29uLmxvYWRzKHJlcVtr ZXldKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAndHlwbm90 bnVsbCc6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBU cnVlIGlmIHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XSBpc1wKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRydWUgZWxzZVwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoRmFsc2UgaWYgcmVxW2tleV0gPT0gJ2ZhbHNlJyBv ciByZXFba2V5XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlIGVsc2UgJycp CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICAgICAgICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJl dHVybiBmKHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFw CisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgTG9hZCBKUyBmaWxlIChkb21haW5zLmpzKSBmb3IgdGhpcyBtb2R1 bGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25z ZSgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAiZG9tYWlucy9qcy9kb21haW5zLmpzIiwKKyAgICAgICAgICAgICAg ICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAs IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9 CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6 CisgICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4K KyAgICAgICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgor ICAgICAgICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRl IHBhdGguCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAg ICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNl bGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5hZ2Vy ID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQor ICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlk PWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBk cml2ZXIucXRJZGVudAorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25u LmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25k aXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQo IkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisg ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1h bmFnZXIudmVyc2lvbgorICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBzZWxm Lm1hbmFnZXIuc2VydmVyX3R5cGUKKworICAgICAgICAgICAgIyB3ZSB3aWxs IHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAg ICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVt cGxhdGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjJfcGx1cycKKyAgICAgICAg ICAgIGVsaWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKworICAg ICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAg IHJldHVybiB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAg ICIiIgorICAgICAgICBMaXN0IHRoZSBEb21haW5zLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAi IiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jv d3MnXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl dHVybnMgYWxsIHRoZSBEb21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRo ZSBicm93c2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKworICAgICAgICByZXMgPSBb XQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQo CisgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJv d3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAor ICAgICAgICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAg ICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNv bi1kb21haW4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMs CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFJldHVybnMgdGhlIERvbWFpbiBwcm9wZXJ0aWVzLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAg ICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9pZCkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlm IGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBn b25lKGdldHRleHQoIiIiCitDb3VsZCBub3QgZmluZCB0aGUgZG9tYWluIGlu IHRoZSBkYXRhYmFzZS4KK0l0IG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBieSBh bm90aGVyIHVzZXIgb3IKK3NoaWZ0ZWQgdG8gdGhlIGFub3RoZXIgc2NoZW1h LgorIiIiKSkKKworICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKwor ICAgICAgICAjIEdldCBUeXBlIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAg ICAgIGRhdGEudXBkYXRlKHNlbGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5 cGUnXSkpCisKKyAgICAgICAgIyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsn Y29uc3RyYWludHMnXSA9IHJlc1sncm93cyddCisKKyAgICAgICAgIyBHZXQg Zm9ybWF0dGVkIFNlY3VyaXR5IExhYmVscworICAgICAgICBpZiAnc2VjbGFi ZWxzJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YS51cGRhdGUocGFyc2Vf c2VjX2xhYmVsc19mcm9tX2RiKGRhdGFbJ3NlY2xhYmVscyddKSkKKworICAg ICAgICAjIFNldCBTeXN0ZW0gRG9tYWluIFN0YXR1cworICAgICAgICBkYXRh WydzeXNkb21haW4nXSA9IEZhbHNlCisgICAgICAgIGlmIGRvaWQgPD0gc2Vs Zi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddOgorICAg ICAgICAgICAgZGF0YVsnc3lzZG9tYWluJ10gPSBUcnVlCisKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1k YXRhLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAg ICBkZWYgX3BhcnNlX3R5cGUoc2VsZiwgYmFzZXR5cGUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyBUeXBlIGFuZCBEYXRhIFR5cGUgZnJvbSB0 aGUgYmFzZXR5cGUuCisgICAgICAgICIiIgorICAgICAgICB0eXBfbGVuID0g JycKKyAgICAgICAgdHlwX3ByZWNpc2lvbiA9ICcnCisKKyAgICAgICAgIyBU aGUgTGVuZ3RoIGFuZCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBEYXRhdHlwZSBz aG91bGQgYmUgc2VwYXJhdGUuCisgICAgICAgICMgVGhlIEZvcm1hdCB3ZSBn ZXR0aW5nIGZyb20gZGF0YWJhc2UgaXM6IG51bWVyaWMoMSwxKQorICAgICAg ICAjIFNvLCB3ZSBuZWVkIHRvIHNlcGFyYXRlIExlbmd0aDogMSwgUHJlY2lz aW9uOiAxCisKKyAgICAgICAgaWYgYmFzZXR5cGUgIT0gJycgYW5kIGJhc2V0 eXBlLmZpbmQoIigiKSA+IDA6CisgICAgICAgICAgICBzdWJzdHIgPSBiYXNl dHlwZVtiYXNldHlwZS5maW5kKCIoIikgKyAxOmxlbigKKyAgICAgICAgICAg ICAgIGJhc2V0eXBlKSAtIDFdCisgICAgICAgICAgICB0eXBsZW4gPSBzdWJz dHIuc3BsaXQoIiwiKQorICAgICAgICAgICAgaWYgbGVuKHR5cGxlbikgPiAx OgorICAgICAgICAgICAgICAgIHR5cF9sZW4gPSB0eXBsZW5bMF0KKyAgICAg ICAgICAgICAgICB0eXBfcHJlY2lzaW9uID0gdHlwbGVuWzFdCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHR5cF9sZW4gPSB0eXBsZW4K KyAgICAgICAgICAgICAgICB0eXBfcHJlY2lzaW9uID0gJycKKworICAgICAg ICByZXR1cm4geyd0eXBsZW4nOiB0eXBfbGVuLCAncHJlY2lzaW9uJzogdHlw X3ByZWNpc2lvbn0KKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAg ICAgICAiIiIKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFs dWUnOiAnJ31dCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X2NvbGxhdGlvbnMuc3FsJ10pKQorICAgICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydj b3B5X2NvbGxhdGlvbiddfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgdHlwZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnMgdGhlIERhdGEgVHlwZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmbmlkOiBGdW5j dGlvbiBJZAorICAgICAgICAiIiIKKworICAgICAgICBjb25kaXRpb24gPSAi IiJ0eXBpc2RlZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZCcs ICdlJywgJ3InKQorQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZQorQU5EIHJl bG5hbWUgPSB0eXBuYW1lIEFORCByZWxraW5kICE9ICdjJykgQU5ECisodHlw bmFtZSBOT1QgTElLRSAnXyUnIE9SIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZS T00gcGdfY2xhc3MgV0hFUkUKK3JlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2Ug QU5EIHJlbG5hbWUgPSBzdWJzdHJpbmcodHlwbmFtZSBGUk9NIDIpOjpuYW1l CitBTkQgcmVsa2luZCAhPSAnYycpKSIiIgorCisgICAgICAgIGlmIHNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHM6CisgICAgICAgICAgICBj b25kaXRpb24gKz0gIiBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9u X3NjaGVtYSciCisKKyAgICAgICAgIyBHZXQgVHlwZXMKKyAgICAgICAgc3Rh dHVzLCB0eXBlcyA9IHNlbGYuZ2V0X3R5cGVzKHNlbGYuY29ubiwgY29uZGl0 aW9uKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXR5cGVzKQor CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBkYXRhPXR5cGVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlk YXRlX3JlcXVlc3QKKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlcyBhIG5l dyBEb21haW4gb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWlu IElkCisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5h bWU6IERvbWFpbiBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFt ZQorICAgICAgICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAg ICAgIGJhc2V0eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIERvbWFpbiBvYmplY3QgaW4ganNvbiBmb3Jt YXQuCisgICAgICAgICIiIgorCisgICAgICAgIGRhdGEgPSBzZWxmLnJlcXVl c3QKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhdHVzLCBTUUwgPSBz ZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQpCisKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNR TCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgICMgV2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVj dCBpbiB0cmVlIGF0IGJyb3dzZXIsIGJlbG93IHNxbCB3aWxsCisgICAgICAg ICAgICAjIGdpdmVzIHRoZSBzYW1lCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9vaWQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJhc2Vuc3A9ZGF0YVsnYmFzZW5zcCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSddKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgIGRvaWQsIHNjaWQgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAg ICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9k ZSgKKyAgICAgICAgICAgICAgICAgICAgZG9pZCwKKyAgICAgICAgICAgICAg ICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSdd LAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbiIKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9w cyB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAg ICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDog U2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERv bWFpbiBJZAorICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLmNtZCA9 PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUg b3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwg ZG9pZD1kb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIG5hbWUsIGJh c2Vuc3AgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZT1uYW1lLCBiYXNlbnNwPWJhc2Vuc3AsIGNhc2NhZGU9Y2Fz Y2FkZSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIGRyb3BwZWQiKSwK KyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg J2lkJzogZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lk LAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAg ICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAn ZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9y ZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhl IERvbWFpbiBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4g SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxm LmdldF9zcWwoZ2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwgZG9pZCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgICMgR2V0IFNjaGVtYSBJZAorICAg ICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQp CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHNj aWQgPSByZXNbJ3Jvd3MnXVswXVsnc2NpZCddCisKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkRv bWFpbiB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzog ZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1 cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6 IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBEb21haW4gb2JqZWN0 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIi IgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAj IEdldCBUeXBlIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAgICAgIGRhdGEu dXBkYXRlKHNlbGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5cGUnXSkpCisK KyAgICAgICAgIyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsnY29uc3RyYWlu dHMnXSA9IHJlc1sncm93cyddCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwn XSksIGRhdGE9ZGF0YSkKKworICAgICAgICBzcWxfaGVhZGVyID0gIiIiLS0g RE9NQUlOOiB7MH0KKworLS0gRFJPUCBET01BSU4gezB9OworCisiIiIuZm9y bWF0KGRhdGFbJ2Jhc2Vuc3AnXSArICcuJyArIGRhdGFbJ25hbWUnXSkKKwor ICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgU1FMCisKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMLnN0cmlwKCdcbicpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1 ZXN0CisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhl IG1vZGlmaWVkIFNRTC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJ ZAorCisgICAgICAgIFJlcXVpcmVkIEFyZ3M6CisgICAgICAgICAgICBuYW1l OiBEb21haW4gTmFtZQorICAgICAgICAgICAgb3duZXI6IE93bmVyIE5hbWUK KyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBOYW1lCisgICAgICAgICAg ICBiYXNldHlwZTogRG9tYWluIEJhc2UgVHlwZQorCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBk YXRlIHRoZSBEb21haW4uCisgICAgICAgICIiIgorCisgICAgICAgIHN0YXR1 cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBzZWxmLnJlcXVlc3Qs IHNjaWQsIGRvaWQpCisKKyAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPVNRTCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gU1FM CisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2Np ZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRl cyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9t YWluLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAg ICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGRvaWQgaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJl c1sncm93cyddWzBdCisKKyAgICAgICAgICAgICAgICAjIEdldCBEb21haW4g Q29uc3RyYWludHMKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf Y29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgICAgIGNvbl9kYXRhID0ge30KKyAgICAgICAgICAg ICAgICBmb3IgYyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAg ICAgY29uX2RhdGFbY1snY29ub2lkJ11dID0gYworCisgICAgICAgICAgICAg ICAgb2xkX2RhdGFbJ2NvbnN0cmFpbnRzJ10gPSBjb25fZGF0YQorCisgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBk YXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBv X2RhdGE9b2xkX2RhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKyAgICAg ICAgICAgIHJldHVybiBUcnVlLCBTUUwuc3RyaXAoJ1xuJykKKworICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g RmFsc2UsIGUKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg ZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBk ZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBm b3IgdGhlIERvbWFpbiBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9t YWluIElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3Vs dCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25uLCBkb2lkKQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBy ZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4g YWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIERvbWFpbiBub2RlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5k ZW5jaWVzKHNlbGYuY29ubiwgZG9pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5j aWVzX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAg ICAgICAgICAgICAgKQorCitEb21haW5WaWV3LnJlZ2lzdGVyX25vZGVfdmll dyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL2RvbWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmY2FjZTEK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDY5MSBA QAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor IiIiSW1wbGVtZW50cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgTW9kdWxlLiIi IgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg UEdDaGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNj aGVtYXMuZG9tYWlucyBcCisgICAgYXMgZG9tYWlucworZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJv bSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJv bSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIGZ1bmN0 b29scyBpbXBvcnQgd3JhcHMKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50 TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICBj bGFzcyBEb21haW5Db25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9k dWxlKToKKworICAgICAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgVGhlIERv bWFpbiBDb25zdHJhaW50IE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAg LS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAg ICAgLSBJbml0aWFsaXplIHRoZSBEb21haW4gQ29uc3RyYWludCBNb2R1bGUu CisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAg ICAgLSBHZW5lcmF0ZSB0aGUgRG9tYWluIENvbnN0cmFpbnQgY29sbGVjdGlv biBub2RlLgorCisgICAgKiBub2RlX2lub2RlKGdpZCwgc2lkLCBkaWQsIHNj aWQpCisgICAgICAtIFJldHVybnMgRG9tYWluIENvbnN0cmFpbnQgbm9kZSBh cyBsZWFmIG5vZGUuCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0g TG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgdGhlIERvbWFpbiBDb25zdHJh aW50LCB3aGVuIGFueSBvZiB0aGUKKyAgICAgICAgRG9tYWluIG5vZGUgaXMg aW5pdGlhbGl6ZWQuCisgICAgIiIiCisgICAgTk9ERV9UWVBFID0gJ2RvbWFp bi1jb25zdHJhaW50cycKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4 dCgiRG9tYWluIENvbnN0cmFpbnRzIikKKworICAgIGRlZiBfX2luaXRfXyhz ZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihEb21haW5D b25zdHJhaW50TW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2Fy Z3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2Vs Zi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIEdlbmVyYXRlIHRoZSBEb21haW4gQ29uc3RyYWludCBjb2xsZWN0aW9u IG5vZGUuCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVy YXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGRvaWQpCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgRG9tYWluIENvbnN0cmFpbnQgbm9kZSBhcyBs ZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFsc2UK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQg Zm9yIHRoZSBEb21haW4gQ29uc3RyYWludCwgd2hlbiBhbnkgb2YgdGhlCisg ICAgICAgIERvbWFpbiBub2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIGRvbWFpbnMuRG9tYWluTW9kdWxlLk5PREVf VFlQRQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNl bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQg b2YgY3NzIHRvIGluY2x1ZGUgaW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisg ICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiZG9tYWluLWNvbnN0cmFpbnRz L2Nzcy9kb21haW4tY29uc3RyYWludHMuY3NzIiwKKyAgICAgICAgICAgICAg ICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlCisgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICBdCisKKworCitibHVlcHJpbnQg PSBEb21haW5Db25zdHJhaW50TW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNz IERvbWFpbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAg IiIiCisgICAgY2xhc3MgRG9tYWluQ29uc3RyYWludFZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKKworICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgUEdDaGlsZE5v ZGVWaWV3IHRvIGdldCB0aGUgZGlmZmVyZW50IHJvdXRlcyBmb3IKKyAgICB0 aGUgbW9kdWxlLgorCisgICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRv IENyZWF0ZSwgUmVhZCwgVXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBm b3IKKyAgICB0aGUgRG9tYWluIENvbnN0cmFpbnQuCisKKyAgICBNZXRob2Rz OgorICAgIC0tLS0tLS0KKworICAgICogbW9kdWxlX2pzKCk6CisgICAgICAt IExvYWQgSlMgZmlsZSAoZG9tYWluLWNvbnN0cmFpbnRzLmpzKSBmb3IgdGhp cyBtb2R1bGUuCisKKyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAg ICAgIC0gV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAtICBDaGVja3Mg ZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAtICBBdHRhY2gg Y29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisKKyAgICAq IGxpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIExp c3QgdGhlIERvbWFpbiBDb25zdHJhaW50cy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW4gQ29uc3RyYWludHMgdG8gZ2VuZXJhdGUgTm9kZXMgaW4gdGhlIGJy b3dzZXIuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAtIFJldHVybnMgdGhlIERvbWFpbiBDb25zdHJh aW50IHByb3BlcnRpZXMuCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlk LCBzY2lkKToKKyAgICAgIC0gQ3JlYXRlcyBhIG5ldyBEb21haW4gQ29uc3Ry YWludCBvYmplY3QuCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgIC0gVXBkYXRlcyB0aGUgRG9tYWluIENvbnN0 cmFpbnQgb2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gQ29uc3Ry YWludCBvYmplY3QuCisKKyAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBTUUwgZm9yIHRo ZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAqIG1zcWwoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJu cyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgKiBnZXRfc3FsKGdpZCwgc2lk LCBkYXRhLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0ZXMg dGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIERvbWFp biBDb25zdHJhaW50LgorICAgICAgICBvYmplY3QuCisKKyAgICAqIGRlcGVu ZGVudHMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAg ICAtIFJldHVybnMgdGhlIGRlcGVuZGVudHMgZm9yIHRoZSBEb21haW4gQ29u c3RyYWludCBvYmplY3QuCisKKyAgICAqIGRlcGVuZGVuY2llcyhnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkKToKKyAgICAgIC0gUmV0dXJucyB0 aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2Jq ZWN0LgorICAgICIiIgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2Rl X3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2Np ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RvaWQnfQor ICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAnY29pZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3Qo eworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJv cGVydGllcycsICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUn fSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVh dGUnfQorICAgICAgICBdLAorICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRl JzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ2NoaWxkcmVuJzogW3snZ2V0Jzog J2NoaWxkcmVuJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dl dCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwn fSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0 JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6 IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dCisgICAgfSkKKwor ICAgIGRlZiB2YWxpZGF0ZV9yZXF1ZXN0KGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIFZhbGlkYXRp bmcgcmVxdWVzdCBvbiB0aGUgcmVxdWVzdCBvZiBjcmVhdGUsIHVwZGF0ZSBh bmQgbW9kaWZpZWQgU1FMLgorCisgICAgICAgIFJlcXVpcmVkIEFyZ3M6Cisg ICAgICAgICAgICAgICAgICAgIG5hbWU6IE5hbWUgb2YgdGhlIERvbWFpbiBD b25zdHJhaW50CisgICAgICAgICAgICAgICAgICAgIGNvbnNyYzogQ2hlY2sg Q29uc3RyYWludCBEZWZpbml0aW9uCisKKyAgICAgICAgQWJvdmUgYm90aCB0 aGUgYXJndW1lbnRzIHdpbGwgbm90IGJlIHZhbGlkYXRlZCBpbiB0aGUgdXBk YXRlIGFjdGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYp CisgICAgICAgIGRlZiB3cmFwKHNlbGYsICoqa3dhcmdzKToKKworICAgICAg ICAgICAgZGF0YSA9IHt9CisgICAgICAgICAgICBpZiByZXF1ZXN0LmRhdGE6 CisgICAgICAgICAgICAgICAgcmVxID0ganNvbi5sb2FkcyhyZXF1ZXN0LmRh dGEuZGVjb2RlKCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIHJlcSA9IHJlcXVlc3QuYXJncyBvciByZXF1ZXN0LmZvcm0KKworICAg ICAgICAgICAgaWYgJ2NvaWQnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAg ICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICAgICAgICAg J25hbWUnLAorICAgICAgICAgICAgICAgICAgICAnY29uc3JjJworICAgICAg ICAgICAgICAgIF0KKworICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gcmVx dWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biByZXEgb3IgcmVxW2FyZ10gPT0gJyc6CisgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJh bWV0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJXMp LiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg ICAgICAgICAgICAgICBmb3Iga2V5IGluIHJlcToKKyAgICAgICAgICAgICAg ICAgICAgaWYga2V5ID09ICdjb252YWxpZGF0ZWQnOgorICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVtrZXldID0gVHJ1ZSBpZiAocmVxW2tleV0gPT0g J3RydWUnIG9yIHJlcVtrZXldIGlzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSBlbHNlIEZhbHNlCisgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICAgICAg ICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJldHVybiBm KHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAg ICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg TG9hZCBKUyBmaWxlIChkb21haW4tY29uc3RyYWludHMuanMpIGZvciB0aGlz IG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICJkb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNvbnN0 cmFpbnRzLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdldHRleHQKKyAgICAg ICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVudC1UeXBlJzog J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAgICkKKworICAg IGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAg ICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAgQ2hlY2tzIGRh dGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAgICBBdHRhY2ggY29u bmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVS KQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rp b25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5j b25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlk J10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVu dAorCisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiBy ZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNl bGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4g cHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBn ZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9z dCEiKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgdmVyID0g c2VsZi5tYW5hZ2VyLnZlcnNpb24KKworICAgICAgICAgICAgIyB3ZSB3aWxs IHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAg ICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVt cGxhdGVfcGF0aCA9ICdkb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVz JworICAgICAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdz LCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlz dCB0aGUgRG9tYWluIENvbnN0cmFpbnRzLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9p ZDogRG9tYWluIElkCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhbGwgdGhlIERv bWFpbiBDb25zdHJhaW50cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2Vy dmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAg ICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFp biBJZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgaWYgJ2NvbnZhbGlkYXRlZCcg bm90IGluIHJvdzoKKyAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9t YWluLWNvbnN0cmFpbnRzJworICAgICAgICAgICAgZWxpZiByb3dbJ2NvbnZh bGlkYXRlZCddOgorICAgICAgICAgICAgICAgIGljb24gPSAnaWNvbi1kb21h aW4tY29uc3RyYWludHMnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMtYmFkJwor ICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxm LmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAg ICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGRv aWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICBpY29uPWljb24KKyAgICAgICAgICAgICAgICApKQor CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9w ZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgRG9tYWluIENv bnN0cmFpbnRzIHByb3BlcnR5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9t YWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJ ZAorICAgICAgICAiIiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQs IGNvaWQ9Y29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3Bv bnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAdmFsaWRhdGVfcmVx dWVzdAorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGVzIGEgbmV3 IERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRv aWQ6IERvbWFpbiBJZAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gc2VsZi5yZXF1ZXN0CisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRf c3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkKQorICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPVNRTCkKKworICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQor CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICAjIEdldCB0aGUgcmVjZW50bHkgYWRkZWQgY29uc3Ry YWludHMgb2lkCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9p ZCwgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAgICAgICBzdGF0dXMsIGNv aWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNvaWQpCisKKyAgICAgICAg ICAgIGlmICdjb252YWxpZGF0ZWQnIG5vdCBpbiBkYXRhOgorICAgICAgICAg ICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMnCisgICAg ICAgICAgICBlbGlmICdjb252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIGRhdGFb J2NvbnZhbGlkYXRlZCddOgorICAgICAgICAgICAgICAgIGljb24gPSAnaWNv bi1kb21haW4tY29uc3RyYWludHMnCisgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgIGljb24gPSAnaWNvbi1kb21haW4tY29uc3RyYWludHMt YmFkJworCisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAg ICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJf bm9kZSgKKyAgICAgICAgICAgICAgICAgICAgY29pZCwKKyAgICAgICAgICAg ICAgICAgICAgZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFt ZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPWljb24KKyAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9w cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAg ICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4g Q29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQsIGNvaWQ9Y29p ZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3Mn XVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhKQor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAg ICAgICAgaW5mbz1nZXR0ZXh0KCJEb21haW4gQ29uc3RyYWludCBkcm9wcGVk IiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAg ICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzog c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAdmFsaWRh dGVfcmVxdWVzdAorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBV cGRhdGVzIHRoZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisg ICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERv bWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkYXRh ID0gc2VsZi5yZXF1ZXN0CisgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lkLCBjb2lkKQorCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIFNRTCBhbmQgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIGlmICdj b252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIGRhdGFbJ2NvbnZhbGlkYXRlZCdd OgorICAgICAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9tYWluLWNv bnN0cmFpbnRzJworICAgICAgICAgICAgICAgIGVsaWYgJ2NvbnZhbGlkYXRl ZCcgaW4gZGF0YSBhbmQgbm90IGRhdGFbJ2NvbnZhbGlkYXRlZCddOgorICAg ICAgICAgICAgICAgICAgICBpY29uID0gJ2ljb24tZG9tYWluLWNvbnN0cmFp bnRzLWJhZCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgICAgICBpY29uID0gJycKKworICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iRG9tYWluIENvbnN0 cmFpbnQgdXBkYXRlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogY29pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdkb2lkJzogZG9pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lk JzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdpY29uJzogaWNvbgorICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAg ICAgICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAg ICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICAgICAnaWQnOiBjb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Rv aWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBz Y2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkLCBjb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0 dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAg ICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKwor ICAgICAgICAjIEdldCBTY2hlbWEgYW5kIERvbWFpbi4KKyAgICAgICAgZG9t YWluLCBzY2hlbWEgPSBzZWxmLl9nZXRfZG9tYWluKGRvaWQpCisKKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBkYXRh ID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg ZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKworICAgICAgICBzcWxf aGVhZGVyID0gIiIiLS0gQ0hFQ0s6IHsxfS57MH0KKworLS0gQUxURVIgRE9N QUlOIHsxfSBEUk9QIENPTlNUUkFJTlQgezB9OworCisiIiIuZm9ybWF0KGRh dGFbJ25hbWUnXSwgc2NoZW1hICsgJy4nICsgZG9tYWluKQorCisgICAgICAg IFNRTCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgbXNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FM LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAg ICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4g anNvbiBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gc2Vs Zi5yZXF1ZXN0CisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9z cWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQsIGNvaWQpCisgICAgICAg IGlmIHN0YXR1cyBhbmQgU1FMOgorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYg Z2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29p ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlcyB0aGUg U1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluIENv bnN0cmFpbnQuCisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisg ICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAg ICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY29pZCBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKwor ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVz Wydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYu Y29ubgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2NoZW1hID0gc2VsZi5fZ2V0 X2RvbWFpbihkb2lkKQorCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Y3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBkb21haW49ZG9tYWluLCBzY2hlbWE9c2No ZW1hKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTC5zdHJpcCgnXG4n KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBkZWYgX2dldF9kb21haW4oc2VsZiwgZG9pZCk6 CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIERvbWFpbiBhbmQgU2No ZW1hIG5hbWUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGRvaWQ6 IERvbWFpbiBJZAorCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Rv bWFpbi5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gcmVzWydyb3dz J11bMF0KKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVw ZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAg ICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogIFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiAgU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6ICBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERv bWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkZXBl bmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25u LCBjb2lkKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5k ZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3Ig dGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBk b2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25z dHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNf cmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgY29p ZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCitEb21h aW5Db25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50 KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvc3RhdGljL2ltZy9jb2xsLWRvbWFpbi1jb25zdHJhaW50 cy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzLnBuZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJlMTM3MDVjNTBlNmMwY2Y4ZjE5 ZDY4MDA1M2U4NjQzZTI4NzUxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz MTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNzM/JCMpZUZQRnYz R2ZNVjE9MlRyTzg0N3tKbGB8dGBRcGFzCnpuPGhTK2w9ck1ZPlJHUHF2bHlk aXpSSiY+QmBPbSNWfVIteU9NPzdAODYyTTdOQ1I+PjNwXnI9ZndUdTB5UGVG bwp6MTJUTClUXnZJPXR8dW9QVXx8WkY8dGdhSEcqUXNRIT9tJlRxPT8zbUN1 fUojRHgzeEBtTX19XmlFPTVOSVdYbmsKemtwbkM0YWklYT5AO0dnNz11dW1z PTliSUs9RWdkfih1cy0zZ0BJdjAyZ2ZzS15KUF4pZ0g9bWhCVDc7ZE9IIT9w CnppJkI5VWdPUCF1ZnYleUV1N1AyUWslNShvdjZZRjV3dD1hWWZxfShMUlhH JDV4JW54WFhfWEtTMjl7dEFBa3xnfApYVylLYWhyaVpRcFlHQ2ttXj5iUDBs K1hrS3l5UlV9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9z dGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQucG5nIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2lt Zy9kb21haW4tY29uc3RyYWludHMtYmFkLnBuZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4zMmEwNDViOGZhZmRjMDg2NDBkNTNiMmE4NmIxZGNhYmNiMGZl MGZkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NzkKemNtVi1KMD0pZitQ KTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NAbHxEMDAwMDFi NWNoXzBJdHApCno9PlB4JEFXJSRITVIxWjkjUSpAUkVIbWRIQW08PDs9cGBs VERsNiRMRTE1JHxuTTZ5eEozIzYmRn1eKVF4PHAzbgp6SCNoNHpJSylPdSM3 OWZUTUAjSEpLa1koOD9MJFFFTGBDakpNZWFzTT9uZyg7UUI+fG9OYlgyVT9u K0FVT0gxIWUKek96JXhpP0BkbmNQRVhLUlM/XkN6I2FtdFFRQm0reFF0KHEj QEthUnFSODtVKVJxPDk8QG1FKllWcShgflYpMHZCCnorR1M8KVZQVyVQViU9 JEphZyFKSFhsVjZxWlNgKCRfSHVIM3BkPEVuY0pfQzdmMUBYV3FiR3U+RHU9 OHVocGpKKQp6dk40YWdIPGkzVXJNWWdXeUs8ZXlOMVZxK3AydGJBIUc1QzNQ TyFtJHF8SHZWI0QkfkpPc3Y7ZnRrX3F2LUNlUVgKelQqY0MlJEozOz48Nl9M JHQ8S3I4KSF3fHJAbz5jUGFtNFgqK35taWBeS3tHbGN8eGg8TmROITwwZCFK TVF2ZzhiCnoqayU5IzAwQ2w0TT8/VUsxc3pCTDAwMFNhTkxoMEwwMUZjVTAx RmNWMEdnWl8wMDAwN2JWKkdgMmlwZjM0PFJPZwp6KHA3MnowMDU2a0xfdCYt KTF7MlozY15xVDFtREVvZHk2SVp1Q1cmczFWIWBeNH0kZ29lPygxOEBiMkRi KmoqdzEKeiU0TShwOyZadz85WmFLQXhvKng7Q09YfTw4ZnpqcUtSdl4ya0Yx c3B5bVlITWpFMm03SGx8YX5lbUNOd0c4KGk/Cno4SSNgYChraUJyRWJofShR bjhUTDIrJH1iM0huXjdwYEs2UiNfNnpRMiQ/dXg7bFhCWUI+aGtOQEMlZz80 dlZCTQpSJGJiTDwwMDJvdlBESExrVjFtaW4wT1NBdwoKbGl0ZXJhbCAwCkhj bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3Ry YWludHMucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3RyYWludHMucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMWQyYTA2MWM3OTQ4MTY4ZDdiMWMy NDc0ZDc2OWIzMTcwOWYxY2YKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQw Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVhA RjBORTA4e1ZZMm5oSGNeZU1hVSVqYGQKemFJJCMrSHVFS0N7cEtFWktZbj5o KCthSU1IXk1qR2pjczN9ZjlDcXl0JmZ2eDdBVCopeHZeYEw7aGZ7SGlfaVA0 Cnp4Z0slJlY/cTY1XzRjKjs4fUclO0pNTVk8U0xNX19fTTRCaTl7RV4hPFlV cFgmbjFnYWA3UGdGd0VrZFMhKCNQPAp6Tm4mQE45T3FpSyhpJihuVkBaJS1G b1ZPaDgpLWxlWE1zbSNGXzg4RVc0RHZwYzBmamlyO0I1ViNPMzZLMXNuIU8K emhSVmZ9NWpTc0dQSD9mPHh1ZGN8dkJvWTwmNWNiPXVUR0I5djE4N0o0SUkr aXQ1P2pobjhGe1RzQ1pJV1JhZCRECnpnMSpLOVclY3UyTnNEKGhFZlZUIyp3 bSNwWXc7RDA0KzBFKHVRRT9zYFo2KlpYb3FUdlllWSMoVm85bzFhIzFSZgp6 VmxYbD1HfCk5UChsc3kpRioyfCtGfTUtPihLYXgoR0JCezFzVmF3fUF2WnJJ R3AhUCQhTjN4JTBpQGM+enptfHsKVCliITliS24pQ0B1NnsxLW9EIU08PTRP XmsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvY3NzL2RvbWFpbi1jb25zdHJhaW50cy5j c3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL2Nzcy9kb21haW4tY29u c3RyYWludHMuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjQ2OTFjNjAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL2Nzcy9kb21haW4tY29uc3RyYWludHMuY3NzCkBAIC0w LDAgKzEsMjMgQEAKKy5pY29uLWNvbGwtZG9tYWluLWNvbnN0cmFpbnRzIHsK KyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLSVz LnN0YXRpYycgJSBub2RlX3R5cGUsIGZpbGVuYW1lPSdpbWcvY29sbC1kb21h aW4tY29uc3RyYWludHMucG5nJyApfX0nKSAhaW1wb3J0YW50OworICBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBhbGlnbi1jb250ZW50OiBj ZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDog MS4zZW07Cit9CisKKy5pY29uLWNoZWNrLWJhZCwgLmljb24tZG9tYWluLWNv bnN0cmFpbnRzLWJhZCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgne3sg dXJsX2ZvcignTk9ERS0lcy5zdGF0aWMnICUgbm9kZV90eXBlLCBmaWxlbmFt ZT0naW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQucG5nJyApfX0nKSAhaW1w b3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBh bGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRk bGU7CisgIGhlaWdodDogMS4zZW07Cit9CisKKy5pY29uLWNoZWNrLCAuaWNv bi1kb21haW4tY29uc3RyYWludHMgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1 cmwoJ3t7IHVybF9mb3IoJ05PREUtJXMuc3RhdGljJyAlIG5vZGVfdHlwZSwg ZmlsZW5hbWU9J2ltZy9kb21haW4tY29uc3RyYWludHMucG5nJyApfX0nKSAh aW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owor ICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBt aWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9qcy9kb21haW4tY29uc3RyYWludHMuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL2pzL2RvbWFpbi1jb25zdHJhaW50cy5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDRjMTA3Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9kb21h aW4tY29uc3RyYWludHMuanMKQEAgLTAsMCArMSwxNDIgQEAKKy8vIERvbWFp biBDb25zdHJhaW50IE1vZHVsZTogQ29sbGVjdGlvbiBhbmQgTm9kZQorZGVm aW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywg J2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitm dW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5 KSB7CisKKyAgLy8gRGVmaW5lIERvbWFpbiBDb25zdHJhaW50IENvbGxlY3Rp b24gTm9kZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4t Y29uc3RyYWludHMnXSkgeworICAgIHZhciBkb21haW5fY29uc3RyYWludHMg PSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluLWNvbnN0cmFp bnRzJ10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0 ZW5kKHsKKyAgICAgICAgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycsCisg ICAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRzJykgfX0n LAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4tY29uc3RyYWludHMnLAor ICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXQorICAg ICAgfSk7CisgIH07CisKKyAgLy8gRG9tYWluIENvbnN0cmFpbnQgTm9kZQor ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluLWNvbnN0cmFpbnRzJ10p IHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2RvbWFpbi1jb25zdHJh aW50cyddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIHR5cGU6 ICdkb21haW4tY29uc3RyYWludHMnLAorICAgICAgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludHMnKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5 cGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50cycsCisgICAgICBoYXNTUUw6 IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFyZW50 X3R5cGU6IFsnZG9tYWluJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsK KyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1l bnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAg ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVl OworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAg ICBuYW1lOiAnY3JlYXRlX2RvbWFpbl9vbl9jb2xsJywgbm9kZTogJ2NvbGwt ZG9tYWluLWNvbnN0cmFpbnRzJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA1LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25z dHJhaW50Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi1kb21haW4tY29uc3RyYWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3Jl YXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNy ZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9k b21haW4tY29uc3RyYWludHMnLCBub2RlOiAnZG9tYWluLWNvbnN0cmFpbnRz JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0 JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVz JywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA1 LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25zdHJhaW50Li4uJykgfX0nLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1kb21haW4tY29uc3Ry YWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9 LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7 CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9kb21haW4tY29uc3RyYWludHMn LCBub2RlOiAnZG9tYWluJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA1LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25zdHJh aW50Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1kb21haW4tY29uc3RyYWludHMnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl JywgY2hlY2s6IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnCisgICAgICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0sCisgICAg ICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxk RHJvcCwKKyAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2Rl bC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgIG5h bWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKKyAg ICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgICAgIGNv bnNyYzogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbm5vaW5oZXJpdDogdW5k ZWZpbmVkLAorICAgICAgICAgIGNvbnZhbGlkYXRlZDogdHJ1ZQorICAgICAg ICB9LAorICAgICAgICAvLyBEb21haW4gQ29uc3RyYWludCBTY2hlbWEKKyAg ICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVs OiAne3sgXygnTmFtZScpIH19JywgdHlwZTondGV4dCcsIGNlbGw6J3N0cmlu ZycsCisgICAgICAgICAgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JyAsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ3t7IF8oJ0NvbW1lbnQn KSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsOgorICAgICAgICAgICdz dHJpbmcnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwgbWluX3ZlcnNpb246IDkwNTAwLAorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2NvbnNyYycsIGxhYmVsOiAne3sgXygnQ2hlY2snKSB9fScsIHR5 cGU6ICdtdWx0aWxpbmUnLCBjZWw6CisgICAgICAgICAgJ3N0cmluZycsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgbW9kZTogWydwcm9wZXJ0 aWVzJywKKyAgICAgICAgICAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDogJ3t7 IF8oJ05vIEluaGVyaXQnKSB9fScsIHR5cGU6CisgICAgICAgICAgJ3N3aXRj aCcsIGNlbGw6ICdib29sZWFuJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9u JykgfX0nLCBtb2RlOgorICAgICAgICAgIFsncHJvcGVydGllcycsICdjcmVh dGUnLCAnZWRpdCddLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAg ICAgIHZpc2libGU6IGZhbHNlCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnY29udmFsaWRhdGVkJywgbGFiZWw6ICJ7eyBfKCJWYWxpZGF0ZT8iKSB9 fSIsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOgorICAgICAgICAgICdib29sZWFu JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtaW5fdmVyc2lv bjogOTAyMDAsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgdmFy IHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKKyAgICAgICAgICAg IGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKSB7IHJldHVybiB0cnVlOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZihtLmdldCgnY29u dmFsaWRhdGVkJykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0sCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScs ICdlZGl0J10KKyAgICAgICAgfV0sCisgICAgICAgIC8vIENsaWVudCBTaWRl IFZhbGlkYXRpb24KKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgZXJybXNn OworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25h bWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnbmFt ZSddID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7Cisg ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1lJ107Cisg ICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ2NvbnNyYycpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2NvbnNyYycp KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICBlcnJbJ2NvbnNyYyddID0gJ3t7IF8oJ0NoZWNrIGNhbiBub3QgYmUg ZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8 IGVyclsnY29uc3JjJ107CisgICAgICAgICAgfQorCisgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAgICAgICBp ZiAoXy5zaXplKGVycikpIHsKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcign b24tc3RhdHVzJywge21zZzogZXJybXNnfSk7CisgICAgICAgICAgICByZXR1 cm4gZXJybXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBu dWxsOworCisgICAgICAgIH0sCisgICAgICAgIGlzRGlzYWJsZWQ6IGZ1bmN0 aW9uKG0peworICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAg ICAgICB2YXIgc2VydmVyID0gdGhpcy5ub2RlX2luZm8uc2VydmVyOworICAg ICAgICAgICAgaWYgKHNlcnZlci52ZXJzaW9uIDwgOTAyMDApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgIH0pLAorICB9KTsKKworICB9CisKKyAgcmV0dXJu IHBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ107Cit9KTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3Rl bXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2NyZWF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmJlOTQzZDIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAg KzEsMyBAQAoreyUgaWYgZGF0YSBhbmQgc2NoZW1hIGFuZCBkb21haW4gJX0K K0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoc2NoZW1hLCBkb21haW4p IH19CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX0gQ0hFQ0sgKHt7IGRhdGEuY29uc3JjIH19KTt7JSBlbmRpZiAt JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3Fs LzkuMV9wbHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjI2MGMzYzAKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90 ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyUgaWYgZGF0YSAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLm5zcG5hbWUsIGRhdGEucmVs bmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50 KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZ2V0X2RvbWFp bi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9nZXRfZG9tYWluLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xMDQwYzBlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwK QEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMgZG9t YWluLCBibi5uc3BuYW1lIGFzIHNjaGVtYQorRlJPTQorICAgIHBnX3R5cGUg ZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBu YW1lc3BhY2UKK1dIRVJFCisgICAgZC5vaWQgPSB7e2RvaWR9fTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFp bnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVz L2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjU5ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3Fs CkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgb2lkLCBjb25uYW1lIGFz IG5hbWUKK0ZST00KKyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNv bnR5cGlkID0ge3tkb2lkfX06Om9pZAorICAgIEFORCBjb25uYW1lPXt7IG5h bWV8cXRMaXRlcmFsIH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDNm MDExCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwx NCBAQAorU0VMRUNUCisgICAgYy5vaWQsIGNvbm5hbWUgQVMgbmFtZSwgdHlw bmFtZSBBUyByZWxuYW1lLCBuc3BuYW1lLAorICAgIHJlZ2V4cF9yZXBsYWNl KHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVDSyBc XCgoLiopXFwpLionLCBFJ1xcMScpIEFTIGNvbnNyYworRlJPTQorICAgIHBn X2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0Lm9pZD1j b250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBubC5vaWQ9 dHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGNvbnR5cGUgPSAnYycgQU5EIGNv bnR5cGlkID0gIHt7ZG9pZH19OjpvaWQKK3slIGlmIGNvaWQgJX0KKyAgICBB TkQgYy5vaWQgPSB7eyBjb2lkIH19Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvdXBk YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0 cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9w bHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjk5YmE2YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAs MCArMSwzIEBACit7JSBpZiBkYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1l KSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChv X2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOTkzZjcKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjJfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK3slIGlmIGRh dGEgYW5kIHNjaGVtYSBhbmQgZG9tYWluICV9CitBTFRFUiBET01BSU4ge3sg Y29ubnxxdElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIEFERCBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IENIRUNLICh7 eyBkYXRhLmNvbnNyYyB9fSl7JSBpZiBub3QgZGF0YS5jb252YWxpZGF0ZWQg JX0KKworICAgIE5PVCBWQUxJRHslIGVuZGlmICV9O3slIGlmIGRhdGEuZGVz Y3JpcHRpb24gJX0KKworCitDT01NRU5UIE9OIENPTlNUUkFJTlQge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX0gT04gRE9NQUlOIHt7IGNvbm58cXRJ ZGVudChzY2hlbWEsIGRvbWFpbikgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNj cmlwdGlvbiB9fSc7eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApAQCAt MCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5hbWUpIH19Cisg ICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4t Y29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X2RvbWFp bi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0 MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsCkBAIC0wLDAgKzEs OCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIGRvbWFpbiwgYm4ubnNw bmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAg ICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitX SEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dl dF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsx LDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29ubmFtZSBhcyBuYW1lCitGUk9N CisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb250eXBpZCA9IHt7 ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFtZT17eyBuYW1lfHF0TGl0ZXJh bCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv c3FsLzkuMl9wbHVzL2dldF90eXBlX2NhdGVnb3J5LnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9k b21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF90eXBlX2NhdGVn b3J5LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z ZTNiMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X3R5cGVfY2F0ZWdvcnkuc3FsCkBA IC0wLDAgKzEsNSBAQAorU0VMRUNUCisgICAgdHlwY2F0ZWdvcnkKK0ZST00K KyAgICBwZ190eXBlCitXSEVSRSB0eXBuYW1lID0ge3tkYXRhdHlwZX19Owpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGQ4YjM0Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMv cHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwxNyBAQAorU0VMRUNUCisgICAg Yy5vaWQsIGNvbm5hbWUgQVMgbmFtZSwgdHlwbmFtZSBBUyByZWxuYW1lLCBu c3BuYW1lLCBkZXNjcmlwdGlvbiwKKyAgICByZWdleHBfcmVwbGFjZShwZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4q KVxcKS4qJywgRSdcXDEnKSBBUyBjb25zcmMsCisgICAgY29ubm9pbmhlcml0 LCBjb252YWxpZGF0ZWQsIGNvbnZhbGlkYXRlZCBBUyBjb252YWxpZGF0ZWRf cAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5 cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFj ZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQor V0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7e2Rv aWR9fTo6b2lkCit7JSBpZiBjb2lkICV9CisgICAgQU5EIGMub2lkID0ge3sg Y29pZCB9fQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOGViNmUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRz L3NxbC85LjJfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sl IHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAl fQoreyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1l KSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChv X2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5jb252YWxpZGF0ZWQgJX0KKwor CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1l LCBvX2RhdGEucmVsbmFtZSkgfX0KKyAgICBWQUxJREFURSBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChuYW1lKSB9fTt7JSBlbmRpZiAtJX17JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBDT05TVFJBSU5U IHt7IGNvbm58cXRJZGVudChuYW1lKSB9fSBPTiBET01BSU4ge3sgY29ubnxx dElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEucmVsbmFtZSkgfX0KKyAg ICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7eyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2ltZy9j b2xsLWRvbWFpbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvY29sbC1kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjU1NjIxNTI4YTFkYmE0OTI4NTM4ZmU1NTU3YjliOTg4ZWQ3OGQ2YWIKR0lU IGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ2Mgp6Y21lQVNATj8ob2xIeWB1VkJx IWlhMHZwXjB3QiE2Mz93eWxgR2JLfVU0VCFCRTBCSmVvcWZXPTtnRnswUEQ4 X28KemkmcE5fKEspQjdgRlBpJTJpeGBAdjlMVSh0TlVRKiFLMWN6WE94dWdn b0dUXygjcEB6ZjRKdyEhekhWKWAzRjdUCnpkLVVtfUh9YGlSSWlqY2NAV3Ej PiZwdGtSYFNzekc1NFV6NnpXNG1nP01Mc2daOWpiYj5FfnkhelRTQjlgUmUx KAp6alMxUzk5KF85aEBZQzRgQTVZKV5fXj5ASjMrTXZJa3w0aWUyOFUtaSh0 c1MhMCp9YUlBbmdJaFpZUSh0ZlEpdWUKejdzbjhaJWJ8VUAjaE1nRVNVdnM0 d0tvU3hPPn57Tz0tWXEkOF8hciktXmUlNC1sNmYtSm94MSU4fUZJVng+RkNX CnpQTVZ3bHVRR2JrUDFiY1N3VlYwZF8/UFpiWlZpcyVIZVlUV3lVKiRPdllw JHVUYzNRTGJEPzJ0ck9uRHVoWmE+Zgp6PTNkX3soekVSOXh0KDxuM1VzQkk0 U05DP1khckJXPG0yYG4+eURSeWckdW9FOFF4fWJvMUQwcXc7dCN1KWVfZjsK emw5YUBmUklCOG9SM09EKldNRjhaWWlPaXZVPklVI1V9YSkjV24hWGpVfXxN eFVAPW93NG47JDVlb0FJcUJ9OVhQCmVDMEdNVXdVdlB4TThtMStwPSpFfDco OEE1VC1HQHlHeXdvUkNDMkxqCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9pbWcv ZG9tYWluLXNtLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9kb21haW4tc20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1 MjFjZGRlYWFhZjBlZTRlM2M2MGU5NDgwNzhkNzBlMTdlMDY4OTMKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDQwMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR2JLfVQ3WFo4RTBEZXU5ZXUqVjtnRnswS2BwSWcK emM2S2ByNEllSUFjfVEzSHhWYD0zeStAeHVkVUpwR2t0MkZ+UG9JNSFeNzhB JENtKExASmJjWVI9OzRibV9udj5iCnp7cGtJKj9UN0QjZ3lpU3ZLWVI3e19T NFRkb194T2dfO1hgfF9ON09rJk9pS2dfUUEpfl9kbExvODV7dyRpTG9UZQp6 RlBPcE0qXk0rSGhxSiZWdktVQnZmVSg9alkmIyQkJDx4SSNNQjtNcWBJQUJw MjBSVDl3VVhrYUwoMVIocE9uP2MKej4zODwrZT5LYU4yeyUwSmRAc01iWSQr MTNaJiVaPCUhUCsqU051KyMoe1JyPXtfS3hVaHN3SGRJRDBRV1RDQnZECnop Xmt5O0BndWBFI1JBQyNsYEpjbmVsUzByeGtLTjdiMUI+SDU2Z1gpMCZQPCph ZzhXUk5pMGRWTi1qelRRVmQyMAp6aDZjS1pNIUUpdUF3fnZQQ2RPN0tDZld3 M1J0NSRaR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhKSXlkb1NHaUcKUTJC PzktKTc4JnFvbGA7KzAzX3EzZ2E3fmwKCmxpdGVyYWwgMApIY21WP2QwMDAw MQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0 aWMvaW1nL2RvbWFpbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJj YTkyOTMyNTg1NGI4ZjM0Nzg3NDI1ZTgwOTRkMDhjNzU5ODNiYwpHSVQgYmlu YXJ5IHBhdGNoCmxpdGVyYWwgNDI0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw dnBeMHdCITYzP3d5bGBHYkt9UEptQntFMEJKZW9xZlc9O2dGezBQRDheNwp6 aSZzNmBiTDhveEh9YGlSZEhVPypsYjJyfkpeNlRoPWl4XiR6VFNXUzw/Zj5v SCtDSFVhXn1wVmZgYVd2TXQ3Zm0KengmOEY+amZkfkFZKEhGYG1VaVJHPVc5 PHNVd1FCQEtSPkBRTEhvKyVQWnVBM0l7KXl+KiQxRF9Kb3RGKHt6dkh0Cnpv JXVsZjcpeWZ1ZipCbTEtQURzK0kxNC0/aS1FS1U3YHZVIXdnV1BYSnpYM19C cmNicGU9WEZjQW1TRk5lQzNxJgp6bCFaKyhSc1lOMTImLU5Xe1AqXiM8cng4 Ml8yLStpaSZTcWZHZ09gSmNqQDswMUBIVEh7JiY3I3Y/an1JKT1KNm0KemVg fmhwcFpuNz9XQXwleiF9VDZwZj56MElqYlpyUzVJQ0QqMjc1Kl9iQW8pcjh0 I1ZnNEEqTHopO3hjNEpLcTAzCnpYWEN9emQpWXdpUlpDbldOPlVPX1FtdkFV UWhea01rJTZJc3VBen54Zm5rVnxmdDg3fG01R1ZBZnZKXiZmeUdRIQpxSVRR YEtgNi0hY2xASlhFbVM3RGEpbTg+KDVEbGxNaHBxdT9WRE5QSGI2TXc8Jjsk Vk9SPUZxdQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9qcy9k b21haW5zLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9qcy9kb21haW5zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjIwYWNkZTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL2pzL2RvbWFp bnMuanMKQEAgLTAsMCArMSwzNjIgQEAKKy8vIERvbWFpbiBNb2R1bGU6IENv bGxlY3Rpb24gYW5kIE5vZGUuCitkZWZpbmUoCisgICAgICAgIFsnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1p bicsCisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5Jywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisKKyAgLy8g RGVmaW5lIERvbWFpbiBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10pIHsKKyAgICB2YXIgZG9tYWlucyA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4nXSA9CisgICAg ICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAg ICBub2RlOiAnZG9tYWluJywKKyAgICAgICAgbGFiZWw6ICd7eyBfKCdEb21h aW5zJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4nLAorICAg ICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnZGVzY3JpcHRpb24n XQorICAgICAgfSk7CisgIH07CisKKyAgLy8gU2VjdXJpdHkgTW9kZWwKKyAg dmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1vZGVsID0g cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZh dWx0czogeworICAgICAgcHJvdmlkZXI6IG51bGwsCisgICAgICBzZWN1cml0 eV9sYWJlbDogbnVsbAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAg aWQ6ICdwcm92aWRlcicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXInKSB9fScs CisgICAgICB0eXBlOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVh ZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICB9LHsKKyAgICAg IGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5 IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJsZTog dHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisg ICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFy IGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGw7CisKKyAgICAg IGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdzZWN1cml0eV9sYWJlbCcp KSB8fAorICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnc2VjdXJpdHlfbGFi ZWwnKSkgfHwKKyAgICAgICAgU3RyaW5nKHRoaXMuZ2V0KCdzZWN1cml0eV9s YWJlbCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Cisg ICAgICAgICAgICBlcnJtc2cgPSAgJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IHRo ZSB2YWx1ZSBmb3IgYWxsIHRoZSBzZWN1cml0eSBwcm92aWRlcnMuJyl9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZWN1cml0eV9s YWJlbCcsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gZXJybXNnOwor ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwudW5zZXQoJ3NlY3VyaXR5X2xhYmVsJyk7CisgICAgICAgICAgfQorICAg ICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsKKworICAvLyBDb25zdHJh aW50IE1vZGVsCisgIHZhciBDb25zdHJhaW50TW9kZWwgPSBwZ0FkbWluLkJy b3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGlkQXR0cmlidXRlOiAn Y29ub2lkJywKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJn cykgeworICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDAp OworICAgICAgaWYgKCFpc05ldykgeworICAgICAgICB0aGlzLmNvbnZhbGlk YXRlZF9kZWZhdWx0ID0gdGhpcy5nZXQoJ2NvbnZhbGlkYXRlZCcpCisgICAg ICB9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5 cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0s CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIGNvbm9pZDogdW5kZWZpbmVkLAor ICAgICAgY29ubmFtZTogdW5kZWZpbmVkLAorICAgICAgY29uc3JjOiB1bmRl ZmluZWQsCisgICAgICBjb252YWxpZGF0ZWQ6IHRydWUKKyAgICB9LAorICAg IGNvbnZhbGlkYXRlZF9kZWZhdWx0OiB0cnVlLAorICAgIHNjaGVtYTogW3sK KyAgICAgIGlkOiAnY29ub2lkJywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3Ry aW5nJywgdmlzaWJsZTogZmFsc2UKKyAgICB9LHsKKyAgICAgIGlkOiAnY29u bmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgdHlwZTogJ3RleHQn LCBjZWxsOiAnc3RyaW5nJywKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAn d2lkdGhfcGVyY2VudF80MCcsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChtLmlzTmV3KSkgeyBy ZXR1cm4gdHJ1ZTsgfQorICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAg ICAgICAgIHZhciBzZXJ2ZXIgPSB0aGlzLmdldCgnbm9kZV9pbmZvJykuc2Vy dmVyOworICAgICAgICAgIGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKSB7 IHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfSx7CisgICAgICBpZDog J2NvbnNyYycsIGxhYmVsOiAne3sgXygnQ2hlY2snKSB9fScsIHR5cGU6ICdt dWx0aWxpbmUnLAorICAgICAgY2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLlRl eHRhcmVhQ2VsbCwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAor ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzYwJywg ZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIF8uaXNV bmRlZmluZWQobS5pc05ldykgPyB0cnVlIDogbS5pc05ldygpOworICAgICAg fQorICAgIH0seworICAgICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDog J3t7IF8oJ1ZhbGlkYXRlPycpIH19JywgdHlwZTogJ3N3aXRjaCcsIGNlbGw6 CisgICAgICAnYm9vbGVhbicsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicp IH19JywKKyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAg IHZhciBzZXJ2ZXIgPSB0aGlzLmdldCgnbm9kZV9pbmZvJykuc2VydmVyOwor ICAgICAgICBpZiAoc2VydmVyLnZlcnNpb24gPCA5MDIwMCkgeyByZXR1cm4g ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQo bS5pc05ldykpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgaWYgKCFtLmlz TmV3KCkpIHsKKyAgICAgICAgICBpZihtLmdldCgnY29udmFsaWRhdGVkJykg JiYgbS5jb252YWxpZGF0ZWRfZGVmYXVsdCkgeworICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0K KyAgICB9XSwKKyAgICB0b0pTT046IEJhY2tib25lLk1vZGVsLnByb3RvdHlw ZS50b0pTT04sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAg cmV0dXJuIG51bGw7CisgICAgfQorICB9KTsKKworICAvLyBEb21haW4gTm9k ZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ10pIHsKKyAgICBw Z0FkbWluLkJyb3dzZXIuTm9kZXNbJ2RvbWFpbiddID0gcGdCcm93c2VyLk5v ZGUuZXh0ZW5kKHsKKyAgICAgIHR5cGU6ICdkb21haW4nLAorICAgICAgbGFi ZWw6ICd7eyBfKCdEb21haW4nKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5 cGU6ICdjb2xsLWRvbWFpbicsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAg ICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFyZW50X3R5cGU6IFsnc2No ZW1hJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8g QXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCisgICAgICAg IGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOwor CisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAg IHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX2RvbWFpbl9vbl9jb2xsJywgbm9kZTogJ2NvbGwtZG9tYWluJywgbW9k dWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJl bDogJ3t7IF8oJ0RvbWFpbi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tZG9tYWluJywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9t YWluJywgbm9kZTogJ2RvbWFpbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn c2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4n KSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFp bicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisg ICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX2RvbWFpbicsIG5vZGU6ICdzY2hlbWEn LCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3Qn LCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMn LAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQs IGxhYmVsOiAne3sgXygnRG9tYWluLi4uJykgfX0nLAorICAgICAgICAgIGlj b246ICd3Y1RhYkljb24gaWNvbi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAn Y3JlYXRlJywgY2hlY2s6IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdj YW5DcmVhdGUnCisgICAgICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0s CisgICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNh bkNoaWxkRHJvcCwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIu Tm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAgIC8vIERvbWFp biBOb2RlIE1vZGVsCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rp b24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5z aXplKGF0dHJzKSA9PT0gMCk7CisgICAgICAgICAgaWYgKGlzTmV3KSB7Cisg ICAgICAgICAgICAvLyBTZXQgU2VsZWN0ZWQgU2NoZW1hCisgICAgICAgICAg ICBzY2hlbWEgPSBhcmdzLm5vZGVfaW5mby5zY2hlbWEubGFiZWwKKyAgICAg ICAgICAgIHRoaXMuc2V0KHsnYmFzZW5zcCc6IHNjaGVtYX0sIHtzaWxlbnQ6 IHRydWV9KTsKKworICAgICAgICAgICAgLy8gU2V0IEN1cnJlbnQgVXNlcgor ICAgICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlcklu Zm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKKyAgICAgICAg ICAgIHRoaXMuc2V0KHsnb3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVu dDogdHJ1ZX0pOworICAgICAgICAgIH0KKyAgICAgICAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOworICAgICAgICB9LAorICAgICAgICBkZWZhdWx0 czogeworICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBv aWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvd25lcjogdW5kZWZpbmVkLAor ICAgICAgICAgIGJhc2Vuc3A6IHVuZGVmaW5lZCwKKyAgICAgICAgICBkZXNj cmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgICAgIGJhc2V0eXBlOiB1bmRl ZmluZWQsCisgICAgICAgICAgdHlwbGVuOiB1bmRlZmluZWQsCisgICAgICAg ICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgdHlwZGVmYXVs dDogdW5kZWZpbmVkLAorICAgICAgICAgIHR5cG5vdG51bGw6IHVuZGVmaW5l ZCwKKyAgICAgICAgICBzeXNkb21haW46IHVuZGVmaW5lZCwKKyAgICAgICAg ICBjb2xsbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbnN0cmFpbnRz OiBbXSwKKyAgICAgICAgICBzZWNsYWJlbHM6IFtdCisgICAgICAgIH0sCisg ICAgICAgIHR5cGVfb3B0aW9uczogdW5kZWZpbmVkLAorICAgICAgICAvLyBE b21haW4gU2NoZW1hCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBp ZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdz dHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9w ZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdvaWQnLCBsYWJlbDone3sgXygnT0lEJykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBb J3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293 bmVyJywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5n JywgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAor ICAgICAgICAgIG5vZGU6ICdyb2xlJywgIHR5cGU6ICd0ZXh0JywgbW9kZTog WydlZGl0JywgJ2NyZWF0ZScsICdwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdiYXNlbnNwJywgbGFiZWw6J3t7IF8oJ1NjaGVt YScpIH19JywgY2VsbDogJ25vZGUtbGlzdC1ieS1uYW1lJywKKyAgICAgICAg ICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgY2FjaGVfbGV2ZWw6 ICdkYXRhYmFzZScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgbm9kZTog J3NjaGVtYScsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ3N5c2RvbWFpbicsIGxhYmVsOid7eyBfKCdT eXN0ZW0gZG9tYWluPycpIH19JywgY2VsbDogJ2Jvb2xlYW4nLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAg ICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAnb25UZXh0JzogJ1ll cycsICdvZmZUZXh0JzogJ05vJywKKyAgICAgICAgICAgICdvbkNvbG9yJzog J3N1Y2Nlc3MnLCAnb2ZmQ29sb3InOiAncHJpbWFyeScsCisgICAgICAgICAg ICAnc2l6ZSc6ICdzbWFsbCcKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29t bWVudCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTog J211bHRpbGluZScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdiYXNl dHlwZScsIGxhYmVsOid7eyBfKCdCYXNlIHR5cGUnKSB9fScsIGNlbGw6ICdz dHJpbmcnLCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTpbJ3Byb3BlcnRpZXMnLCAnY3JlYXRl JywgJ2VkaXQnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1 cmw6ICdnZXRfdHlwZXMnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlv bihtKSB7IHJldHVybiAhbS5pc05ldygpOyB9LCBmaXJzdF9lbXB0eTogdHJ1 ZSwKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQpeworICAgICAg ICAgICAgdGhpcy5tb2RlbC50eXBlX29wdGlvbnMgPSAgZDsKKyAgICAgICAg ICAgIHJldHVybiBkOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICd0eXBsZW4nLCBsYWJlbDone3sgXygnTGVuZ3RoJykgfX0n LCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgZGVwczogWydiYXNldHlw ZSddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAvLyBXZSB3aWxsIHN0b3JlIHR5cGUgZnJvbSBzZWxlY3RlZCBm cm9tIGNvbWJvYm94CisgICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgewor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHZhciBvZl90eXBlID0gbS5nZXQoJ2Jhc2V0eXBlJyk7Cisg ICAgICAgICAgICBpZihtLnR5cGVfb3B0aW9ucykgeworICAgICAgICAgICAg ICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIHR5cGVzCisgICAgICAgICAg ICAgIF8uZWFjaChtLnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykgeworICAg ICAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNv bWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICAgIGlm ICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAgICAgICAgICAgICAgICAg ICAvLyBpZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQor ICAgICAgICAgICAgICAgICAgICBpZihvLmxlbmd0aCkKKyAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0aGUg dmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICAgICAgbS5zZXQo J2lzX3RsZW5ndGgnLCB0cnVlLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtz aWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgICBtLnNldCgn bWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAh bS5nZXQoJ2lzX3RsZW5ndGgnKTsKKyAgICAgICAgICB9CisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAncHJlY2lzaW9uJywgbGFiZWw6J3t7IF8oJ1By ZWNpc2lvbicpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGRl cHM6IFsnYmFzZXR5cGUnXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgLy8gV2Ugd2lsbCBzdG9yZSB0eXBlIGZy b20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAgICAgICAgICAgaWYgKCFt LmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdi YXNldHlwZScpOworICAgICAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsK KyAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBl cworICAgICAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMsIGZ1bmN0 aW9uKG8pIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2Vs ZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGluIG9wdGlvbnMKKyAgICAg ICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52YWx1ZSApIHsKKyAgICAg ICAgICAgICAgICAgICAgLy8gaWYgcHJlY2Vzc2lvbiBpcyBhbGxvd2VkIGZv ciBzZWxlY3RlZCB0eXBlCisgICAgICAgICAgICAgICAgICAgIGlmKG8ucHJl Y2lzaW9uKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZXMgaW4gbW9kZWwKKyAgICAgICAg ICAgICAgICAgICAgICBtLnNldCgnaXNfcHJlY2lzaW9uJywgdHJ1ZSwge3Np bGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICAgIG0uc2V0KCdt aW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICAgICAgbS5zZXQoJ21heF92YWwnLCBvLm1heF92YWwsIHtz aWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICByZXR1cm4gIW0uZ2V0KCdpc19wcmVjaXNpb24nKTsK KyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlw ZGVmYXVsdCcsIGxhYmVsOid7eyBfKCdEZWZhdWx0JykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAne3sg XygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBwbGFjZWhvbGRlcjog IkVudGVyIGFuIGV4cHJlc3Npb24gb3IgYSB2YWx1ZS4iCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAndHlwbm90bnVsbCcsIGxhYmVsOid7eyBfKCdO b3QgTnVsbD8nKSB9fScsIGNlbGw6ICdib29sZWFuJywKKyAgICAgICAgICB0 eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0n LAorICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAgICdvblRleHQn OiAnWWVzJywgJ29mZlRleHQnOiAnTm8nLAorICAgICAgICAgICAgJ29uQ29s b3InOiAnc3VjY2VzcycsICdvZmZDb2xvcic6ICdwcmltYXJ5JywKKyAgICAg ICAgICAgICdzaXplJzogJ3NtYWxsJworICAgICAgICAgIH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdjb2xsbmFtZScsIGxhYmVsOid7eyBfKCdD b2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9k ZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1cmw6ICdnZXRfY29sbGF0 aW9ucycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBy ZXR1cm4gIW0uaXNOZXcoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnY29uc3RyYWludHMnLCBsYWJlbDone3sgXygnQ29u c3RyYWludHMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICd7eyBfKCdDb25zdHJhaW50cycp IH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1v ZGVsOiBDb25zdHJhaW50TW9kZWwsIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRl OiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjb2x1bW5zOiBb J2Nvbm5hbWUnLCdjb25zcmMnLCAnY29udmFsaWRhdGVkJ10KKyAgICAgICAg IH0seworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBf KCdTZWN1cml0eSBMYWJlbHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6IFNl Y3VyaXR5TW9kZWwsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBn cm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBjYW5B ZGQ6IHRydWUsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0 ZTogdHJ1ZSwKKyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xs ZWN0aW9uJywgdW5pcXVlQ29sIDogWydwcm92aWRlciddCisgICAgICAgIH0K KyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgLy8g Q2xpZW50IFNpZGUgVmFsaWRhdGlvbgorICAgICAgICB7CisgICAgICAgICAg dmFyIGVyciA9IHt9LAorICAgICAgICAgICAgICBlcnJtc2csCisgICAgICAg ICAgICAgIHNlY2xhYmVscyA9IHRoaXMuZ2V0KCdzZWNsYWJlbHMnKTsKKwor ICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1lJykp IHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ25hbWUnXSA9 ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAg ICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnbmFtZSddOworICAgICAg ICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0 KCdiYXNldHlwZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Jhc2V0eXBlJykp LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAg ICAgIGVyclsnYmFzZXR5cGUnXSA9ICd7eyBfKCdCYXNlIFR5cGUgY2FuIG5v dCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJt c2cgfHwgZXJyWydiYXNldHlwZSddOworICAgICAgICAgIH0KKworICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIpOworCisgICAg ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0pLAorICAg ICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg eworICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgIGlmIChkYXRhICYmIGRhdGEu Y2hlY2sgPT0gZmFsc2UpCisgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg ICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YTsKKyAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgd2hpbGUgKGkpIHsKKyAgICAg ICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNy ZWF0ZSBkb21haW4KKyAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgICAgICAgIGlmICgnY29sbC1kb21haW4nID09IGQuX3R5cGUpIHsK KyAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBj YXRhbG9nCisgICAgICAgICAgICBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/ IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgIHByZXZfZCA9IHBy ZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7CisgICAgICAgICAg ICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgeworICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9CisgICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJl bnQoaSkgOiBudWxsOworICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShp KSA6IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgLy8gYnkgZGVmYXVsdCB3 ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQorICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBpc0Rpc2FibGVkOiBmdW5j dGlvbihtKXsKKyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAg ICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKKyAg ICAgICAgICAgIGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICB9CisgIH0pOworCisgIH0KKworICByZXR1cm4gcGdCcm93c2Vy Lk5vZGVzWydkb21haW4nXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiMGI3NQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzMCBAQAor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFz IFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9CitDUkVBVEUgRE9NQUlOIHt7 IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAg ICBBUyB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuYmFzZXR5cGUpIH19eyUg aWYgZGF0YS50eXBsZW4gJX0oe3tkYXRhLnR5cGxlbn19eyUgaWYgZGF0YS5w cmVjaXNpb24gJX0se3tkYXRhLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUg ZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxuYW1lICV9CisKKyAgICBDT0xMQVRF IHt7IGRhdGEuY29sbG5hbWUgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlw ZGVmYXVsdCAlfQorCisgICAgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQg fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwbm90bnVsbCAlfQorCisgICAg Tk9UIE5VTEx7JSBlbmRpZiAlfXslIGlmIGRhdGEuY29uc3RyYWludHMgJX17 JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzICV9eyUgaWYgYy5jb25uYW1l IGFuZCBjLmNvbnNyYyAlfQorCisgICAgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQoYy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMgfX0peyUg ZW5kaWYgLSV9Cit7JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAtJX07CisKK3sl IGlmIGRhdGEub3duZXIgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRl bnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19IE9XTkVSIFRPIHt7IGNv bm58cXRJZGVudChkYXRhLm93bmVyKSB9fTt7JSBlbmRpZiAlfXslIGlmIGRh dGEuZGVzY3JpcHRpb24gJX0KKworCitDT01NRU5UIE9OIERPTUFJTiB7eyBj b25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAg SVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nO3slIGVuZGlmIC0lfXslIGlm IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVs cyAlfQoreyUgaWYgci5zZWN1cml0eV9sYWJlbCBhbmQgci5wcm92aWRlciAl fQorCisKK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlOJywgZGF0YS5u YW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vu c3ApIH19eyUgZW5kaWYgLSV9Cit7JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAt JX0KKworeyUgZW5kaWYgLSV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43YTEyYjUwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9z cWwvOS4xX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDE2IEBACit7JSBp ZiBzY2lkIGFuZCBkb2lkICV9CitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMg bmFtZSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlw ZSBkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5 cG5hbWVzcGFjZQorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2Np ZH19OjpvaWQKK0FORAorICAgIGQub2lkPXt7ZG9pZH19OjppbnQ7Cit7JSBl bmRpZiAlfQorCit7JSBpZiBuYW1lICV9CitEUk9QIERPTUFJTiB7eyBjb25u fHF0SWRlbnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlICV9IENB U0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85 LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29s bGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uODE5ZmRiYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9j b2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDEwIEBACitTRUxFQ1QgLS1uc3Bu YW1lLCBjb2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUp ID4gMCBBTkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgVEhFTgorICAgIGNvbmNh dChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBF TkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRpb24g YywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNwYWNl PW4ub2lkCitPUkRFUiBCWQorICAgIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9w bHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODk3ZmIyNAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku MV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCArMSwxNSBAQAor U0VMRUNUCisgICAgJ0RPTUFJTicgQVMgb2JqZWN0a2luZCwgYy5vaWQgYXMg Y29ub2lkLCBjb25uYW1lLCB0eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUs IGRlc2NyaXB0aW9uLAorICAgIHJlZ2V4cF9yZXBsYWNlKHBnX2dldF9jb25z dHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVDSyBcXCgoLiopXFwpLion LCBFJ1xcMScpIGFzIGNvbnMKK0ZST00KKyAgICBwZ19jb25zdHJhaW50IGMK K0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVzcGFjZQor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChk ZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFp bnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9ICdjJworICAg IEFORCBjb250eXBpZCA9ICB7e2RvaWR9fTo6b2lkCitPUkRFUiBCWSBjb25u YW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFf cGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi44YjVjODkxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv Z2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOCBAQAoreyUgaWYgZG9pZCAlfQor U0VMRUNUCisgICAgZC50eXBuYW1lc3BhY2UgYXMgc2NpZAorRlJPTQorICAg IHBnX3R5cGUgZAorV0hFUkUKKyAgICBkLm9pZD17eyBkb2lkIH19OjpvaWQ7 Cit7JSBlbHNlICV9CitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBuYW1lc3Bh Y2UKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGJu Lm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQorICAgIEFORCBk LnR5cG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9ub2Rl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmQz ZTViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwKQEAg LTAsMCArMSwxMyBAQAorU0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZSBh cyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIs CisgICAgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlw ZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNl dHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50 eXBuYW1lc3BhY2UKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3Nj aWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGQudHlwbmFtZTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvcHJvcGVy dGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NDJhZjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsCkBAIC0wLDAgKzEsMzUgQEAKK1NFTEVDVAorICAgIGQub2lkLCBk LnR5cG5hbWUgYXMgbmFtZSwgZC50eXBiYXNldHlwZSwgZm9ybWF0X3R5cGUo Yi5vaWQsTlVMTCkgYXMgYmFzZXR5cGUsCisgICAgcGdfZ2V0X3VzZXJieWlk KGQudHlwb3duZXIpIGFzIG93bmVyLAorICAgIGMub2lkIEFTIGNvbGxvaWQs IGZvcm1hdF90eXBlKGIub2lkLCBkLnR5cHR5cG1vZCkgQVMgZnVsbHR5cGUs CisgICAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxl bmd0aChjLmNvbGxuYW1lKSA+IDAgVEhFTgorICAgIGNvbmNhdChjbi5uc3Bu YW1lLCAnLiInLCBjLmNvbGxuYW1lLCciJykKKyAgICBFTFNFICcnIEVORCBB UyBjb2xsbmFtZSwKKyAgICBkLnR5cHR5cG1vZCwgZC50eXBub3RudWxsLCBk LnR5cGRlZmF1bHQsIGQudHlwbmRpbXMsIGQudHlwZGVsaW0sIGJuLm5zcG5h bWUgYXMgYmFzZW5zcCwKKyAgICBkZXNjcmlwdGlvbiwgKFNFTEVDVCBDT1VO VCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT1kLnR5cG5h bWUpID4gMSBBUyBkb21pc2R1cCwKKyAgICAoU0VMRUNUIENPVU5UKDEpIEZS T00gcGdfdHlwZSB0MyBXSEVSRSB0My50eXBuYW1lPWIudHlwbmFtZSkgPiAx IEFTIGJhc2Vpc2R1cCwKKyAgICAoU0VMRUNUCisgICAgICAgIGFycmF5X2Fn Zyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisgICAgRlJPTQorICAgICAg ICBwZ19zZWNsYWJlbCBzbDEKKyAgICBXSEVSRQorICAgICAgICBzbDEub2Jq b2lkPWQub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00KKyAgICBwZ190eXBlIGQK K0pPSU4KKyAgICBwZ190eXBlIGIgT04gYi5vaWQgPSBkLnR5cGJhc2V0eXBl CitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPWQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X3R5cGUnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Nv bGxhdGlvbiBjIE9OIGQudHlwY29sbGF0aW9uPWMub2lkCitMRUZUIE9VVEVS IEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgY24gT04gYy5jb2xsbmFtZXNwYWNl PWNuLm9pZAorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19 OjpvaWQKKyAgICB7JSBpZiBkb2lkICV9CisgICAgQU5EIGQub2lkPXt7ZG9p ZH19OjppbnQKKyAgICB7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBkLnR5 cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4x X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4zYzIwNWRjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv dXBkYXRlLnNxbApAQCAtMCwwICsxLDY5IEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3sl IGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5u YW1lICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgb19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58 cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgc2V0IG5hbWUgPSBkYXRhLm5h bWUgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEu dHlwbm90bnVsbCBhbmQgbm90IG9fZGF0YS50eXBub3RudWxsICV9CisKK0FM VEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5h bWUpIH19CisgICAgU0VUIE5PVCBOVUxMOworeyUgZWxpZiAndHlwbm90bnVs bCcgaW4gZGF0YSBhbmQgbm90IGRhdGEudHlwbm90bnVsbCBhbmQgb19kYXRh LnR5cG5vdG51bGwlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgTk9UIE5VTEw7 Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0KKworQUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQgfX07 Cit7JSBlbGlmIGRhdGEudHlwZGVmYXVsdCA9PSAnJyBhbmQgb19kYXRhLnR5 cGRlZmF1bHQgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIERFRkFVTFQ7Cit7 JSBlbmRpZiAtJX17JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIERPTUFJ TiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19Cisg ICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19Owor eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb25zdHJhaW50cy5kZWxldGVkICV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5h bWUpIH19OworeyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb25z dHJhaW50cy5hZGRlZCAlfQoreyUgaWYgYy5jb25uYW1lIGFuZCBjLmNvbnNy YyAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBjLmNvbnNyYyB9fSAp O3slIGVuZGlmIC0lfQoreyUgZW5kZm9yIC0lfXslIGVuZGlmIC0lfQoreyUg c2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiAnZGVs ZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxsZW5n dGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAlfQor e3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJv dmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9fQorCit7JSBlbmRmb3IgLSV9Cit7 JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNl Y2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNs YWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlO JywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRh LmJhc2Vuc3ApIH19CisKK3slIGVuZGZvciAtJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hh bmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hh bmdlZCAlfQore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1l LCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5z cCkgfX0KKworeyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9eyUgaWYgZGF0 YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIERPTUFJTiB7eyBjb25u fHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sg ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX17 JSBpZiBkYXRhLmJhc2Vuc3AgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgU0NI RU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3ApIH19O3slIGVuZGlm IC0lfQoreyUgZW5kaWYgLSV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVh dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mNzFlNWEzCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9z cWwvOS4yX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDM2IEBACit7JSBp bXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VD TEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFURSBET01BSU4ge3sgY29u bnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIEFT IHt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS5iYXNldHlwZSkgfX17JSBpZiBk YXRhLnR5cGxlbiAlfSh7e2RhdGEudHlwbGVufX17JSBpZiBkYXRhLnByZWNp c2lvbiAlfSx7e2RhdGEucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRp ZiAlfXslIGlmIGRhdGEuY29sbG5hbWUgYW5kIGRhdGEuY29sbG5hbWUgIT0g InBnX2NhdGFsb2cuXCJkZWZhdWx0XCIiICV9CisKKyAgICBDT0xMQVRFIHt7 IGRhdGEuY29sbG5hbWUgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwZGVm YXVsdCAlfQorCisgICAgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQgfX17 JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwbm90bnVsbCAlfQorCisgICAgTk9U IE5VTEx7JSBlbmRpZiAlfTsKKworeyUgaWYgZGF0YS5vd25lciAlfQorQUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0gT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIp IH19O3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29uc3RyYWludHMgJX0K K3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMgJX17JSBpZiBjLmNvbm5h bWUgYW5kIGMuY29uc3JjICV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0 SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQUREIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sg KHt7IGMuY29uc3JjIH19KXslIGlmIG5vdCBjLmNvbnZhbGlkYXRlZCAlfSBO T1QgVkFMSUR7JSBlbmRpZiAlfXslIGVuZGlmIC0lfTsKK3slIGVuZGZvciAt JX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0K K0NPTU1FTlQgT04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vu c3AsIGRhdGEubmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlv biB9fSc7eyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9 Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgci5zZWN1 cml0eV9sYWJlbCBhbmQgci5wcm92aWRlciAlfQorCisKK3t7IFNFQ0xBQkxF LlNFVChjb25uLCAnRE9NQUlOJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LnNlY3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19eyUgZW5kaWYgLSV9 Cit7JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAtJX0KKworeyUgZW5kaWYgLSV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRl cy9kb21haW5zL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv ZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43YTEyYjUwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZGVsZXRl LnNxbApAQCAtMCwwICsxLDE2IEBACit7JSBpZiBzY2lkIGFuZCBkb2lkICV9 CitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMgbmFtZSwgYm4ubnNwbmFtZSBh cyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdf bmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUK KyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK0FORAorICAg IGQub2lkPXt7ZG9pZH19OjppbnQ7Cit7JSBlbmRpZiAlfQorCit7JSBpZiBu YW1lICV9CitEUk9QIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoYmFzZW5zcCwg bmFtZSkgfX17JSBpZiBjYXNjYWRlICV9IENBU0NBREV7JSBlbmRpZiAlfTsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0 aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5YzE3ZAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApAQCAt MCwwICsxLDEwIEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xsbmFtZSwKKyAg ICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGNv bGxuYW1lKSA+IDAgIFRIRU4KKyAgICBjb25jYXQobnNwbmFtZSwgJy4iJywg Y29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvcHlfY29sbGF0 aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBu CitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkK KyAgICBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29uc3RyYWlu dHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRm OTU2YmYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29uc3Ry YWludHMuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK1NFTEVDVAorICAgICdET01B SU4nIEFTIG9iamVjdGtpbmQsIGMub2lkIGFzIGNvbm9pZCwgY29ubmFtZSwg dHlwbmFtZSBhcyByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlwdGlvbiwKKyAg ICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCwg dHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEnKSBhcyBjb25z cmMsIGNvbm5vaW5oZXJpdCwgY29udmFsaWRhdGVkCitGUk9NCisgICAgcGdf Y29uc3RyYWludCBjCitKT0lOCisgICAgcGdfdHlwZSB0IE9OIHQub2lkPWNv bnR5cGlkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD10 eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lk PSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRQorICAgIGNvbnR5 cGUgPSAnYycgQU5EIGNvbnR5cGlkID0gIHt7ZG9pZH19OjpvaWQKK09SREVS IEJZCisgICAgY29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9v aWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1Yzg5MQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsMTggQEAKK3sl IGlmIGRvaWQgJX0KK1NFTEVDVAorICAgIGQudHlwbmFtZXNwYWNlIGFzIHNj aWQKK0ZST00KKyAgICBwZ190eXBlIGQKK1dIRVJFCisgICAgZC5vaWQ9e3sg ZG9pZCB9fTo6b2lkOworeyUgZWxzZSAlfQorU0VMRUNUCisgICAgZC5vaWQs IGQudHlwbmFtZXNwYWNlCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisg ICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQor V0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwg fX0KKyAgICBBTkQgZC50eXBuYW1lPXt7IG5hbWV8cXRMaXRlcmFsIH19Owor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL25vZGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvbm9kZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uN2JkM2U1YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L25vZGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK1NFTEVDVAorICAgIGQub2lk LCBkLnR5cG5hbWUgYXMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKGQudHlwb3du ZXIpIGFzIG93bmVyLAorICAgIGJuLm5zcG5hbWUgYXMgYmFzZW5zcAorRlJP TQorICAgIHBnX3R5cGUgZAorSk9JTgorICAgIHBnX3R5cGUgYiBPTiBiLm9p ZCA9IGQudHlwYmFzZXR5cGUKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4g T04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQudHlwbmFt ZXNwYWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkKKyAgICBkLnR5cG5h bWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBs YXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI4OTI5ODgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJf cGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDM0IEBACitTRUxFQ1QK KyAgICBkLm9pZCwgZC50eXBuYW1lIGFzIG5hbWUsIGQudHlwYmFzZXR5cGUs IGZvcm1hdF90eXBlKGIub2lkLE5VTEwpIGFzIGJhc2V0eXBlLCBwZ19nZXRf dXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIsCisgICAgYy5vaWQgQVMg Y29sbG9pZCwgZm9ybWF0X3R5cGUoYi5vaWQsIGQudHlwdHlwbW9kKSBBUyBm dWxsdHlwZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKGNuLm5zcG5hbWUpID4g MCBBTkQgbGVuZ3RoKGMuY29sbG5hbWUpID4gMCBUSEVOCisgICAgY29uY2F0 KGNuLm5zcG5hbWUsICcuIicsIGMuY29sbG5hbWUsJyInKQorICAgIEVMU0Ug JycgRU5EIEFTIGNvbGxuYW1lLAorICAgIGQudHlwdHlwbW9kLCBkLnR5cG5v dG51bGwsIGQudHlwZGVmYXVsdCwgZC50eXBuZGltcywgZC50eXBkZWxpbSwg Ym4ubnNwbmFtZSBhcyBiYXNlbnNwLAorICAgIGRlc2NyaXB0aW9uLCAoU0VM RUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1l PWQudHlwbmFtZSkgPiAxIEFTIGRvbWlzZHVwLAorICAgIChTRUxFQ1QgQ09V TlQoMSkgRlJPTSBwZ190eXBlIHQzIFdIRVJFIHQzLnR5cG5hbWU9Yi50eXBu YW1lKSA+IDEgQVMgYmFzZWlzZHVwLAorICAgIChTRUxFQ1QKKyAgICAgICAg YXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkKKyAgICBGUk9N CisgICAgICAgIHBnX3Noc2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAg ICAgc2wxLm9iam9pZD1kLm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAg cGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50 eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5v aWQ9ZC50eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1kLm9pZCBBTkQgZGVzLmNs YXNzb2lkPSdwZ190eXBlJzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19jb2xsYXRpb24gYyBPTiBkLnR5cGNvbGxhdGlvbj1jLm9pZAor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIGNuIE9OIGMuY29s bG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2Ug PSB7e3NjaWR9fTo6b2lkCit7JSBpZiBkb2lkICV9CisgIEFORCBkLm9pZD17 e2RvaWR9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBkLnR5 cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4y X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5hOWFlMTllCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv dXBkYXRlLnNxbApAQCAtMCwwICsxLDgwIEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3sl IGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5u YW1lICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUgVE8ge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFtZSA9IGRhdGEu bmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0 YS50eXBub3RudWxsIGFuZCBub3Qgb19kYXRhLnR5cG5vdG51bGwgJX0KKwor QUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBTRVQgTk9UIE5VTEw7Cit7JSBlbGlmICd0eXBub3Ru dWxsJyBpbiBkYXRhIGFuZCBub3QgZGF0YS50eXBub3RudWxsIGFuZCBvX2Rh dGEudHlwbm90bnVsbCV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBOT1QgTlVM TDsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEudHlwZGVmYXVsdCAlfQorCitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIFNFVCBERUZBVUxUIHt7IGRhdGEudHlwZGVmYXVsdCB9 fTsKK3slIGVsaWYgZGF0YS50eXBkZWZhdWx0ID09ICcnIGFuZCBvX2RhdGEu dHlwZGVmYXVsdCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgREVGQVVMVDsK K3slIGVuZGlmIC0lfXslIGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgRE9N QUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K KyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07 Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBm b3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmRlbGV0ZWQgJX0KKworQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0 YVsnY29uc3RyYWludHMnXVtjLmNvbm9pZF1bJ2Nvbm5hbWUnXSkgfX07Cit7 JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmNo YW5nZWQgJX0KK3slIGlmIGMuY29ubmFtZSBhbmQgYy5jb25uYW1lICE9b19k YXRhWydjb25zdHJhaW50cyddW2MuY29ub2lkXVsnY29ubmFtZSddICV9CisK K0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpIH19CisgICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58cXRJ ZGVudChvX2RhdGFbJ2NvbnN0cmFpbnRzJ11bYy5jb25vaWRdWydjb25uYW1l J10pIH19IFRPIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19OworeyUg ZW5kaWYgJX0KK3slIGlmIGMuY29udmFsaWRhdGVkIGFuZCBub3Qgb19kYXRh Wydjb25zdHJhaW50cyddW2MuY29ub2lkXVsnY29udmFsaWRhdGVkJ10gJX0K KworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCB7eyBjb25u fHF0SWRlbnQoYy5jb25uYW1lKSB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRm b3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9 Cit7JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFt ZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19KXslIGlmIG5vdCBjLmNvbnZh bGlkYXRlZCAlfSBOT1QgVkFMSUR7JSBlbmRpZiAlfXslIGlmIGMuY29ubm9p bmhlcml0ICV9IE5PIElOSEVSSVR7JSBlbmRpZiAtJX07eyUgZW5kaWYgLSV9 Cit7JSBlbmRmb3IgLSV9eyUgZW5kaWYgLSV9Cit7JSBzZXQgc2VjbGFiZWxz ID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNs YWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3sl IGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5V TlNFVChjb25uLCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRh LmJhc2Vuc3ApIH19CisKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7 JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAl fQorCit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIu cHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX17JSBpZiAnY2hhbmdlZCcg aW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAw ICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBT RUNMQUJMRS5TRVQoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIs IHIuc2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9 CisKK0NPTU1FTlQgT04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9u fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmIC0lfXslIGlmIGRhdGEuYmFzZW5z cCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCkgfX07eyUgZW5kaWYgLSV9Cit7JSBlbmRpZiAt JX0K --001a11406a18ccaa55052ecd0c5a 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 --001a11406a18ccaa55052ecd0c5a--