Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agC3C-0003Dm-Uy for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2016 14:03:51 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1agC3C-00032P-HG for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2016 14:03:50 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1agC2p-0002RH-Pd for pgadmin-hackers@postgresql.org; Wed, 16 Mar 2016 14:03:28 +0000 Received: from mail-lf0-x22f.google.com ([2a00:1450:4010:c07::22f]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1agC2j-00088M-AZ for pgadmin-hackers@postgresql.org; Wed, 16 Mar 2016 14:03:26 +0000 Received: by mail-lf0-x22f.google.com with SMTP id l83so20035450lfd.3 for ; Wed, 16 Mar 2016 07:03:21 -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=sTccICPYY/mnevyKN8nWgHuoyrYzmVVfcdo24GbQF8w=; b=1ygjDPGagpeXqAz017NX2FlZN224TOkVQnwQmcw2wjy8y+jX2zXwOcA0Td4lMLZTZ0 cCB0MF5GjAx3tfjvQNzupl9iqAa3WmvK5Rzb5PoUR7YpYN0WXvMUhfv/68JF1mGfXRAd 7WFnyyZTpwkjPLEGAYBzVXGAEoTfOWlZ4iEBWyaYTqptXXa5feBS4+zw3w9XtNc4MM1Y PVwDo0sEx+Zvaqwswq5GE9VPNYP0eB/cey/hEaOx5ah52rSJdELVpzvx7ptM0hAuSzOa rSDz1KcIl2+2Hp1qtXeP2FgelOBRfohP8QplsfA9wJKgTRuTfN3swW9JzMNBvpkaOfIY FRYw== 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=sTccICPYY/mnevyKN8nWgHuoyrYzmVVfcdo24GbQF8w=; b=UjZRZ2mxqoXGIQOPxtObZIh3evM/Lv3BimIPAEaL9lXq6NtIr7GbYDBrO6r1WDm+jh YyaWXbExRcAP15tfJyZ6S3xHLjXhajrLtPTrC2B7Rbmb4PCa3YYvJM6Q/nTy08B6C30x bZAjyE59fbaQfdD6AXMdIqs2xI4IS/nOql28Ces14QlmGTgUftvxkZpkANH2x4GesqCu oiKLPgAfreHntBernWitd51Sby4MQ48zToH4azzBGn1iPXtnQGzonvS1KcgzS1TLr/XJ QJnfDqXyZgkGwfm8VvQrtGlzzm50xGz1Y0RIzAu+OVPVBKguIDiUxUy02PIW/aWF5UiQ 9Zsg== X-Gm-Message-State: AD7BkJKzx7N0GKsWSLQbaKPuLzn5pWpMmQUBoJ6x6OGHVBq5MvAK1TJgJmSf8jAQ6K7TvbvlY4KfBIQX02iZt4LL MIME-Version: 1.0 X-Received: by 10.25.29.211 with SMTP id d202mr1517040lfd.92.1458136998636; Wed, 16 Mar 2016 07:03:18 -0700 (PDT) Received: by 10.25.159.85 with HTTP; Wed, 16 Mar 2016 07:03:18 -0700 (PDT) In-Reply-To: References: Date: Wed, 16 Mar 2016 19:33:18 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11401c4cd6d4f0052e2af903 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 --001a11401c4cd6d4f0052e2af903 Content-Type: multipart/alternative; boundary=001a11401c4cd6d4eb052e2af901 --001a11401c4cd6d4eb052e2af901 Content-Type: text/plain; charset=UTF-8 Hi, Please find the updated Domain Module Patch. To test this patch, please apply Backgrid Textarea Cell Patch before this. Thanks, Khushboo On Wed, Mar 16, 2016 at 3:02 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi, > > On Wed, Mar 16, 2016 at 2:55 PM, Dave Page wrote: > >> Hi >> >> On Wed, Mar 16, 2016 at 9:18 AM, Khushboo Vashi >> wrote: >> > >> >>> - Owner and schema should be allowed to be left blank (and then >> default >> >>> to the current user/schema) >> > >> > Done >> >> Oh, sorry - that design changed a while back, and I've updated all the >> existing nodes already. I thought I'd mentioned that. All we do now is >> pre-set the default values for those two fields. >> > I have done in this way only. Sorry for the misunderstanding. > >> >>> - When adding constraints, I should be able to type directly into the >> >>> grid. Expanding the row should be optional. >> > >> > I have made the grid non-editable explicitly as the Check constraint >> control >> > is multi-line control and right now there is no support in the grid for >> the >> > multi-line control. >> >> Not sure I follow - the mockup design you sent months ago allowed you >> to type into the grid, and expand a row to show all fields if you >> wanted. That is an *absolutely essential* feature enhancement for >> pgAdmin 4 - it's required by the table design (though this will change >> a little in other ways, like positioning of the expand row button), >> and should be used here: >> >> https://www.lucidchart.com/documents/edit/610ce42d-c397-48ff-a5e7-bd92c4995715/0 >> >> All other controls other than text-area are supported in back-grid. > I will try to incorporate text-area as well, so we can directly type into > the grid for this control also. > > >> >>> - The comment column on the constraints grid expands when the text >> >>> reaches ~50% of the width. It should be a fixed size (and use 100% of >> the >> >>> space available, less appropriate margins) >> > >> > I have applied the size for the each header of the grid, but if the >> given >> > input will be without space in the grid then it will expand. For this, >> we >> > can make table layout fixed. So, please suggest, should I do that or >> not? >> >> Yes, I think it should be fixed. If the grid row is expanded, >> presumably it'll show in a multi-line field anyway? Plus the >> properties will use a multi-line field as well. >> >> Okay. > >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a11401c4cd6d4eb052e2af901 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the updat= ed Domain Module Patch.

To test this patch, please apply Backg= rid Textarea Cell Patch before this.

Thanks,
Khushboo=

On Wed,= Mar 16, 2016 at 3:02 PM, Khushboo Vashi <khushboo.vashi@ent= erprisedb.com> wrote:
Hi,

On Wed, Mar 16, 2016 at 2:55 PM, Dave Page <dpage@= pgadmin.org> wrote:
Hi

On Wed, Mar 16, 2016 at 9:18 AM, Khushboo Vashi
<kh= ushboo.vashi@enterprisedb.com> wrote:
>
>>> - Owner and schema should be allowed to be left blank (and the= n default
>>> to the current user/schema)
>
> Done

Oh, sorry - that design changed a while back, and I've updated a= ll the
existing nodes already. I thought I'd mentioned that. All we do now is<= br> pre-set the default values for those two fields.
I have done in this way o= nly. Sorry for the misunderstanding.
>>> - When adding constraints, I should be able to type directly i= nto the
>>> grid. Expanding the row should be optional.
>
> I have made the grid non-editable explicitly as the Check constraint c= ontrol
> is multi-line control and right now there is no support in the grid fo= r the
> multi-line control.

Not sure I follow - the mockup design you sent months ago allowed yo= u
to type into the grid, and expand a row to show all fields if you
wanted. That is an *absolutely essential* feature enhancement for
pgAdmin 4 - it's required by the table design (though this will change<= br> a little in other ways, like positioning of the expand row button),
and should be used here:
https://www.lucidcha= rt.com/documents/edit/610ce42d-c397-48ff-a5e7-bd92c4995715/0

All other controls other than text-area are supported in back-grid.
<= /span>
I will try to incorpora= te text-area as well, so we can directly type into the grid for this contro= l also.
=C2=A0
>>> - The comment column on the constraints grid expands when the = text
>>> reaches ~50% of the width. It should be a fixed size (and use = 100% of the
>>> space available, less appropriate margins)
>
> I have applied the size for the each header of the grid, but if the gi= ven
> input will be without space in the grid then it will expand. For this,= we
> can make table layout fixed. So, please suggest, should I do that or n= ot?

Yes, I think it should be fixed. If the grid row is expanded,
presumably it'll show in a multi-line field anyway? Plus the
properties will use a multi-line field as well.

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

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


--001a11401c4cd6d4eb052e2af901-- --001a11401c4cd6d4f0052e2af903 Content-Type: text/x-patch; charset=US-ASCII; name="Domains_ver_5.patch" Content-Disposition: attachment; filename="Domains_ver_5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilux14p20 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMjczZTQKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsODA2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBEb21haW4g Tm9kZS4iIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20g cGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVy bmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMg aW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIu Y29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9y dCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51dGlscy5h amF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmln IGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0 aWxzIGltcG9ydCBcCisgICAgU2NoZW1hQ2hpbGRNb2R1bGUsIERhdGFUeXBl UmVhZGVyCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnV0aWxzIGltcG9ydCBcCisgICAgcGFyc2Vfc2Vj X2xhYmVsc19mcm9tX2RiCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMK KworCitjbGFzcyBEb21haW5Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgor ICAgICIiIgorICAgIGNsYXNzIERvbWFpbk1vZHVsZShTY2hlbWFDaGlsZE1v ZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIFRoZSBE b21haW4gTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisg ICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIEluaXRp YWxpemUgdGhlIERvbWFpbiBNb2R1bGUuCisKKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBHZW5lcmF0ZSB0aGUgZG9t YWluIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogc2NyaXB0X2xvYWQoKQor ICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdo ZW4gc2NoZW1hIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAg IiIiCisKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWluJworICAgIENPTExFQ1RJ T05fTEFCRUwgPSBnZXR0ZXh0KCJEb21haW5zIikKKworICAgIGRlZiBfX2lu aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihE b21haW5Nb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykK KyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1h eF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJh dGUgdGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisgICAgICAgICIiIgor ICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlv bl9ub2RlKHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0 X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBt b2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdoZW4gc2NoZW1hIG5vZGUgaXMK KyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICBy ZXR1cm4gc2NoZW1hcy5TY2hlbWFNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1 ZXByaW50ID0gRG9tYWluTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIERv bWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6Cisg ICAgIiIiCisgICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhpcyBjbGFz cyBpbmhlcml0cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJl bnQgcm91dGVzIGZvcgorICAgIHRoZSBtb2R1bGUuIEFsc28sIGluaGVyaXRz IERhdGFUeXBlUmVhZGVyIHRvIGdldCBkYXRhIHR5cGVzLgorCisgICAgVGhl IGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRvIENyZWF0ZSwgUmVhZCwgVXBkYXRl IGFuZCBEZWxldGUgb3BlcmF0aW9ucyBmb3IKKyAgICB0aGUgRG9tYWluLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxpZGF0ZV9y ZXF1ZXN0KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAg ICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNy ZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAqIG1vZHVs ZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbnMuanMpIGZv ciB0aGlzIG1vZHVsZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKGYp OgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgIC0gIENo ZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgIC0gIEF0 dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aC4KKwor ICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAg IC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBEb21haW5z IHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisgICAgKiBw cm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAg LSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAgICogZ2V0 X2NvbGxhdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgKiBjcmVhdGUo Z2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMgYSBuZXcg RG9tYWluIG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQs IHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21haW4gb2Jq ZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gb2JqZWN0LgorCisgICAg KiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAg IC0gUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVjdC4KKwor ICAgICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAqIGdl dF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAg ICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3Vw ZGF0ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICogZGVwZW5kZW50cyhn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gUmV0dXJucyB0 aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisKKyAgICAq IGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAg ICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRG9tYWlu IG9iamVjdC4KKworICAgICogdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Zm5pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVzLgorICAg ICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQor CisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQn fSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lkJ30KKyAg ICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lk JzogJ2RvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsK KyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3Bl cnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30s CisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRl J30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6 ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6ICdj aGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGUn fSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQn OiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30s IHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6 ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dl dCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQnOiBb eydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6 IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAgJ2dl dF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dldCc6ICd0eXBlcyd9 XSwKKyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAgICAgICAg eydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAgIHsnZ2V0 JzogJ2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgXQorICAgIH0pCisKKyAg ICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0aW5n IHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUgYW5k IG1vZGlmaWVkIFNRTC4KKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAg ICAgICAgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHRoZSBEb21haW4KKyAg ICAgICAgICAgICAgICAgICAgb3duZXI6IERvbWFpbiBPd25lcgorICAgICAg ICAgICAgICAgICAgICBiYXNlbnNwOiBTY2hlbWEgTmFtZQorICAgICAgICAg ICAgICAgICAgICBiYXNldHlwZTogRGF0YSBUeXBlIG9mIHRoZSBEb21haW4K KworICAgICAgICBBYm92ZSBib3RoIHRoZSBhcmd1bWVudHMgd2lsbCBub3Qg YmUgdmFsaWRhdGVkIGluIHRoZSB1cGRhdGUgYWN0aW9uLgorICAgICAgICAi IiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoc2Vs ZiwgKiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30KKyAgICAg ICAgICAgIGlmIHJlcXVlc3QuZGF0YToKKyAgICAgICAgICAgICAgICByZXEg PSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdz IG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAgICAgICBpZiAnZG9pZCcgbm90 IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0g WworICAgICAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAgICAg ICAgICAgICdiYXNldHlwZScKKyAgICAgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVthcmddID09 ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRu J3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9k ID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9 IFsnY29uc3RyYWludHMnLCAnc2VjbGFiZWxzJ10KKworICAgICAgICAgICAg ICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAgICBpZiBr ZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMgc3RyaW5n IGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV0gPSBqc29uLmxvYWRzKHJlcVtrZXldKQor ICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAndHlwbm90bnVsbCc6 CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBUcnVlIGlm IHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XSBpc1wKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRydWUgZWxzZVwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoRmFsc2UgaWYgcmVxW2tleV0gPT0gJ2ZhbHNlJyBvciByZXFb a2V5XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlIGVsc2UgJycpCisgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICAgICAg ICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJldHVybiBm KHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAg ICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg TG9hZCBKUyBmaWxlIChkb21haW5zLmpzKSBmb3IgdGhpcyBtb2R1bGUuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi ZG9tYWlucy9qcy9kb21haW5zLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdl dHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29u dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAg ICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAg ICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg ICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAg ICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGgu CisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVm IHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBh cmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RF RkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJp dmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAgICAgICAg c2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJn c1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIu cXRJZGVudAorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5l Y3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIu dmVyc2lvbgorICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBzZWxmLm1hbmFn ZXIuc2VydmVyX3R5cGUKKworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0 ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAgICAgaWYg dmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVf cGF0aCA9ICdkb21haW5zL3NxbC85LjJfcGx1cycKKyAgICAgICAgICAgIGVs aWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxh dGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKworICAgICAgICAg ICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVy biB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxp c3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBMaXN0IHRoZSBEb21haW5zLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKwor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg YWxsIHRoZSBEb21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93 c2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJZAorICAgICAgICAiIiIKKworICAgICAgICByZXMgPSBbXQorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAg ICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAg ICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICByb3db J25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21h aW4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl dHVybnMgdGhlIERvbWFpbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAg ZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9pZCkKKyAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICMgR2V0IFR5cGUgTGVuZ3RoIGFu ZCBQcmVjaXNpb24KKyAgICAgICAgZGF0YS51cGRhdGUoc2VsZi5fcGFyc2Vf dHlwZShkYXRhWydmdWxsdHlwZSddKSkKKworICAgICAgICAjIEdldCBEb21h aW4gQ29uc3RyYWludHMKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRv aWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBkYXRhWydjb25zdHJhaW50cyddID0gcmVzWydyb3dzJ10K KworICAgICAgICAjIEdldCBmb3JtYXR0ZWQgU2VjdXJpdHkgTGFiZWxzCisg ICAgICAgIGlmICdzZWNsYWJlbHMnIGluIGRhdGE6CisgICAgICAgICAgICBk YXRhLnVwZGF0ZShwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIoZGF0YVsnc2Vj bGFiZWxzJ10pKQorCisgICAgICAgICMgU2V0IFN5c3RlbSBEb21haW4gU3Rh dHVzCisgICAgICAgIGRhdGFbJ3N5c2RvbWFpbiddID0gRmFsc2UKKyAgICAg ICAgaWYgZG9pZCA8PSBzZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRs YXN0c3lzb2lkJ106CisgICAgICAgICAgICBkYXRhWydzeXNkb21haW4nXSA9 IFRydWUKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIGRlZiBfcGFyc2VfdHlwZShzZWxmLCBiYXNl dHlwZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIFR5cGUgYW5k IERhdGEgVHlwZSBmcm9tIHRoZSBiYXNldHlwZS4KKyAgICAgICAgIiIiCisg ICAgICAgIHR5cF9sZW4gPSAnJworICAgICAgICB0eXBfcHJlY2lzaW9uID0g JycKKworICAgICAgICAjIFRoZSBMZW5ndGggYW5kIHRoZSBwcmVjaXNpb24g b2YgdGhlIERhdGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0ZS4KKyAgICAgICAg IyBUaGUgRm9ybWF0IHdlIGdldHRpbmcgZnJvbSBkYXRhYmFzZSBpczogbnVt ZXJpYygxLDEpCisgICAgICAgICMgU28sIHdlIG5lZWQgdG8gc2VwYXJhdGUg TGVuZ3RoOiAxLCBQcmVjaXNpb246IDEKKworICAgICAgICBpZiBiYXNldHlw ZSAhPSAnJyBhbmQgYmFzZXR5cGUuZmluZCgiKCIpID4gMDoKKyAgICAgICAg ICAgIHN1YnN0ciA9IGJhc2V0eXBlW2Jhc2V0eXBlLmZpbmQoIigiKSArIDE6 bGVuKAorICAgICAgICAgICAgICAgYmFzZXR5cGUpIC0gMV0KKyAgICAgICAg ICAgIHR5cGxlbiA9IHN1YnN0ci5zcGxpdCgiLCIpCisgICAgICAgICAgICBp ZiBsZW4odHlwbGVuKSA+IDE6CisgICAgICAgICAgICAgICAgdHlwX2xlbiA9 IHR5cGxlblswXQorICAgICAgICAgICAgICAgIHR5cF9wcmVjaXNpb24gPSB0 eXBsZW5bMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg dHlwX2xlbiA9IHR5cGxlbgorICAgICAgICAgICAgICAgIHR5cF9wcmVjaXNp b24gPSAnJworCisgICAgICAgIHJldHVybiB7J3R5cGxlbic6IHR5cF9sZW4s ICdwcmVjaXNpb24nOiB0eXBfcHJlY2lzaW9ufQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9p ZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFt7 J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29sbGF0aW9ucy5zcWwnXSkpCisgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1sn Y29weV9jb2xsYXRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAndmFsdWUnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ119CisgICAgICAgICAg ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisg ICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB0eXBlcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyB0aGUgRGF0YSBUeXBlcy4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGZuaWQ6IEZ1bmN0aW9uIElkCisgICAgICAgICIiIgorCisgICAg ICAgIGNvbmRpdGlvbiA9ICIiInR5cGlzZGVmaW5lZCBBTkQgdHlwdHlwZSBJ TiAoJ2InLCAnYycsICdkJywgJ2UnLCAncicpCitBTkQgTk9UIEVYSVNUUyAo U0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lc3BhY2U9dHlw bmFtZXNwYWNlCitBTkQgcmVsbmFtZSA9IHR5cG5hbWUgQU5EIHJlbGtpbmQg IT0gJ2MnKSBBTkQKKyh0eXBuYW1lIE5PVCBMSUtFICdfJScgT1IgTk9UIEVY SVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRQorcmVsbmFtZXNw YWNlPXR5cG5hbWVzcGFjZSBBTkQgcmVsbmFtZSA9IHN1YnN0cmluZyh0eXBu YW1lIEZST00gMik6Om5hbWUKK0FORCByZWxraW5kICE9ICdjJykpIiIiCisK KyAgICAgICAgaWYgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0 czoKKyAgICAgICAgICAgIGNvbmRpdGlvbiArPSAiIEFORCBuc3AubnNwbmFt ZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJyIKKworICAgICAgICAjIEdldCBU eXBlcworICAgICAgICBzdGF0dXMsIHR5cGVzID0gc2VsZi5nZXRfdHlwZXMo c2VsZi5jb25uLCBjb25kaXRpb24pCisKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9dHlwZXMpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9dHlwZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBjcmVhdGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBDcmVhdGVzIGEgbmV3IERvbWFpbiBvYmplY3QuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBkb2lkOiBEb21haW4gSWQKKworICAgICAgICBSZXF1aXJlZCBBcmdz OgorICAgICAgICAgICAgbmFtZTogRG9tYWluIE5hbWUKKyAgICAgICAgICAg IG93bmVyOiBPd25lciBOYW1lCisgICAgICAgICAgICBiYXNlbnNwOiBTY2hl bWEgTmFtZQorICAgICAgICAgICAgYmFzZXR5cGU6IERvbWFpbiBCYXNlIFR5 cGUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRG9tYWluIG9i amVjdCBpbiBqc29uIGZvcm1hdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg ZGF0YSA9IHNlbGYucmVxdWVzdAorICAgICAgICB0cnk6CisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhKQorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgIyBXZSBuZWVkIG9pZCB0byB0byBhZGQgb2JqZWN0IGluIHRyZWUg YXQgYnJvd3NlciwgYmVsb3cgc3FsIHdpbGwKKyAgICAgICAgICAgICMgZ2l2 ZXMgdGhlIHNhbWUKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5z cD1kYXRhWydiYXNlbnNwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgZG9pZCwgc2NpZCA9IHJlc1sncm93cyddWzBdCisKKyAgICAg ICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9 c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAg ICAgICAgICAgICAgICBkb2lkLAorICAgICAgICAgICAgICAgICAgICBzY2lk LAorICAgICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgIGljb249Imljb24tZG9tYWluIgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIERyb3BzIHRoZSBEb21h aW4gb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisg ICAgICAgICIiIgorCisgICAgICAgIGlmIHNlbGYuY21kID09ICdkZWxldGUn OgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVyYXRpb24K KyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAgICAgICB0cnk6Cisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCBkb2lkPWRvaWQp CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPW5hbWUpCisKKyAgICAgICAgICAgIG5hbWUsIGJhc2Vuc3AgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZT1uYW1lLCBiYXNlbnNwPWJhc2Vuc3AsIGNhc2NhZGU9Y2FzY2FkZSkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIGRyb3BwZWQiKSwKKyAgICAgICAg ICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogZG9p ZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1ZXN0Cisg ICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhlIERvbWFpbiBv YmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9zcWwo Z2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwgZG9pZCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgICMgR2V0IFNjaGVtYSBJZAorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHNjaWQgPSByZXNb J3Jvd3MnXVswXVsnc2NpZCddCisKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkRvbWFpbiB1cGRh dGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBn aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAor ICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAg ICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBS ZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBEb21haW4gb2JqZWN0LgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAg ICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAjIEdldCBUeXBl IExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAgICAgIGRhdGEudXBkYXRlKHNl bGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5cGUnXSkpCisKKyAgICAgICAg IyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29u c3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsnY29uc3RyYWludHMnXSA9IHJl c1sncm93cyddCisKKyAgICAgICAgIyBUb2dnbGUgVmFsaWRhdGUgYW5kIGlu aGVyaXQgb3B0aW9ucyBmb3IgJ0NSRUFURSBRdWVyeScKKyAgICAgICAgZm9y IGMgaW4gZGF0YVsnY29uc3RyYWludHMnXToKKyAgICAgICAgICAgIGlmICdj b252YWxpZGF0ZWQnIGluIGM6CisgICAgICAgICAgICAgICAgY1snY29udmFs aWRhdGVkJ10gPSBGYWxzZSBpZiBjWydjb252YWxpZGF0ZWQnXSBlbHNlIFRy dWUKKyAgICAgICAgICAgIGlmICdjb25ub2luaGVyaXQnIGluIGM6CisgICAg ICAgICAgICAgICAgY1snY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBjWydj b25ub2luaGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHNxbF9oZWFkZXIgPSAi IiItLSBET01BSU46IHswfQorCistLSBEUk9QIERPTUFJTiB7MH07CisKKyIi Ii5mb3JtYXQoZGF0YVsnYmFzZW5zcCddICsgJy4nICsgZGF0YVsnbmFtZSdd KQorCisgICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAg ICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5v bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZp ZWQgU1FMLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisKKyAg ICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5hbWU6IERvbWFp biBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFtZQorICAgICAg ICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAgICAgIGJhc2V0 eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgUmV0dXJuczoKKyAg ICAgICAgICAgIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhl IERvbWFpbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwg PSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwg ZG9pZCkKKworICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9U1FM LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwKKworICAg IGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGVzIHRoZSBT UUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21haW4uCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZG9pZCBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2NpZD1zY2lkLCBkb2lkPWRvaWQpCisgICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dz J11bMF0KKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTAorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBk ZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRl cGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZv ciB0aGUgRG9tYWluIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21h aW4gSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0 ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIGRvaWQpCisgICAg ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJl c3BvbnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBh amF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRG9tYWluIG5vZGUuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisg ICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRl bmNpZXMoc2VsZi5jb25uLCBkb2lkKQorICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNp ZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKK0RvbWFpblZpZXcucmVnaXN0ZXJfbm9kZV92aWV3 KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvX19pbml0X18ucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2YmI2MAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNjUzIEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisi IiJJbXBsZW1lbnRzIHRoZSBEb21haW4gQ29uc3RyYWludCBNb2R1bGUuIiIi CisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVt cGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20g Zmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAg bWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQ R0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rp b24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2No ZW1hcy5kb21haW5zIFwKKyAgICBhcyBkb21haW5zCitmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9t IHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9t IGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gZnVuY3Rv b2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNzIERvbWFpbkNvbnN0cmFpbnRN b2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgorICAgICIiIgorICAgIGNs YXNzIERvbWFpbkNvbnN0cmFpbnRNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1 bGUpOgorCisgICAgICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBUaGUgRG9t YWluIENvbnN0cmFpbnQgTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAt LS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAg ICAtIEluaXRpYWxpemUgdGhlIERvbWFpbiBDb25zdHJhaW50IE1vZHVsZS4K KworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAg ICAtIEdlbmVyYXRlIHRoZSBEb21haW4gQ29uc3RyYWludCBjb2xsZWN0aW9u IG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUoZ2lkLCBzaWQsIGRpZCwgc2Np ZCkKKyAgICAgIC0gUmV0dXJucyBEb21haW4gQ29uc3RyYWludCBub2RlIGFz IGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBM b2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciB0aGUgRG9tYWluIENvbnN0cmFp bnQsIHdoZW4gYW55IG9mIHRoZQorICAgICAgICBEb21haW4gbm9kZSBpcyBp bml0aWFsaXplZC4KKyAgICAiIiIKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWlu LWNvbnN0cmFpbnRzJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0 KCJEb21haW4gQ29uc3RyYWludHMiKQorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKERvbWFpbkNv bnN0cmFpbnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJn cykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxm Lm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIERvbWFpbiBDb25zdHJhaW50IGNvbGxlY3Rpb24g bm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJh dGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoZG9pZCkKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgUmV0dXJucyBEb21haW4gQ29uc3RyYWludCBub2RlIGFzIGxl YWYgbm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBGYWxzZQor CisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBm b3IgdGhlIERvbWFpbiBDb25zdHJhaW50LCB3aGVuIGFueSBvZiB0aGUKKyAg ICAgICAgRG9tYWluIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gZG9tYWlucy5Eb21haW5Nb2R1bGUuTk9ERV9U WVBFCisKKworYmx1ZXByaW50ID0gRG9tYWluQ29uc3RyYWludE1vZHVsZShf X25hbWVfXykKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgorICAgICIiIgorICAgIGNsYXNzIERvbWFpbkNvbnN0 cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisKKyAgICBUaGlzIGNsYXNz IGluaGVyaXRzIFBHQ2hpbGROb2RlVmlldyB0byBnZXQgdGhlIGRpZmZlcmVu dCByb3V0ZXMgZm9yCisgICAgdGhlIG1vZHVsZS4KKworICAgIFRoZSBjbGFz cyBpcyByZXNwb25zaWJsZSB0byBDcmVhdGUsIFJlYWQsIFVwZGF0ZSBhbmQg RGVsZXRlIG9wZXJhdGlvbnMgZm9yCisgICAgdGhlIERvbWFpbiBDb25zdHJh aW50LgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisKKyAgICAqIG1v ZHVsZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbi1jb25z dHJhaW50cy5qcykgZm9yIHRoaXMgbW9kdWxlLgorCisgICAgKiBjaGVja19w cmVjb25kaXRpb24oZik6CisgICAgICAtIFdvcmtzIGFzIGEgZGVjb3JhdG9y LgorICAgICAgLSAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVz LgorICAgICAgLSAgQXR0YWNoIGNvbm5lY3Rpb24gb2JqZWN0IGFuZCB0ZW1w bGF0ZSBwYXRoLgorCisgICAgKiBsaXN0KGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQpOgorICAgICAgLSBMaXN0IHRoZSBEb21haW4gQ29uc3RyYWludHMu CisKKyAgICAqIG5vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg LSBSZXR1cm5zIGFsbCB0aGUgRG9tYWluIENvbnN0cmFpbnRzIHRvIGdlbmVy YXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisgICAgKiBwcm9wZXJ0aWVz KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBSZXR1cm5z IHRoZSBEb21haW4gQ29uc3RyYWludCBwcm9wZXJ0aWVzLgorCisgICAgKiBj cmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMg YSBuZXcgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiB1cGRh dGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIFVwZGF0 ZXMgdGhlIERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICogZGVs ZXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBEcm9w cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiBzcWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0 LgorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9u ZSk6CisgICAgICAtIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTC4KKworICAg ICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gR2VuZXJhdGVzIHRoZSBTUUwgc3RhdGVtZW50cyB0byBjcmVh dGUvdXBkYXRlIHRoZSBEb21haW4gQ29uc3RyYWludC4KKyAgICAgICAgb2Jq ZWN0LgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQsIGNvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBkZXBlbmRlbnRz IGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiBk ZXBlbmRlbmNpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6 CisgICAgICAtIFJldHVybnMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIERv bWFpbiBDb25zdHJhaW50IG9iamVjdC4KKyAgICAiIiIKKyAgICBub2RlX3R5 cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2lu dCcsICdpZCc6ICdkb2lkJ30KKyAgICBdCisgICAgaWRzID0gWworICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2NvaWQnfQorICAgIF0KKworICAg IG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAg ICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0 ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICds aXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAg J2RlbGV0ZSc6IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdj aGlsZHJlbic6IFt7J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25v ZGVzJzogW3snZ2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisg ICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNx bCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAg ICAgICdzdGF0cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAg ICAnZGVwZW5kZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisg ICAgICAgICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwK KyAgICAgICAgJ21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVs ZV9qcyd9XQorICAgIH0pCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBKUyBmaWxlIChkb21haW4tY29u c3RyYWludHMuanMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisg ICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICJkb21haW4tY29uc3Ry YWludHMvanMvZG9tYWluLWNvbnN0cmFpbnRzLmpzIiwKKyAgICAgICAgICAg ICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAy MDAsIHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlw dCd9CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24o Zik6CisgICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRv ci4KKyAgICAgICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVz LgorICAgICAgICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBs YXRlIHBhdGguCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAg ICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg IHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJp dmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5h Z2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCdd KQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5l Y3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0 SWRlbnQgPSBkcml2ZXIucXRJZGVudAorCisgICAgICAgICAgICAjIElmIERC IG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3Nlcgor ICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToKKyAg ICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAor ICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiKQorICAgICAgICAgICAgICAgICkK KworICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKwor ICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBz cWwgc2NyaXB0cworICAgICAgICAgICAgaWYgdmVyID49IDkwMjAwOgorICAg ICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdkb21haW4tY29u c3RyYWludHMvc3FsLzkuMl9wbHVzJworICAgICAgICAgICAgZWxpZiB2ZXIg Pj0gOTAxMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRo ID0gJ2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMnCisKKyAgICAg ICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgTGlzdCB0aGUgRG9tYWluIENvbnN0cmFpbnRz LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93 cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyBhbGwgdGhlIERvbWFpbiBDb25zdHJhaW50cy4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAg ICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAiIiIKKyAgICAg ICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lkKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAg ICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmlu dC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAg IHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGRvaWQsCisgICAg ICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAg ICAgICBpY29uPSJpY29uLWRvbWFpbi1jb25zdHJhaW50cyIKKyAgICAgICAg ICAgICAgICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0 aGUgRG9tYWluIENvbnN0cmFpbnRzIHByb3BlcnR5LgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAg ICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4g Q29uc3RyYWludCBJZAorICAgICAgICAiIiIKKworICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb2lkPWRvaWQsIGNvaWQ9Y29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jv d3MnXVswXQorICAgICAgICBpZiAnY29udmFsaWRhdGVkJyBpbiBkYXRhOgor ICAgICAgICAgICAgZGF0YVsnY29udmFsaWRhdGVkJ10gPSBub3QgZGF0YVsn Y29udmFsaWRhdGVkJ10KKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBk b2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMgYSBuZXcgRG9t YWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDog RG9tYWluIElkCisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAg ICAgIG5hbWU6ICBDb25zdHJhaW50cyBOYW1lCisgICAgICAgICAgICBjb25z cmM6IENvbnN0cmFpbnRzIENoZWNrCisKKyAgICAgICAgUmV0dXJuczoKKyAg ICAgICAgICAgIERvbWFpbiBDb25zdHJhaW50IG9iamVjdCBpbiBqc29uIGZv cm1hdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3Qu Zm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisgICAgICAgICAgICBqc29u LmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgcmVxdWly ZWRfYXJncyA9IFsKKyAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAg ICdjb25zcmMnCisgICAgICAgIF0KKworICAgICAgICBmb3IgYXJnIGluIHJl cXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6 CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAg ICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJv cm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxk bid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBTY2hlbWEgYW5kIERv bWFpbi4KKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RvbWFpbi5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRvbWFpbiwgc2NoZW1hID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKyAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFy KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICMgR2V0IHRoZSByZWNlbnRseSBhZGRlZCBj b25zdHJhaW50cyBvaWQKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9p ZD1kb2lkLCBuYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIHN0YXR1 cywgY29pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9ZG9pZCkKKworICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIGNvaWQsCisgICAgICAgICAgICAgICAgICAgIGRv aWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21haW4tY29uc3RyYWludHMi CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgRHJvcHMgdGhlIERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAgICAgY29p ZDogRG9tYWluIENvbnN0cmFpbnQgSWQKKyAgICAgICAgIiIiCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk LCBjb2lkPWNvaWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAor ICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIENvbnN0cmFp bnQgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg ICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQnOiBz aWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAg ICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk LCBjb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhlIERv bWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6 IERvbWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9tYWluIENvbnN0cmFp bnQgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZv cm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UgXAorICAgICAgICAgICAganNvbi5s b2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgc3RhdHVz LCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRv aWQsIGNvaWQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgU1FM IGFuZCBzdGF0dXM6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBp bmZvPSJEb21haW4gQ29uc3RyYWludCB1cGRhdGVkIiwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQn OiBjb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvaWQnOiBkb2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0i Tm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRh PXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGNvaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAnZG9pZCc6IGRvaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBk aWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBE b21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lk OiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJh aW50IElkCisgICAgICAgICIiIgorCisgICAgICAgICMgR2V0IFNjaGVtYSBh bmQgRG9tYWluLgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RvbWFpbi5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAg ICAgICAgZG9tYWluLCBzY2hlbWEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvaWQ9ZG9pZCwgY29pZD1jb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgIGlmICdjb252YWxpZGF0ZWQn IGluIGRhdGE6CisgICAgICAgICAgICBkYXRhWydjb252YWxpZGF0ZWQnXSA9 IEZhbHNlIGlmIGRhdGFbJ2NvbnZhbGlkYXRlZCddIGVsc2UgVHJ1ZQorICAg ICAgICBpZiAnY29ubm9pbmhlcml0JyBpbiBkYXRhOgorICAgICAgICAgICAg ZGF0YVsnY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBkYXRhWydjb25ub2lu aGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg ZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKworICAgICAgICBzcWxf aGVhZGVyID0gIiIiLS0gQ0hFQ0s6IHswfQorCistLSBBTFRFUiBET01BSU4g ezF9IERST1AgQ09OU1RSQUlOVCB7MH07CisKKyIiIi5mb3JtYXQoZGF0YVsn bmFtZSddLHNjaGVtYSArICcuJyArIGRvbWFpbikKKworICAgICAgICBTUUwg PSBzcWxfaGVhZGVyICsgU1FMCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UocmVzcG9uc2U9U1FMKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQsIGNvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21h aW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElk CisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5hbWU6 ICAgQ29uc3RyYWludHMgTmFtZQorICAgICAgICAgICAgY29uc3JjOiBDb25z dHJhaW50cyBDaGVjaworCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdzCisKKyAg ICAgICAgaWYgY29pZCBpcyBOb25lOgorICAgICAgICAgICAgcmVxdWlyZWRf YXJncyA9IFsKKyAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAg ICAgICAgJ2NvbnNyYycKKyAgICAgICAgICAgIF0KKworICAgICAgICAgICAg Zm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgIGlm IGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5k IHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRh dGEsIHNjaWQsIGRvaWQsIGNvaWQpCisgICAgICAgIGlmIHN0YXR1cyBhbmQg U1FMOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBn aWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29pZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMg dG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluIENvbnN0cmFpbnQuCisKKyAg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lk OiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgaWYgY29pZCBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk LCBjb2lkPWNvaWQpCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKwor ICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubgorICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9kb21haW4uc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAg ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAgICAgICAgICAgICAg ICBkb21haW4sIHNjaGVtYSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRvbWFp bj1kb21haW4sIHNjaGVtYT1zY2hlbWEpCisgICAgICAgICAgICByZXR1cm4g VHJ1ZSwgU1FMCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkLCBjb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNw b25zZQorICAgICAgICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogIFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiAgU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6ICBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAg ICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVu dHMoc2VsZi5jb25uLCBjb2lkKQorICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jl c3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBk ZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwg Y29pZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdl dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQor ICAgICAgICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisg ICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6 IERvbWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBk ZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKHNl bGYuY29ubiwgY29pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3Vs dCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgKQorCitEb21haW5Db25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3Zp ZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9jb2xsLWRvbWFp bi1jb25zdHJhaW50cy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLWNvbnN0 cmFpbnRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJlMTM3MDVj NTBlNmMwY2Y4ZjE5ZDY4MDA1M2U4NjQzZTI4NzUxCkdJVCBiaW5hcnkgcGF0 Y2gKbGl0ZXJhbCAzMTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0Ih NzM/JCMpZUZQRnYzR2ZNVjE9MlRyTzg0N3tKbGB8dGBRcGFzCnpuPGhTK2w9 ck1ZPlJHUHF2bHlkaXpSSiY+QmBPbSNWfVIteU9NPzdAODYyTTdOQ1I+PjNw XnI9ZndUdTB5UGVGbwp6MTJUTClUXnZJPXR8dW9QVXx8WkY8dGdhSEcqUXNR IT9tJlRxPT8zbUN1fUojRHgzeEBtTX19XmlFPTVOSVdYbmsKemtwbkM0YWkl YT5AO0dnNz11dW1zPTliSUs9RWdkfih1cy0zZ0BJdjAyZ2ZzS15KUF4pZ0g9 bWhCVDc7ZE9IIT9wCnppJkI5VWdPUCF1ZnYleUV1N1AyUWslNShvdjZZRjV3 dD1hWWZxfShMUlhHJDV4JW54WFhfWEtTMjl7dEFBa3xnfApYVylLYWhyaVpR cFlHQ2ttXj5iUDBsK1hrS3l5UlV9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQu cG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvc3RhdGljL2ltZy9kb21haW4tY29uc3RyYWludHMtYmFkLnBuZwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4zMmEwNDViOGZhZmRjMDg2NDBkNTNiMmE4 NmIxZGNhYmNiMGZlMGZkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NzkK emNtVi1KMD0pZitQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tS M0NAbHxEMDAwMDFiNWNoXzBJdHApCno9PlB4JEFXJSRITVIxWjkjUSpAUkVI bWRIQW08PDs9cGBsVERsNiRMRTE1JHxuTTZ5eEozIzYmRn1eKVF4PHAzbgp6 SCNoNHpJSylPdSM3OWZUTUAjSEpLa1koOD9MJFFFTGBDakpNZWFzTT9uZyg7 UUI+fG9OYlgyVT9uK0FVT0gxIWUKek96JXhpP0BkbmNQRVhLUlM/XkN6I2Ft dFFRQm0reFF0KHEjQEthUnFSODtVKVJxPDk8QG1FKllWcShgflYpMHZCCnor R1M8KVZQVyVQViU9JEphZyFKSFhsVjZxWlNgKCRfSHVIM3BkPEVuY0pfQzdm MUBYV3FiR3U+RHU9OHVocGpKKQp6dk40YWdIPGkzVXJNWWdXeUs8ZXlOMVZx K3AydGJBIUc1QzNQTyFtJHF8SHZWI0QkfkpPc3Y7ZnRrX3F2LUNlUVgKelQq Y0MlJEozOz48Nl9MJHQ8S3I4KSF3fHJAbz5jUGFtNFgqK35taWBeS3tHbGN8 eGg8TmROITwwZCFKTVF2ZzhiCnoqayU5IzAwQ2w0TT8/VUsxc3pCTDAwMFNh TkxoMEwwMUZjVTAxRmNWMEdnWl8wMDAwN2JWKkdgMmlwZjM0PFJPZwp6KHA3 MnowMDU2a0xfdCYtKTF7MlozY15xVDFtREVvZHk2SVp1Q1cmczFWIWBeNH0k Z29lPygxOEBiMkRiKmoqdzEKeiU0TShwOyZadz85WmFLQXhvKng7Q09YfTw4 ZnpqcUtSdl4ya0Yxc3B5bVlITWpFMm03SGx8YX5lbUNOd0c4KGk/Cno4SSNg YChraUJyRWJofShRbjhUTDIrJH1iM0huXjdwYEs2UiNfNnpRMiQ/dXg7bFhC WUI+aGtOQEMlZz80dlZCTQpSJGJiTDwwMDJvdlBESExrVjFtaW4wT1NBdwoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9k b21haW4tY29uc3RyYWludHMucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3Ry YWludHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMWQyYTA2MWM3 OTQ4MTY4ZDdiMWMyNDc0ZDc2OWIzMTcwOWYxY2YKR0lUIGJpbmFyeSBwYXRj aApsaXRlcmFsIDQwNgp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2 Mz93eWxgR2JLfVhARjBORTA4e1ZZMm5oSGNeZU1hVSVqYGQKemFJJCMrSHVF S0N7cEtFWktZbj5oKCthSU1IXk1qR2pjczN9ZjlDcXl0JmZ2eDdBVCopeHZe YEw7aGZ7SGlfaVA0Cnp4Z0slJlY/cTY1XzRjKjs4fUclO0pNTVk8U0xNX19f TTRCaTl7RV4hPFlVcFgmbjFnYWA3UGdGd0VrZFMhKCNQPAp6Tm4mQE45T3Fp SyhpJihuVkBaJS1Gb1ZPaDgpLWxlWE1zbSNGXzg4RVc0RHZwYzBmamlyO0I1 ViNPMzZLMXNuIU8KemhSVmZ9NWpTc0dQSD9mPHh1ZGN8dkJvWTwmNWNiPXVU R0I5djE4N0o0SUkraXQ1P2pobjhGe1RzQ1pJV1JhZCRECnpnMSpLOVclY3Uy TnNEKGhFZlZUIyp3bSNwWXc7RDA0KzBFKHVRRT9zYFo2KlpYb3FUdlllWSMo Vm85bzFhIzFSZgp6VmxYbD1HfCk5UChsc3kpRioyfCtGfTUtPihLYXgoR0JC ezFzVmF3fUF2WnJJR3AhUCQhTjN4JTBpQGM+enptfHsKVCliITliS24pQ0B1 NnsxLW9EIU08PTRPXmsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFp bnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNv bnN0cmFpbnRzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9k b21haW4tY29uc3RyYWludHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTY2Y2FiYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNvbnN0cmFpbnRzLmpz CkBAIC0wLDAgKzEsMTQ5IEBACisvLyBEb21haW4gQ29uc3RyYWludCBNb2R1 bGU6IENvbGxlY3Rpb24gYW5kIE5vZGUKK2RlZmluZSgKKyAgICAgICAgWydq cXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdw Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIC8vIERlZmlu ZSBEb21haW4gQ29uc3RyYWludCBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzJ10pIHsK KyAgICB2YXIgZG9tYWluX2NvbnN0cmFpbnRzID0gcGdBZG1pbi5Ccm93c2Vy Lk5vZGVzWydjb2xsLWRvbWFpbi1jb25zdHJhaW50cyddID0KKyAgICAgIHBn QWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgIG5v ZGU6ICdkb21haW4tY29uc3RyYWludHMnLAorICAgICAgICBsYWJlbDogJ3t7 IF8oJ0RvbWFpbiBDb25zdHJhaW50cycpIH19JywKKyAgICAgICAgdHlwZTog J2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzJywKKyAgICAgICAgY29sdW1uczog WyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisg IC8vIERvbWFpbiBDb25zdHJhaW50IE5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2RvbWFpbi1jb25zdHJhaW50cyddKSB7CisgICAgcGdBZG1pbi5C cm93c2VyLk5vZGVzWydkb21haW4tY29uc3RyYWludHMnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7CisgICAgICB0eXBlOiAnZG9tYWluLWNvbnN0cmFp bnRzJywKKyAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRz JykgfX0nLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1kb21haW4t Y29uc3RyYWludHMnLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFz RGVwZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ2RvbWFpbidd LAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEF2b2lk IG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAo dGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jy b3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9k b21haW5fb25fY29sbCcsIG5vZGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50 cycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVj dCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGll cycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTog NCwgbGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywK KyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0 cmFpbnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRz Jywgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFi bGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6 ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRzJywgbm9kZTogJ2RvbWFpbics IG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycs CisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwg bGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFp bnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0s CisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9Cisg ICAgICAgIF0pOworCisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAg ICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisg ICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgZGVzY3JpcHRp b246IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb25zcmM6IHVuZGVmaW5lZCwK KyAgICAgICAgICBjb25ub2luaGVyaXQ6IHVuZGVmaW5lZCwKKyAgICAgICAg ICBjb252YWxpZGF0ZWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb252YWxp ZGF0ZWRfcDogdW5kZWZpbmVkCisgICAgICAgIH0sCisgICAgICAgIC8vIERv bWFpbiBDb25zdHJhaW50IFNjaGVtYQorICAgICAgICBzY2hlbWE6IFt7Cisg ICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0n LCB0eXBlOid0ZXh0JywgY2VsbDonc3RyaW5nJywKKyAgICAgICAgICBkaXNh YmxlZDogJ2lzRGlzYWJsZWQnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnb2lkJywgbGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlv bicsIGxhYmVsOiAne3sgXygnQ29tbWVudCcpIH19JywgdHlwZTogJ211bHRp bGluZScsIGNlbGw6CisgICAgICAgICAgJ3N0cmluZycsIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBtaW5fdmVyc2lvbjogOTA1 MDAsCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29uc3JjJywgbGFi ZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGluZScsIGNl bDoKKyAgICAgICAgICAnc3RyaW5nJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0 aW9uJykgfX0nLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLAorICAgICAgICAgICdj cmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1 cm4gIW0uaXNOZXcoKTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Nvbm5vaW5oZXJpdCcsIGxhYmVsOiAne3sgXygnTm8gSW5oZXJpdCcpIH19 JywgdHlwZToKKyAgICAgICAgICAnc3dpdGNoJywgY2VsbDogJ2Jvb2xlYW4n LCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIG1vZGU6CisgICAg ICAgICAgWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGRpc2Fi bGVkOiAnaXNEaXNhYmxlZCcsCisgICAgICAgICAgdmlzaWJsZTogZmFsc2UK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBs YWJlbDogInt7IF8oIkRvbid0IFZhbGlkYXRlIikgfX0iLCB0eXBlOiAnc3dp dGNoJywgY2VsbDoKKyAgICAgICAgICAnYm9vbGVhbicsIGdyb3VwOiAne3sg XygnRGVmaW5pdGlvbicpIH19JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgdmFy IHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKKyAgICAgICAgICAg IGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGVsc2UgaWYoIW0uZ2V0KCdjb252YWxpZGF0ZWQnKSkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfSwK KyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIHZpc2libGU6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCkgfQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2NvbnZhbGlkYXRlZF9wJywgbGFiZWw6ICd7 eyBfKCdWYWxpZD8nKSB9fScsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOgorICAg ICAgICAgICdib29sZWFuJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykg fX0nLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAgICAgIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH1dLAorICAgICAgICAvLyBDbGll bnQgU2lkZSBWYWxpZGF0aW9uCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAg IGVycm1zZzsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCduYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBl cnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1wdHkhJykg fX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnbmFt ZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdjb25zcmMnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdj b25zcmMnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewor ICAgICAgICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBfKCdDaGVjayBjYW4g bm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVy cm1zZyB8fCBlcnJbJ2NvbnNyYyddOworICAgICAgICAgIH0KKworICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIpOworCisgICAg ICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7CisgICAgICAgICAgICB0aGlzLnRy aWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVycm1zZ30pOworICAgICAgICAg ICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBy ZXR1cm4gbnVsbDsKKworICAgICAgICB9LAorICAgICAgICBpc0Rpc2FibGVk OiBmdW5jdGlvbihtKXsKKyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgewor ICAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZl cjsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICB9CisgICAgICB9KSwKKyAgfSk7CisKKyAgfQorCisg IHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iZTk0M2QyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApA QCAtMCwwICsxLDMgQEAKK3slIGlmIGRhdGEgYW5kIHNjaGVtYSBhbmQgZG9t YWluICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KHNjaGVtYSwg ZG9tYWluKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVu dChkYXRhLm5hbWUpIH19IENIRUNLICh7eyBkYXRhLmNvbnNyYyB9fSk7eyUg ZW5kaWYgLSV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3Bs dXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0K K0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBk YXRhLnJlbG5hbWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dl dF9kb21haW4uc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTA0MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9kb21h aW4uc3FsCkBAIC0wLDAgKzEsOCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1l IGFzIGRvbWFpbiwgYm4ubnNwbmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBw Z190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lk PWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjFfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90 ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9nZXRf b2lkLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29u bmFtZSBhcyBuYW1lCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUK KyAgICBjb250eXBpZCA9IHt7ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFt ZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9k b21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJv cGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMDQzZjAxMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4t Y29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMTQgQEAKK1NFTEVDVAorICAgIGMub2lkLCBjb25uYW1lIEFTIG5h bWUsIHR5cG5hbWUgQVMgcmVsbmFtZSwgbnNwbmFtZSwKKyAgICByZWdleHBf cmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUn Q0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEnKSBBUyBjb25zcmMKK0ZST00K KyAgICBwZ19jb25zdHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04g dC5vaWQ9Y29udHlwaWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04g bmwub2lkPXR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBjb250eXBlID0gJ2Mn IEFORCBjb250eXBpZCA9ICB7e2RvaWR9fTo6b2lkCit7JSBpZiBjb2lkICV9 CisgICAgQU5EIGMub2lkID0ge3sgY29pZCB9fQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0 cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9w bHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3Nx bC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI5OWJhNmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsMyBAQAoreyUgaWYgZGF0YS5uYW1lICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEu cmVsbmFtZSkgfX0KKyAgICBSRU5BTUUgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19O3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNjMzhk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDkgQEAKK3sl IGlmIGRhdGEgYW5kIHNjaGVtYSBhbmQgZG9tYWluICV9CitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIEFE RCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IENI RUNLICh7eyBkYXRhLmNvbnNyYyB9fSl7JSBpZiBkYXRhLmNvbnZhbGlkYXRl ZCAlfQorCisgICAgTk9UIFZBTElEeyUgZW5kaWYgJX07eyUgaWYgZGF0YS5k ZXNjcmlwdGlvbiAlfQorCisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiBET01BSU4ge3sgY29ubnxx dElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIElTICd7eyBkYXRhLmRl c2NyaXB0aW9uIH19Jzt7JSBlbmRpZiAlfXslIGVuZGlmICV9CmRpZmYgLS1n 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 c3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkOGIzNAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNv bnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzku Ml9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTcgQEAKK1NFTEVD VAorICAgIGMub2lkLCBjb25uYW1lIEFTIG5hbWUsIHR5cG5hbWUgQVMgcmVs bmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24sCisgICAgcmVnZXhwX3JlcGxh Y2UocGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQsIHRydWUpLCBFJ0NIRUNL IFxcKCguKilcXCkuKicsIEUnXFwxJykgQVMgY29uc3JjLAorICAgIGNvbm5v aW5oZXJpdCwgY29udmFsaWRhdGVkLCBjb252YWxpZGF0ZWQgQVMgY29udmFs aWRhdGVkX3AKK0ZST00KKyAgICBwZ19jb25zdHJhaW50IGMKK0pPSU4KKyAg ICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQKK0pPSU4KKyAgICBwZ19u YW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVzcGFjZQorTEVGVCBPVVRF UiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFpbnQnOjpyZWdj bGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9ICdjJyBBTkQgY29udHlwaWQg PSAge3tkb2lkfX06Om9pZAoreyUgaWYgY29pZCAlfQorICAgIEFORCBjLm9p ZCA9IHt7IGNvaWQgfX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvdXBk YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i NDM2ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEz IEBACit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRh Lm5hbWUgJX0KK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEu cmVsbmFtZSkgfX0KKyAgICBSRU5BTUUgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19O3slIGVuZGlmIC0lfXslIGlmIGRhdGEuY29udmFsaWRhdGVk ICV9CisKKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu bnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgVkFMSURBVEUgQ09O U1RSQUlOVCB7eyBjb25ufHF0SWRlbnQobmFtZSkgfX17JSBlbmRpZiAtJX17 JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChuYW1lKSB9fSBPTiBET01BSU4ge3sg Y29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEucmVsbmFtZSkg fX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7eyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9jb2xsLWRvbWFpbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvY29sbC1kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjU1NjIxNTI4YTFkYmE0OTI4NTM4ZmU1NTU3YjliOTg4ZWQ3OGQ2 YWIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ2Mgp6Y21lQVNATj8ob2xI eWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVU0VCFCRTBCSmVvcWZXPTtn RnswUEQ4X28KemkmcE5fKEspQjdgRlBpJTJpeGBAdjlMVSh0TlVRKiFLMWN6 WE94dWdnb0dUXygjcEB6ZjRKdyEhekhWKWAzRjdUCnpkLVVtfUh9YGlSSWlq Y2NAV3EjPiZwdGtSYFNzekc1NFV6NnpXNG1nP01Mc2daOWpiYj5FfnkhelRT QjlgUmUxKAp6alMxUzk5KF85aEBZQzRgQTVZKV5fXj5ASjMrTXZJa3w0aWUy OFUtaSh0c1MhMCp9YUlBbmdJaFpZUSh0ZlEpdWUKejdzbjhaJWJ8VUAjaE1n RVNVdnM0d0tvU3hPPn57Tz0tWXEkOF8hciktXmUlNC1sNmYtSm94MSU4fUZJ Vng+RkNXCnpQTVZ3bHVRR2JrUDFiY1N3VlYwZF8/UFpiWlZpcyVIZVlUV3lV KiRPdllwJHVUYzNRTGJEPzJ0ck9uRHVoWmE+Zgp6PTNkX3soekVSOXh0KDxu M1VzQkk0U05DP1khckJXPG0yYG4+eURSeWckdW9FOFF4fWJvMUQwcXc7dCN1 KWVfZjsKemw5YUBmUklCOG9SM09EKldNRjhaWWlPaXZVPklVI1V9YSkjV24h WGpVfXxNeFVAPW93NG47JDVlb0FJcUJ9OVhQCmVDMEdNVXdVdlB4TThtMStw PSpFfDcoOEE1VC1HQHlHeXdvUkNDMkxqCgpsaXRlcmFsIDAKSGNtVj9kMDAw MDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvZG9tYWluLXNtLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv c3RhdGljL2ltZy9kb21haW4tc20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjc1MjFjZGRlYWFhZjBlZTRlM2M2MGU5NDgwNzhkNzBlMTdlMDY4OTMK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQwMQp6Y21lQVNATj8ob2xIeWB1 VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVQ3WFo4RTBEZXU5ZXUqVjtnRnsw S2BwSWcKemM2S2ByNEllSUFjfVEzSHhWYD0zeStAeHVkVUpwR2t0MkZ+UG9J NSFeNzhBJENtKExASmJjWVI9OzRibV9udj5iCnp7cGtJKj9UN0QjZ3lpU3ZL WVI3e19TNFRkb194T2dfO1hgfF9ON09rJk9pS2dfUUEpfl9kbExvODV7dyRp TG9UZQp6RlBPcE0qXk0rSGhxSiZWdktVQnZmVSg9alkmIyQkJDx4SSNNQjtN cWBJQUJwMjBSVDl3VVhrYUwoMVIocE9uP2MKej4zODwrZT5LYU4yeyUwSmRA c01iWSQrMTNaJiVaPCUhUCsqU051KyMoe1JyPXtfS3hVaHN3SGRJRDBRV1RD QnZECnopXmt5O0BndWBFI1JBQyNsYEpjbmVsUzByeGtLTjdiMUI+SDU2Z1gp MCZQPCphZzhXUk5pMGRWTi1qelRRVmQyMAp6aDZjS1pNIUUpdUF3fnZQQ2RP N0tDZld3M1J0NSRaR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhKSXlkb1NH aUcKUTJCPzktKTc4JnFvbGA7KzAzX3EzZ2E3fmwKCmxpdGVyYWwgMApIY21W P2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv c3RhdGljL2ltZy9kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9zdGF0aWMvaW1nL2RvbWFpbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNDJjYTkyOTMyNTg1NGI4ZjM0Nzg3NDI1ZTgwOTRkMDhjNzU5ODNiYwpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDI0CnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9UEptQntFMEJKZW9xZlc9O2dGezBQ RDheNwp6aSZzNmBiTDhveEh9YGlSZEhVPypsYjJyfkpeNlRoPWl4XiR6VFNX Uzw/Zj5vSCtDSFVhXn1wVmZgYVd2TXQ3Zm0KengmOEY+amZkfkFZKEhGYG1V aVJHPVc5PHNVd1FCQEtSPkBRTEhvKyVQWnVBM0l7KXl+KiQxRF9Kb3RGKHt6 dkh0CnpvJXVsZjcpeWZ1ZipCbTEtQURzK0kxNC0/aS1FS1U3YHZVIXdnV1BY SnpYM19CcmNicGU9WEZjQW1TRk5lQzNxJgp6bCFaKyhSc1lOMTImLU5Xe1Aq XiM8cng4Ml8yLStpaSZTcWZHZ09gSmNqQDswMUBIVEh7JiY3I3Y/an1JKT1K Nm0KemVgfmhwcFpuNz9XQXwleiF9VDZwZj56MElqYlpyUzVJQ0QqMjc1Kl9i QW8pcjh0I1ZnNEEqTHopO3hjNEpLcTAzCnpYWEN9emQpWXdpUlpDbldOPlVP X1FtdkFVUWhea01rJTZJc3VBen54Zm5rVnxmdDg3fG01R1ZBZnZKXiZmeUdR IQpxSVRRYEtgNi0hY2xASlhFbVM3RGEpbTg+KDVEbGxNaHBxdT9WRE5QSGI2 TXc8JjskVk9SPUZxdQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9qcy9kb21haW5zLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9qcy9kb21haW5zLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjU5OGU1NDIKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL2pz L2RvbWFpbnMuanMKQEAgLTAsMCArMSwzMjMgQEAKKy8vIERvbWFpbiBNb2R1 bGU6IENvbGxlY3Rpb24gYW5kIE5vZGUuCitkZWZpbmUoCisgICAgICAgIFsn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAn cGdhZG1pbicsCisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0 aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlv bigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisK KyAgLy8gRGVmaW5lIERvbWFpbiBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10pIHsKKyAgICB2YXIgZG9t YWlucyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4nXSA9 CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewor ICAgICAgICBub2RlOiAnZG9tYWluJywKKyAgICAgICAgbGFiZWw6ICd7eyBf KCdEb21haW5zJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4n LAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnZGVzY3Jp cHRpb24nXQorICAgICAgfSk7CisgIH07CisKKyAgLy8gU2VjdXJpdHkgTW9k ZWwKKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1v ZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAg ICBkZWZhdWx0czogeworICAgICAgcHJvdmlkZXI6IG51bGwsCisgICAgICBz ZWN1cml0eV9sYWJlbDogbnVsbAorICAgIH0sCisgICAgc2NoZW1hOiBbewor ICAgICAgaWQ6ICdwcm92aWRlcicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXIn KSB9fScsCisgICAgICB0eXBlOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBj ZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICB9LHsK KyAgICAgIGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1Nl Y3VyaXR5IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0 YWJsZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRf NTAnCisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAg ICAgdmFyIGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGw7CisK KyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdzZWN1cml0eV9s YWJlbCcpKSB8fAorICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnc2VjdXJp dHlfbGFiZWwnKSkgfHwKKyAgICAgICAgU3RyaW5nKHRoaXMuZ2V0KCdzZWN1 cml0eV9sYWJlbCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7CisgICAgICAgICAgICBlcnJtc2cgPSAgJ3t7IF8oJ1BsZWFzZSBzcGVj aWZ5IHRoZSB2YWx1ZSBmb3IgYWxsIHRoZSBzZWN1cml0eSBwcm92aWRlcnMu Jyl9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZWN1 cml0eV9sYWJlbCcsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gZXJy bXNnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwudW5zZXQoJ3NlY3VyaXR5X2xhYmVsJyk7CisgICAgICAgICAg fQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsKKworICAvLyBD b25zdHJhaW50IE1vZGVsCisgIHZhciBDb25zdHJhaW50TW9kZWwgPSBwZ0Fk bWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGlkQXR0cmli dXRlOiAnY29ub2lkJywKKyAgICBkZWZhdWx0czogeworICAgICAgY29ub2lk OiB1bmRlZmluZWQsCisgICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisgICAg ICBjb25zcmM6IHVuZGVmaW5lZCwKKyAgICB9LAorICAgIHNjaGVtYTogW3sK KyAgICAgIGlkOiAnY29ubmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19 JywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF80MCcsIGVkaXRhYmxlOiAn aXNFZGl0YWJsZScKKyAgICB9LHsKKyAgICAgIGlkOiAnY29uc3JjJywgbGFi ZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGluZScsCisg ICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uVGV4dGFyZWFDZWxsLCBn cm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNjAnLCBlZGl0YWJsZTogJ2lz RWRpdGFibGUnCisgICAgfV0sCisgICAgaXNFZGl0YWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQobS5pc05ldykgPyB0 cnVlIDogbS5pc05ldygpOworICAgIH0sCisgICAgdG9KU09OOiBCYWNrYm9u ZS5Nb2RlbC5wcm90b3R5cGUudG9KU09OCisgIH0pOworCisgIC8vIERvbWFp biBOb2RlCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydkb21haW4nXSkgewor ICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ10gPSBwZ0Jyb3dz ZXIuTm9kZS5leHRlbmQoeworICAgICAgdHlwZTogJ2RvbWFpbicsCisgICAg ICBsYWJlbDogJ3t7IF8oJ0RvbWFpbicpIH19JywKKyAgICAgIGNvbGxlY3Rp b25fdHlwZTogJ2NvbGwtZG9tYWluJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwK KyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBwYXJlbnRfdHlwZTog WydzY2hlbWEnXSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworICAgICAg ICAvLyBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMKKyAg ICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1 cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAg ICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6 ICdjcmVhdGVfZG9tYWluX29uX2NvbGwnLCBub2RlOiAnY29sbC1kb21haW4n LCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3Qn LCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMn LAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQs IGxhYmVsOiAne3sgXygnRG9tYWluLi4uJykgfX0nLAorICAgICAgICAgIGlj b246ICd3Y1RhYkljb24gaWNvbi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAn Y3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2Nh bkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0 ZV9kb21haW4nLCBub2RlOiAnZG9tYWluJywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFp bi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t ZG9tYWluJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluJywgbm9kZTogJ3Nj aGVtYScsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29i amVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVy dGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0 eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4nKSB9fScsCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbicsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnLCBjaGVjazogZmFsc2V9LAorICAgICAgICAgIGVuYWJs ZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKworICAg ICAgfSwKKyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1h J10uY2FuQ2hpbGREcm9wLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJv d3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgLy8g RG9tYWluIE5vZGUgTW9kZWwKKyAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dz ZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBpbml0aWFsaXplOiBm dW5jdGlvbihhdHRycywgYXJncykgeworICAgICAgICAgIHZhciBpc05ldyA9 IChfLnNpemUoYXR0cnMpID09PSAwKTsKKyAgICAgICAgICBpZiAoaXNOZXcp IHsKKyAgICAgICAgICAgIC8vIFNldCBTZWxlY3RlZCBTY2hlbWEKKyAgICAg ICAgICAgIHNjaGVtYSA9IGFyZ3Mubm9kZV9pbmZvLnNjaGVtYS5sYWJlbAor ICAgICAgICAgICAgdGhpcy5zZXQoeydiYXNlbnNwJzogc2NoZW1hfSwge3Np bGVudDogdHJ1ZX0pOworCisgICAgICAgICAgICAvLyBTZXQgQ3VycmVudCBV c2VyCisgICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2Vy dmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOworICAg ICAgICAgICAgdGhpcy5zZXQoeydvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAgICAgIHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0sCisgICAgICAgIGRl ZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAg ICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIG93bmVyOiB1bmRlZmlu ZWQsCisgICAgICAgICAgYmFzZW5zcDogdW5kZWZpbmVkLAorICAgICAgICAg IGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgYmFzZXR5cGU6 IHVuZGVmaW5lZCwKKyAgICAgICAgICB0eXBsZW46IHVuZGVmaW5lZCwKKyAg ICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCwKKyAgICAgICAgICB0eXBk ZWZhdWx0OiB1bmRlZmluZWQsCisgICAgICAgICAgdHlwbm90bnVsbDogdW5k ZWZpbmVkLAorICAgICAgICAgIHN5c2RvbWFpbjogdW5kZWZpbmVkLAorICAg ICAgICAgIGNvbGxuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgY29uc3Ry YWludHM6IFtdLAorICAgICAgICAgIHNlY2xhYmVsczogW10KKyAgICAgICAg fSwKKyAgICAgICAgdHlwZV9vcHRpb25zOiB1bmRlZmluZWQsCisgICAgICAg IC8vIERvbWFpbiBTY2hlbWEKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAg ICAgIGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScs IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1v ZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnb3duZXInLCBsYWJlbDone3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdz dHJpbmcnLCBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRy b2wsCisgICAgICAgICAgbm9kZTogJ3JvbGUnLCAgdHlwZTogJ3RleHQnLCBt b2RlOiBbJ2VkaXQnLCAnY3JlYXRlJywgJ3Byb3BlcnRpZXMnXQorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2Jhc2Vuc3AnLCBsYWJlbDone3sgXygn U2NoZW1hJykgfX0nLCBjZWxsOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAg ICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBjYWNoZV9s ZXZlbDogJ2RhdGFiYXNlJywgdHlwZTogJ3RleHQnLAorICAgICAgICAgICBu b2RlOiAnc2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rl c2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnYmFzZXR5cGUnLCBsYWJlbDone3sg XygnQmFzZSBUeXBlJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgY29udHJvbDog J25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3Vw OiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgdXJsOiAnZ2V0X3R5cGVzJywK KyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gIW0u aXNOZXcoKTsgfSwgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgdHJh bnNmb3JtOiBmdW5jdGlvbihkKXsKKyAgICAgICAgICAgIHRoaXMubW9kZWwu dHlwZV9vcHRpb25zID0gIGQ7CisgICAgICAgICAgICByZXR1cm4gZDsKKyAg ICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlwbGVu JywgbGFiZWw6J3t7IF8oJ0xlbmd0aCcpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScsIGRlcHM6IFsnYmFzZXR5cGUnXSwKKyAgICAgICAgICBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gV2Ugd2ls bCBzdG9yZSB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAg ICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgb2Zf dHlwZSA9IG0uZ2V0KCdiYXNldHlwZScpOworICAgICAgICAgICAgaWYobS50 eXBlX29wdGlvbnMpIHsKKyAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIG92 ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgICAgICBfLmVhY2gobS50eXBl X29wdGlvbnMsIGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgICAgICAgICAvLyBp ZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGlu IG9wdGlvbnMKKyAgICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52 YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgbGVuZ3RoIGlz IGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAgICAgICAgICAg ICAgaWYoby5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAor ICAgICAgICAgICAgICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywgdHJ1 ZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICAgIG0u c2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7Cisg ICAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ21heF92YWwnLCBvLm1heF92 YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICByZXR1cm4gIW0uZ2V0KCdpc190bGVuZ3Ro Jyk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3ByZWNpc2lvbicsIGxhYmVsOid7eyBfKCdQcmVjaXNpb24nKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6 ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBkZXBzOiBbJ2Jhc2V0eXBlJ10s CisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIC8vIFdlIHdpbGwgc3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20g Y29tYm9ib3gKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgnYmFzZXR5cGUnKTsKKyAgICAg ICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAgICAgICAgICAgIC8v IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgdHlwZXMKKyAgICAgICAgICAgICAg Xy5lYWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAgICAg ICAgICAgICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9i b3ggbWF0Y2hlcyBpbiBvcHRpb25zCisgICAgICAgICAgICAgICAgaWYgKCBv Zl90eXBlID09IG8udmFsdWUgKSB7CisgICAgICAgICAgICAgICAgICAgIC8v IGlmIHByZWNlc3Npb24gaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQor ICAgICAgICAgICAgICAgICAgICBpZihvLnByZWNpc2lvbikKKyAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0 aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ2lzX3ByZWNpc2lvbicsIHRydWUsIHtzaWxlbnQ6IHRydWV9KTsKKyAg ICAgICAgICAgICAgICAgICAgICBtLnNldCgnbWluX3ZhbCcsIG8ubWluX3Zh bCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICAgIG0u c2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0 dXJuICFtLmdldCgnaXNfcHJlY2lzaW9uJyk7CisgICAgICAgICAgfQorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGRlZmF1bHQnLCBsYWJlbDon e3sgXygnRGVmYXVsdCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAg ICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9 fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0eXBub3RudWxsJywg bGFiZWw6J3t7IF8oJ05vdCBOdWxsJykgfX0nLCBjZWxsOiAnYm9vbGVhbics CisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3N5 c2RvbWFpbicsIGxhYmVsOid7eyBfKCdTeXN0ZW0gRG9tYWluPycpIH19Jywg Y2VsbDogJ2Jvb2xlYW4nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBn cm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIG1vZGU6IFsncHJvcGVy dGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29sbG5hbWUn LCBsYWJlbDone3sgXygnQ29sbGF0aW9uJykgfX0nLCBjZWxsOiAnc3RyaW5n JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgICB0 eXBlOiAndGV4dCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19Jywg dXJsOiAnZ2V0X2NvbGxhdGlvbnMnLCBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3KCk7CisgICAgICAgICAg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbnN0cmFpbnRzJywg bGFiZWw6J3t7IF8oJ0NvbnN0cmFpbnRzJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAne3sg XygnQ29uc3RyYWludHMnKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKKyAgICAgICAgICBtb2RlbDogQ29uc3RyYWludE1vZGVsLCBjYW5BZGQ6 IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0OiBm YWxzZQorICAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzZWNsYWJlbHMn LCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5IExhYmVscycpIH19JywKKyAgICAg ICAgICBtb2RlbDogU2VjdXJpdHlNb2RlbCwgdHlwZTogJ2NvbGxlY3Rpb24n LAorICAgICAgICAgIGdyb3VwOiAne3sgXygnU2VjdXJpdHknKSB9fScsIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtaW5fdmVyc2lv bjogOTAxMDAsIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0OiBm YWxzZSwgY2FuRGVsZXRlOiB0cnVlCisgICAgICAgIH0KKyAgICAgICAgXSwK KyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgLy8gQ2xpZW50IFNpZGUg VmFsaWRhdGlvbgorICAgICAgICB7CisgICAgICAgICAgdmFyIGVyciA9IHt9 LAorICAgICAgICAgICAgICBlcnJtc2csCisgICAgICAgICAgICAgIHNlY2xh YmVscyA9IHRoaXMuZ2V0KCdzZWNsYWJlbHMnKTsKKworICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1lJykpIHx8IFN0cmluZyh0 aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSB7CisgICAgICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1l IGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNn ID0gZXJybXNnIHx8IGVyclsnbmFtZSddOworICAgICAgICAgIH0KKworICAg ICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdiYXNldHlwZScp KSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Jhc2V0eXBlJykpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnYmFz ZXR5cGUnXSA9ICd7eyBfKCdCYXNlIFR5cGUgY2FuIG5vdCBiZSBlbXB0eSEn KSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydi YXNldHlwZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChzZWNs YWJlbHMpIHsKKyAgICAgICAgICAgIHZhciBzZWNMYWJlbHNFcnI7CisgICAg ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlY2xhYmVscy5tb2RlbHMu bGVuZ3RoICYmICFzZWNMYWJlbHNFcnI7IGkrKykgeworICAgICAgICAgICAg ICBzZWNMYWJlbHNFcnIgPSAoc2VjbGFiZWxzLm1vZGVsc1tpXSkudmFsaWRh dGUuYXBwbHkoc2VjbGFiZWxzLm1vZGVsc1tpXSk7CisgICAgICAgICAgICAg IGlmIChzZWNMYWJlbHNFcnIpIHsKKyAgICAgICAgICAgICAgICBlcnJbJ3Nl Y2xhYmVscyddID0gc2VjTGFiZWxzRXJyOworICAgICAgICAgICAgICAgIGVy cm1zZyA9IGVycm1zZyB8fCBzZWNMYWJlbHNFcnI7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKKworICAgICAgICAg IHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KSwKKyAgICAgIGNh bkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAg ICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQorICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNr ID09IGZhbHNlKQorICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg IHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURh dGE7CisgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNr IHBhcmVudCBub2RlCisgICAgICAgIHdoaWxlIChpKSB7CisgICAgICAgICAg Ly8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUg ZG9tYWluCisgICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBk Ll90eXBlKSA+IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg ICAgICAgICBpZiAoJ2NvbGwtZG9tYWluJyA9PSBkLl90eXBlKSB7CisgICAg ICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxv ZworICAgICAgICAgICAgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBh cmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kg PyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOworICAgICAgICAgICAgaWYo IHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKKyAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg fQorICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbDsKKyAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBu dWxsOworICAgICAgICB9CisgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8g bm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICB9LAorICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24o bSl7CisgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAg IHZhciBzZXJ2ZXIgPSB0aGlzLm5vZGVfaW5mby5zZXJ2ZXI7CisgICAgICAg ICAgICBpZiAoc2VydmVyLnZlcnNpb24gPCA5MDIwMCkKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg fQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgfQorICB9KTsKKworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rl c1snZG9tYWluJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2NyZWF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmY4YjBiNzUKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMzAgQEAKK3slIGlt cG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNM QUJMRSAlfQoreyUgaWYgZGF0YSAlfQorQ1JFQVRFIERPTUFJTiB7eyBjb25u fHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQVMg e3sgY29ubnxxdFR5cGVJZGVudChkYXRhLmJhc2V0eXBlKSB9fXslIGlmIGRh dGEudHlwbGVuICV9KHt7ZGF0YS50eXBsZW59fXslIGlmIGRhdGEucHJlY2lz aW9uICV9LHt7ZGF0YS5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlm ICV9eyUgaWYgZGF0YS5jb2xsbmFtZSAlfQorCisgICAgQ09MTEFURSB7eyBk YXRhLmNvbGxuYW1lIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGRlZmF1 bHQgJX0KKworICAgIERFRkFVTFQge3sgZGF0YS50eXBkZWZhdWx0IH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnR5cG5vdG51bGwgJX0KKworICAgIE5PVCBO VUxMeyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9eyUgZm9y IGMgaW4gZGF0YS5jb25zdHJhaW50cyAlfXslIGlmIGMuY29ubmFtZSBhbmQg Yy5jb25zcmMgJX0KKworICAgIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50 KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19KXslIGVuZGlm IC0lfQoreyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9OworCit7JSBpZiBk YXRhLm93bmVyICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fSBPV05FUiBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5vd25lcikgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmRl c2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxx dElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7 eyBkYXRhLmRlc2NyaXB0aW9uIH19Jzt7JSBlbmRpZiAtJX17JSBpZiBkYXRh LnNlY2xhYmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0K K3slIGlmIHIuc2VjdXJpdHlfbGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwor Cit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0RPTUFJTicsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9 fXslIGVuZGlmIC0lfQoreyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9CisK K3slIGVuZGlmIC0lfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uN2ExMmI1MAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku MV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxNiBAQAoreyUgaWYgc2Np ZCBhbmQgZG9pZCAlfQorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIG5hbWUs IGJuLm5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX3R5cGUgZAor Sk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1l c3BhY2UKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6 b2lkCitBTkQKKyAgICBkLm9pZD17e2RvaWR9fTo6aW50OworeyUgZW5kaWYg JX0KKworeyUgaWYgbmFtZSAlfQorRFJPUCBET01BSU4ge3sgY29ubnxxdElk ZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2FzY2FkZSAlfSBDQVNDQURF eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3Bs dXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlv bnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgx OWZkYmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0 aW9ucy5zcWwKQEAgLTAsMCArMSwxMCBAQAorU0VMRUNUIC0tbnNwbmFtZSwg Y29sbG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAg QU5EIGxlbmd0aChjb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQobnNw bmFtZSwgJy4iJywgY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFT IGNvcHlfY29sbGF0aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBn X25hbWVzcGFjZSBuCitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9p ZAorT1JERVIgQlkKKyAgICBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9n ZXRfY29uc3RyYWludHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjg5N2ZiMjQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1 cy9nZXRfY29uc3RyYWludHMuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK1NFTEVD VAorICAgICdET01BSU4nIEFTIG9iamVjdGtpbmQsIGMub2lkIGFzIGNvbm9p ZCwgY29ubmFtZSwgdHlwbmFtZSBhcyByZWxuYW1lLCBuc3BuYW1lLCBkZXNj cmlwdGlvbiwKKyAgICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWlu dGRlZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdc XDEnKSBhcyBjb25zCitGUk9NCisgICAgcGdfY29uc3RyYWludCBjCitKT0lO CisgICAgcGdfdHlwZSB0IE9OIHQub2lkPWNvbnR5cGlkCitKT0lOCisgICAg cGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD10eXBuYW1lc3BhY2UKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6 cmVnY2xhc3MpCitXSEVSRQorICAgIGNvbnR5cGUgPSAnYycKKyAgICBBTkQg Y29udHlwaWQgPSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkgY29ubmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv Z2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOGI1Yzg5MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9v aWQuc3FsCkBAIC0wLDAgKzEsMTggQEAKK3slIGlmIGRvaWQgJX0KK1NFTEVD VAorICAgIGQudHlwbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ190 eXBlIGQKK1dIRVJFCisgICAgZC5vaWQ9e3sgZG9pZCB9fTo6b2lkOworeyUg ZWxzZSAlfQorU0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZXNwYWNlCitG Uk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJu IE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3Bu YW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgZC50eXBu YW1lPXt7IG5hbWV8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMV9wbHVzL25vZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkM2U1Ygot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL25vZGUuc3FsCkBAIC0wLDAg KzEsMTMgQEAKK1NFTEVDVAorICAgIGQub2lkLCBkLnR5cG5hbWUgYXMgbmFt ZSwgcGdfZ2V0X3VzZXJieWlkKGQudHlwb3duZXIpIGFzIG93bmVyLAorICAg IGJuLm5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX3R5cGUgZAor Sk9JTgorICAgIHBnX3R5cGUgYiBPTiBiLm9pZCA9IGQudHlwYmFzZXR5cGUK K0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFt ZXNwYWNlCitXSEVSRQorICAgIGQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06 Om9pZAorT1JERVIgQlkKKyAgICBkLnR5cG5hbWU7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85 LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYWYz OWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNx bApAQCAtMCwwICsxLDM1IEBACitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBu YW1lIGFzIG5hbWUsIGQudHlwYmFzZXR5cGUsIGZvcm1hdF90eXBlKGIub2lk LE5VTEwpIGFzIGJhc2V0eXBlLAorICAgIHBnX2dldF91c2VyYnlpZChkLnR5 cG93bmVyKSBhcyBvd25lciwKKyAgICBjLm9pZCBBUyBjb2xsb2lkLCBmb3Jt YXRfdHlwZShiLm9pZCwgZC50eXB0eXBtb2QpIEFTIGZ1bGx0eXBlLAorICAg IENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgo Yy5jb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwg Jy4iJywgYy5jb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29s bG5hbWUsCisgICAgZC50eXB0eXBtb2QsIGQudHlwbm90bnVsbCwgZC50eXBk ZWZhdWx0LCBkLnR5cG5kaW1zLCBkLnR5cGRlbGltLCBibi5uc3BuYW1lIGFz IGJhc2Vuc3AsCisgICAgZGVzY3JpcHRpb24sIChTRUxFQ1QgQ09VTlQoMSkg RlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWU9ZC50eXBuYW1lKSA+ IDEgQVMgZG9taXNkdXAsCisgICAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBn X3R5cGUgdDMgV0hFUkUgdDMudHlwbmFtZT1iLnR5cG5hbWUpID4gMSBBUyBi YXNlaXNkdXAsCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJv dmlkZXIgfHwgJz0nIHx8IGxhYmVsKQorICAgIEZST00KKyAgICAgICAgcGdf c2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAgICAgc2wxLm9iam9pZD1k Lm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lO CisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNldHlwZQorSk9J TgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3Bh Y2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBP TiAoZGVzLm9iam9pZD1kLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190eXBl Jzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19jb2xsYXRp b24gYyBPTiBkLnR5cGNvbGxhdGlvbj1jLm9pZAorTEVGVCBPVVRFUiBKT0lO CisgICAgcGdfbmFtZXNwYWNlIGNuIE9OIGMuY29sbG5hbWVzcGFjZT1jbi5v aWQKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lk CisgICAgeyUgaWYgZG9pZCAlfQorICAgIEFORCBkLm9pZD17e2RvaWR9fTo6 aW50CisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZCisgICAgZC50eXBuYW1l OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0 ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNmZmNDA1MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3VwZGF0 ZS5zcWwKQEAgLTAsMCArMSw2NCBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2No ZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpZiBk YXRhICV9Cit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBk YXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAl fQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG9fZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRl bnQoZGF0YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9 Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEudHlw bm90bnVsbCBhbmQgbm90IG9fZGF0YS50eXBub3RudWxsICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIFNFVCBOT1QgTlVMTDsKK3slIGVsaWYgJ3R5cG5vdG51bGwnIGlu IGRhdGEgYW5kIG5vdCBkYXRhLnR5cG5vdG51bGwgYW5kIG9fZGF0YS50eXBu b3RudWxsJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBOT1QgTlVMTDsKK3slIGVu ZGlmIC0lfXslIGlmIGRhdGEudHlwZGVmYXVsdCAlfQorQUxURVIgRE9NQUlO IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAg ICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQgfX07Cit7JSBlbGlm IG5vdCBkYXRhLnR5cGRlZmF1bHQgYW5kIG9fZGF0YS50eXBkZWZhdWx0ICV9 CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIERST1AgREVGQVVMVDsKK3slIGVuZGlmIC0lfXsl IGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7 eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0 cmFpbnRzLmRlbGV0ZWQgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTlNU UkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX07Cit7JSBlbmRm b3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9 Cit7JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFt ZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19ICk7eyUgZW5kaWYgLSV9Cit7 JSBlbmRmb3IgLSV9eyUgZW5kaWYgLSV9Cit7JSBzZXQgc2VjbGFiZWxzID0g ZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJl bHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZv ciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5VTlNF VChjb25uLCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJh c2Vuc3ApIH19CisKK3slIGVuZGZvciAtJX0KK3slIGVuZGlmICV9Cit7JSBp ZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxl bmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQor e3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KKwor eyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7eyBTRUNM QUJMRS5TRVQoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIu c2VjdXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQorCit7JSBlbmRm b3IgLSV9Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9 CitDT01NRU5UIE9OIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxx dExpdGVyYWwgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmJhc2Vuc3AgJX0K KworCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50 KGRhdGEuYmFzZW5zcCkgfX07eyUgZW5kaWYgLSV9Cit7JSBlbmRpZiAtJX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmU4OTM2OWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVhdGUu c3FsCkBAIC0wLDAgKzEsMzAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0 YSAlfQorQ1JFQVRFIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNl bnNwLCBkYXRhLm5hbWUpIH19CisgICAgQVMge3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLmJhc2V0eXBlKSB9fXslIGlmIGRhdGEudHlwbGVuICV9KHt7ZGF0 YS50eXBsZW59fXslIGlmIGRhdGEucHJlY2lzaW9uICV9LHt7ZGF0YS5wcmVj aXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgZGF0YS5jb2xs bmFtZSBhbmQgZGF0YS5jb2xsbmFtZSAhPSAicGdfY2F0YWxvZy5cImRlZmF1 bHRcIiIgJX0KKworICAgIENPTExBVEUge3sgZGF0YS5jb2xsbmFtZSB9fXsl IGVuZGlmICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CisKKyAgICBERUZB VUxUIHt7IGRhdGEudHlwZGVmYXVsdCB9fXslIGVuZGlmICV9eyUgaWYgZGF0 YS50eXBub3RudWxsICV9CisKKyAgICBOT1QgTlVMTHslIGVuZGlmICV9eyUg aWYgZGF0YS5jb25zdHJhaW50cyAlfXslIGZvciBjIGluIGRhdGEuY29uc3Ry YWludHMgJX17JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKKyAg ICBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENI RUNLICh7eyBjLmNvbnNyYyB9fSl7JSBlbmRpZiAtJX0KK3slIGVuZGZvciAt JX0KK3slIGVuZGlmIC0lfTsKKworeyUgaWYgZGF0YS5vd25lciAlfQorQUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0gT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIp IH19O3slIGVuZGlmICV9eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCisK K0NPTU1FTlQgT04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vu c3AsIGRhdGEubmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlv biB9fSc7eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3sl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5 X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKKwore3sgU0VDTEFCTEUuU0VU KGNvbm4sICdET01BSU4nLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2Vj dXJpdHlfbGFiZWwsIGRhdGEuYmFzZW5zcCkgfX17JSBlbmRpZiAtJX0KK3sl IGVuZGZvciAtJX0KK3slIGVuZGlmIC0lfQorCit7JSBlbmRpZiAtJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMl9wbHVzL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9kZWxl dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdh MTJiNTAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9kZWxldGUuc3Fs CkBAIC0wLDAgKzEsMTYgQEAKK3slIGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NF TEVDVAorICAgIGQudHlwbmFtZSBhcyBuYW1lLCBibi5uc3BuYW1lIGFzIGJh c2Vuc3AKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1l c3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAg IGQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorQU5ECisgICAgZC5v aWQ9e3tkb2lkfX06OmludDsKK3slIGVuZGlmICV9CisKK3slIGlmIG5hbWUg JX0KK0RST1AgRE9NQUlOIHt7IGNvbm58cXRJZGVudChiYXNlbnNwLCBuYW1l KSB9fXslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25z LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTljMTdkCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAg KzEsMTAgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1lLAorICAgIENB U0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5h bWUpID4gMCAgVEhFTgorICAgIGNvbmNhdChuc3BuYW1lLCAnLiInLCBjb2xs bmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29weV9jb2xsYXRpb24K K0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dI RVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCitPUkRFUiBCWQorICAg IG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0 X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY5NTZi ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50 cy5zcWwKQEAgLTAsMCArMSwxNSBAQAorU0VMRUNUCisgICAgJ0RPTUFJTicg QVMgb2JqZWN0a2luZCwgYy5vaWQgYXMgY29ub2lkLCBjb25uYW1lLCB0eXBu YW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHJl Z2V4cF9yZXBsYWNlKHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVl KSwgRSdDSEVDSyBcXCgoLiopXFwpLionLCBFJ1xcMScpIGFzIGNvbnNyYywg Y29ubm9pbmhlcml0LCBjb252YWxpZGF0ZWQKK0ZST00KKyAgICBwZ19jb25z dHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlw aWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5h bWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X2NvbnN0cmFpbnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9 ICdjJyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkK KyAgICBjb25uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi44YjVjODkxCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOCBAQAoreyUgaWYg ZG9pZCAlfQorU0VMRUNUCisgICAgZC50eXBuYW1lc3BhY2UgYXMgc2NpZAor RlJPTQorICAgIHBnX3R5cGUgZAorV0hFUkUKKyAgICBkLm9pZD17eyBkb2lk IH19OjpvaWQ7Cit7JSBlbHNlICV9CitTRUxFQ1QKKyAgICBkLm9pZCwgZC50 eXBuYW1lc3BhY2UKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBw Z19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVS RQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQor ICAgIEFORCBkLnR5cG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07Cit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvbm9kZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJf cGx1cy9ub2RlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43YmQzZTViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvbm9k ZS5zcWwKQEAgLTAsMCArMSwxMyBAQAorU0VMRUNUCisgICAgZC5vaWQsIGQu dHlwbmFtZSBhcyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQoZC50eXBvd25lcikg YXMgb3duZXIsCisgICAgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisg ICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0g ZC50eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBi bi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisgICAgZC50eXBuYW1lc3Bh Y2UgPSB7e3NjaWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGQudHlwbmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3Bs dXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMjg5Mjk4OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzQgQEAKK1NFTEVDVAorICAg IGQub2lkLCBkLnR5cG5hbWUgYXMgbmFtZSwgZC50eXBiYXNldHlwZSwgZm9y bWF0X3R5cGUoYi5vaWQsTlVMTCkgYXMgYmFzZXR5cGUsIHBnX2dldF91c2Vy YnlpZChkLnR5cG93bmVyKSBhcyBvd25lciwKKyAgICBjLm9pZCBBUyBjb2xs b2lkLCBmb3JtYXRfdHlwZShiLm9pZCwgZC50eXB0eXBtb2QpIEFTIGZ1bGx0 eXBlLAorICAgIENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFO RCBsZW5ndGgoYy5jb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQoY24u bnNwbmFtZSwgJy4iJywgYy5jb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBF TkQgQVMgY29sbG5hbWUsCisgICAgZC50eXB0eXBtb2QsIGQudHlwbm90bnVs bCwgZC50eXBkZWZhdWx0LCBkLnR5cG5kaW1zLCBkLnR5cGRlbGltLCBibi5u c3BuYW1lIGFzIGJhc2Vuc3AsCisgICAgZGVzY3JpcHRpb24sIChTRUxFQ1Qg Q09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWU9ZC50 eXBuYW1lKSA+IDEgQVMgZG9taXNkdXAsCisgICAgKFNFTEVDVCBDT1VOVCgx KSBGUk9NIHBnX3R5cGUgdDMgV0hFUkUgdDMudHlwbmFtZT1iLnR5cG5hbWUp ID4gMSBBUyBiYXNlaXNkdXAsCisgICAgKFNFTEVDVAorICAgICAgICBhcnJh eV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKQorICAgIEZST00KKyAg ICAgICAgcGdfc2hzZWNsYWJlbCBzbDEKKyAgICBXSEVSRQorICAgICAgICBz bDEub2Jqb2lkPWQub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00KKyAgICBwZ190 eXBlIGQKK0pPSU4KKyAgICBwZ190eXBlIGIgT04gYi5vaWQgPSBkLnR5cGJh c2V0eXBlCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1k LnR5cG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3Jp cHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWQub2lkIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX3R5cGUnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAg IHBnX2NvbGxhdGlvbiBjIE9OIGQudHlwY29sbGF0aW9uPWMub2lkCitMRUZU IE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgY24gT04gYy5jb2xsbmFt ZXNwYWNlPWNuLm9pZAorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK3slIGlmIGRvaWQgJX0KKyAgQU5EIGQub2lkPXt7ZG9p ZH19OjppbnQKK3slIGVuZGlmICV9CitPUkRFUiBCWQorICAgIGQudHlwbmFt ZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1 cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmVjYzdlOWEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy91cGRh dGUuc3FsCkBAIC0wLDAgKzEsNjQgQEAKK3slIGltcG9ydCAnbWFjcm9zL3Nj aGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYg ZGF0YSAlfQoreyUgc2V0IG5hbWUgPSBvX2RhdGEubmFtZSAlfQoreyUgaWYg ZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgIT0gb19kYXRhLm5hbWUg JX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1l ICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEu dHlwbm90bnVsbCBhbmQgbm90IG9fZGF0YS50eXBub3RudWxsICV9CitBTFRF UiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorICAgIFNFVCBOT1QgTlVMTDsKK3slIGVsaWYgJ3R5cG5vdG51bGwn IGluIGRhdGEgYW5kIG5vdCBkYXRhLnR5cG5vdG51bGwgYW5kIG9fZGF0YS50 eXBub3RudWxsJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBOT1QgTlVMTDsKK3sl IGVuZGlmIC0lfXslIGlmIGRhdGEudHlwZGVmYXVsdCAlfQorQUxURVIgRE9N QUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K KyAgICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHQgfX07Cit7JSBl bGlmIG5vdCBkYXRhLnR5cGRlZmF1bHQgYW5kIG9fZGF0YS50eXBkZWZhdWx0 ICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIERST1AgREVGQVVMVDsKK3slIGVuZGlmIC0l fXslIGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBPV05FUiBU TyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07eyUgZW5kaWYgJX17 JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNv bnN0cmFpbnRzLmRlbGV0ZWQgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX07Cit7JSBl bmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVk ICV9Cit7JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9CisKK0FMVEVS IERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUp IH19CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29u bmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19KXslIGlmIGMuY29udmFs aWRhdGVkICV9CisgICAgTk9UIFZBTElEeyUgZW5kaWYgJX17JSBpZiBjLmNv bm5vaW5oZXJpdCAlfSBOTyBJTkhFUklUeyUgZW5kaWYgLSV9O3slIGVuZGlm IC0lfQoreyUgZW5kZm9yIC0lfXslIGVuZGlmIC0lfQoreyUgc2V0IHNlY2xh YmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4g c2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxsZW5ndGggPiAwICV9 Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFC TEUuVU5TRVQoY29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIG9f ZGF0YS5iYXNlbnNwKSB9fQorCit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0l fQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5h ZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRk ZWQgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1l LCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5z cCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9eyUgaWYgJ2NoYW5n ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KKwor e3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5kZXNjcmlwdGlv biAlfQorCitDT01NRU5UIE9OIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgSVMge3sgZGF0YS5kZXNjcmlw dGlvbnxxdExpdGVyYWwgfX07eyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5iYXNl bnNwICV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0 SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTt7JSBlbmRpZiAtJX0KK3slIGVuZGlm IC0lfQo= --001a11401c4cd6d4f0052e2af903 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 --001a11401c4cd6d4f0052e2af903--