Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dOOaU-00075I-OO for pgadmin-hackers@arkaria.postgresql.org; Fri, 23 Jun 2017 13:25:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dOOaU-0004Ja-2e for pgadmin-hackers@arkaria.postgresql.org; Fri, 23 Jun 2017 13:25:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dOOaT-0004JQ-HF for pgadmin-hackers@lists.postgresql.org; Fri, 23 Jun 2017 13:25:25 +0000 Received: from mail-yw0-x232.google.com ([2607:f8b0:4002:c05::232]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dOOaC-0000en-Nb for pgadmin-hackers@postgresql.org; Fri, 23 Jun 2017 13:25:24 +0000 Received: by mail-yw0-x232.google.com with SMTP id t127so6115424ywc.3 for ; Fri, 23 Jun 2017 06:25:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=cPpwLvaMlmEQJk8AY6WOgjrXIBtwxkZoihsYNdB+4/I=; b=FEZmAyGIhFwF/+1dXil20YJgcD9f+ZzEsXSkG2bTgowT0dGYWRUjKe51KkALKi7GWf GhfajO5dXI5CdCc62BeDs6CBKMTcHf/cKy4BCC5kk1Mg+/EPMzjE6Ja6ALrnW+ZU4jrY VK4rAl3pcvD73HNpgdECD5zHynq0JysA///y/10ChyMrOqCLtqpd6bzuvW2/V+AVyXOu Vmq4hXPCczGQsjjFQvqRijPJVBufrWK0/XavIqo8yMg1xTYdpAT8C6VOFJLJbyqzIR1j B1VzoNw65jflqOtnxFK5Y60EJY8WN0quc39dbYCjGt8ao7Kgva0WBTXbA2cVk5uyOeCw Jmkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=cPpwLvaMlmEQJk8AY6WOgjrXIBtwxkZoihsYNdB+4/I=; b=MdZnttCANue8kcxuLr1FaBxlKQIBf8id6M1gCHwIboo+pEU+8lEDNbpgZktbXPTCwQ 8T3x0j59x6HiGg5Ggws7T0uMli+OsylsArG5y45YFXU25Kt5D8mtw36v8BSzHw1/BP9B Oqr76AA250BHngCegGuV6Xycc6Kt0ZyLj1SvGNazcMvnNpPgj2QOffzdZSczEffuwhYJ nXGbOCk6PhFSG5KXdBe8ZTvORxUNv1tvrESDIwsEzcEi7etlU66bb52QO7QNg+I7/SA0 CxB/+B7dlgxE0isPoEn45awrEmbxVWsie++Kb0Kb1hpPN08EGBzw/hC3Eybg1wBDeMwn WLKg== X-Gm-Message-State: AKS2vOwe+u9Td8JtN9XpCp8q3Lj9DZnL1VOs42a0iPL1TomqjLJhYxyp gVmpvN5aeKozjbPKcQwaXXVF1qwT/rRc X-Received: by 10.129.90.87 with SMTP id o84mr6155524ywb.61.1498224306013; Fri, 23 Jun 2017 06:25:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.13.193.68 with HTTP; Fri, 23 Jun 2017 06:25:04 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Fri, 23 Jun 2017 18:55:04 +0530 Message-ID: Subject: Re: [pgadmin-hackers] Declarative partitioning in pgAdmin4 To: pgadmin-hackers Cc: Akshay Joshi , Dave Page , Robert Eckhardt , Shirley Wang Content-Type: multipart/mixed; boundary="001a1149153e8e180d0552a0876d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Unsubscribe: , List-Archive: Precedence: bulk --001a1149153e8e180d0552a0876d Content-Type: multipart/related; boundary="001a1149153e8e18050552a0876c" --001a1149153e8e18050552a0876c Content-Type: multipart/alternative; boundary="001a1149153e8e17fc0552a0876b" --001a1149153e8e17fc0552a0876b Content-Type: text/plain; charset="UTF-8" Hi, Please find attached patch for partition support. This patch includes all the work done by Akashy and support for child nodes (constraints, rules, index, triggers and partition itself ) under partition node. Thanks, -- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wang wrote: > > > On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> On Fri, Jun 16, 2017 at 11:16 PM, Shirley Wang wrote: >> >>> Looks good. I noticed people clicking back and forth to the columns tab >>> to remember which columns they've created while filling out the Expressions >>> column. It might be better to have a list of the columns and the datatype >>> above the 'Partition Keys' subnode and have columns as a type field rather >>> than a drop down. >>> >> >> I think we should not duplicate that data as we already have all the >> information on "Columns" tab and by providing drop down user can select >> columns from there only. >> >>> >>> Also, I think the fields someone sees after selecting the Key type needs >>> to depend on what they select. Seeing both Column and Expressions type >>> field might lead someone to think they need to fill out both fields. >>> >> >> We can't, because user can select one column and provide an expression >> as partition key in this case we will have to show both the columns in >> subnode control. Anyways when user select columns I have disabled the >> expression cell and if user selects expression column cell is disabled. >> > > Ah I see what you mean. What I meant was that the column would change > depending on if someone selects Column or Expressions from the dropdown > [image: expression.png] > Can a user select more than one key type? The use case I can see where > hiding 'Columns' or 'Expressions' would fail is if someone can create an > expression key type and a column key type. > > Disabling a feature is one way to guide user behavior, but it doesn't > provide enough context for someone to understand why it's disabled. It's > better to only display what is absolutely necessary and hide fields that > are unrelated to the workflow. > > Typically, disabling a UI element is useful when that disabled UI element > also provides some context or value while disabled. In this case, I'm not > sure it is. > > If hiding options isn't possible, providing some text in the fields (like > N/A or --) would be helpful. > > > >> >>> [image: coluns_partitioning.png] >>> When is the 'In' column in the Partitions subnode enabled? >>> >> >> In case of 'List' Partition. >> > > It would improve the experience if the 'In' column was removed when a user > selects 'Range' partitions then. And then if a user is creating a 'List' > partition, 'From/To' should be hidden. In this case, 'From/To' and 'In' are > dependent on that first drop down step, so seeing 'In' while on 'Range > partitions' (and 'From/To' on 'List partitions') is not providing any value. > > >> >>> For the NoteControl on the bottom, what do 'Mode Control' or 'Attach >>> Mode' refer to? And how can I tell the difference between 'Create Mode' and >>> 'Edit Mode'? >>> >> >> 'Mode control' is a switch control in subnode control that should be >> "Mode switch control". 'Create Mode' is when user creates the new table by >> clicking create-> table and 'Edit Mode' is when user open the properties >> dialog for the existing table. In case of 'Edit Mode' there are two ways >> user can create/attach partitions. In Attach mode we will identify and list >> down the suitable tables to be attached. >> > > I see. Describing these various states is great in case a user needs it. > What are your thoughts on having it live in the documentation of pgAdmin4 > rather than in the dialog? This seems to be the established pattern for all > other explanations. > >> --001a1149153e8e17fc0552a0876b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find attached patch for part= ition support.

This patch includes all the work do= ne by Akashy and support for child nodes (constraints, rules, index, trigge= rs and partition itself ) under partition node.

Thanks,

--=C2=A0
Harshal Dhumal
Sr. Software Engine= er

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
= The Enterprise PostgreSQL Company
<= /div>

On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wa= ng <swang@pivotal.io> wrote:


On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi <akshay.joshi@enterpri= sedb.com> wrote:
On Fri, Ju= n 16, 2017 at 11:16 PM, Shirley Wang <swang@pivotal.io> wrote= :
Looks good. I noticed = people clicking back and forth to the columns tab to remember which columns= they've created while filling out the Expressions column. It might be = better to have a list of the columns and the datatype above the 'Partit= ion Keys' subnode and have columns as a type field rather than a drop d= own.

=C2=A0 =C2=A0I thi= nk we should not duplicate that data as we already have all the information= on "Columns" tab and by providing drop down user can select colu= mns from there only.=C2=A0

Also, I think the fields someone see= s after selecting the Key type needs to depend on what they select. Seeing = both Column and Expressions type field might lead someone to think they nee= d to fill out both fields.

=C2=A0 =C2=A0We can't, because user can select one column and= provide an expression as partition key in this case we will have to show b= oth the columns in subnode control. Anyways when user select columns I have= disabled the expression cell and if user selects expression column cell is= disabled. =C2=A0

Ah I see what you mean. What I meant was that the column would change= depending on if someone selects Column or Expressions from the dropdown
3D"expression.png"
Can a user select more than on= e key type? The use case I can see where hiding 'Columns' or 'E= xpressions' would fail is if someone can create an expression key type = and a column key type.

Disabling a feature is one = way to guide user behavior, but it doesn't provide enough context for s= omeone to understand why it's disabled. It's better to only display= what is absolutely necessary and hide fields that are unrelated to the wor= kflow.=C2=A0

Typically, disabling a UI element is = useful when that disabled UI element also provides some context or value wh= ile disabled. In this case, I'm not sure it is.

If hiding options isn't possible, providing some text in the fields (= like N/A or --) would be helpful.

=C2=A0

=3D"coluns_partitioning.png"
When i= s the 'In' column in the Partitions subnode enabled?=C2=A0

=C2=A0 =C2=A0 In case of = 'List' Partition.=C2=A0
It would improve the experience if the 'In' col= umn was removed when a user selects 'Range' partitions then. And th= en if a user is creating a 'List' partition, 'From/To' shou= ld be hidden. In this case, 'From/To' and 'In' are dependen= t on that first drop down step, so seeing 'In' while on 'Range = partitions' (and 'From/To' on 'List partitions') is not= providing any value.
=C2=A0

For the NoteControl on the bottom, what do 'Mode Control' or = 'Attach Mode' refer to? And how can I tell the difference between &= #39;Create Mode' and 'Edit Mode'?
=
=C2=A0 =C2=A0'Mode control' is a switc= h control in subnode control that should be "Mode switch control"= . 'Create Mode' is when user creates the new table by clicking crea= te-> table and 'Edit Mode' is when user open the properties dial= og for the existing table. In case of 'Edit Mode' there are two way= s user can create/attach partitions. In Attach mode we will identify and li= st down the suitable tables to be attached.=C2=A0

I see. Describing these various state= s is great in case a user needs it. What are your thoughts on having it liv= e in the documentation of pgAdmin4 rather than in the dialog? This seems to= be the established pattern for all other explanations.

--001a1149153e8e17fc0552a0876b-- --001a1149153e8e18050552a0876c Content-Type: image/png; name="coluns_partitioning.png" Content-Disposition: inline; filename="coluns_partitioning.png" Content-Transfer-Encoding: base64 Content-ID: <15cb1f7bd866477d6182> X-Attachment-Id: 15cb1f7bd866477d6182 iVBORw0KGgoAAAANSUhEUgAAA4QAAALvCAYAAAA9CgsWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA AXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAATnbSURBVHgB7L13cBzH/aetqqururqru3PV3f11 VVeuu7eu3tc/B9lUlizJClawomVZwYpWtGQr50BSgRIVSWVSpERSmRLFIOYIkmACE8CcAeYcQYKZ 7Hc+DXyXjeEusFgugF3M81Q9BezO7ITdntn+TPf0nrRixQqHiIiIiIiIyfOkYtpYREREREREzJ8E QkRERERExIRKIEREREREREyoxwXCXz41BBEREREREduYBEJERERERMSESiBERERERERMqARCRERE RETEBPqrpwYTCBEREREREZPor5/6iUCIiIiIiIhYCF7asb974f2v3Uc9ernPP/88J/VaLUPLanh9 g91v8hEIf/HsSPd/PljjftFjs/vlpxvdr3tsdL/tscG167nenfrZMU+LPCV67jc91rv/t9vG6DWr /WsL9cNARERERERsKe95s2/OITCTd73Rt4F1DnYn5yMQ/n8Kdd3WuadKD7pXp+13Xabvdr1mbXMD 525yo+ZvcGMXyvVuzIL1bkD5Ovf2+PXur/02ut90W+P+jUCIiIiIiIgJV615CnC9evVyJSUlbvHi xTn/hqBeq2VoWVpm5pbCwe63Tw3KTyD8Vbf1rkPZEff6zCPupWkH3QuT97unJtS4h8bsdvcM3+X+ Nmi7u/bHre6Sbza7s3pvcr+MWhP/H1oIERERERER3Qvvf+XDm4JcrkEwrpalZWrZ6debx0D46ygQ vlJ2yL0764B7vWyf6zB5r3tq/B73r9HV7q5hO91NA7e5a36IAuG3m925X2xyv+m5yXcZ/f8IhIiI iIiImHDtnsETaRlM11Jo9xSmX28eA+Fvu69131ZscxVLV7m5S6vcnKUr3dxlq9wc72o3Z/ma6G/k irVu+tIoPI7b6H758RoCISIiIiIiJl675y9fYdC05aZfbx4D4WndV7nJ81e6qsoVrqqqMvpb6ZYt W+pWVlW5VStXusro+XVr17oN69e7TRs3uhnLN7nTP13j/t9nCISIiIiIiJhsiz8QfrrKTVtQ6Sqj eSujMLhkyRI3YsQIt3z5cv/6MWPG+L9rfShc5+at2uzO6NH0QPh83wpXvnK721K9363bvtf9OH21 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 tnbWDRKj8KjpGjjGumtqlNHfvzTKD04TsmLTbh9GT6QAWADcHLVk6rFGObUBbYS6xFpYva9nWWow HLV8Gmq91M9K6PXrttdO71Q3yui3UUtiOMqowuD9n/HzE4iIiIiIhWA29xAuXbrUdx0Nn9NP/ekn /lr1HsKW9uq3x/v75NSN8qyO2QVK/YyDul4qBMV/h/D6rqV+cJXwd/5C9fuDV0dh9KwOx153Seex fv0a4KW59vPM9iPdfdH23tltaoPz6XcI0+1X3HOjMKv9vOvTqc22zYiIiIiI2HSzCYS52CYDISIi IiIiYluSQIiIiIiIiJhQP+rRywc3dQHNVxjUsrRMLTv9egmEiIiIiIiIre4L73/lw1tJSUneAqGW pWVq2enXSyBERERERERsdS/t2N+Ht169evkgdyIthXqtlqFlaZladvr1EggRERERERELwnve/C51 z1++vLNz3wbWSSBEREREREQsGNWapy6edk9hLuq1WkbmlkGTQIiIiIiIiJhQCYSIiIiIiIgJlUCI iIiIiIiYUAmEiIiIiIiICbUJgbBv376IiIiIiIjYRvzuu+/ct99+SyBERERERERMmk0KhKtXr0ZE RERERMQ24qpVqzL+uD2BEBERERERsQ1LIEREREREREyoBEJERERERMSESiBExKJz48aNbu/eve7w 4cOuraJ90z5qX4vps0FERMTikkCIiEXljh07XNLQPhfTZ4SIiIjFI4EQEYtGtZYdPXrUJQ3tMy2F iIiI2BwSCBGxaKypqXFJRfteTJ8VIiIiFocEQkQsGtvyPYONoX0vps8KERERi0MCISIWjUmnmD4r RERELA4JhIhYNCadYvqsEBERsTgkECJi0Zh0iumzQkRExOKQQIiIRWPSKabPChEREYtDAiEiFo1J p5g+K0RERCwO8x4If5q80D3y+RR3Q5fx7rYPJ7hX+k535YsKJ0wuXbHSvfL9DDdh9tK8Lre0Ypl7 /usyd/N7490tH0xwL35T5srmLc/qtdqWV76f7pZXrmyWfW4tfyxdkCoLf/94onuz/0y3eHnz7uPK qEBXrVyV02tHli12r0ZlY9WqxuetrMptHSdiRXQc6Xj6auzcRucdNm2R6zpodotvY1PV8fhy3xl+ 37KZvzH27NnjnnvuuXo+++yzbuTIkS5XwpFN161b5zp06OAOHTrU6LTmINv39eOh5b6smC9HvjVg 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 iIiIiFjs3vXp1KwzW7MGwj++TiBERERERERsSe/sNiXrzEYgREREREREbEMSCBERERERERMqgRAR ERERETGhEggRERERERGLyMtfG+Ee7THOvdBnfNY++dk4d/3bo45bFoEQERERERGxSOzwRYmbM2ee z16VlZVZq/kXLFjgHu/yXb3lEQgRERERERGLwItfGeamzZrjampq3OHDh92RI0ea5MGDB91Hn3Rz f3iyd2qZBEJERERERMQC99+eHOzu7DrSLVu+3B06dChnhw4d6m54qku0vJ/8cgs+EP7+pVHu3MDz Xh7tTn9xRF7f3N89P8wvO900rUvTfvvssLx/qNq3czqOcr95emi95095frhf56kvDM/7OhERERER sfhUILzvw5E+cx04cCCtajncsmWLq66uzjjPiBEj3N+eetv92xNFEAhPfmaoW7Rul1u+sTrlik3V bu7qHe79EYvdqc83PTD96ukh7taPJ7vL3xjnH//uuWFu8Ow1bnbVdv/4j6+Pcbd/MsWvW497TVjh Fq7d6W7+aFJeP9DfRMtfsGanm7pssw+G9vx5r4x2Zcu3umXRvr7wfUWzFShERERERCwe1aJngXD/ /v1pff/9991f//pX984777i9e/emnWf48OF1gXCQX25BB8LfPTfU7Tt42O3ed9DNWLHVTV++xZWv 3O6fO3T4iOsybFGT30gFvcpNu324rG2hG+nmrNrhw5mmfzBysTt05Kh74PMZ/vFnJcvd2m017vr3 J+b1A/3ts0Ndzf5Dbu32mlQgvPH9Ur8th6P1/zh9tftdM7RKIiIiIiJi8WmBcPny5T7spfP+++93 7dq1cw888IDbuXNn2nmGDRtWfIFw6Ybqeq1o/+o9wx08fNRVrNzhH5/2wgh3y0eT3Uv957rno1a1 a94dn5r3ss7jfKvbxa+NdS/9OM/d02OaW7l5j9u4c5+769Op7sz2I9xf3yt113WZ6Lfhi4krfCBT 2Dy7w0h3WdSSeF/Pab4bp5bX7vlh7sYPJ0XLql3Xn+paGuVFnca4q98e785/dbRr32+On+eyYHpo PBDe+P4k3xJpQVctmTbvBdHyHv9qtntlwDz353cnRPs73G+HtleB1uZr91ztcxe8Osa//s9dJriO /ea6DpE3RGFT6yykQo2IiIiIiNlpgXDZsmVuz549aQ0D4fbt29POU5SBcNnG+oFQoWvb7v1uwdra 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 5mXe1uUJBOn8889vSMhklCcesI9vfvObTeIUvyM4fnv55ZeXextrnHLKKY2NTNVJOMnODjvs0Pjt V77ylSbhmwr1uu+++8q5557bNybr9x/+8Ifl0EMPXeKYBP2CCy4Y1cb++te/NvaxvMbBiUL7xRlt jfEOkdVnv/jFLyZkVwcddFATw1cEMiyuXnTRRZPux2KQMWmjjTYqP//5zydUxlNPPVW22267cvbZ Z09q3WpceOGFZeutt15i4oNOJjOu8APjmEmhruNsRc61zTbblA022KCxwYneS1lf/vKXy/HHHz+u 6+TtG2+88WJxfjLw+OOPN/HAmF7/Lo589KMfbSa0R7teXiRXOOqoo4Z6kqXGs88+W770pS81MXxZ 3icJ4Tjx0EMPlfXXX78JXIKIAGMgmejM6njAOSRr22+//aSVKZiss846ZdVVV23a4h5HH3108/en P/3pcQXIcN4TTzyxfO1rX1vmAyTip44xkyQZQ0T32muvZXrfyexP5J4d1b/Tudm7M888s2lfm7yZ STXgSMD222+/cd3zV7/6VaMfZS7PYKu+X/ziF8s555wz0va2LvSfldHNNtusmXSZbF1L0o844ojl 1ublAYm6eGQQnozy+Ozmm29eVl555bLbbruNJI4GeDHhvV65lfREXJqKyQLi/MlPfrKZfJDgLu+J l374wx/+UDbddNO+9aFPdbbS0D527bXXNon+aDZmopItTvXdMhKetdZaq7FlZJ0NHXLIIc3fxvSJ jHe//vWvy9e//vUVghAec8wxDQlpJ+uToVdJq4nMn/70pxMqQ2z585//PCZhmAiiryTU/KC9+mSn jonWyYopdo4heldffXXfXUvae+mll5ZPfepTE1qdjHIjZo93bBOfTLBN1tgR6Kdj91tppZWaFfXR dnL5XZ4gpkxmvVZksCe+YSfCsrxPEsJxwgzqJptsUm644YaR3yRNZlj934BiFcSMj39/9rOfNdfE cr6gaXCWlJtZrIMfPZ522mnNMcTPgBWDDJ05JqmWMJ911lkN4npOhJQqe88992xWjmIGdDQEITRT 9L3vfa+pHzLn7zrxYohWlxAKK4B1YsiIzjjjjKbeyOBhhx22GCGUhEgW1Eu72v3vPLo6/fTTxzVQ jUUI1dv2FauGfvOvwF/f17YNhF4/WXGs76/e2qrtJ598clPGn/70p1HriPiY4TQj3z7mXldccUWj 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 SCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJS UlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKk koQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkp KSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJ QpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSU lJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQh TElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpK SkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCm pKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUl JSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNS UlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKS kjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkp KSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJ GVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSU lJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQM qSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpK 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 7HTmYvhwDw0hPP7qsmsPixPCv42cd8ntj438vem+f32XFD5VVtrhmCXL/N4p5eo7F60IvfOPf5S/ v/XOotWi3v8POfuGhkS2r1mW6CKEd/UIWReu+Oia5f5TTlLZMuvii8rFvb/j2G3rfaxM+9xmZV4v 136zl29e+e3tyy09UthVzoweGbz+B98rb73xxqK2v/VW+cfbbzf/f3P+vHL9N7/Wtw7LA3/b6ydN XZ468rDO452E8LQ1lsBLp3ykwSunrlEW3PK7Xjvf+Od20dn39s5Zszn+8Anrl3fe/OexhY9fUR48 YuXywOErd5YL82/ar/STNxfMKU/8cZu+104GXrtxvzL/xUfKqxf0v88yI4Tz5s1bKiBEPr0Q3+Tz TN3SlgldhHCiZR1xxBGLEcBNN920bL755kusFE5GXROJRCKRSCSGHSOE8PunL4GGEB53VY8QXrVY 0n3xLQ+XD3zz2AbTb324TLvtbyPXbLrPhQ0p/NNVdy9R3s9Pu7G5/saHni3r7nlO89t3j7mqzH/j zWZ76np7LfrtQzueWv7t60eWf/3qoT0c1qwq/sf3Tisf+u7J5V+/dkTv+CkjZX6o9/u/ff2I5gU4 zd/O+erhzbX/1px7amfboJMQ9ghbF2Yec9RiOnh8+rRy8Tprllt7xO/iz25a5j/7zD8Jz+sLyh1f 266znDu++uUeAXqzvPP3v5cnD9x/0e+9lbdnlP/OO2XhnFfKXZtu3Px+08fXKdPX/kiZttZHmn/9 7fc7ewT08t69b+79fUXv3zh+68c/OnIf51z10UXH4Ore//0Wx2/r1fuSd8u+dO01yh3vHnt0jx8v IoSHH9pZ/05CeOrqS+DF03t1OGzNctWvPtzDh8oth69f3njs8h4DfqfMvegrzTlevvL6jKPKwofO Ln//20XltUevKLcfvUl57Oojy+PXHl2eO3G1zrLn3fibpo6v33dqee2Sb/WwQ4OFj1ywiFQ+d8fI uU8dt2q595D/Lncf/F/l4SNXKi+f8s9y/nb0yuWeQ/6r3NM79uDhK5XZJ//z2Eu9/z90xErNsXt7 5zx74qoj5b1w09GofHnsrG3L08ev2lnHZUYIX3vttQlj1qxZ5cILL1wMtl8uTZmBLkI40bKef/75 5tlGxO/kk0/u+cU7DY477rgRQrjWWmtNSl0TiUQikUgkhh1BCD/0vVMXw3/0sIgQXll2PWHxFcL7 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 m4/e/+t2h5STLrqpHHzODUvUBboI4W090teFG9davVzYI1jxbF4/aUjhaiuXW/uU83yPxJFHzj2n TF9tpabcG9Zcrfx19VXK3MdnNWRt5g937pGTt8qcBx8sN/ZW5a7vHb/lx4u2cv7toAPKPVtvOUII o9yZP9plEZE7+MAyu1cHctMPvt+UfV0P9x16cHPNE4cc2Dxv+My115TLVl+53NS7/2W9ez90xunl 0WOOWqycrvp3EsITP9SJNx46exHBvfLgcuUv/q1c9fP/Ua7Z+3+W6375P8vtv/2X5pxnf//B8sR1 R5e7T9++XN07fvXe/6M8Mm3f8vxd55U503boLPe16/b+JyGsfn/1/M83RG3hE1eXeVfv1pzz5BX7 lSeO+kB5/tgPlkeOW7e8cN/F5eXpO5aX7/9rmTV97/Lku8devOmI5vzX7z25ed7QFtEHDvuv5phz nrj812X2jDPKyyevUubffnhzn2f+tEV5rlf/rjouM0Log+1Lgy5CuLRlQhchnIxyH3jggXLZZZc1 uPfeeye9rolEIpFIJBLDjhFC+O5nJEbwrWPfJYTTy849WH1b4pwKH3z3/J2Oml526ZHIhhC2zvnZ yYs+cO+lMvuceFH5zv5nlL1+/5fy5POvNL/vfep15aq7H2/udfQ515TvHXhWmX7T/c2xZ2a/Wj77 szOacn552nUjBOyQ824dKf+ae55ofjvjklvLt/c7vZw+fdH2wzOuur+zzl2E8NYeQerC9GZlcEky +E7HS2Ueu/iv5XLP/XWUc9fmm5W35r66iChNn1au7RG96/f6SXnhrjub3+b0iNqMjddvSNvrs2eX 6/bcvdz0y73L6y8u2jL6t7+cX+7b/msjhDDKfahHIhcRuQMaQkmJC154vnf9T8qNvev/3ltYsV11 xqc2KHNuvL45d+bZfypX7fKDMvPPf2z+fuGcsxcrp6v+nYTwhA90wmclvNDllUeuXaSr3grcm/Nf bp79mzPzkuac+3//id7vf1/0kpuF88tbb7zWPAto1c71XeXOu+7n7xLCfRc/dtJKPb0tLPOfun3R /9+Y03zj8OGL9yn3ntUjgY8sspt5V+3WbDd9561/HnvurvMXEcIZR5YFtx7Q/N9W0Xv/+L3y8EW/ bOr49pxHm/ssuOPw5vhTN59SnrngO511XGaEcHbPKCaKadOmle22224xQrj++uuXffbZp7zYM7Cl KbuLEC5NeYHdd999pK477LDDpJSZhDCRSCQSiUTinwhC2KzGVfjAN49ZRAiPmlZ2PmpaQ9La53Sd v9OR03qEcFpDCJc4p4fDzr+1vP73txYjUAvffLv8/uIZzTnb/Oa85ruE/3j3vTNzFyws9z8+u/n/ iZfc1Zyzxg/+UF5f+FazIrjRnmeOlP/x3U4rd/3t+cXKvvGBp5vzu+rcRQhvsRrXgZdvunEJ4vfS pdPL3VtuXhY+9+wSxx7Z55d9y7r3S9uU12c9tvgFPYL30iXTyu3rrduc80JvBXFECT15rUcY31m4 sPnNc36eEXzuzNNHypy56yIiN2v/3zZ/P328l6S8OXL9W6/NLTN32ak5dudnNynz7rt3sdvPve2W csdGnywP9c5pCOGBv+useychPP7f++LV879Q3n7z9SX08/ozM5rj8x69rHTJG/ec2LfM+e++fGbB jb9a/NiJH262e/7jrdebj8O/ev6WPeL34j8L/cfb5Y37T2/OnXvRduUfC19d7J7eTvrKaWs1xxfO PLf5ZuJI98x7prx67mcXXfvX7Zp7kDefvLqzjsuMECJuE0VNrtp48sknl6rsLkK4NOUFfvKTnyy2 mjkZZSYhTCQSiUQikfgnRgjhN45eHNsf3SS8Ox15cflBDw0hbJ9T4QPvnv/93rkIZEMI+5z7wR55 /MZBF5YfHntZ+dYhfy2r7Hj8YsdX+u5xZatfn1O+tN95I387b+1dThq1DoFNfnpW2fa355VP7XXm qOd1EcKbeyt7XXjy3Td3hrx0yfRyS2/FzLE7P7dZWfjsP0mhT0Hc86Wt+5YVuGfbrcsjP92zPPqz vXokbdMljt/5mU3K/d/8ermrRzqbvzf/THlgxx3GLDdw+/ofLw9+/7sNoq417t7mC+X+b29f7t5q i4HL7CKELx33r33x8gkfKj1GuAThW/DEDc3xhQ/+aYlj/3hz3qKPw49S7ngw94KtmreHIolLHtu6 zL3wi+WVM9dd4hhyOHfa15utqOO95zIjhC+88MKEcfjhh3eSwQ033LA82zPgpSm7ixAuTXmBX/7y lyP1/NGPfjQpZSYhTCQSiUQikfgnghA2bwCt4EUy5Dv7nVa+u/9pzTN+/+dmP+6L/+szuzfn79A7 f8f9T2/e/tkuc6qhkxCuvnJfPHPqyc0K3expF5ebe6tl9TGEbuEzTzfbMu/f4ZujlrMio5MQHvu/ RsX8G37VW7mbuxjpWzjr8uaYb/a98/pL/ySDC+eW+df8ZMwypzqWGSF8/vnnJ4x58+aVLnm7t9y8 NOVCFyFc2jJhwYIFI/X0kfrJKDMJYSKRSCQSicQ/MUII25+Q6GH23AVlovLinAVjfqbivUYXIbxp tZVGxe0brtf32M2es/vER8csY0VGJyH8/f8YDFbdTlmtzPnj+mXOWZ8Y+X3eFTuX1679aY9I/cvg ZU1xLDNC+Nxzz01JdBHCFaGuiUQikUgkEsOOEUL41cOWwCd3O6nZLjoRfPJHJ3WWOZXQRQhvXPW/ E6OgkxAe8/9dasz50waTUs5UwTIjhLZ2TkV0EcIVoa6JRCKRSCQSw44ghP/6lUOHDl2E8IZV/isx CroJ4f+ZaGGZEcJnnnlmSqKLEK4IdU0kEolEIpEYdowQwu0OHjp0EcLrV/pwYhR0EsKj/49EC8uM ED799NNTEl2EcEWoayKRSCQSicSwIwjhv3z5wKFDJyH87/9IjIIuQjj7qP890cIyIYS33XZbeeKJ J5pPREwlqJO61YaxotQ1kUgkEolEYtghL1rpK78p/7Lt78q/fOmA4UGvvSv32l3nsJeusVq59r8+ WK77rw8lOnBtD5euudpiOnv8sP9RZh/x/yqzj/x/JwI9fTx+2P+cXEI4Y8aMhsg8+OCDDamZSlAn dVPHFa2uiUQikUgkEsMOedG2e/2+/M+t9i3/64v7Dw2090s//f1iOeyVX92uXPkf/16u/c8PJjpw RU83V339K4vp7OGTP1ueO/R/65Gg/2fiXTx3yP/W08vnOjnHhAnhXXfdVW699dZmuyNSM2vWrPL4 44+/p1AHdVEndVPHFa2uiUQikUgkEsMOedHFl19TPvjFfcr//MI+5X9t89se9nsf47e9du7btHfa FdculsPePO3icsnK/1mu+NC/lat75OeaD38gAT1d0MmlPd3cPH36Yjq747q/licO+d97JOj/Xl48 vEcMD/9/DC20nx7o447rLurkHBMmhHfffXez5HjzzTeXW265pVnlQm7eS6iDuqiTuqnjilbXRCKR SCQSiWFH5G7nT7uybL7bEeU/v7Rv82zd+xXa9/leO/8y/crOHPbGC/5SLt9qy3LJaos+wp7410YX l2+9ZU83F3Tq7Parzi0Pn7BBefzQRW/XHFZo/8MnbNjTx3l9OceECWGtcMTmpptuKjfeeON7CnVQ l67Grkh1TSQSiUQikRh2TLXcLXPY1Nn7TU+BpSKEofA777yz2Y/qRu8l1EFd+jV2RaprIpFIJBKJ xLBjKuVumcOmzt6PeoKlJoSJRCKRSCQSiUQikVgxkYQwkUgkEolEIpFIJIYUAxPCRCKRSCQSiUQi kUgMB5IQJhKJRCKRSCQSicSQIglhIpFIJBKJRCKRSAwpkhAmEolEIpFIJBKJxJAiCWEikUgkEolE IpFIDCn+/+6eCsZPWwq7AAAAAElFTkSuQmCC --001a1149153e8e18050552a0876c Content-Type: image/png; name="expression.png" Content-Disposition: inline; filename="expression.png" Content-Transfer-Encoding: base64 Content-ID: <15cc18ce64fb15721d31> X-Attachment-Id: 15cc18ce64fb15721d31 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 EolEIpGc+iJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQi kUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolE IpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJ RCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQS iUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKE EolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoi hBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUq IoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQl KiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgk JSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFI JCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSYvLLL7+4srIyEUKJ RCKRSCQSiUQiKTXJixC2bNlSEARBEARBEARB+A3hnnvuESEUBEEQBEEQBEEoRXTt2jUdIfzhhx8E QRAEQRAEQRCE3xA+/fRTEUJBEARBEARBEIRShAihIAiCIAiCIAhCiUKEUBAEQRAEQRAEoURRbUI4 f/58N2fOHDdr1qxTAtSFOp3udRUEQRAEQSh1jJo41d3wZHf3t9tecb9r2f43C9p3w1Pd3eiovUl6 mDNmtJvY6mY3pt45bvSZfxQioIuJt94c6WZMos4WThvhfuxzuVvT+X+5nzv+byUL2v9j38vdwukj M/pZtQjhvHnz3OzZs93GjRvdkSNH/HcsTiYOHz7s60KdqNvpWldBEARBEIRSx5hJU91ZrTq4eg/2 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 IAglimyE8P8H4sam5is+PfIAAAAASUVORK5CYII= --001a1149153e8e18050552a0876c-- --001a1149153e8e180d0552a0876d Content-Type: text/x-patch; charset="US-ASCII"; name="Partition_V4_23_June.patch" Content-Disposition: attachment; filename="Partition_V4_23_June.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j49vy0ed0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9fX2luaXRfXy5weQppbmRleCBlNDBjNzg3Li5hNWY1MTE5IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL19faW5pdF9fLnB5CkBAIC0xNCw3ICsxNCw4IEBAIGltcG9ydCByZQog ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzIGFzIHNlcnZlcnMKLWZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90 ZW1wbGF0ZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2sgaW1wb3J0 IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsXAor ICAgIGpzb25pZnksIHVybF9mb3IKIGZyb20gZmxhc2tfYmFiZWwgaW1wb3J0IGdldHRleHQgYXMg XwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVN b2R1bGUKIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFz ZXMudXRpbHMgaW1wb3J0IFwKQEAgLTg2LDYgKzg3LDIwIEBAIGNsYXNzIERhdGFiYXNlTW9kdWxl KENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBGYWxz ZQogCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMoc2VsZik6CisgICAgICAgIHNjcmlwdHMg PSBbXQorCisgICAgICAgIHNjcmlwdHMuYXBwZW5kKHsKKyAgICAgICAgICAgICduYW1lJzogJ3Bn YWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRpbHMnLAorICAgICAgICAgICAgJ3BhdGgn OiB1cmxfZm9yKCdicm93c2VyLmluZGV4JykgKyAndGFibGUvc3RhdGljL2pzL3BhcnRpdGlvbi51 dGlscycsCisgICAgICAgICAgICAnd2hlbic6IHNlbGYubm9kZV90eXBlLCAnaXNfdGVtcGxhdGUn OiBGYWxzZQorICAgICAgICB9KQorCisgICAgICAgIHNjcmlwdHMgKz0gQ29sbGVjdGlvbk5vZGVN b2R1bGUuZ2V0X293bl9qYXZhc2NyaXB0cyhzZWxmKQorCisgICAgICAgIHJldHVybiBzY3JpcHRz CisKKwogYmx1ZXByaW50ID0gRGF0YWJhc2VNb2R1bGUoX19uYW1lX18pCiAKIApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMKaW5kZXgg MGU5MDk5Ny4uZWY0OTZlNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCkBAIC0xNDUsNiArMTQ1LDE2IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLnNjaGVtYScsIFsKICAgICBncm91cDogZ2V0dGV4dCgnVGFibGUnKSwgbW9kZTog WydlZGl0JywgJ2NyZWF0ZSddLAogICAgIHR5cGU6ICdzd2l0Y2gnLAogICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7CisgICAgICAvLyBJZiB0YWJsZSBpcyBwYXJ0aXRpb25lZCB0YWJsZSB0aGVu IGRpc2FibGVkIGl0LgorICAgICAgaWYgKG0udG9wICYmIG0udG9wLmdldCgnaXNfcGFydGl0aW9u ZWQnKSkgeworICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gdW5zZXQgcmVzdCBvZiBhbGwKKyAg ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBtLnNldCgnYXV0b3ZhY3V1 bV9jdXN0b20nLCBmYWxzZSk7CisgICAgICAgIH0sIDEwKTsKKworICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgIH0KKwogICAgICAgaWYoIW0udG9wLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkp IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQpAQCAtNDU5LDYgKzQ2OSwzMiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5zY2hlbWEnLCBbCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg ICAgfQogICAgIH0pOworCisgICAgcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNo eSA9IGZ1bmN0aW9uKGkpIHsKKyAgICAgIHZhciBpZHggPSAwLAorICAgICAgICAgIHJlcyA9IHt9 LAorICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZTsKKworICAgICAgZG8geworICAgICAgICBk ID0gdC5pdGVtRGF0YShpKTsKKyAgICAgICAgaWYgKAorICAgICAgICAgIGQuX3R5cGUgaW4gcGdC cm93c2VyLk5vZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXS5oYXNJZAorICAgICAgICAp IHsKKyAgICAgICAgICBpZiAoZC5fdHlwZSA9PT0gJ3BhcnRpdGlvbicgfHwgZC5fdHlwZSA9PT0g J3RhYmxlJykgeworICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7CisgICAgICAg ICAgICAgIHJlc1sndGFibGUnXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7 CisgICAgICAgICAgICAgIGlkeCAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0 eSc6IGlkeH0pOworICAgICAgICAgICAgaWR4IC09IDE7CisgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAg IH0gd2hpbGUgKGkpOworCisgICAgICByZXR1cm4gcmVzOworICAgIH07CiAgIH0KIAogICAvLyBT d2l0Y2ggQ2VsbCB3aXRoIERlcHMgKHNwZWNpZmljYWxseSBmb3IgdGFibGUgY2hpbGRyZW4pCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvX19pbml0X18ucHkK aW5kZXggZjZmYTY1ZS4uYjdmMTIyZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5 CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMTEsMjIgKzExLDE2IEBACiAKIGltcG9y dCBzaW1wbGVqc29uIGFzIGpzb24KIGltcG9ydCByZQotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdy YXBzCiAKIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcyBhcyBkYXRhYmFzZQogZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1 ZXN0LCBqc29uaWZ5CiBmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0CiBmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMg XAotICAgIGltcG9ydCBTY2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNl dHRpbmdzLCBcCi0gICAgdHJpZ2dlcl9kZWZpbml0aW9uLCBwYXJzZV9ydWxlX2RlZmluaXRpb24K LWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGlscyBpbXBvcnQg cGFyc2VfcHJpdl9mcm9tX2RiLCBcCi0gICAgcGFyc2VfcHJpdl90b19kYgotZnJvbSBwZ2FkbWlu LmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworICAgIGltcG9ydCBTY2hlbWFD aGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzCitmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfdG9f ZGIKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGlu dGVybmFsX3NlcnZlcl9lcnJvciwgXAogICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25z ZSwgZ29uZQotZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgotCi1m cm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gLnV0aWxzIGltcG9ydCBC YXNlVGFibGVWaWV3CiAKIAogY2xhc3MgVGFibGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgpA QCAtODMsNyArNzcsNyBAQCBjbGFzcyBUYWJsZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CiBi bHVlcHJpbnQgPSBUYWJsZU1vZHVsZShfX25hbWVfXykKIAogCi1jbGFzcyBUYWJsZVZpZXcoUEdD aGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgorY2xhc3MgVGFi bGVWaWV3KEJhc2VUYWJsZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAg ICAgIiIiCiAgICAgVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyByb3V0 ZXMgZm9yIFRhYmxlIG5vZGUKIApAQCAtOTYsMTEgKzkwLDYgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgIC0g VGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9k ZS4KICAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKIAot ICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKLSAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJl aGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcwotICAgICAgICBkYXRhYmFzZSBj b25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcwotICAg ICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgotCiAg ICAgKiBsaXN0KCkKICAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRo ZSBUYWJsZSBub2RlcyB3aXRoaW4gdGhhdAogICAgICAgY29sbGVjdGlvbi4KQEAgLTE0OSwxMCAr MTM4LDYgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIs IFZhY3V1bVNldHRpbmdzKToKICAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGRl cGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50CiAgICAgICAgIHBhbmUgZm9yIHRo ZSBzZWxlY3RlZCBub2RlLgogCi0gICAgKiBfZm9ybWF0dGVyKGRhdGEsIHRpZCkKLSAgICAgIC0g SXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAg YXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQKLQogICAgICogZ2V0X3R5cGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpCiAgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBv ZiB0eXBlcyBhdmFpbGFibGUgZm9yIGNvbHVtbnMgbm9kZQogICAgICAgICB2aWEgQUpBWCByZXNw b25zZQpAQCAtMTc4LDE5ICsxNjMsNiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICogZ2V0X3RvYXN0X3RhYmxl X3ZhY3V1bShnaWQsIHNpZCwgZGlkLCBzY2lkPU5vbmUsIHRpZD1Ob25lKQogICAgICAgLSBGZXRj aCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRvYXN0IHRhYmxlIGF1dG8tdmFjdXVtCiAKLSAgICAq IF9jb2x1bW5zX2Zvcm1hdHRlcih0aWQsIGRhdGEpOgotICAgICAgLSBJdCB3aWxsIHJldHVybiBm b3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICBhcyBwZXIgY2xpZW50IG1v ZGVsIGZvcm1hdCBmb3IgY29sdW1uIG5vZGUKLQotICAgICogX2luZGV4X2NvbnN0cmFpbnRzX2Zv cm1hdHRlcihzZWxmLCBkaWQsIHRpZCwgZGF0YSk6Ci0gICAgICAtIEl0IHdpbGwgcmV0dXJuIGZv cm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0Ci0gICAgICAgIGFzIHBlciBjbGllbnQgbW9k ZWwgZm9ybWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKLQotICAgICogX2NsdHlwZV9mb3Jt YXR0ZXIodHlwZSk6IChzdGF0aWNtZXRob2QpCi0gICAgICAtIFdlIG5lZWQgdG8gcmVtb3ZlIFtd IGZyb20gdHlwZSBhbmQgYXBwZW5kIGl0Ci0gICAgICAgIGFmdGVyIGxlbmd0aC9wcmVjaXNpb24g c28gd2Ugd2lsbCBzZW5kIGZsYWcgZm9yCi0gICAgICAgIHNxbCB0ZW1wbGF0ZQotCiAgICAgKiBf cGFyc2VfZm9ybWF0X2NvbHVtbnMoc2VsZiwgZGF0YSwgbW9kZT1Ob25lKToKICAgICAgICAtIFRo aXMgZnVuY3Rpb24gd2lsbCBwYXJzZSBhbmQgcmV0dXJuIGZvcm1hdHRlZCBsaXN0IG9mIGNvbHVt bnMKICAgICAgICAgIGFkZGVkIGJ5IHVzZXIKQEAgLTI1Miw3MSArMjI0LDE2IEBAIGNsYXNzIFRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6 CiAgICAgICAgICdnZXRfYWNjZXNzX21ldGhvZHMnOiBbe30sIHsnZ2V0JzogJ2dldF9hY2Nlc3Nf bWV0aG9kcyd9XSwKICAgICAgICAgJ2dldF9vcGVyX2NsYXNzJzogW3t9LCB7J2dldCc6ICdnZXRf b3Blcl9jbGFzcyd9XSwKICAgICAgICAgJ2dldF9vcGVyYXRvcic6IFt7fSwgeydnZXQnOiAnZ2V0 X29wZXJhdG9yJ31dLAorICAgICAgICAnZ2V0X2F0dGFjaF90YWJsZXMnOiBbCisgICAgICAgICAg ICB7J2dldCc6ICdnZXRfYXR0YWNoX3RhYmxlcyd9LAorICAgICAgICAgICAgeydnZXQnOiAnZ2V0 X2F0dGFjaF90YWJsZXMnfV0sCiAgICAgICAgICdzZWxlY3Rfc3FsJzogW3snZ2V0JzogJ3NlbGVj dF9zcWwnfV0sCiAgICAgICAgICdpbnNlcnRfc3FsJzogW3snZ2V0JzogJ2luc2VydF9zcWwnfV0s CiAgICAgICAgICd1cGRhdGVfc3FsJzogW3snZ2V0JzogJ3VwZGF0ZV9zcWwnfV0sCiAgICAgICAg ICdkZWxldGVfc3FsJzogW3snZ2V0JzogJ2RlbGV0ZV9zcWwnfV0KLQogICAgIH0pCiAKLSAgICBk ZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcwotICAgICAg ICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBh dHRhY2hlcwotICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMg dG8gc2VsZgotICAgICAgICAiIiIKLQotICAgICAgICBAd3JhcHMoZikKLSAgICAgICAgZGVmIHdy YXAoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9s ZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAotICAgICAgICAgICAgc2VsZiA9 IGFyZ3NbMF0KLSAgICAgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpCi0gICAgICAgICAgICBkaWQgPSBrd2FyZ3NbJ2RpZCddCi0gICAgICAgICAgICBzZWxmLm1h bmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCi0gICAgICAg ICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQn XSkKLSAgICAgICAgICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50Ci0gICAgICAgICAg ICBzZWxmLnF0VHlwZUlkZW50ID0gZHJpdmVyLnF0VHlwZUlkZW50Ci0gICAgICAgICAgICAjIFdl IG5lZWQgZGF0bGFzdHN5c29pZCB0byBjaGVjayBpZiBjdXJyZW50IHRhYmxlIGlzIHN5c3RlbSB0 YWJsZQotICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRiX2lu Zm9bCi0gICAgICAgICAgICAgICAgZGlkCi0gICAgICAgICAgICBdWydkYXRsYXN0c3lzb2lkJ10g aWYgc2VsZi5tYW5hZ2VyLmRiX2luZm8gaXMgbm90IE5vbmUgYW5kIFwKLSAgICAgICAgICAgICAg ICBkaWQgaW4gc2VsZi5tYW5hZ2VyLmRiX2luZm8gZWxzZSAwCi0KLSAgICAgICAgICAgIHZlciA9 IHNlbGYubWFuYWdlci52ZXJzaW9uCi0gICAgICAgICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0 aCBmb3IgdGhlIFNRTCBzY3JpcHRzCi0gICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAn dGFibGUvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZv ciBDb2x1bW4gLGNoZWNrIGNvbnN0cmFpbnQgYW5kIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUK LSAgICAgICAgICAgIHNlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGggPSAnY29sdW1uL3NxbC8jezB9 IycuZm9ybWF0KHZlcikKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0 ZV9wYXRoID0gJ2NoZWNrX2NvbnN0cmFpbnQvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQotICAgICAg ICAgICAgc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoID0gJ2V4Y2x1c2lv bl9jb25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1w bGF0ZSBmb3IgUEsgJiBVbmlxdWUgY29uc3RyYWludCBub2RlCi0gICAgICAgICAgICBzZWxmLmlu ZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbCcKLQot ICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCi0g ICAgICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGggPSAnZm9yZWlnbl9rZXkv c3FsLyN7MH0jJy5mb3JtYXQodmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBpbmRl eCBub2RlCi0gICAgICAgICAgICBzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGggPSAnaW5kZXgvc3Fs LyN7MH0jJy5mb3JtYXQodmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciB0cmlnZ2Vy IG5vZGUKLSAgICAgICAgICAgIHNlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoID0gJ3RyaWdnZXIv c3FsLyN7MH0jJy5mb3JtYXQodmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBydWxl cyBub2RlCi0gICAgICAgICAgICBzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGggPSAncnVsZXMvc3Fs JwotCi0gICAgICAgICAgICAjIFN1cHBvcnRlZCBBQ0wgZm9yIHRhYmxlCi0gICAgICAgICAgICBz ZWxmLmFjbCA9IFsnYScsICdyJywgJ3cnLCAnZCcsICdEJywgJ3gnLCAndCddCi0KLSAgICAgICAg ICAgICMgU3VwcG9ydGVkIEFDTCBmb3IgY29sdW1ucwotICAgICAgICAgICAgc2VsZi5jb2x1bW5f YWNsID0gWydhJywgJ3InLCAndycsICd4J10KLQotICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3Ms ICoqa3dhcmdzKQotCi0gICAgICAgIHJldHVybiB3cmFwCi0KLSAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGxpc3Qo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNv bGxlY3Rpb24uCkBAIC0zMzAsNyArMjQ3LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoK ICAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRhYmxlIG5vZGVzCiAgICAgICAgICIiIgot ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3Rl bXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwg c2NpZD1zY2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1z ZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0zNDMsNyArMjYwLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAg ICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBub2RlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxl Y3Rpb24uCkBAIC0zNTksNyArMjc2LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIEpTT04gb2Yg YXZhaWxhYmxlIHRhYmxlIG5vZGVzCiAgICAgICAgICIiIgogICAgICAgICByZXMgPSBbXQotICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBs YXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVz LnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRp ZCkKICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CkBAIC0zNzIsOSArMjg5LDEwIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgcnNldFsncm93 cyddWzBdWydvaWQnXSwKICAgICAgICAgICAgICAgICBzY2lkLAogICAgICAgICAgICAgICAgIHJz ZXRbJ3Jvd3MnXVswXVsnbmFtZSddLAotICAgICAgICAgICAgICAgIGljb249Imljb24tdGFibGUi LAorICAgICAgICAgICAgICAgIGljb249Imljb24tcGFydGl0aW9uIiBpZiAnaXNfcGFydGl0aW9u ZWQnIGluIHJzZXRbJ3Jvd3MnXVswXSBhbmQgcnNldFsncm93cyddWzBdWydpc19wYXJ0aXRpb25l ZCddIGVsc2UgImljb24tdGFibGUiLAogICAgICAgICAgICAgICAgIHRpZ2dlcl9jb3VudD1yc2V0 Wydyb3dzJ11bMF1bJ3RyaWdnZXJjb3VudCddLAotICAgICAgICAgICAgICAgIGhhc19lbmFibGVf dHJpZ2dlcnM9cnNldFsncm93cyddWzBdWydoYXNfZW5hYmxlX3RyaWdnZXJzJ10KKyAgICAgICAg ICAgICAgICBoYXNfZW5hYmxlX3RyaWdnZXJzPXJzZXRbJ3Jvd3MnXVswXVsnaGFzX2VuYWJsZV90 cmlnZ2VycyddLAorICAgICAgICAgICAgICAgIGlzX3BhcnRpdGlvbmVkPXJzZXRbJ3Jvd3MnXVsw XVsnaXNfcGFydGl0aW9uZWQnXSBpZiAnaXNfcGFydGl0aW9uZWQnIGluIHJzZXRbJ3Jvd3MnXVsw XSBlbHNlIEZhbHNlCiAgICAgICAgICAgICApCiAKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKQEAgLTM4Miw4ICszMDAsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVW aWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc3RhdHVz PTIwMAogICAgICAgICApCiAKLQotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRh YmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCkBAIC0z OTgsNyArMzE1LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRh YmxlIG5vZGVzCiAgICAgICAgICIiIgogICAgICAgICByZXMgPSBbXQotICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCkKICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCkBAIC00MTEsOSArMzI4LDEwIEBA IGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1T ZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCiAgICAgICAgICAgICAg ICAgICAgIHNjaWQsCiAgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAotICAgICAgICAg ICAgICAgICAgICBpY29uPSJpY29uLXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0i aWNvbi1wYXJ0aXRpb24iIGlmICdpc19wYXJ0aXRpb25lZCcgaW4gcm93IGFuZCByb3dbJ2lzX3Bh cnRpdGlvbmVkJ10gZWxzZSAiaWNvbi10YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgIHRpZ2dl cl9jb3VudD1yb3dbJ3RyaWdnZXJjb3VudCddLAotICAgICAgICAgICAgICAgICAgICBoYXNfZW5h YmxlX3RyaWdnZXJzPXJvd1snaGFzX2VuYWJsZV90cmlnZ2VycyddCisgICAgICAgICAgICAgICAg ICAgIGhhc19lbmFibGVfdHJpZ2dlcnM9cm93WydoYXNfZW5hYmxlX3RyaWdnZXJzJ10sCisgICAg ICAgICAgICAgICAgICAgIGlzX3BhcnRpdGlvbmVkPXJvd1snaXNfcGFydGl0aW9uZWQnXSBpZiAn aXNfcGFydGl0aW9uZWQnIGluIHJvdyBlbHNlIEZhbHNlCiAgICAgICAgICAgICAgICAgKSkKIAog ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKApAQCAtNDIxLDcgKzMzOSw3IEBAIGNs YXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0 aW5ncyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAotICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBk ZWYgZ2V0X2FsbF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgog ICAgICAgICAiIiIKICAgICAgICAgQXJnczoKQEAgLTQzNSw3ICszNTMsNyBAQCBjbGFzcyBUYWJs ZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgog ICAgICAgICAgICAgUmV0dXJucyB0aGUgbGl0cyBvZiB0YWJsZXMgcmVxdWlyZWQgZm9yIGNvbnN0 cmFpbnRzLgogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90YWJsZXNf Zm9yX2NvbnN0cmFpbnRzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaG93X3N5c29iaj1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogCkBAIC00 NTIsNyArMzcwLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgog ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJl Y29uZGl0aW9uCiAgICAgZGVmIGdldF90YWJsZV92YWN1dW0oc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZD1Ob25lLCB0aWQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBGZXRjaCB0aGUgZGVm YXVsdCB2YWx1ZXMgZm9yIHRhYmxlIGF1dG8tdmFjdXVtCkBAIC00NjgsNyArMzg2LDcgQEAgY2xh c3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRp bmdzKToKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAgKQogCi0gICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRl ZiBnZXRfdG9hc3RfdGFibGVfdmFjdXVtKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQ9Tm9uZSwg dGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgRmV0Y2ggdGhlIGRlZmF1bHQgdmFsdWVz IGZvciB0b2FzdCB0YWJsZSBhdXRvLXZhY3V1bQpAQCAtNDg0LDcgKzQwMiw3IEBAIGNsYXNzIFRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6 CiAgICAgICAgICAgICBzdGF0dXM9MjAwCiAgICAgICAgICkKIAotICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZ2V0 X2FjY2Vzc19tZXRob2RzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAg ICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhY2Nlc3MgbWV0aG9kcy4K QEAgLTUxOCw3ICs0MzYsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRh VHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAg ICAgICApCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hl Y2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF9vcGVyX2NsYXNzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAKQEAgLTU1NSw3ICs0NzMsNyBAQCBj bGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0 dGluZ3MpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBk ZWYgZ2V0X29wZXJhdG9yKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAg ICAgICAgIiIiCiAKQEAgLTU5Myw1MDYgKzUxMSw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgZGVmIF9jb2x1bW5zX2Zvcm1hdHRlcihzZWxmLCB0 aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDog VGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAg ICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0 IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQg Zm9yIGNvbHVtbiBub2RlCi0gICAgICAgICIiIgotICAgICAgICBmb3IgY29sdW1uIGluIGRhdGFb J2NvbHVtbnMnXToKLQotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGZvcm1hdCB2YXJpYWJsZXMg YWNjb3JkaW5nIHRvIGNsaWVudCBqcyBjb2xsZWN0aW9uCi0gICAgICAgICAgICBpZiAnYXR0b3B0 aW9ucycgaW4gY29sdW1uIGFuZCBjb2x1bW5bJ2F0dG9wdGlvbnMnXSBpcyBub3QgTm9uZToKLSAg ICAgICAgICAgICAgICBzcGNvcHRpb25zID0gW10KLSAgICAgICAgICAgICAgICBmb3Igc3Bjb3B0 aW9uIGluIGNvbHVtblsnYXR0b3B0aW9ucyddOgotICAgICAgICAgICAgICAgICAgICBrLCB2ID0g c3Bjb3B0aW9uLnNwbGl0KCc9JykKLSAgICAgICAgICAgICAgICAgICAgc3Bjb3B0aW9ucy5hcHBl bmQoeyduYW1lJzogaywgJ3ZhbHVlJzogdn0pCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0 dG9wdGlvbnMnXSA9IHNwY29wdGlvbnMKLQotICAgICAgICAgICAgIyBOZWVkIHRvIGZvcm1hdCBz ZWN1cml0eSBsYWJlbHMgYWNjb3JkaW5nIHRvIGNsaWVudCBqcyBjb2xsZWN0aW9uCi0gICAgICAg ICAgICBpZiAnc2VjbGFiZWxzJyBpbiBjb2x1bW4gYW5kIGNvbHVtblsnc2VjbGFiZWxzJ10gaXMg bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VjbGFiZWxzID0gW10KLSAgICAgICAgICAgICAg ICBmb3Igc2VjbGJscyBpbiBjb2x1bW5bJ3NlY2xhYmVscyddOgotICAgICAgICAgICAgICAgICAg ICBrLCB2ID0gc2VjbGJscy5zcGxpdCgnPScpCi0gICAgICAgICAgICAgICAgICAgIHNlY2xhYmVs cy5hcHBlbmQoeydwcm92aWRlcic6IGssICdsYWJlbCc6IHZ9KQotCi0gICAgICAgICAgICAgICAg Y29sdW1uWydzZWNsYWJlbHMnXSA9IHNlY2xhYmVscwotCi0gICAgICAgICAgICBpZiAnYXR0bnVt JyBpbiBjb2x1bW4gYW5kIGNvbHVtblsnYXR0bnVtJ10gaXMgbm90IE5vbmUgYW5kIFwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dG51bSddID4gMDoKLSAgICAgICAgICAg ICAgICAjIFdlIG5lZWQgdG8gcGFyc2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFz ZSB0byBqc29uIGZvcm1hdAotICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ2FjbC5zcWwnXSksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRu dW0nXSkKLSAgICAgICAgICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2wpCi0KLSAgICAg ICAgICAgICAgICAjIFdlIHdpbGwgc2V0IGdldCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3 ZSBkb24ndCBuZWVkCi0gICAgICAgICAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCi0g ICAgICAgICAgICAgICAgY29sdW1uWydhdHRhY2wnXSA9IFtdCi0KLSAgICAgICAgICAgICAgICBm b3Igcm93IGluIGFjbFsncm93cyddOgotICAgICAgICAgICAgICAgICAgICBwcml2ID0gcGFyc2Vf cHJpdl9mcm9tX2RiKHJvdykKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uLnNldGRlZmF1bHQo cm93WydkZWZ0eXBlJ10sIFtdKS5hcHBlbmQocHJpdikKLQotICAgICAgICAgICAgICAgICMgd2Ug YXJlIHJlY2VpdmluZyByZXF1ZXN0IHdoZW4gaW4gZWRpdCBtb2RlCi0gICAgICAgICAgICAgICAg IyB3ZSB3aWxsIHNlbmQgZmlsdGVyZWQgdHlwZXMgcmVsYXRlZCB0byBjdXJyZW50IHR5cGUKLSAg ICAgICAgICAgICAgICBwcmVzZW50X3R5cGUgPSBjb2x1bW5bJ2NsdHlwZSddCi0KLSAgICAgICAg ICAgICAgICB0eXBlX2lkID0gY29sdW1uWydhdHR0eXBpZCddCi0KLSAgICAgICAgICAgICAgICBm dWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKLSAgICAgICAgICAgICAgICAgICAgY29sdW1u Wyd0eXBuc3BuYW1lJ10sIGNvbHVtblsndHlwbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBj b2x1bW5bJ2lzZHVwJ10sIGNvbHVtblsnYXR0bmRpbXMnXSwgY29sdW1uWydhdHR0eXBtb2QnXQot ICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IEZhbHNlCi0gICAg ICAgICAgICAgICAgcHJlY2lzaW9uID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiAnZWxlbW9p ZCcgaW4gY29sdW1uOgotICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHByZWNpc2lvbiwgdHlw ZXZhbCA9IHNlbGYuZ2V0X2xlbmd0aF9wcmVjaXNpb24oY29sdW1uWydlbGVtb2lkJ10pCi0KLSAg ICAgICAgICAgICAgICAjIFNldCBsZW5ndGggYW5kIHByZWNpc2lvbiB0byBOb25lCi0gICAgICAg ICAgICAgICAgY29sdW1uWydhdHRsZW4nXSA9IE5vbmUKLSAgICAgICAgICAgICAgICBjb2x1bW5b J2F0dHByZWNpc2lvbiddID0gTm9uZQotCi0gICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxl bmd0aCAmIHByZWNpc2lvbiBib3RoCi0gICAgICAgICAgICAgICAgaWYgbGVuZ3RoIGFuZCBwcmVj aXNpb246Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyks KFxkKyknLCBmdWxsdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAg ICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dGxlbiddID0gbWF0Y2hPYmouZ3JvdXAoMSkK LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBtYXRjaE9i ai5ncm91cCgyKQotICAgICAgICAgICAgICAgIGVsaWYgbGVuZ3RoOgotICAgICAgICAgICAgICAg ICAgICAjIElmIHdlIGhhdmUgbGVuZ3RoIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hP YmogPSByZS5zZWFyY2gocicoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAgICBp ZiBtYXRjaE9iajoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBt YXRjaE9iai5ncm91cCgxKQotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVj aXNpb24nXSA9IE5vbmUKLQotCi0gICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3JlZmVyZW5jZWQuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlkPWNvbHVtblsn YXR0bnVtJ10pCi0KLSAgICAgICAgICAgICAgICBzdGF0dXMsIGlzX3JlZmVyZW5jZSA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCi0KLSAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xp c3QgPSBsaXN0KCkKLSAgICAgICAgICAgICAgICAjIFdlIHdpbGwgbmVlZCBwcmVzZW50IHR5cGUg aW4gZWRpdCBtb2RlCi0KLSAgICAgICAgICAgICAgICBpZiBjb2x1bW5bJ3R5cG5zcG5hbWUnXSA9 PSAicGdfY2F0YWxvZyIgb3IgY29sdW1uWyd0eXBuc3BuYW1lJ10gPT0gInB1YmxpYyI6Ci0gICAg ICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocHJlc2VudF90eXBlKQotICAg ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHQgPSBzZWxmLnF0VHlwZUlk ZW50KHNlbGYuY29ubiwgY29sdW1uWyd0eXBuc3BuYW1lJ10sIHByZXNlbnRfdHlwZSkKLSAgICAg ICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0LmFwcGVuZCh0KQotICAgICAgICAgICAgICAg ICAgICBjb2x1bW5bJ2NsdHlwZSddID0gdAotCi0gICAgICAgICAgICAgICAgaWYgaW50KGlzX3Jl ZmVyZW5jZSkgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0X21vZGVfdHlwZXMuc3FsJ10p LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9pZD10eXBl X2lkKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKLQotICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocm93 Wyd0eXBuYW1lJ10pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg ZWRpdF90eXBlc19saXN0LmFwcGVuZChwcmVzZW50X3R5cGUpCi0KLSAgICAgICAgICAgICAgICBj b2x1bW5bJ2VkaXRfdHlwZXMnXSA9IGVkaXRfdHlwZXNfbGlzdAotICAgICAgICAgICAgICAgIGNv bHVtblsnY2x0eXBlJ10gPSBEYXRhVHlwZVJlYWRlci5wYXJzZV90eXBlX25hbWUoY29sdW1uWydj bHR5cGUnXSkKLQotICAgICAgICAgICAgICAgIGlmICdpbmRrZXknIGluIGNvbHVtbjoKLSAgICAg ICAgICAgICAgICAgICAgIyBDdXJyZW50IGNvbHVtbgotICAgICAgICAgICAgICAgICAgICBhdHRu dW0gPSBzdHIoY29sdW1uWydhdHRudW0nXSkKLQotICAgICAgICAgICAgICAgICAgICAjIFNpbmds ZS9MaXN0IG9mIHByaW1hcnkga2V5IGNvbHVtbihzKQotICAgICAgICAgICAgICAgICAgICBpbmRr ZXkgPSBzdHIoY29sdW1uWydpbmRrZXknXSkKLQotICAgICAgICAgICAgICAgICAgICAjIFdlIHdp bGwgY2hlY2sgaWYgY29sdW1uIGlzIGluIHByaW1hcnkgY29sdW1uKHMpCi0gICAgICAgICAgICAg ICAgICAgIGlmIGF0dG51bSBpbiBpbmRrZXkuc3BsaXQoIiAiKToKLSAgICAgICAgICAgICAgICAg ICAgICAgIGNvbHVtblsnaXNfcHJpbWFyeV9rZXknXSA9IFRydWUKLSAgICAgICAgICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnaXNfcHJpbWFyeV9rZXkn XSA9IEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBfaW5kZXhfY29uc3Ry YWludHNfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAg ICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0YTog ZGljdCBvZiBxdWVyeSByZXN1bHQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQg d2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAg IGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKLSAg ICAgICAgIiIiCi0KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3Ry YWludHMgZm9yIHRoZSB0YWJsZQotICAgICAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKLSAgICAg ICAgICAgICdwJzogJ3ByaW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCi0gICAg ICAgIH0KLQotICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhfY29uc3RyYWludHMua2V5cygpOgot ICAgICAgICAgICAgZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dID0gW10KLQotICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFp bnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3RyYWludF90eXBlPWN0eXBlKQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQot ICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICByZXN1 bHQgPSByb3cKLSAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNx bCddKSwKLSAgICAgICAgICAgICAgICAgICAgY2lkPXJvd1snb2lkJ10sCi0gICAgICAgICAgICAg ICAgICAgIGNvbGNudD1yb3dbJ2luZG5hdHRzJ10pCi0gICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgY29sdW1ucyA9IFtdCi0gICAgICAg ICAgICAgICAgZm9yIHIgaW4gcmVzWydyb3dzJ106Ci0gICAgICAgICAgICAgICAgICAgIGNvbHVt bnMuYXBwZW5kKHsiY29sdW1uIjogclsnY29sdW1uJ10uc3RyaXAoJyInKX0pCi0KLSAgICAgICAg ICAgICAgICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAgICAgICAgICMg SWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bwotICAgICAg ICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0XQot ICAgICAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0s IFtdKS5hcHBlbmQocmVzdWx0KQotCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX2Zv cmVpZ25fa2V5X2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAg ICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBk aWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3 aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAg YXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbm9k ZQotICAgICAgICAiIiIKLQotICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBj b25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCi0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0KLSAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCi0K LSAgICAgICAgZm9yIGZrIGluIHJlc3VsdFsncm93cyddOgotCi0gICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJh aW50X2NvbHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cz16aXAoZmtbJ2NvbmZr ZXknXSwgZmtbJ2NvbmtleSddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25mcmVsaWQ9ZmtbJ2NvbmZyZWxpZCddKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQotCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgot ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQotCi0gICAgICAgICAgICBjb2x1bW5zID0gW10KLSAgICAgICAgICAgIGNvbHMgPSBbXQotICAg ICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICBjb2x1bW5z LmFwcGVuZCh7ImxvY2FsX2NvbHVtbiI6IHJvd1snY29uYXR0bmFtZSddLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6IGZrWydjb25mcmVsaWQnXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1l J119KQotICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKHJvd1snY29uYXR0bmFtZSddKQotCi0g ICAgICAgICAgICBma1snY29sdW1ucyddID0gY29sdW1ucwotCi0gICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1ma1snY29sdW1u cyddWzBdWydyZWZlcmVuY2VzJ10pCi0KLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp Ci0KLSAgICAgICAgICAgIGZrWydyZW1vdGVfc2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3Nj aGVtYSddCi0gICAgICAgICAgICBma1sncmVtb3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1b J3RhYmxlJ10KLQotICAgICAgICAgICAgY292ZXJpbmdpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVy aW5naW5kZXgodGlkLCBjb2xzKQotCi0gICAgICAgICAgICBma1snY292ZXJpbmdpbmRleCddID0g Y292ZXJpbmdpbmRleAotICAgICAgICAgICAgaWYgY292ZXJpbmdpbmRleDoKLSAgICAgICAgICAg ICAgICBma1snYXV0b2luZGV4J10gPSBUcnVlCi0gICAgICAgICAgICAgICAgZmtbJ2hhc2luZGV4 J10gPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZrWydhdXRvaW5k ZXgnXSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZmtbJ2hhc2luZGV4J10gPSBGYWxzZQotICAg ICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBp bnRvCi0gICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEg ZGljdF0KLSAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgnZm9yZWlnbl9rZXknLCBbXSkuYXBw ZW5kKGZrKQotCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX2NoZWNrX2NvbnN0cmFp bnRfZm9ybWF0dGVyKHNlbGYsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBBcmdz OgotICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKLSAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2Yg cXVlcnkgcmVzdWx0Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIEl0IHdpbGwgcmV0 dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0Ci0gICAgICAgICAgICBhcyBwZXIg Y2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY2hlY2sgY29uc3RyYWludCBub2RlCi0gICAgICAgICIi IgotCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZv ciB0aGUgdGFibGUKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkKQotCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAjIElmIG5v dCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8KLSAgICAgICAgIyBl eGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCi0KLSAgICAgICAgZGF0 YVsnY2hlY2tfY29uc3RyYWludCddID0gcmVzWydyb3dzJ10KLQotICAgICAgICByZXR1cm4gZGF0 YQotCi0gICAgZGVmIF9leGNsdXNpb25fY29uc3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0 aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDog VGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAg ICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0 IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQg Zm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBX ZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk aWQ9ZGlkLCB0aWQ9dGlkKQotCi0gICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgIGZv ciBleCBpbiByZXN1bHRbJ3Jvd3MnXToKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWlu dF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9ZXhb J29pZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGNudD1leFsnaW5k bmF0dHMnXSkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAg Y29sdW1ucyA9IFtdCi0gICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgotICAgICAg ICAgICAgICAgIGlmIHJvd1snb3B0aW9ucyddICYgMToKLSAgICAgICAgICAgICAgICAgICAgb3Jk ZXIgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICBudWxsc19vcmRlciA9IFRydWUgaWYgKHJv d1snb3B0aW9ucyddICYgMikgZWxzZSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICAgICAgICAgIG9yZGVyID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBudWxsc19v cmRlciA9IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBGYWxzZQotCi0gICAgICAg ICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJjb2x1bW4iOiByb3dbJ2NvbGRlZiddLnN0cmlwKCci JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyX2NsYXNzIjogcm93Wydv cGNuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRlciI6IG9yZGVy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnVsbHNfb3JkZXIiOiBudWxsc19v cmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdG9yIjogcm93Wydv cHJuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xfdHlwZSI6IHJv d1snZGF0YXR5cGUnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotCi0gICAg ICAgICAgICBleFsnY29sdW1ucyddID0gY29sdW1ucwotICAgICAgICAgICAgIyBJZiBub3QgZXhp c3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCi0gICAgICAgICAgICAjIGV4 aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgIGRh dGEuc2V0ZGVmYXVsdCgnZXhjbHVkZV9jb25zdHJhaW50JywgW10pLmFwcGVuZChleCkKLQotICAg ICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHNlYXJjaF9jb3ZlcmluZ2luZGV4KHNlbGYsIHRp ZCwgY29scyk6Ci0gICAgICAgICIiIgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGlkOiBU YWJsZSBpZAotICAgICAgICAgIGNvbHM6IGNvbHVtbiBsaXN0Ci0KLSAgICAgICAgUmV0dXJuczoK LQotICAgICAgICAiIiIKLQotICAgICAgICBjb2xzID0gc2V0KGNvbHMpCi0gICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWlu dHMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAgICAg ICAgc3RhdHVzLCBjb25zdHJhaW50cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oY29uc3Ry YWludHMpCi0KLSAgICAgICAgZm9yIGNvc3RybnQgaW4gY29uc3RyYWludHNbJ3Jvd3MnXToKLQot ICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5q b2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdnZXRfY29scy5zcWwnXSksCi0g ICAgICAgICAgICAgICAgY2lkPWNvc3RybnRbJ29pZCddLAotICAgICAgICAgICAgICAgIGNvbGNu dD1jb3N0cm50WydpbmRuYXR0cyddKQotICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQot Ci0gICAgICAgICAgICBpbmRleGNvbHMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIHIgaW4gcmVz dFsncm93cyddOgotICAgICAgICAgICAgICAgIGluZGV4Y29scy5hZGQoclsnY29sdW1uJ10uc3Ry aXAoJyInKSkKLQotICAgICAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRleGNvbHMpID09IGxlbihp bmRleGNvbHMgLSBjb2xzKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBjb3N0cm50WyJp ZHhuYW1lIl0KLQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9mb3JtYXR0ZXIoc2Vs ZiwgZGlkLCBzY2lkLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAg ICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0Ci0gICAgICAgICAgICBzY2lkOiBz Y2hlbWEgb2lkCi0gICAgICAgICAgICB0aWQ6IHRhYmxlIG9pZAotCi0gICAgICAgIFJldHVybnM6 Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJl c3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQKLSAgICAgICAgIiIi Ci0gICAgICAgICMgTmVlZCB0byBmb3JtYXQgc2VjdXJpdHkgbGFiZWxzIGFjY29yZGluZyB0byBj bGllbnQganMgY29sbGVjdGlvbgotICAgICAgICBpZiAnc2VjbGFiZWxzJyBpbiBkYXRhIGFuZCBk YXRhWydzZWNsYWJlbHMnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlY2xhYmVscyA9IFtd Ci0gICAgICAgICAgICBmb3Igc2VjbGJscyBpbiBkYXRhWydzZWNsYWJlbHMnXToKLSAgICAgICAg ICAgICAgICBrLCB2ID0gc2VjbGJscy5zcGxpdCgnPScpCi0gICAgICAgICAgICAgICAgc2VjbGFi ZWxzLmFwcGVuZCh7J3Byb3ZpZGVyJzogaywgJ2xhYmVsJzogdn0pCi0KLSAgICAgICAgICAgIGRh dGFbJ3NlY2xhYmVscyddID0gc2VjbGFiZWxzCi0KLSAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNl ICYgY29udmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2UgdG8ganNvbiBmb3JtYXQKLSAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdh Y2wuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgc2NpZD1z Y2lkKQotICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQot ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1hY2wpCi0KLSAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQgcHJpdmls ZWdlcyBmcm9tIGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVlZAotICAgICAgICAjIGl0IGZyb20gcHJv cGVydGllcyBzcWwKLSAgICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3MnXToKLSAgICAgICAgICAg IHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQotICAgICAgICAgICAgaWYgcm93WydkZWZ0 eXBlJ10gaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXS5hcHBl bmQocHJpdikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YVtyb3dbJ2Rl ZnR5cGUnXV0gPSBbcHJpdl0KLQotICAgICAgICAjIFdlIHdpbGwgYWRkIEF1dG8gdmFjdXVtIGRl ZmF1bHRzIHdpdGggb3V0IHJlc3VsdCBmb3IgZ3JpZAotICAgICAgICBkYXRhWyd2YWN1dW1fdGFi bGUnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEoc2VsZi5jb25uLCBkYXRhLCAndGFibGUnKQot ICAgICAgICBkYXRhWyd2YWN1dW1fdG9hc3QnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEoc2Vs Zi5jb25uLCBkYXRhLCAndG9hc3QnKQotCi0gICAgICAgICMgRmV0Y2ggY29sdW1ucyBmb3IgdGhl IHRhYmxlIGxvZ2ljCi0gICAgICAgICMKLSAgICAgICAgIyAxKSBDaGVjayBpZiBvZl90eXBlIGFu ZCBpbmhlcml0ZWQgdGFibGVzIGFyZSBwcmVzZW50PwotICAgICAgICAjIDIpIElmIHllcyB0aGVu IEZldGNoIGFsbCB0aGUgY29sdW1ucyBmb3Igb2ZfdHlwZSBhbmQgaW5oZXJpdGVkIHRhYmxlcwot ICAgICAgICAjIDMpIEFkZCBjb2x1bW5zIGluIGNvbHVtbnMgY29sbGVjdGlvbgotICAgICAgICAj IDQpIEZpbmQgYWxsIHRoZSBjb2x1bW5zIGZvciB0YWJsZXMgYW5kIGZpbHRlciBvdXQgY29sdW1u cyB3aGljaCBhcmUKLSAgICAgICAgIyAgIG5vdCBpbmhlcml0ZWQgZnJvbSBhbnkgdGFibGUgJiBm b3JtYXQgdGhlbSBvbmUgYnkgb25lCi0KLSAgICAgICAgIyBHZXQgb2ZfdHlwZSB0YWJsZSBjb2x1 bW5zIGFuZCBhZGQgaXQgaW50byBjb2x1bW5zIGRpY3QKLSAgICAgICAgaWYgZGF0YVsndHlwbmFt ZSddOgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRuYW1lPWRhdGFbJ3R5cG5hbWUnXSkKLQotICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSByZXNbJ3Jvd3MnXQotCi0gICAg ICAgICMgR2V0IGluaGVyaXRlZCB0YWJsZShzKSBjb2x1bW5zIGFuZCBhZGQgaXQgaW50byBjb2x1 bW5zIGRpY3QKLSAgICAgICAgZWxpZiBkYXRhWydjb2xsX2luaGVyaXRzJ10gYW5kIGxlbihkYXRh Wydjb2xsX2luaGVyaXRzJ10pID4gMDoKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAg ICAgICAgIyBSZXR1cm4gYWxsIHRhYmxlcyB3aGljaCBjYW4gYmUgaW5oZXJpdGVkICYgZG8gbm90 IHNob3cKLSAgICAgICAgICAgICMgc3lzdGVtIGNvbHVtbnMKLSAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2luaGVyaXRz LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9v YmplY3RzPUZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgaWYgcm93Wydpbmhlcml0cyddIGluIGRhdGFbJ2Nv bGxfaW5oZXJpdHMnXToKLSAgICAgICAgICAgICAgICAgICAgIyBGZXRjaCBjb2x1bW5zIHVzaW5n IGluaGVyaXRlZCB0YWJsZSBPSUQKLSAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zX2Zvcl90YWJsZS5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9cm93 WydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmV4dGVuZChyZXNbJ3Jvd3MnXVs6XSkK LSAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAjIFdlIHdp bGwgZmV0Y2ggYWxsIHRoZSBjb2x1bW5zIGZvciB0aGUgdGFibGUgdXNpbmcKLSAgICAgICAgIyBj b2x1bW5zIHByb3BlcnRpZXMuc3FsLCBzbyB3ZSBuZWVkIHRvIHNldCB0ZW1wbGF0ZSBwYXRoCi0g ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXNfb2JqZWN0cz1GYWxzZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgYWxs X2NvbHVtbnMgPSByZXNbJ3Jvd3MnXQotCi0gICAgICAgICMgRmlsdGVyIGluaGVyaXRlZCBjb2x1 bW5zIGZyb20gYWxsIGNvbHVtbnMKLSAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5kIGxl bihkYXRhWydjb2x1bW5zJ10pID4gMCBcCi0gICAgICAgICAgICAgICAgYW5kIGxlbihhbGxfY29s dW1ucykgPiAwOgotICAgICAgICAgICAgZm9yIHJvdyBpbiBkYXRhWydjb2x1bW5zJ106Ci0gICAg ICAgICAgICAgICAgZm9yIGksIGNvbCBpbiBlbnVtZXJhdGUoYWxsX2NvbHVtbnMpOgotICAgICAg ICAgICAgICAgICAgICAjIElmIGJvdGggbmFtZSBhcmUgc2FtZSB0aGVuIHJlbW92ZSBpdAotICAg ICAgICAgICAgICAgICAgICAjIGFzIGl0IGlzIGluaGVyaXRlZCBmcm9tIG90aGVyIHRhYmxlCi0g ICAgICAgICAgICAgICAgICAgIGlmIGNvbFsnbmFtZSddID09IHJvd1snbmFtZSddOgotICAgICAg ICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgc2FtZSBjb2x1bW4gZnJvbSBhbGxfY29sdW1ucyBh cwotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbHJlYWR5IGhhdmUgaXQgY29sdW1ucyBjb2xs ZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgYWxsX2NvbHVtbnNbaV0KLQotICAg ICAgICAgICAgIyBJZiBhbnkgY29sdW1uIGlzIGFkZGVkIHRoZW4gdXBkYXRlIGNvbHVtbnMgY29s bGVjdGlvbgotICAgICAgICAgICAgaWYgbGVuKGFsbF9jb2x1bW5zKSA+IDA6Ci0gICAgICAgICAg ICAgICAgZGF0YVsnY29sdW1ucyddICs9IGFsbF9jb2x1bW5zCi0gICAgICAgICMgSWYgbm8gaW5o ZXJpdGVkIGNvbHVtbnMgZm91bmQgdGhlbiBhZGQgYWxsIGNvbHVtbnMKLSAgICAgICAgZWxpZiBs ZW4oYWxsX2NvbHVtbnMpID4gMDoKLSAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGFsbF9j b2x1bW5zCi0KLSAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5kIGxlbihkYXRhWydjb2x1 bW5zJ10pID4gMDoKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb2x1bW5zX2Zvcm1hdHRlcih0 aWQsIGRhdGEpCi0KLSAgICAgICAgIyBIZXJlIHdlIHdpbGwgYWRkIGNvbnN0cmFpbnQgaW4gb3Vy IG91dHB1dAotICAgICAgICBkYXRhID0gc2VsZi5faW5kZXhfY29uc3RyYWludHNfZm9ybWF0dGVy KGRpZCwgdGlkLCBkYXRhKQotICAgICAgICBkYXRhID0gc2VsZi5fZm9yZWlnbl9rZXlfZm9ybWF0 dGVyKHRpZCwgZGF0YSkKLSAgICAgICAgZGF0YSA9IHNlbGYuX2NoZWNrX2NvbnN0cmFpbnRfZm9y bWF0dGVyKHRpZCwgZGF0YSkKLSAgICAgICAgZGF0YSA9IHNlbGYuX2V4Y2x1c2lvbl9jb25zdHJh aW50X2Zvcm1hdHRlcihkaWQsIHRpZCwgZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0g ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6 CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVy dGllcyBvZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4KQEAgLTExMDksNyArNTI4LDcgQEAgY2xh c3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRp bmdzKToKICAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQgdGFibGUgbm9kZQogICAgICAgICAi IiIKIAotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRh YmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk PWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0xMTIwLDQxICs1MzksMTkgQEAg Y2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNl dHRpbmdzKToKICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgogICAgICAgICAgICAg ICAgIHJldHVybiBnb25lKGdldHRleHQoIlRoZSBzcGVjaWZpZWQgdGFibGUgY291bGQgbm90IGJl IGZvdW5kLiIpKQogCi0gICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQotCi0gICAgICAgIGRh dGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHInXSA9ICIiCi0KLSAgICAgICAgaWYgZGF0YVsndGFibGVf dmFjdXVtX3NldHRpbmdzX3N0ciddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsndmFj dXVtX3NldHRpbmdzX3N0ciddICs9IGRhdGFbCi0gICAgICAgICAgICAgICAgJ3RhYmxlX3ZhY3V1 bV9zZXR0aW5nc19zdHInXS5yZXBsYWNlKCcsJywgJ1xuJykKLQotICAgICAgICBpZiBkYXRhWyd0 b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAg ICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nfc3RyJ10gKz0gJ1xuJyArICdcbicuam9pbigKLSAgICAg ICAgICAgICAgICBbJ3RvYXN0XycgKyBzZXR0aW5nIGZvciBzZXR0aW5nIGluIGRhdGFbCi0gICAg ICAgICAgICAgICAgICAgICd0b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyJwotICAgICAg ICAgICAgICAgIF0uc3BsaXQoJywnKV0KLSAgICAgICAgICAgICkKLSAgICAgICAgZGF0YVsndmFj dXVtX3NldHRpbmdzX3N0ciddID0gZGF0YVsKLSAgICAgICAgICAgICd2YWN1dW1fc2V0dGluZ3Nf c3RyJwotICAgICAgICBdLnJlcGxhY2UoIj0iLCAiID0gIikKLQotICAgICAgICBkYXRhID0gc2Vs Zi5fZm9ybWF0dGVyKGRpZCwgc2NpZCwgdGlkLCBkYXRhKQotCi0gICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAotICAgICAgICAgICAgcmVzcG9uc2U9ZGF0YSwKLSAgICAgICAgICAgIHN0YXR1 cz0yMDAKLSAgICAgICAgKQorICAgICAgICByZXR1cm4gc3VwZXIoVGFibGVWaWV3LCBzZWxmKS5w cm9wZXJ0aWVzKAorICAgICAgICAgICAgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCByZXMpCiAK LSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29u ZGl0aW9uCiAgICAgZGVmIHR5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25l LCBjbGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0eXBlcyBhdmFpbGFibGUgZm9yIGNv bHVtbiBub2RlCiAgICAgICAgICAgICBmb3Igbm9kZS1hamF4LWNvbnRyb2wKICAgICAgICAgIiIi Ci0gICAgICAgIGNvbmRpdGlvbiA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfdHlwZXNfd2hlcmVfY29uZGl0aW9uLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19z eXN0ZW1fb2JqZWN0cykKKyAgICAgICAgY29uZGl0aW9uID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAorICAgICAgICAgICAgW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF90eXBlc193 aGVyZV9jb25kaXRpb24uc3FsJ10pLAorICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1z ZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogCiAgICAgICAgIHN0YXR1cywgdHlw ZXMgPSBzZWxmLmdldF90eXBlcyhzZWxmLmNvbm4sIGNvbmRpdGlvbiwgVHJ1ZSkKIApAQCAtMTE2 Niw3ICs1NjMsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJl YWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICAp CiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJl Y29uZGl0aW9uCiAgICAgZGVmIGdldF9jb2x1bW5zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybnMgdGhlIFRhYmxlIENvbHVt bnMuCkBAIC0xMTg5LDEzICs1ODYsMTQgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgZGF0YSA9IHJlcXVl c3QuYXJncyBpZiByZXF1ZXN0LmFyZ3MgZWxzZSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAg ICAgIGlmIGRhdGEgYW5kICd0aWQnIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3Bh dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGlkPWRhdGFbJ3RpZCddKQogICAgICAgICAgICAgZWxpZiBkYXRhIGFuZCAndG5h bWUnIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5hbWU9ZGF0YVsndG5hbWUnXSkKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAg ICAgICAgIFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfY29sdW1uc19mb3JfdGFibGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICB0bmFtZT1kYXRhWyd0bmFtZSddCisgICAgICAg ICAgICAgICAgKQogCiAgICAgICAgICAgICBpZiBTUUw6CiAgICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKQEAgLTEyMTEsNyArNjA5LDcgQEAg Y2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNl dHRpbmdzKToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAg ZGVmIGdldF9vZnR5cGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAg ICAgICAiIiIKICAgICAgICAgUmV0dXJuczoKQEAgLTEyMjAsMTAgKzYxOCwxMSBAQCBjbGFzcyBU YWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3Mp OgogICAgICAgICAiIiIKICAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9 XQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9vZnR5cGUuc3FsJ10pLCBzY2lkPXNjaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU9c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzX29iamVjdHM9c2Vs Zi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBbc2VsZi50YWJsZV90ZW1wbGF0 ZV9wYXRoLCAnZ2V0X29mdHlwZS5zcWwnXSksCisgICAgICAgICAgICAgICAgc2NpZD1zY2lkLAor ICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlPXNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSwKKyAg ICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVt X29iamVjdHMpCiAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xMjQxLDcgKzY0 MCw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBW YWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlv bgogICAgIGRlZiBnZXRfaW5oZXJpdHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5v bmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuczoKQEAgLTEyNTAsMTAgKzY0OSwxMSBA QCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVt U2V0dGluZ3MpOgogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzID0g W10KLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZ2V0X2luaGVyaXRzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVt X29iamVjdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfdHlwZT1zZWxmLm1hbmFnZXIu c2VydmVyX3R5cGUpCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o CisgICAgICAgICAgICAgICAgW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9pbmhlcml0 cy5zcWwnXSksCisgICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVw cmludC5zaG93X3N5c3RlbV9vYmplY3RzLAorICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAg ICAgICAgICAgICAgc2VydmVyX3R5cGU9c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlKQogICAgICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCiAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQpAQCAtMTI3MSwyNSArNjcxLDI5IEBAIGNsYXNzIFRh YmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6 CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRp dGlvbgotICAgIGRlZiBnZXRfcmVsYXRpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZD1Ob25lKToKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg Z2V0X2F0dGFjaF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgog ICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4gbGlzdCBvZiB0YWJsZXMgYXZhaWxhYmxlIGZvciBsaWtlL3JlbGF0aW9uCi0g ICAgICAgICAgICBjb21ib2JveCB3aGlsZSBjcmVhdGluZyBuZXcgdGFibGUKKyAgICAgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0YWJsZXMgYXZhaWxhYmxlIHRvIGJl IGF0dGFjaGVkCisgICAgICAgICAgICB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuCiAgICAgICAg ICIiIgotICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCiAgICAgICAg IHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnZ2V0X3JlbGF0aW9ucy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hvd19zeXNfb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3Rl bV9vYmplY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl90eXBl PXNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSkKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3Nl bGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsICdnZXRfYXR0YWNoX3RhYmxlcy5zcWwnXSksCisg ICAgICAgICAgICAgICAgdGlkPXRpZAorICAgICAgICAgICAgKQorCiAgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgog ICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIHsnbGFiZWwn OiByb3dbJ2xpa2VfcmVsYXRpb24nXSwgJ3ZhbHVlJzogcm93WydsaWtlX3JlbGF0aW9uJ119Cisg ICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ3RhYmxlX25hbWUnXSwgJ3ZhbHVlJzog cm93WydvaWQnXX0KICAgICAgICAgICAgICAgICApCisKICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCiAgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMApAQCAtMTI5OCw0MCArNzAyLDMzIEBAIGNsYXNzIFRhYmxlVmlldyhQR0No aWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY2x0 eXBlX2Zvcm1hdHRlcihkYXRhX3R5cGUpOgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBnZXRfcmVsYXRpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZD1Ob25lKToKICAgICAgICAgIiIiCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRh dGFfdHlwZTogVHlwZSBzdHJpbmcKLQogICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgV2Ug bmVlZCB0byByZW1vdmUgW10gZnJvbSB0eXBlIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgIGFm dGVyIGxlbmd0aC9wcmVjaXNpb24gc28gd2Ugd2lsbCBzZW5kIGZsYWcgZm9yCi0gICAgICAgICAg ICBzcWwgdGVtcGxhdGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmICdbXScgaW4gZGF0YV90eXBl OgotICAgICAgICAgICAgcmV0dXJuIGRhdGFfdHlwZVs6LTJdLCBUcnVlCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICByZXR1cm4gZGF0YV90eXBlLCBGYWxzZQotCi0gICAgQHN0YXRpY21ldGhv ZAotICAgIGRlZiBjb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKGRhdGEpOgorICAg ICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFi bGUgZm9yIGxpa2UvcmVsYXRpb24KKyAgICAgICAgICAgIGNvbWJvYm94IHdoaWxlIGNyZWF0aW5n IG5ldyB0YWJsZQogICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv IGNvbnZlcnQgbGVuZ3RoICYgcHJlY2lzaW9uIHRvIHN0cmluZwotICAgICAgICB0byBoYW5kbGUg Y2FzZSBsaWtlIHdoZW4gdXNlciBnaXZlcyAwIGFzIGxlbmd0aAotCi0gICAgICAgIEFyZ3M6Ci0g ICAgICAgICAgICBkYXRhOiBEYXRhIGZyb20gY2xpZW50CisgICAgICAgIHJlcyA9IFt7J2xhYmVs JzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX3RlbXBs YXRlX3BhdGgsICdnZXRfcmVsYXRpb25zLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzaG93X3N5 c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMsCisgICAgICAgICAg ICAgICAgc2VydmVyX3R5cGU9c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlKQorICAgICAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106 CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgeydsYWJl bCc6IHJvd1snbGlrZV9yZWxhdGlvbiddLCAndmFsdWUnOiByb3dbJ2xpa2VfcmVsYXRpb24nXX0K KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICkKIAotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgQ29udmVydGVk IGRhdGEKLSAgICAgICAgIiIiCi0gICAgICAgIGlmICdhdHRsZW4nIGluIGRhdGEgYW5kIGRhdGFb J2F0dGxlbiddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsnYXR0bGVuJ10gPSBzdHIo ZGF0YVsnYXR0bGVuJ10pCi0gICAgICAgIGlmICdhdHRwcmVjaXNpb24nIGluIGRhdGEgYW5kIGRh dGFbJ2F0dHByZWNpc2lvbiddIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsnYXR0cHJl Y2lzaW9uJ10gPSBzdHIoZGF0YVsnYXR0cHJlY2lzaW9uJ10pCi0gICAgICAgIHJldHVybiBkYXRh CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCiAgICAgZGVmIF9wYXJzZV9mb3Jt YXRfY29sdW1ucyhzZWxmLCBkYXRhLCBtb2RlPU5vbmUpOgogICAgICAgICAiIiIKQEAgLTEzNjAs MTIgKzc1NywxMiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJl YWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hl Y2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2Ns dHlwZSddLCBjWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2Ns dHlwZSddKQogCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5jb252ZXJ0X2xlbmd0 aF9wcmVjaXNpb25fdG9fc3RyaW5nKGMpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gVGFi bGVWaWV3LmNvbnZlcnRfbGVuZ3RoX3ByZWNpc2lvbl90b19zdHJpbmcoYykKIAogICAgICAgICAg ICAgICAgICAgICBkYXRhWydjb2x1bW5zJ11bYWN0aW9uXSA9IGZpbmFsX2NvbHVtbnMKICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byBleGNsdWRlIGFsbCB0aGUgY29sdW1u cyB3aGljaCBhcmUgaW5oZXJpdGVkIGZyb20gb3RoZXIgdGFibGVzCi0gICAgICAgICAgICAjICdD UkVBVEUnIG1vZGUKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBleGNsdWRlIGFsbCB0aGUgY29s dW1ucyB3aGljaCBhcmUgaW5oZXJpdGVkIGZyb20gb3RoZXIKKyAgICAgICAgICAgICMgdGFibGVz ICdDUkVBVEUnIG1vZGUKICAgICAgICAgICAgIGZpbmFsX2NvbHVtbnMgPSBbXQogCiAgICAgICAg ICAgICBmb3IgYyBpbiBjb2x1bW5zOgpAQCAtMTM4MiwzNSArNzc5LDEzIEBAIGNsYXNzIFRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAg ICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAogICAgICAgICAg ICAgICAgICAgICBjWydjbHR5cGUnXSwgY1snaGFzU3FyQnJhY2tldCddID0gc2VsZi5fY2x0eXBl X2Zvcm1hdHRlcihjWydjbHR5cGUnXSkKIAotICAgICAgICAgICAgICAgIGMgPSBzZWxmLmNvbnZl cnRfbGVuZ3RoX3ByZWNpc2lvbl90b19zdHJpbmcoYykKKyAgICAgICAgICAgICAgICBjID0gVGFi bGVWaWV3LmNvbnZlcnRfbGVuZ3RoX3ByZWNpc2lvbl90b19zdHJpbmcoYykKIAogICAgICAgICAg ICAgZGF0YVsnY29sdW1ucyddID0gZmluYWxfY29sdW1ucwogCiAgICAgICAgIHJldHVybiBkYXRh CiAKLSAgICBkZWYgY2hlY2tfYW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoc2VsZiwgZGF0YSk6 Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgYW5kIGNvdmVy dCB0YWJsZSB0byBzdHJpbmcgaW5jYXNlCi0gICAgICAgIGl0IGlzIG51bWVyaWMKLQotICAgICAg ICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSBkaWN0Ci0KLSAgICAgICAgUmV0dXJuczoK LSAgICAgICAgICAgIFVwZGF0ZWQgZGF0YSBkaWN0Ci0gICAgICAgICIiIgotICAgICAgICAjIEZv ciBQeXRob24yLCBpdCBjYW4gYmUgaW50LCBsb25nLCBmbG9hdAotICAgICAgICBpZiBoYXNhdHRy KHN0ciwgJ2RlY29kZScpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhWyduYW1lJ10s IChpbnQsIGxvbmcsIGZsb2F0KSk6Ci0gICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gc3Ry KGRhdGFbJ25hbWUnXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgRm9yIFB5dGhvbjMs IGl0IGNhbiBiZSBpbnQsIGZsb2F0Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGFbJ25h bWUnXSwgKGludCwgZmxvYXQpKToKLSAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBzdHIo ZGF0YVsnbmFtZSddKQotICAgICAgICByZXR1cm4gZGF0YQotCi0KLSAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGNy ZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKICAgICAgICAgIiIiCiAgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIG5ldyB0aGUgdGFibGUgb2JqZWN0CkBAIC0xNDUxLDcg KzgyNiw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAKICAgICAgICAgIyBQYXJzZSAmIGZvcm1hdCBjb2x1bW5zCiAg ICAgICAgIGRhdGEgPSBzZWxmLl9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhKQotICAgICAgICBk YXRhID0gc2VsZi5jaGVja19hbmRfY29udmVydF9uYW1lX3RvX3N0cmluZyhkYXRhKQorICAgICAg ICBkYXRhID0gVGFibGVWaWV3LmNoZWNrX2FuZF9jb252ZXJ0X25hbWVfdG9fc3RyaW5nKGRhdGEp CiAKICAgICAgICAgIyAnY29sbF9pbmhlcml0cycgaXMgQXJyYXkgYnV0IGl0IGNvbWVzIGFzIHN0 cmluZyBmcm9tIGJyb3dzZXIKICAgICAgICAgIyBXZSB3aWxsIGNvbnZlcnQgaXQgYWdhaW4gdG8g bGlzdApAQCAtMTQ3NCw5ICs4NDksMjIgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgICAgICBjWydy ZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQogCiAgICAgICAgIHRyeToK LSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSAnJworICAgICAgICAgICAgcGFy dGl0aW9uZWQgPSBGYWxzZQorICAgICAgICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRh IGFuZCBkYXRhWydpc19wYXJ0aXRpb25lZCddOgorICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGtp bmQnXSA9ICdwJworICAgICAgICAgICAgICAgICMgY3JlYXRlIHBhcnRpdGlvbiBzY2hlbWUKKyAg ICAgICAgICAgICAgICBkYXRhWydwYXJ0aXRpb25fc2NoZW1lJ10gPSBzZWxmLmdldF9wYXJ0aXRp b25fc2NoZW1lKGRhdGEpCisgICAgICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSBzZWxmLmdl dF9wYXJ0aXRpb25zX3NxbChkYXRhKQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbmVkID0gVHJ1 ZQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFi bGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2NyZWF0ZS5zcWwnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgIyBBcHBlbmQgU1FMIGZv ciBwYXJ0aXRpb25zCisgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIHBhcnRpdGlvbnNfc3FsCisK ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xNDkwLDcgKzg3OCw3IEBAIGNsYXNz IFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5n cyk6CiAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gZGF0YVsnbmFtZSddWzA6Q09OU1Rf TUFYX0NIQVJfQ09VTlRdCiAKICAgICAgICAgICAgICMgR2V0IHVwZGF0ZWQgc2NoZW1hIG9pZAot ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0bmFtZT1kYXRhWyduYW1lJ10pCiAKICAgICAgICAgICAg IHN0YXR1cywgc2NpZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCkBAIC0xNDk4LDcg Kzg4Niw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zY2lkKQogCiAgICAgICAgICAgICAjIHdlIG5lZWQgb2lkIHRvIHRv IGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNxbCddKSwgc2NpZD1zY2lk LCBkYXRhPWRhdGEpCiAgICAgICAgICAgICBzdGF0dXMsIHRpZCA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgpAQCAtMTUwOSwxMyArODk3 LDE0IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBW YWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgICAgIHRpZCwKICAgICAgICAgICAgICAg ICAgICAgc2NpZCwKICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAotICAgICAgICAg ICAgICAgICAgICBpY29uPSJpY29uLXRhYmxlIgorICAgICAgICAgICAgICAgICAgICBpY29uPSJp Y29uLXBhcnRpdGlvbiIgaWYgcGFydGl0aW9uZWQgZWxzZSAiaWNvbi10YWJsZSIsCisgICAgICAg ICAgICAgICAgICAgIGlzX3BhcnRpdGlvbmVkPXBhcnRpdGlvbmVkCiAgICAgICAgICAgICAgICAg KQogICAgICAgICAgICAgKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRp b24KICAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAg ICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGFuIGV4aXN0aW5nIHRh YmxlIG9iamVjdApAQCAtMTUzOCwzNCArOTI3LDIwIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAg ICAgZGF0YVtrXSA9IHYKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwsIG5hbWUgPSBz ZWxmLmdldF9zcWwoZGlkLCBzY2lkLCB0aWQsIGRhdGEpCi0KLSAgICAgICAgICAgIFNRTCA9IFNR TC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQot Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9v aWQuc3FsJ10pLCB0aWQ9dGlkKQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lz b2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKLSAgICAgICAgICAgICMgbmV3IHNj aGVtYSBpZAotICAgICAgICAgICAgc2NpZCA9IHJlc1sncm93cyddWzBdWydzY2lkJ10KLQotICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCi0gICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVw cmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCi0gICAgICAgICAgICAgICAgICAgIHRpZCwKLSAg ICAgICAgICAgICAgICAgICAgc2NpZCwKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi0lcyIgJSBzZWxmLm5vZGVfdHlwZQotICAgICAgICAg ICAgICAgICkKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihUYWJsZVZp ZXcsIHNlbGYpLnVwZGF0ZSgKKyAgICAgICAgICAgICAgICBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIGRhdGEsIHJlcykKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9u CiAgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAg ICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZXMgdGhlIHRhYmxlIG9iamVj dApAQCAtMTU4NSw3ICs5NjAsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgY2FzY2FkZSA9IEZh bHNlCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0 bGFzdHN5c29pZCkKQEAgLTE2MDYsNyArOTgxLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAgICAgICAg ZGF0YSA9IHJlc1sncm93cyddWzBdCiAKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY2FzY2FkZT1jYXNjYWRlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKQpAQCAtMTYy Niw3ICsxMDAxLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgog ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJl Y29uZGl0aW9uCiAgICAgZGVmIHRydW5jYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ1bmNhdGUgdGhl IHRhYmxlIG9iamVjdApAQCAtMTYzOCw0MyArMTAxMywyMiBAQCBjbGFzcyBUYWJsZVZpZXcoUEdD aGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSUQKICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAogICAgICAgICAiIiIK LSAgICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBpZiBpdCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Ag d2l0aCBjYXNjYWRlIGNhbGwKLSAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0 LmZvcm0gZWxzZSBqc29uLmxvYWRzKAotICAgICAgICAgICAgcmVxdWVzdC5kYXRhLCBlbmNvZGlu Zz0ndXRmLTgnCi0gICAgICAgICkKLSAgICAgICAgIyBDb252ZXJ0IHN0ciAndHJ1ZScgdG8gYm9v bGVhbiB0eXBlCi0gICAgICAgIGlzX2Nhc2NhZGUgPSBqc29uLmxvYWRzKGRhdGFbJ2Nhc2NhZGUn XSkKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRs YXN0c3lzb2lkKQogICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgICAgICBkYXRh ID0gcmVzWydyb3dzJ11bMF0KIAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd0cnVuY2F0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjYXNjYWRlPWlzX2Nhc2NhZGUpCi0gICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCi0gICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAotICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKLSAgICAgICAgICAgICAgICBpbmZvPWdldHRl eHQoIlRhYmxlIHRydW5jYXRlZCIpLAotICAgICAgICAgICAgICAgIGRhdGE9ewotICAgICAgICAg ICAgICAgICAgICAnaWQnOiB0aWQsCi0gICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAot ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBzdXBl cihUYWJsZVZpZXcsIHNlbGYpLnRydW5jYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmVz KQogCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBl bmFibGVfZGlzYWJsZV90cmlnZ2VycyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgog ICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZS9kaXNhYmxlIHRy aWdnZXIocykgb24gdGhlIHRhYmxlIG9iamVjdApAQCAtMTY5NCw3ICsxMDQ4LDcgQEAgY2xhc3Mg VGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdz KToKICAgICAgICAgaXNfZW5hYmxlID0ganNvbi5sb2FkcyhkYXRhWydlbmFibGUnXSkKIAogICAg ICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lk KQpAQCAtMTcwMyw3ICsxMDU3LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywg RGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKICAgICAgICAgICAgIGRhdGEgPSBy ZXNbJ3Jvd3MnXVswXQogCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBpc19lbmFibGVf dHJpZ2dlcj1pc19lbmFibGUpCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihTUUwpCkBAIC0xNzIzLDcgKzEwNzcsNyBAQCBjbGFzcyBUYWJsZVZpZXco UEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgcmVzZXQoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCByZXNldCBzdGF0aXN0aWNzIG9mIHRhYmxlCkBAIC0xNzM1LDI3ICsxMDg5LDkg QEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECiAgICAgICAgICAgIHRpZDog VGFibGUgSUQKICAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzZXRfc3RhdHMuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCi0gICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCi0gICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gQmFzZVRhYmxlVmlldy5yZXNldF9zdGF0aXN0 aWNzKHNlbGYsIHNjaWQsIHRpZCkKIAotICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKLSAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCi0gICAgICAgICAgICAgICAgaW5mbz1n ZXR0ZXh0KCJUYWJsZSBzdGF0aXN0aWNzIGhhdmUgYmVlbiByZXNldCIpLAotICAgICAgICAgICAg ICAgIGRhdGE9ewotICAgICAgICAgICAgICAgICAgICAnaWQnOiB0aWQsCi0gICAgICAgICAgICAg ICAgICAgICdzY2lkJzogc2NpZAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICkKLQot ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKLQotICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgbXNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIG1vZGlmaWVkIHNxbCBmb3IgdGFibGUgb2JqZWN0 CkBAIC0xNzY4LDQyNyArMTEwNCwxNSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICB0aWQ6IFRhYmxl IElECiAgICAgICAgICIiIgogICAgICAgICBkYXRhID0gZGljdCgpCisgICAgICAgIHJlcyA9IE5v bmUKICAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CiAgICAgICAgICAg ICB0cnk6CiAgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModiwgZW5jb2Rpbmc9 J3V0Zi04JykKICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yLCBLZXlF cnJvcik6CiAgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKIAotICAgICAgICBTUUwsIG5hbWUg PSBzZWxmLmdldF9zcWwoZGlkLCBzY2lkLCB0aWQsIGRhdGEpCi0gICAgICAgIFNRTCA9IHJlLnN1 YignXG57Mix9JywgJ1xuXG4nLCBTUUwpCi0gICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKQot ICAgICAgICBpZiBTUUwgPT0gJyc6Ci0gICAgICAgICAgICBTUUwgPSAiLS1tb2RpZmllZCBTUUwi Ci0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgICAgICBkYXRhPVNR TCwKLSAgICAgICAgICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQotCi0gICAgZGVmIGdldF9pbmRl eF9jb25zdHJhaW50X3NxbChzZWxmLCBkaWQsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAg ICAgICAgQXJnczoKLSAgICAgICAgICAgdGlkOiBUYWJsZSBJRAotICAgICAgICAgICBkYXRhOiBk YXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNsaWVudAotCi0gICAgICAgIFJldHVybnM6Ci0gICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGluZGV4IGNv bnN0cmFpbnRzCi0gICAgICAgIChQcmltYXJ5IEtleSAmIFVuaXF1ZSkKLSAgICAgICAgIiIiCi0g ICAgICAgIHNxbCA9IFtdCi0gICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNv bnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAgaW5kZXhfY29uc3RyYWludHMgPSB7Ci0g ICAgICAgICAgICAncCc6ICdwcmltYXJ5X2tleScsICd1JzogJ3VuaXF1ZV9jb25zdHJhaW50Jwot ICAgICAgICB9Ci0KLSAgICAgICAgZm9yIGN0eXBlIGluIGluZGV4X2NvbnN0cmFpbnRzLmtleXMo KToKLSAgICAgICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCi0gICAgICAg ICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRl Ci0gICAgICAgICAgICBpZiBpbmRleF9jb25zdHJhaW50c1tjdHlwZV0gaW4gZGF0YToKLSAgICAg ICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dCi0g ICAgICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCi0gICAgICAg ICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgICAg IGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgICAg IGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIGNb J3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwg Zm9yIGRyb3AKLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgIGlmICdj aGFuZ2VkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25z dHJhaW50WydjaGFuZ2VkJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9 IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0 YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1jWydvaWQnXSwg Y29uc3RyYWludF90eXBlPWN0eXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAgICAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAg ICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAg ICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgc3Fs LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGV4X2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vw ZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAg ICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoK LSAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKLSAgICAg ICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAg ICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAg ICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAg aWYgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSwgYyk6 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9w YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVh dGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBj b25uPXNlbGYuY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 cmFpbnRfbmFtZT0nUFJJTUFSWSBLRVknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBjdHlwZSA9PSAncCcgZWxzZSAnVU5JUVVFJwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQot ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21w bGV0ZSBmb3IgezB9IGNvbnN0cmFpbnQnLmZvcm1hdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0p Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCi0gICAgICAgIGlmIGxlbihzcWwpID4gMDoKLSAgICAgICAgICAgICMgSm9pbiBh bGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCi0gICAgICAgICAgICByZXR1cm4gJ1xuXG4n LmpvaW4oc3FsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg IGRlZiBnZXRfZm9yZWlnbl9rZXlfc3FsKHNlbGYsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgot ICAgICAgICAgQXJnczoKLSAgICAgICAgICAgdGlkOiBUYWJsZSBJRAotICAgICAgICAgICBkYXRh OiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNsaWVudAotCi0gICAgICAgIFJldHVybnM6Ci0g ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGZvcmVp Z24ga2V5Ci0gICAgICAgICIiIgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNrIGlm IGNvbnN0cmFpbnQgaXMgaW4gZGF0YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8g Y2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCi0gICAgICAgIGlmICdmb3JlaWduX2tleScgaW4g ZGF0YToKLSAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydmb3JlaWduX2tleSddCi0gICAg ICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAgIGlm ICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0 cmFpbnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRh WydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSdd Ci0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKLSAgICAgICAgICAgICAgICAg ICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5z dHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdjaGFu Z2VkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRb J2NoYW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hl bWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAg ICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LCBjaWQ9Y1snb2lkJ10pCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKLSAgICAgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0g cmVzWydyb3dzJ11bMF0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVj dAotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAg ICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVf Y29uc3RyYWlucygnZm9yZWlnbl9rZXknLCBjKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNx bC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgZm9y ZWlnbl9rZXkgY29uc3RyYWludCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xu XG4nLmpvaW4oc3FsKQotCi0gICAgICAgICAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBjOgot ICAgICAgICAgICAgICAgICAgICAgICAgY29scyA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAg ICBmb3IgY29sIGluIGNbJ2NvbHVtbnMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b2xzLmFwcGVuZChjb2xbJ2xvY2FsX2NvbHVtbiddKQotCi0gICAgICAgICAgICAgICAgICAgICAg ICBjb3ZlcmluZ2luZGV4ID0gc2VsZi5zZWFyY2hfY292ZXJpbmdpbmRleCh0aWQsIGNvbHMpCi0K LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvdmVyaW5naW5kZXggaXMgTm9uZSBhbmQgJ2F1 dG9pbmRleCcgaW4gYyBhbmQgY1snYXV0b2luZGV4J10gYW5kIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBpbiBjIGFuZAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjWydjb3ZlcmluZ2luZGV4J10gIT0gJycpOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQocmVuZGVyX3RlbXBsYXRlKAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgJ2FkZGVk JyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2Fk ZGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10K LSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAg ICAgICAgICAgICAgICMgU3FsIHRvIGFkZCBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgIyBD b2x1bW5zCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3Ry YWlucygnZm9yZWlnbl9rZXknLCBjKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgZm9yZWlnbl9r ZXkgY29uc3RyYWludCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpv aW4oc3FsKQotCi0gICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11b MF1bJ3JlZmVyZW5jZXMnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVt YSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWydy ZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQotCi0gICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxh dGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9r ZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25u PXNlbGYuY29ubgotICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAg ICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgY1snYXV0b2luZGV4J106 Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfaW5kZXguc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJp cCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgIGlmIGxlbihzcWwp ID4gMDoKLSAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5n Ci0gICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQotICAgICAgICBlbHNlOgotICAg ICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRfY2hlY2tfY29uc3RyYWludF9zcWwo c2VsZiwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgICBBcmdzOgotICAgICAgICAg ICB0aWQ6IFRhYmxlIElECi0gICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0 aGUgY2xpZW50Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBjaGVjayBjb25zdHJhaW50Ci0gICAgICAgICIi IgotICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4g ZGF0YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFu Z2UvZGVsZXRlCi0gICAgICAgIGlmICdjaGVja19jb25zdHJhaW50JyBpbiBkYXRhOgotICAgICAg ICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2NoZWNrX2NvbnN0cmFpbnQnXQotICAgICAgICAgICAg IyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCi0gICAgICAgICAgICBpZiAnZGVsZXRl ZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50Wydk ZWxldGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1h J10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAg ICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCi0gICAgICAgICAgICAgICAgICAgIHNxbC5h cHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJp cCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdjaGFuZ2Vk JyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2No YW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAg ICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o Ci0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRl X3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQsIGNpZD1jWydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAgICAgICAgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEg PSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2Jq ZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAg ICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKLSAg ICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFp bnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKLSAgICAg ICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAg ICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAg aWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnY2hlY2tfY29uc3RyYWludCcsIGMpOgot ICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVm aW5pdGlvbiBpbmNvbXBsZXRlIGZvciBjaGVja19jb25zdHJhaW50JwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAgICAgICAgICAgICAg c3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5jaGVja19jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj cmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1z ZWxmLmNvbm4KLSAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKLSAgICAgICAg ICAgICAgICAgICAgKQotCi0gICAgICAgIGlmIGxlbihzcWwpID4gMDoKLSAgICAgICAgICAgICMg Sm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCi0gICAgICAgICAgICByZXR1cm4g J1xuXG4nLmpvaW4oc3FsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK LQotICAgIGRlZiBnZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsKHNlbGYsIGRpZCwgdGlkLCBk YXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6IFRhYmxl IElECi0gICAgICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50Ci0K LSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg bW9kaWZpZWQgc3FsIGZvciBleGNsdXNpb24gY29uc3RyYWludAotICAgICAgICAiIiIKLSAgICAg ICAgc3FsID0gW10KLSAgICAgICAgIyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKLSAg ICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0 ZQotICAgICAgICBpZiAnZXhjbHVkZV9jb25zdHJhaW50JyBpbiBkYXRhOgotICAgICAgICAgICAg Y29uc3RyYWludCA9IGRhdGFbJ2V4Y2x1ZGVfY29uc3RyYWludCddCi0gICAgICAgICAgICAjIElm IGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAgIGlmICdkZWxldGVkJyBp biBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0 ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQot ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAg ICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKLSAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJp cCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdjaGFuZ2Vk JyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2No YW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEn XQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAgICAg ICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o Ci0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBk aWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10pCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKLSAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KLSAgICAgICAgICAgICAgICAgICAgIyBTcWwg dG8gdXBkYXRlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19k YXRhPW9sZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25u KS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdh ZGRlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50 WydhZGRlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVt YSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAg ICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKCdleGNsdWRl X2NvbnN0cmFpbnQnLCBjKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgZXhjbHVzaW9uX2NvbnN0 cmFpbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAg ICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkK LQotICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4KLSAgICAgICAgICAgICAgICAgICAg ICAgICkuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgIGlmIGxl bihzcWwpID4gMDoKLSAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUg c3RyaW5nCi0gICAgICAgICAgICByZXR1cm4gdSdcblxuJy5qb2luKHNxbCkKLSAgICAgICAgZWxz ZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0X3RyaWdnZXJfZnVuY3Rp b25fc2NoZW1hKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIHJldHVybiB0cmlnZ2VyIGZ1bmN0aW9uIHdpdGggc2NoZW1hIG5hbWUKLSAgICAgICAg IiIiCi0gICAgICAgICMgSWYgbGFuZ3VhZ2UgaXMgJ2VkYnNwbCcgdGhlbiB0cmlnZ2VyIGZ1bmN0 aW9uIHNob3VsZCBiZQotICAgICAgICAjICdJbmxpbmUgRURCLVNQTCcgZWxzZSB3ZSB3aWxsIGZp bmQgdGhlIHRyaWdnZXIgZnVuY3Rpb24KLSAgICAgICAgIyB3aXRoIHNjaGVtYSBuYW1lLgotICAg ICAgICBpZiBkYXRhWydsYW5uYW1lJ10gPT0gJ2VkYnNwbCc6Ci0gICAgICAgICAgICBkYXRhWyd0 ZnVuY3Rpb24nXSA9ICdJbmxpbmUgRURCLVNQTCcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAiLyIuam9pbigKLSAgICAg ICAgICAgICAgICAgICAgW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLCdnZXRfdHJpZ2dlcmZ1 bmN0aW9ucy5zcWwnXQotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgdGdmb2lk PWRhdGFbJ3RnZm9pZCddLAotICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2Vs Zi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cwotICAgICAgICAgICAgKQotCi0gICAgICAg ICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgIyBVcGRhdGUgdGhlIHRyaWdn ZXIgZnVuY3Rpb24gd2hpY2ggd2UgaGF2ZSBmZXRjaGVkIHdpdGgKLSAgICAgICAgICAgICMgc2No ZW1hIG5hbWUKLSAgICAgICAgICAgIGlmICdyb3dzJyBpbiByZXN1bHQgYW5kIGxlbihyZXN1bHRb J3Jvd3MnXSkgPiAwIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RmdW5jdGlv bnMnIGluIHJlc3VsdFsncm93cyddWzBdOgotICAgICAgICAgICAgICAgIGRhdGFbJ3RmdW5jdGlv biddID0gcmVzdWx0Wydyb3dzJ11bMF1bJ3RmdW5jdGlvbnMnXQotICAgICAgICByZXR1cm4gZGF0 YQotCi0gICAgZGVmIF9mb3JtYXRfYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgIiIiCi0gICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmb3JtYXQgYXJndW1lbnRzLgotCi0gICAgICAgIEFyZ3M6 Ci0gICAgICAgICAgICBhcmdzOiBBcmd1bWVudHMKLQotICAgICAgICBSZXR1cm5zOgotICAgICAg ICAgICAgRm9ybWF0ZWQgYXJndW1lbnRzIGZvciBmdW5jdGlvbgotICAgICAgICAiIiIKLSAgICAg ICAgZm9ybWF0dGVkX2FyZ3MgPSBbIid7MH0nIi5mb3JtYXQoYXJnKSBmb3IgYXJnIGluIGFyZ3Nd Ci0gICAgICAgIHJldHVybiAnLCAnLmpvaW4oZm9ybWF0dGVkX2FyZ3MpCi0KLSAgICBkZWYgZ2V0 X3NxbChzZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgY3JlYXRlL3VwZGF0ZSBzcWwgZnJvbSBtb2RlbCBk YXRhCi0gICAgICAgIGNvbWluZyBmcm9tIGNsaWVudAotICAgICAgICAiIiIKICAgICAgICAgaWYg dGlkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFz dHN5c29pZCkKQEAgLTIxOTYsMjU4ICsxMTIwLDE3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQogCi0gICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBd Ci0gICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRpZCwg b2xkX2RhdGEpCi0KLSAgICAgICAgICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMgY29t aW5nIGZyb20gY2xpZW50IHJlcXVpcmVkCi0gICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRh OgotICAgICAgICAgICAgICAgIGZvciBtb2RlIGluIFsnYWRkZWQnLCAnY2hhbmdlZCcsICdkZWxl dGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgaW4gZGF0YVsncmVsYWNsJ106Ci0g ICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wnXVttb2RlXSA9IHBhcnNlX3ByaXZf dG9fZGIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ11bbW9kZV0s IHNlbGYuYWNsCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgSWYg bmFtZSBpcyBub3QgcHJlc2VudCBpbiByZXF1ZXN0IGRhdGEKLSAgICAgICAgICAgIGlmICduYW1l JyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0YVsn bmFtZSddCi0KLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNoZWNrX2FuZF9jb252ZXJ0X25hbWVf dG9fc3RyaW5nKGRhdGEpCi0KLSAgICAgICAgICAgICMgSWYgbmFtZSBpZiBub3QgcHJlc2VudAot ICAgICAgICAgICAgaWYgJ3NjaGVtYScgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgZGF0 YVsnc2NoZW1hJ10gPSBvbGRfZGF0YVsnc2NoZW1hJ10KLQotICAgICAgICAgICAgIyBGaWx0ZXIg b3V0IG5ldyB0YWJsZXMgZnJvbSBsaXN0LCB3ZSB3aWxsIHNlbmQgY29tcGxldGUgbGlzdAotICAg ICAgICAgICAgIyBhbmQgbm90IG5ld2x5IGFkZGVkIHRhYmxlcyBpbiB0aGUgbGlzdCBmcm9tIGNs aWVudAotICAgICAgICAgICAgIyBzbyB3ZSB3aWxsIGZpbHRlciBuZXcgdGFibGVzIGhlcmUKLSAg ICAgICAgICAgIGlmICdjb2xsX2luaGVyaXRzJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIHBf bGVuID0gbGVuKG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAgY19s ZW4gPSBsZW4oZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICMgSWYgdGFi bGUocykgYWRkZWQKLSAgICAgICAgICAgICAgICBpZiBjX2xlbiA+IHBfbGVuOgotICAgICAgICAg ICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX2FkZGVkJ10gPSBsaXN0KAotICAgICAgICAg ICAgICAgICAgICAgICAgc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgLSBzZXQob2xkX2RhdGFb J2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg ICMgSWYgdGFibGUocylyZW1vdmVkCi0gICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA8IHBfbGVu OgotICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX3JlbW92ZWQnXSA9IGxp c3QoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMn XSkgLSBzZXQoZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICAgICApCi0g ICAgICAgICAgICAgICAgIyBTYWZlIHNpZGUgdmVyaWZpY2F0aW9uLEluIGNhc2UgaXQgaGFwcGVu cy4uCi0gICAgICAgICAgICAgICAgIyBJZiB1c2VyIHJlbW92ZXMgYW5kIGFkZHMgc2FtZSBudW1i ZXIgb2YgdGFibGUKLSAgICAgICAgICAgICAgICAjIGVnIHJlbW92ZWQgb25lIHRhYmxlIGFuZCBh ZGRlZCBvbmUgbmV3IHRhYmxlCi0gICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA9PSBwX2xlbjoK LSAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19hZGRlZCddID0gbGlzdCgK LSAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pIC0gc2V0 KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAg ICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19yZW1vdmVkJ10gPSBsaXN0KAotICAg ICAgICAgICAgICAgICAgICAgICAgc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pIC0gc2V0 KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kYXRh PW9sZF9kYXRhLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotICAgICAgICAgICAgIyBSZW1v dmVzIHRyYWluaW5nIG5ldyBsaW5lcwotICAgICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicp ICsgJ1xuXG4nCi0KLSAgICAgICAgICAgICMgUGFyc2UvRm9ybWF0IGNvbHVtbnMgJiBjcmVhdGUg c3FsCi0gICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAj IFBhcnNlIHRoZSBkYXRhIGNvbWluZyBmcm9tIGNsaWVudAotICAgICAgICAgICAgICAgIGRhdGEg PSBzZWxmLl9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhLCBtb2RlPSdlZGl0JykKLQotICAgICAg ICAgICAgICAgIGNvbHVtbnMgPSBkYXRhWydjb2x1bW5zJ10KLSAgICAgICAgICAgICAgICBjb2x1 bW5fc3FsID0gJ1xuJwotCi0gICAgICAgICAgICAgICAgIyBJZiBjb2x1bW4ocykgaXMvYXJlIGRl bGV0ZWQKLSAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29sdW1uczoKLSAgICAgICAg ICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snZGVsZXRlZCddOgotICAgICAgICAgICAgICAg ICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAg ICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgICAgICAgICAgICAg IyBTcWwgZm9yIGRyb3AgY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnaW5oZXJp dGVkZnJvbScgbm90IGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3Nx bCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykgKyAnXG5cbicKLQotICAgICAgICAgICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2FyZSBj aGFuZ2VkCi0gICAgICAgICAgICAgICAgIyBIZXJlIHdlIHdpbGwgYmUgbmVlZGluZyBwcmV2aW91 cyBwcm9wZXJ0aWVzIG9mIGNvbHVtbgotICAgICAgICAgICAgICAgICMgc28gdGhhdCB3ZSBjYW4g Y29tcGFyZSAmIHVwZGF0ZSBpdAotICAgICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb2x1 bW5zOgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1bW5zWydjaGFuZ2VkJ106Ci0g ICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAg ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0gICAgICAgICAg ICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j b2x1bW5fYWNsKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZD1jWydhdHRudW0nXSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo b3dfc3lzX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0g ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QocHJvcGVydGllc19zcWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNb J3Jvd3MnXVswXQotCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnY2x0eXBlJ10s IG9sZF9kYXRhWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKG9sZF9k YXRhWydjbHR5cGUnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5j b252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKG9sZF9kYXRhKQotCi0gICAgICAgICAg ICAgICAgICAgICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvbGRfZGF0YVsndHlwbnNwbmFtZSddLCBvbGRfZGF0YVsndHlwbmFt ZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydpc2R1cCddLCBvbGRf ZGF0YVsnYXR0bmRpbXMnXSwgb2xkX2RhdGFbJ2F0dHR5cG1vZCddCi0gICAgICAgICAgICAgICAg ICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGgg JiBwcmVjaXNpb24gYm90aAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5z ZWFyY2gocicoXGQrKSwoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAgICAgICAg aWYgbWF0Y2hPYmo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dGxl biddID0gaW50KG1hdGNoT2JqLmdyb3VwKDEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IGludChtYXRjaE9iai5ncm91cCgyKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ ZiB3ZSBoYXZlIGxlbmd0aCBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hP YmogPSByZS5zZWFyY2gocicoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRf ZGF0YVsnYXR0bGVuJ10gPSBpbnQobWF0Y2hPYmouZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvbGRfZGF0YVsnYXR0bGVuJ10gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLQotICAgICAgICAgICAgICAgICAg ICAgICAgb2xkX2RhdGFbJ2NsdHlwZSddID0gRGF0YVR5cGVSZWFkZXIucGFyc2VfdHlwZV9uYW1l KG9sZF9kYXRhWydjbHR5cGUnXSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9y IGFsdGVyIGNvbHVtbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZyb20n IG5vdCBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9zcWwgKz0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb c2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29u bikuc3RyaXAoJ1xuJykgKyAnXG5cbicKLQotICAgICAgICAgICAgICAgICMgSWYgY29sdW1uKHMp IGlzL2FyZSBhZGRlZAotICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29sdW1uczoKLSAg ICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snYWRkZWQnXToKLSAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAg ICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLSAgICAgICAgICAgICAgICAgICAg ICAgICMgU3FsIGZvciBjcmVhdGUgY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAn YXR0YWNsJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0g cGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsKQotCi0gICAg ICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9f c3RyaW5nKGMpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICdpbmhlcml0ZWRmcm9tJyBu b3QgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fc3FsICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nl bGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKSArICdc blxuJwotCi0gICAgICAgICAgICAgICAgIyBDb21iaW5lIGFsbCB0aGUgU1FMIHRvZ2V0aGVyCi0g ICAgICAgICAgICAgICAgU1FMICs9IGNvbHVtbl9zcWwuc3RyaXAoJ1xuJykKLQotICAgICAgICAg ICAgIyBDaGVjayBpZiBpbmRleCBjb25zdHJhaW50cyBhcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVk Ci0gICAgICAgICAgICBpbmRleF9jb25zdHJhaW50X3NxbCA9IHNlbGYuZ2V0X2luZGV4X2NvbnN0 cmFpbnRfc3FsKGRpZCwgdGlkLCBkYXRhKQotICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGluZGV4 IGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKLSAgICAgICAgICAgIGlmIGlu ZGV4X2NvbnN0cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCArPSAn XG4nICsgaW5kZXhfY29uc3RyYWludF9zcWwKLQotICAgICAgICAgICAgIyBDaGVjayBpZiBmb3Jl aWduIGtleShzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBmb3Jl aWduX2tleV9zcWwgPSBzZWxmLmdldF9mb3JlaWduX2tleV9zcWwodGlkLCBkYXRhKQotICAgICAg ICAgICAgIyBJZiB3ZSBoYXZlIGZvcmVpZ24ga2V5IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3Fs Ci0gICAgICAgICAgICBpZiBmb3JlaWduX2tleV9zcWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg ICAgICAgU1FMICs9ICdcbicgKyBmb3JlaWduX2tleV9zcWwKLQotICAgICAgICAgICAgIyBDaGVj ayBpZiBjaGVjayBjb25zdHJhaW50KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKLSAg ICAgICAgICAgIGNoZWNrX2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfY2hlY2tfY29uc3RyYWlu dF9zcWwodGlkLCBkYXRhKQotICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGNoZWNrIGNvbnN0cmFp bnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwKLSAgICAgICAgICAgIGlmIGNoZWNrX2NvbnN0 cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsgY2hl Y2tfY29uc3RyYWludF9zcWwKLQotICAgICAgICAgICAgIyBDaGVjayBpZiBleGNsdXNpb24gY29u c3RyYWludChzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCi0gICAgICAgICAgICBleGNs dXNpb25fY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9leGNsdXNpb25fY29uc3RyYWludF9zcWwo ZGlkLCB0aWQsIGRhdGEpCi0gICAgICAgICAgICAjIElmIHdlIGhhdmUgY2hlY2sgY29uc3RyYWlu dCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAotICAgICAgICAgICAgaWYgZXhjbHVzaW9uX2Nv bnN0cmFpbnRfc3FsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsg ZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl cXVpcmVkX2FyZ3MgPSBbCi0gICAgICAgICAgICAgICAgJ25hbWUnCi0gICAgICAgICAgICBdCi0K LSAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKLSAgICAgICAgICAgICAgICBp ZiBhcmcgbm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXh0KCct LSBkZWZpbml0aW9uIGluY29tcGxldGUnKQotCi0gICAgICAgICAgICAjIHZhbGlkYXRlIGNvbnN0 cmFpbnQgZGF0YS4KLSAgICAgICAgICAgIGZvciBrZXkgaW4gWydwcmltYXJ5X2tleScsICd1bmlx dWVfY29uc3RyYWludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZm9yZWlnbl9rZXknLCAn Y2hlY2tfY29uc3RyYWludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXhjbHVkZV9jb25z dHJhaW50J106Ci0gICAgICAgICAgICAgICAgaWYga2V5IGluIGRhdGEgYW5kIGxlbihkYXRhW2tl eV0pID4gMDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGNvbnN0cmFpbnQgaW4gZGF0YVtrZXld OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlu cyhrZXksIGNvbnN0cmFpbnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBn ZXR0ZXh0KCctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIHswfScuZm9ybWF0KGtleSkpCi0K LSAgICAgICAgICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMgY29taW5nIGZyb20gY2xp ZW50IHJlcXVpcmVkCi0gICAgICAgICAgICAjIGluIHNlcnZlciBzaWRlIGZvcm1hdAotICAgICAg ICAgICAgaWYgJ3JlbGFjbCcgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wn XSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQotCi0gICAgICAg ICAgICAjIFBhcnNlICYgZm9ybWF0IGNvbHVtbnMKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9w YXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhKQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2hlY2tf YW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoZGF0YSkKLQotICAgICAgICAgICAgaWYgJ2ZvcmVp Z25fa2V5JyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2ZvcmVpZ25f a2V5J106Ci0gICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11bMF1b J3JlZmVyZW5jZXMnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVtYSdd ID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWydyZW1v dGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQotCi0gICAgICAgICAgICAjIElm IHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdjcmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChk aWQsIHNjaWQsIHRpZCwgZGF0YSwgcmVzKQogICAgICAgICBTUUwgPSByZS5zdWIoJ1xuezIsfScs ICdcblxuJywgU1FMKQogICAgICAgICBTUUwgPSBTUUwuc3RyaXAoJ1xuJykKKyAgICAgICAgaWYg U1FMID09ICcnOgorICAgICAgICAgICAgU1FMID0gIi0tbW9kaWZpZWQgU1FMIgorICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1TUUwsCisgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKIAotICAgICAgICByZXR1cm4gU1FMLCBkYXRhWydu YW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBvbGRfZGF0YVsnbmFtZSddCi0KLSAgICBAc3Rh dGljbWV0aG9kCi0gICAgZGVmIHZhbGlkYXRlX2NvbnN0cmFpbnMoa2V5LCBkYXRhKToKLQotICAg ICAgICBpZiBrZXkgPT0gJ3ByaW1hcnlfa2V5JyBvciBrZXkgPT0gJ3VuaXF1ZV9jb25zdHJhaW50 JzoKLSAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCBsZW4oZGF0YVsnY29sdW1u cyddKSA+IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVsaWYga2V5ID09ICdmb3Jl aWduX2tleSc6Ci0gICAgICAgICAgICBpZiAnb2lkJyBub3QgaW4gZGF0YToKLSAgICAgICAgICAg ICAgICBmb3IgYXJnIGluIFsnY29sdW1ucyddOgotICAgICAgICAgICAgICAgICAgICBpZiBhcmcg bm90IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg ICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkgYW5kIGxlbihk YXRhW2FyZ10pIDwgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g ICAgICAgICAgICAgICAgaWYgJ2F1dG9pbmRleCcgaW4gZGF0YSBhbmQgZGF0YVsnYXV0b2luZGV4 J10gYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICgnY292ZXJpbmdpbmRleCcgbm90IGlu IGRhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVsnY292ZXJpbmdpbmRleCddID09ICcnKToKLSAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgZWxpZiBrZXkg PT0gJ2NoZWNrX2NvbnN0cmFpbnQnOgotICAgICAgICAgICAgZm9yIGFyZyBpbiBbJ2NvbnNyYydd OgotICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YSBvciBkYXRhW2FyZ10gPT0gJyc6 Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRy dWUKLQotICAgICAgICBlbGlmIGtleSA9PSAnZXhjbHVkZV9jb25zdHJhaW50JzoKLSAgICAgICAg ICAgIHBhc3MKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBkZXBlbmRl bnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAg ICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9u c2UKQEAgLTI0NjAsNDMgKzExNDMsOSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc2NpZDogU2No ZW1hIElECiAgICAgICAgICAgICB0aWQ6IFRhYmxlIElECiAgICAgICAgICIiIgotICAgICAgICAj IFNwZWNpZmljIGNvbmRpdGlvbiBmb3IgY29sdW1uIHdoaWNoIHdlIG5lZWQgdG8gYXBwZW5kCi0g ICAgICAgIHdoZXJlID0gIldIRVJFIGRlcC5yZWZvYmppZD17MH06Ok9JRCIuZm9ybWF0KHRpZCkK KyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3RhYmxlX2RlcGVuZGVudHMoc2VsZiwg dGlkKQogCi0gICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cygK LSAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCi0gICAgICAgICkKLQotICAgICAgICAjIFNwZWNp ZmljIHNxbCB0byBydW4gYWdhaW50IGNvbHVtbiB0byBmZXRjaCBkZXBlbmRlbnRzCi0gICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmQuc3FsJ10pLCB3aGVy ZT13aGVyZSkKLQotICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jv d3MnXToKLSAgICAgICAgICAgIHJlZl9uYW1lID0gcm93WydyZWZuYW1lJ10KLSAgICAgICAgICAg IGlmIHJlZl9uYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAg ICAgICAgZGVwX3R5cGUgPSAnJwotICAgICAgICAgICAgZGVwX3N0ciA9IHJvd1snZGVwdHlwZSdd Ci0gICAgICAgICAgICBpZiBkZXBfc3RyID09ICdhJzoKLSAgICAgICAgICAgICAgICBkZXBfdHlw ZSA9ICdhdXRvJwotICAgICAgICAgICAgZWxpZiBkZXBfc3RyID09ICduJzoKLSAgICAgICAgICAg ICAgICBkZXBfdHlwZSA9ICdub3JtYWwnCi0gICAgICAgICAgICBlbGlmIGRlcF9zdHIgPT0gJ2kn OgotICAgICAgICAgICAgICAgIGRlcF90eXBlID0gJ2ludGVybmFsJwotCi0gICAgICAgICAgICBk ZXBlbmRlbnRzX3Jlc3VsdC5hcHBlbmQoeyd0eXBlJzogJ3NlcXVlbmNlJywgJ25hbWUnOiByZWZf bmFtZSwgJ2ZpZWxkJzogZGVwX3R5cGV9KQotCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAotICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCi0gICAgICAgICAgICBz dGF0dXM9MjAwCi0gICAgICAgICkKLQotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFz ZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1 bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQpAQCAt MjUwOCwxOCArMTE1NywxMCBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRh VHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ RAogICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECiAgICAgICAgICAgICB0aWQ6IFRhYmxlIElE Ci0KICAgICAgICAgIiIiCi0gICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9k ZXBlbmRlbmNpZXMoCi0gICAgICAgICAgICBzZWxmLmNvbm4sIHRpZAotICAgICAgICApCi0KLSAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgICAgICByZXNwb25zZT1kZXBlbmRl bmNpZXNfcmVzdWx0LAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCisgICAgICAg IHJldHVybiBCYXNlVGFibGVWaWV3LmdldF90YWJsZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlkKQog Ci0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNv bmRpdGlvbgogICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAg ICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIHJldmVyc2UgZW5n aW5lZXJlZCBzcWwgZm9yCkBAIC0yNTM0LDEyICsxMTc1LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAg IiIiCiAgICAgICAgIG1haW5fc3FsID0gW10KIAotICAgICAgICAiIiIKLSAgICAgICAgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAjIDEpIFJldmVyc2UgZW5n aW5lZXJlZCBzcWwgZm9yIFRBQkxFCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLSAgICAgICAgIiIiCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKQEAg LTI1NTIsMjUwICsxMTg4LDEwIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAKICAgICAgICAgZGF0YSA9IHJlc1sncm93 cyddWzBdCiAKLSAgICAgICAgIyBUYWJsZSAmIFNjaGVtYSBkZWNsYXJhdGlvbiBzbyB0aGF0IHdl IGNhbiB1c2UgdGhlbSBpbiBjaGlsZCBub2RlcwotICAgICAgICBzY2hlbWEgPSBkYXRhWydzY2hl bWEnXQotICAgICAgICB0YWJsZSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgIGRhdGEgPSBzZWxm Ll9mb3JtYXR0ZXIoZGlkLCBzY2lkLCB0aWQsIGRhdGEpCi0KLSAgICAgICAgIyBOb3cgd2UgaGF2 ZSBhbGwgbGlzIG9mIGNvbHVtbnMgd2hpY2ggd2UgbmVlZAotICAgICAgICAjIHRvIGluY2x1ZGUg aW4gb3VyIGNyZWF0ZSBkZWZpbml0aW9uLCBMZXQncyBmb3JtYXQgdGhlbQotICAgICAgICBpZiAn Y29sdW1ucycgaW4gZGF0YToKLSAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVtbnMnXToK LSAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgotICAgICAgICAgICAgICAgICAgICBj WydhdHRhY2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIoY1snYXR0YWNsJ10sIHNlbGYuY29sdW1uX2Fj bCkKLQotICAgICAgICAgICAgICAgICMgY2hlY2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAotICAgICAg ICAgICAgICAgIGlmICdjbHR5cGUnIGluIGM6Ci0gICAgICAgICAgICAgICAgICAgIGNbJ2NsdHlw ZSddLCBjWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2NsdHlw ZSddKQotCi0gICAgICAgIHNxbF9oZWFkZXIgPSB1Ii0tIFRhYmxlOiB7MH1cblxuLS0gIi5mb3Jt YXQoc2VsZi5xdElkZW50KHNlbGYuY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhWyduYW1lJ10pKQotCi0gICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLQotICAgICAg ICBzcWxfaGVhZGVyID0gc3FsX2hlYWRlci5zdHJpcCgnXG4nKQotICAgICAgICBzcWxfaGVhZGVy ICs9ICdcbicKKyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3JldmVyc2VfZW5naW5l ZXJlZF9zcWwoCisgICAgICAgICAgICBzZWxmLCBkaWQsIHNjaWQsIHRpZCwgbWFpbl9zcWwsIGRh dGEpCiAKLSAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAotICAgICAgICBtYWluX3NxbC5hcHBl bmQoc3FsX2hlYWRlcikKLQotICAgICAgICAjIFBhcnNlIHByaXZpbGVnZSBkYXRhCi0gICAgICAg IGlmICdyZWxhY2wnIGluIGRhdGE6Ci0gICAgICAgICAgICBkYXRhWydyZWxhY2wnXSA9IHBhcnNl X3ByaXZfdG9fZGIoZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQotCi0gICAgICAgICMgSWYgdGhl IHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0gICAgICAgIHRh YmxlX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubiwgaXNfc3FsPVRydWUpCi0KLSAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAot ICAgICAgICB0YWJsZV9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdGFibGVfc3FsKQot ICAgICAgICBtYWluX3NxbC5hcHBlbmQodGFibGVfc3FsLnN0cmlwKCdcbicpKQotCi0gICAgICAg ICIiIgotICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAg ICAgICAjIDIpIFJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yIElOREVYCi0gICAgICAgICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICIiIgotCi0gICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSks IHRpZD10aWQpCi0gICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsIGlkeD1yb3dbJ29pZCddLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lk KQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgZGF0YSA9IGRp Y3QocmVzWydyb3dzJ11bMF0pCi0gICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRh IGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0gICAgICAgICAgICBk YXRhWydzY2hlbWEnXSA9IHNjaGVtYQotICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHRhYmxl Ci0gICAgICAgICAgICAjIFdlIGFsc28gbmVlZCB0byBmZWN0aCBjb2x1bW5zIG9mIGluZGV4Ci0g ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2NvbHVtbl9kZXRhaWxzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZHg9cm93WydvaWQnXSkKLSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAg ICAgICAgICAgICMgJ2F0dGRlZicgY29tZXMgd2l0aCBxdW90ZXMgZnJvbSBxdWVyeSBzbyB3ZSBu ZWVkIHRvIHN0cmlwIHRoZW0KLSAgICAgICAgICAgICMgJ29wdGlvbnMnIHdlIG5lZWQgdHJ1ZS9m YWxzZSB0byByZW5kZXIgc3dpdGNoIEFTQyhmYWxzZSkvREVTQyh0cnVlKQotICAgICAgICAgICAg Y29sdW1ucyA9IFtdCi0gICAgICAgICAgICBjb2xzID0gW10KLSAgICAgICAgICAgIGZvciBjb2xf cm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICAjIFdlIG5lZWQgYWxsIGRhdGEg YXMgY29sbGVjdGlvbiBmb3IgQ29sdW1uc01vZGVsCi0gICAgICAgICAgICAgICAgY29sc19kYXRh ID0gewotICAgICAgICAgICAgICAgICAgICAnY29sbmFtZSc6IGNvbF9yb3dbJ2F0dGRlZiddLnN0 cmlwKCciJyksCi0gICAgICAgICAgICAgICAgICAgICdjb2xsc3BjbmFtZSc6IGNvbF9yb3dbJ2Nv bGxuc3BuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICdvcF9jbGFzcyc6IGNvbF9yb3dbJ29w Y25hbWUnXSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1sn b3B0aW9ucyddWzBdID09ICdERVNDJzoKLSAgICAgICAgICAgICAgICAgICAgY29sc19kYXRhWydz b3J0X29yZGVyJ10gPSBUcnVlCi0gICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoY29sc19k YXRhKQotCi0gICAgICAgICAgICAgICAgIyBXZSBuZWVkIHNhbWUgZGF0YSBhcyBzdHJpbmcgdG8g ZGlzcGxheSBpbiBwcm9wZXJ0aWVzIHdpbmRvdwotICAgICAgICAgICAgICAgICMgSWYgbXVsdGlw bGUgY29sdW1uIHRoZW4gc2VwYXJhdGUgaXQgYnkgY29sb24KLSAgICAgICAgICAgICAgICBjb2xz X3N0ciA9IGNvbF9yb3dbJ2F0dGRlZiddCi0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snY29s bG5zcG5hbWUnXToKLSAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyBDT0xMQVRFICcg KyBjb2xfcm93Wydjb2xsbnNwbmFtZSddCi0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snb3Bj bmFtZSddOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyBjb2xfcm93Wydv cGNuYW1lJ10KLSAgICAgICAgICAgICAgICBpZiBjb2xfcm93WydvcHRpb25zJ11bMF0gPT0gJ0RF U0MnOgotICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnIERFU0MnCi0gICAgICAgICAg ICAgICAgY29scy5hcHBlbmQoY29sc19zdHIpCi0KLSAgICAgICAgICAgICMgUHVzaCBhcyBjb2xs ZWN0aW9uCi0gICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCi0gICAgICAgICAg ICAjIFB1c2ggYXMgc3RyaW5nCi0gICAgICAgICAgICBkYXRhWydjb2xzJ10gPSAnLCAnLmpvaW4o Y29scykKLQotICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBJbmRleDogezB9XG5cbi0t ICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKLQotICAgICAgICAgICAgc3FsX2hlYWRlciArPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCdd KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgICAgIGluZGV4X3NxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25u KQotICAgICAgICAgICAgaW5kZXhfc3FsICs9ICJcbiIKLSAgICAgICAgICAgIGluZGV4X3NxbCAr PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHRlci5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YSwgY29ubj1zZWxmLmNvbm4pCi0KLSAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKLSAg ICAgICAgICAgIGluZGV4X3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBpbmRleF9zcWwp Ci0gICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQoc3FsX2hlYWRlciArICdcblxuJyArIGluZGV4 X3NxbC5zdHJpcCgnXG4nKSkKLQotICAgICAgICAiIiIKLSAgICAgICAgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAjIDMpIFJldmVyc2UgZW5naW5lZXJl ZCBzcWwgZm9yIFRSSUdHRVJTCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLSAgICAgICAgIiIiCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwgdGlkPXRpZCkKLSAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCi0KLSAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAg ICB0cmlnZ2VyX3NxbCA9ICcnCi0KLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXJvd1snb2lkJ10sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNv aWQpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICBkYXRhID0g ZGljdChyZXNbJ3Jvd3MnXVswXSkKLSAgICAgICAgICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRh dGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBzcWwKLSAgICAgICAgICAg IGRhdGFbJ3NjaGVtYSddID0gc2NoZW1hCi0gICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gdGFi bGUKLQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RyaWdnZXJfZnVuY3Rpb25fc2NoZW1h KGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGxlbihkYXRhWydjdXN0b21fdGdhcmdzJ10pID4gMToK LSAgICAgICAgICAgICAgICAjIFdlIGtub3cgdGhhdCB0cmlnZ2VyIGhhcyBtb3JlIHRoYW4gMSBh cmd1bWVudCwgbGV0J3Mgam9pbiB0aGVtCi0gICAgICAgICAgICAgICAgZGF0YVsndGdhcmdzJ10g PSBzZWxmLl9mb3JtYXRfYXJncyhkYXRhWydjdXN0b21fdGdhcmdzJ10pCi0KLSAgICAgICAgICAg IGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPiAxOgotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAn LCAnLmpvaW4oZGF0YVsndGdhdHRyJ10uc3BsaXQoJyAnKSkKLQotICAgICAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Nv bHVtbnMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9 dGlkLCBjbGlzdD1jb2x1bW5zKQotCi0gICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQotICAgICAgICAgICAgICAgICMgJ3RnYXR0cicgY29udGFpbnMgbGlzdCBvZiBj b2x1bW5zIGZyb20gdGFibGUgdXNlZCBpbiB0cmlnZ2VyCi0gICAgICAgICAgICAgICAgY29sdW1u cyA9IFtdCi0KLSAgICAgICAgICAgICAgICBmb3IgY29sX3JvdyBpbiByc2V0Wydyb3dzJ106Ci0g ICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsnY29sdW1uJzogY29sX3Jvd1snbmFt ZSddfSkKLQotICAgICAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKLQotICAg ICAgICAgICAgZGF0YSA9IHRyaWdnZXJfZGVmaW5pdGlvbihkYXRhKQotCi0gICAgICAgICAgICBz cWxfaGVhZGVyID0gdSJcbi0tIFRyaWdnZXI6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1l J10pCi0KLSAgICAgICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0K LSAgICAgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90 IGhhdmUgZGlkCi0gICAgICAgICAgICB0cmlnZ2VyX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25u KQotCi0gICAgICAgICAgICB0cmlnZ2VyX3NxbCA9IHNxbF9oZWFkZXIgKyAnXG5cbicgKyB0cmln Z2VyX3NxbC5zdHJpcCgnXG4nKQotCi0gICAgICAgICAgICAjIElmIHRyaWdnZXIgaXMgZGlzYWJs ZWQgdGhlbiBhZGQgc3FsIGNvZGUgZm9yIHRoZSBzYW1lCi0gICAgICAgICAgICBpZiBub3QgZGF0 YVsnaXNfZW5hYmxlX3RyaWdnZXInXToKLSAgICAgICAgICAgICAgICB0cmlnZ2VyX3NxbCArPSAn XG5cbicKLSAgICAgICAgICAgICAgICB0cmlnZ2VyX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oWwotICAgICAgICAgICAgICAgICAgICBzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAotICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAg ICAjIEFkZCBpbnRvIG1haW4gc3FsCi0gICAgICAgICAgICB0cmlnZ2VyX3NxbCA9IHJlLnN1Yign XG57Mix9JywgJ1xuXG4nLCB0cmlnZ2VyX3NxbCkKLSAgICAgICAgICAgIG1haW5fc3FsLmFwcGVu ZCh0cmlnZ2VyX3NxbCkKLQotICAgICAgICAiIiIKLSAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAjIDQpIFJldmVyc2UgZW5naW5lZXJlZCBzcWwg Zm9yIFJVTEVTCi0gICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSAgICAgICAgIiIiCi0KLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAot ICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LCB0aWQ9dGlkKQotCi0gICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgotICAgICAgICAgICAgcnVsZXNfc3FsID0gJ1xuJwotICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZWxmLnJ1 bGVzX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddCi0gICAgICAgICAgICApLCByaWQ9 cm93WydvaWQnXSwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCi0KLSAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0gICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICByZXNfZGF0YSA9IHBhcnNlX3J1bGVf ZGVmaW5pdGlvbihyZXMpCi0gICAgICAgICAgICBydWxlc19zcWwgKz0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAotICAgICAgICAgICAgICAgIFtzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdj cmVhdGUuc3FsJ10pLAotICAgICAgICAgICAgICAgIGRhdGE9cmVzX2RhdGEsIGRpc3BsYXlfY29t bWVudHM9VHJ1ZSkKLQotICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAotICAgICAgICAg ICAgcnVsZXNfc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIHJ1bGVzX3NxbCkKLSAgICAg ICAgICAgIG1haW5fc3FsLmFwcGVuZChydWxlc19zcWwpCi0KLSAgICAgICAgc3FsID0gJ1xuJy5q b2luKG1haW5fc3FsKQotCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXNx bC5zdHJpcCgnXG4nKSkKLQotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxl Vmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgc2VsZWN0X3NxbChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAgICAiIiIKICAgICAgICAgU0VMRUNUIHNjcmlwdCBz cWwgZm9yIHRoZSBvYmplY3QKQEAgLTI4MTAsNyArMTIwNiw3IEBAIGNsYXNzIFRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAg IFJldHVybnM6CiAgICAgICAgICAgICBTRUxFQ1QgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAog ICAgICAgICAiIiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQpAQCAtMjgzOSw3ICsxMjM1 LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZh Y3V1bVNldHRpbmdzKToKICAgICAgICAgKQogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShy ZXNwb25zZT1zcWwpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZp ZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGluc2VydF9zcWwoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIElOU0VSVCBzY3JpcHQgc3Fs IGZvciB0aGUgb2JqZWN0CkBAIC0yODU0LDcgKzEyNTAsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdD aGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBS ZXR1cm5zOgogICAgICAgICAgICAgSU5TRVJUIFNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKICAg ICAgICAgIiIiCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKQEAgLTI4ODYsNyArMTI4Miw3 IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1 dW1TZXR0aW5ncyk6CiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9c3Fs KQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3By ZWNvbmRpdGlvbgogICAgIGRlZiB1cGRhdGVfc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBVUERBVEUgc2NyaXB0IHNxbCBmb3IgdGhlIG9i amVjdApAQCAtMjkwMSw3ICsxMjk3LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoKICAg ICAgICAgICAgIFVQREFURSBTY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CiAgICAgICAgICIiIgot ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3Rl bXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwg c2NpZD1zY2lkLCB0aWQ9dGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFz dHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0yOTM1LDcgKzEzMzEsNyBAQCBjbGFzcyBU YWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3Mp OgogCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXNxbCkKIAotICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24K ICAgICBkZWYgZGVsZXRlX3NxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAg ICAgICAiIiIKICAgICAgICAgREVMRVRFIHNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKQEAgLTI5 NTAsNyArMTM0Niw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBl UmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgICBE RUxFVEUgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAogICAgICAgICAiIiIKLSAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRo LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwg dGlkPXRpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2Vs Zi5kYXRsYXN0c3lzb2lkKQpAQCAtMjk2Niw3ICsxMzYyLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwpCiAKLSAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHN0 YXRpc3RpY3Moc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAi IiIKICAgICAgICAgU3RhdGlzdGljcwpAQCAtMjk4Miw2MyArMTM3OCw2IEBAIGNsYXNzIFRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAg ICAgICAgIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBzdGF0aXN0aWNzIGZvciBhbGwgdGhlIHRh YmxlcyBpbiB0aGF0CiAgICAgICAgIHNjaGVtYS4KICAgICAgICAgIiIiCi0KLSAgICAgICAgIyBG ZXRjaCBzY2hlbWEgbmFtZQotICAgICAgICBzdGF0dXMsIHNjaGVtYV9uYW1lID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKAotICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfc2NoZW1hLnNxbCddKSwK LSAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NpZD1zY2lkCi0gICAgICAgICAgICAp Ci0gICAgICAgICkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1hX25hbWUpCi0KLSAgICAgICAgaWYg dGlkIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY29sbF90YWJsZV9zdGF0cy5zcWwn XSksCi0gICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2hlbWFfbmFtZT1zY2hl bWFfbmFtZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToK LSAgICAgICAgICAgICMgRm9yIEluZGl2aWR1YWwgdGFibGUgc3RhdHMKLQotICAgICAgICAgICAg IyBDaGVjayBpZiBwZ3N0YXR0dXBsZSBleHRlbnNpb24gaXMgYWxyZWFkeSBjcmVhdGVkPwotICAg ICAgICAgICAgIyBpZiBjcmVhdGVkIHRoZW4gb25seSBhZGQgZXh0ZW5kZWQgc3RhdHMKLSAgICAg ICAgICAgIHN0YXR1cywgaXNfcGdzdGF0dHVwbGUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo IiIiCi0gICAgICAgICAgICBTRUxFQ1QgKGNvdW50KGV4dG5hbWUpID4gMCkgQVMgaXNfcGdzdGF0 dHVwbGUKLSAgICAgICAgICAgIEZST00gcGdfZXh0ZW5zaW9uCi0gICAgICAgICAgICBXSEVSRSBl eHRuYW1lPSdwZ3N0YXR0dXBsZScKLSAgICAgICAgICAgICIiIikKLSAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1pc19wZ3N0YXR0dXBsZSkKLQotICAgICAgICAgICAgIyBGZXRjaCBUYWJsZSBuYW1l Ci0gICAgICAgICAgICBzdGF0dXMsIHRhYmxlX25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X3RhYmxlLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9c2NpZCwgdGlkPXRpZAotICAgICAg ICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0g ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10YWJs ZV9uYW1lKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoCi0gICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3RhdHMuc3FsJ10pLAotICAgICAgICAg ICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NoZW1hX25hbWU9c2NoZW1hX25hbWUsCi0gICAg ICAgICAgICAgICAgICAgIHRhYmxlX25hbWU9dGFibGVfbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgaXNfcGdzdGF0dHVwbGU9aXNfcGdzdGF0dHVwbGUsIHRpZD10aWQKLSAgICAgICAgICAgICAg ICApCi0gICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgICAgICBkYXRhPXJlcywKLSAgICAgICAg ICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQotCisgICAgICAgIHJldHVybiBCYXNlVGFibGVWaWV3 LmdldF90YWJsZV9zdGF0aXN0aWNzKHNlbGYsIHNjaWQsIHRpZCkKIAogVGFibGVWaWV3LnJlZ2lz dGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3Rl bXBsYXRlcy9jb2x1bW4vanMvY29sdW1uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZW1wbGF0ZXMv Y29sdW1uL2pzL2NvbHVtbi5qcwppbmRleCAxNzliOTYxLi43MGZmYmQyIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29sdW1uL3RlbXBsYXRlcy9jb2x1bW4vanMvY29sdW1uLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb2x1bW4vdGVtcGxhdGVzL2NvbHVtbi9qcy9jb2x1bW4uanMKQEAgLTg2LDYgKzg2LDcg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sdW1uJywgWwogCiAgIGlmICghcGdCcm93c2VyLk5v ZGVzWydjb2x1bW4nXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1snY29sdW1uJ10gPSBwZ0Jyb3dz ZXIuTm9kZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50 YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScs ICd2aWV3JywgJ212aWV3J10sCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScs ICdjb2xsLXZpZXcnLCAnY29sbC1tdmlldyddLAogICAgICAgdHlwZTogJ2NvbHVtbicsCkBAIC0y MjgsNiArMjI5LDE3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbHVtbicsIFsKICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBJZiB0 YWJsZSBpcyBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIGRpc2FibGUKKyAgICAgICAgICAgIGlmICht LnRvcCAmJiAhXy5pc1VuZGVmaW5lZChtLnRvcC5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpICYmCisg ICAgICAgICAgICAgIG0udG9wLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg bS5zZXQoJ2lzX3ByaW1hcnlfa2V5JywgZmFsc2UpOworICAgICAgICAgICAgICB9LCAxMCk7CisK KyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg ICBpZighbS5pblNjaGVtYVdpdGhDb2x1bW5DaGVjay5hcHBseSh0aGlzLCBbbV0pICYmCiAgICAg ICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG5hbWUpICYmICFfLmlzTnVsbChuYW1lKSAmJiBuYW1l ICE9PSAnJykgewogICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRlcy9jaGVja19jb25zdHJh aW50L2pzL2NoZWNrX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tf Y29uc3RyYWludC90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9qcy9jaGVja19jb25zdHJhaW50 LmpzCmluZGV4IDgyYmI4MjkuLjY4Mzc4ZmIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L2pzL2NoZWNr X2NvbnN0cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFp bnQvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvanMvY2hlY2tfY29uc3RyYWludC5qcwpAQCAt OCw2ICs4LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY2hlY2tfY29uc3RyYWludHMnLCBbCiAg IC8vIENoZWNrIENvbnN0cmFpbnQgTm9kZQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tf Y29uc3RyYWludHMnXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3Ry YWludHMnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJh cmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6 ICdjaGVja19jb25zdHJhaW50cycsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2hlY2snKSwKICAg ICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApAQCAtMTYsNyArMTcsNyBA QCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jaGVja19jb25zdHJhaW50cycsIFsKICAgICAgIGRpYWxv Z0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeydmaWxlbmFtZSc6ICdjaGVja19kaWFsb2cu aHRtbCd9KSwKICAgICAgIGhhc1NRTDogdHJ1ZSwKICAgICAgIGhhc0RlcGVuZHM6IHRydWUsCi0g ICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZSddLAorICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUn LCdwYXJ0aXRpb24nXSwKICAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBBdm9p ZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMKICAgICAgICAgaWYgKHRoaXMuaW5pdGlh bGl6ZWQpCkBAIC0xMzMsNiArMTM0LDE4IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNoZWNrX2Nv bnN0cmFpbnRzJywgWwogICAgICAgICAgICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3Vw OiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksIG1vZGU6CiAgICAgICAgICAgWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10sIG1pbl92ZXJzaW9uOiA5MDIwMCwKICAgICAgICAgICBkaXNhYmxl ZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gRGlzYWJsZWQgaWYgdGFibGUgaXMgYSBw YXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICAgICAgIGlmICgoXy5oYXMobSAsICd0b3AnKSAmJiAh Xy5pc1VuZGVmaW5lZChtLnRvcCkgJiYgbS50b3AuZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB8fAor ICAgICAgICAgICAgICAgIChfLmhhcyhtLCAnbm9kZV9pbmZvJykgJiYgXy5oYXMobS5ub2RlX2lu Zm8sICd0YWJsZScpICYmCisgICAgICAgICAgICAgICAgXy5oYXMobS5ub2RlX2luZm8udGFibGUs ICdpc19wYXJ0aXRpb25lZCcpICYmIG0ubm9kZV9pbmZvLnRhYmxlLmlzX3BhcnRpdGlvbmVkKQor ICAgICAgICAgICAgKXsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeworICAg ICAgICAgICAgICAgICAgbS5zZXQoJ2Nvbm5vaW5oZXJpdCcsIGZhbHNlKTsKKyAgICAgICAgICAg ICAgfSwxMCk7CisKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisK ICAgICAgICAgICAgIHJldHVybiAoKF8uaGFzKG0sICdoYW5kbGVyJykgJiYKICAgICAgICAgICAg ICAgIV8uaXNVbmRlZmluZWQobS5oYW5kbGVyKSAmJgogICAgICAgICAgICAgICAhXy5pc1VuZGVm aW5lZChtLmdldCgnb2lkJykpKSB8fCAoXy5pc0Z1bmN0aW9uKG0uaXNOZXcpICYmICFtLmlzTmV3 KCkpKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3Ry YWludC90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFp bnQuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvdGVtcGxh dGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzCmluZGV4 IDgxNGVkY2UuLjYwNTQ5NWQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNs dXNpb25fY29uc3RyYWludC90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvanMvZXhjbHVz aW9uX2NvbnN0cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9j b25zdHJhaW50L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9qcy9leGNsdXNpb25fY29u c3RyYWludC5qcwpAQCAtNjAyLDYgKzYwMiw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1 c2lvbl9jb25zdHJhaW50JywgWwogICAvLyBFeHRlbmQgdGhlIGJyb3dzZXIncyBub2RlIGNsYXNz IGZvciBleGNsdXNpb24gY29uc3RyYWludCBub2RlCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydl eGNsdXNpb25fY29uc3RyYWludCddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydleGNs dXNpb25fY29uc3RyYWludCddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgdHlwZTogJ2V4Y2x1c2lvbl9jb25zdHJhaW50JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdFeGNsdXNpb24gY29uc3RyYWludCcpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1j b25zdHJhaW50cycsCkBAIC02MDksNyArNjEwLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZXhj bHVzaW9uX2NvbnN0cmFpbnQnLCBbCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnZGRsLWNvbnN0cmFp bnRzLmh0bWwnLAogICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2Zp bGVuYW1lJzogJ2V4Y2x1c2lvbl9jb25zdHJhaW50X2RpYWxvZy5odG1sJ30pLAogICAgICAgaGFz U1FMOiB0cnVlLAotICAgICAgcGFyZW50X3R5cGU6ICd0YWJsZScsCisgICAgICBwYXJlbnRfdHlw ZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAgICAgY2FuRHJvcDogdHJ1ZSwKICAgICAgIGNh bkRyb3BDYXNjYWRlOiB0cnVlLAogICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKQEAgLTkxNiwxMiAr OTE3LDIyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJhaW50JywgWwog ICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVt LCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBbXTsKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10sCisgICAgICAgICAg ICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gZmFsc2UsCisgICAgICAgICAgICBpc19p bW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkID0gZmFsc2U7CiAgICAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKICAgICAgICAgICB3aGls ZSAoaSkgeworICAgICAgICAgICAgLy8gSWYgdGFibGUgaXMgcGFydGl0aW9uZWQgdGFibGUgdGhl biByZXR1cm4gZmFsc2UKKyAgICAgICAgICAgIGlmICghaW1tZWRpYXRlX3BhcmVudF90YWJsZV9m b3VuZCAmJiAoZC5fdHlwZSA9PSAndGFibGUnIHx8IGQuX3R5cGUgPT0gJ3BhcnRpdGlvbicpKSB7 CisgICAgICAgICAgICAgIGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSB0cnVlOworICAg ICAgICAgICAgICBpZiAoJ2lzX3BhcnRpdGlvbmVkJyBpbiBkICYmIGQuaXNfcGFydGl0aW9uZWQp IHsKKyAgICAgICAgICAgICAgICBpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVk ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAv LyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSB0YWJsZQogICAgICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlhdGVfcGFy ZW50X3RhYmxlX3BhcnRpdGlvbmVkOwogICAgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUp OwogICAgICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwog ICAgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKQEAgLTkzMCw3ICs5NDEs NyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCcsIFsKICAgICAg ICAgICBpZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSkgewogICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0 aXRpb25lZDsKICAgICAgICAgICB9CiAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2pzL2Zv cmVpZ25fa2V5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3RlbXBsYXRl cy9mb3JlaWduX2tleS9qcy9mb3JlaWduX2tleS5qcwppbmRleCA4NGI3YWRmLi5mN2IzNTJhIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvdGVtcGxhdGVzL2Zv cmVpZ25fa2V5L2pzL2ZvcmVpZ25fa2V5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9m b3JlaWduX2tleS90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvanMvZm9yZWlnbl9rZXkuanMKQEAgLTYw MCw2ICs2MDAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAgLy8g RXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZm9yZWlnbiBrZXkgbm9kZQogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXSkgewogICAgIHBnQWRtaW4uQnJvd3Nl ci5Ob2Rlc1snZm9yZWlnbl9rZXknXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBn ZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNo eSwKICAgICAgIHR5cGU6ICdmb3JlaWduX2tleScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRm9y ZWlnbiBrZXknKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApA QCAtNjA4LDcgKzYwOSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fa2V5JywgWwog ICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2Zv cmVpZ25fa2V5X2RpYWxvZy5odG1sJ30pLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAgICAgaGFz RGVwZW5kczogZmFsc2UsCi0gICAgICBwYXJlbnRfdHlwZTogJ3RhYmxlJywKKyAgICAgIHBhcmVu dF90eXBlOiBbJ3RhYmxlJywncGFydGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0cnVlLAogICAg ICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVlLApAQCAtMTA2 NCwxMiArMTA2NSwyMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAg ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQogICAgICAgICAgICAgcmV0 dXJuIHRydWU7CiAKLSAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwg ZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW107CisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdLAorICAgICAgICAgICAg aW1tZWRpYXRlX3BhcmVudF90YWJsZV9mb3VuZCA9IGZhbHNlLAorICAgICAgICAgICAgaXNfaW1t ZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9IGZhbHNlOwogICAgICAgICAgIC8vIFRv IGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCiAgICAgICAgICAgd2hpbGUg KGkpIHsKKyAgICAgICAgICAgIC8vIElmIHRhYmxlIGlzIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4g cmV0dXJuIGZhbHNlCisgICAgICAgICAgICBpZiAoIWltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91 bmQgJiYgKGQuX3R5cGUgPT0gJ3RhYmxlJyB8fCBkLl90eXBlID09ICdwYXJ0aXRpb24nKSkgewor ICAgICAgICAgICAgICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgaWYgKCdpc19wYXJ0aXRpb25lZCcgaW4gZCAmJiBkLmlzX3BhcnRpdGlvbmVkKSB7 CisgICAgICAgICAgICAgICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9 IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjIHJlYXRlIHRhYmxlCiAgICAgICAg ICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICByZXR1cm4gIWlzX2ltbWVkaWF0ZV9wYXJl bnRfdGFibGVfcGFydGl0aW9uZWQ7CiAgICAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7 CiAgICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CiAg ICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwpAQCAtMTA3OCw3ICsxMDg5 LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9yZWlnbl9rZXknLCBbCiAgICAgICAgICAgaWYg KF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgICAgICByZXR1cm4gIWlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7 CiAgICAgICAgICAgfQogICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvanMv aW5kZXhfY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJh aW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L2pzL2luZGV4X2NvbnN0cmFpbnQuanMKaW5k ZXggOTdhNDA0YS4uOTQ3OWFjZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2lu ZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3Ry YWludC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1w bGF0ZXMvaW5kZXhfY29uc3RyYWludC9qcy9pbmRleF9jb25zdHJhaW50LmpzCkBAIC02LDYgKzYs NyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS57e25vZGVfdHlwZX19JywgWwogICAvLyBFeHRlbmQg dGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKICAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ3t7bm9kZV90eXBlfX0nXSkgewogICAgIHBnQWRtaW4uQnJvd3Nl ci5Ob2Rlc1sne3tub2RlX3R5cGV9fSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAg IGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFy Y2h5LAogICAgICAgdHlwZTogJ3t7bm9kZV90eXBlfX0nLAogICAgICAgbGFiZWw6ICd7eyBub2Rl X2xhYmVsIH19JywKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApA QCAtMjAsNyArMjEsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS57e25vZGVfdHlwZX19JywgWwog ICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCiAgICAg ICBzdGF0c1ByZXR0aWZ5RmllbGRzOiBbJ0luZGV4IHNpemUnXSwKLSAgICAgIHBhcmVudF90eXBl OiAndGFibGUnLAorICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAg ICAgIGNhbkRyb3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKICAgICAgIElu aXQ6IGZ1bmN0aW9uKCkgewpAQCAtNDUsMTIgKzQ2LDI4IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl Lnt7bm9kZV90eXBlfX0nLCBbCiAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFs c2UpCiAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10s CisgICAgICAgICAgaW1tZWRpYXRlX3BhcmVudF90YWJsZV9mb3VuZCA9IGZhbHNlLAorICAgICAg ICAgIGlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQgPSBmYWxzZTsKKwogICAg ICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQogICAgICAg ICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVz ZXIgdG8gYyByZWF0ZSB0YWJsZQorICAgICAgICAgIC8vIElmIHRhYmxlIGlzIHBhcnRpdGlvbmVk IHRhYmxlIHRoZW4gcmV0dXJuIGZhbHNlCisgICAgICAgICAgaWYgKCFpbW1lZGlhdGVfcGFyZW50 X3RhYmxlX2ZvdW5kICYmIChkLl90eXBlID09ICd0YWJsZScgfHwgZC5fdHlwZSA9PSAncGFydGl0 aW9uJykpIHsKKyAgICAgICAgICAgIGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSB0cnVl OworICAgICAgICAgICAgaWYgKCdpc19wYXJ0aXRpb25lZCcgaW4gZCAmJiBkLmlzX3BhcnRpdGlv bmVkKSB7CisgICAgICAgICAgICAgICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRp b25lZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUKICAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpIHsKICAgICAgICAgICAg IHslIGlmIG5vZGVfdHlwZSA9PSAncHJpbWFyeV9rZXknICV9CisKKyAgICAgICAgICAgIGlmIChp c19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkKSB7CisgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxk IGJlIG9ubHkgb25lIHByaW1hcnkga2V5IHBlciB0YWJsZS4KICAgICAgICAgICAgIHZhciBjaGls ZHJlbiA9IHQuY2hpbGRyZW4oYXJndW1lbnRzWzFdLCBmYWxzZSksCiAgICAgICAgICAgICAgIHBy aW1hcnlfa2V5X2ZvdW5kID0gZmFsc2U7CkBAIC02Myw3ICs4MCw3IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnt7bm9kZV90eXBlfX0nLCBbCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl dHVybiAhcHJpbWFyeV9rZXlfZm91bmQ7CiAgICAgICAgICAgICB7JSBlbHNlICV9Ci0gICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3BhcmVu dF90YWJsZV9wYXJ0aXRpb25lZDsKICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAg fQogICAgICAgICAgIHBhcmVudHMucHVzaChkLl90eXBlKTsKQEAgLTc0LDcgKzkxLDcgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUue3tub2RlX3R5cGV9fScsIFsKICAgICAgICAgaWYgKF8uaW5kZXhP ZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl dHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZDsKICAgICAgICAgfQog ICAgICAgfSwKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3RlbXBsYXRlcy9j b25zdHJhaW50cy9qcy9jb25zdHJhaW50cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy90ZW1w bGF0ZXMvY29uc3RyYWludHMvanMvY29uc3RyYWludHMuanMKaW5kZXggYTczNDZmMS4uZTM3MmIz YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3RlbXBsYXRlcy9jb25zdHJhaW50 cy9qcy9jb25zdHJhaW50cy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvdGVtcGxhdGVz L2NvbnN0cmFpbnRzL2pzL2NvbnN0cmFpbnRzLmpzCkBAIC05LDE2ICs5LDE4IEBAIGRlZmluZSgn cGdhZG1pbi5ub2RlLmNvbnN0cmFpbnRzJywgWwogICAgICAgICBub2RlOiAnY29uc3RyYWludHMn LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwKICAgICAgICAgdHlwZTog J2NvbGwtY29uc3RyYWludHMnLAorICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93 c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAgY29sdW1uczogWyduYW1l JywgJ2NvbW1lbnQnXQogICAgICAgfSk7CiAgIH07CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbnN0cmFpbnRzJ10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbnN0cmFpbnRz J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6 IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnY29u c3RyYWludHMnLAogICAgICAgbGFiZWw6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCiAgICAgICBj b2xsZWN0aW9uX3R5cGU6ICdjb2xsLWNvbnN0cmFpbnRzJywKLSAgICAgIHBhcmVudF90eXBlOiBb J3RhYmxlJ10sCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAg ICAgSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJh dGlvbiBvZiBtZW51cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9pbmRleGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19p bml0X18ucHkKaW5kZXggZTUyYzE1Yi4uODVkYTc2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2lu ZGV4ZXMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkKQEAg LTcyLDYgKzcyLDE4IEBAIGNsYXNzIEluZGV4ZXNNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUp OgogICAgICAgICBpZiBzdXBlcihJbmRleGVzTW9kdWxlLCBzZWxmKS5CYWNrZW5kU3VwcG9ydGVk KG1hbmFnZXIsICoqa3dhcmdzKToKICAgICAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rp b24oZGlkPWt3YXJnc1snZGlkJ10pCiAKKyAgICAgICAgICAgICMgSW4gY2FzZSBvZiBwYXJ0aXRp b25lZCB0YWJsZSByZXR1cm4gZmFsc2UuCisgICAgICAgICAgICBpZiAndGlkJyBpbiBrd2FyZ3Mg YW5kIG1hbmFnZXIudmVyc2lvbiA+PSAxMDAwMDA6CisgICAgICAgICAgICAgICAgcGFydGl0aW9u X3BhdGggPSAncGFydGl0aW9uL3NxbC8jezB9IycuZm9ybWF0KG1hbmFnZXIudmVyc2lvbikKKyAg ICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAg ICAgICAgICAgIFtwYXJ0aXRpb25fcGF0aCwgJ2JhY2tlbmRfc3VwcG9ydC5zcWwnXSksIHRpZD1r d2FyZ3NbJ3RpZCddKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGFueSBlcnJvcnMKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICAgICByZXR1 cm4gbm90IHJlcworCiAgICAgICAgICAgICBpZiAndmlkJyBub3QgaW4ga3dhcmdzOgogICAgICAg ICAgICAgICAgIHJldHVybiBUcnVlCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3Rl bXBsYXRlcy9pbmRleC9qcy9pbmRleC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3RlbXBsYXRlcy9p bmRleC9qcy9pbmRleC5qcwppbmRleCAyNGYzN2YwLi40ZmMxZDU0IDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvaW5kZXhlcy90ZW1wbGF0ZXMvaW5kZXgvanMvaW5kZXguanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2luZGV4LmpzCkBAIC0xMCw2ICsxMCw3IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAgICBub2RlOiAnaW5kZXgnLAogICAg ICAgICBsYWJlbDogZ2V0dGV4dCgnSW5kZXhlcycpLAogICAgICAgICB0eXBlOiAnY29sbC1pbmRl eCcsCisgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRy ZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJpbmRleC5o dG1sJywKICAgICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVpbmRleC5odG1sJywKICAg ICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2lu ZGV4X2RpYWxvZy5odG1sJ30pLApAQCAtMjEwLDggKzIxMSw5IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLmluZGV4JywgWwogICAgIH0pOwogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydpbmRleCdd KSB7Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydpbmRleCddID0gcGdBZG1pbi5Ccm93c2Vy Lk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAnbXZp ZXcnXSwKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2luZGV4J10gPSBwZ0Jyb3dzZXIuTm9k ZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNo aWxkVHJlZU5vZGVIaWVyYXJjaHksCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3 JywgJ212aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAgY29sbGVjdGlvbl90eXBlOiBbJ2NvbGwt dGFibGUnLCAnY29sbC12aWV3J10sCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJpbmRl eC5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRlaW5kZXguaHRtbCcsCkBA IC0yNDcsNiArMjQ5LDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAg ICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1pbmRleCcsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUn LCBjaGVjazogdHJ1ZX0sCiAgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwogICAgICAgICB9 LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2luZGV4X29uUGFydGl0aW9uJywgbm9kZTogJ3Bh cnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdj b250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6IGdldHRleHQoJ0luZGV4Li4uJyks CisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWluZGV4JywgZGF0YToge2FjdGlvbjog J2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisg ICAgICAgIH0sewogICAgICAgICAgIG5hbWU6ICdjcmVhdGVfaW5kZXhfb25NYXRWaWV3Jywgbm9k ZTogJ212aWV3JywgbW9kdWxlOiB0aGlzLAogICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0Jywg J2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKICAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA1LCBsYWJlbDogZ2V0dGV4dCgnSW5kZXguLi4n KSwKQEAgLTQ3MiwxMiArNDgwLDIzIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwog ICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVt LCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBbXTsKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10sCisgICAgICAgICAg ICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gZmFsc2UsCisgICAgICAgICAgICBpc19p bW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkID0gZmFsc2U7CiAgICAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKICAgICAgICAgICB3aGls ZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0 byBjIHJlYXRlIHRhYmxlCisgICAgICAgICAgICAvLyBEbyBub3QgYWxsb3cgY3JlYXRpbmcgaW5k ZXggb24gcGFydGl0aW9uZWQgdGFibGVzLgorICAgICAgICAgICAgaWYgKCFpbW1lZGlhdGVfcGFy ZW50X3RhYmxlX2ZvdW5kICYmCisgICAgICAgICAgICAgICAgXy5pbmRleE9mKFsndGFibGUnLCAn cGFydGl0aW9uJ10sIGQuX3R5cGUpID4gLTEpIHsKKyAgICAgICAgICAgICAgaW1tZWRpYXRlX3Bh cmVudF90YWJsZV9mb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgIGlmICgnaXNfcGFydGl0aW9u ZWQnIGluIGQgJiYgZC5pc19wYXJ0aXRpb25lZCkgeworICAgICAgICAgICAgICAgIGlzX2ltbWVk aWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQgPSB0cnVlOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gY3JlYXRlIGluZGV4CiAgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgICByZXR1cm4gIWlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7CiAgICAg ICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7CiAgICAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CiAgICAgICAgICAgICBkID0gaSA/IHQuaXRlbURh dGEoaSkgOiBudWxsOwpAQCAtNDg2LDcgKzUwNSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmlu ZGV4JywgWwogICAgICAgICAgIGlmIChfLmluZGV4T2YocGFyZW50cywgJ2NhdGFsb2cnKSA+IC0x KSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlhdGVfcGFy ZW50X3RhYmxlX3BhcnRpdGlvbmVkOwogICAgICAgICAgIH0KICAgICAgIH0KICAgfSk7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0 aXRpb25zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNl MjBiOTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9fX2luaXRfXy5w eQpAQCAtMCwwICsxLDU3NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiIEltcGxl bWVudHMgUGFydGl0aW9ucyBOb2RlICIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCBzaW1wbGVqc29u IGFzIGpzb24KK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYQorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBs YXRlLCByZXF1ZXN0Citmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMg XAorICAgIGltcG9ydCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MKK2Zyb20gcGdhZG1p bi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIFwKKyAgICBtYWtlX3Jl c3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZl cl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50YWJsZXMudXRpbHMgXAorICAgIGlt cG9ydCBCYXNlVGFibGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9y dCBDb2xsZWN0aW9uTm9kZU1vZHVsZQorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1h a2VfanNvbl9yZXNwb25zZSwgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9tIGNvbmZpZyBpbXBv cnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQ R0NoaWxkTW9kdWxlCisKKworY2xhc3MgUGFydGl0aW9uc01vZHVsZShDb2xsZWN0aW9uTm9kZU1v ZHVsZSk6CisgICAgIiIiCisgICAgIGNsYXNzIFBhcnRpdGlvbnNNb2R1bGUoQ29sbGVjdGlvbk5v ZGVNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFBhcnRpdGlvbiBub2RlIGRl cml2ZWQgZnJvbSBDb2xsZWN0aW9uTm9kZU1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0t LS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMg dXNlZCB0byBpbml0aWFsaXplIHRoZSBQYXJ0aXRpb24gYW5kIGl0J3MgYmFzZSBtb2R1bGUuCisK KyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpCisgICAgICAtIE1ldGhv ZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAg ICogbm9kZV9pbm9kZSgpCisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRzIGJh c2UgY2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAqIHNjcmlwdF9s b2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2NoZW1hLCB3aGVuIGFu eSBvZiB0aGUgc2VydmVyIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisK KyAgICBOT0RFX1RZUEUgPSAncGFydGl0aW9uJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0 ZXh0KCJQYXJ0aXRpb25zIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy Z3MpOgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0 aGUgUGFydGl0aW9uc01vZHVsZSBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgKmFyZ3M6CisgICAgICAgICAgICAqKmt3YXJnczoKKyAgICAgICAgIiIi CisgICAgICAgIHN1cGVyKFBhcnRpdGlvbnNNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAq Kmt3YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gMTAwMDAwCisgICAgICAgIHNlbGYubWF4 X3ZlciA9IE5vbmUKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rp b24gbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2Vy X2NvbGxlY3Rpb25fbm9kZShrd2FyZ3NbJ3RpZCddKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm IHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxl IHNjcmlwdCBmb3Igc2VydmVyLCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMK KyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2NoZW1h LlNjaGVtYU1vZHVsZS5OT0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lu b2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIG5vZGUgYXMg YSBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYg QmFja2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAgICAgICIiIgor ICAgICAgICBMb2FkIHRoaXMgbW9kdWxlIGlmIGl0IGlzIGEgcGFydGl0aW9uIHRhYmxlCisgICAg ICAgICIiIgorICAgICAgICBpZiAndGlkJyBpbiBrd2FyZ3MgYW5kIENvbGxlY3Rpb25Ob2RlTW9k dWxlLkJhY2tlbmRTdXBwb3J0ZWQoc2VsZiwgbWFuYWdlciwgKiprd2FyZ3MpOgorICAgICAgICAg ICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKworICAgICAg ICAgICAgdGVtcGxhdGVfcGF0aCA9ICdwYXJ0aXRpb24vc3FsLyN7MH0jJy5mb3JtYXQobWFuYWdl ci52ZXJzaW9uKQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAor ICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV9wYXRoLCAnYmFja2VuZF9zdXBwb3J0LnNxbCddKSwg dGlkPWt3YXJnc1sndGlkJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGFueSBlcnJvcnMKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAg IGRlZiByZWdpc3RlcihzZWxmLCBhcHAsIG9wdGlvbnMsIGZpcnN0X3JlZ2lzdHJhdGlvbj1GYWxz ZSk6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlkZSB0aGUgZGVmYXVsdCByZWdpc3RlciBm dW5jdGlvbiB0byBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyCisgICAgICAgIHN1Yi1tb2R1bGVzIG9m IHRhYmxlIG5vZGUgdW5kZXIgcGFydGl0aW9uIHRhYmxlIG5vZGUuCisgICAgICAgICIiIgorCisg ICAgICAgIGlmIGZpcnN0X3JlZ2lzdHJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc3VibW9kdWxl cyA9IGxpc3QoYXBwLmZpbmRfc3VibW9kdWxlcyhzZWxmLmltcG9ydF9uYW1lKSkKKworICAgICAg ICBzdXBlcihDb2xsZWN0aW9uTm9kZU1vZHVsZSwgc2VsZikucmVnaXN0ZXIoYXBwLCBvcHRpb25z LCBmaXJzdF9yZWdpc3RyYXRpb24pCisKKyAgICAgICAgZm9yIG1vZHVsZSBpbiBzZWxmLnN1Ym1v ZHVsZXM6CisgICAgICAgICAgICBpZiBmaXJzdF9yZWdpc3RyYXRpb246CisgICAgICAgICAgICAg ICAgbW9kdWxlLnBhcmVudG1vZHVsZXMuYXBwZW5kKHNlbGYpCisgICAgICAgICAgICBhcHAucmVn aXN0ZXJfYmx1ZXByaW50KG1vZHVsZSkKKworICAgICAgICAjIE5vdyBhZGQgc3ViIG1vZHVsZXMg b2YgdGFibGUgbm9kZSB0byBwYXJ0aXRpb24gdGFibGUgbm9kZS4KKyAgICAgICAgaWYgZmlyc3Rf cmVnaXN0cmF0aW9uOgorICAgICAgICAgICAgIyBFeGNsdWRlICdwYXJ0aXRpb24nIG1vZHVsZSBm b3Igbm93IHRvIGF2b2lkIGN5Y2xpYyBpbXBvcnQgaXNzdWUuCisgICAgICAgICAgICBtb2R1bGVz X3RvX3NraXAgPSBbJ3BhcnRpdGlvbicsICdjb2x1bW4nXQorICAgICAgICAgICAgZm9yIHBhcmVu dCBpbiBzZWxmLnBhcmVudG1vZHVsZXM6CisgICAgICAgICAgICAgICAgaWYgcGFyZW50Lk5PREVf VFlQRSA9PSAndGFibGUnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN1Ym1vZHVsZXMgKz0g WworICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlIGZvciBzdWJtb2R1bGUgaW4gcGFy ZW50LnN1Ym1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1Ym1vZHVsZS5OT0RF X1RZUEUgbm90IGluIG1vZHVsZXNfdG9fc2tpcF0KKworYmx1ZXByaW50ID0gUGFydGl0aW9uc01v ZHVsZShfX25hbWVfXykKKworCitjbGFzcyBQYXJ0aXRpb25zVmlldyhCYXNlVGFibGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgorICAgICIiIgorICAgIFRoaXMgY2xhc3Mg aXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgcm91dGVzIGZvciBQYXJ0aXRpb24gbm9kZQor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisKKyAgICAqIGxpc3QoKQorICAgICAgLSBUaGlz IGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIFBhcnRpdGlvbiBub2RlcyB3aXRoaW4g dGhhdAorICAgICAgY29sbGVjdGlvbi4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBub2RlIHdpdGhpbiB0aGF0 CisgICAgICAgIGNvbGxlY3Rpb24sIEhlcmUgaXQgd2lsbCBjcmVhdGUgYWxsIHRoZSBQYXJ0aXRp b24gbm9kZS4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHB0 aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRo ZSBzZWxlY3RlZCBQYXJ0aXRpb24gbm9kZQorCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUgPSBi bHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWworICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3Np ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICd0aWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAncHRpZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2Jq JzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVsZXRl JywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6 ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZXMn fSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6ICdjaGls ZHJlbid9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3Fs JzogW3snZ2V0JzogJ21zcWwnfSwge31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwg eydnZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAnZGV0YWNoJzogW3sncHV0JzogJ2RldGFj aCd9XSwKKyAgICAgICAgJ3RydW5jYXRlJzogW3sncHV0JzogJ3RydW5jYXRlJ31dCisKKyAgICB9 KQorCisgICAgZGVmIGNoaWxkcmVuKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQnVpbGQg YSBsaXN0IG9mIHRyZWV2aWV3IG5vZGVzIGZyb20gdGhlIGNoaWxkIG5vZGVzLiIiIgorCisgICAg ICAgIGlmICdzaWQnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgIGdldHRleHQoJ1JlcXVpcmVkIHByb3BlcnRp ZXMgYXJlIG1pc3NpbmcuJykKKyAgICAgICAgICAgICkKKworICAgICAgICBmcm9tIHBnYWRtaW4u dXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisgICAgICAgIG1hbmFnZXIgPSBnZXRfZHJp dmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgICAgICBz aWQ9a3dhcmdzWydzaWQnXQorICAgICAgICApCisKKyAgICAgICAgZGlkID0gTm9uZQorICAgICAg ICBpZiAnZGlkJyBpbiBrd2FyZ3M6CisgICAgICAgICAgICBkaWQgPSBrd2FyZ3NbJ2RpZCddCisK KyAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9ZGlkKQorCisgICAgICAgIGlm IG5vdCBjb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9y ZXF1aXJlZCgKKyAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAi Q29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QuIgorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKworICAgICAgICBub2RlcyA9IFtdCisgICAgICAgIGZvciBtb2R1 bGUgaW4gc2VsZi5ibHVlcHJpbnQuc3VibW9kdWxlczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFu Y2UobW9kdWxlLCBQR0NoaWxkTW9kdWxlKToKKyAgICAgICAgICAgICAgICBpZiBtYW5hZ2VyIGlz IG5vdCBOb25lIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuQmFja2VuZFN1 cHBvcnRlZChtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgICMgdHJlYXQg cGFydGl0aW9uIHRhYmxlIGFzIG5vcm1hbCB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgIyBy ZXBsYWNlIHRpZCB3aXRoIHB0aWQgYW5kIHBvcCBwdGlkIGZyb20ga3dhcmdzCisgICAgICAgICAg ICAgICAgICAgIGlmICdwdGlkJyBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBw dGlkID0ga3dhcmdzLnBvcCgncHRpZCcpCisgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3Nb J3RpZCddID0gcHRpZAorICAgICAgICAgICAgICAgICAgICBub2Rlcy5leHRlbmQobW9kdWxlLmdl dF9ub2RlcygqKmt3YXJncykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5v ZGVzLmV4dGVuZChtb2R1bGUuZ2V0X25vZGVzKCoqa3dhcmdzKSkKKworICAgICAgICAjIEV4cGxp Y2l0bHkgaW5jbHVkZSAncGFydGl0aW9uJyBtb2R1bGUgYXMgd2UgaGFkIGV4Y2x1ZGVkIGl0IGR1 cmluZworICAgICAgICAjIHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgbm9kZXMuZXh0ZW5kKHNlbGYu Ymx1ZXByaW50LmdldF9ub2RlcygqKmt3YXJncykpCisKKyAgICAgICAgIyBSZXR1cm4gc29ydGVk IG5vZGVzIGJhc2VkIG9uIGxhYmVsCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBkYXRhPXNvcnRlZCgKKyAgICAgICAgICAgICAgICBub2Rlcywga2V5PWxh bWJkYSBjOiBjWydsYWJlbCddCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIEBCYXNl VGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlz IHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0CisgICAgICAgIGNv bGxlY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIGdyb3Vw IElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRhYmxl IElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRh YmxlIG5vZGVzCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg IHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAp CisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBwdGlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB0YWJsZSBub2Rl cyB3aXRoaW4gdGhhdAorICAgICAgICBjb2xsZWN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBncm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ RAorICAgICAgICAgICAgdGlkOiBQYXJlbnQgVGFibGUgSUQKKyAgICAgICAgICAgIHB0aWQ6IFBh cnRpdGlvbiBUYWJsZSBJRAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9m IGF2YWlsYWJsZSB0YWJsZSBub2RlcworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1w bGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlk PXRpZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAg ZGVmIGJyb3dzZXJfbm9kZShyb3cpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAg ICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAg ICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIsCisgICAgICAgICAgICAgICAgdGlnZ2VyX2Nv dW50PXJvd1sndHJpZ2dlcmNvdW50J10sCisgICAgICAgICAgICAgICAgaGFzX2VuYWJsZV90cmln Z2Vycz1yb3dbJ2hhc19lbmFibGVfdHJpZ2dlcnMnXSwKKyAgICAgICAgICAgICAgICBpc19wYXJ0 aXRpb25lZD1yb3dbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgICAgICAgcGFyZW50X3Nj aGVtYV9pZD1zY2lkLAorICAgICAgICAgICAgICAgIHNjaGVtYV9pZD1yb3dbJ3NjaGVtYV9pZCdd LAorICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lPXJvd1snc2NoZW1hX25hbWUnXQorICAgICAg ICAgICAgKQorCisgICAgICAgIGlmIHB0aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBs ZW4ocnNldFsncm93cyddKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRl eHQoCisgICAgICAgICAgICAgICAgICAgICJUaGUgc3BlY2lmaWVkIHBhcnRpdGlvbmVkIHRhYmxl IGNvdWxkIG5vdCBiZSBmb3VuZC4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPWJyb3dzZXJf bm9kZShyc2V0Wydyb3dzJ11bMF0pLCBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisg ICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgcmVzLmFwcGVuZChicm93c2VyX25vZGUocm93KSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJv cGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElE CisgICAgICAgICAgICBkaWQ6ICBEYXRhYmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1h IElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVGFibGUg SUQKKyAgICAgICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJsZSBJRAorCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBKU09OIG9mIHNlbGVjdGVkIHRhYmxlIG5vZGUKKyAgICAgICAgIiIi CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlv bl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1k aWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0 aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAg cmV0dXJuIGdvbmUoZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgIlRoZSBzcGVjaWZpZWQg cGFydGl0aW9uZWQgdGFibGUgY291bGQgbm90IGJlIGZvdW5kLiIpKQorCisgICAgICAgIHJldHVy biBzdXBlcihQYXJ0aXRpb25zVmlldywgc2VsZikucHJvcGVydGllcygKKyAgICAgICAgICAgIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHB0aWQsIHJlcykKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk LCBwdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVz IHJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yCisgICAgICAgIHRoZSB0YWJsZSBvYmplY3QKKwor ICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBw dGlkOiBQYXJ0aXRpb24gVGFibGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgIG1haW5fc3FsID0g W10KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0 aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk PWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHRpZD1wdGlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAg ICByZXR1cm4gZ29uZShnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAiVGhlIHNwZWNpZmll ZCBwYXJ0aXRpb25lZCB0YWJsZSBjb3VsZCBub3QgYmUgZm91bmQuIikpCisKKyAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3Jl dmVyc2VfZW5naW5lZXJlZF9zcWwoc2VsZiwgZGlkLCBzY2lkLCBwdGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluX3NxbCwgZGF0 YSkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXRh Y2goc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBwdGlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCBzdGF0aXN0aWNzIG9mIHRhYmxlCisKKyAg ICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAg c2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgcHRp ZDogUGFydGl0aW9uIFRhYmxlIElECisgICAgICAgICIiIgorICAgICAgICAjIEZldGNoIHNjaGVt YSBuYW1lCisgICAgICAgIHN0YXR1cywgcGFyZW50X3NjaGVtYSA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X3NjaGVtYS5zcWwnXSksCisg ICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9c2NpZAorICAgICAgICAgICAgKQor ICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcmVudF9zY2hlbWEpCisKKyAgICAgICAgIyBG ZXRjaCBQYXJlbnQgVGFibGUgbmFtZQorICAgICAgICBzdGF0dXMsIHBhcnRpdGlvbmVkX3RhYmxl X25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0 aCwgJ2dldF90YWJsZS5zcWwnXSksCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNj aWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXBhcnRpdGlvbmVkX3RhYmxlX25hbWUpCisKKyAgICAgICAgIyBHZXQgc2NoZW1hIG9pZCBv ZiBwYXJ0aXRpb24KKyAgICAgICAgc3RhdHVzLCBwc2NpZCA9IHNlbGYuY29ubi5leGVjdXRlX3Nj YWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3NjaGVtYV9vaWQuc3FsJ10pLCB0aWQ9cHRpZCkpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXNjaWQpCisK KyAgICAgICAgIyBGZXRjaCBzY2hlbWEgbmFtZQorICAgICAgICBzdGF0dXMsIHBhcnRpdGlvbl9z Y2hlbWEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9zY2hlbWEuc3FsJ10pLCBjb25uPXNlbGYuY29u biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXBzY2lkKQorICAgICAgICApCisg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXBhcnRpdGlvbl9zY2hlbWEpCisKKyAgICAgICAgIyBGZXRjaCBQYXJ0 aXRpb24gVGFibGUgbmFtZQorICAgICAgICBzdGF0dXMsIHBhcnRpdGlvbl9uYW1lID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfdGFibGUu c3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2lkPXBzY2lkLCB0aWQ9 cHRpZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcnRpdGlv bl9uYW1lKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlbXBfZGF0YSA9IGRpY3QoKQor ICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBwYXJlbnRfc2NoZW1hCisg ICAgICAgICAgICB0ZW1wX2RhdGFbJ3BhcnRpdGlvbmVkX3RhYmxlX25hbWUnXSA9IHBhcnRpdGlv bmVkX3RhYmxlX25hbWUKKyAgICAgICAgICAgIHRlbXBfZGF0YVsnc2NoZW1hJ10gPSBwYXJ0aXRp b25fc2NoZW1hCisgICAgICAgICAgICB0ZW1wX2RhdGFbJ25hbWUnXSA9IHBhcnRpdGlvbl9uYW1l CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ2RldGFj aC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT10ZW1wX2RhdGEsIGNv bm49c2VsZi5jb25uKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlBhcnRpdGlvbiBkZXRhY2hlZC4iKSwK KyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogcHRpZCwK KyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBCYXNl VGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgcHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBjcmVhdGUgbW9kaWZpZWQgc3FsIGZvciB0YWJsZSBvYmplY3QKKworICAg ICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAg ICAgICAgZGF0YSA9IGRpY3QoKQorICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRl bXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5s b2Fkcyh2LCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9y LCBUeXBlRXJyb3IsIEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisg ICAgICAgIGlmIHB0aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10 aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRpZD1wdGlkLCBkYXRsYXN0 c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQsIHB0aWQsIGRhdGEs IHJlcykKKyAgICAgICAgU1FMID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIFNRTCkKKyAgICAg ICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCisgICAgICAgIGlmIFNRTCA9PSAnJzoKKyAgICAgICAg ICAgIFNRTCA9ICItLW1vZGlmaWVkIFNRTCIKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgIGRhdGE9U1FMLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg dXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGFuIGV4aXN0aW5nIHRhYmxlIG9i amVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAor ICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAg ICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGF0 YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAg ICAgICAgcmVxdWVzdC5kYXRhLCBlbmNvZGluZz0ndXRmLTgnCisgICAgICAgICkKKworICAgICAg ICBmb3IgaywgdiBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModiwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAg ICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yLCBLZXlFcnJvcik6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IHYKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQs IHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRpZD1wdGlkLCBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoUGFydGl0aW9uc1ZpZXcsIHNlbGYpLnVw ZGF0ZSgKKyAgICAgICAgICAgICAgICBnaWQsIHNpZCwgZGlkLCBzY2lkLCBwdGlkLCBkYXRhLCBy ZXMsIHBhcmVudF9pZD10aWQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHRydW5jYXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ1bmNhdGUgdGhlIHRhYmxlIG9iamVjdAorCisgICAgICAg ICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwdGlkPXB0aWQsIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0 c3lzb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVy biBzdXBlcihQYXJ0aXRpb25zVmlldywgc2VsZikudHJ1bmNhdGUoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgcHRpZCwgcmVzKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisKK1Bh cnRpdGlvbnNWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvaW1nL2NvbGwtcGFydGl0aW9uLnBuZyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9wYXJ0aXRpb25zL3N0YXRpYy9pbWcvY29sbC1wYXJ0aXRpb24ucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu Ljg1MzZjNjZhZmIxMDk5ZTE4OThmM2M2MTYzYTcwOWUzZTUzNzU1NjQKR0lUIGJpbmFyeSBwYXRj aApsaXRlcmFsIDE0MzMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjF8O1BffDQjJWBr fG5NWUNCZ1k9Q0ZPfWxzU0opT2BBTWs/CnpwMUZ6WHNYP2lVRFYycE1RKjlVK21ANl92QjEkNUJl WE5yNmJNK0VJWVY7fnszeEsqQTc7TmstM0tFbUVRJWUrKgp6UXF3Y0BZP2E+Yy1taiNQblBSSUha dDgyYFRpfjNVaz9CIVlscDAqKzdtezMrb290eitXTilXblEoKi0oQVVDeG4KelFLMkY/QyRIRzUh ZDN9dnRgKDNDNjRxQnowNHBpVXdwRF5TRCNBQkYhOHlNdVJsIXV4T2dHdWsqaDBiRlFxUiFUCnoo ISQ2QE41Uk96JmBqVUpRczItLSpUQiVxenx6WFZQeXFeKmZWTEgtcSooPkl4SXlnI0BAJG5kTj1n Yz5eITNaagp6JWt8MlFfNDEzLV4kamc4RSVnbkleb0Aqa2ZodSYxRUF2VmNEfEdYVW0wPjJocSF1 Ul5XZnFpVj1JMUdaT2lXRDUKekZEPGNFMD1nOTloMT4jUFUlMF99I242QlAyQU9fRVZ1OE0pb2BI VURGMzRZQyl4ey0yc1IoQ2FSYjNvWFMmKnQ5CnpsdjxvJFQ5Z2NvazJHYk5XPzxPaXcrTiZWPW8l fmtxRCl8PEI8OHJ9Q3pzfT89OVBINSplVV5LXmluY1l0a1RSWgp6NXsqb2FsNWBEP09idkJTT2NP MTFsWWxfaUprYFgpRnZZK20pZyZubVcpMyN9RSo2ZF5QTnQ0ZENON1JIaEs4PUAKelBIdntvRjN5 SFZtWDV9KlpqTWR7RnVrNjYjVStWKCQqQ35BR2w2elBeKlo5IVl2byombnBsIXc2cTI4eDE0eyh+ Cno4VGxwbyNUb2VwM2VMYDtTVHxTREBKJnE0JW1XRShmKzdteVo8b31mJShCIUp4MSMpOTEjbjFQ V255dUtzZkRTagp6TVQlaUUoOTZrYngrYU9xMkQrQiFDYUpvezdEKyY8UkxjfXxsVmx+Unt1RlhV UCNAP2hlTmJ7aU48Sl9sVjQ0SW0KejtoNiEqZm9HQEdKWVhJdzAlbiVxRC1TNiVGZmVaU2JhNCEr eEhWX2VkRj5XUWlSMWY/LSR5OFYyNmNCbzt1a3BXCno9K1JZR0s3Ry1nemw/bChlNEZhbD1FJXFf bktNVm1NTmB2MHRON05GMXU4fDhwRDZLZGQ3R01oWlF0WFdtRXt7SAp6an5NJVl1M2glTEB8cDJA cDNpT0glT157VWBCKm5oUUo4RVooYVJ0RVplc1FLO0QyIXZKfWFLTWR9bGtyWlRRUWcKemB7PTM2 MUN1MGIxRkdnXmFaR1YjWn5BZDg7Xkw3O3BJZnNYVVE0Wj5XJjZYSkhAd21LPEEkOyM2VkdidCFA OWZgCnpkflghNFBRTSlPQHBGNXImcGxDenQ2T0poWiZ+Y2V3KX1IY18pViplWXRudmdIaENVI0BQ VCNqcUhgQXVUR2JSewp6UHQ7IzFuMGprbCU/cTw1RjNFKT0pakU1JTs8RiNWVFA8TjJSYEJXQDJq aCY0OWpYQ1lPQVc7NXZuKiF2SSlBekQKeioyMmU2UkRUQG1fRndoIytmVkpAeUg4dmpDcFckUWVD VTQ2K2dFUylicVEpfG5xNjh2Kn5pNGs+Y04mTUJqKWI1Cnopdl57KFVlOW5rY3o8S0QlOXA3KCh4 cjBVdWU8M1VjXmtQVG57fWJmamtjTjModU11QTdqaX5qWlJ2Yj1vdkVefgp6dkNYKmNAbi0yUXpo QXZAKWo4c34/IXdLV3t4N1NXYDw3PFpGJCRtY194KkNBSnxTcTlyKkBsQ0AlcFgzM3JwTnMKcWdU b2BnJkFuQFc/ZjtTfEAwMzJOOWJob1pfX3lySGtBQEFQIXFVXiMmdDt1Y0xLNlZOY0ByNGAKCmxp dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0 YXRpYy9pbWcvcGFydGl0aW9uLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9pbWcv cGFydGl0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDZkZDhiMzVhZDJkYTFjMTUwZGNmZTViZTg4NjFj NzNjZWY3MmU2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjY0CnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITYxfDtQX3w0IyVga3xuTVlDQmdZPUNGT31sc1NKKU9gQU1rPwp6cDFGelhz WD9pVURWMnBNUSo5VSttXkNzKEIxJDVCZVhOcjZiTStFSVlWO357M3hLKkE3O05rLTNLRW1FUSVl KyoKelFxd2NAWT9hPmMtbWojUG5QUklIWnQ4MmBUaX4zVWs/QiFZbHAwKis3bXszK29vdHorV04p V25RKCotKEFVQ3huCnpRSzJGP0MkSEc1IWQzfXZ0YCgzQzY0cUJ6MDRwaVV3cEReU0QjQUJGITh5 TXVSbCF1eE9nR3VrKmgwYkZRcVIhVAp6KCEkNkBONVJPeiZgalVKUXMyLS0qVEIlcXp8elhWUHlx XipmVkxILXEqKD5JeEl5ZyNAQCRuZE49Z2M+XiEzWmoKeiVrfDJRXzQxMy1eJGpnOEUlZ25JXm9A KmtmaHUmMUVBdlZjRHxHWFVtMD4yaHEhdVJeV2ZxaVY9STFHWk9pV0Q1CnpGRDxjRTA9Zzk5aDE+ JFR2M2JTTlU7K2wxZW5uenx6TS1CMCRWKUpWelB8WEM9SHxqeDduY08zQkhXQUI7TnA8Vgp6Zj5p eVcpWitab3FHVnZpcjc0NH5EeklgY049Kz11RkFCLWUmdysodkt0X0heZXNNO0FmcjdJJERBZGRx RzwqfTIKekd4ST0jbnFYYk56RSstaiNVK1YoJCpHPCR3bnsqQV5mRUozdFNzRk8tSGU+ZkVsbihx NEdqJWwlYElLYm90I1hhCnpPeCtCUFU3WEMjKytjY0xAez56KlF9YXEtZFElWDM5ZFlVZkM1WVN0 cHZeOStNVlYhKERRLXBpeGU4IzlUVj4qUQp6aSNibTdwbjZrcXlUdDtoVVZXZnJeZys+ITZ4fWMo VT5YODM7ZldXPmZoWWdlSllicUgwdyhTXjNvfmpNNyNRT2AKelRedkl5Wm1rS25ePiNLQ3V7SE54 e1gmN08+NERPVk1fTzdJOGNIRG9SekkybGFPKlcpOzhWS05mQUM9YUw7ZWsxCnpjU1dwcnUzV3Uo XjVwSi1UVGlNY2ViM140YlNlR05VWHx4fWl6aWpUPz47bTQtcmMmJm0xV0VWQkFGaGFQSERiYQp6 O1RZKzM9dlBJSXQ5fFVYVyErRUNwVztuOCleVTctVVozNSRMZXB4ZGhfO19TVyhUcmtybXQ4JEJr T0g9dGNfJXcKejxGeW9+RXVFWHJlcDlQR3Z3ckkxS0Vwa3NBe3taMz4raXEqYys5QSReb24zYS0x V3t5IWE2TzdXPDlAcHlqdHNuCnoyIzNneWpRd3U1TkFLT0xRSVp6WWRIZTdzdWw0Rn5rKnlyfSh3 UXZkQklCRXVYRG89XzdYS2hBRmgqeE9vNVpUPAp6Um5xVSlSej4pJlJ9e0BfREUxZT0rVlkmVSZu fXtRblYzKzM/dmVsZkIzVmErM01UJW8qenRSSEA5Zz81aDFEeTEKenFwej8xNS0qeWVlQ2dvZz1s PClvWihlKkl2NTlHPldyaiU9eEF4YXt7UHlRfXU5digycmw1N3tgPVhqcGV9QkctCmJaZVYwRWRC NjE0cyhqVHBQI05VdT5nVGV+RFdNNGYyMmFKJQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvdGVtcGxhdGVzL3BhcnRpdGlvbi9qcy9wYXJ0 aXRpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy90ZW1wbGF0ZXMvcGFydGl0aW9uL2pzL3Bh cnRpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWViMjM2Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvdGVtcGxhdGVzL3BhcnRpdGlv bi9qcy9wYXJ0aXRpb24uanMKQEAgLTAsMCArMSwxMjcyIEBACitkZWZpbmUoCisgICAgICAgIFsn c291cmNlcy9nZXR0ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywKKyAgICAgICAgJ2JhY2tmb3JtJywg J2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbihnZXR0 ZXh0LCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBhbGVydGlmeSkgewor CisgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBhcnRpdGlvbiddKSB7CisgICAgdmFyIGRh dGFiYXNlcyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1wYXJ0aXRpb24nXSA9CisgICAg ICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAncGFy dGl0aW9uJywKKyAgICAgICAgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbnMnKSwKKyAgICAgICAg Z2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJj aHksCisgICAgICAgIHR5cGU6ICdjb2xsLXBhcnRpdGlvbicsCisgICAgICAgIGNvbHVtbnM6IFsn bmFtZScsICdzY2hlbWEnLCAncGFydGl0aW9uX3ZhbHVlJywgJ2lzX3BhcnRpdGlvbmVkJywgJ2Rl c2NyaXB0aW9uJ10sCisgICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUKKyAgICAgIH0pOworICB9 OworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydwYXJ0aXRpb24nXSkgeworICAgIHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1sncGFydGl0aW9uJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAg ICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVy YXJjaHksCisgICAgICBwYXJlbnRfdHlwZTogJ3RhYmxlJywKKyAgICAgIGNvbGxlY3Rpb25fdHlw ZTogJ2NvbGwtcGFydGl0aW9uJywKKyAgICAgIHR5cGU6ICdwYXJ0aXRpb24nLAorICAgICAgbGFi ZWw6IGdldHRleHQoJ1BhcnRpdGlvbicpLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFz RGVwZW5kczogdHJ1ZSwKKyAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCisgICAgICBzdGF0c1By ZXR0aWZ5RmllbGRzOiBbJ1NpemUnLCAnSW5kZXhlcyBzaXplJywgJ1RhYmxlIHNpemUnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdUb2FzdCB0YWJsZSBzaXplJywgJ1R1cGxlIGxlbmd0 aCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYWQgdHVwbGUgbGVuZ3RoJywgJ0Zy ZWUgc3BhY2UnXSwKKyAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnRhYmxlLmh0bWwnLAor ICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGV0YWJsZS5odG1sJywKKyAgICAgIGRpYWxv Z0hlbHA6ICd7eyB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIGZpbGVuYW1lPSd0YWJsZV9kaWFsb2cu aHRtbCcpIH19JywKKyAgICAgIGhhc1NjcmlwdFR5cGVzOiBbJ2NyZWF0ZSddLAorICAgICAgaGVp Z2h0OiAnOTUlJywKKyAgICAgIHdpZHRoOiAnODUlJywKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkg eworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAg ICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg ICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51 cyhbeworICAgICAgICAgIG5hbWU6ICd0cnVuY2F0ZV90YWJsZScsIG5vZGU6ICdwYXJ0aXRpb24n LCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3RydW5jYXRlX3RhYmxlJywKKyAgICAgICAgICBjYXRlZ29yeTogJ1RydW5j YXRlJywgcHJpb3JpdHk6IDMsIGxhYmVsOiBnZXR0ZXh0KCdUcnVuY2F0ZScpLAorICAgICAgICAg IGljb246ICdmYSBmYS1lcmFzZXInLCBlbmFibGUgOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsK KyAgICAgICAgICBuYW1lOiAndHJ1bmNhdGVfdGFibGVfY2FzY2FkZScsIG5vZGU6ICdwYXJ0aXRp b24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3RydW5jYXRlX3RhYmxlX2Nhc2NhZGUnLAorICAgICAgICAgIGNhdGVn b3J5OiAnVHJ1bmNhdGUnLCBwcmlvcml0eTogMywgbGFiZWw6IGdldHRleHQoJ1RydW5jYXRlIENh c2NhZGUnKSwKKyAgICAgICAgICBpY29uOiAnZmEgZmEtZXJhc2VyJywgZW5hYmxlIDogJ2NhbkNy ZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgLy8gVG8gZW5hYmxlL2Rpc2FibGUgYWxsIHRy aWdnZXJzIGZvciB0aGUgdGFibGUKKyAgICAgICAgICBuYW1lOiAnZW5hYmxlX2FsbF90cmlnZ2Vy cycsIG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczog WydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2VuYWJsZV90cmlnZ2Vyc19vbl90YWJs ZScsCisgICAgICAgICAgY2F0ZWdvcnk6ICdUcmlnZ2VyKHMpJywgcHJpb3JpdHk6IDQsIGxhYmVs OiBnZXR0ZXh0KCdFbmFibGUgQWxsJyksCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWNoZWNrJywg ZW5hYmxlIDogJ2NhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlJworICAgICAgICB9LHsKKyAg ICAgICAgICBuYW1lOiAnZGlzYWJsZV9hbGxfdHJpZ2dlcnMnLCBub2RlOiAncGFydGl0aW9uJywg bW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdkaXNhYmxlX3RyaWdnZXJzX29uX3RhYmxlJywKKyAgICAgICAgICBjYXRlZ29y eTogJ1RyaWdnZXIocyknLCBwcmlvcml0eTogNCwgbGFiZWw6IGdldHRleHQoJ0Rpc2FibGUgQWxs JyksCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLXRpbWVzJywgZW5hYmxlIDogJ2NhbkNyZWF0ZV93 aXRoX3RyaWdnZXJfZGlzYWJsZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ3Jlc2V0 X3RhYmxlX3N0YXRzJywgbm9kZTogJ3BhcnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAncmVzZXRfdGFibGVf c3RhdHMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnUmVzZXQnLCBwcmlvcml0eTogNCwgbGFiZWw6 IGdldHRleHQoJ1Jlc2V0IFN0YXRpc3RpY3MnKSwKKyAgICAgICAgICBpY29uOiAnZmEgZmEtYmFy LWNoYXJ0JywgZW5hYmxlIDogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFt ZTogJ2RldGFjaF9wYXJ0aXRpb24nLCBub2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAor ICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdkZXRh Y2hfcGFydGl0aW9uJywKKyAgICAgICAgICBwcmlvcml0eTogMiwgbGFiZWw6IGdldHRleHQoJ0Rl dGFjaCBQYXJ0aXRpb24nKSwKKyAgICAgICAgICBpY29uOiAnZmEgZmEtcmVtb3ZlJworICAgICAg ICB9CisgICAgICAgIF0pOworICAgICAgfSwKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBm dW5jdGlvbihpKSB7CisgICAgICAgIHZhciBpZHggPSAwLAorICAgICAgICAgICAgcmVzID0ge30s CisgICAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWU7CisKKyAgICAgICAgZG8geworICAgICAg ICAgIGQgPSB0Lml0ZW1EYXRhKGkpOworICAgICAgICAgIGlmICgKKyAgICAgICAgICAgIGQuX3R5 cGUgaW4gcGdCcm93c2VyLk5vZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXS5oYXNJZAor ICAgICAgICAgICkgeworICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ3BhcnRpdGlvbicgJiYg J3BhcnRpdGlvbicgaW4gcmVzKSB7CisgICAgICAgICAgICAgIGlmICghKCd0YWJsZScgaW4gcmVz KSkgeworICAgICAgICAgICAgICAgIHJlc1sndGFibGUnXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3By aW9yaXR5JzogaWR4fSk7CisgICAgICAgICAgICAgICAgaWR4IC09IDE7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAndGFibGUnKSB7CisgICAgICAg ICAgICAgIGlmICghKCd0YWJsZScgaW4gcmVzKSkgeworICAgICAgICAgICAgICAgIHJlc1sndGFi bGUnXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7CisgICAgICAgICAgICAg ICAgaWR4IC09IDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgIHJlc1tkLl90eXBlXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4 fSk7CisgICAgICAgICAgICAgIGlkeCAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K KyAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAg ICAgIH0gd2hpbGUgKGkpOworCisgICAgICAgIHJldHVybiByZXM7CisgICAgICB9LAorICAgICAg Z2VuZXJhdGVfdXJsOiBmdW5jdGlvbihpdGVtLCB0eXBlLCBkLCB3aXRoX2lkLCBpbmZvKSB7Cisg ICAgICAgIGlmIChfLmluZGV4T2YoWworICAgICAgICAgICAgJ3N0YXRzJywgJ3N0YXRpc3RpY3Mn LCAnZGVwZW5kZW5jeScsICdkZXBlbmRlbnQnLCAncmVzZXQnLAorICAgICAgICAgICAgJ2dldF9y ZWxhdGlvbnMnLCAnZ2V0X29mdHlwZScsICdnZXRfYXR0YWNoX3RhYmxlcycKKyAgICAgICAgICAg IF0sIHR5cGUpID09IC0xKSB7CisgICAgICAgICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2RlLmdlbmVy YXRlX3VybC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICB9CisKKyAgICAgICAgaWYg KHR5cGUgPT0gJ3N0YXRpc3RpY3MnKSB7CisgICAgICAgICAgdHlwZSA9ICdzdGF0cyc7CisgICAg ICAgIH0KKworICAgICAgICBpbmZvID0gKF8uaXNVbmRlZmluZWQoaXRlbSkgfHwgXy5pc051bGwo aXRlbSkpID8KKyAgICAgICAgICBpbmZvIHx8IHt9IDogdGhpcy5nZXRUcmVlTm9kZUhpZXJhcmNo eShpdGVtKTsKKworICAgICAgICByZXR1cm4gUygndGFibGUvJXMvJXMvJXMvJXMvJXMvJXMnKS5z cHJpbnRmKAorICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHR5cGUpLCBlbmNvZGVVUklD b21wb25lbnQoaW5mb1snc2VydmVyLWdyb3VwJ10uX2lkKSwKKyAgICAgICAgICAgIGVuY29kZVVS SUNvbXBvbmVudChpbmZvWydzZXJ2ZXInXS5faWQpLAorICAgICAgICAgICAgZW5jb2RlVVJJQ29t cG9uZW50KGluZm9bJ2RhdGFiYXNlJ10uX2lkKSwKKyAgICAgICAgICAgIGVuY29kZVVSSUNvbXBv bmVudChpbmZvWydwYXJ0aXRpb24nXS5zY2hlbWFfaWQpLAorICAgICAgICAgICAgZW5jb2RlVVJJ Q29tcG9uZW50KGluZm9bJ3BhcnRpdGlvbiddLl9pZCkKKyAgICAgICAgICAgICkudmFsdWUoKTsK KyAgICAgIH0sCisgICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNo aWxkRHJvcCwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSdd LmNhbkNoaWxkRHJvcCwKKyAgICAgIGNhbGxiYWNrczogeworICAgICAgICAvKiBFbmFibGUgdHJp Z2dlcihzKSBvbiB0YWJsZSAqLworICAgICAgICBlbmFibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1 bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IHRydWUg fTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzLnNldF90cmlnZ2Vycy5hcHBseSh0aGlzLCBb YXJncywgcGFyYW1zXSk7CisgICAgICAgIH0sCisgICAgICAgIC8qIERpc2FibGUgdHJpZ2dlcihz KSBvbiB0YWJsZSAqLworICAgICAgICBkaXNhYmxlX3RyaWdnZXJzX29uX3RhYmxlOiBmdW5jdGlv bihhcmdzKSB7CisgICAgICAgICAgICB2YXIgcGFyYW1zID0geydlbmFibGUnOiBmYWxzZSB9Owor ICAgICAgICAgICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdz LCBwYXJhbXNdKTsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0X3RyaWdnZXJzOiBmdW5jdGlvbihh cmdzLCBwYXJhbXMpIHsKKyAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgc2VuZCByZXF1 ZXN0IHRvIGVuYWJsZSBvcgorICAgICAgICAgIC8vIGRpc2FibGUgdHJpZ2dlcnMgb24gdGFibGUg bGV2ZWwKKyAgICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9OworICAgICAgICAgIG9iaiA9 IHRoaXMsCisgICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgIGkgPSBpbnB1 dC5pdGVtIHx8IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAx ID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsKKyAgICAgICAgICBpZiAoIWQpCisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgdXJs OiBvYmouZ2VuZXJhdGVfdXJsKGksICdzZXRfdHJpZ2dlcicgLCBkLCB0cnVlKSwKKyAgICAgICAg ICAgIHR5cGU6J1BVVCcsCisgICAgICAgICAgICBkYXRhOiBwYXJhbXMsCisgICAgICAgICAgICBk YXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Cisg ICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7CisgICAgICAgICAgICAgICAgYWxl cnRpZnkuc3VjY2Vzcygie3sgXygnIiArIHJlcy5pbmZvICsgIicpIH19Iik7CisgICAgICAgICAg ICAgICAgdC51bmxvYWQoaSk7CisgICAgICAgICAgICAgICAgdC5zZXRJbm9kZShpKTsKKyAgICAg ICAgICAgICAgICB0LmRlc2VsZWN0KGkpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAgICAgICAg ICB9LCAxMCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgIHRyeSB7 CisgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQp OworICAgICAgICAgICAgICAgIGlmIChlcnIuc3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICAg ICAgICBhbGVydGlmeS5lcnJvcihlcnIuZXJyb3Jtc2cpOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgICAgICAgdC51bmxvYWQoaSk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIC8qIFRydW5j YXRlIHRhYmxlICovCisgICAgICAgIHRydW5jYXRlX3RhYmxlOiBmdW5jdGlvbihhcmdzKSB7Cisg ICAgICAgICAgICB2YXIgcGFyYW1zID0geydjYXNjYWRlJzogZmFsc2UgfTsKKyAgICAgICAgICAg IHRoaXMuY2FsbGJhY2tzLnRydW5jYXRlLmFwcGx5KHRoaXMsIFthcmdzLCBwYXJhbXNdKTsKKyAg ICAgICAgfSwKKyAgICAgICAgLyogVHJ1bmNhdGUgdGFibGUgd2l0aCBjYXNjYWRlICovCisgICAg ICAgIHRydW5jYXRlX3RhYmxlX2Nhc2NhZGU6IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICAg IHZhciBwYXJhbXMgPSB7J2Nhc2NhZGUnOiB0cnVlIH07CisgICAgICAgICAgICB0aGlzLmNhbGxi YWNrcy50cnVuY2F0ZS5hcHBseSh0aGlzLCBbYXJncywgcGFyYW1zXSk7CisgICAgICAgIH0sCisg ICAgICAgIHRydW5jYXRlOiBmdW5jdGlvbihhcmdzLCBwYXJhbXMpIHsKKyAgICAgICAgICB2YXIg aW5wdXQgPSBhcmdzIHx8IHt9OworICAgICAgICAgIG9iaiA9IHRoaXMsCisgICAgICAgICAgdCA9 IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgIGkgPSBpbnB1dC5pdGVtIHx8IHQuc2VsZWN0ZWQo KSwKKyAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVu ZGVmaW5lZDsKKworICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KworICAgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oCisgICAgICAgICAgICBnZXR0ZXh0KCdUcnVu Y2F0ZSBUYWJsZScpLAorICAgICAgICAgICAgUyhnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdh bnQgdG8gdHJ1bmNhdGUgdGFibGUgJXM/JykpLnNwcmludGYoZC5sYWJlbCkudmFsdWUoKSwKKyAg ICAgICAgICAgIGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBpZiAoZSkgeworICAgICAgICAg ICAgICB2YXIgZGF0YSA9IGQ7CisgICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAg ICAgdXJsOiBvYmouZ2VuZXJhdGVfdXJsKGksICd0cnVuY2F0ZScgLCBkLCB0cnVlKSwKKyAgICAg ICAgICAgICAgICB0eXBlOidQVVQnLAorICAgICAgICAgICAgICAgIGRhdGE6IHBhcmFtcywKKyAg ICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M6 IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEp IHsKKyAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2Vzcygie3sgXygnIiArIHJlcy5p bmZvICsgIicpIH19Iik7CisgICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlSWNvbihpKTsKKyAg ICAgICAgICAgICAgICAgICAgZGF0YS5pY29uID0gJ2ljb24tdGFibGUnOworICAgICAgICAgICAg ICAgICAgICB0LmFkZEljb24oaSwge2ljb246IGRhdGEuaWNvbn0pOworICAgICAgICAgICAgICAg ICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAgICAgICAgICAgdC5zZXRJbm9kZShpKTsKKyAg ICAgICAgICAgICAgICAgICAgdC5kZXNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g RmV0Y2ggdXBkYXRlZCBkYXRhIGZyb20gc2VydmVyCisgICAgICAgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7Cisg ICAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywg ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZh ciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAg ICAgaWYgKGVyci5zdWNjZXNzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICBhbGVydGlm eS5lcnJvcihlcnIuZXJyb3Jtc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICAgdC51bmxvYWQoaSk7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH19LAorICAg ICAgICAgICAgZnVuY3Rpb24oKSB7fQorICAgICAgICAgICk7CisgICAgICAgIH0sCisgICAgICAg IHJlc2V0X3RhYmxlX3N0YXRzOiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgICAgdmFyIGlucHV0 ID0gYXJncyB8fCB7fSwKKyAgICAgICAgICAgIG9iaiA9IHRoaXMsCisgICAgICAgICAgICB0ID0g cGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVk KCksCisgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6 IHVuZGVmaW5lZDsKKworICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKworICAgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oCisgICAgICAgICAgICBnZXR0ZXh0KCdS ZXNldCBzdGF0aXN0aWNzJyksCisgICAgICAgICAgICBTKGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5 b3Ugd2FudCB0byByZXNldCB0aGUgc3RhdGlzdGljcyBmb3IgdGFibGUgJXM/JykpLnNwcmludGYo ZC5fbGFiZWwpLnZhbHVlKCksCisgICAgICAgICAgICBmdW5jdGlvbiAoZSkgeworICAgICAgICAg ICAgICBpZiAoZSkgeworICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZDsKKyAgICAgICAgICAg ICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgdXJsOiBvYmouZ2VuZXJhdGVfdXJsKGks ICdyZXNldCcgLCBkLCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgIHR5cGU6J0RFTEVURScsCisg ICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICBhbGVy dGlmeS5zdWNjZXNzKCJ7eyBfKCciICsgcmVzLmluZm8gKyAiJykgfX0iKTsKKyAgICAgICAgICAg ICAgICAgICAgICB0LnJlbW92ZUljb24oaSk7CisgICAgICAgICAgICAgICAgICAgICAgZGF0YS5p Y29uID0gJ2ljb24tdGFibGUnOworICAgICAgICAgICAgICAgICAgICAgIHQuYWRkSWNvbihpLCB7 aWNvbjogZGF0YS5pY29ufSk7CisgICAgICAgICAgICAgICAgICAgICAgdC51bmxvYWQoaSk7Cisg ICAgICAgICAgICAgICAgICAgICAgdC5zZXRJbm9kZShpKTsKKyAgICAgICAgICAgICAgICAgICAg ICB0LmRlc2VsZWN0KGkpOworICAgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIHVwZGF0ZWQg ZGF0YSBmcm9tIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAgICAg ICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVy cm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAg dmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAg ICAgICAgIGlmIChlcnIuc3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh bGVydGlmeS5lcnJvcihlcnIuZXJyb3Jtc2cpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgICAgICAgICAgICAgdC51 bmxvYWQoaSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbigpIHt9Cisg ICAgICAgICAgKTsKKyAgICAgICAgfSwKKyAgICAgICAgZGV0YWNoX3BhcnRpdGlvbjogZnVuY3Rp b24oYXJncykgeworICAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAg ICBvYmogPSB0aGlzLAorICAgICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAg ICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3RlZCgpLAorICAgICAgICAgICAgZCA9IGkgJiYg aS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7CisKKyAgICAgICAgICBp ZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICBhbGVydGlmeS5j b25maXJtKAorICAgICAgICAgICAgZ2V0dGV4dCgnRGV0YWNoIFBhcnRpdGlvbicpLAorICAgICAg ICAgICAgUyhnZXR0ZXh0KCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGV0YWNoIHRoZSBwYXJ0 aXRpb24gJXM/JykpLnNwcmludGYoZC5fbGFiZWwpLnZhbHVlKCksCisgICAgICAgICAgICBmdW5j dGlvbiAoZSkgeworICAgICAgICAgICAgICBpZiAoZSkgeworICAgICAgICAgICAgICAgIHZhciBk YXRhID0gZDsKKyAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgdXJs OiBvYmouZ2VuZXJhdGVfdXJsKGksICdkZXRhY2gnICwgZCwgdHJ1ZSksCisgICAgICAgICAgICAg ICAgICB0eXBlOidQVVQnLAorICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVz KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7CisgICAgICAg ICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2Vzcygie3sgXygnIiArIHJlcy5pbmZvICsgIicp IH19Iik7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0Lm5leHQoaSk7CisgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFuLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgbiA9IHQucHJldihpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbiB8fCAh bi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucGFyZW50KGkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldElub2RlKG4sIHRydWUpOworICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICB0LnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAobi5sZW5ndGgp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuc2VsZWN0KG4pOworICAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAg ICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0g JC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgaWYg KGVyci5zdWNjZXNzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVy cm9yKGVyci5lcnJvcm1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIH0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVu Y3Rpb24oKSB7fQorICAgICAgICAgICk7CisgICAgICAgfQorICAgICAgfSwKKyAgICAgIG1vZGVs OiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAg ICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBzcGNvaWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzcGNuYW1lOiB1bmRlZmluZWQsCisg ICAgICAgICAgcmVsb3duZXI6IHVuZGVmaW5lZCwKKyAgICAgICAgICByZWxhY2w6IHVuZGVmaW5l ZCwKKyAgICAgICAgICByZWxoYXNvaWRzOiB1bmRlZmluZWQsCisgICAgICAgICAgcmVsaGFzc3Vi Y2xhc3M6IHVuZGVmaW5lZCwKKyAgICAgICAgICByZWx0dXBsZXM6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbm5hbWU6IHVuZGVmaW5l ZCwKKyAgICAgICAgICBjb25rZXk6IHVuZGVmaW5lZCwKKyAgICAgICAgICBpc3JlcGw6IHVuZGVm aW5lZCwKKyAgICAgICAgICB0cmlnZ2VyY291bnQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICByZWxw ZXJzaXN0ZW5jZTogdW5kZWZpbmVkLAorICAgICAgICAgIGZpbGxmYWN0b3I6IHVuZGVmaW5lZCwK KyAgICAgICAgICByZWxvZnR5cGU6IHVuZGVmaW5lZCwKKyAgICAgICAgICB0eXBuYW1lOiB1bmRl ZmluZWQsCisgICAgICAgICAgbGFiZWxzOiB1bmRlZmluZWQsCisgICAgICAgICAgcHJvdmlkZXJz OiB1bmRlZmluZWQsCisgICAgICAgICAgaXNfc3lzX3RhYmxlOiB1bmRlZmluZWQsCisgICAgICAg ICAgY29sbF9pbmhlcml0czogW10sCisgICAgICAgICAgaGFzdG9hc3R0YWJsZTogdHJ1ZSwKKyAg ICAgICAgICB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQ6IGZhbHNlLAorICAgICAgICAgIGF1dG92 YWN1dW1fZW5hYmxlZDogZmFsc2UsCisgICAgICAgICAgcHJpbWFyeV9rZXk6IFtdLAorICAgICAg ICAgIHBhcnRpdGlvbnM6IFtdLAorICAgICAgICAgIHBhcnRpdGlvbl90eXBlOiAncmFuZ2UnLAor ICAgICAgICAgIGlzX3BhcnRpdGlvbmVkOiBmYWxzZSwKKyAgICAgICAgICBwYXJ0aXRpb25fdmFs dWU6IHVuZGVmaW5lZAorICAgICAgICB9LAorICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcyEKKyAg ICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICB2YXIg c2VsZiA9IHRoaXM7CisKKyAgICAgICAgICBpZiAoXy5zaXplKGF0dHJzKSA9PT0gMCkgeworICAg ICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2lu Zm8uc2VydmVyLl9pZF0udXNlciwKKyAgICAgICAgICAgICAgICBzY2hlbWFJbmZvID0gYXJncy5u b2RlX2luZm8uc2NoZW1hOworCisgICAgICAgICAgICB0aGlzLnNldCh7CisgICAgICAgICAgICAg ICdyZWxvd25lcic6IHVzZXJJbmZvLm5hbWUsICdzY2hlbWEnOiBzY2hlbWFJbmZvLl9sYWJlbAor ICAgICAgICAgICAgfSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgIH0KKyAgICAgICAgICBw Z0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOworCisgICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDog J25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGRpc2FibGVkOiAnaW5TY2hl bWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09J RCcpLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncmVsb3duZXInLCBsYWJlbDogZ2V0dGV4dCgnT3duZXInKSwgdHlwZTogJ3Rl eHQnLCBub2RlOiAncm9sZScsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICAgICAgZGlz YWJsZWQ6ICdpblNjaGVtYScsIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDogZ2V0dGV4dCgnU2NoZW1hJyksIHR5 cGU6ICd0ZXh0Jywgbm9kZTogJ3NjaGVtYScsCisgICAgICAgICAgY29udHJvbDogJ25vZGUtbGlz dC1ieS1uYW1lJywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCcsICdwcm9wZXJ0aWVzJ10sCisgICAg ICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScsIGZpbHRlcjogZnVuY3Rpb24oZCkgeworICAgICAg ICAgICAgLy8gSWYgc2NoZW1hIG5hbWUgc3RhcnQgd2l0aCBwZ18qIHRoZW4gd2UgbmVlZCB0byBl eGNsdWRlIHRoZW0KKyAgICAgICAgICAgIGlmKGQgJiYgZC5sYWJlbC5tYXRjaCgvXnBnXy8pKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9LCBjYWNoZV9ub2RlOiAnZGF0 YWJhc2UnLCBjYWNoZV9sZXZlbDogJ2RhdGFiYXNlJworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ3NwY25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnVGFibGVzcGFjZScpLCBub2RlOiAndGFibGVz cGFjZScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5h bWUnLCBkaXNhYmxlZDogJ2luU2NoZW1hJywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGQpIHsKKyAg ICAgICAgICAgIC8vIElmIHRhYmxlc3BhY2UgbmFtZSBpcyBub3QgInBnX2dsb2JhbCIgdGhlbiB3 ZSBuZWVkIHRvIGV4Y2x1ZGUgdGhlbQorICAgICAgICAgICAgcmV0dXJuICghKGQgJiYgZC5sYWJl bC5tYXRjaCgvcGdfZ2xvYmFsLykpKQorICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdwYXJ0aXRpb24nLCB0eXBlOiAnZ3JvdXAnLCBsYWJlbDogZ2V0dGV4dCgnUGFydGl0 aW9uJyksCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBtaW5fdmVyc2lvbjog MTAwMDAwLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8v IEFsd2F5cyBzaG93IGluIGNhc2Ugb2YgY3JlYXRlIG1vZGUKKyAgICAgICAgICAgIGlmIChtLmlz TmV3KCkgfHwgbS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpCisgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdpc19wYXJ0aXRpb25lZCcsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlv bmVkIFRhYmxlPycpLCBjZWxsOiAnc3dpdGNoJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgdmlzaWJs ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQobS5ub2RlX2lu Zm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAgICAgICAgICAgICAg JiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24pICYmCisgICAgICAg ICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkKKyAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9 LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAoIW0u aXNOZXcoKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0 aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgdHlwZTogJ211bHRpbGluZScsCisgICAg ICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGRpc2FibGVkOiAn aW5TY2hlbWEnCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlv bl92YWx1ZScsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlvbiBTY2hlbWUnKSwKKyAgICAgICAgICB0 eXBlOiAndGV4dCcsIHZpc2libGU6IGZhbHNlCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn Y29sbF9pbmhlcml0cycsIGxhYmVsOiBnZXR0ZXh0KCdJbmhlcml0ZWQgZnJvbSB0YWJsZShzKScp LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksIG1v ZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnQ29sdW1ucycs IHR5cGU6ICdncm91cCcsIGxhYmVsOiBnZXR0ZXh0KCdDb2x1bW5zJyksCisgICAgICAgICAgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLCBtaW5fdmVyc2lvbjogMTAwMDAwLAorICAgICAgICAgIHZp c2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBoaWRlIGluIGNhc2Ug b2YgcGFydGl0aW9uIHRhYmxlLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgLy8gVGFiIGNvbnRyb2wgZm9yIGNvbHVtbnMKKyAg ICAgICAgICBpZDogJ2NvbHVtbnMnLCBsYWJlbDogZ2V0dGV4dCgnQ29sdW1ucycpLCB0eXBlOiAn Y29sbGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0NvbHVtbnMnKSwKKyAgICAg ICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXS5tb2RlbCwKKyAgICAgICAgICBz dWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddLm1vZGVsLAorICAgICAgICAgIG1vZGU6 IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBwYXJ0aXRpb25lZCB0YWJsZSByZW1vdmUgaW5oZXJp dGVkIGNvbHVtbnMKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkgJiYgbS5nZXQoJ2lzX3BhcnRp dGlvbmVkJykpIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICAg Y29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAg ICAgIGlmIChfLmlzVW5kZWZpbmVkKG1vZGVsLmdldCgnaW5oZXJpdGVkZnJvbScpKSkKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnY2F0YWxvZycgaW4g dGhpcy5ub2RlX2luZm8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0s CisgICAgICAgICAgZGVwczogWyd0eXBuYW1lJywgJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAg ICAgY2FuQWRkOiAnY2hlY2tfZ3JpZF9hZGRfY29uZGl0aW9uJywKKyAgICAgICAgICBjYW5FZGl0 OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgLy8gRm9yIGVhY2ggcm93IGVkaXQv ZGVsZXRlIGJ1dHRvbiBlbmFibGUvZGlzYWJsZQorICAgICAgICAgIGNhbkVkaXRSb3c6ICdjaGVj a19ncmlkX3Jvd19lZGl0X2RlbGV0ZScsCisgICAgICAgICAgY2FuRGVsZXRlUm93OiAnY2hlY2tf Z3JpZF9yb3dfZWRpdF9kZWxldGUnLAorICAgICAgICAgIHVuaXF1ZUNvbCA6IFsnbmFtZSddLAor ICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnICwgJ2NsdHlwZScsICdhdHRsZW4nLCAnYXR0cHJl Y2lzaW9uJywgJ2F0dG5vdG51bGwnLCAnaXNfcHJpbWFyeV9rZXknXSwKKyAgICAgICAgICBjb250 cm9sOiBCYWNrZm9ybS5VbmlxdWVDb2xDb2xsZWN0aW9uQ29udHJvbC5leHRlbmQoeworICAgICAg ICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIEJhY2tmb3JtLlVu aXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgIGNvbGxlY3Rpb24gPSBzZWxmLm1vZGVsLmdldChzZWxmLmZpZWxkLmdldCgnbmFtZScp KTsKKworICAgICAgICAgICAgICBjb2xsZWN0aW9uLm9uKCJjaGFuZ2U6aXNfcHJpbWFyeV9rZXki LCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgdmFyIHByaW1hcnlfa2V5X2NvbGwgPSBz ZWxmLm1vZGVsLmdldCgncHJpbWFyeV9rZXknKSwKKyAgICAgICAgICAgICAgICAgICAgY29sdW1u X25hbWUgPSBtLmdldCgnbmFtZScpLAorICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleTsK KworICAgICAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wcmltYXJ5X2tleScpKSB7CisgICAgICAg ICAgICAgICAgLy8gQWRkIGNvbHVtbiB0byBwcmltYXJ5IGtleS4KKyAgICAgICAgICAgICAgICAg IGlmIChwcmltYXJ5X2tleV9jb2xsLmxlbmd0aCA8IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg cHJpbWFyeV9rZXkgPSBuZXcgKHByaW1hcnlfa2V5X2NvbGwubW9kZWwpKHt9LCB7CisgICAgICAg ICAgICAgICAgICAgICAgdG9wOiBzZWxmLm1vZGVsLAorICAgICAgICAgICAgICAgICAgICAgIGNv bGxlY3Rpb246IHByaW1hcnlfa2V5X2NvbGwsCisgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl cjogcHJpbWFyeV9rZXlfY29sbAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg ICAgICAgICAgcHJpbWFyeV9rZXlfY29sbC5hZGQocHJpbWFyeV9rZXkpOworICAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXkgPSBwcmltYXJ5 X2tleV9jb2xsLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAvLyBEbyBub3QgYWx0ZXIgZXhpc3RpbmcgcHJpbWFyeSBrZXkgY29sdW1ucy4KKyAgICAgICAg ICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHByaW1hcnlfa2V5LmdldCgnb2lkJykpKSB7Cisg ICAgICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5X2tleV9jb2x1bW5fY29sbCA9IHByaW1hcnlf a2V5LmdldCgnY29sdW1ucycpLAorICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2Nv bHVtbl9leGlzdCA9IHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLndoZXJlKHtjb2x1bW46Y29sdW1u X25hbWV9KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeV9rZXlfY29sdW1uX2V4 aXN0Lmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIHByaW1hcnlfa2V5 X2NvbHVtbiA9IG5ldyAocHJpbWFyeV9rZXlfY29sdW1uX2NvbGwubW9kZWwpKAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7Y29sdW1uOiBjb2x1bW5fbmFtZX0sIHsgc2lsZW50OiB0cnVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHNlbGYubW9kZWwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbGxlY3Rpb246IHByaW1hcnlfa2V5X2NvbGwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGhhbmRsZXI6IHByaW1hcnlfa2V5X2NvbGwKKyAgICAgICAgICAgICAgICAg ICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sdW1uX2Nv bGwuYWRkKHByaW1hcnlfa2V5X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2x1bW5fY29sbC50cmlnZ2VyKCdwZ2FkbWlu Om11bHRpY29sdW1uOnVwZGF0ZWQnLCBwcmltYXJ5X2tleV9jb2x1bW5fY29sbCk7CisgICAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IC8vIHJlbW92ZSBjb2x1bW4gZnJvbSBwcmltYXJ5IGtleS4KKyAgICAgICAgICAgICAgICAgIGlm IChwcmltYXJ5X2tleV9jb2xsLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy IHByaW1hcnlfa2V5ID0gcHJpbWFyeV9rZXlfY29sbC5maXJzdCgpOworICAgICAgICAgICAgICAg ICAgICAvLyBEbyBub3QgYWx0ZXIgZXhpc3RpbmcgcHJpbWFyeSBrZXkgY29sdW1ucy4KKyAgICAg ICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHByaW1hcnlfa2V5LmdldCgnb2lkJykp KSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgICAgICAgICAgdmFyICBwcmltYXJ5X2tleV9jb2x1bW5fY29sbCA9IHBy aW1hcnlfa2V5LmdldCgnY29sdW1ucycpLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zl ZENvbHMgPSBwcmltYXJ5X2tleV9jb2x1bW5fY29sbC53aGVyZSh7Y29sdW1uOmNvbHVtbl9uYW1l fSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkQ29scy5sZW5ndGggPiAwKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwucmVtb3ZlKHJlbW92 ZWRDb2xzKTsKKyAgICAgICAgICAgICAgICAgICAgICBfLmVhY2gocmVtb3ZlZENvbHMsIGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG0uZGVzdHJveSgpOworICAgICAgICAg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlfa2V5X2Nv bHVtbl9jb2xsLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2ls bCBiZSBvbmx5IG9uIHByaW1hcnkga2V5IHNvIHJlbW92ZSB0aGUgZmlyc3Qgb25lLgorICAgICAg ICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2xsLnJlbW92ZShwcmltYXJ5X2tleV9j b2xsLmZpcnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZGVhbGx5IGFib3Zl IGxpbmUgb2YgY29kZSBzaG91bGQgYmUgInByaW1hcnlfa2V5X2NvbGwucmVzZXQoKSIuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIEJ1dCBvdXIgY3VzdG9tIERhdGFDb2xsZWN0aW9uIChl eHRlbmRlZCBmcm9tIEJhY2tib25lIGNvbGxlY3Rpb24gaW4gZGF0YW1vZGVsLmpzKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBkb2VzIG5vdCByZXNwb25kIHRvIHJlc2V0IGV2ZW50LCBp dCBvbmx5IHN1cHBvcnRzIGFkZCwgcmVtb3ZlLCBjaGFuZ2UgZXZlbnRzLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiBBbmQgaGVuY2Ugbm8gY3VzdG9tIGV2ZW50IGxpc3RlbmVycy92YWxp ZGF0b3JzIGdldCBjYWxsZWQgZm9yIHJlc2V0IGV2ZW50LgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJp bWFyeV9rZXlfY29sdW1uX2NvbGwudHJpZ2dlcigncGdhZG1pbjptdWx0aWNvbHVtbjp1cGRhdGVk JywgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwpOworICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg ICByZW1vdmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IHRo aXMubW9kZWwuZ2V0KHRoaXMuZmllbGQuZ2V0KCduYW1lJykpOworICAgICAgICAgICAgICBpZiAo Y29sbGVjdGlvbikgeworICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ub2ZmKCJjaGFuZ2U6aXNf cHJpbWFyeV9rZXkiKTsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIEJhY2tmb3Jt LlVuaXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywg YXJndW1lbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwKKyAgICAgICAgICBhbGxv d011bHRpcGxlRW1wdHlSb3c6IGZhbHNlCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnaW5o ZXJpdGVkX3RhYmxlc19jbnQnLCBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdGVkIHRhYmxlcyBjb3Vu dCcpLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3Vw OiBnZXR0ZXh0KCdBZHZhbmNlZCcpLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisg ICAgICAgIH0seworICAgICAgICAgIC8vIEhlcmUgd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRyb2wg Zm9yIGNvbnN0cmFpbnRzCisgICAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICd0YWIn LCBncm91cDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgICAgICBpZDogJ3By aW1hcnlfa2V5JywgbGFiZWw6IGdldHRleHQoJ1ByaW1hcnkga2V5JyksCisgICAgICAgICAgICAg IG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZXNbJ3ByaW1hcnlfa2V5J10ubW9kZWwsCisgICAgICAgICAg ICAgIHN1Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1sncHJpbWFyeV9rZXknXS5tb2RlbCwKKyAgICAg ICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAg ICAgIGdyb3VwOiBnZXR0ZXh0KCdQcmltYXJ5IEtleScpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCisgICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpb J2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNv bGxlY3Rpb24nLAorICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnXSwK KyAgICAgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgaWYg KG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdwcmlt YXJ5X2tleScpOworICAgICAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihm dW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNhbkFk ZFJvdzogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQg b25lIHByaW1hcnkga2V5CisgICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1 bW5zJyk7CisKKyAgICAgICAgICAgICAgIHJldHVybiAobS5nZXQoJ3ByaW1hcnlfa2V5JykgJiYK KyAgICAgICAgICAgICAgICAgICAgICAgIG0uZ2V0KCdwcmltYXJ5X2tleScpLmxlbmd0aCA8IDEg JiYKKyAgICAgICAgICAgICAgICAgICAgICAgIF8uc29tZShjb2x1bW5zLnBsdWNrKCduYW1lJykp KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgIGlkOiAn Zm9yZWlnbl9rZXknLCBsYWJlbDogZ2V0dGV4dCgnRm9yZWlnbiBrZXknKSwKKyAgICAgICAgICAg ICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXS5tb2RlbCwKKyAgICAgICAg ICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddLm1vZGVsLAorICAg ICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAg ICAgICAgZ3JvdXA6IGdldHRleHQoJ0ZvcmVpZ24gS2V5JyksIG1vZGU6IFsnZWRpdCcsICdjcmVh dGUnXSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBz OlsnaXNfcGFydGl0aW9uZWQnXSwKKyAgICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wt Y29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAgICAgICAg ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGwg PSBtLmdldCgnZm9yZWlnbl9rZXknKTsKKyAgICAgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUo Y29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgICAgfSwg MTApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnXSwKKyAgICAgICAgICAgICAgY2Fu QWRkUm93OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAvLyBVc2VyIGNhbiBvbmx5IGFk ZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIHdpdGggbmFtZS4KKyAgICAgICAgICAg ICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgIHJldHVy biBfLnNvbWUoY29sdW1ucy5wbHVjaygnbmFtZScpKTsKKyAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfSx7CisgICAgICAgICAgICAgIGlkOiAnY2hlY2tfY29uc3RyYWludCcsIGxhYmVsOiBn ZXR0ZXh0KCdDaGVjayBjb25zdHJhaW50JyksCisgICAgICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dz ZXIuTm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnRzJ10ubW9kZWwsCisgICAgICAgICAgICAgIHN1Ym5v ZGU6IHBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludHMnXS5tb2RlbCwKKyAgICAgICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgICAg IGdyb3VwOiBnZXR0ZXh0KCdDaGVjaycpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAg ICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3BhcnRp dGlvbmVkJ10sCisgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24n LAorICAgICAgICAgICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAgIGNvbHVtbnMgOiBb J25hbWUnLCAnY29uc3JjJ10KKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICBpZDogJ3Vu aXF1ZV9jb25zdHJhaW50JywgbGFiZWw6IGdldHRleHQoJ1VuaXF1ZSBDb25zdHJhaW50JyksCisg ICAgICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZXNbJ3VuaXF1ZV9jb25zdHJhaW50J10u bW9kZWwsCisgICAgICAgICAgICAgIHN1Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1sndW5pcXVlX2Nv bnN0cmFpbnQnXS5tb2RlbCwKKyAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAn Y29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdVbmlxdWUnKSwgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5E ZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgICAgICBjb250 cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgY29sdW1ucyA6IFsn bmFtZScsICdjb2x1bW5zJ10sCisgICAgICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy IGNvbGwgPSBtLmdldCgndW5pcXVlX2NvbnN0cmFpbnQnKTsKKyAgICAgICAgICAgICAgICAgICAg Y29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAg ICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg ICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4g d2l0aCBuYW1lLgorICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdldCgnY29sdW1ucycp OworICAgICAgICAgICAgICAgcmV0dXJuIF8uc29tZShjb2x1bW5zLnBsdWNrKCduYW1lJykpOwor ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgaWQ6ICdleGNs dWRlX2NvbnN0cmFpbnQnLCBsYWJlbDogZ2V0dGV4dCgnRXhjbHVkZSBjb25zdHJhaW50JyksCisg ICAgICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50 J10ubW9kZWwsCisgICAgICAgICAgICAgIHN1Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVz aW9uX2NvbnN0cmFpbnQnXS5tb2RlbCwKKyAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0 eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdFeGNsdWRl JyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1 ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9uZWQnXSwKKyAgICAgICAgICAg ICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisgICAgICAgICAgICAgIGNvbHVt bnMgOiBbJ25hbWUnLCAnY29sdW1ucycsICdjb25zdHJhaW50J10sCisgICAgICAgICAgICAgIGNh bkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0 aW9uZWQnKSkgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdldCgnZXhjbHVkZV9jb25zdHJhaW50Jyk7 CisgICAgICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1v ZGVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg ICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgY2FuQWRkUm93OiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAgICAvLyBVc2VyIGNhbiBvbmx5IGFkZCBpZiB0aGVyZSBp cyBhdCBsZWFzdCBvbmUgY29sdW1uIHdpdGggbmFtZS4KKyAgICAgICAgICAgICAgIHZhciBjb2x1 bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgIHJldHVybiBfLnNvbWUoY29s dW1ucy5wbHVjaygnbmFtZScpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH1dCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAndHlwbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdPZiB0eXBl JyksIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNh YmxlZDogJ2NoZWNrT2ZUeXBlJywgdXJsOiAnZ2V0X29mdHlwZScsIGdyb3VwOiBnZXR0ZXh0KCdB ZHZhbmNlZCcpLAorICAgICAgICAgIGRlcHM6IFsnY29sbF9pbmhlcml0cycsICdpc19wYXJ0aXRp b25lZCddLCB0cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEsIGNlbGwpIHsKKyAgICAgICAgICAgIHZh ciBjb250cm9sID0gY2VsbCB8fCB0aGlzLAorICAgICAgICAgICAgICBtID0gY29udHJvbC5tb2Rl bDsKKyAgICAgICAgICAgICAgbS5vZl90eXBlc190YWJsZXMgPSBkYXRhOworICAgICAgICAgICAg ICByZXR1cm4gZGF0YTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3Jt Lk5vZGVBamF4T3B0aW9uc0NvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgLy8gV2hlbiBv Zl90eXBlcyBjaGFuZ2VzIHdlIG5lZWQgdG8gY2xlYXIgY29sdW1ucyBjb2xsZWN0aW9uCisgICAg ICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBCYWNrZm9y bS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5hcHBseSh0aGlzLCBh cmd1bWVudHMpOworICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgIHRibF9vaWQgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICB0YmxfbmFtZSA9 IHNlbGYubW9kZWwuZ2V0KCd0eXBuYW1lJyksCisgICAgICAgICAgICAgICAgICBkYXRhID0gdW5k ZWZpbmVkLAorICAgICAgICAgICAgICAgICAgYXJnID0gdW5kZWZpbmVkLAorICAgICAgICAgICAg ICAgICAgY29sdW1uX2NvbGxlY3Rpb24gPSBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpOworCisg ICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRibF9uYW1lKSAmJgorICAgICAgICAg ICAgICAgICAgICB0YmxfbmFtZSAhPT0gJycgJiYgY29sdW1uX2NvbGxlY3Rpb24ubGVuZ3RoICE9 PSAwKSB7CisgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gZ2V0dGV4dCgnQ2hhbmdpbmcgb2Yg dHlwZSB0YWJsZSB3aWxsIGNsZWFyIGNvbHVtbnMgY29sbGVjdGlvbicpOworICAgICAgICAgICAg ICAgICAgYWxlcnRpZnkuY29uZmlybShtc2csIGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAg ICAgICAgIGlmIChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlciBjbGlja3MgT2ss IGxldHMgY2xlYXIgY29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgY29s dW1uX2NvbGxlY3Rpb24ucmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghXy5pc1Vu ZGVmaW5lZCh0YmxfbmFtZSkgJiYgdGJsX25hbWUgPT09ICcnKSB7CisgICAgICAgICAgICAgICAg ICBjb2x1bW5fY29sbGVjdGlvbi5yZXNldCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgIC8vIFJ1biBBamF4IG5vdyB0byBmZXRjaCBjb2x1bW5zCisgICAgICAgICAgICAg ICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRibF9uYW1lKSAmJiB0YmxfbmFtZSAhPT0gJycpIHsKKyAg ICAgICAgICAgICAgICAgIGFyZyA9IHsgJ3RuYW1lJzogdGJsX25hbWUgfQorICAgICAgICAgICAg ICAgICAgZGF0YSA9IHNlbGYubW9kZWwuZmV0Y2hfY29sdW1uc19hamF4LmFwcGx5KHNlbGYsIFth cmddKTsKKyAgICAgICAgICAgICAgICAgIC8vIEFkZCBpbnRvIGNvbHVtbiBjb2xsZWN0aW9uCisg ICAgICAgICAgICAgICAgICBjb2x1bW5fY29sbGVjdGlvbi5zZXQoZGF0YSwgeyBtZXJnZTpmYWxz ZSxyZW1vdmU6ZmFsc2UgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9KQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2ZpbGxmYWN0b3InLCBs YWJlbDogZ2V0dGV4dCgnRmlsbCBmYWN0b3InKSwgdHlwZTogJ2ludCcsCisgICAgICAgICAgbW9k ZTogWydjcmVhdGUnLCAnZWRpdCddLCBtaW46IDEwLCBtYXg6IDEwMCwKKyAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hJyxncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3JlbGhhc29pZHMnLCBsYWJlbDogZ2V0dGV4dCgnSGFzIE9JRHM/Jyks IGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3Bl cnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1h JywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJykKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdyZWxwZXJzaXN0ZW5jZScsIGxhYmVsOiBnZXR0ZXh0KCdVbmxvZ2dlZD8nKSwgY2VsbDogJ3N3 aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcycsICdj cmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxD aGVjaycsCisgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJykKKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdjb25uYW1lJywgbGFiZWw6IGdldHRleHQoJ1ByaW1hcnkga2V5Jyks IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0 aWVzJ10sIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLAorICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVsdHVwbGVzJywgbGFiZWw6 IGdldHRleHQoJ1Jvd3MgKGVzdGltYXRlZCknKSwgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAg dHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdldHRleHQoJ0FkdmFu Y2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdyb3dzX2NudCcsIGxhYmVsOiBnZXR0ZXh0KCdSb3dzIChjb3VudGVkKScpLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cyddLCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2lu U2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3JlbGhhc3N1YmNsYXNzJywgbGFi ZWw6IGdldHRleHQoJ0luaGVyaXRzIHRhYmxlcz8nKSwgY2VsbDogJ3N3aXRjaCcsCisgICAgICAg ICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogZ2V0dGV4dCgn QWR2YW5jZWQnKSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2lzX3N5c190YWJsZScsIGxhYmVsOiBnZXR0ZXh0KCdTeXN0ZW0gdGFi bGU/JyksIGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBb J3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9 LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6 IGdldHRleHQoJ0xpa2UnKSwKKyAgICAgICAgICBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwK KyAgICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICAgIGlkOiAnbGlrZV9yZWxhdGlvbicsIGxh YmVsOiBnZXR0ZXh0KCdSZWxhdGlvbicpLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2Rl OiBbJ2NyZWF0ZScsICdlZGl0J10sIGRlcHM6IFsndHlwbmFtZSddLAorICAgICAgICAgICAgY29u dHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X3JlbGF0aW9ucycsCisgICAgICAg ICAgICBkaXNhYmxlZDogJ2lzTGlrZURpc2FibGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScpCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2xpa2VfZGVmYXVsdF92YWx1ZScsIGxhYmVs OiBnZXR0ZXh0KCdXaXRoIGRlZmF1bHQgdmFsdWVzPycpLAorICAgICAgICAgICAgdHlwZTogJ3N3 aXRjaCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwgZGVwczogWyd0eXBuYW1lJ10sCisgICAg ICAgICAgICBkaXNhYmxlZDogJ2lzTGlrZURpc2FibGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScp CisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2xpa2VfY29uc3RyYWludHMnLCBsYWJl bDogZ2V0dGV4dCgnV2l0aCBjb25zdHJhaW50cz8nKSwKKyAgICAgICAgICAgIHR5cGU6ICdzd2l0 Y2gnLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGRlcHM6IFsndHlwbmFtZSddLAorICAgICAg ICAgICAgZGlzYWJsZWQ6ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQor ICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdsaWtlX2luZGV4ZXMnLCBsYWJlbDogZ2V0 dGV4dCgnV2l0aCBpbmRleGVzPycpLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6 IFsnY3JlYXRlJywgJ2VkaXQnXSwgZGVwczogWyd0eXBuYW1lJ10sCisgICAgICAgICAgICBkaXNh YmxlZDogJ2lzTGlrZURpc2FibGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScpCisgICAgICAgICAg fSx7CisgICAgICAgICAgICBpZDogJ2xpa2Vfc3RvcmFnZScsIGxhYmVsOiBnZXR0ZXh0KCdXaXRo IHN0b3JhZ2U/JyksCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVhdGUn LCAnZWRpdCddLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaXNM aWtlRGlzYWJsZScsIGdyb3VwOiBnZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9LHsKKyAgICAg ICAgICAgIGlkOiAnbGlrZV9jb21tZW50cycsIGxhYmVsOiBnZXR0ZXh0KCdXaXRoIGNvbW1lbnRz PycpLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQn XSwgZGVwczogWyd0eXBuYW1lJ10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2lzTGlrZURpc2Fi bGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScpCisgICAgICAgICAgfV0KKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fdHlwZScsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlvbiBU eXBlJyksCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnc2VsZWN0MicsIHNlbGVj dDI6IHthbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICAgICAgZ3JvdXA6ICdwYXJ0aXRpb24nLCBk ZXBzOiBbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgb3B0aW9uczpbeworICAgICAgICAg ICAgbGFiZWw6ICdSYW5nZScsIHZhbHVlOiAncmFuZ2UnCisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBsYWJlbDogJ0xpc3QnLCB2YWx1ZTogJ2xpc3QnCisgICAgICAgICAgfV0sCisgICAgICAg ICAgbW9kZTpbJ2NyZWF0ZSddLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5l ZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0u bm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5z ZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxl ZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkgfHwgIW0uZ2V0KCdp c19wYXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn cGFydGl0aW9uX2tleXMnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb24gS2V5cycpLAorICAgICAg ICAgIG1vZGVsOiBCYWNrZm9ybS5QYXJ0aXRpb25LZXlNb2RlbCwKKyAgICAgICAgICBzdWJub2Rl OiBCYWNrZm9ybS5QYXJ0aXRpb25LZXlNb2RlbCwKKyAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSwg dHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAncGFydGl0aW9uJywgbW9kZTog WydjcmVhdGUnXSwKKyAgICAgICAgICBkZXBzOiBbJ2lzX3BhcnRpdGlvbmVkJywgJ3BhcnRpdGlv bl90eXBlJ10sCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAg ICAgICAgICBjb250cm9sOiAnc3ViLW5vZGUtY29sbGVjdGlvbicsCisgICAgICAgICAgY2FuQWRk OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdpc19w YXJ0aXRpb25lZCcpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdldCgnY29sdW1ucycpOworICAgICAg ICAgICAgdmFyIG1heF9yb3dfY291bnQgPSAxMDAwOworCisgICAgICAgICAgICBpZiAobS5nZXQo J3BhcnRpdGlvbl90eXBlJykgJiYgbS5nZXQoJ3BhcnRpdGlvbl90eXBlJykgPT0gJ2xpc3QnKQor ICAgICAgICAgICAgICBtYXhfcm93X2NvdW50ID0gMTsKKworICAgICAgICAgICAgcmV0dXJuICht LmdldCgncGFydGl0aW9uX2tleXMnKSAmJgorICAgICAgICAgICAgICAgIG0uZ2V0KCdwYXJ0aXRp b25fa2V5cycpLmxlbmd0aCA8IG1heF9yb3dfY291bnQgJiYKKyAgICAgICAgICAgICAgICBfLnNv bWUoY29sdW1ucy5wbHVjaygnbmFtZScpKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICB9LAor ICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5k ZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIp CisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJz aW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAw MDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgaWYgKG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycpICYmIG0uZ2V0KCdwYXJ0aXRpb25f a2V5cycpLm1vZGVscy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ3BhcnRpdGlvbl9r ZXlzJyk7CisgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24o bW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg IH0pKTsKKyAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fc2NoZW1lJywgbGFiZWw6IGdl dHRleHQoJ1BhcnRpdGlvbiBTY2hlbWUnKSwKKyAgICAgICAgICB0eXBlOiAnbm90ZScsIGdyb3Vw OiAncGFydGl0aW9uJywgbW9kZTogWydlZGl0J10sCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8pICYmICFf LmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAgICAgICAgICAgICAgJiYgIV8uaXNV bmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24pICYmCisgICAgICAgICAgICAgIG0u bm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAg ICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkg eworICAgICAgICAgICAgICB0aGlzLnRleHQgPSBtLmdldCgncGFydGl0aW9uX3NjaGVtZScpOwor ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdw YXJ0aXRpb25zJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9ucycpLAorICAgICAgICAgIG1vZGVs OiBCYWNrZm9ybS5QYXJ0aXRpb25zTW9kZWwsCisgICAgICAgICAgc3Vibm9kZTogQmFja2Zvcm0u UGFydGl0aW9uc01vZGVsLAorICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLCB0eXBlOiAnY29sbGVj dGlvbicsCisgICAgICAgICAgZ3JvdXA6ICdwYXJ0aXRpb24nLCBtb2RlOiBbJ2VkaXQnLCAnY3Jl YXRlJ10sCisgICAgICAgICAgZGVwczogWydpc19wYXJ0aXRpb25lZCcsICdwYXJ0aXRpb25fdHlw ZSddLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAg ICAgY3VzdG9tRGVsZXRlVGl0bGU6IGdldHRleHQoJ0RldGFjaCBQYXJ0aXRpb24nKSwKKyAgICAg ICAgICBjdXN0b21EZWxldGVNc2c6IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBk ZXRhY2ggdGhpcyBwYXJ0aXRpb24/JyksCisgICAgICAgICAgY29sdW1uczpbJ2lzX2F0dGFjaCcs ICdwYXJ0aXRpb25fbmFtZScsICd2YWx1ZXNfZnJvbScsICd2YWx1ZXNfdG8nLCAndmFsdWVzX2lu J10sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rpb25Db250cm9s LmV4dGVuZCh7CisgICAgICAgICAgICByb3c6IEJhY2tncmlkLlBhcnRpdGlvblJvdywKKyAgICAg ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBCYWNrZm9ybS5T dWJOb2RlQ29sbGVjdGlvbkNvbnRyb2wucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywg YXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAgICAg ICBpZiAoIXRoaXMubW9kZWwuaXNOZXcoKSkgeworICAgICAgICAgICAgICAgIHZhciBub2RlID0g dGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAgICAgICAgIG5vZGVf aW5mbyA9IHRoaXMuZmllbGQuZ2V0KCdub2RlX2luZm8nKTsKKworICAgICAgICAgICAgICAgIC8v IE1ha2UgYWpheCBjYWxsIHRvIGdldCB0aGUgdGFibGVzIHRvIGJlIGF0dGFjaGVkCisgICAgICAg ICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICAgIHVybDogbm9kZS5nZW5lcmF0ZV91 cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAgICAg ICAgICAgICAgbnVsbCwgJ2dldF9hdHRhY2hfdGFibGVzJywgdGhpcy5maWVsZC5nZXQoJ25vZGVf ZGF0YScpLAorICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgbm9kZV9pbmZvCisgICAgICAg ICAgICAgICAgICAgICAgXSksCisKKyAgICAgICAgICAgICAgICAgIHR5cGU6ICdHRVQnLAorICAg ICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgc3VjY2Vzczog ZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAx KSB7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2RlbC50YWJsZV9vcHRpb25zID0gcmVz LmRhdGE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7 CisgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICAgICAg ICAgICAgICAnRXJyb3IgZmV0Y2hpbmcgdGFibGVzIHRvIGJlIGF0dGFjaGVkJywgcmVzLmRhdGEu cmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihl KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBlcnJtc2cgPSAkLnBhcnNlSlNPTihlLnJlc3Bv bnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KCdFcnJvciBmZXRj aGluZyB0YWJsZXMgdG8gYmUgYXR0YWNoZWQuJywgZXJybXNnLmVycm9ybXNnKTsKKyAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICApLAorICAgICAgICAgIGNhbkFkZDogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKQorICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9LAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlm KCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5m by5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNl cnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lv biA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSAmJiBtLmdldCgncGFydGl0aW9ucycpICYm IG0uZ2V0KCdwYXJ0aXRpb25zJykubW9kZWxzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdl dCgncGFydGl0aW9ucycpOworICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVy KGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uX25vdGUnLCBs YWJlbDogZ2V0dGV4dCgnUGFydGl0aW9uJyksCisgICAgICAgICAgdHlwZTogJ25vdGUnLCBncm91 cDogJ3BhcnRpdGlvbicsCisgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQWJvdmUgY29udHJvbCB3 aWxsIGJlIHVzZWQgdG8gQ3JlYXRlL0F0dGFjaC9EZXRhY2ggcGFydGl0aW9ucy48YnI+JyArCisg ICAgICAgICAgICAnPHVsPjxsaT5DcmVhdGUgTW9kZTogVXNlciB3aWxsIGJlIGFibGUgdG8gY3Jl YXRlIE4gbnVtYmVyIG9mIHBhcnRpdGlvbnMuIE1vZGUgc3dpdGNoIGNvbnRyb2wgaXMgZGlzYWJs ZWQgaW4gdGhpcyBzY2VuYXJpby48L2xpPicgKworICAgICAgICAgICAgJzxsaT5FZGl0IE1vZGU6 IFVzZXIgd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZS9hdHRhY2gvZGV0YWNoIE4gbnVtYmVyIG9mIHBh cnRpdGlvbnMuJyArCisgICAgICAgICAgICAnSW4gYXR0YWNoIG1vZGUgdGhlcmUgd2lsbCBiZSBs aXN0IG9mIHN1aXRhYmxlIHRhYmxlcyB0byBiZSBhdHRhY2hlZC48L2xpPjwvdWw+JyksCisgICAg ICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQobS5ub2RlX2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAg ICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24p ICYmCisgICAgICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIC8vIEhlcmUgLSB3ZSB3aWxsIGNy ZWF0ZSB0YWIgY29udHJvbCBmb3Igc3RvcmFnZSBwYXJhbWV0ZXJzCisgICAgICAgICAgLy8gKGF1 dG8gdmFjdXVtKS4KKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ3RhYicsIGdy b3VwOiBnZXR0ZXh0KCdQYXJhbWV0ZXInKSwKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3Jl YXRlJ10sIGRlcHM6IFsnaXNfcGFydGl0aW9uZWQnXSwKKyAgICAgICAgICBzY2hlbWE6IEJhY2tm b3JtLlZhY3V1bVNldHRpbmdzU2NoZW1hCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVs YWNsX3N0cicsIGxhYmVsOiBnZXR0ZXh0KCdQcml2aWxlZ2VzJyksIGRpc2FibGVkOiAnaW5TY2hl bWEnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3Vw OiBnZXR0ZXh0KCdTZWN1cml0eScpCisgICAgICAgIH0sIHBnQnJvd3Nlci5TZWN1cml0eUdyb3Vw VW5kZXJTY2hlbWEseworICAgICAgICAgIGlkOiAncmVsYWNsJywgbGFiZWw6IGdldHRleHQoJ1By aXZpbGVnZXMnKSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAnc2VjdXJp dHknLCBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICBtb2RlbDog cGdCcm93c2VyLk5vZGUuUHJpdmlsZWdlUm9sZU1vZGVsLmV4dGVuZCh7CisgICAgICAgICAgcHJp dmlsZWdlczogWydhJywncicsJ3cnLCdkJywnRCcsJ3gnLCd0J119KSwKKyAgICAgICAgICBtb2Rl OiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAg ICAgICAgIHVuaXF1ZUNvbCA6IFsnZ3JhbnRlZSddCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnc2VjbGFiZWxzJywgbGFiZWw6IGdldHRleHQoJ1NlY3VyaXR5IGxhYmVscycpLCBjYW5FZGl0 OiBmYWxzZSwKKyAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLlNlY0xhYmVsTW9kZWwsIGVkaXRh YmxlOiBmYWxzZSwgY2FuQWRkOiB0cnVlLAorICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywg bWluX3ZlcnNpb246IDkwMTAwLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAg Z3JvdXA6ICdzZWN1cml0eScsIGNhbkRlbGV0ZTogdHJ1ZSwgY29udHJvbDogJ3VuaXF1ZS1jb2wt Y29sbGVjdGlvbicKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd2YWN1dW1fc2V0dGluZ3Nf c3RyJywgbGFiZWw6IGdldHRleHQoJ1N0b3JhZ2Ugc2V0dGluZ3MnKSwKKyAgICAgICAgICB0eXBl OiAnbXVsdGlsaW5lJywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksIG1vZGU6IFsncHJvcGVy dGllcyddCisgICAgICAgIH1dLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgewor ICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgY2hhbmdlZEF0dHJzID0gdGhp cy5jaGFuZ2VkLAorICAgICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAg IG5hbWUgPSB0aGlzLmdldCgnbmFtZScpLAorICAgICAgICAgICAgICBzY2hlbWEgPSB0aGlzLmdl dCgnc2NoZW1hJyksCisgICAgICAgICAgICAgIHJlbG93bmVyID0gdGhpcy5nZXQoJ3JlbG93bmVy JyksCisgICAgICAgICAgICAgIGlzX3BhcnRpdGlvbmVkID0gdGhpcy5nZXQoJ2lzX3BhcnRpdGlv bmVkJyksCisgICAgICAgICAgICAgIHBhcnRpdGlvbl9rZXlzID0gdGhpcy5nZXQoJ3BhcnRpdGlv bl9rZXlzJyk7CisKKyAgICAgICAgICAvLyBJZiBub3RoaW5nIHRvIHZhbGlkYXRlIG9yIFZhY3V1 bVNldHRpbmcga2V5cyB0aGVuCisgICAgICAgICAgLy8gcmV0dXJuIGZyb20gaGVyZQorICAgICAg ICAgIGlmICgga2V5cyAmJiAoa2V5cy5sZW5ndGggPT0gMAorICAgICAgICAgICAgICAgICAgICAg ICAgfHwgXy5pbmRleE9mKGtleXMsICdhdXRvdmFjdXVtX2VuYWJsZWQnKSAhPSAtMQorICAgICAg ICAgICAgICAgICAgICAgICAgfHwgXy5pbmRleE9mKGtleXMsICd0b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQnKSAhPSAtMSkgKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICAvLyBIYXZlIHRvIGNsZWFyIGV4aXN0aW5nIHZhbGlkYXRpb24gYmVmb3Jl IGluaXRpYXRpbmcgY3VycmVudCBzdGF0ZSB2YWxpZGF0aW9uIG9ubHkKKyAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuY2xlYXIoKTsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUp IHx8IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICBTdHJpbmcobmFtZSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGFi bGUgbmFtZSBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCduYW1lJywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfSBl bHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwgXy5pc051bGwoc2NoZW1hKSB8fAorICAg ICAgICAgICAgU3RyaW5nKHNjaGVtYSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykg eworICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGFibGUgc2NoZW1hIGNhbm5vdCBiZSBlbXB0 eS4nKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7Cisg ICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5l ZChyZWxvd25lcikgfHwgXy5pc051bGwocmVsb3duZXIpIHx8CisgICAgICAgICAgICBTdHJpbmco cmVsb3duZXIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAg IG1zZyA9IGdldHRleHQoJ1RhYmxlIG93bmVyIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3JlbG93bmVyJywgbXNnKTsKKyAgICAgICAgICAgIHJl dHVybiBtc2c7CisgICAgICAgICAgfSBlbHNlIGlmIChpc19wYXJ0aXRpb25lZCAmJiB0aGlzLmlz TmV3KCkgJiYKKyAgICAgICAgICAgICFfLmlzTnVsbChwYXJ0aXRpb25fa2V5cykgJiYgcGFydGl0 aW9uX2tleXMubGVuZ3RoIDw9IDApCisgICAgICAgICAgeworICAgICAgICAgICAgbXNnID0gZ2V0 dGV4dCgnUGxlYXNlIHNwZWNpZnkgYXQgbGVhc3Qgb25lIGtleSBmb3IgcGFydGl0aW9uZWQgdGFi bGUuJyk7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwYXJ0aXRpb25fa2V5cycs IG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAgICAgICAgICBy ZXR1cm4gbnVsbDsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGV2ZXJ5 dGhpbmcgaWYgd2UgYXJlIHVuZGVyIGNhdGFsb2cgbm9kZQorICAgICAgICBpblNjaGVtYTogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0 aGlzLm5vZGVfaW5mbykKKyAgICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICBp c0luaGVyaXRlZFRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgaWYoIW0uaW5TY2hlbWEu YXBwbHkodGhpcywgW21dKSkgeworICAgICAgICAgICAgaWYoCisgICAgICAgICAgICAgICghXy5p c1VuZGVmaW5lZChtLmdldCgnY29sbF9pbmhlcml0cycpKSAmJiBtLmdldCgnY29sbF9pbmhlcml0 cycpLmxlbmd0aCAhPSAwKQorICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgICAo IV8uaXNVbmRlZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgJiYgU3RyaW5nKG0uZ2V0KCd0eXBuYW1l JykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgIT09ICcnKQorICAgICAgICAgICAgKSB7Cisg ICAgICAgICAgICAgIC8vIEVpdGhlciBvZl90eXBlcyBvciBjb2xsX2luaGVyaXRzIGhhcyB2YWx1 ZQorICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICAvLyBPZnR5cGUgaXMgZGVm aW5lZD8KKyAgICAgICAgY2hlY2tJbmhlcml0YW5jZTogZnVuY3Rpb24obSkgeworICAgICAgICAg IC8vIERpc2FibGVkIGlmIGl0IGlzIHBhcnRpdGlvbmVkIHRhYmxlCisgICAgICAgICAgaWYgKG0u Z2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCBmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgIG0uc2V0KCdjb2xsX2luaGVyaXRzJywgW10pOworICAgICAg ICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorCisg ICAgICAgICAgLy8gY29sbF9pbmhlcml0cyB8fCB0eXBuYW1lCisgICAgICAgICAgaWYoIW0uaW5T Y2hlbWEuYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICAoIF8uaXNVbmRlZmluZWQo bS5nZXQoJ3R5cG5hbWUnKSkgfHwKKyAgICAgICAgICAgICAgICBfLmlzTnVsbChtLmdldCgndHlw bmFtZScpKSB8fAorICAgICAgICAgICAgICAgIFN0cmluZyhtLmdldCgndHlwbmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAg ICAgLy8gV2Ugd2lsbCBkaXNhYmxlIExpa2UgaWYgb2ZUeXBlIGlzIGRlZmluZWQKKyAgICAgICAg aXNMaWtlRGlzYWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0 aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICAoIF8uaXNVbmRl ZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgfHwKKyAgICAgICAgICAgICAgICBfLmlzTnVsbChtLmdl dCgndHlwbmFtZScpKSB8fAorICAgICAgICAgICAgICAgIFN0cmluZyhtLmdldCgndHlwbmFtZScp KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgeworICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwK KyAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbHVtbiBncmlkIHdoZW4gdG8gQWRkCisgICAgICAgIGNo ZWNrX2dyaWRfYWRkX2NvbmRpdGlvbjogZnVuY3Rpb24obSkgeworICAgICAgICAgIHZhciBlbmFi bGVfZmxhZyA9IHRydWU7CisgICAgICAgICAgaWYoIW0uaW5TY2hlbWEuYXBwbHkodGhpcywgW21d KSkgeworICAgICAgICAgICAgLy8gaWYgb2ZfdHlwZSB0aGVuIGRpc2FibGUgYWRkIGluIGdyaWQK KyAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtLmdldCgndHlwbmFtZScpKSAmJgorICAg ICAgICAgICAgICAgICFfLmlzTnVsbChtLmdldCgndHlwbmFtZScpKSAmJgorICAgICAgICAgICAg ICAgIG0uZ2V0KCd0eXBuYW1lJykgIT09ICcnKSB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJs ZV9mbGFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg ICByZXR1cm4gZW5hYmxlX2ZsYWc7CisgICAgICAgIH0sCisgICAgICAgIC8vIENoZWNrIGZvciBj b2x1bW4gZ3JpZCB3aGVuIHRvIGVkaXQvZGVsZXRlIChmb3IgZWFjaCByb3cpCisgICAgICAgIGNo ZWNrX2dyaWRfcm93X2VkaXRfZGVsZXRlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgdmFyIGZs YWcgPSB0cnVlOworICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRm cm9tJykpICYmCisgICAgICAgICAgICAgICAhXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkgJiYKKyAgICAgICAgICAgICAgIFN0cmluZyhtLmdldCgnaW5oZXJpdGVkZnJvbScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpICE9PSAnJykgeworICAgICAgICAgICAgZmxhZyA9IGZhbHNl OworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gZmxhZzsKKyAgICAgICAgfSwKKyAgICAg ICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGl0IGlmIEluaGVyaXRhbmNlIGlzIGRlZmluZWQKKyAgICAg ICAgY2hlY2tPZlR5cGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAvLyBEaXNhYmxlZCBpZiBp dCBpcyBwYXJ0aXRpb25lZCB0YWJsZQorICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9u ZWQnKSkgeworICAgICAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICBtLnNldCgndHlwbmFtZScsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICB9LCAxMCk7Cisg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvL2NvbGxf aW5oZXJpdHMgfHwgdHlwbmFtZQorICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hl Y2suYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChtLmdl dCgnY29sbF9pbmhlcml0cycpKSB8fAorICAgICAgICAgICAgICAgXy5pc051bGwobS5nZXQoJ2Nv bGxfaW5oZXJpdHMnKSkgfHwKKyAgICAgICAgICAgICAgIFN0cmluZyhtLmdldCgnY29sbF9pbmhl cml0cycpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgeworICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiB3ZSBhcmUgdW5kZXIgc2NoZW1hIG5v ZGUgJiBpbiAnY3JlYXRlJyBtb2RlCisgICAgICAgIGluU2NoZW1hV2l0aE1vZGVsQ2hlY2s6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ3NjaGVtYScgaW4g dGhpcy5ub2RlX2luZm8pCisgICAgICAgICAgeworICAgICAgICAgICAgLy8gV2Ugd2lsbCBkaXNi YWxlIGNvbnRyb2wgaWYgaXQncyBpbiAnZWRpdCcgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNO ZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGlzVGFibGVBdXRv VmFjdXVtRW5hYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVj ayBhZGRpdGlvbmFsIGNvbmRpdGlvbiB0byB0b2dnbGUgZW5hYmxlL2Rpc2FibGUKKyAgICAgICAg ICAvLyBmb3IgdGFibGUgYXV0by12YWN1dW0KKyAgICAgICAgICBpZighbS5pblNjaGVtYS5hcHBs eSh0aGlzLCBbbV0pICYmCisgICAgICAgICAgICAgIG0uZ2V0KCdhdXRvdmFjdXVtX2VuYWJsZWQn KSA9PT0gdHJ1ZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgaXNUb2FzdFRhYmxlQXV0 b1ZhY3V1bUVuYWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hl Y2sgYWRkaXRpb25hbCBjb25kaXRpb24gdG8gdG9nZ2xlIGVuYWJsZS9kaXNhYmxlCisgICAgICAg ICAgLy8gZm9yIHRvYXN0IHRhYmxlIGF1dG8tdmFjdXVtCisgICAgICAgICAgaWYoIW0uaW5TY2hl bWFXaXRoTW9kZWxDaGVjay5hcHBseSh0aGlzLCBbbV0pICYmCisgICAgICAgICAgICAgIG0uZ2V0 KCd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnKSA9PSB0cnVlKSB7CisgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9 LAorICAgICAgICBmZXRjaF9jb2x1bW5zX2FqYXg6IGZ1bmN0aW9uKGFyZykgeworICAgICAgICAg IHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgdXJsID0gJ2dldF9jb2x1bW5zJywKKyAg ICAgICAgICAgICAgbSA9IHNlbGYubW9kZWwudG9wIHx8IHNlbGYubW9kZWwsCisgICAgICAgICAg ICAgIG9sZF9jb2x1bW5zID0gXy5jbG9uZShtLmdldCgnY29sdW1ucycpKQorICAgICAgICAgICAg ICBkYXRhID0gdW5kZWZpbmVkLAorICAgICAgICAgICAgICBub2RlID0gdGhpcy5maWVsZC5nZXQo J3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAgIG5vZGVfaW5mbyA9IHRoaXMuZmllbGQuZ2V0 KCdub2RlX2luZm8nKSwKKyAgICAgICAgICAgICAgZnVsbF91cmwgPSBub2RlLmdlbmVyYXRlX3Vy bC5hcHBseSgKKyAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICBudWxs LCB1cmwsIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAgICAgICAgICAgICAgICAgIHRo aXMuZmllbGQuZ2V0KCd1cmxfd2l0aF9pZCcpIHx8IGZhbHNlLCBub2RlX2luZm8KKyAgICAgICAg ICAgICAgICBdCisgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgIGNhY2hlX2xldmVsID0g dGhpcy5maWVsZC5nZXQoJ2NhY2hlX2xldmVsJykgfHwgbm9kZS50eXBlLAorICAgICAgICAgICAg ICBjYWNoZV9ub2RlID0gdGhpcy5maWVsZC5nZXQoJ2NhY2hlX25vZGUnKTsKKworICAgICAgICAg IGNhY2hlX25vZGUgPSAoY2FjaGVfbm9kZSAmJiBwZ0Jyb3dzZXIuTm9kZXNbJ2NhY2hlX25vZGUn XSkgfHwgbm9kZTsKKworICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5n JywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgLy8gRmV0Y2hpbmcgQ29sdW1ucyBkYXRhIGZv ciB0aGUgc2VsZWN0ZWQgdGFibGUuCisgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIGFz eW5jOiBmYWxzZSwKKyAgICAgICAgICAgIHVybDogZnVsbF91cmwsCisgICAgICAgICAgICBkYXRh OiBhcmcsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAg ICAgZGF0YSA9IGNhY2hlX25vZGUuY2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCBy ZXMuZGF0YSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDplcnJvcicsIG0s IHNlbGYuZmllbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICAgIG0u dHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQnLCBtLCBzZWxmLmZpZWxkKTsKKyAgICAgICAg ICBkYXRhID0gKGRhdGEgJiYgZGF0YS5kYXRhKSB8fCBbXTsKKyAgICAgICAgICByZXR1cm4gZGF0 YTsKKyAgICAgICAgfQorICAgICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwg d2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQorICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hl Y2sgPT0gZmFsc2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisgICAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgICB3aGls ZSAoaSkgeworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0 byBjcmVhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5f dHlwZSkgPiAtMSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlm ICgnY29sbC10YWJsZScgPT0gZC5fdHlwZSkgeworICAgICAgICAgICAgICAvL0NoZWNrIGlmIHdl IGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZworICAgICAgICAgICAgICBwcmV2X2kgPSB0Lmhhc1Bh cmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgICAgcHJldl9kID0gcHJl dl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKKyAgICAgICAgICAgICAgaWYoIHByZXZf ZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChp KSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShp KSA6IG51bGw7CisgICAgICAgICAgfQorICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90 IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg IH0sCisgICAgICAvLyBDaGVjayB0byB3aGV0aGVyIHRhYmxlIGhhcyBkaXNhYmxlIHRyaWdnZXIo cykKKyAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlOiBmdW5jdGlvbihpdGVtRGF0 YSwgaXRlbSwgZGF0YSkgeworICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBb aXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgeworICAgICAgICAgIC8vIFdlIGFyZSBoZXJlIG1lYW5z IHdlIGNhbiBjcmVhdGUgbWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgorICAgICAgICAg IGlmKGl0ZW1EYXRhLnRpZ2dlcl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgfQorICAgICAgICB9CisgICAgICB9LAorICAgICAgLy8gQ2hlY2sgdG8gd2hldGhlciB0YWJs ZSBoYXMgZW5hYmxlIHRyaWdnZXIocykKKyAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZGlz YWJsZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAgICAgICAgaWYodGhpcy5j YW5DcmVhdGUuYXBwbHkodGhpcywgW2l0ZW1EYXRhLCBpdGVtLCBkYXRhXSkpIHsKKyAgICAgICAg ICAvLyBXZSBhcmUgaGVyZSBtZWFucyB3ZSBjYW4gY3JlYXRlIG1lbnUsIG5vdyBsZXQncyBjaGVj ayBjb25kaXRpb24KKyAgICAgICAgICBpZihpdGVtRGF0YS50aWdnZXJfY291bnQgPiAwICYmIGl0 ZW1EYXRhLmhhc19lbmFibGVfdHJpZ2dlcnMgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJv d3Nlci5Ob2Rlc1sncGFydGl0aW9uJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxl cy90ZW1wbGF0ZXMvcnVsZXMvanMvcnVsZXMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvdGVtcGxhdGVz L3J1bGVzL2pzL3J1bGVzLmpzCmluZGV4IDI1ZmU5NjMuLmRiOTFhZjMgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9ydWxlcy90ZW1wbGF0ZXMvcnVsZXMvanMvcnVsZXMuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3J1bGVzL3RlbXBsYXRlcy9ydWxlcy9qcy9ydWxlcy5qcwpAQCAtMTYsNiArMTYsNyBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5ydWxlJywgWwogICAgICAgICBub2RlOiAncnVsZScsCiAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdSdWxlcycpLAogICAgICAgICB0eXBlOiAnY29sbC1ydWxlJywKKyAg ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsibmFtZSIsICJvd25lciIsICJjb21tZW50Il0K ICAgICAgIH0pOwogICB9CkBAIC0zMyw4ICszNCw5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnJ1 bGUnLCBbCiAgICAgcnVsZSBvcHRpb24gaW4gdGhlIGNvbnRleHQgbWVudQogICAgKi8KICAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ3J1bGUnXSkgewotICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sn cnVsZSddID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBl OiBbJ3RhYmxlJywndmlldyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sncnVsZSddID0g cGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jy b3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAorICAgICAgcGFyZW50X3R5cGU6IFsn dGFibGUnLCd2aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAgdHlwZTogJ3J1bGUnLAogICAgICAg c3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVycnVsZS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdzcWwtY3JlYXRlcnVsZS5odG1sJywKQEAgLTk4LDYgKzEwMCwxMiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS5ydWxlJywgWwogICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6 IDQsIGxhYmVsOiBnZXR0ZXh0KCdSdWxlLi4uJyksCiAgICAgICAgICAgaWNvbjogJ3djVGFiSWNv biBpY29uLXJ1bGUnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAogICAg ICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTog J2NyZWF0ZV9ydWxlJywgbm9kZTogJ3BhcnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJv cGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFi ZWw6IGdldHRleHQoJ1J1bGUuLi4nKSwKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t cnVsZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAg ZW5hYmxlOiAnY2FuQ3JlYXRlJwogICAgICAgICB9CiAgICAgICAgIF0pOwogICAgICAgfSwKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvcGFydGl0aW9uLnV0aWxzLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3N0YXRpYy9qcy9wYXJ0aXRpb24udXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNWIxZTNjMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMv anMvcGFydGl0aW9uLnV0aWxzLmpzCkBAIC0wLDAgKzEsMzIzIEBACitkZWZpbmUoCisgICAgICAg IFsnc291cmNlcy9nZXR0ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3BnYWRtaW4uYnJv d3NlcicsCisgICAgICAgICdiYWNrZm9ybScsJ2JhY2tncmlkJywgJ3BnYWRtaW4uYnJvd3Nlci5j b2xsZWN0aW9uJ10sCitmdW5jdGlvbihnZXR0ZXh0LCAkLCBfLCBwZ0Jyb3dzZXIsIEJhY2tmb3Jt LCBCYWNrZ3JpZCkgeworCisgIEJhY2tncmlkLlBhcnRpdGlvblJvdyA9IEJhY2tncmlkLlJvdy5l eHRlbmQoeworICAgIG1vZGVsRHVwbGljYXRlQ29sb3I6ICJsaWdodFllbGxvdyIsCisKKyAgICBt b2RlbFVuaXF1ZUNvbG9yOiAiI2ZmZiIsCisKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7 CisgICAgICBCYWNrZ3JpZC5Sb3cucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKKyAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgIHNlbGYubW9kZWwub24oImNo YW5nZTppc19hdHRhY2giLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKKyAgICAgICAgICBzZWxmLmNvbHVtbnMuZWFjaChmdW5jdGlvbihjb2wpIHsKKyAgICAg ICAgICAgIGlmIChjb2wuZ2V0KCduYW1lJykgPT0gJ3BhcnRpdGlvbl9uYW1lJykgeworICAgICAg ICAgICAgICB2YXIgaWR4ID0gc2VsZi5jb2x1bW5zLmluZGV4T2YoY29sKSwKKyAgICAgICAgICAg ICAgICBjZiA9IGNvbC5nZXQoImNlbGxGdW5jdGlvbiIpLAorICAgICAgICAgICAgICAgIGNlbGwg PSBuZXcgKGNmLmFwcGx5KGNvbCwgW3NlbGYubW9kZWxdKSkoeworICAgICAgICAgICAgICAgICAg Y29sdW1uOiBjb2wsCisgICAgICAgICAgICAgICAgICBtb2RlbDogc2VsZi5tb2RlbAorICAgICAg ICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgICAgb2xkQ2VsbCA9IHNlbGYuY2VsbHNbaWR4 XTsKKyAgICAgICAgICAgICAgICBvbGRDZWxsLnJlbW92ZSgpOworICAgICAgICAgICAgICAgIHNl bGYuY2VsbHNbaWR4XSA9IGNlbGw7CisgICAgICAgICAgICAgICAgc2VsZi5yZW5kZXIoKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgfSwgMTApOworICAgICAgfSk7Cisg ICAgICBzZWxmLmxpc3RlblRvKHNlbGYubW9kZWwsICdwZ2FkbWluLXNlc3Npb246bW9kZWw6ZHVw bGljYXRlJywgc2VsZi5tb2RlbER1cGxpY2F0ZSk7CisgICAgICBzZWxmLmxpc3RlblRvKHNlbGYu bW9kZWwsICdwZ2FkbWluLXNlc3Npb246bW9kZWw6dW5pcXVlJywgc2VsZi5tb2RlbFVuaXF1ZSk7 CisgICAgfSwKKyAgICBtb2RlbER1cGxpY2F0ZTogZnVuY3Rpb24oKSB7CisgICAgICAkKHRoaXMu ZWwpLnJlbW92ZUNsYXNzKCJuZXciKTsKKyAgICAgIHRoaXMuZWwuc3R5bGUuYmFja2dyb3VuZENv bG9yID0gdGhpcy5tb2RlbER1cGxpY2F0ZUNvbG9yOworICAgIH0sCisgICAgbW9kZWxVbmlxdWU6 IGZ1bmN0aW9uKCkgeworICAgICAgdGhpcy5lbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlz Lm1vZGVsVW5pcXVlQ29sb3I7CisgICAgfQorICB9KTsKKworICB2YXIgZ2V0UGFydGl0aW9uQ2Vs bCA9IGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgdmFyIGlzX2F0dGFjaCA9IG1vZGVsLmdldCgiaXNf YXR0YWNoIik7CisgICAgaWYgKGlzX2F0dGFjaCkgeworICAgICAgdmFyIG9wdGlvbnMgPSBbXTsK KyAgICAgIG1vZGVsLnNldCh7J3BhcnRpdGlvbl9uYW1lJzogdW5kZWZpbmVkfSwge3NpbGVudDp0 cnVlfSk7CisgICAgICBfLmVhY2gobW9kZWwudG9wLnRhYmxlX29wdGlvbnMsIGZ1bmN0aW9uKHQp IHsKKyAgICAgICAgb3B0aW9ucy5wdXNoKFt0LmxhYmVsLCB0LnZhbHVlXSk7CisgICAgICB9KTsK KyAgICAgIHJldHVybiBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkNlbGwuZXh0ZW5kKHtvcHRp b25WYWx1ZXM6IG9wdGlvbnN9KTsKKworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gQmFja2dy aWQuU3RyaW5nQ2VsbDsKKyAgICB9CisgIH07CisKKyAgQmFja2Zvcm0uUGFydGl0aW9uS2V5TW9k ZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICBkZWZhdWx0czogeworICAg ICAgIGtleV90eXBlOiAnY29sdW1uJywKKyAgICAgICBwdF9jb2x1bW46IHVuZGVmaW5lZCwKKyAg ICAgICBleHByZXNzaW9uOiB1bmRlZmluZWQKKyAgICAgfSwKKyAgICAga2V5czpbJ3B0X2NvbHVt biddLAorICAgICBzY2hlbWE6IFt7CisgICAgICAgaWQ6ICdrZXlfdHlwZScsIGxhYmVsOidLZXkg dHlwZScsIHR5cGU6J3NlbGVjdDInLCBlZGl0YWJsZTogdHJ1ZSwKKyAgICAgICBjZWxsOidzZWxl Y3QyJywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzI1JywKKyAgICAgICBzZWxl Y3QyOiB7YWxsb3dDbGVhcjogZmFsc2V9LAorICAgICAgIG9wdGlvbnM6W3sKKyAgICAgICAgIGxh YmVsOiAnQ29sdW1uJywgdmFsdWU6ICdjb2x1bW4nCisgICAgICAgfSx7CisgICAgICAgICBsYWJl bDogJ0V4cHJlc3Npb24nLCB2YWx1ZTogJ2V4cHJlc3Npb24nCisgICAgICAgfV0KKyAgICAgfSx7 CisgICAgICAgaWQ6ICdwdF9jb2x1bW4nLCBsYWJlbDogZ2V0dGV4dCgnQ29sdW1uJyksIHR5cGU6 J3RleHQnLAorICAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5TZWxlY3QyRGVwQ2VsbC5l eHRlbmQoeworICAgICAgICAga2V5UGF0aEFjY2Vzc29yOiBmdW5jdGlvbihvYmosIHBhdGgpIHsK KyAgICAgICAgICAgdmFyIHJlcyA9IG9iajsKKyAgICAgICAgICAgaWYoXy5pc0FycmF5KHJlcykp IHsKKyAgICAgICAgICAgICByZXR1cm4gXy5tYXAocmVzLCBmdW5jdGlvbihvKSB7IHJldHVybiBv WydwdF9jb2x1bW4nXQorICAgICAgICAgICAgIH0pOworICAgICAgICAgICB9CisgICAgICAgICAg IHBhdGggPSBwYXRoLnNwbGl0KCcuJyk7CisgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg cGF0aC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgIGlmIChfLmlzTnVsbChyZXMpKSByZXR1 cm4gbnVsbDsKKyAgICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhdGhbaV0pKSBjb250aW51ZTsK KyAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzW3BhdGhbaV1dKSkgcmVzID0gcmVz W3BhdGhbaV1dOworICAgICAgICAgICB9CisgICAgICAgICAgIHJldHVybiBfLmlzT2JqZWN0KHJl cykgJiYgIV8uaXNBcnJheShyZXMpID8gbnVsbCA6IHJlczsKKyAgICAgICAgIH0sCisgICAgICAg ICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgIC8vIEhlcmUgd2Ugd2lsbCBkZWNp ZGUgaWYgd2UgbmVlZCB0byBjYWxsIFVSTAorICAgICAgICAgLy8gT3IgZmV0Y2ggdGhlIGRhdGEg ZnJvbSBwYXJlbnQgY29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgIHZhciBzZWxmID0gdGhp czsKKyAgICAgICAgICAgaWYodGhpcy5tb2RlbC5oYW5kbGVyKSB7CisgICAgICAgICAgICAgQmFj a2dyaWQuRXh0ZW5zaW9uLlNlbGVjdDJEZXBDZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5 KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgLy8gRG8gbm90IGxpc3RlbiBmb3IgYW55 IGV2ZW50KHMpIGZvciBleGlzdGluZyBjb25zdHJhaW50LgorICAgICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHNlbGYubW9kZWwuZ2V0KCdvaWQnKSkpIHsKKyAgICAgICAgICAgICAgIHZhciB0 YWJsZUNvbHMgPSBzZWxmLm1vZGVsLnRvcC5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAg IHNlbGYubGlzdGVuVG8odGFibGVDb2xzLCAncmVtb3ZlJyAsIHNlbGYucmVzZXRDb2xPcHRpb25z KTsKKyAgICAgICAgICAgICAgIHNlbGYubGlzdGVuVG8odGFibGVDb2xzLCAnY2hhbmdlOm5hbWUn LCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg c2VsZi5jdXN0b21fb3B0aW9ucygpOworICAgICAgICAgICB9CisgICAgICAgICB9LAorICAgICAg ICAgcmVzZXRDb2xPcHRpb25zOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgIHZhciBzZWxmID0g dGhpczsKKworICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg ICBzZWxmLmN1c3RvbV9vcHRpb25zKCk7CisgICAgICAgICAgICAgc2VsZi5yZW5kZXIuYXBwbHko c2VsZik7CisgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgIH0sCisgICAgICAgICBjdXN0b21f b3B0aW9uczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgIC8vIFdlIHdpbGwgYWRkIGFsbCB0aGUg Y29sdW1ucyBlbnRlcmVkIGJ5IHVzZXIgaW4gdGFibGUgbW9kZWwKKyAgICAgICAgICAgdmFyIGNv bHVtbnMgPSB0aGlzLm1vZGVsLnRvcC5nZXQoJ2NvbHVtbnMnKSwKKyAgICAgICAgICAgICBhZGRl ZF9jb2x1bW5zX2Zyb21fdGFibGVzID0gW107CisKKyAgICAgICAgICAgaWYgKGNvbHVtbnMubGVu Z3RoID4gMCkgeworICAgICAgICAgICAgIF8uZWFjaChjb2x1bW5zLm1vZGVscywgZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgICAgICB2YXIgY29sID0gbS5nZXQoJ25hbWUnKTsKKyAgICAgICAg ICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoY29sKSAmJiAhXy5pc051bGwoY29sKSkgeworICAg ICAgICAgICAgICAgICAgIGFkZGVkX2NvbHVtbnNfZnJvbV90YWJsZXMucHVzaCgKKyAgICAgICAg ICAgICAgICAgICAgIHtsYWJlbDogY29sLCB2YWx1ZTogY29sLCBpbWFnZTonaWNvbi1jb2x1bW4n fQorICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgfQorICAgICAgICAgICAvLyBTZXQgdGhlIHZhbHVlcyBpbiB0byBv cHRpb25zIHNvIHRoYXQgdXNlciBjYW4gc2VsZWN0CisgICAgICAgICAgIHRoaXMuY29sdW1uLnNl dCgnb3B0aW9ucycsIGFkZGVkX2NvbHVtbnNfZnJvbV90YWJsZXMpOworICAgICAgICAgfSwKKyAg ICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgIGlmKHRoaXMubW9kZWwuaGFu ZGxlcikgeworICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICB0YWJs ZUNvbHMgPSBzZWxmLm1vZGVsLnRvcC5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICBzZWxm LnN0b3BMaXN0ZW5pbmcodGFibGVDb2xzLCAncmVtb3ZlJyAsIHNlbGYucmVzZXRDb2xPcHRpb25z KTsKKyAgICAgICAgICAgICBzZWxmLnN0b3BMaXN0ZW5pbmcodGFibGVDb2xzLCAnY2hhbmdlOm5h bWUnICwgc2VsZi5yZXNldENvbE9wdGlvbnMpOworICAgICAgICAgICAgIEJhY2tncmlkLkV4dGVu c2lvbi5TZWxlY3QyRGVwQ2VsbC5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cyk7CisgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICB9KSwKKyAgICAgICBkZXBzOiBb J2tleV90eXBlJ10sCisgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMw JywKKyAgICAgICB0cmFuc2Zvcm0gOiBmdW5jdGlvbihkYXRhKXsKKyAgICAgICAgIHZhciByZXMg PSBbXTsKKyAgICAgICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAgICAgICAg ICBfLmVhY2goZGF0YSwgZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgIHJlcy5wdXNoKHtsYWJl bDogZC5sYWJlbCwgdmFsdWU6IGQubGFiZWwsIGltYWdlOidpY29uLWNvbHVtbid9KTsKKyAgICAg ICAgICAgfSkKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgfSwKKyAg ICAgICBzZWxlY3QyOnthbGxvd0NsZWFyOmZhbHNlfSwKKyAgICAgICBlZGl0YWJsZTogZnVuY3Rp b24obSkgeworICAgICAgICAgaWYgKG0uZ2V0KCdrZXlfdHlwZScpID09ICdleHByZXNzaW9uJykg eworICAgICAgICAgICBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgbS5z ZXQoJ3B0X2NvbHVtbicsIHVuZGVmaW5lZCk7CisgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgfQorICAgICB9LHsKKyAgICAgICBpZDogJ2V4cHJlc3Npb24nLCBsYWJlbDonRXhwcmVzc2lv bicsIHR5cGU6J3RleHQnLAorICAgICAgIGNlbGw6QmFja2dyaWQuRXh0ZW5zaW9uLlN0cmluZ0Rl cENlbGwsCisgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzQ1JywKKyAg ICAgICBkZXBzOiBbJ2tleV90eXBlJ10sCisgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgIGlmIChtLmdldCgna2V5X3R5cGUnKSA9PSAnY29sdW1uJykgeworICAgICAgICAg ICBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgbS5zZXQoJ2V4cHJlc3Np b24nLCB1bmRlZmluZWQpOworICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgIH0KKyAgICAg fQorICAgIF0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKKyAgICAgIHZhciBjb2xf dHlwZSA9IHRoaXMuZ2V0KCdrZXlfdHlwZScpLAorICAgICAgICAgcHRfY29sdW1uID0gdGhpcy5n ZXQoJ3B0X2NvbHVtbicpLAorICAgICAgICAgZXhwcmVzc2lvbiA9IHRoaXMuZ2V0KCdleHByZXNz aW9uJyk7CisKKyAgICAgIC8vIEhhdmUgdG8gY2xlYXIgZXhpc3RpbmcgdmFsaWRhdGlvbiBiZWZv cmUgaW5pdGlhdGluZyBjdXJyZW50IHN0YXRlCisgICAgICAvLyB2YWxpZGF0aW9uIG9ubHkKKyAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChj b2xfdHlwZSkgfHwgXy5pc051bGwoY29sX3R5cGUpIHx8CisgICAgICAgIFN0cmluZyhjb2xfdHlw ZSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICBtc2cgPSBnZXR0 ZXh0KCdQYXJ0aXRpb24ga2V5IHR5cGUgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICB0aGlz LmVycm9yTW9kZWwuc2V0KCdrZXlfdHlwZScsIG1zZyk7CisgICAgICAgIHJldHVybiBtc2c7Cisg ICAgICB9CisgICAgICBlbHNlIGlmIChjb2xfdHlwZSA9PSAnY29sdW1uJyAmJgorICAgICAgICBf LmlzVW5kZWZpbmVkKHB0X2NvbHVtbikgfHwgXy5pc051bGwocHRfY29sdW1uKSB8fAorICAgICAg ICBTdHJpbmcocHRfY29sdW1uKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Cisg ICAgICAgIG1zZyA9IGdldHRleHQoJ1BhcnRpdGlvbiBrZXkgY29sdW1uIGNhbm5vdCBiZSBlbXB0 eS4nKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncHRfY29sdW1uJywgbXNnKTsKKyAg ICAgICAgcmV0dXJuIG1zZzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGNvbF90eXBlID09ICdl eHByZXNzaW9uJyAmJgorICAgICAgICBfLmlzVW5kZWZpbmVkKGV4cHJlc3Npb24pIHx8IF8uaXNO dWxsKGV4cHJlc3Npb24pIHx8CisgICAgICAgIFN0cmluZyhleHByZXNzaW9uKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIG1zZyA9IGdldHRleHQoJ1BhcnRpdGlv biBrZXkgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ2V4cHJlc3Npb24nLCBtc2cpOworICAgICAgICByZXR1cm4gbXNnOworICAgICAg fQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0pOworCisgIEJhY2tmb3JtLlBhcnRp dGlvbnNNb2RlbCA9IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6 IHsKKyAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgaXNfYXR0YWNoOiBmYWxzZSwKKyAgICAg IHBhcnRpdGlvbl9uYW1lOiB1bmRlZmluZWQsCisgICAgICB2YWx1ZXNfZnJvbTogdW5kZWZpbmVk LAorICAgICAgdmFsdWVzX3RvOiB1bmRlZmluZWQsCisgICAgICB2YWx1ZXNfaW46IHVuZGVmaW5l ZAorICAgIH0sCisgICAga2V5czpbJ3BhcnRpdGlvbl9uYW1lJ10sCisgICAgc2NoZW1hOiBbewor ICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIHR5cGU6ICd0ZXh0JworICAg IH0seworICAgICAgaWQ6ICdpc19hdHRhY2gnLCBsYWJlbDpnZXR0ZXh0KCdNb2RlJyksIGNlbGw6 ICdzd2l0Y2gnLAorICAgICAgdHlwZTogJ3N3aXRjaCcsIG9wdGlvbnM6IHsgJ29uVGV4dCc6ICdB dHRhY2gnLCAnb2ZmVGV4dCc6ICdDcmVhdGUnfSwKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAn d2lkdGhfcGVyY2VudF81JywKKyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAg IGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwgJiYgbS5pc05ldygpICYmICFtLnRvcC5p c05ldygpKQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICB9CisgICAgfSx7CisgICAgICBpZDogJ3BhcnRpdGlvbl9uYW1lJywgbGFiZWw6IGdldHRl eHQoJ05hbWUnKSwgdHlwZTogJ3RleHQnLCBjZWxsOidzdHJpbmcnLAorICAgICAgY2VsbEhlYWRl ckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzI1JywKKyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbiht KSB7CisgICAgICAgIGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwgJiYgbS5pc05ldygp KQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9 LCBjZWxsRnVuY3Rpb246IGdldFBhcnRpdGlvbkNlbGwKKyAgICB9LHsKKyAgICAgIGlkOiAndmFs dWVzX2Zyb20nLCBsYWJlbDonRnJvbScsIHR5cGU6J3RleHQnLAorICAgICAgY2VsbDpCYWNrZ3Jp ZC5FeHRlbnNpb24uU3RyaW5nRGVwQ2VsbCwKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lk dGhfcGVyY2VudF8yMCcsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgIGlm KG0uaGFuZGxlciAmJiBtLmhhbmRsZXIudG9wICYmCisgICAgICAgICAgbS5oYW5kbGVyLnRvcC5h dHRyaWJ1dGVzICYmCisgICAgICAgICAgbS5oYW5kbGVyLnRvcC5hdHRyaWJ1dGVzLnBhcnRpdGlv bl90eXBlID09ICdyYW5nZScgJiYKKyAgICAgICAgICBtIGluc3RhbmNlb2YgQmFja2JvbmUuTW9k ZWwgJiYgbS5pc05ldygpKQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgIH0KKyAgICB9LHsKKyAgICAgIGlkOiAndmFsdWVzX3RvJywgbGFiZWw6J1Rv JywgdHlwZTondGV4dCcsCisgICAgICBjZWxsOkJhY2tncmlkLkV4dGVuc2lvbi5TdHJpbmdEZXBD ZWxsLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJywKKyAgICAg IGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgIGlmKG0uaGFuZGxlciAmJiBtLmhhbmRs ZXIudG9wICYmCisgICAgICAgICAgbS5oYW5kbGVyLnRvcC5hdHRyaWJ1dGVzICYmCisgICAgICAg ICAgbS5oYW5kbGVyLnRvcC5hdHRyaWJ1dGVzLnBhcnRpdGlvbl90eXBlID09ICdyYW5nZScgJiYK KyAgICAgICAgICBtIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwgJiYgbS5pc05ldygpKQorICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAg fSx7CisgICAgICBpZDogJ3ZhbHVlc19pbicsIGxhYmVsOidJbicsIHR5cGU6J3RleHQnLAorICAg ICAgY2VsbDpCYWNrZ3JpZC5FeHRlbnNpb24uU3RyaW5nRGVwQ2VsbCwKKyAgICAgIGNlbGxIZWFk ZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yNScsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgICBpZihtLmhhbmRsZXIgJiYgbS5oYW5kbGVyLnRvcCAmJgorICAgICAgICAg IG0uaGFuZGxlci50b3AuYXR0cmlidXRlcyAmJgorICAgICAgICAgIG0uaGFuZGxlci50b3AuYXR0 cmlidXRlcy5wYXJ0aXRpb25fdHlwZSA9PSAnbGlzdCcgJiYKKyAgICAgICAgICBtIGluc3RhbmNl b2YgQmFja2JvbmUuTW9kZWwgJiYgbS5pc05ldygpKQorICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKGtleXMpIHsKKyAgICAgIHZhciBwYXJ0aXRpb25fbmFtZSA9IHRoaXMuZ2V0KCdwYXJ0 aXRpb25fbmFtZScpLAorICAgICAgICAgdmFsdWVzX2Zyb20gPSB0aGlzLmdldCgndmFsdWVzX2Zy b20nKSwKKyAgICAgICAgIHZhbHVlc190byA9IHRoaXMuZ2V0KCd2YWx1ZXNfdG8nKSwKKyAgICAg ICAgIHZhbHVlc19pbiA9IHRoaXMuZ2V0KCd2YWx1ZXNfaW4nKTsKKworICAgICAgLy8gSGF2ZSB0 byBjbGVhciBleGlzdGluZyB2YWxpZGF0aW9uIGJlZm9yZSBpbml0aWF0aW5nIGN1cnJlbnQgc3Rh dGUKKyAgICAgIC8vIHZhbGlkYXRpb24gb25seQorICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFy KCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHBhcnRpdGlvbl9uYW1lKSB8fCBfLmlzTnVs bChwYXJ0aXRpb25fbmFtZSkgfHwKKyAgICAgICBTdHJpbmcocGFydGl0aW9uX25hbWUpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICBtc2cgPSBnZXR0ZXh0KCdQYXJ0 aXRpb24gbmFtZSBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgdGhpcy5lcnJvck1vZGVsLnNl dCgncGFydGl0aW9uX25hbWUnLCBtc2cpOworICAgICAgIHJldHVybiBtc2c7CisgICAgICB9CisK KyAgICAgIGlmICh0aGlzLnRvcC5nZXQoJ3BhcnRpdGlvbl90eXBlJykgPT0gJ3JhbmdlJykgewor ICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZXNfZnJvbSkgfHwgXy5pc051bGwodmFsdWVz X2Zyb20pIHx8CisgICAgICAgICAgU3RyaW5nKHZhbHVlc19mcm9tKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnRm9yIHJhbmdlIHBh cnRpdGlvbiBGcm9tIGZpZWxkIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwuc2V0KCd2YWx1ZXNfZnJvbScsIG1zZyk7CisgICAgICAgICAgcmV0dXJuIG1zZzsK KyAgICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHZhbHVlc190bykgfHwgXy5pc051bGwo dmFsdWVzX3RvKSB8fAorICAgICAgICAgIFN0cmluZyh2YWx1ZXNfdG8pLnJlcGxhY2UoL15ccyt8 XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdGb3IgcmFuZ2Ug cGFydGl0aW9uIFRvIGZpZWxkIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwuc2V0KCd2YWx1ZXNfdG8nLCBtc2cpOworICAgICAgICAgIHJldHVybiBtc2c7Cisg ICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAodGhpcy50b3AuZ2V0KCdwYXJ0aXRpb25fdHlwZScp ID09ICdsaXN0JykgeworICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZXNfaW4pIHx8IF8u aXNOdWxsKHZhbHVlc19pbikgfHwKKyAgICAgICAgICBTdHJpbmcodmFsdWVzX2luKS5yZXBsYWNl KC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnRm9y IGxpc3QgcGFydGl0aW9uIEluIGZpZWxkIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCd2YWx1ZXNfaW4nLCBtc2cpOworICAgICAgICAgIHJldHVybiBt c2c7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9 KTsKKworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcwppbmRleCAwYjcwMWE0Li44ZmU4ZGVkIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMv anMvdGFibGUuanMKQEAgLTExLDcgKzExLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUn LCBbCiAgICAgICAgIG5vZGU6ICd0YWJsZScsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUYWJs ZXMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtdGFibGUnLAotICAgICAgICBjb2x1bW5zOiBbJ25h bWUnLCAncmVsb3duZXInLCAnZGVzY3JpcHRpb24nXSwKKyAgICAgICAgY29sdW1uczogWyduYW1l JywgJ3JlbG93bmVyJywgJ2lzX3BhcnRpdGlvbmVkJywgJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICAg IGhhc1N0YXRpc3RpY3M6IHRydWUsCiAgICAgICAgIHN0YXRzUHJldHRpZnlGaWVsZHM6IFsnU2l6 ZScsICdJbmRleGVzIHNpemUnLCAnVGFibGUgc2l6ZScsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnVG9hc3QgdGFibGUgc2l6ZScsICdUdXBsZSBsZW5ndGgnLApAQCAtMjEsNiArMjEs NyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKIAogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1sndGFibGUnXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1sndGFibGUnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRh YmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICd0YWJsZScsCiAgICAgICBs YWJlbDogZ2V0dGV4dCgnVGFibGUnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtdGFi bGUnLApAQCAtMzgsNyArMzksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAg ICAgIGhlaWdodDogJzk1JScsCiAgICAgICB3aWR0aDogJzg1JScsCiAgICAgICBJbml0OiBmdW5j dGlvbigpIHsKLSAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVz ICovCisgICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLwog ICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt Mjc3LDcgKzI3OCwxMCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAg ICBoYXN0b2FzdHRhYmxlOiB0cnVlLAogICAgICAgICAgIHRvYXN0X2F1dG92YWN1dW1fZW5hYmxl ZDogZmFsc2UsCiAgICAgICAgICAgYXV0b3ZhY3V1bV9lbmFibGVkOiBmYWxzZSwKLSAgICAgICAg ICBwcmltYXJ5X2tleTogW10KKyAgICAgICAgICBwcmltYXJ5X2tleTogW10sCisgICAgICAgICAg cGFydGl0aW9uczogW10sCisgICAgICAgICAgcGFydGl0aW9uX3R5cGU6ICdyYW5nZScsCisgICAg ICAgICAgaXNfcGFydGl0aW9uZWQ6IGZhbHNlCiAgICAgICAgIH0sCiAgICAgICAgIC8vIERlZmF1 bHQgdmFsdWVzIQogICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewpA QCAtMzIzLDEyICszMjcsMzcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAg ICAgICAgICByZXR1cm4gKCEoZCAmJiBkLmxhYmVsLm1hdGNoKC9wZ19nbG9iYWwvKSkpCiAgICAg ICAgICAgfQogICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbicsIHR5cGU6ICdn cm91cCcsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24nKSwKKyAgICAgICAgICBtb2RlOiBbJ2Vk aXQnLCAnY3JlYXRlJ10sIG1pbl92ZXJzaW9uOiAxMDAwMDAsCisgICAgICAgICAgdmlzaWJsZTog ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gQWx3YXlzIHNob3cgaW4gY2FzZSBvZiBjcmVh dGUgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSB8fCBtLmdldCgnaXNfcGFydGl0aW9u ZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lzX3BhcnRpdGlv bmVkJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uZWQgVGFibGU/JyksIGNlbGw6ICdzd2l0Y2gn LAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRl JywgJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2Rl X2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5m by5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZl cnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKQorICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAg IH0sewogICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVu dCcpLCB0eXBlOiAnbXVsdGlsaW5lJywKICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAn Y3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpblNjaGVtYScKICAgICAgICAgfSx7CiAgICAg ICAgICAgaWQ6ICdjb2xsX2luaGVyaXRzJywgbGFiZWw6IGdldHRleHQoJ0luaGVyaXRlZCBmcm9t IHRhYmxlKHMpJyksCiAgICAgICAgICAgdXJsOiAnZ2V0X2luaGVyaXRzJywgdHlwZTogJ2FycmF5 JywgZ3JvdXA6IGdldHRleHQoJ0NvbHVtbnMnKSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2NoZWNr SW5oZXJpdGFuY2UnLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2No ZWNrSW5oZXJpdGFuY2UnLCBkZXBzOiBbJ3R5cG5hbWUnLCAnaXNfcGFydGl0aW9uZWQnXSwKICAg ICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCiAgICAgICAgICAgc2VsZWN0MjogeyBt dWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwKICAgICAgICAgICBwbGFjZWhvbGRlcjog Z2V0dGV4dCgnU2VsZWN0IHRvIGluaGVyaXQgZnJvbS4uLicpfSwKQEAgLTQyNSw3ICs0NTQsMjYg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgbW9kZWw6IHBnQnJv d3Nlci5Ob2Rlc1snY29sdW1uJ10ubW9kZWwsCiAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2Vy Lk5vZGVzWydjb2x1bW4nXS5tb2RlbCwKICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0 J10sCi0gICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScsIGRlcHM6IFsndHlwbmFtZSddLAor ICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBJbiBjYXNl IG9mIHBhcnRpdGlvbmVkIHRhYmxlIHJlbW92ZSBpbmhlcml0ZWQgY29sdW1ucworICAgICAgICAg ICAgaWYgKG0uaXNOZXcoKSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAg ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBjb2xsID0g bS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRl cihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQo bW9kZWwuZ2V0KCdpbmhlcml0ZWRmcm9tJykpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9 KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg aWYodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkZXBzOiBbJ3R5 cG5hbWUnLCAnaXNfcGFydGl0aW9uZWQnXSwKICAgICAgICAgICBjYW5BZGQ6ICdjaGVja19ncmlk X2FkZF9jb25kaXRpb24nLAogICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1 ZSwKICAgICAgICAgICAvLyBGb3IgZWFjaCByb3cgZWRpdC9kZWxldGUgYnV0dG9uIGVuYWJsZS9k aXNhYmxlCkBAIC01MjgsMTAgKzU3NiwyMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScs IFsKICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydwcmltYXJ5X2tleSdd Lm1vZGVsLAogICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9u JywKICAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1ByaW1hcnkgS2V5JyksIG1vZGU6IFsn ZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRl OiB0cnVlLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRl cHM6Wydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNv bC1jb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFtZScsICdjb2x1bW5z J10sCi0gICAgICAgICAgICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICAgICAgY2FuQWRkOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcp KSB7CisgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdwcmltYXJ5X2tleScpOworICAgICAgICAgICAg ICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7Cisg ICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgewogICAg ICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgb25lIHByaW1hcnkga2V5CiAgICAgICAg ICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CkBAIC01NDYsOSArNjA2LDIx IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAgICAgICAgICBzdWJub2Rl OiBwZ0Jyb3dzZXIuTm9kZXNbJ2ZvcmVpZ25fa2V5J10ubW9kZWwsCiAgICAgICAgICAgICAgIGVk aXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAogICAgICAgICAgICAgICBncm91cDog Z2V0dGV4dCgnRm9yZWlnbiBLZXknKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAotICAgICAg ICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgICAgIGNh bkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3BhcnRpdGlvbmVkJ10sCiAg ICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAotICAgICAgICAg ICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy IGNvbGwgPSBtLmdldCgnZm9yZWlnbl9rZXknKTsKKyAgICAgICAgICAgICAgICAgICAgY29sbC5y ZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAg ICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9LAog ICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnXSwKICAgICAgICAgICAg ICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAvLyBVc2VyIGNhbiBv bmx5IGFkZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIHdpdGggbmFtZS4KQEAgLTU2 MSw3ICs2MzMsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgICAg ICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50cyddLm1vZGVsLAog ICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAg ICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0NoZWNrJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKLSAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAg ICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRp b25lZCddLAogICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywK ICAgICAgICAgICAgICAgY2FuQWRkOiB0cnVlLAogICAgICAgICAgICAgICBjb2x1bW5zIDogWydu YW1lJywgJ2NvbnNyYyddCkBAIC01NzEsMTAgKzY0MywyMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS50YWJsZScsIFsKICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWyd1bmlx dWVfY29uc3RyYWludCddLm1vZGVsLAogICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5 cGU6ICdjb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1VuaXF1ZScp LCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCi0gICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUs IGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRl OiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9uZWQnXSwKICAgICAgICAgICAgICAgY29udHJvbDog J3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCiAgICAgICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUn LCAnY29sdW1ucyddLAotICAgICAgICAgICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAg IGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFy dGl0aW9uZWQnKSkgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdldCgndW5pcXVlX2NvbnN0cmFpbnQn KTsKKyAgICAgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24o bW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICBjYW5BZGRSb3c6IGZ1 bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlmIHRoZXJl IGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gd2l0aCBuYW1lLgogICAgICAgICAgICAgICAgdmFyIGNv bHVtbnMgPSBtLmdldCgnY29sdW1ucycpOwpAQCAtNTg2LDEwICs2NzAsMjIgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICAgIHN1Ym5vZGU6IHBnQnJvd3Nlci5O b2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXS5tb2RlbCwKICAgICAgICAgICAgICAgZWRpdGFi bGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCiAgICAgICAgICAgICAgIGdyb3VwOiBnZXR0 ZXh0KCdFeGNsdWRlJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgICAgICAgICAg Y2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0 cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAg ICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgY29s dW1ucyA6IFsnbmFtZScsICdjb2x1bW5zJywgJ2NvbnN0cmFpbnQnXSwKLSAgICAgICAgICAgICAg Y2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgICAg ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xs ID0gbS5nZXQoJ2V4Y2x1ZGVfY29uc3RyYWludCcpOworICAgICAgICAgICAgICAgICAgICBjb2xs LnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAg ICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0s CiAgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgewogICAgICAgICAgICAgICAg Ly8gVXNlciBjYW4gb25seSBhZGQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiB3aXRo IG5hbWUuCiAgICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CkBA IC02MDAsNyArNjk2LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAg ICAgaWQ6ICd0eXBuYW1lJywgbGFiZWw6IGdldHRleHQoJ09mIHR5cGUnKSwgdHlwZTogJ3RleHQn LAogICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIG1vZGU6IFsncHJvcGVy dGllcycsICdjcmVhdGUnLCAnZWRpdCddLAogICAgICAgICAgIGRpc2FibGVkOiAnY2hlY2tPZlR5 cGUnLCB1cmw6ICdnZXRfb2Z0eXBlJywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksCi0gICAg ICAgICAgZGVwczogWydjb2xsX2luaGVyaXRzJ10sIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSwg Y2VsbCkgeworICAgICAgICAgIGRlcHM6IFsnY29sbF9pbmhlcml0cycsICdpc19wYXJ0aXRpb25l ZCddLCB0cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEsIGNlbGwpIHsKICAgICAgICAgICAgIHZhciBj b250cm9sID0gY2VsbCB8fCB0aGlzLAogICAgICAgICAgICAgICBtID0gY29udHJvbC5tb2RlbDsK ICAgICAgICAgICAgICAgbS5vZl90eXBlc190YWJsZXMgPSBkYXRhOwpAQCAtNzA0LDEwICs4MDAs MTgwIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAgICAgICAgZGlzYWJs ZWQ6ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQogICAgICAgICAgIH1d CiAgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uX3R5cGUnLCBsYWJlbDpnZXR0 ZXh0KCdQYXJ0aXRpb24gVHlwZScpLAorICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J3NlbGVjdDInLCBzZWxlY3QyOiB7YWxsb3dDbGVhcjogZmFsc2V9LAorICAgICAgICAgIGdyb3Vw OiAncGFydGl0aW9uJywgZGVwczogWydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgIG9wdGlv bnM6W3sKKyAgICAgICAgICAgIGxhYmVsOiAnUmFuZ2UnLCB2YWx1ZTogJ3JhbmdlJworICAgICAg ICAgIH0seworICAgICAgICAgICAgbGFiZWw6ICdMaXN0JywgdmFsdWU6ICdsaXN0JworICAgICAg ICAgIH1dLAorICAgICAgICAgIG1vZGU6WydjcmVhdGUnXSwKKyAgICAgICAgICB2aXNpYmxlOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykg JiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAh Xy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAg ICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisg ICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICghbS5pc05l dygpIHx8ICFtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3BhcnRpdGlvbl9rZXlzJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9u IEtleXMnKSwKKyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uUGFydGl0aW9uS2V5TW9kZWwsCisg ICAgICAgICAgc3Vibm9kZTogQmFja2Zvcm0uUGFydGl0aW9uS2V5TW9kZWwsCisgICAgICAgICAg ZWRpdGFibGU6IHRydWUsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3Bh cnRpdGlvbicsIG1vZGU6IFsnY3JlYXRlJ10sCisgICAgICAgICAgZGVwczogWydpc19wYXJ0aXRp b25lZCcsICdwYXJ0aXRpb25fdHlwZSddLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLCBjYW5E ZWxldGU6IHRydWUsCisgICAgICAgICAgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24nLAor ICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0uaXNOZXco KSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBjYW5B ZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2Nv bHVtbnMnKTsKKyAgICAgICAgICAgIHZhciBtYXhfcm93X2NvdW50ID0gMTAwMDsKKworICAgICAg ICAgICAgaWYgKG0uZ2V0KCdwYXJ0aXRpb25fdHlwZScpICYmIG0uZ2V0KCdwYXJ0aXRpb25fdHlw ZScpID09ICdsaXN0JykKKyAgICAgICAgICAgICAgbWF4X3Jvd19jb3VudCA9IDE7CisKKyAgICAg ICAgICAgIHJldHVybiAobS5nZXQoJ3BhcnRpdGlvbl9rZXlzJykgJiYKKyAgICAgICAgICAgICAg ICBtLmdldCgncGFydGl0aW9uX2tleXMnKS5sZW5ndGggPCBtYXhfcm93X2NvdW50ICYmCisgICAg ICAgICAgICAgICAgXy5zb21lKGNvbHVtbnMucGx1Y2soJ25hbWUnKSkKKyAgICAgICAgICAgICk7 CisgICAgICAgICAgfSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5u b2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVf aW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVy LnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmdldCgncGFydGl0aW9uX2tleXMnKSAmJiBt LmdldCgncGFydGl0aW9uX2tleXMnKS5tb2RlbHMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0u Z2V0KCdwYXJ0aXRpb25fa2V5cycpOworICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwu ZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uX3Nj aGVtZScsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24gU2NoZW1lJyksCisgICAgICAgICAgdHlw ZTogJ25vdGUnLCBncm91cDogJ3BhcnRpdGlvbicsIG1vZGU6IFsnZWRpdCddLAorICAgICAgICAg IHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0u bm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAg ICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgor ICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg aWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gbS5nZXQoJ3BhcnRp dGlvbl9zY2hlbWUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAncGFydGl0aW9ucycsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlvbnMnKSwK KyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uUGFydGl0aW9uc01vZGVsLAorICAgICAgICAgIHN1 Ym5vZGU6IEJhY2tmb3JtLlBhcnRpdGlvbnNNb2RlbCwKKyAgICAgICAgICBlZGl0YWJsZTogdHJ1 ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAncGFydGl0aW9uJywgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGRlcHM6IFsnaXNfcGFydGl0aW9uZWQn LCAncGFydGl0aW9uX3R5cGUnXSwKKyAgICAgICAgICBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRl OiB0cnVlLAorICAgICAgICAgIGN1c3RvbURlbGV0ZVRpdGxlOiBnZXR0ZXh0KCdEZXRhY2ggUGFy dGl0aW9uJyksCisgICAgICAgICAgY3VzdG9tRGVsZXRlTXNnOiBnZXR0ZXh0KCdBcmUgeW91IHN1 cmUgeW91IHdpc2ggdG8gZGV0YWNoIHRoaXMgcGFydGl0aW9uPycpLAorICAgICAgICAgIGNvbHVt bnM6Wydpc19hdHRhY2gnLCAncGFydGl0aW9uX25hbWUnLCAndmFsdWVzX2Zyb20nLCAndmFsdWVz X3RvJywgJ3ZhbHVlc19pbiddLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN1Yk5vZGVD b2xsZWN0aW9uQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgcm93OiBCYWNrZ3JpZC5QYXJ0 aXRpb25Sb3csCisgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhp czsKKyAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmlzTmV3KCkpIHsKKyAgICAgICAgICAg ICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAgICAgICAg ICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJyk7CisKKyAg ICAgICAgICAgICAgICAvLyBNYWtlIGFqYXggY2FsbCB0byBnZXQgdGhlIHRhYmxlcyB0byBiZSBh dHRhY2hlZAorICAgICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAgICB1cmw6 IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUsIFsK KyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICdnZXRfYXR0YWNoX3RhYmxlcycsIHRoaXMu ZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIG5v ZGVfaW5mbworICAgICAgICAgICAgICAgICAgICAgIF0pLAorCisgICAgICAgICAgICAgICAgICB0 eXBlOiAnR0VUJywKKyAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgICBpZiAo cmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kZWwudGFi bGVfb3B0aW9ucyA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAor ICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIGZldGNoaW5nIHRhYmxlcyB0byBiZSBhdHRh Y2hlZCcsIHJlcy5kYXRhLnJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZXJybXNnID0gJC5w YXJzZUpTT04oZS5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5h bGVydCgnRXJyb3IgZmV0Y2hpbmcgdGFibGVzIHRvIGJlIGF0dGFjaGVkLicsIGVycm1zZy5lcnJv cm1zZyk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgKSwKKyAgICAg ICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFy dGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRl ZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5l ZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2lu Zm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkgJiYgbS5nZXQo J3BhcnRpdGlvbnMnKSAmJiBtLmdldCgncGFydGl0aW9ucycpLm1vZGVscy5sZW5ndGggPiAwKSB7 CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHZhciBjb2xsID0gbS5nZXQoJ3BhcnRpdGlvbnMnKTsKKyAgICAgICAgICAgICAgICBjb2xsLnJl bW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICB9LCAxMCk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Bh cnRpdGlvbl9ub3RlJywgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbicpLAorICAgICAgICAgIHR5 cGU6ICdub3RlJywgZ3JvdXA6ICdwYXJ0aXRpb24nLAorICAgICAgICAgIHRleHQ6IGdldHRleHQo J0Fib3ZlIGNvbnRyb2wgd2lsbCBiZSB1c2VkIHRvIENyZWF0ZS9BdHRhY2gvRGV0YWNoIHBhcnRp dGlvbnMuPGJyPicgKworICAgICAgICAgICAgJzx1bD48bGk+Q3JlYXRlIE1vZGU6IFVzZXIgd2ls bCBiZSBhYmxlIHRvIGNyZWF0ZSBOIG51bWJlciBvZiBwYXJ0aXRpb25zLiBNb2RlIHN3aXRjaCBj b250cm9sIGlzIGRpc2FibGVkIGluIHRoaXMgc2NlbmFyaW8uPC9saT4nICsKKyAgICAgICAgICAg ICc8bGk+RWRpdCBNb2RlOiBVc2VyIHdpbGwgYmUgYWJsZSB0byBjcmVhdGUvYXR0YWNoL2RldGFj aCBOIG51bWJlciBvZiBwYXJ0aXRpb25zLicgKworICAgICAgICAgICAgJ0luIGF0dGFjaCBtb2Rl IHRoZXJlIHdpbGwgYmUgbGlzdCBvZiBzdWl0YWJsZSB0YWJsZXMgdG8gYmUgYXR0YWNoZWQuPC9s aT48L3VsPicpLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg IGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVf aW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZv LnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVy c2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKICAgICAgICAgICAvLyBI ZXJlIC0gd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRyb2wgZm9yIHN0b3JhZ2UgcGFyYW1ldGVycwog ICAgICAgICAgIC8vIChhdXRvIHZhY3V1bSkuCiAgICAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNv bnRyb2w6ICd0YWInLCBncm91cDogZ2V0dGV4dCgnUGFyYW1ldGVyJyksCi0gICAgICAgICAgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwgZGVwczogWydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgIHNjaGVtYTogQmFja2Zvcm0u VmFjdXVtU2V0dGluZ3NTY2hlbWEKICAgICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICdyZWxhY2xf c3RyJywgbGFiZWw6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwgZGlzYWJsZWQ6ICdpblNjaGVtYScs CkBAIC03MzQsNyArMTAwMCw5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAg ICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQsCiAgICAgICAgICAgICAgIG5hbWUgPSB0aGlzLmdl dCgnbmFtZScpLAogICAgICAgICAgICAgICBzY2hlbWEgPSB0aGlzLmdldCgnc2NoZW1hJyksCi0g ICAgICAgICAgICAgIHJlbG93bmVyID0gdGhpcy5nZXQoJ3JlbG93bmVyJyk7CisgICAgICAgICAg ICAgIHJlbG93bmVyID0gdGhpcy5nZXQoJ3JlbG93bmVyJyksCisgICAgICAgICAgICAgIGlzX3Bh cnRpdGlvbmVkID0gdGhpcy5nZXQoJ2lzX3BhcnRpdGlvbmVkJyksCisgICAgICAgICAgICAgIHBh cnRpdGlvbl9rZXlzID0gdGhpcy5nZXQoJ3BhcnRpdGlvbl9rZXlzJyk7CiAKICAgICAgICAgICAv LyBJZiBub3RoaW5nIHRvIHZhbGlkYXRlIG9yIFZhY3V1bVNldHRpbmcga2V5cyB0aGVuCiAgICAg ICAgICAgLy8gcmV0dXJuIGZyb20gaGVyZQpAQCAtNzYyLDYgKzEwMzAsMTIgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBv d25lciBjYW5ub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0 KCdyZWxvd25lcicsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0g ZWxzZSBpZiAoaXNfcGFydGl0aW9uZWQgJiYgdGhpcy5pc05ldygpICYmCisgICAgICAgICAgICAh Xy5pc051bGwocGFydGl0aW9uX2tleXMpICYmIHBhcnRpdGlvbl9rZXlzLmxlbmd0aCA8PSAwKQor ICAgICAgICAgIHsKKyAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzcGVjaWZ5IGF0 IGxlYXN0IG9uZSBrZXkgZm9yIHBhcnRpdGlvbmVkIHRhYmxlLicpOworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnNldCgncGFydGl0aW9uX2tleXMnLCBtc2cpOworICAgICAgICAgICAgcmV0 dXJuIG1zZzsKICAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0s CkBAIC03OTAsNyArMTA2NCwxNSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAg ICAgICAgfSwKICAgICAgICAgLy8gT2Z0eXBlIGlzIGRlZmluZWQ/CiAgICAgICAgIGNoZWNrSW5o ZXJpdGFuY2U6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgIC8vIGNvbGxfaW5oZXJpdHMgfHwgdHlw bmFtZQorICAgICAgICAgIC8vIERpc2FibGVkIGlmIGl0IGlzIHBhcnRpdGlvbmVkIHRhYmxlCisg ICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICBzZXRU aW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgIG0uc2V0KCdjb2xsX2luaGVyaXRz JywgW10pOworICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgICAgfQorCisgICAgICAgICAgLy8gY29sbF9pbmhlcml0cyB8fCB0eXBuYW1lCiAgICAg ICAgICAgaWYoIW0uaW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSAmJgogICAgICAgICAgICAgICAo IF8uaXNVbmRlZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgfHwKICAgICAgICAgICAgICAgICBfLmlz TnVsbChtLmdldCgndHlwbmFtZScpKSB8fApAQCAtODM0LDcgKzExMTYsMTUgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgIH0sCiAgICAgICAgIC8vIFdlIHdpbGwgZGlz YWJsZSBpdCBpZiBJbmhlcml0YW5jZSBpcyBkZWZpbmVkCiAgICAgICAgIGNoZWNrT2ZUeXBlOiBm dW5jdGlvbihtKSB7Ci0gICAgICAgIC8vY29sbF9pbmhlcml0cyB8fCB0eXBuYW1lCisgICAgICAg ICAgLy8gRGlzYWJsZWQgaWYgaXQgaXMgcGFydGl0aW9uZWQgdGFibGUKKyAgICAgICAgICBpZiAo bS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICAgbS5zZXQoJ3R5cG5hbWUnLCB1bmRlZmluZWQpOworICAg ICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQor CisgICAgICAgICAgLy9jb2xsX2luaGVyaXRzIHx8IHR5cG5hbWUKICAgICAgICAgICBpZighbS5p blNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYKICAgICAgICAgICAgICAg KF8uaXNVbmRlZmluZWQobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSkgfHwKICAgICAgICAgICAgICAg IF8uaXNOdWxsKG0uZ2V0KCdjb2xsX2luaGVyaXRzJykpIHx8CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9hdHRhY2guc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvYXR0YWNoLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjYxZDljCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvYXR0YWNoLnNxbApAQCAtMCwwICsx LDIgQEAKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEucGFyZW50X3NjaGVtYSwgZGF0 YS5wYXJ0aXRpb25lZF90YWJsZV9uYW1lKX19IEFUVEFDSCBQQVJUSVRJT04ge3tjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIHt7IGRhdGEucGFydGl0aW9uX3ZhbHVl IH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3Bs dXMvYmFja2VuZF9zdXBwb3J0LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3Nx bC8xMF9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNWZhMWQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv cGFydGl0aW9uL3NxbC8xMF9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKQEAgLTAsMCArMSw5IEBA Cit7Iz09PT09PT09PT09PT1DaGVja3MgaWYgaXQgaXMgcGFydGl0aW9uZWQgdGFibGU9PT09PT09 PSN9Cit7JSBpZiB0aWQgJX0KK1NFTEVDVAorICAgIENBU0UgV0hFTiBjLnJlbGtpbmQgPSAncCcg VEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFzIHB0YWJsZQorRlJPTQorICAgIHBnX2NsYXNzIGMK K1dIRVJFCisgICAgYy5vaWQgPSB7eyB0aWQgfX06Om9pZAoreyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL2NyZWF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9jcmVhdGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZTk0MDQKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9jcmVhdGUuc3Fs CkBAIC0wLDAgKzEsMzAgQEAKK3slIGltcG9ydCAndGFibGUvc3FsL21hY3Jvcy9jb25zdHJhaW50 cy5tYWNybycgYXMgQ09OU1RSQUlOVFMgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSN9Cit7Iz09PT09PSBNQUlOIFRBQkxFIFRFTVBMQVRFIFNUQVJUUyBI RVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMjIyBDUkVBVEUgVEFCTEUgU1RBVEVNRU5UIEZPUiBwYXJ0aXRpb25zICMjI30KK0NS RUFURSB7JSBpZiBkYXRhLnJlbHBlcnNpc3RlbmNlICV9VU5MT0dHRUQgeyUgZW5kaWYgJX1UQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19eyUgaWYgZGF0YS5yZWxp c3BhcnRpdGlvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLnJlbGlzcGFydGl0aW9uICV9IFBBUlRJVElP TiBPRiB7e2Nvbm58cXRJZGVudChkYXRhLnBhcmVudF9zY2hlbWEsIGRhdGEucGFydGl0aW9uZWRf dGFibGVfbmFtZSl9fXslIGVuZGlmICV9CisKK3sjIE1hY3JvIHRvIHJlbmRlciBmb3IgY29uc3Ry YWludHMgI30KK3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1 ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwIG9y IGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9jb25zdHJh aW50fGxlbmd0aCA+IDAgJX0KKyggeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEucHJpbWFyeV9rZXl8 bGVuZ3RoID4gMCAlfXt7Q09OU1RSQUlOVFMuUFJJTUFSWV9LRVkoY29ubiwgZGF0YS5wcmltYXJ5 X2tleVswXSl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGgg PiAwICV9eyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7 e0NPTlNUUkFJTlRTLlVOSVFVRShjb25uLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19eyUgZW5k aWYgJX17JSBpZiBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLnByaW1h cnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwICV9 LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkZPUkVJR05fS0VZKGNvbm4sIGRhdGEuZm9yZWln bl9rZXkpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAw ICV9eyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX0seyUgZW5k aWYgJX0KK3t7Q09OU1RSQUlOVFMuQ0hFQ0soY29ubiwgZGF0YS5jaGVja19jb25zdHJhaW50KX19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9eyUg aWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8 bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS5jaGVja19j b25zdHJhaW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuRVhDTFVE RShjb25uLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fXslIGVuZGlmICV9Cit7JSBpZiBkYXRh LnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGgg PiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFp bnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9CisK KykKK3slIGVuZGlmICV9CisgICAge3sgZGF0YS5wYXJ0aXRpb25fdmFsdWUgfX17JSBpZiBkYXRh LmlzX3BhcnRpdGlvbmVkIGlzIGRlZmluZWQgYW5kIGRhdGEuaXNfcGFydGl0aW9uZWQgJX0KKwor ICAgIFBBUlRJVElPTiBCWSB7eyBkYXRhLnBhcnRpdGlvbl9zY2hlbWUgfX17JSBlbmRpZiAlfTsK KworCit7IyMjIEFsdGVyIFNRTCBmb3IgT3duZXIgIyMjfQoreyUgaWYgZGF0YS5yZWxvd25lciAl fQorCitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19 CisgICAgT1dORVIgdG8ge3tjb25ufHF0SWRlbnQoZGF0YS5yZWxvd25lcil9fTsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1 cy9kZXRhY2guc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMv ZGV0YWNoLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjQxM2RiCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3Bs dXMvZGV0YWNoLnNxbApAQCAtMCwwICsxIEBACitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChk YXRhLnBhcmVudF9zY2hlbWEsIGRhdGEucGFydGl0aW9uZWRfdGFibGVfbmFtZSl9fSBERVRBQ0gg UEFSVElUSU9OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX07CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9nZXRfYXR0 YWNoX3RhYmxlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1 cy9nZXRfYXR0YWNoX3RhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNDc2ZGMzZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0 aW9uL3NxbC8xMF9wbHVzL2dldF9hdHRhY2hfdGFibGVzLnNxbApAQCAtMCwwICsxLDIzIEBACitT RUxFQ1Qgb2lkLCBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChyZWxuYW1l KSBBUyB0YWJsZV9uYW1lIEZST00KKyhTRUxFQ1QKKwlyLm9pZCwgci5yZWxuYW1lLCBuLm5zcG5h bWUsIGFycmF5X2FnZyhhLmF0dG5hbWUpIGF0dG5hbWVzLCBhcnJheV9hZ2coYS5hdHR0eXBpZCkg YXR0dHlwZXMKK0ZST00KKwkoU0VMRUNUIG9pZCwgcmVsbmFtZSwgcmVsbmFtZXNwYWNlIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcworCSAgV0hFUkUgcmVsa2luZCBpbiAoJ3InLCAncCcpIEFORCBO T1QgcmVsaXNwYXJ0aXRpb24pIHIKKyAgICBKT0lOIChTRUxFQ1Qgb2lkIEFTIG5zcG9pZCwgbnNw bmFtZSBGUk9NCisgICAgICAgICAgcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFt ZSBOT1QgTElLRSBFJ3BnXF8lJykgbgorICAgICAgICAgIE9OIChyLnJlbG5hbWVzcGFjZSA9IG4u bnNwb2lkKQorICAgIEpPSU4gKFNFTEVDVCBhdHRyZWxpZCwgYXR0bmFtZSwgYXR0dHlwaWQgRlJP TQorICAgICAgICAgIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgT1JE RVIgQlkgYXR0cmVsaWQsIGF0dG51bSkgYQorICAgICAgICAgIE9OIChyLm9pZCA9IGEuYXR0cmVs aWQpCitHUk9VUCBCWSByLm9pZCwgci5yZWxuYW1lLCByLnJlbG5hbWVzcGFjZSwgbi5uc3BuYW1l KSBhbGxfdGFibGVzCitKT0lOCisoU0VMRUNUCisJYXR0cmVsaWQsIGFycmF5X2FnZyhhdHRuYW1l KSBhdHRuYW1lcywgYXJyYXlfYWdnKGF0dHR5cGlkKSBhdHR0eXBlcworRlJPTQorCShTRUxFQ1Qg KiBGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlCisJICBXSEVSRSBhdHRyZWxpZCA9IHt7IHRp ZCB9fSBBTkQgYXR0bnVtID4gMAorCSAgT1JERVIgQlkgYXR0cmVsaWQsIGF0dG51bSkgYXR0cmli dXRlcworR1JPVVAgQlkgYXR0cmVsaWQpIGN1cnJlbnRfdGFibGUgT04gY3VycmVudF90YWJsZS5h dHRyZWxpZCAhPSBhbGxfdGFibGVzLm9pZAorICBBTkQgY3VycmVudF90YWJsZS5hdHRuYW1lcyA9 IGFsbF90YWJsZXMuYXR0bmFtZXMKKyAgQU5EIGN1cnJlbnRfdGFibGUuYXR0dHlwZXMgPSBhbGxf dGFibGVzLmF0dHR5cGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvbm9kZXMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvbm9kZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkODI4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwKQEAgLTAs MCArMSwxNSBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsCisgICAgKFNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0 Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorICAgIChTRUxFQ1QgY291bnQo KikgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdpc2ludGVybmFs ID0gRkFMU0UgQU5EIHRnZW5hYmxlZCA9ICdPJykgQVMgaGFzX2VuYWJsZV90cmlnZ2VycywKKyAg ICBwZ19nZXRfZXhwcihyZWwucmVscGFydGJvdW5kLCByZWwub2lkKSBBUyBwYXJ0aXRpb25fdmFs dWUsCisgICAgcmVsLnJlbG5hbWVzcGFjZSBBUyBzY2hlbWFfaWQsCisgICAgbnNwLm5zcG5hbWUg QVMgc2NoZW1hX25hbWUsCisgICAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHRy dWUgRUxTRSBmYWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICAgIChDQVNFIFdIRU4gcmVs LnJlbGtpbmQgPSAncCcgVEhFTiBwZ19nZXRfcGFydGtleWRlZihyZWwub2lkOjpvaWQpIEVMU0Ug JycgRU5EKSBBUyBwYXJ0aXRpb25fc2NoZW1lCitGUk9NCisgICAgKFNFTEVDVCAqIEZST00gcGdf aW5oZXJpdHMgV0hFUkUgaW5ocGFyZW50ID0ge3sgdGlkIH19OjpvaWQpIGluaAorICAgIExFRlQg Sk9JTiBwZ19jbGFzcyByZWwgT04gaW5oLmluaHJlbGlkID0gcmVsLm9pZAorICAgIExFRlQgSk9J TiBwZ19uYW1lc3BhY2UgbnNwIE9OIHJlbC5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkCisgICAgV0hF UkUgcmVsLnJlbGlzcGFydGl0aW9uCisgICAgeyUgaWYgcHRpZCAlfSBBTkQgcmVsLm9pZCA9IHt7 IHB0aWQgfX06Ok9JRCB7JSBlbmRpZiAlfQorICAgIE9SREVSIEJZIHJlbC5yZWxuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvcHJvcGVy dGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9wcm9w ZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY0NDc2Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3Bs dXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw4MiBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5y ZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFT IHJlbGFjbF9zdHIsCisgIChDQVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBz cGMuc3BjbmFtZSBFTFNFCisgICAgKFNFTEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2Ug ZHRiCisgICAgSk9JTiBwZ190YWJsZXNwYWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9p ZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1l LAorICAoc2VsZWN0IG5zcG5hbWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lk fX06Om9pZCApIGFzIHBhcmVudF9zY2hlbWEsCisgIG5zcC5uc3BuYW1lIGFzIHNjaGVtYSwKKyAg cGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxoYXNvaWRz LCByZWwucmVsaXNwYXJ0aXRpb24sCisgIHJlbC5yZWxoYXNzdWJjbGFzcywgcmVsLnJlbHR1cGxl cywgZGVzLmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtleSwKKwlFWElTVFMoc2Vs ZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBnX3Byb2MgcHQgT04gcHQub2lkPXRnZm9p ZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dlcicKKwkJCUpPSU4gcGdfcHJvYyBwYyBPTiBwYy5w cm9uYW1lc3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1lPSdzbG9ueXZlcnNpb24n CisJCQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlzcmVwbCwKKwkoU0VMRUNUIGNvdW50KCop IEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5vaWQgQU5EIHRnaXNpbnRlcm5hbCA9 IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisJKFNFTEVDVCBBUlJBWShTRUxFQ1QgQ0FTRSBXSEVO IChuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnKSBUSEVOCisgICAgICAgICAgICBxdW90ZV9pZGVu dChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpCisgICAgICAgICAgICBFTFNF IHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRlZF90YWJsZXMKKyAgICBGUk9N IHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVu dAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBX SEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBCWSBpbmhzZXFubykpIEFTIGNvbGxfaW5o ZXJpdHMsCisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJPTSBwZ19pbmhlcml0cyBpCisgICAgICBK T0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgICAgSk9JTiBwZ19uYW1l c3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorCQlXSEVSRSBpLmluaHJlbGlkID0gcmVs Lm9pZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJKENBU0UgV0hFTiByZWwucmVscGVyc2lz dGVuY2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2Zp bGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCShDQVNFIFdIRU4gKHN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9l bmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQorCSAgVEhFTiB0cnVlIEVMU0UgZmFsc2Ug RU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhy ZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFsw LTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9z Y2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2Fs ZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFsw LTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nv c3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJKENB U0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAgJ3RydWUnKQorCSAgVEhF TiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTld KiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2Fu YWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3Ro cmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKikn KSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhh cnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1 dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf ZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgdG9hc3RfYXV0 b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRz dC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTld KiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVf bWF4X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJ c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2Zy ZWV6ZV90YWJsZV9hZ2UsCisJYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEFT IHRhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRp b25zLCAnLCcpIEFTIHRvYXN0X3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJcmVsLnJlbG9w dGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJlbG9wdGlvbnMgQVMgdG9hc3RfcmVsb3B0aW9ucywg cmVsLnJlbG9mdHlwZSwgdHlwLnR5cG5hbWUsCisJKENBU0UgV0hFTiByZWwucmVsdG9hc3RyZWxp ZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRhYmxlLAorICAgIC0t IEFkZGVkIGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAt OV0qKScpKTo6Ym9vbGVhbiAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVt X2N1c3RvbSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxv cHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSk6OmJv b2xlYW4gIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVO RCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKKworCShTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8 ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9cmVs Lm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywKKwkoQ0FTRSBXSEVOIHJlbC5v aWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhFTiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBB UyBpc19zeXNfdGFibGUsCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJsZQorCShDQVNFIFdI RU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBpc19wYXJ0 aXRpb25lZCwKKwkoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0gJ3AnIFRIRU4gcGdfZ2V0X3BhcnRr ZXlkZWYocmVsLm9pZDo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9uX3NjaGVtZSwKKwl7 JSBpZiBwdGlkICV9CisJICAoQ0FTRSBXSEVOIHJlbC5yZWxpc3BhcnRpdGlvbiBUSEVOIHBnX2dl dF9leHByKHJlbC5yZWxwYXJ0Ym91bmQsIHt7IHB0aWQgfX06Om9pZCkgRUxTRSAnJyBFTkQpIEFT IHBhcnRpdGlvbl92YWx1ZSwKKwkgIChTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzIFdIRVJF IG9pZCA9IHt7IHRpZCB9fTo6b2lkKSBBUyBwYXJ0aXRpb25lZF90YWJsZV9uYW1lCisJeyUgZWxz ZSAlfQorCSAgcGdfZ2V0X2V4cHIocmVsLnJlbHBhcnRib3VuZCwgcmVsLm9pZCkgQVMgcGFydGl0 aW9uX3ZhbHVlCisJeyUgZW5kaWYgJX0KKworRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRF UiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAg TEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lk IEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNz KQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJl bC5vaWQgQU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0 IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAg T04gcmVsLnJlbG9mdHlwZT10eXAub2lkCisgIExFRlQgSk9JTiBwZ19pbmhlcml0cyBpbmggT04g aW5oLmluaHJlbGlkID0gcmVsLm9pZAorICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBy ZWwucmVsbmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUgcmVsLnJlbGlzcGFydGl0aW9uIEFORCBp bmguaW5ocGFyZW50ID0ge3sgdGlkIH19OjpvaWQKK3slIGlmIHB0aWQgJX0gIEFORCByZWwub2lk ID0ge3sgcHRpZCB9fTo6b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwucmVsbmFtZTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvYWNsLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvYWNsLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRmOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9hY2wuc3FsCkBAIC0wLDAgKzEsNDYg QEAKK3sjIyMgU1FMIHRvIGZldGNoIHByaXZpbGVnZXMgZm9yIHRhYmxlc3BhY2UgIyMjfQorU0VM RUNUICdyZWxhY2wnIGFzIGRlZnR5cGUsIENPQUxFU0NFKGd0LnJvbG5hbWUsICdQVUJMSUMnKSBn cmFudGVlLCBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUp IGFzIHByaXZpbGVnZXMsIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJP TQorICAoU0VMRUNUCisgICAgZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRhYmxlLAor ICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorCQlXSEVOICdDT05ORUNUJyBUSEVOICdjJworCQlX SEVOICdDUkVBVEUnIFRIRU4gJ0MnCisJCVdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKwkJV0hFTiAn RVhFQ1VURScgVEhFTiAnWCcKKwkJV0hFTiAnSU5TRVJUJyBUSEVOICdhJworCQlXSEVOICdSRUZF UkVOQ0VTJyBUSEVOICd4JworCQlXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisJCVdIRU4gJ1RFTVBP UkFSWScgVEhFTiAnVCcKKwkJV0hFTiAnVFJJR0dFUicgVEhFTiAndCcKKwkJV0hFTiAnVFJVTkNB VEUnIFRIRU4gJ0QnCisJCVdIRU4gJ1VQREFURScgVEhFTiAndycKKwkJV0hFTiAnVVNBR0UnIFRI RU4gJ1UnCisJCUVMU0UgJ1VOS05PV04nCisJRU5EIEFTIHByaXZpbGVnZV90eXBlCisgIEZST00K KyAgICAoU0VMRUNUIHJlbC5yZWxhY2wKKyAgICAgICAgRlJPTSBwZ19jbGFzcyByZWwKKyAgICAg ICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1yZWwucmVs dGFibGVzcGFjZQorICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBP TiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3AnCisgICAgICAgICAgTEVG VCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQK KyAgICAgICAgICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lk CisgICAgICAgIFdIRVJFIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0JywncCcpIEFORCByZWwu cmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lkCisgICAgICAgICAgICBBTkQgcmVsLm9pZCA9 IHt7IHRpZCB9fTo6b2lkCisgICAgKSBhY2wsCisgICAgKFNFTEVDVCAoZCkuZ3JhbnRlZSBBUyBn cmFudGVlLCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLCAoZCkuaXNfZ3JhbnRhYmxlCisgICAgICAg IEFTIGlzX2dyYW50YWJsZSwgKGQpLnByaXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlIEZS T00gKFNFTEVDVAorICAgICAgICBhY2xleHBsb2RlKHJlbC5yZWxhY2wpIGFzIGQKKyAgICAgICAg RlJPTSBwZ19jbGFzcyByZWwKKyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFj ZSBzcGMgb24gc3BjLm9pZD1yZWwucmVsdGFibGVzcGFjZQorICAgICAgICAgIExFRlQgT1VURVIg Sk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNv bnR5cGU9J3AnCisgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qu b2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgICAgICAgICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAg T04gcmVsLnJlbG9mdHlwZT10eXAub2lkCisgICAgICAgIFdIRVJFIHJlbC5yZWxraW5kIElOICgn cicsJ3MnLCd0JywncCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lkCisg ICAgICAgICAgICBBTkQgcmVsLm9pZCA9IHt7IHRpZCB9fTo6b2lkCisgICAgICAgICkgYSkgZAor ICAgICkgZAorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50b3Ig PSBnLm9pZCkKKyAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRl ZSA9IGd0Lm9pZCkKK0dST1VQIEJZIGcucm9sbmFtZSwgZ3Qucm9sbmFtZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfaW5oZXJpdHMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfaW5oZXJpdHMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyOGYyOTgKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF9pbmhlcml0cy5z cWwKQEAgLTAsMCArMSwxNyBAQAoreyUgaW1wb3J0ICd0YWJsZS9zcWwvbWFjcm9zL2RiX2NhdGFs b2dzLm1hY3JvJyBhcyBDQVRBTE9HICV9CitTRUxFQ1QgYy5vaWQsIGMucmVsbmFtZSAsIG5zcG5h bWUsCitDQVNFIFdIRU4gbnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJyBUSEVOCisgcXVvdGVfaWRl bnQobnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKQorRUxTRSBxdW90ZV9pZGVu dChjLnJlbG5hbWUpCitFTkQgQVMgaW5oZXJpdHMKK0ZST00gcGdfY2xhc3MgYworSk9JTiBwZ19u YW1lc3BhY2UgbgorT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dIRVJFIHJlbGtpbmQ9J3InIEFO RCBOT1QgcmVsaXNwYXJ0aXRpb24KK3slIGlmIG5vdCBzaG93X3N5c3RlbV9vYmplY3RzICV9Cit7 eyBDQVRBTE9HLlZBTElEX0NBVEFMT0dTKHNlcnZlcl90eXBlKSB9fQoreyUgZW5kaWYgJX0KK3sl IGlmIHRpZCAlfQorQU5EIGMub2lkICE9IHRpZAoreyUgZW5kaWYgJX0KK09SREVSIEJZIHJlbG5h bWVzcGFjZSwgYy5yZWxuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfb2lkLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYzMDY5OAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCAr MSw1IEBACitTRUxFQ1QgcmVsLm9pZCBhcyB0aWQKK0ZST00gcGdfY2xhc3MgcmVsCitXSEVSRSBy ZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcsJ3AnKQorQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7 eyBzY2lkIH19OjpvaWQKK0FORCByZWwucmVsbmFtZSA9IHt7ZGF0YS5uYW1lfHF0TGl0ZXJhbH19 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfdGFibGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfdGFibGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjY5NTJjOGQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF90YWJsZS5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxF Q1QKKyAgICByZWwucmVsbmFtZSBBUyBuYW1lCitGUk9NCisgICAgcGdfY2xhc3MgcmVsCitXSEVS RQorICAgIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0JywncCcpCisgICAgQU5EIHJlbC5yZWxu YW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAgICBBTkQgcmVsLm9pZCA9IHt7IHRpZCB9fTo6 b2lkOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy90YWJsZS9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZmJmOWM0MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv dGFibGUvc3FsLzEwX3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUIHJlbC5v aWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsCisgICAgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3Ry aWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMg dHJpZ2dlcmNvdW50LAorICAgIChTRUxFQ1QgY291bnQoKikgRlJPTSBwZ190cmlnZ2VyIFdIRVJF IHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdpc2ludGVybmFsID0gRkFMU0UgQU5EIHRnZW5hYmxlZCA9 ICdPJykgQVMgaGFzX2VuYWJsZV90cmlnZ2VycywKKyAgICAoQ0FTRSBXSEVOIHJlbC5yZWxraW5k ID0gJ3AnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgaXNfcGFydGl0aW9uZWQKK0ZST00g cGdfY2xhc3MgcmVsCisgICAgV0hFUkUgcmVsLnJlbGtpbmQgSU4gKCdyJywncycsJ3QnLCdwJykg QU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAgICBBTkQgTk9UIHJlbC5y ZWxpc3BhcnRpdGlvbgorICAgIHslIGlmIHRpZCAlfSBBTkQgcmVsLm9pZCA9IHt7dGlkfX06Ok9J RCB7JSBlbmRpZiAlfQorICAgIE9SREVSIEJZIHJlbC5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1ODlkZgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAs MCArMSw3MyBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0 YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdI RU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNF TEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNw YWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7 eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJP TSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHNjaGVtYSwKKyAg cGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxoYXNvaWRz LCByZWwucmVsa2luZCwKKyAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICByZWwucmVsaGFzc3ViY2xhc3Ms IHJlbC5yZWx0dXBsZXMsIGRlcy5kZXNjcmlwdGlvbiwgY29uLmNvbm5hbWUsIGNvbi5jb25rZXks CisJRVhJU1RTKHNlbGVjdCAxIEZST00gcGdfdHJpZ2dlcgorCQkJSk9JTiBwZ19wcm9jIHB0IE9O IHB0Lm9pZD10Z2ZvaWQgQU5EIHB0LnByb25hbWU9J2xvZ3RyaWdnZXInCisJCQlKT0lOIHBnX3By b2MgcGMgT04gcGMucHJvbmFtZXNwYWNlPXB0LnByb25hbWVzcGFjZSBBTkQgcGMucHJvbmFtZT0n c2xvbnl2ZXJzaW9uJworCQkJV0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBpc3JlcGwsCisJKFNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0 Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorCShTRUxFQ1QgQVJSQVkoU0VM RUNUIENBU0UgV0hFTiAobnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJykgVEhFTgorICAgICAgICAg ICAgcXVvdGVfaWRlbnQobnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKQorICAg ICAgICAgICAgRUxTRSBxdW90ZV9pZGVudChjLnJlbG5hbWUpIEVORCBBUyBpbmhlcml0ZWRfdGFi bGVzCisgICAgRlJPTSBwZ19pbmhlcml0cyBpCisgICAgSk9JTiBwZ19jbGFzcyBjIE9OIGMub2lk ID0gaS5pbmhwYXJlbnQKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMucmVsbmFt ZXNwYWNlCisgICAgV0hFUkUgaS5pbmhyZWxpZCA9IHJlbC5vaWQgT1JERVIgQlkgaW5oc2Vxbm8p KSBBUyBjb2xsX2luaGVyaXRzLAorICAoU0VMRUNUIGNvdW50KCopCisJCUZST00gcGdfaW5oZXJp dHMgaQorICAgICAgSk9JTiBwZ19jbGFzcyBjIE9OIGMub2lkID0gaS5pbmhwYXJlbnQKKyAgICAg IEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKwkJV0hFUkUgaS5p bmhyZWxpZCA9IHJlbC5vaWQpIEFTIGluaGVyaXRlZF90YWJsZXNfY250LAorCShDQVNFIFdIRU4g cmVsLnJlbHBlcnNpc3RlbmNlID0gJ3UnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgcmVs cGVyc2lzdGVuY2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywg JywnKSBGUk9NICdmaWxsZmFjdG9yPShbMC05XSopJykgQVMgZmlsbGZhY3RvciwKKwkoQ0FTRSBX SEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSA9ICd0cnVlJykKKwkgIFRIRU4gdHJ1 ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9lbmFibGVkLAorCXN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1f dGhyZXNob2xkPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgYXV0b3ZhY3V1 bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0q KScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2Nh bGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxl X2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyBhdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0oWzAtOV0q KScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9taW5f YWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKwlzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJl ZXplX21heF9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfdGFi bGVfYWdlLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpID0gICd0 cnVlJykKKwkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bV9l bmFibGVkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykg RlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3RfYXV0 b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0 LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yPShb MC05XSpbLl1bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9y LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAn YXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1 dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVs b3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05 XSpbLl1bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvciwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVt X3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0oWzAtOV0qKScp IEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKwlz dWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcs JykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgdG9hc3Rf YXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorCWFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0 aW9ucywgJywnKSBBUyB0YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAorCWFycmF5X3RvX3N0cmlu Zyh0c3QucmVsb3B0aW9ucywgJywnKSBBUyB0b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3Ry LAorCXJlbC5yZWxvcHRpb25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxvcHRpb25zIEFTIHRvYXN0 X3JlbG9wdGlvbnMsIHJlbC5yZWxvZnR5cGUsIHR5cC50eXBuYW1lLAorCShDQVNFIFdIRU4gcmVs LnJlbHRvYXN0cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0 YWJsZSwKKyAgICAtLSBBZGRlZCBmb3IgcGdBZG1pbjQKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5h YmxlZD0oW2EtenwwLTldKiknKSk6OmJvb2xlYW4gIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkg QVMgYXV0b3ZhY3V1bV9jdXN0b20sCisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8 MC05XSopJykpOjpib29sZWFuICBBTkQgcmVsLnJlbHRvYXN0cmVsaWQgIT0gMCBUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1dG92YWN1dW0sCisKKwkoU0VMRUNUIGFycmF5X2Fn Zyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpIEZST00gcGdfc2VjbGFiZWxzIHNsMSBXSEVSRSBz bDEub2Jqb2lkPXJlbC5vaWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBzZWNsYWJlbHMsCisJKENB U0UgV0hFTiByZWwub2lkIDw9IHt7IGRhdGxhc3RzeXNvaWR9fTo6b2lkIFRIRU4gdHJ1ZSBFbFNF IGZhbHNlIEVORCkgQVMgaXNfc3lzX3RhYmxlCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJs ZQorICAgIHslIGlmIHRpZCAlfSwgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHBn X2dldF9wYXJ0a2V5ZGVmKHt7IHRpZCB9fTo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9u X3NjaGVtZSB7JSBlbmRpZiAlfQorRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRFUiBKT0lO IHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAgTEVGVCBP VVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lkIEFORCBk ZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorICBM RUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQg QU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRz dC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVs LnJlbG9mdHlwZT10eXAub2lkCitXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcsJ3An KSBBTkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorQU5EIE5PVCByZWwucmVs aXNwYXJ0aXRpb24KK3slIGlmIHRpZCAlfSAgQU5EIHJlbC5vaWQgPSB7eyB0aWQgfX06Om9pZCB7 JSBlbmRpZiAlfQorT1JERVIgQlkgcmVsLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlL3NxbC9kZWZhdWx0L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlL3NxbC9kZWZhdWx0L2NyZWF0ZS5zcWwKaW5kZXggZjhlODU4Zi4uNWVjOGZmYyAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvZGVmYXVsdC9jcmVhdGUu c3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvY3JlYXRlLnNx bApAQCAtNTcsNyArNTcsOCBAQCBDUkVBVEUgeyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5jZSAlfVVO TE9HR0VEIHslIGVuZGlmICV9VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YQoge3tDT05TVFJBSU5U Uy5FWENMVURFKGNvbm4sIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX0KIHsl IGlmIGRhdGEubGlrZV9yZWxhdGlvbiBvciBkYXRhLmNvbGxfaW5oZXJpdHMgb3IgZGF0YS5jb2x1 bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5p cXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAg b3IgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5leGNsdWRlX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCAlfQogCi0pCispeyUgaWYgZGF0YS5yZWxraW5kIGlzIGRlZmluZWQg YW5kIGRhdGEucmVsa2luZCA9PSAncCcgJX0gUEFSVElUSU9OIEJZIHt7IGRhdGEucGFydGl0aW9u X3NjaGVtZSB9fSB7JSBlbmRpZiAlfQorCiB7JSBlbmRpZiAlfQogeyMjIyBJZiB3ZSBhcmUgaW5o ZXJpdGluZyBpdCBmcm9tIGFub3RoZXIgdGFibGUocykgIyMjfQogeyUgaWYgZGF0YS5jb2xsX2lu aGVyaXRzICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC9kZWZh dWx0L2dldF9zY2hlbWFfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2Rl ZmF1bHQvZ2V0X3NjaGVtYV9vaWQuc3FsCmluZGV4IDRkMzI5ZDIuLjhkZjg0YjUgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvZ2V0X3NjaGVtYV9vaWQu c3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvZ2V0X3NjaGVt YV9vaWQuc3FsCkBAIC0xLDggKzEsOSBAQAogeyMgPT09PT0gZmV0Y2ggbmV3IGFzc2lnbmVkIHNj aGVtYSBvaWQgPT09PT0gI30KIFNFTEVDVAotICAgIGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKKyAg ICBjLnJlbG5hbWVzcGFjZSBhcyBzY2lkLCBuc3AubnNwbmFtZSBhcyBuc3BuYW1lCiBGUk9NCiAg ICAgcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gbnNwLm9pZCA9IGMu cmVsbmFtZXNwYWNlCiBXSEVSRQogeyUgaWYgdGlkICV9CiAgICAgYy5vaWQgPSB7e3RpZH19Ojpv aWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMv dHJpZ2dlci5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy90ZW1wbGF0ZXMvdHJpZ2dlci9qcy90cmln Z2VyLmpzCmluZGV4IDc3MTZiODcuLjc4OTdmZDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmln Z2Vycy90ZW1wbGF0ZXMvdHJpZ2dlci9qcy90cmlnZ2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmln Z2Vycy90ZW1wbGF0ZXMvdHJpZ2dlci9qcy90cmlnZ2VyLmpzCkBAIC0yOSwxMyArMjksMTUgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsKICAgICAgICAgbm9kZTogJ3RyaWdnZXIn LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVHJpZ2dlcnMnKSwKICAgICAgICAgdHlwZTogJ2Nv bGwtdHJpZ2dlcicsCisgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFi bGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVz Y3JpcHRpb24nXQogICAgICAgfSk7CiAgIH07CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3Ry aWdnZXInXSkgewotICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sndHJpZ2dlciddID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3Zp ZXcnXSwKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3RyaWdnZXInXSA9IHBnQnJvd3Nlci5O b2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxl Q2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3Zp ZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScs ICdjb2xsLXZpZXcnXSwKICAgICAgIHR5cGU6ICd0cmlnZ2VyJywKICAgICAgIGxhYmVsOiBnZXR0 ZXh0KCdUcmlnZ2VyJyksCkBAIC03MSw2ICs3MywxMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50 cmlnZ2VyJywgWwogICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10cmlnZ2VyJywgZGF0 YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKICAgICAgICAgICBlbmFibGU6ICdj YW5DcmVhdGUnCiAgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfdHJpZ2dlcl9v blBhcnRpdGlvbicsIG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAg YXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3Bl cnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVs OiBnZXR0ZXh0KCdUcmlnZ2VyLi4uJyksCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29u LXRyaWdnZXInLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAg ICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CiAgICAgICAgICAgbmFtZTogJ2Vu YWJsZV90cmlnZ2VyJywgbm9kZTogJ3RyaWdnZXInLCBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAg YXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2VuYWJsZV90cmlnZ2Vy JywKICAgICAgICAgICBjYXRlZ29yeTogJ2Nvbm5lY3QnLCBwcmlvcml0eTogMywgbGFiZWw6IGdl dHRleHQoJ0VuYWJsZSB0cmlnZ2VyJyksCkBAIC0yMDEsNiArMjA5LDE3IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCdlZGl0Jywg J3Byb3BlcnRpZXMnXSwKICAgICAgICAgICBkZXBzOiBbJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcidd LAogICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBEaXNh YmxlZCBpZiB0YWJsZSBpcyBhIHBhcnRpdGlvbmVkIHRhYmxlLgorICAgICAgICAgICAgaWYgKF8u aGFzKG0sICdub2RlX2luZm8nKSAmJiBfLmhhcyhtLm5vZGVfaW5mbywgJ3RhYmxlJykgJiYKKyAg ICAgICAgICAgICAgICBfLmhhcyhtLm5vZGVfaW5mby50YWJsZSwgJ2lzX3BhcnRpdGlvbmVkJykg JiYgbS5ub2RlX2luZm8udGFibGUuaXNfcGFydGl0aW9uZWQpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICAgIG0uc2V0 KCdpc19yb3dfdHJpZ2dlcicsIGZhbHNlKTsKKyAgICAgICAgICAgICAgfSwxMCk7CisKKyAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElm IGNvbnN0cmFpbnQgdHJpZ2dlciBpcyBzZXQgdG8gVHJ1ZSB0aGVuIHJvdyB0cmlnZ2VyIHdpbGwK ICAgICAgICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgc2V0IHRvIFRydWUgYW5kIGJlY29tZXMgZGlz YWJsZQogICAgICAgICAgICAgdmFyIGlzX2NvbnN0cmFpbnRfdHJpZ2dlciA9IG0uZ2V0KCdpc19j b25zdHJhaW50X3RyaWdnZXInKTsKQEAgLTIyNyw3ICsyNDYsMTkgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUudHJpZ2dlcicsIFsKICAgICAgICAgICBpZDogJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcics IGxhYmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50IHRyaWdnZXI/JyksCiAgICAgICAgICAgdHlwZTog J3N3aXRjaCcsIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsCiAgICAgICAgICAg bW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgICBncm91cDog Z2V0dGV4dCgnRGVmaW5pdGlvbicpCisgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRp b24nKSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8g RGlzYWJsZWQgaWYgdGFibGUgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICAgICAgIGlm IChfLmhhcyhtLCAnbm9kZV9pbmZvJykgJiYgXy5oYXMobS5ub2RlX2luZm8sICd0YWJsZScpICYm CisgICAgICAgICAgICAgICAgXy5oYXMobS5ub2RlX2luZm8udGFibGUsICdpc19wYXJ0aXRpb25l ZCcpICYmIG0ubm9kZV9pbmZvLnRhYmxlLmlzX3BhcnRpdGlvbmVkKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICBt LnNldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJywgZmFsc2UpOworICAgICAgICAgICAgICB9LDEw KTsKKworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9CiAgICAgICAgIH0sewogICAgICAgICAgIGlkOiAndGdkZWZlcnJhYmxlJywgbGFiZWw6IGdl dHRleHQoJ0RlZmVycmFibGU/JyksCiAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiBn ZXR0ZXh0KCdEZWZpbml0aW9uJyksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcw OWUxYQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weQpAQCAtMCwwICsxLDIx MTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIiBJbXBsZW1lbnRzIFV0aWxpdHkg Y2xhc3MgZm9yIFRhYmxlIGFuZCBQYXJ0aXRpb25lZCBUYWJsZS4gIiIiCisKK2ltcG9ydCByZQor ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCitm cm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIGpzb25pZnksIHJlcXVlc3QKK2Zyb20g Zmxhc2tfYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9y dCBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIG1ha2Vf cmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0aWxzIFwKKyAgICBpbXBvcnQg RGF0YVR5cGVSZWFkZXIsIHRyaWdnZXJfZGVmaW5pdGlvbiwgcGFyc2VfcnVsZV9kZWZpbml0aW9u Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudXRpbHMgaW1wb3J0 IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAorICAgIHBhcnNlX3ByaXZfdG9fZGIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi51dGls cy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxU X0RSSVZFUgorCisKK2NsYXNzIEJhc2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKKyAgICAi IiIKKyAgICBUaGlzIGNsYXNzIGlzIGJhc2UgY2xhc3MgZm9yIHRhYmxlcyBhbmQgcGFydGl0aW9u ZWQgdGFibGVzLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBjaGVja19wcmVj b25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3Jh dG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3Jl IHJ1bm5pbmcgdmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAqIF9mb3JtYXR0ZXIo ZGF0YSwgdGlkKQorICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1 ZXJ5IHJlc3VsdAorICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdAorCisgICAgKiBf Y29sdW1uc19mb3JtYXR0ZXIodGlkLCBkYXRhKToKKyAgICAgIC0gSXQgd2lsbCByZXR1cm4gZm9y bWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgYXMgcGVyIGNsaWVudCBtb2Rl bCBmb3JtYXQgZm9yIGNvbHVtbiBub2RlCisKKyAgICAqIF9pbmRleF9jb25zdHJhaW50c19mb3Jt YXR0ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgorICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3Jt YXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVs IGZvcm1hdCBmb3IgaW5kZXggY29uc3RyYWludCBub2RlCisKKyAgICAqIF9jbHR5cGVfZm9ybWF0 dGVyKHR5cGUpOiAoc3RhdGljbWV0aG9kKQorICAgICAgLSBXZSBuZWVkIHRvIHJlbW92ZSBbXSBm cm9tIHR5cGUgYW5kIGFwcGVuZCBpdAorICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNv IHdlIHdpbGwgc2VuZCBmbGFnIGZvcgorICAgICAgICBzcWwgdGVtcGxhdGUuCisKKyAgICAqIGdl dF90YWJsZV9kZXBlbmRlbnRzKHNlbGYsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0 IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhl IHRhYmxlIG5vZGUuCisKKyAgICAqIGdldF90YWJsZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlkKToK KyAgICAgIC0gVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFq YXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSB0YWJsZSBub2RlLgorCisgICAgKiBnZXRfdGFi bGVfc3RhdGlzdGljcyhzZWxmLCB0aWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBzdGF0aXN0aWNz IGZvciBhIHBhcnRpY3VsYXIgdGFibGUgaWYgdGlkIGlzIHNwZWNpZmllZCwKKyAgICAgICAgb3Ro ZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHN0YXRpc3RpY3MgZm9yIGFsbCB0aGUgdGFibGVzIGluIHRo YXQKKyAgICAgICAgc2NoZW1hLgorICAgICogZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoc2Vs ZiwgZGlkLCBzY2lkLCB0aWQsIG1haW5fc3FsLCBkYXRhKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGNyZWF0ZXMgcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IKKyAgICAgICAgdGhlIHRh YmxlIG9iamVjdC4KKworICAgICogcmVzZXRfc3RhdGlzdGljcyhzZWxmLCBzY2lkLCB0aWQpOgor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXQgc3RhdGlzdGljcyBvZiB0YWJsZS4KKyAg ICAiIiIKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNv cmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZv cmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixj b25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisKKyAg ICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAg ICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQg Z2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2 ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgZGlkID0ga3dh cmdzWydkaWQnXQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25f bWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5h Z2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRl bnQgPSBkcml2ZXIucXRJZGVudAorICAgICAgICAgICAgc2VsZi5xdFR5cGVJZGVudCA9IGRyaXZl ci5xdFR5cGVJZGVudAorICAgICAgICAgICAgIyBXZSBuZWVkIGRhdGxhc3RzeXNvaWQgdG8gY2hl Y2sgaWYgY3VycmVudCB0YWJsZSBpcyBzeXN0ZW0gdGFibGUKKyAgICAgICAgICAgIHNlbGYuZGF0 bGFzdHN5c29pZCA9IHNlbGYubWFuYWdlci5kYl9pbmZvWworICAgICAgICAgICAgICAgIGRpZAor ICAgICAgICAgICAgXVsnZGF0bGFzdHN5c29pZCddIGlmIHNlbGYubWFuYWdlci5kYl9pbmZvIGlz IG5vdCBOb25lIGFuZCBcCisgICAgICAgICAgICAgICAgZGlkIGluIHNlbGYubWFuYWdlci5kYl9p bmZvIGVsc2UgMAorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgorICAg ICAgICAgICAgIyBTZXQgdGhlIHRlbXBsYXRlIHBhdGggZm9yIHRoZSBTUUwgc2NyaXB0cworICAg ICAgICAgICAgc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoID0gJ3RhYmxlL3NxbC8jezB9IycuZm9y bWF0KHZlcikKKyAgICAgICAgICAgIHNlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGggPSAncGFy dGl0aW9uL3NxbC8jezB9IycuZm9ybWF0KHZlcikKKworICAgICAgICAgICAgIyBUZW1wbGF0ZSBm b3IgQ29sdW1uICxjaGVjayBjb25zdHJhaW50IGFuZCBleGNsdXNpb24KKyAgICAgICAgICAgICMg Y29uc3RyYWludCBub2RlCisgICAgICAgICAgICBzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoID0g J2NvbHVtbi9zcWwvI3swfSMnLmZvcm1hdCh2ZXIpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Nv bnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9IFwKKyAgICAgICAgICAgICAgICAnY2hlY2tfY29uc3Ry YWludC9zcWwvI3swfSMnLmZvcm1hdCh2ZXIpCisgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbl9j b25zdHJhaW50X3RlbXBsYXRlX3BhdGggPSBcCisgICAgICAgICAgICAgICAgJ2V4Y2x1c2lvbl9j b25zdHJhaW50L3NxbC8jezB9IycuZm9ybWF0KHZlcikKKworICAgICAgICAgICAgIyBUZW1wbGF0 ZSBmb3IgUEsgJiBVbmlxdWUgY29uc3RyYWludCBub2RlCisgICAgICAgICAgICBzZWxmLmluZGV4 X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbCcKKworICAg ICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCisgICAg ICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGggPSAnZm9yZWlnbl9rZXkvc3Fs LyN7MH0jJy5mb3JtYXQodmVyKQorCisgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBpbmRleCBu b2RlCisgICAgICAgICAgICBzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGggPSAnaW5kZXgvc3FsLyN7 MH0jJy5mb3JtYXQodmVyKQorCisgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciB0cmlnZ2VyIG5v ZGUKKyAgICAgICAgICAgIHNlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoID0gJ3RyaWdnZXIvc3Fs LyN7MH0jJy5mb3JtYXQodmVyKQorCisgICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBydWxlcyBu b2RlCisgICAgICAgICAgICBzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGggPSAncnVsZXMvc3FsJwor CisgICAgICAgICAgICAjIFN1cHBvcnRlZCBBQ0wgZm9yIHRhYmxlCisgICAgICAgICAgICBzZWxm LmFjbCA9IFsnYScsICdyJywgJ3cnLCAnZCcsICdEJywgJ3gnLCAndCddCisKKyAgICAgICAgICAg ICMgU3VwcG9ydGVkIEFDTCBmb3IgY29sdW1ucworICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNs ID0gWydhJywgJ3InLCAndycsICd4J10KKworICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoq a3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAgICBkZWYgX2NvbHVtbnNfZm9ybWF0 dGVyKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAg ICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVz dWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1h dHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1v ZGVsIGZvcm1hdCBmb3IgY29sdW1uIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBjb2x1 bW4gaW4gZGF0YVsnY29sdW1ucyddOgorCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZm9ybWF0 IHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gY2xpZW50IGpzIGNvbGxlY3Rpb24KKyAgICAgICAgICAg IGlmICdhdHRvcHRpb25zJyBpbiBjb2x1bW4gYW5kIGNvbHVtblsnYXR0b3B0aW9ucyddIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgIHNwY29wdGlvbnMgPSBbXQorICAgICAgICAgICAgICAg IGZvciBzcGNvcHRpb24gaW4gY29sdW1uWydhdHRvcHRpb25zJ106CisgICAgICAgICAgICAgICAg ICAgIGssIHYgPSBzcGNvcHRpb24uc3BsaXQoJz0nKQorICAgICAgICAgICAgICAgICAgICBzcGNv cHRpb25zLmFwcGVuZCh7J25hbWUnOiBrLCAndmFsdWUnOiB2fSkKKworICAgICAgICAgICAgICAg IGNvbHVtblsnYXR0b3B0aW9ucyddID0gc3Bjb3B0aW9ucworCisgICAgICAgICAgICAjIE5lZWQg dG8gZm9ybWF0IHNlY3VyaXR5IGxhYmVscyBhY2NvcmRpbmcgdG8gY2xpZW50IGpzIGNvbGxlY3Rp b24KKyAgICAgICAgICAgIGlmICdzZWNsYWJlbHMnIGluIGNvbHVtbiBhbmQgY29sdW1uWydzZWNs YWJlbHMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWNsYWJlbHMgPSBbXQorICAg ICAgICAgICAgICAgIGZvciBzZWNsYmxzIGluIGNvbHVtblsnc2VjbGFiZWxzJ106CisgICAgICAg ICAgICAgICAgICAgIGssIHYgPSBzZWNsYmxzLnNwbGl0KCc9JykKKyAgICAgICAgICAgICAgICAg ICAgc2VjbGFiZWxzLmFwcGVuZCh7J3Byb3ZpZGVyJzogaywgJ2xhYmVsJzogdn0pCisKKyAgICAg ICAgICAgICAgICBjb2x1bW5bJ3NlY2xhYmVscyddID0gc2VjbGFiZWxzCisKKyAgICAgICAgICAg IGlmICdhdHRudW0nIGluIGNvbHVtbiBhbmQgY29sdW1uWydhdHRudW0nXSBpcyBub3QgTm9uZSBc CisgICAgICAgICAgICAgICAgICAgIGFuZCBjb2x1bW5bJ2F0dG51bSddID4gMDoKKyAgICAgICAg ICAgICAgICAjIFdlIG5lZWQgdG8gcGFyc2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRh YmFzZSB0bworICAgICAgICAgICAgICAgICMganNvbiBmb3JtYXQKKyAgICAgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtzZWxm LmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAnYWNsLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg dGlkPXRpZCwgY2xpZD1jb2x1bW5bJ2F0dG51bSddCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgIHN0YXR1cywgYWNsID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKworICAgICAgICAgICAgICAgICMg V2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRvbid0IG5lZWQK KyAgICAgICAgICAgICAgICAjIGl0IGZyb20gcHJvcGVydGllcyBzcWwKKyAgICAgICAgICAgICAg ICBjb2x1bW5bJ2F0dGFjbCddID0gW10KKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gYWNs Wydyb3dzJ106CisgICAgICAgICAgICAgICAgICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIo cm93KQorICAgICAgICAgICAgICAgICAgICBjb2x1bW4uc2V0ZGVmYXVsdChyb3dbJ2RlZnR5cGUn XSwgW10pLmFwcGVuZChwcml2KQorCisgICAgICAgICAgICAgICAgIyB3ZSBhcmUgcmVjZWl2aW5n IHJlcXVlc3Qgd2hlbiBpbiBlZGl0IG1vZGUKKyAgICAgICAgICAgICAgICAjIHdlIHdpbGwgc2Vu ZCBmaWx0ZXJlZCB0eXBlcyByZWxhdGVkIHRvIGN1cnJlbnQgdHlwZQorICAgICAgICAgICAgICAg IHByZXNlbnRfdHlwZSA9IGNvbHVtblsnY2x0eXBlJ10KKworICAgICAgICAgICAgICAgIHR5cGVf aWQgPSBjb2x1bW5bJ2F0dHR5cGlkJ10KKworICAgICAgICAgICAgICAgIGZ1bGx0eXBlID0gc2Vs Zi5nZXRfZnVsbF90eXBlKAorICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ3R5cG5zcG5hbWUn XSwgY29sdW1uWyd0eXBuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnaXNkdXAn XSwgY29sdW1uWydhdHRuZGltcyddLCBjb2x1bW5bJ2F0dHR5cG1vZCddCisgICAgICAgICAgICAg ICAgKQorCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gRmFsc2UKKyAgICAgICAgICAgICAgICBw cmVjaXNpb24gPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmICdlbGVtb2lkJyBpbiBjb2x1bW46 CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgcHJlY2lzaW9uLCB0eXBldmFsID0gXAorICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfbGVuZ3RoX3ByZWNpc2lvbihjb2x1bW5bJ2Vs ZW1vaWQnXSkKKworICAgICAgICAgICAgICAgICMgU2V0IGxlbmd0aCBhbmQgcHJlY2lzaW9uIHRv IE5vbmUKKyAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dGxlbiddID0gTm9uZQorICAgICAgICAg ICAgICAgIGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBOb25lCisKKyAgICAgICAgICAgICAgICAj IElmIHdlIGhhdmUgbGVuZ3RoICYgcHJlY2lzaW9uIGJvdGgKKyAgICAgICAgICAgICAgICBpZiBs ZW5ndGggYW5kIHByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5z ZWFyY2gocicoXGQrKSwoXGQrKScsIGZ1bGx0eXBlKQorICAgICAgICAgICAgICAgICAgICBpZiBt YXRjaE9iajoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBtYXRj aE9iai5ncm91cCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVjaXNp b24nXSA9IG1hdGNoT2JqLmdyb3VwKDIpCisgICAgICAgICAgICAgICAgZWxpZiBsZW5ndGg6Cisg ICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggb25seQorICAgICAgICAgICAg ICAgICAgICBtYXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCspJywgZnVsbHR5cGUpCisgICAgICAg ICAgICAgICAgICAgIGlmIG1hdGNoT2JqOgorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1u WydhdHRsZW4nXSA9IG1hdGNoT2JqLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgICAgICBj b2x1bW5bJ2F0dHByZWNpc2lvbiddID0gTm9uZQorCisKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcmVmZXJlbmNl ZC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs IGNsaWQ9Y29sdW1uWydhdHRudW0nXSkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgaXNfcmVm ZXJlbmNlID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKworICAgICAgICAgICAgICAg IGVkaXRfdHlwZXNfbGlzdCA9IGxpc3QoKQorICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBuZWVk IHByZXNlbnQgdHlwZSBpbiBlZGl0IG1vZGUKKworICAgICAgICAgICAgICAgIGlmIGNvbHVtblsn dHlwbnNwbmFtZSddID09ICJwZ19jYXRhbG9nIiBcCisgICAgICAgICAgICAgICAgICAgICAgICBv ciBjb2x1bW5bJ3R5cG5zcG5hbWUnXSA9PSAicHVibGljIjoKKyAgICAgICAgICAgICAgICAgICAg ZWRpdF90eXBlc19saXN0LmFwcGVuZChwcmVzZW50X3R5cGUpCisgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgdCA9IHNlbGYucXRUeXBlSWRlbnQoc2VsZi5jb25uLCBj b2x1bW5bJ3R5cG5zcG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJlc2VudF90eXBlKQorICAgICAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3Qu YXBwZW5kKHQpCisgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnY2x0eXBlJ10gPSB0CisKKyAg ICAgICAgICAgICAgICBpZiBpbnQoaXNfcmVmZXJlbmNlKSA9PSAwOgorICAgICAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2VkaXRfbW9kZV90eXBlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlX2lkPXR5cGVfaWQpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAgICAgICAg ICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgICAgICAgICAg ZWRpdF90eXBlc19saXN0LmFwcGVuZChyb3dbJ3R5cG5hbWUnXSkKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHByZXNlbnRf dHlwZSkKKworICAgICAgICAgICAgICAgIGNvbHVtblsnZWRpdF90eXBlcyddID0gZWRpdF90eXBl c19saXN0CisgICAgICAgICAgICAgICAgY29sdW1uWydjbHR5cGUnXSA9IERhdGFUeXBlUmVhZGVy LnBhcnNlX3R5cGVfbmFtZShjb2x1bW5bJ2NsdHlwZSddKQorCisgICAgICAgICAgICAgICAgaWYg J2luZGtleScgaW4gY29sdW1uOgorICAgICAgICAgICAgICAgICAgICAjIEN1cnJlbnQgY29sdW1u CisgICAgICAgICAgICAgICAgICAgIGF0dG51bSA9IHN0cihjb2x1bW5bJ2F0dG51bSddKQorCisg ICAgICAgICAgICAgICAgICAgICMgU2luZ2xlL0xpc3Qgb2YgcHJpbWFyeSBrZXkgY29sdW1uKHMp CisgICAgICAgICAgICAgICAgICAgIGluZGtleSA9IHN0cihjb2x1bW5bJ2luZGtleSddKQorCisg ICAgICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBjaGVjayBpZiBjb2x1bW4gaXMgaW4gcHJpbWFy eSBjb2x1bW4ocykKKyAgICAgICAgICAgICAgICAgICAgaWYgYXR0bnVtIGluIGluZGtleS5zcGxp dCgiICIpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydpc19wcmltYXJ5X2tleSdd ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgY29sdW1uWydpc19wcmltYXJ5X2tleSddID0gRmFsc2UKKworICAgICAgICByZXR1cm4gZGF0 YQorCisgICAgZGVmIF9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQs IGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFi bGUgT0lECisgICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAorCisgICAgICAg IFJldHVybnM6CisgICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9m IHF1ZXJ5IHJlc3VsdAorICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9y IGluZGV4IGNvbnN0cmFpbnQgbm9kZQorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIHdpbGwg ZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCisgICAgICAgIGlu ZGV4X2NvbnN0cmFpbnRzID0geworICAgICAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAndSc6 ICd1bmlxdWVfY29uc3RyYWludCcKKyAgICAgICAgfQorCisgICAgICAgIGZvciBjdHlwZSBpbiBp bmRleF9jb25zdHJhaW50cy5rZXlzKCk6CisgICAgICAgICAgICBkYXRhW2luZGV4X2NvbnN0cmFp bnRzW2N0eXBlXV0gPSBbXQorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9Y3R5cGUpCisgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93 cyddOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJvdworICAgICAgICAgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuaW5k ZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBjaWQ9 cm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgY29sY250PXJvd1snaW5kbmF0dHMnXSkK KyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg ICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgICAgICBmb3IgciBpbiByZXNbJ3Jvd3MnXToK KyAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJjb2x1bW4iOiByWydjb2x1bW4n XS5zdHJpcCgnIicpfSkKKworICAgICAgICAgICAgICAgIHJlc3VsdFsnY29sdW1ucyddID0gY29s dW1ucworCisgICAgICAgICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3Qg YW5kL29yIGFwcGVuZCBpbnRvCisgICAgICAgICAgICAgICAgIyBleGlzdGluZyBsaXN0IFsgQWRk aW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCisgICAgICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0 KGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSwgW10pLmFwcGVuZChyZXN1bHQpCisKKyAgICAgICAg cmV0dXJuIGRhdGEKKworICAgIGRlZiBfZm9yZWlnbl9rZXlfZm9ybWF0dGVyKHNlbGYsIHRpZCwg ZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgdGlkOiBUYWJs ZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0CisKKyAgICAgICAg UmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2Yg cXVlcnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3Ig Zm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCisgICAgICAgICIiIgorCisgICAgICAgICMgV2Ug d2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKKyAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKKwor ICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICBmb3IgZmsgaW4gcmVzdWx0Wydyb3dz J106CisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5m b3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBrZXlzPXppcChma1snY29uZmtleSddLCBma1snY29ua2V5J10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZyZWxpZD1ma1snY29uZnJlbGlkJ10pCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGNvbHVtbnMgPSBbXQor ICAgICAgICAgICAgY29scyA9IFtdCisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cydd OgorICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsibG9jYWxfY29sdW1uIjogcm93Wydj b25hdHRuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2Vz IjogZmtbJ2NvbmZyZWxpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVm ZXJlbmNlZCI6IHJvd1snY29uZmF0dG5hbWUnXX0pCisgICAgICAgICAgICAgICAgY29scy5hcHBl bmQocm93Wydjb25hdHRuYW1lJ10pCisKKyAgICAgICAgICAgIGZrWydjb2x1bW5zJ10gPSBjb2x1 bW5zCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5m b3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGlkPWZrWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKworICAgICAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZmtbJ3JlbW90ZV9zY2hl bWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgICAgIGZrWydyZW1vdGVf dGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorCisgICAgICAgICAgICBjb3Zlcmlu Z2luZGV4ID0gc2VsZi5zZWFyY2hfY292ZXJpbmdpbmRleCh0aWQsIGNvbHMpCisKKyAgICAgICAg ICAgIGZrWydjb3ZlcmluZ2luZGV4J10gPSBjb3ZlcmluZ2luZGV4CisgICAgICAgICAgICBpZiBj b3ZlcmluZ2luZGV4OgorICAgICAgICAgICAgICAgIGZrWydhdXRvaW5kZXgnXSA9IFRydWUKKyAg ICAgICAgICAgICAgICBma1snaGFzaW5kZXgnXSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgZmtbJ2F1dG9pbmRleCddID0gRmFsc2UKKyAgICAgICAgICAgICAgICBm a1snaGFzaW5kZXgnXSA9IEZhbHNlCisgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBj cmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8KKyAgICAgICAgICAgICMgZXhpc3RpbmcgbGlz dCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0XQorICAgICAgICAgICAgZGF0YS5zZXRkZWZh dWx0KCdmb3JlaWduX2tleScsIFtdKS5hcHBlbmQoZmspCisKKyAgICAgICAgcmV0dXJuIGRhdGEK KworICAgIGRlZiBfY2hlY2tfY29uc3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgdGlkLCBkYXRhKToK KyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAor ICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKKworICAgICAgICBSZXR1cm5z OgorICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSBy ZXN1bHQKKyAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBjaGVjayBj b25zdHJhaW50IG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFs bCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9v ciBhcHBlbmQgaW50bworICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWlu IGRhdGEgZGljdF0KKworICAgICAgICBkYXRhWydjaGVja19jb25zdHJhaW50J10gPSByZXNbJ3Jv d3MnXQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX2V4Y2x1c2lvbl9jb25zdHJh aW50X2Zvcm1hdHRlcihzZWxmLCBkaWQsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAg ICBBcmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRp Y3Qgb2YgcXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdp bGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBh cyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZQor ICAgICAgICAiIiIKKworICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25z dHJhaW50cyBmb3IgdGhlIHRhYmxlCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQpCisKKyAgICAgICAgc3Rh dHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXN1bHQpCisKKyAgICAgICAgZm9yIGV4IGluIHJlc3VsdFsncm93cyddOgorCisgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAg W3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNpZD1leFsn b2lkJ10sCisgICAgICAgICAgICAgICAgY29sY250PWV4WydpbmRuYXR0cyddKQorCisgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAg ICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICAgICAgaWYgcm93Wydv cHRpb25zJ10gJiAxOgorICAgICAgICAgICAgICAgICAgICBvcmRlciA9IEZhbHNlCisgICAgICAg ICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25zJ10gJiAyKSBl bHNlIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3Jk ZXIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93 WydvcHRpb25zJ10gJiAyKSBlbHNlIEZhbHNlCisKKyAgICAgICAgICAgICAgICBjb2x1bW5zLmFw cGVuZCh7ImNvbHVtbiI6IHJvd1snY29sZGVmJ10uc3RyaXAoJyInKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm9wZXJfY2xhc3MiOiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIm9yZGVyIjogb3JkZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJudWxsc19vcmRlciI6IG51bGxzX29yZGVyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAib3BlcmF0b3IiOiByb3dbJ29wcm5hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImNvbF90eXBlIjogcm93WydkYXRhdHlwZSddCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgICAgIGV4Wydjb2x1bW5z J10gPSBjb2x1bW5zCisgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlz dCBhbmQvb3IgYXBwZW5kIGludG8KKyAgICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGlu ZyBpbnRvIG1haW4gZGF0YSBkaWN0XQorICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdleGNs dWRlX2NvbnN0cmFpbnQnLCBbXSkuYXBwZW5kKGV4KQorCisgICAgICAgIHJldHVybiBkYXRhCisK KyAgICBkZWYgX2Zvcm1hdHRlcihzZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSk6CisgICAgICAg ICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1 bHQKKyAgICAgICAgICAgIHNjaWQ6IHNjaGVtYSBvaWQKKyAgICAgICAgICAgIHRpZDogdGFibGUg b2lkCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1h dHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1v ZGVsIGZvcm1hdAorICAgICAgICAiIiIKKyAgICAgICAgIyBOZWVkIHRvIGZvcm1hdCBzZWN1cml0 eSBsYWJlbHMgYWNjb3JkaW5nIHRvIGNsaWVudCBqcyBjb2xsZWN0aW9uCisgICAgICAgIGlmICdz ZWNsYWJlbHMnIGluIGRhdGEgYW5kIGRhdGFbJ3NlY2xhYmVscyddIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgc2VjbGFiZWxzID0gW10KKyAgICAgICAgICAgIGZvciBzZWNsYmxzIGluIGRhdGFb J3NlY2xhYmVscyddOgorICAgICAgICAgICAgICAgIGssIHYgPSBzZWNsYmxzLnNwbGl0KCc9JykK KyAgICAgICAgICAgICAgICBzZWNsYWJlbHMuYXBwZW5kKHsncHJvdmlkZXInOiBrLCAnbGFiZWwn OiB2fSkKKworICAgICAgICAgICAgZGF0YVsnc2VjbGFiZWxzJ10gPSBzZWNsYWJlbHMKKworICAg ICAgICAjIFdlIG5lZWQgdG8gcGFyc2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFz ZSB0byBqc29uIGZvcm1hdAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWQ9dGlkLCBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgYWNsID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKworICAg ICAgICAjIFdlIHdpbGwgc2V0IGdldCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24n dCBuZWVkCisgICAgICAgICMgaXQgZnJvbSBwcm9wZXJ0aWVzIHNxbAorICAgICAgICBmb3Igcm93 IGluIGFjbFsncm93cyddOgorICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihy b3cpCisgICAgICAgICAgICBpZiByb3dbJ2RlZnR5cGUnXSBpbiBkYXRhOgorICAgICAgICAgICAg ICAgIGRhdGFbcm93WydkZWZ0eXBlJ11dLmFwcGVuZChwcml2KQorICAgICAgICAgICAgZWxzZToK KyAgICAgICAgICAgICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQorCisgICAgICAg ICMgV2Ugd2lsbCBhZGQgQXV0byB2YWN1dW0gZGVmYXVsdHMgd2l0aCBvdXQgcmVzdWx0IGZvciBn cmlkCisgICAgICAgIGRhdGFbJ3ZhY3V1bV90YWJsZSddID0gc2VsZi5wYXJzZV92YWN1dW1fZGF0 YShzZWxmLmNvbm4sIGRhdGEsICd0YWJsZScpCisgICAgICAgIGRhdGFbJ3ZhY3V1bV90b2FzdCdd ID0gc2VsZi5wYXJzZV92YWN1dW1fZGF0YShzZWxmLmNvbm4sIGRhdGEsICd0b2FzdCcpCisKKyAg ICAgICAgIyBGZXRjaCBjb2x1bW5zIGZvciB0aGUgdGFibGUgbG9naWMKKyAgICAgICAgIworICAg ICAgICAjIDEpIENoZWNrIGlmIG9mX3R5cGUgYW5kIGluaGVyaXRlZCB0YWJsZXMgYXJlIHByZXNl bnQ/CisgICAgICAgICMgMikgSWYgeWVzIHRoZW4gRmV0Y2ggYWxsIHRoZSBjb2x1bW5zIGZvciBv Zl90eXBlIGFuZCBpbmhlcml0ZWQgdGFibGVzCisgICAgICAgICMgMykgQWRkIGNvbHVtbnMgaW4g Y29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICMgNCkgRmluZCBhbGwgdGhlIGNvbHVtbnMgZm9y IHRhYmxlcyBhbmQgZmlsdGVyIG91dCBjb2x1bW5zIHdoaWNoIGFyZQorICAgICAgICAjICAgbm90 IGluaGVyaXRlZCBmcm9tIGFueSB0YWJsZSAmIGZvcm1hdCB0aGVtIG9uZSBieSBvbmUKKworICAg ICAgICAjIEdldCBvZl90eXBlIHRhYmxlIGNvbHVtbnMgYW5kIGFkZCBpdCBpbnRvIGNvbHVtbnMg ZGljdAorICAgICAgICBpZiBkYXRhWyd0eXBuYW1lJ106CisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zX2Zvcl90YWJs ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5hbWU9ZGF0YVsn dHlwbmFtZSddKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgIGRh dGFbJ2NvbHVtbnMnXSA9IHJlc1sncm93cyddCisKKyAgICAgICAgIyBHZXQgaW5oZXJpdGVkIHRh YmxlKHMpIGNvbHVtbnMgYW5kIGFkZCBpdCBpbnRvIGNvbHVtbnMgZGljdAorICAgICAgICBlbGlm IGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSBhbmQgbGVuKGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgPiAw OgorICAgICAgICAgICAgY29sdW1ucyA9IFtdCisgICAgICAgICAgICAjIFJldHVybiBhbGwgdGFi bGVzIHdoaWNoIGNhbiBiZSBpbmhlcml0ZWQgJiBkbyBub3Qgc2hvdworICAgICAgICAgICAgIyBz eXN0ZW0gY29sdW1ucworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfaW5oZXJpdHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9RmFsc2UKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBp ZiByb3dbJ2luaGVyaXRzJ10gaW4gZGF0YVsnY29sbF9pbmhlcml0cyddOgorICAgICAgICAgICAg ICAgICAgICAjIEZldGNoIGNvbHVtbnMgdXNpbmcgaW5oZXJpdGVkIHRhYmxlIE9JRAorICAgICAg ICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAg ICAgICAgICAgICAgICBbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgdGlkPXJvd1snb2lkJ10KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAg ICAgICAgIGNvbHVtbnMuZXh0ZW5kKHJlc1sncm93cyddWzpdKQorICAgICAgICAgICAgZGF0YVsn Y29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGNv bHVtbnMgZm9yIHRoZSB0YWJsZSB1c2luZworICAgICAgICAjIGNvbHVtbnMgcHJvcGVydGllcy5z cWwsIHNvIHdlIG5lZWQgdG8gc2V0IHRlbXBsYXRlIHBhdGgKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaG93X3N5c19vYmplY3RzPUZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICBhbGxfY29sdW1ucyA9IHJlc1sncm93 cyddCisKKyAgICAgICAgIyBGaWx0ZXIgaW5oZXJpdGVkIGNvbHVtbnMgZnJvbSBhbGwgY29sdW1u cworICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkg PiAwIFwKKyAgICAgICAgICAgICAgICBhbmQgbGVuKGFsbF9jb2x1bW5zKSA+IDA6CisgICAgICAg ICAgICBmb3Igcm93IGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICBmb3IgaSwg Y29sIGluIGVudW1lcmF0ZShhbGxfY29sdW1ucyk6CisgICAgICAgICAgICAgICAgICAgICMgSWYg Ym90aCBuYW1lIGFyZSBzYW1lIHRoZW4gcmVtb3ZlIGl0CisgICAgICAgICAgICAgICAgICAgICMg YXMgaXQgaXMgaW5oZXJpdGVkIGZyb20gb3RoZXIgdGFibGUKKyAgICAgICAgICAgICAgICAgICAg aWYgY29sWyduYW1lJ10gPT0gcm93WyduYW1lJ106CisgICAgICAgICAgICAgICAgICAgICAgICAj IFJlbW92ZSBzYW1lIGNvbHVtbiBmcm9tIGFsbF9jb2x1bW5zIGFzCisgICAgICAgICAgICAgICAg ICAgICAgICAjIGFscmVhZHkgaGF2ZSBpdCBjb2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgIGRlbCBhbGxfY29sdW1uc1tpXQorCisgICAgICAgICAgICAjIElmIGFueSBj b2x1bW4gaXMgYWRkZWQgdGhlbiB1cGRhdGUgY29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAg ICBpZiBsZW4oYWxsX2NvbHVtbnMpID4gMDoKKyAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5z J10gKz0gYWxsX2NvbHVtbnMKKyAgICAgICAgIyBJZiBubyBpbmhlcml0ZWQgY29sdW1ucyBmb3Vu ZCB0aGVuIGFkZCBhbGwgY29sdW1ucworICAgICAgICBlbGlmIGxlbihhbGxfY29sdW1ucykgPiAw OgorICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gYWxsX2NvbHVtbnMKKworICAgICAgICBp ZiAnY29sdW1ucycgaW4gZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPiAwOgorICAgICAg ICAgICAgZGF0YSA9IHNlbGYuX2NvbHVtbnNfZm9ybWF0dGVyKHRpZCwgZGF0YSkKKworICAgICAg ICAjIEhlcmUgd2Ugd2lsbCBhZGQgY29uc3RyYWludCBpbiBvdXIgb3V0cHV0CisgICAgICAgIGRh dGEgPSBzZWxmLl9pbmRleF9jb25zdHJhaW50c19mb3JtYXR0ZXIoZGlkLCB0aWQsIGRhdGEpCisg ICAgICAgIGRhdGEgPSBzZWxmLl9mb3JlaWduX2tleV9mb3JtYXR0ZXIodGlkLCBkYXRhKQorICAg ICAgICBkYXRhID0gc2VsZi5fY2hlY2tfY29uc3RyYWludF9mb3JtYXR0ZXIodGlkLCBkYXRhKQor ICAgICAgICBkYXRhID0gc2VsZi5fZXhjbHVzaW9uX2NvbnN0cmFpbnRfZm9ybWF0dGVyKGRpZCwg dGlkLCBkYXRhKQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBAc3RhdGljbWV0aG9kCisg ICAgZGVmIF9jbHR5cGVfZm9ybWF0dGVyKGRhdGFfdHlwZSk6CisgICAgICAgICIiIgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBkYXRhX3R5cGU6IFR5cGUgc3RyaW5nCisKKyAgICAgICAg UmV0dXJuczoKKyAgICAgICAgICAgIFdlIG5lZWQgdG8gcmVtb3ZlIFtdIGZyb20gdHlwZSBhbmQg YXBwZW5kIGl0CisgICAgICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNvIHdlIHdpbGwg c2VuZCBmbGFnIGZvcgorICAgICAgICAgICAgc3FsIHRlbXBsYXRlCisgICAgICAgICIiIgorICAg ICAgICBpZiAnW10nIGluIGRhdGFfdHlwZToKKyAgICAgICAgICAgIHJldHVybiBkYXRhX3R5cGVb Oi0yXSwgVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGRhdGFfdHlwZSwg RmFsc2UKKworICAgIGRlZiBnZXRfdGFibGVfZGVwZW5kZW50cyhzZWxmLCB0aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgdGFibGUgbm9kZS4KKworICAgICAgICBB cmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgIyBT cGVjaWZpYyBjb25kaXRpb24gZm9yIGNvbHVtbiB3aGljaCB3ZSBuZWVkIHRvIGFwcGVuZAorICAg ICAgICB3aGVyZSA9ICJXSEVSRSBkZXAucmVmb2JqaWQ9ezB9OjpPSUQiLmZvcm1hdCh0aWQpCisK KyAgICAgICAgZGVwZW5kZW50c19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKAorICAgICAg ICAgICAgc2VsZi5jb25uLCB0aWQKKyAgICAgICAgKQorCisgICAgICAgICMgU3BlY2lmaWMgc3Fs IHRvIHJ1biBhZ2FpbnQgY29sdW1uIHRvIGZldGNoIGRlcGVuZGVudHMKKyAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZC5zcWwnXSksIHdoZXJl PXdoZXJlKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJlc1sncm93 cyddOgorICAgICAgICAgICAgcmVmX25hbWUgPSByb3dbJ3JlZm5hbWUnXQorICAgICAgICAgICAg aWYgcmVmX25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg ICAgICBkZXBfdHlwZSA9ICcnCisgICAgICAgICAgICBkZXBfc3RyID0gcm93WydkZXB0eXBlJ10K KyAgICAgICAgICAgIGlmIGRlcF9zdHIgPT0gJ2EnOgorICAgICAgICAgICAgICAgIGRlcF90eXBl ID0gJ2F1dG8nCisgICAgICAgICAgICBlbGlmIGRlcF9zdHIgPT0gJ24nOgorICAgICAgICAgICAg ICAgIGRlcF90eXBlID0gJ25vcm1hbCcKKyAgICAgICAgICAgIGVsaWYgZGVwX3N0ciA9PSAnaSc6 CisgICAgICAgICAgICAgICAgZGVwX3R5cGUgPSAnaW50ZXJuYWwnCisKKyAgICAgICAgICAgIGRl cGVuZGVudHNfcmVzdWx0LmFwcGVuZCh7J3R5cGUnOiAnc2VxdWVuY2UnLCAnbmFtZSc6IHJlZl9u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmllbGQnOiBkZXBf dHlwZX0pCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNw b25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgZGVmIGdldF90YWJsZV9kZXBlbmRlbmNpZXMoc2VsZiwgdGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgdGFibGUgbm9kZS4KKworICAgICAgICBB cmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorCisgICAgICAgICIiIgorICAgICAgICBk ZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKAorICAgICAgICAgICAg c2VsZi5jb25uLCB0aWQKKyAgICAgICAgKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIGdldF90YWJsZV9zdGF0aXN0aWNzKHNl bGYsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBTdGF0aXN0aWNzCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgdGlkOiBU YWJsZSBJZAorCisgICAgICAgIFJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9yIGEgcGFydGljdWxh ciB0YWJsZSBpZiB0aWQgaXMgc3BlY2lmaWVkLAorICAgICAgICBvdGhlcndpc2UgaXQgd2lsbCBy ZXR1cm4gc3RhdGlzdGljcyBmb3IgYWxsIHRoZSB0YWJsZXMgaW4gdGhhdAorICAgICAgICBzY2hl bWEuCisgICAgICAgICIiIgorCisgICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUKKyAgICAgICAg c3RhdHVzLCBzY2hlbWFfbmFtZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50YWJs ZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAgY29u bj1zZWxmLmNvbm4sIHNjaWQ9c2NpZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXNjaGVtYV9uYW1lKQorCisgICAgICAgIGlmIHRpZCBpcyBOb25lOgorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xs X3RhYmxlX3N0YXRzLnNxbCddKSwgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAg IHNjaGVtYV9uYW1lPXNjaGVtYV9uYW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGb3IgSW5kaXZpZHVhbCB0YWJsZSBzdGF0 cworCisgICAgICAgICAgICAjIENoZWNrIGlmIHBnc3RhdHR1cGxlIGV4dGVuc2lvbiBpcyBhbHJl YWR5IGNyZWF0ZWQ/CisgICAgICAgICAgICAjIGlmIGNyZWF0ZWQgdGhlbiBvbmx5IGFkZCBleHRl bmRlZCBzdGF0cworICAgICAgICAgICAgc3RhdHVzLCBpc19wZ3N0YXR0dXBsZSA9IHNlbGYuY29u bi5leGVjdXRlX3NjYWxhcigiIiIKKyAgICAgICAgICAgIFNFTEVDVCAoY291bnQoZXh0bmFtZSkg PiAwKSBBUyBpc19wZ3N0YXR0dXBsZQorICAgICAgICAgICAgRlJPTSBwZ19leHRlbnNpb24KKyAg ICAgICAgICAgIFdIRVJFIGV4dG5hbWU9J3Bnc3RhdHR1cGxlJworICAgICAgICAgICAgIiIiKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWlzX3Bnc3RhdHR1cGxlKQorCisgICAgICAgICAgICAj IEZldGNoIFRhYmxlIG5hbWUKKyAgICAgICAgICAgIHN0YXR1cywgdGFibGVfbmFtZSA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdn ZXRfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2Np ZD1zY2lkLCB0aWQ9dGlkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXRhYmxlX25hbWUpCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3Bh dGgsICdzdGF0cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBz Y2hlbWFfbmFtZT1zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZT10 YWJsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICBpc19wZ3N0YXR0dXBsZT1pc19wZ3N0YXR0 dXBsZSwgdGlkPXRpZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisK KyAgICBkZWYgZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoc2VsZiwgZGlkLCBzY2lkLCB0aWQs IG1haW5fc3FsLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBjcmVhdGVzIHJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yCisgICAgICAgIHRoZSB0YWJsZSBv YmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAg ICAgICBtYWluX3NxbDogTGlzdCBjb250YWlucyBhbGwgdGhlIHJldmVyc2VkIGVuZ2luZWVyZWQg c3FsCisgICAgICAgICAgIGRhdGE6IFRhYmxlJ3MgRGF0YQorICAgICAgICAiIiIKKyAgICAgICAg IiIiCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAg ICAgIyAxKSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBUQUJMRQorICAgICAgICAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgICIiIgorCisgICAgICAgICMg VGFibGUgJiBTY2hlbWEgZGVjbGFyYXRpb24gc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gY2hp bGQgbm9kZXMKKyAgICAgICAgc2NoZW1hID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUg PSBkYXRhWyduYW1lJ10KKworICAgICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwgc2Np ZCwgdGlkLCBkYXRhKQorCisgICAgICAgICMgTm93IHdlIGhhdmUgYWxsIGxpcyBvZiBjb2x1bW5z IHdoaWNoIHdlIG5lZWQKKyAgICAgICAgIyB0byBpbmNsdWRlIGluIG91ciBjcmVhdGUgZGVmaW5p dGlvbiwgTGV0J3MgZm9ybWF0IHRoZW0KKyAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGE6Cisg ICAgICAgICAgICBmb3IgYyBpbiBkYXRhWydjb2x1bW5zJ106CisgICAgICAgICAgICAgICAgaWYg J2F0dGFjbCcgaW4gYzoKKyAgICAgICAgICAgICAgICAgICAgY1snYXR0YWNsJ10gPSBwYXJzZV9w cml2X3RvX2RiKGNbJ2F0dGFjbCddLCBzZWxmLmNvbHVtbl9hY2wpCisKKyAgICAgICAgICAgICAg ICAjIGNoZWNrIHR5cGUgZm9yICdbXScgaW4gaXQKKyAgICAgICAgICAgICAgICBpZiAnY2x0eXBl JyBpbiBjOgorICAgICAgICAgICAgICAgICAgICBjWydjbHR5cGUnXSwgY1snaGFzU3FyQnJhY2tl dCddID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2x0eXBlX2Zvcm1hdHRlcihj WydjbHR5cGUnXSkKKworICAgICAgICBzcWxfaGVhZGVyID0gdSItLSBUYWJsZTogezB9XG5cbi0t ICIuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5xdElkZW50KHNlbGYuY29ubiwgZGF0YVsnc2No ZW1hJ10sIGRhdGFbJ25hbWUnXSkpCisKKyAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25u KQorCisgICAgICAgIHNxbF9oZWFkZXIgPSBzcWxfaGVhZGVyLnN0cmlwKCdcbicpCisgICAgICAg IHNxbF9oZWFkZXIgKz0gJ1xuJworCisgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAg ICAgbWFpbl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIpCisKKyAgICAgICAgIyBQYXJzZSBwcml2aWxl Z2UgZGF0YQorICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YVsn cmVsYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ3JlbGFjbCddLCBzZWxmLmFjbCkKKwor ICAgICAgICAjIGlmIHRhYmxlIGlzIHBhcnRpdGlvbnMgdGhlbgorICAgICAgICBpZiAncmVsaXNw YXJ0aXRpb24nIGluIGRhdGEgYW5kIGRhdGFbJ3JlbGlzcGFydGl0aW9uJ106CisgICAgICAgICAg ICB0YWJsZV9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3Rl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIGVsc2U6CisgICAgICAg ICAgICB0YWJsZV9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAjIEFkZCBpbnRvIG1h aW4gc3FsCisgICAgICAgIHRhYmxlX3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCB0YWJs ZV9zcWwpCisgICAgICAgIG1haW5fc3FsLmFwcGVuZCh0YWJsZV9zcWwuc3RyaXAoJ1xuJykpCisK KyAgICAgICAgIiIiCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisgICAgICAgICMgMikgUmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgSU5ERVgKKyAgICAg ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIiIiCisK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVz LnNxbCddKSwgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgaWR4PXJvd1snb2lkJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxh c3RzeXNvaWQpCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBk YXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKKyAgICAgICAgICAgICMgQWRkaW5nIHBhcmVudCBp bnRvIGRhdGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBzcWwKKyAgICAg ICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSdd ID0gdGFibGUKKyAgICAgICAgICAgICMgV2UgYWxzbyBuZWVkIHRvIGZlY3RoIGNvbHVtbnMgb2Yg aW5kZXgKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5p bmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnY29sdW1uX2RldGFpbHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlkeD1yb3dbJ29pZCddKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNl dCkKKworICAgICAgICAgICAgIyAnYXR0ZGVmJyBjb21lcyB3aXRoIHF1b3RlcyBmcm9tIHF1ZXJ5 IHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorICAgICAgICAgICAgIyAnb3B0aW9ucycgd2UgbmVl ZCB0cnVlL2ZhbHNlIHRvIHJlbmRlciBzd2l0Y2gKKyAgICAgICAgICAgICMgQVNDKGZhbHNlKS9E RVNDKHRydWUpCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGNvbHMgPSBb XQorICAgICAgICAgICAgZm9yIGNvbF9yb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAg ICAgICMgV2UgbmVlZCBhbGwgZGF0YSBhcyBjb2xsZWN0aW9uIGZvciBDb2x1bW5zTW9kZWwKKyAg ICAgICAgICAgICAgICBjb2xzX2RhdGEgPSB7CisgICAgICAgICAgICAgICAgICAgICdjb2xuYW1l JzogY29sX3Jvd1snYXR0ZGVmJ10uc3RyaXAoJyInKSwKKyAgICAgICAgICAgICAgICAgICAgJ2Nv bGxzcGNuYW1lJzogY29sX3Jvd1snY29sbG5zcG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg J29wX2NsYXNzJzogY29sX3Jvd1snb3BjbmFtZSddLAorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBpZiBjb2xfcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgorICAgICAgICAg ICAgICAgICAgICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IFRydWUKKyAgICAgICAgICAgICAg ICBjb2x1bW5zLmFwcGVuZChjb2xzX2RhdGEpCisKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQg c2FtZSBkYXRhIGFzIHN0cmluZyB0byBkaXNwbGF5IGluIHByb3BlcnRpZXMgd2luZG93CisgICAg ICAgICAgICAgICAgIyBJZiBtdWx0aXBsZSBjb2x1bW4gdGhlbiBzZXBhcmF0ZSBpdCBieSBjb2xv bgorICAgICAgICAgICAgICAgIGNvbHNfc3RyID0gY29sX3Jvd1snYXR0ZGVmJ10KKyAgICAgICAg ICAgICAgICBpZiBjb2xfcm93Wydjb2xsbnNwbmFtZSddOgorICAgICAgICAgICAgICAgICAgICBj b2xzX3N0ciArPSAnIENPTExBVEUgJyArIGNvbF9yb3dbJ2NvbGxuc3BuYW1lJ10KKyAgICAgICAg ICAgICAgICBpZiBjb2xfcm93WydvcGNuYW1lJ106CisgICAgICAgICAgICAgICAgICAgIGNvbHNf c3RyICs9ICcgJyArIGNvbF9yb3dbJ29wY25hbWUnXQorICAgICAgICAgICAgICAgIGlmIGNvbF9y b3dbJ29wdGlvbnMnXVswXSA9PSAnREVTQyc6CisgICAgICAgICAgICAgICAgICAgIGNvbHNfc3Ry ICs9ICcgREVTQycKKyAgICAgICAgICAgICAgICBjb2xzLmFwcGVuZChjb2xzX3N0cikKKworICAg ICAgICAgICAgIyBQdXNoIGFzIGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMn XSA9IGNvbHVtbnMKKyAgICAgICAgICAgICMgUHVzaCBhcyBzdHJpbmcKKyAgICAgICAgICAgIGRh dGFbJ2NvbHMnXSA9ICcsICcuam9pbihjb2xzKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyID0g dSJcbi0tIEluZGV4OiB7MH1cblxuLS0gIi5mb3JtYXQoZGF0YVsnbmFtZSddKQorCisgICAgICAg ICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgaW5k ZXhfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj cmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBpbmRleF9zcWwgKz0gIlxuIgor ICAgICAgICAgICAgaW5kZXhfc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5p bmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2FsdGVyLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAg IyBBZGQgaW50byBtYWluIHNxbAorICAgICAgICAgICAgaW5kZXhfc3FsID0gcmUuc3ViKCdcbnsy LH0nLCAnXG5cbicsIGluZGV4X3NxbCkKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxf aGVhZGVyICsgJ1xuXG4nICsgaW5kZXhfc3FsLnN0cmlwKCdcbicpKQorCisgICAgICAgICIiIgor ICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAg ICMgMykgUmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgVFJJR0dFUlMKKyAgICAgICAgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAiIiIKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10p LCB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJz ZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHRyaWdnZXJfc3FsID0gJycKKworICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRp ZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRy aWQ9cm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0 c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAg IyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNy ZWF0aW5nIHNxbAorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKKyAgICAgICAg ICAgIGRhdGFbJ3RhYmxlJ10gPSB0YWJsZQorCisgICAgICAgICAgICBpZiBkYXRhWyd0Z25hcmdz J10gPiAxOgorICAgICAgICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUg dGhhbiAxIGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAjIGxldCdzIGpvaW4gdGhlbQorICAg ICAgICAgICAgICAgIGRhdGFbJ3RnYXJncyddID0gJywgJy5qb2luKGRhdGFbJ3RnYXJncyddKQor CisgICAgICAgICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10pID4gMToKKyAgICAgICAgICAgICAg ICBjb2x1bW5zID0gJywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGlkPXRpZCwgY2xpc3Q9Y29sdW1ucykKKworICAgICAgICAgICAgICAgIHN0YXR1 cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgICAgICAgICAjICd0Z2F0dHInIGNvbnRh aW5zIGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxlIHVzZWQgaW4gdHJpZ2dlcgorICAgICAgICAg ICAgICAgIGNvbHVtbnMgPSBbXQorCisgICAgICAgICAgICAgICAgZm9yIGNvbF9yb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7J2NvbHVtbic6 IGNvbF9yb3dbJ25hbWUnXX0pCisKKyAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBj b2x1bW5zCisKKyAgICAgICAgICAgIGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKKwor ICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3Jt YXQoZGF0YVsnbmFtZSddKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49 c2VsZi5jb25uKQorCisgICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0 IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAorICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBj b25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSBzcWxfaGVhZGVyICsg J1xuXG4nICsgdHJpZ2dlcl9zcWwuc3RyaXAoJ1xuJykKKworICAgICAgICAgICAgIyBJZiB0cmln Z2VyIGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQorICAgICAgICAg ICAgaWYgbm90IGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ106CisgICAgICAgICAgICAgICAgdHJp Z2dlcl9zcWwgKz0gJ1xuXG4nCisgICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3Rl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2Vy LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikK KworICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAorICAgICAgICAgICAgdHJpZ2dlcl9z cWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdHJpZ2dlcl9zcWwpCisgICAgICAgICAgICBt YWluX3NxbC5hcHBlbmQodHJpZ2dlcl9zcWwpCisKKyAgICAgICAgIiIiCisgICAgICAgICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIyA0KSBSZXZlcnNlIGVu Z2luZWVyZWQgc3FsIGZvciBSVUxFUworICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCkKKworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJ1bGVzX3NxbCA9ICdcbicK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAg ICAgICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXQorICAgICAg ICAgICAgKSwgcmlkPXJvd1snb2lkJ10sIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lk KQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmVzX2RhdGEg PSBwYXJzZV9ydWxlX2RlZmluaXRpb24ocmVzKQorICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPXJlc19kYXRh LCBkaXNwbGF5X2NvbW1lbnRzPVRydWUpCisKKyAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBz cWwKKyAgICAgICAgICAgIHJ1bGVzX3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBydWxl c19zcWwpCisgICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQocnVsZXNfc3FsKQorCisgICAgICAg ICIiIgorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyAgICAgICAgIyA1KSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBQQVJUSVRJT05TCisgICAg ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAi IiIKKyAgICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0 aXRpb25lZCddOgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJzZXQpCisKKyAgICAgICAgICAgIHNxbF9oZWFkZXIgPSB1IlxuLS0gUGFydGl0aW9ucyBTUUwi CisgICAgICAgICAgICBwYXJ0aXRpb25fc3FsID0gJycKKyAgICAgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHBhcnRfZGF0YSA9IGRpY3QoKQorICAgICAg ICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uZWRfdGFibGVfbmFtZSddID0gZGF0YVsnbmFt ZSddCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBkYXRhWydz Y2hlbWEnXQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsnc2NoZW1hJ10gPSByb3dbJ3NjaGVt YV9uYW1lJ10KKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3JlbGlzcGFydGl0aW9uJ10gPSBU cnVlCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWyduYW1lJ10gPSByb3dbJ25hbWUnXQorICAg ICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0aW9uX3ZhbHVlJ10gPSByb3dbJ3BhcnRpdGlv bl92YWx1ZSddCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydpc19wYXJ0aXRpb25lZCddID0g cm93IFsnaXNfcGFydGl0aW9uZWQnXQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsncGFydGl0 aW9uX3NjaGVtZSddID0gcm93WydwYXJ0aXRpb25fc2NoZW1lJ10KKworICAgICAgICAgICAgICAg IHBhcnRpdGlvbl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAg ICAgICAgICBbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9cGFydF9kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAg ICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAorICAgICAgICAgICAgcGFydGl0aW9uX3NxbCA9 IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBwYXJ0aXRpb25fc3FsKQorICAgICAgICAgICAgbWFp bl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIgKyAnXG5cbicgKyBwYXJ0aXRpb25fc3FsLnN0cmlwKCdc bicpKQorCisgICAgICAgIHNxbCA9ICdcbicuam9pbihtYWluX3NxbCkKKworICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwuc3RyaXAoJ1xuJykpCisKKyAgICBkZWYgcmVz ZXRfc3RhdGlzdGljcyhzZWxmLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIHJlc2V0IHN0YXRpc3RpY3Mgb2YgdGFibGUKKworICAgICAgICAgQXJn czoKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQK KyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzZXRfc3RhdHMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlRh YmxlIHN0YXRpc3RpY3MgaGF2ZSBiZWVuIHJlc2V0IiksCisgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3Nj aWQnOiBzY2lkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIGdldF9wYXJ0aXRpb25fc2NoZW1lKHNl bGYsIGRhdGEpOgorICAgICAgICBwYXJ0aXRpb25fc2NoZW1lID0gTm9uZQorICAgICAgICBpZiAn cGFydGl0aW9uX3R5cGUnIGluIGRhdGEgXAorICAgICAgICAgICAgICAgIGFuZCBkYXRhWydwYXJ0 aXRpb25fdHlwZSddID09ICdyYW5nZSc6CisgICAgICAgICAgICBwYXJ0aXRpb25fc2NoZW1lID0g J1JBTkdFICgnCisgICAgICAgIGVsaWYgJ3BhcnRpdGlvbl90eXBlJyBpbiBkYXRhIFwKKyAgICAg ICAgICAgICAgICBhbmQgZGF0YVsncGFydGl0aW9uX3R5cGUnXSA9PSAnbGlzdCc6CisgICAgICAg ICAgICBwYXJ0aXRpb25fc2NoZW1lID0gJ0xJU1QgKCcKKworICAgICAgICBmb3Igcm93IGluIGRh dGFbJ3BhcnRpdGlvbl9rZXlzJ106CisgICAgICAgICAgICBpZiByb3dbJ2tleV90eXBlJ10gPT0g J2NvbHVtbic6CisgICAgICAgICAgICAgICAgcGFydGl0aW9uX3NjaGVtZSArPSBzZWxmLnF0SWRl bnQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29ubiwgcm93WydwdF9jb2x1bW4nXSkgKyAn LCAnCisgICAgICAgICAgICBlbGlmIHJvd1sna2V5X3R5cGUnXSA9PSAnZXhwcmVzc2lvbic6Cisg ICAgICAgICAgICAgICAgcGFydGl0aW9uX3NjaGVtZSArPSByb3dbJ2V4cHJlc3Npb24nXSArICcs ICcKKworICAgICAgICAjIFJlbW92ZSBleHRyYSBzcGFjZSBhbmQgY29tbWEKKyAgICAgICAgaWYg bGVuKGRhdGFbJ3BhcnRpdGlvbl9rZXlzJ10pID4gMDoKKyAgICAgICAgICAgIHBhcnRpdGlvbl9z Y2hlbWUgPSBwYXJ0aXRpb25fc2NoZW1lWzotMl0KKyAgICAgICAgcGFydGl0aW9uX3NjaGVtZSAr PSAnKScKKworICAgICAgICByZXR1cm4gcGFydGl0aW9uX3NjaGVtZQorCisgICAgQHN0YXRpY21l dGhvZAorICAgIGRlZiB2YWxpZGF0ZV9jb25zdHJhaW5zKGtleSwgZGF0YSk6CisKKyAgICAgICAg aWYga2V5ID09ICdwcmltYXJ5X2tleScgb3Iga2V5ID09ICd1bmlxdWVfY29uc3RyYWludCc6Cisg ICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkg PiAwOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbGlmIGtleSA9PSAnZm9yZWlnbl9r ZXknOgorICAgICAgICAgICAgaWYgJ29pZCcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAg Zm9yIGFyZyBpbiBbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAg ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhW2FyZ10sIGxpc3QpIGFuZCBsZW4oZGF0YVth cmddKSA8IDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg ICAgICAgICAgIGlmICdhdXRvaW5kZXgnIGluIGRhdGEgYW5kIGRhdGFbJ2F1dG9pbmRleCddIGFu ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIG5vdCBpbiBkYXRh IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFbJ2NvdmVyaW5naW5kZXgnXSA9PSAnJyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGVsaWYga2V5ID09ICdj aGVja19jb25zdHJhaW50JzoKKyAgICAgICAgICAgIGZvciBhcmcgaW4gWydjb25zcmMnXToKKyAg ICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGEgb3IgZGF0YVthcmddID09ICcnOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisK KyAgICAgICAgZWxpZiBrZXkgPT0gJ2V4Y2x1ZGVfY29uc3RyYWludCc6CisgICAgICAgICAgICBw YXNzCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg Y2hlY2tfYW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoZGF0YSk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgYW5kIGNvdmVydCB0YWJsZSB0byBzdHJpbmcg aW5jYXNlCisgICAgICAgIGl0IGlzIG51bWVyaWMKKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZGF0YTogZGF0YSBkaWN0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFVwZGF0 ZWQgZGF0YSBkaWN0CisgICAgICAgICIiIgorICAgICAgICAjIEZvciBQeXRob24yLCBpdCBjYW4g YmUgaW50LCBsb25nLCBmbG9hdAorICAgICAgICBpZiBoYXNhdHRyKHN0ciwgJ2RlY29kZScpOgor ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhWyduYW1lJ10sIChpbnQsIGxvbmcsIGZsb2F0 KSk6CisgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gc3RyKGRhdGFbJ25hbWUnXSkKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRm9yIFB5dGhvbjMsIGl0IGNhbiBiZSBpbnQsIGZs b2F0CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGFbJ25hbWUnXSwgKGludCwgZmxvYXQp KToKKyAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBzdHIoZGF0YVsnbmFtZSddKQorICAg ICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGdldF9pbmRleF9jb25zdHJhaW50X3NxbChzZWxm LCBkaWQsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAgICAg ICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20g dGhlIGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGluZGV4IGNvbnN0cmFpbnRzCisgICAgICAgIChQ cmltYXJ5IEtleSAmIFVuaXF1ZSkKKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IFtdCisgICAg ICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFi bGUKKyAgICAgICAgaW5kZXhfY29uc3RyYWludHMgPSB7CisgICAgICAgICAgICAncCc6ICdwcmlt YXJ5X2tleScsICd1JzogJ3VuaXF1ZV9jb25zdHJhaW50JworICAgICAgICB9CisKKyAgICAgICAg Zm9yIGN0eXBlIGluIGluZGV4X2NvbnN0cmFpbnRzLmtleXMoKToKKyAgICAgICAgICAgICMgQ2hl Y2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCisgICAgICAgICAgICAjIElmIHllcyB0aGVuIHdl IG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgICAgICAgICBpZiBpbmRl eF9jb25zdHJhaW50c1tjdHlwZV0gaW4gZGF0YToKKyAgICAgICAgICAgICAgICBjb25zdHJhaW50 ID0gZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dCisgICAgICAgICAgICAgICAgIyBJZiBj b25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQn IGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRb J2RlbGV0ZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsn c2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1l J10KKworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAgICAgICAgICAg ICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb c2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50 OgorICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydjaGFuZ2VkJ106Cisg ICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAg ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAg ICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1jWydvaWQnXSwgY29uc3RyYWludF90eXBlPWN0eXBl KQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEg PSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRl IG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywg b19kYXRhPW9sZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNl bGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICAgICAg Zm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNb J3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3Rh YmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8g YWRkIG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52YWxpZGF0ZV9jb25z dHJhaW5zKGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSwgYyk6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZT0nUFJJTUFSWSBL RVknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdHlwZSA9PSAncCcg ZWxzZSAnVU5JUVVFJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdc bicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgezB9IGNvbnN0cmFp bnQnLmZvcm1hdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGlm IGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5n bGUgc3RyaW5nCisgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfZm9yZWlnbl9rZXlf c3FsKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAg ICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZy b20gdGhlIGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGZvcmVpZ24ga2V5CisgICAgICAgICIiIgor ICAgICAgICBzcWwgPSBbXQorICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0 YQorICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2Uv ZGVsZXRlCisgICAgICAgIGlmICdmb3JlaWduX2tleScgaW4gZGF0YToKKyAgICAgICAgICAgIGNv bnN0cmFpbnQgPSBkYXRhWydmb3JlaWduX2tleSddCisgICAgICAgICAgICAjIElmIGNvbnN0cmFp bnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJh aW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAg ICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAg ICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAg ICAgIyBTcWwgZm9yIGRyb3AKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50Ogor ICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAg ICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAg ICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJv cGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAg ICAgICAgICBbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10pCisgICAg ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9w ZXJ0aWVzX3NxbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAg ICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAorICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcmVpZ25fa2V5X3Rl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSks IGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnZm9yZWlnbl9r ZXknLCBjKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgZm9yZWlnbl9rZXkgY29uc3RyYWludCcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorCisgICAg ICAgICAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBjOgorICAgICAgICAgICAgICAgICAgICAg ICAgY29scyA9IFtdCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29sIGluIGNbJ2NvbHVt bnMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzLmFwcGVuZChjb2xbJ2xvY2Fs X2NvbHVtbiddKQorCisgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmluZ2luZGV4ID0gc2Vs Zi5zZWFyY2hfY292ZXJpbmdpbmRleCh0aWQsIGNvbHMpCisKKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIGNvdmVyaW5naW5kZXggaXMgTm9uZSBhbmQgJ2F1dG9pbmRleCcgaW4gYyBhbmQgY1sn YXV0b2luZGV4J10gYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb3Zl cmluZ2luZGV4JyBpbiBjIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjWydjb3ZlcmluZ2luZGV4J10gIT0gJycpOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNxbC5hcHBlbmQocmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLCAnY3JlYXRl X2luZGV4LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBj b25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgorICAg ICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAg ICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAg Y1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIHRv IGFkZCBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgIyBDb2x1bW5zCisKKyAgICAgICAgICAg ICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygnZm9yZWlnbl9rZXknLCBj KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t IGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgZm9yZWlnbl9rZXkgY29uc3RyYWludCcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorCisgICAgICAgICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tl eV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisK KyAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBd WydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVfdGFibGUnXSA9IHJzZXRb J3Jvd3MnXVswXVsndGFibGUnXQorCisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisg ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgorICAgICAgICAg ICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgICAgICAgICAgaWYgY1snYXV0b2luZGV4J106CisgICAgICAgICAgICAgICAgICAg ICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9y ZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjcmVhdGVfaW5kZXguc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMg Sm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICByZXR1cm4g J1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK KworICAgIGRlZiBnZXRfY2hlY2tfY29uc3RyYWludF9zcWwoc2VsZiwgdGlkLCBkYXRhKToKKyAg ICAgICAgIiIiCisgICAgICAgICBBcmdzOgorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAg ICAgICAgIGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50CisKKyAgICAgICAg UmV0dXJuczoKKyAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQg c3FsIGZvciBjaGVjayBjb25zdHJhaW50CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQor ICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElmIHll cyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCisgICAgICAgIGlm ICdjaGVja19jb25zdHJhaW50JyBpbiBkYXRhOgorICAgICAgICAgICAgY29uc3RyYWludCA9IGRh dGFbJ2NoZWNrX2NvbnN0cmFpbnQnXQorICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlz L2FyZSBkZWxldGVkCisgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAg ICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAg ICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAg ICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3Fs IGZvciBkcm9wCisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgW3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAg ICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAg ICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAg ICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy dGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAg ICAgICBbc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNpZD1jWydvaWQnXSkKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHBy b3BlcnRpZXNfc3FsKQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0CisgICAgICAgICAgICAgICAg ICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3Ry YWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUu c3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAg Zm9yIGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2No ZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0g ZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVf Y29uc3RyYWlucygnY2hlY2tfY29uc3RyYWludCcsIGMpOgorICAgICAgICAgICAgICAgICAgICAg ICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZv ciBjaGVja19jb25zdHJhaW50JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5c bicuam9pbihzcWwpCisKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAg ICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAg ICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBh cyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAg ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfZXhjbHVz aW9uX2NvbnN0cmFpbnRfc3FsKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisg ICAgICAgICBBcmdzOgorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGRhdGE6 IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50CisKKyAgICAgICAgUmV0dXJuczoKKyAg ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBleGNs dXNpb24gY29uc3RyYWludAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gW10KKyAgICAgICAg IyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKKyAgICAgICAgIyBJZiB5ZXMgdGhlbiB3 ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0ZQorICAgICAgICBpZiAnZXhjbHVk ZV9jb25zdHJhaW50JyBpbiBkYXRhOgorICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2V4 Y2x1ZGVfY29uc3RyYWludCddCisgICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJl IGRlbGV0ZWQKKyAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgorICAgICAg ICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAgICAgICAgICAg ICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBj Wyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9y IGRyb3AKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb25zdHJhaW50OgorICAg ICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAg ICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAg ICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy dGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAg ICAgICBbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGll cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9 Y1snb2lkJ10pCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydy b3dzJ11bMF0KKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gdXBkYXRlIG9iamVjdAorICAg ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoK KyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgorICAgICAgICAg ICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAg ICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICBpZiBu b3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKCdleGNsdWRlX2NvbnN0cmFpbnQnLCBjKToKKyAg ICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRlZmlu aXRpb24gaW5jb21wbGV0ZSBmb3IgZXhjbHVzaW9uX2NvbnN0cmFpbnQnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25z dHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Yywg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKKyAg ICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAg ICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICBy ZXR1cm4gdSdcblxuJy5qb2luKHNxbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy biBOb25lCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBkaWQsIHNjaWQsIHRpZCwgZGF0YSwgcmVz KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBjcmVh dGUvdXBkYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEKKyAgICAgICAgY29taW5nIGZyb20gY2xpZW50 CisgICAgICAgICIiIgorICAgICAgICBpZiB0aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBv bGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2Zv cm1hdHRlcihkaWQsIHNjaWQsIHRpZCwgb2xkX2RhdGEpCisKKyAgICAgICAgICAgICMgV2Ugd2ls bCBjb252ZXJ0IHByaXZpbGVnZXMgY29taW5nIGZyb20gY2xpZW50IHJlcXVpcmVkCisgICAgICAg ICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGZvciBtb2RlIGluIFsn YWRkZWQnLCAnY2hhbmdlZCcsICdkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGlmIG1v ZGUgaW4gZGF0YVsncmVsYWNsJ106CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWxh Y2wnXVttb2RlXSA9IHBhcnNlX3ByaXZfdG9fZGIoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVsncmVsYWNsJ11bbW9kZV0sIHNlbGYuYWNsCisgICAgICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgICMgSWYgbmFtZSBpcyBub3QgcHJlc2VudCBpbiByZXF1ZXN0IGRh dGEKKyAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBk YXRhWyduYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgIGRhdGEgPSBCYXNl VGFibGVWaWV3LmNoZWNrX2FuZF9jb252ZXJ0X25hbWVfdG9fc3RyaW5nKGRhdGEpCisKKyAgICAg ICAgICAgICMgSWYgbmFtZSBpZiBub3QgcHJlc2VudAorICAgICAgICAgICAgaWYgJ3NjaGVtYScg bm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBvbGRfZGF0YVsn c2NoZW1hJ10KKworICAgICAgICAgICAgIyBGaWx0ZXIgb3V0IG5ldyB0YWJsZXMgZnJvbSBsaXN0 LCB3ZSB3aWxsIHNlbmQgY29tcGxldGUgbGlzdAorICAgICAgICAgICAgIyBhbmQgbm90IG5ld2x5 IGFkZGVkIHRhYmxlcyBpbiB0aGUgbGlzdCBmcm9tIGNsaWVudAorICAgICAgICAgICAgIyBzbyB3 ZSB3aWxsIGZpbHRlciBuZXcgdGFibGVzIGhlcmUKKyAgICAgICAgICAgIGlmICdjb2xsX2luaGVy aXRzJyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHBfbGVuID0gbGVuKG9sZF9kYXRhWydjb2xs X2luaGVyaXRzJ10pCisgICAgICAgICAgICAgICAgY19sZW4gPSBsZW4oZGF0YVsnY29sbF9pbmhl cml0cyddKQorICAgICAgICAgICAgICAgICMgSWYgdGFibGUocykgYWRkZWQKKyAgICAgICAgICAg ICAgICBpZiBjX2xlbiA+IHBfbGVuOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2lu aGVyaXRzX2FkZGVkJ10gPSBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGFb J2NvbGxfaW5oZXJpdHMnXSkgLSBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICMgSWYgdGFibGUocylyZW1vdmVkCisg ICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA8IHBfbGVuOgorICAgICAgICAgICAgICAgICAgICBk YXRhWydjb2xsX2luaGVyaXRzX3JlbW92ZWQnXSA9IGxpc3QoCisgICAgICAgICAgICAgICAgICAg ICAgICBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkgLSBzZXQoZGF0YVsnY29sbF9pbmhl cml0cyddKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgIyBTYWZlIHNp ZGUgdmVyaWZpY2F0aW9uLEluIGNhc2UgaXQgaGFwcGVucy4uCisgICAgICAgICAgICAgICAgIyBJ ZiB1c2VyIHJlbW92ZXMgYW5kIGFkZHMgc2FtZSBudW1iZXIgb2YgdGFibGUKKyAgICAgICAgICAg ICAgICAjIGVnIHJlbW92ZWQgb25lIHRhYmxlIGFuZCBhZGRlZCBvbmUgbmV3IHRhYmxlCisgICAg ICAgICAgICAgICAgZWxpZiBjX2xlbiA9PSBwX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sbF9pbmhlcml0c19hZGRlZCddID0gbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAg IHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pIC0gc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRz J10pCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29s bF9pbmhlcml0c19yZW1vdmVkJ10gPSBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0 KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pIC0gc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkK KyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kYXRhPW9sZF9kYXRhLCBkYXRhPWRh dGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAgICAgIyBSZW1vdmVzIHRyYWluaW5nIG5ldyBs aW5lcworICAgICAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAg ICAgICAgICMgUGFyc2UvRm9ybWF0IGNvbHVtbnMgJiBjcmVhdGUgc3FsCisgICAgICAgICAgICBp ZiAnY29sdW1ucycgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAjIFBhcnNlIHRoZSBkYXRhIGNv bWluZyBmcm9tIGNsaWVudAorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9wYXJzZV9mb3Jt YXRfY29sdW1ucyhkYXRhLCBtb2RlPSdlZGl0JykKKworICAgICAgICAgICAgICAgIGNvbHVtbnMg PSBkYXRhWydjb2x1bW5zJ10KKyAgICAgICAgICAgICAgICBjb2x1bW5fc3FsID0gJ1xuJworCisg ICAgICAgICAgICAgICAgIyBJZiBjb2x1bW4ocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAg ICAgICBpZiAnZGVsZXRlZCcgaW4gY29sdW1uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMg aW4gY29sdW1uc1snZGVsZXRlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1h J10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9 IGRhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AgY29s dW1uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnaW5oZXJpdGVkZnJvbScgbm90IGluIGM6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3NxbCArPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbHVt bl90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKKwor ICAgICAgICAgICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2FyZSBjaGFuZ2VkCisgICAgICAgICAg ICAgICAgIyBIZXJlIHdlIHdpbGwgYmUgbmVlZGluZyBwcmV2aW91cyBwcm9wZXJ0aWVzIG9mIGNv bHVtbgorICAgICAgICAgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSAmIHVwZGF0ZSBp dAorICAgICAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBpbiBjb2x1bW5zOgorICAgICAgICAgICAg ICAgICAgICBmb3IgYyBpbiBjb2x1bW5zWydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAg ICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgICAg ICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAn YXR0YWNsJyBpbiBjOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0g cGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsKQorCisgICAg ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2xpZD1jWydhdHRudW0nXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzX29iamVjdHM9c2Vs Zi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwp CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor ICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnY2x0eXBlJ10sIG9sZF9kYXRhWydoYXNTcXJC cmFja2V0J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKG9sZF9kYXRhWydjbHR5cGUnXSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gQmFzZVRhYmxlVmlldy5jb252ZXJ0X2xl bmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKG9sZF9kYXRhKQorCisgICAgICAgICAgICAgICAgICAg ICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbGRfZGF0YVsndHlwbnNwbmFtZSddLCBvbGRfZGF0YVsndHlwbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydpc2R1cCddLCBvbGRfZGF0YVsnYXR0 bmRpbXMnXSwgb2xkX2RhdGFbJ2F0dHR5cG1vZCddCisgICAgICAgICAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggJiBwcmVjaXNp b24gYm90aAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocico XGQrKSwoXGQrKScsIGZ1bGx0eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hP Ymo6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dGxlbiddID0gaW50 KG1hdGNoT2JqLmdyb3VwKDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRh WydhdHRwcmVjaXNpb24nXSA9IGludChtYXRjaE9iai5ncm91cCgyKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZl IGxlbmd0aCBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5z ZWFyY2gocicoXGQrKScsIGZ1bGx0eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IG1hdGNoT2JqOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0 bGVuJ10gPSBpbnQobWF0Y2hPYmouZ3JvdXAoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZF9kYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0 YVsnYXR0bGVuJ10gPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9k YXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICAgICAgb2xk X2RhdGFbJ2NsdHlwZSddID0gRGF0YVR5cGVSZWFkZXIucGFyc2VfdHlwZV9uYW1lKG9sZF9kYXRh WydjbHR5cGUnXSkKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGFsdGVyIGNv bHVtbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZyb20nIG5vdCBpbiBj OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9zcWwgKz0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jb2x1 bW5fdGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykgKyAnXG5cbicKKworICAgICAgICAgICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2FyZSBh ZGRlZAorICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29sdW1uczoKKyAgICAgICAgICAg ICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAg ICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAg IGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3Fs IGZvciBjcmVhdGUgY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBp biBjOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJp dl90b19kYihjWydhdHRhY2wnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAg ICAgICAgICAgICBjID0gQmFzZVRhYmxlVmlldy5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9f c3RyaW5nKGMpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdpbmhlcml0ZWRmcm9tJyBu b3QgaW4gYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fc3FsICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nl bGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKSArICdc blxuJworCisgICAgICAgICAgICAgICAgIyBDb21iaW5lIGFsbCB0aGUgU1FMIHRvZ2V0aGVyCisg ICAgICAgICAgICAgICAgU1FMICs9IGNvbHVtbl9zcWwuc3RyaXAoJ1xuJykKKworICAgICAgICAg ICAgIyBDaGVjayBmb3IgcGFydGl0aW9ucworICAgICAgICAgICAgaWYgJ3BhcnRpdGlvbnMnIGlu IGRhdGE6CisgICAgICAgICAgICAgICAgcGFydGl0aW9ucyA9IGRhdGFbJ3BhcnRpdGlvbnMnXQor ICAgICAgICAgICAgICAgIHBhcnRpdGlvbnNfc3FsID0gJ1xuJworCisgICAgICAgICAgICAgICAg IyBJZiBwYXJ0aXRpb24ocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAgICAgICAgICAgICBpZiAnZGVs ZXRlZCcgaW4gcGFydGl0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiBwYXJ0 aXRpb25zWydkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGEgPSBk aWN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lID0g XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3NjaGVtYV9hbmRfdGFibGVf bmFtZShyb3dbJ29pZCddKQorCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ3Bh cmVudF9zY2hlbWEnXSA9IG9sZF9kYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAg ICAgdGVtcF9kYXRhWydwYXJ0aXRpb25lZF90YWJsZV9uYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSdd CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ3NjaGVtYSddID0gc2NoZW1hX25h bWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsnbmFtZSddID0gdGFibGVfbmFt ZQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZGV0YWNoIHBhcnRpdGlvbgor ICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgKz0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLnBhcnRpdGlvbl90 ZW1wbGF0ZV9wYXRoLCAnZGV0YWNoLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPXRlbXBfZGF0YSwgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpICsgJ1xuXG4nCisK KyAgICAgICAgICAgICAgICAjIElmIHBhcnRpdGlvbihzKSBpcy9hcmUgYWRkZWQKKyAgICAgICAg ICAgICAgICBpZiAnYWRkZWQnIGluIHBhcnRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIHRl bXBfZGF0YSA9IGRpY3QoKQorICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ3NjaGVtYSdd ID0gb2xkX2RhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsnbmFt ZSddID0gb2xkX2RhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgcGFy dGl0aW9uIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJ0aXRpb25fdHlw ZSddID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ3BhcnRpdGlvbl9zY2hl bWUnXS5zcGxpdCgpWzBdLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydw YXJ0aXRpb25zJ10gPSBwYXJ0aXRpb25zWydhZGRlZCddCisKKyAgICAgICAgICAgICAgICAgICAg cGFydGl0aW9uc19zcWwgKz0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfcGFy dGl0aW9uc19zcWwodGVtcF9kYXRhKS5zdHJpcCgnXG4nKSArICdcblxuJworCisgICAgICAgICAg ICAgICAgIyBDb21iaW5lIGFsbCB0aGUgU1FMIHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgU1FM ICs9IHBhcnRpdGlvbnNfc3FsLnN0cmlwKCdcbicpCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYg aW5kZXggY29uc3RyYWludHMgYXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRlZAorICAgICAgICAgICAg aW5kZXhfY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9pbmRleF9jb25zdHJhaW50X3NxbChkaWQs IHRpZCwgZGF0YSkKKyAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBpbmRleCBjb25zdHJhaW50IHNx bCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCisgICAgICAgICAgICBpZiBpbmRleF9jb25zdHJhaW50 X3NxbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGluZGV4X2Nv bnN0cmFpbnRfc3FsCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgZm9yZWlnbiBrZXkocykgaXMv YXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRlZAorICAgICAgICAgICAgZm9yZWlnbl9rZXlfc3FsID0g c2VsZi5nZXRfZm9yZWlnbl9rZXlfc3FsKHRpZCwgZGF0YSkKKyAgICAgICAgICAgICMgSWYgd2Ug aGF2ZSBmb3JlaWduIGtleSBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAorICAgICAgICAgICAg aWYgZm9yZWlnbl9rZXlfc3FsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCArPSAn XG4nICsgZm9yZWlnbl9rZXlfc3FsCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgY2hlY2sgY29u c3RyYWludChzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCisgICAgICAgICAgICBjaGVj a19jb25zdHJhaW50X3NxbCA9IHNlbGYuZ2V0X2NoZWNrX2NvbnN0cmFpbnRfc3FsKHRpZCwgZGF0 YSkKKyAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBjaGVjayBjb25zdHJhaW50IHNxbCB0aGVuIGFk IGl0IGluIG1haW4gc3FsCisgICAgICAgICAgICBpZiBjaGVja19jb25zdHJhaW50X3NxbCBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGNoZWNrX2NvbnN0cmFpbnRf c3FsCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQocykgaXMv YXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRlZAorICAgICAgICAgICAgZXhjbHVzaW9uX2NvbnN0cmFp bnRfc3FsID0gc2VsZi5nZXRfZXhjbHVzaW9uX2NvbnN0cmFpbnRfc3FsKGRpZCwgdGlkLCBkYXRh KQorICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGNoZWNrIGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQg aXQgaW4gbWFpbiBzcWwKKyAgICAgICAgICAgIGlmIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCBp cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGV4Y2x1c2lvbl9jb25z dHJhaW50X3NxbAorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXMgPSBOb25lCisgICAg ICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgICAgICduYW1lJworICAgICAg ICAgICAgXQorCisgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g Z2V0dGV4dCgnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykKKworICAgICAgICAgICAgIyB2YWxp ZGF0ZSBjb25zdHJhaW50IGRhdGEuCisgICAgICAgICAgICBmb3Iga2V5IGluIFsncHJpbWFyeV9r ZXknLCAndW5pcXVlX2NvbnN0cmFpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcmVp Z25fa2V5JywgJ2NoZWNrX2NvbnN0cmFpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2V4 Y2x1ZGVfY29uc3RyYWludCddOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBs ZW4oZGF0YVtrZXldKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGZvciBjb25zdHJhaW50IGlu IGRhdGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRl X2NvbnN0cmFpbnMoa2V5LCBjb25zdHJhaW50KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tIGRl ZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgezB9Jy5mb3JtYXQoa2V5KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBXZSB3aWxsIGNvbnZlcnQgcHJpdmlsZWdl cyBjb21pbmcgZnJvbSBjbGllbnQgcmVxdWlyZWQKKyAgICAgICAgICAgICMgaW4gc2VydmVyIHNp ZGUgZm9ybWF0CisgICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgorICAgICAgICAgICAg ICAgIGRhdGFbJ3JlbGFjbCddID0gcGFyc2VfcHJpdl90b19kYihkYXRhWydyZWxhY2wnXSwgc2Vs Zi5hY2wpCisKKyAgICAgICAgICAgICMgUGFyc2UgJiBmb3JtYXQgY29sdW1ucworICAgICAgICAg ICAgZGF0YSA9IHNlbGYuX3BhcnNlX2Zvcm1hdF9jb2x1bW5zKGRhdGEpCisgICAgICAgICAgICBk YXRhID0gQmFzZVRhYmxlVmlldy5jaGVja19hbmRfY29udmVydF9uYW1lX3RvX3N0cmluZyhkYXRh KQorCisgICAgICAgICAgICBpZiAnZm9yZWlnbl9rZXknIGluIGRhdGE6CisgICAgICAgICAgICAg ICAgZm9yIGMgaW4gZGF0YVsnZm9yZWlnbl9rZXknXToKKyAgICAgICAgICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3Nl bGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X3BhcmVudC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y1snY29sdW1u cyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV9z Y2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAg Y1sncmVtb3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgICAgICAg ICAgcGFydGl0aW9uc19zcWwgPSAnJworICAgICAgICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBp biBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRpb25lZCddOgorICAgICAgICAgICAgICAgIGRhdGFb J3JlbGtpbmQnXSA9ICdwJworICAgICAgICAgICAgICAgICMgY3JlYXRlIHBhcnRpdGlvbiBzY2hl bWUKKyAgICAgICAgICAgICAgICBkYXRhWydwYXJ0aXRpb25fc2NoZW1lJ10gPSBzZWxmLmdldF9w YXJ0aXRpb25fc2NoZW1lKGRhdGEpCisgICAgICAgICAgICAgICAgcGFydGl0aW9uc19zcWwgPSBz ZWxmLmdldF9wYXJ0aXRpb25zX3NxbChkYXRhKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKwor ICAgICAgICAgICAgIyBBcHBlbmQgU1FMIGZvciBwYXJ0aXRpb25zCisgICAgICAgICAgICBTUUwg Kz0gJ1xuJyArIHBhcnRpdGlvbnNfc3FsCisKKyAgICAgICAgU1FMID0gcmUuc3ViKCdcbnsyLH0n LCAnXG5cbicsIFNRTCkKKyAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCisKKyAgICAgICAg cmV0dXJuIFNRTCwgZGF0YVsnbmFtZSddIGlmICduYW1lJyBpbiBkYXRhIGVsc2Ugb2xkX2RhdGFb J25hbWUnXQorCisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IGRhdGEsIHJlcywgcGFyZW50X2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIHVwZGF0ZSBhbiBleGlzdGluZyB0YWJsZSBvYmplY3QKKworICAgICAgICAg QXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBT ZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBT Y2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBEYXRh IHRvIHVwZGF0ZQorICAgICAgICAgICByZXM6IFRhYmxlIHByb3BlcnRpZXMKKyAgICAgICAgICAg cGFyZW50X2lkOiBwYXJlbnQgdGFibGUgaWQgaWYgY3VycmVudCB0YWJsZSBpcyBwYXJ0aXRpb24g b2YgcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHRhYmxlIGVsc2Ugbm9uZQorICAgICAgICAi IiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVsa2luZCA9IHJlc1sncmVsa2luZCddIGlm ICdyZWxraW5kJyBpbiByZXMgZWxzZSAnJworICAgICAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5n ZXRfc3FsKGRpZCwgc2NpZCwgdGlkLCBkYXRhLCByZXMpCisKKyAgICAgICAgICAgIFNRTCA9IFNR TC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisgICAgICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3Qp CisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJs ZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRf c2NoZW1hX29pZC5zcWwnXSksIHRpZD10aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlc3QgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXN0KQorCisgICAgICAgICAgICBpZiBub3QgcGFyZW50X2lkOgorICAgICAgICAgICAgICAgIHBh cmVudF9pZCA9IHNjaWQKKworICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAg ICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAg ICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkLAorICAgICAg ICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRp dGlvbiIgaWYgKCdpc19wYXJ0aXRpb25lZCcgaW4gcmVzWydyb3dzJ11bMF0gYW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVswXVsnaXNf cGFydGl0aW9uZWQnXSkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYubm9kZV90eXBlID09ICdwYXJ0aXRpb24nIGVsc2UgImljb24tdGFibGUiLAor ICAgICAgICAgICAgICAgICAgICBpc19wYXJ0aXRpb25lZD1UcnVlIGlmIHJlbGtpbmQgPT0gJ3An IGVsc2UgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHBhcmVudF9zY2hlbWFfaWQ9c2NpZCwK KyAgICAgICAgICAgICAgICAgICAgc2NoZW1hX2lkPXJlc3RbJ3Jvd3MnXVswXVsnc2NpZCddLAor ICAgICAgICAgICAgICAgICAgICBzY2hlbWFfbmFtZT1yZXN0Wydyb3dzJ11bMF1bJ25zcG5hbWUn XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQsIHJlcyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg c2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6ICBEYXRhYmFzZSBJRAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg IHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgIHJlczogVGFibGUvUGFydGl0aW9uIHRhYmxlIHBy b3BlcnRpZXMKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBvZiBzZWxlY3Rl ZCB0YWJsZSBub2RlCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nfc3RyJ10gPSAiIgorCisgICAgICAgIGlm IGRhdGFbJ3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHInXSBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgIGRhdGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHInXSArPSBkYXRhWworICAgICAgICAgICAgICAg ICd0YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyJ10ucmVwbGFjZSgnLCcsICdcbicpCisKKyAgICAg ICAgaWYgZGF0YVsndG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciddIGlzIG5vdCBOb25l OgorICAgICAgICAgICAgZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0ciddICs9ICdcbicgKyAnXG4n LmpvaW4oCisgICAgICAgICAgICAgICAgWyd0b2FzdF8nICsgc2V0dGluZyBmb3Igc2V0dGluZyBp biBkYXRhWworICAgICAgICAgICAgICAgICAgICAndG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdz X3N0cicKKyAgICAgICAgICAgICAgICBdLnNwbGl0KCcsJyldCisgICAgICAgICAgICApCisgICAg ICAgIGRhdGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHInXSA9IGRhdGFbCisgICAgICAgICAgICAndmFj dXVtX3NldHRpbmdzX3N0cicKKyAgICAgICAgXS5yZXBsYWNlKCI9IiwgIiA9ICIpCisKKyAgICAg ICAgZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRpZCwgZGF0YSkKKworICAgICAg ICAjIEZldGNoIHBhcnRpdGlvbiBvZiB0aGlzIHRhYmxlIGlmIGl0IGlzIHBhcnRpdGlvbmVkIHRh YmxlLgorICAgICAgICBpZiAnaXNfcGFydGl0aW9uZWQnIGluIGRhdGEgYW5kIGRhdGFbJ2lzX3Bh cnRpdGlvbmVkJ106CisgICAgICAgICAgICAjIGdldCB0aGUgcGFydGl0aW9uIHR5cGUKKyAgICAg ICAgICAgIGRhdGFbJ3BhcnRpdGlvbl90eXBlJ10gPSBkYXRhWydwYXJ0aXRpb25fc2NoZW1lJ10u c3BsaXQoKVswXS5sb3dlcigpCisKKyAgICAgICAgICAgIHBhcnRpdGlvbnMgPSBbXQorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn bm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2Np ZCwgdGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9u YW1lID0gcm93WyduYW1lJ10KKyAgICAgICAgICAgICAgICAjIGlmIHNjaGVtYSBuYW1lIGlzIGRp ZmZlcmVudCB0aGVuIGRpc3BsYXkgc2NoZW1hCisgICAgICAgICAgICAgICAgIyBxdWFsaWZpZWQg bmFtZSBvbiBVSS4KKyAgICAgICAgICAgICAgICBpZiBkYXRhWydzY2hlbWEnXSAhPSByb3dbJ3Nj aGVtYV9uYW1lJ106CisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9uYW1lID0gcm93Wydz Y2hlbWFfbmFtZSddICsgJy4nICsgcm93WyduYW1lJ10KKworICAgICAgICAgICAgICAgIGlmIGRh dGFbJ3BhcnRpdGlvbl90eXBlJ10gPT0gJ3JhbmdlJzoKKyAgICAgICAgICAgICAgICAgICAgcmFu Z2VfcGFydCA9IHJvd1sncGFydGl0aW9uX3ZhbHVlJ10uc3BsaXQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0ZPUiBWQUxVRVMgRlJPTSAoJylbMV0uc3BsaXQoJykgVE8nKQorICAgICAg ICAgICAgICAgICAgICByYW5nZV9mcm9tID0gcmFuZ2VfcGFydFswXQorICAgICAgICAgICAgICAg ICAgICByYW5nZV90byA9IHJhbmdlX3BhcnRbMV1bMjotMV0KKworICAgICAgICAgICAgICAgICAg ICBwYXJ0aXRpb25zLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAnb2lkJzogcm93 WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0aXRpb25fbmFtZSc6IHBhcnRp dGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlc19mcm9tJzogcmFuZ2Vf ZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXNfdG8nOiByYW5nZV90bworICAg ICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgIHJhbmdlX3BhcnQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ3BhcnRp dGlvbl92YWx1ZSddLnNwbGl0KCdGT1IgVkFMVUVTIElOICgnKVsxXQorCisgICAgICAgICAgICAg ICAgICAgIHJhbmdlX2luID0gcmFuZ2VfcGFydFs6LTFdCisgICAgICAgICAgICAgICAgICAgIHBh cnRpdGlvbnMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdvaWQnOiByb3dbJ29p ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogcGFydGl0aW9u X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzX2luJzogcmFuZ2VfaW4KKyAg ICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICAgICAgZGF0YVsncGFydGl0aW9ucyddID0g cGFydGl0aW9ucworCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg cmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg ZGVmIGdldF9wYXJ0aXRpb25zX3NxbChzZWxmLCBwYXJ0aXRpb25zKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBpdGVyYXRlIGFsbCB0aGUgcGFydGl0aW9ucyBhbmQg Y3JlYXRlIFNRTC4KKworICAgICAgICA6cGFyYW0gcGFydGl0aW9uczogTGlzdCBvZiBwYXJ0aXRp b25zCisgICAgICAgICIiIgorICAgICAgICBzcWwgPSAnJworCisgICAgICAgIGZvciByb3cgaW4g cGFydGl0aW9uc1sncGFydGl0aW9ucyddOgorICAgICAgICAgICAgcGFydF9kYXRhID0gZGljdCgp CisgICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRpdGlvbmVkX3RhYmxlX25hbWUnXSA9IHBhcnRp dGlvbnNbJ25hbWUnXQorICAgICAgICAgICAgcGFydF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBw YXJ0aXRpb25zWydzY2hlbWEnXQorCisgICAgICAgICAgICBpZiAnaXNfYXR0YWNoJyBpbiByb3cg YW5kIHJvd1snaXNfYXR0YWNoJ106CisgICAgICAgICAgICAgICAgc2NoZW1hX25hbWUsIHRhYmxl X25hbWUgPSBcCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3NjaGVtYV9hbmRfdGFibGVf bmFtZShyb3dbJ3BhcnRpdGlvbl9uYW1lJ10pCisKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFb J3NjaGVtYSddID0gc2NoZW1hX25hbWUKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ25hbWUn XSA9IHRhYmxlX25hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFydF9k YXRhWydzY2hlbWEnXSA9IHBhcnRpdGlvbnNbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgcGFy dF9kYXRhWydyZWxpc3BhcnRpdGlvbiddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHBhcnRfZGF0 YVsnbmFtZSddID0gcm93WydwYXJ0aXRpb25fbmFtZSddCisKKyAgICAgICAgICAgIGlmIHBhcnRp dGlvbnNbJ3BhcnRpdGlvbl90eXBlJ10gPT0gJ3JhbmdlJzoKKyAgICAgICAgICAgICAgICByYW5n ZV9mcm9tID0gcm93Wyd2YWx1ZXNfZnJvbSddLnNwbGl0KCcsJykKKyAgICAgICAgICAgICAgICBy YW5nZV90byA9IHJvd1sndmFsdWVzX3RvJ10uc3BsaXQoJywnKQorCisgICAgICAgICAgICAgICAg ZnJvbV9zdHIgPSAnLCAnLmpvaW4oInswfSIuZm9ybWF0KGl0ZW0pIGZvciBpdGVtIGluIHJhbmdl X2Zyb20pCisgICAgICAgICAgICAgICAgdG9fc3RyID0gJywgJy5qb2luKCJ7MH0iLmZvcm1hdChp dGVtKSBmb3IgaXRlbSBpbiByYW5nZV90bykKKworICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsn cGFydGl0aW9uX3ZhbHVlJ10gPSAnRk9SIFZBTFVFUyBGUk9NICgnICsgZnJvbV9zdHIgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICcpIFRPICgnICsg dG9fc3RyICsgJyknCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhbmdlX2lu ID0gcm93Wyd2YWx1ZXNfaW4nXS5zcGxpdCgnLCcpCisgICAgICAgICAgICAgICAgaW5fc3RyID0g JywgJy5qb2luKCJ7MH0iLmZvcm1hdChpdGVtKSBmb3IgaXRlbSBpbiByYW5nZV9pbikKKyAgICAg ICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRpdGlvbl92YWx1ZSddID0gJ0ZPUiBWQUxVRVMgSU4g KCcgKyBpbl9zdHIgKyAnKScKKworICAgICAgICAgICAgaWYgJ2lzX2F0dGFjaCcgaW4gcm93IGFu ZCByb3dbJ2lzX2F0dGFjaCddOgorICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9zcWwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnBhcnRpdGlv bl90ZW1wbGF0ZV9wYXRoLCAnYXR0YWNoLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0 YT1wYXJ0X2RhdGEsIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25fc3FsID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVf cGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cGFydF9kYXRh LCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3FsICs9 IHBhcnRpdGlvbl9zcWwgKyAnXG4nCisKKyAgICAgICAgcmV0dXJuIHNxbAorCisgICAgZGVmIHRy dW5jYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmVzKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB0cnVuY2F0ZSB0aGUgdGFibGUgb2JqZWN0CisK KyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAg ICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgIiIi CisgICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9w IHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVz dC5mb3JtIGVsc2UganNvbi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rp bmc9J3V0Zi04JworICAgICAgICApCisgICAgICAgICMgQ29udmVydCBzdHIgJ3RydWUnIHRvIGJv b2xlYW4gdHlwZQorICAgICAgICBpc19jYXNjYWRlID0ganNvbi5sb2FkcyhkYXRhWydjYXNjYWRl J10pCisKKyAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RydW5jYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY2FzY2FkZT1pc19jYXNjYWRlKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJUYWJsZSB0 cnVuY2F0ZWQiKSwKKyAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICdpZCc6IHRp ZCwKKyAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAgICAgIH0KKyAgICAgICAg KQorCisgICAgZGVmIGdldF9zY2hlbWFfYW5kX3RhYmxlX25hbWUoc2VsZiwgdGlkKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgc2NoZW1hIHF1YWxp ZmllZCBuYW1lIG9mIHRoZQorICAgICAgICBnaXZlbiB0YWJsZSBpZC4KKworICAgICAgICA6cGFy YW0gdGlkOiBUYWJsZSBJZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgR2V0IHNjaGVtYSBvaWQK KyAgICAgICAgc3RhdHVzLCBzY2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAg ICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc2NoZW1hX29pZC5z cWwnXSksIHRpZD10aWQpKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2lkKQorCisgICAgICAgICMgRmV0 Y2ggc2NoZW1hIG5hbWUKKyAgICAgICAgc3RhdHVzLCBzY2hlbWFfbmFtZSA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZ2V0X3NjaGVtYS5zcWwnXSksIGNvbm49c2VsZi5jb25uLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCkKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hl bWFfbmFtZSkKKworICAgICAgICAjIEZldGNoIFRhYmxlIG5hbWUKKyAgICAgICAgc3RhdHVzLCB0 YWJsZV9uYW1lID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRl X3BhdGgsICdnZXRfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25u LCBzY2lkPXNjaWQsIHRpZD10aWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz10YWJsZV9uYW1lKQorCisgICAgICAgIHJldHVybiBzY2hlbWFfbmFtZSwgdGFibGVf bmFtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjb252ZXJ0X2xlbmd0aF9wcmVjaXNp b25fdG9fc3RyaW5nKGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGNvbnZlcnQgbGVuZ3RoICYgcHJlY2lzaW9uIHRvIHN0cmluZworICAgICAgICB0 byBoYW5kbGUgY2FzZSBsaWtlIHdoZW4gdXNlciBnaXZlcyAwIGFzIGxlbmd0aAorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBkYXRhOiBEYXRhIGZyb20gY2xpZW50CisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIENvbnZlcnRlZCBkYXRhCisgICAgICAgICIiIgorICAgICAgICBp ZiAnYXR0bGVuJyBpbiBkYXRhIGFuZCBkYXRhWydhdHRsZW4nXSBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgIGRhdGFbJ2F0dGxlbiddID0gc3RyKGRhdGFbJ2F0dGxlbiddKQorICAgICAgICBpZiAn YXR0cHJlY2lzaW9uJyBpbiBkYXRhIGFuZCBkYXRhWydhdHRwcmVjaXNpb24nXSBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIGRhdGFbJ2F0dHByZWNpc2lvbiddID0gc3RyKGRhdGFbJ2F0dHByZWNp c2lvbiddKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHNlYXJjaF9jb3ZlcmluZ2lu ZGV4KHNlbGYsIHRpZCwgY29scyk6CisgICAgICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgdGlkOiBUYWJsZSBpZAorICAgICAgICAgIGNvbHM6IGNvbHVtbiBsaXN0CisKKyAgICAg ICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKworICAgICAgICBjb2xzID0gc2V0KGNvbHMpCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfY29uc3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlk PXRpZCkKKyAgICAgICAgc3RhdHVzLCBjb25zdHJhaW50cyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oY29uc3RyYWludHMpCisKKyAgICAgICAgZm9yIGNvc3RybnQgaW4gY29uc3RyYWludHNb J3Jvd3MnXToKKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdnZXRfY29s cy5zcWwnXSksCisgICAgICAgICAgICAgICAgY2lkPWNvc3RybnRbJ29pZCddLAorICAgICAgICAg ICAgICAgIGNvbGNudD1jb3N0cm50WydpbmRuYXR0cyddKQorICAgICAgICAgICAgc3RhdHVzLCBy ZXN0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXN0KQorCisgICAgICAgICAgICBpbmRleGNvbHMgPSBzZXQoKQorICAgICAgICAgICAg Zm9yIHIgaW4gcmVzdFsncm93cyddOgorICAgICAgICAgICAgICAgIGluZGV4Y29scy5hZGQoclsn Y29sdW1uJ10uc3RyaXAoJyInKSkKKworICAgICAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRleGNv bHMpID09IGxlbihpbmRleGNvbHMgLSBjb2xzKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVy biBjb3N0cm50WyJpZHhuYW1lIl0KKworICAgICAgICByZXR1cm4gTm9uZQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdXRpbHMucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3V0aWxzLnB5CmluZGV4IGFjYzE2NjIuLjNiYzg4MDAgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci91dGlscy5weQpAQCAtMzIxLDYgKzMyMSwxMSBAQCBjbGFzcyBQR0NoaWxkTm9kZVZp ZXcoTm9kZVZpZXcpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIFBHQ2hpbGRN b2R1bGUpOgogICAgICAgICAgICAgICAgIGlmIG1hbmFnZXIgaXMgbm90IE5vbmUgYW5kIFwKICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5CYWNrZW5kU3VwcG9ydGVkKG1hbmFnZXIsICoq a3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgIyB0cmVhdCBwYXJ0aXRpb24gdGFibGUgYXMg bm9ybWFsIHRhYmxlLgorICAgICAgICAgICAgICAgICAgICAjIHJlcGxhY2UgdGlkIHdpdGggcHRp ZCBhbmQgcG9wIHB0aWQgZnJvbSBrd2FyZ3MKKyAgICAgICAgICAgICAgICAgICAgaWYgJ3B0aWQn IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHB0aWQgPSBrd2FyZ3MucG9wKCdw dGlkJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sndGlkJ10gPSBwdGlkCiAgICAg ICAgICAgICAgICAgICAgIG5vZGVzLmV4dGVuZChtb2R1bGUuZ2V0X25vZGVzKCoqa3dhcmdzKSkK ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbm9kZXMuZXh0ZW5kKG1vZHVsZS5n ZXRfbm9kZXMoKiprd2FyZ3MpKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2Jh Y2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1p bi5qcwppbmRleCBhODIyMDVlLi5jZDhmNTg4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFj a2Zvcm0ucGdhZG1pbi5qcwpAQCAtMTAyMiwxNiArMTAyMiwxNiBAQAogCiAgICAgICB2YXIgY29s bGVjdGlvbiA9IHRoaXMubW9kZWwuZ2V0KGRhdGEubmFtZSk7CiAKLSAgICAgIHZhciBjZWxsRWRp dGluZyA9IGZ1bmN0aW9uKGFyZ3MpewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICB2 YXIgY2VsbEVkaXRpbmcgPSBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgIHZhciB0aGF0ID0gdGhp cywKICAgICAgICAgICBjZWxsID0gYXJnc1swXTsKICAgICAgICAgLy8gU2VhcmNoIGZvciBhbnkg b3RoZXIgcm93cyB3aGljaCBhcmUgb3Blbi4KICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG0p ewogICAgICAgICAgIC8vIENoZWNrIGlmIHJvdyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gY2xvc2Ug aXMgbm90IGN1cnJlbnQgcm93LgogICAgICAgICAgIGlmIChjZWxsLm1vZGVsICE9IG0pIHsKLSAg ICAgICAgICAgIHZhciBpZHggPSBzZWxmLmluZGV4T2YobSk7CisgICAgICAgICAgICB2YXIgaWR4 ID0gdGhhdC5pbmRleE9mKG0pOwogICAgICAgICAgICAgaWYgKGlkeCA+IC0xKSB7Ci0gICAgICAg ICAgICAgIHZhciByb3cgPSBncmlkLmJvZHkucm93c1tpZHhdLAorICAgICAgICAgICAgICB2YXIg cm93ID0gc2VsZi5ncmlkLmJvZHkucm93c1tpZHhdLAogICAgICAgICAgICAgICAgICAgZWRpdENl bGwgPSByb3cuJGVsLmZpbmQoIi5zdWJub2RlLWVkaXQtaW4tcHJvY2VzcyIpLnBhcmVudCgpOwog ICAgICAgICAgICAgICAvLyBPbmx5IGNsb3NlIHJvdyBpZiBpdCdzIG9wZW4uCiAgICAgICAgICAg ICAgIGlmIChlZGl0Q2VsbC5sZW5ndGggPiAwKXsKQEAgLTEwNTMsNyArMTA1Myw3IEBACiAgICAg ICB9KTsKIAogICAgICAgLy8gUmVuZGVyIHN1Yk5vZGUgZ3JpZAotICAgICAgc3ViTm9kZUdyaWQg PSBncmlkLnJlbmRlcigpLiRlbDsKKyAgICAgIHN1Yk5vZGVHcmlkID0gc2VsZi5ncmlkLnJlbmRl cigpLiRlbDsKIAogICAgICAgLy8gQ29tYmluZSBFZGl0IGFuZCBEZWxldGUgQ2VsbAogICAgICAg aWYgKGRhdGEuY2FuRGVsZXRlICYmIGRhdGEuY2FuRWRpdCkgewpAQCAtMTA3MSw3ICsxMDcxLDcg QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbkFkZFJvdy5hcHBseShzZWxm LCBbc2VsZi5tb2RlbF0pIDogdHJ1ZTsKICAgICAgICAgICBpZiAoY2FuQWRkUm93KSB7CiAgICAg ICAgICAgICAgIC8vIENsb3NlIGFueSBleGlzdGluZyBleHBhbmRlZCByb3cgYmVmb3JlIGFkZGlu ZyBuZXcgb25lLgotICAgICAgICAgICAgICBfLmVhY2goZ3JpZC5ib2R5LnJvd3MsIGZ1bmN0aW9u KHJvdyl7CisgICAgICAgICAgICAgIF8uZWFjaChzZWxmLmdyaWQuYm9keS5yb3dzLCBmdW5jdGlv bihyb3cpewogICAgICAgICAgICAgICAgIHZhciBlZGl0Q2VsbCA9IHJvdy4kZWwuZmluZCgiLnN1 Ym5vZGUtZWRpdC1pbi1wcm9jZXNzIikucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gT25s eSBjbG9zZSByb3cgaWYgaXQncyBvcGVuLgogICAgICAgICAgICAgICAgIGlmIChlZGl0Q2VsbC5s ZW5ndGggPiAwKXsKQEAgLTExMDAsNyArMTEwMCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgJChncmlkLmJvZHkuJGVsLmZpbmQoJCgidHIu bmV3IikpKS5yZW1vdmVDbGFzcygibmV3IikKKyAgICAgICAgICAgICAgJChzZWxmLmdyaWQuYm9k eS4kZWwuZmluZCgkKCJ0ci5uZXciKSkpLnJlbW92ZUNsYXNzKCJuZXciKQogICAgICAgICAgICAg ICB2YXIgbSA9IG5ldyAoZGF0YS5tb2RlbCkgKG51bGwsIHsKICAgICAgICAgICAgICAgICBzaWxl bnQ6IHRydWUsCiAgICAgICAgICAgICAgICAgaGFuZGxlcjogY29sbGVjdGlvbiwKQEAgLTExMTEs NyArMTExMSw3IEBACiAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uYWRkKG0pOwogCiAgICAgICAg ICAgICAgIHZhciBpZHggPSBjb2xsZWN0aW9uLmluZGV4T2YobSksCi0gICAgICAgICAgICAgICAg ICBuZXdSb3cgPSBncmlkLmJvZHkucm93c1tpZHhdLiRlbDsKKyAgICAgICAgICAgICAgICAgIG5l d1JvdyA9IHNlbGYuZ3JpZC5ib2R5LnJvd3NbaWR4XS4kZWw7CiAKICAgICAgICAgICAgICAgbmV3 Um93LmFkZENsYXNzKCJuZXciKTsKICAgICAgICAgICAgICAgJChuZXdSb3cpLnBnTWFrZVZpc2li bGUoJ2JhY2tmb3JtLXRhYicpOwpAQCAtMTE0OSw2ICsxMTQ5LDcgQEAKICAgfSk7CiAKICAgdmFy IFN1Yk5vZGVDb2xsZWN0aW9uQ29udHJvbCA9IEJhY2tmb3JtLlN1Yk5vZGVDb2xsZWN0aW9uQ29u dHJvbCA9IEJhY2tmb3JtLkNvbnRyb2wuZXh0ZW5kKHsKKyAgICByb3c6IEJhY2tncmlkLlJvdywK ICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewogICAgICAgdmFyIGZpZWxkID0gXy5kZWZhdWx0cyh0 aGlzLmZpZWxkLnRvSlNPTigpLCB0aGlzLmRlZmF1bHRzKSwKICAgICAgICAgICBhdHRyaWJ1dGVz ID0gdGhpcy5tb2RlbC50b0pTT04oKSwKQEAgLTExNzksNiArMTE4MCwxMiBAQAogICAgICAgLy8g U2hvdyBCYWNrZ3JpZCBDb250cm9sCiAgICAgICBncmlkID0gKGRhdGEuc3Vibm9kZSA9PSB1bmRl ZmluZWQpID8gIiIgOiB0aGlzLnNob3dHcmlkQ29udHJvbChkYXRhKTsKIAorICAgICAgLy8gQ2xl YW4gdXAgZmlyc3QKKyAgICAgIHRoaXMuJGVsLnJlbW92ZUNsYXNzKEJhY2tmb3JtLmhpZGRlbkNs YXNzbmFtZSk7CisKKyAgICAgIGlmICghZGF0YS52aXNpYmxlKQorICAgICAgICB0aGlzLiRlbC5h ZGRDbGFzcyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUpOworCiAgICAgICB0aGlzLiRlbC5odG1s KGdyaWQpLmFkZENsYXNzKGZpZWxkLm5hbWUpOwogICAgICAgdGhpcy51cGRhdGVJbnZhbGlkKCk7 CiAKQEAgLTEyNDYsNyArMTI1Myw5IEBACiAgICAgICAgICAgICBuYW1lOiAicGctYmFja2Zvcm0t ZGVsZXRlIiwgbGFiZWw6ICIiLAogICAgICAgICAgICAgY2VsbDogQmFja2dyaWQuRXh0ZW5zaW9u LkRlbGV0ZUNlbGwsCiAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIGNlbGxfcHJpb3JpdHk6 IC0xLAotICAgICAgICAgICAgY2FuRGVsZXRlUm93OiBkYXRhLmNhbkRlbGV0ZVJvdworICAgICAg ICAgICAgY2FuRGVsZXRlUm93OiBkYXRhLmNhbkRlbGV0ZVJvdywKKyAgICAgICAgICAgIGN1c3Rv bURlbGV0ZU1zZzogZGF0YS5jdXN0b21EZWxldGVNc2csCisgICAgICAgICAgICBjdXN0b21EZWxl dGVUaXRsZTogZGF0YS5jdXN0b21EZWxldGVUaXRsZQogICAgICAgICAgIH0pOwogICAgICAgfQog CkBAIC0xMzAzLDYgKzEzMTIsNyBAQAogICAgICAgdmFyIGdyaWQgPSBzZWxmLmdyaWQgPSBuZXcg QmFja2dyaWQuR3JpZCh7CiAgICAgICAgICAgY29sdW1uczogZ3JpZFNjaGVtYS5jb2x1bW5zLAog ICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24sCisgICAgICAgICAgcm93OiB0aGlzLnJv dywKICAgICAgICAgICBjbGFzc05hbWU6ICJiYWNrZ3JpZCB0YWJsZS1ib3JkZXJlZCIKICAgICAg IH0pOwogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1p bi5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC5wZ2FkbWluLmpzCmluZGV4IDY0 ZjBjYjYuLmQ0MjZhODIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3Jp ZC5wZ2FkbWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC5wZ2FkbWlu LmpzCkBAIC0zODAsNyArMzgwLDggQEAKIAogICB2YXIgRGVsZXRlQ2VsbCA9IEJhY2tncmlkLkV4 dGVuc2lvbi5EZWxldGVDZWxsID0gQmFja2dyaWQuQ2VsbC5leHRlbmQoewogICAgICAgZGVmYXVs dHM6IF8uZGVmYXVsdHMoewotICAgICAgICBkZWZhdWx0RGVsZXRlTXNnOiAnQXJlIHlvdSBzdXJl IHlvdSB3aXNoIHRvIGRlbGV0ZSB0aGlzIHJvdz8nCisgICAgICAgIGRlZmF1bHREZWxldGVNc2c6 ICdBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gZGVsZXRlIHRoaXMgcm93PycsCisgICAgICAgIGRl ZmF1bHREZWxldGVUaXRsZTogJ0RlbGV0ZSBSb3cnCiAgICAgICB9LCBCYWNrZ3JpZC5DZWxsLnBy b3RvdHlwZS5kZWZhdWx0cyksCiAKICAgICAgIC8qKiBAcHJvcGVydHkgKi8KQEAgLTM5OSw4ICs0 MDAsMTAgQEAKICAgICAgICAgaWYgKGNhbkRlbGV0ZVJvdykgewogICAgICAgICAgIHZhciBkZWxl dGVfbXNnID0gIV8uaXNVbmRlZmluZWQodGhpcy5jb2x1bW4uZ2V0KCdjdXN0b21EZWxldGVNc2cn KSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW4uZ2V0KCdjdXN0b21E ZWxldGVNc2cnKTogdGhhdC5kZWZhdWx0cy5kZWZhdWx0RGVsZXRlTXNnOworICAgICAgICAgIHZh ciBkZWxldGVfdGl0bGUgPSAhXy5pc1VuZGVmaW5lZCh0aGlzLmNvbHVtbi5nZXQoJ2N1c3RvbURl bGV0ZVRpdGxlJykpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uLmdl dCgnY3VzdG9tRGVsZXRlVGl0bGUnKTogdGhhdC5kZWZhdWx0cy5kZWZhdWx0RGVsZXRlVGl0bGU7 CiAgICAgICAgICAgQWxlcnRpZnkuY29uZmlybSgKLSAgICAgICAgICAgICdEZWxldGUgUm93JywK KyAgICAgICAgICAgIGRlbGV0ZV90aXRsZSwKICAgICAgICAgICAgIGRlbGV0ZV9tc2csCiAgICAg ICAgICAgICBmdW5jdGlvbihldnQpIHsKICAgICAgICAgICAgICAgdGhhdC5tb2RlbC5jb2xsZWN0 aW9uLnJlbW92ZSh0aGF0Lm1vZGVsKTsKQEAgLTEzNzgsNiArMTM4MSw1OCBAQAogCiAgIF8uZXh0 ZW5kKE1vbWVudENlbGwucHJvdG90eXBlLCBNb21lbnRGb3JtYXR0ZXIucHJvdG90eXBlLmRlZmF1 bHRzKTsKIAorCisgIEJhY2tncmlkLkV4dGVuc2lvbi5TdHJpbmdEZXBDZWxsID0gQmFja2dyaWQu U3RyaW5nQ2VsbC5leHRlbmQoeworICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CisgICAg ICAgIEJhY2tncmlkLlN0cmluZ0NlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywg YXJndW1lbnRzKTsKKyAgICAgICAgQmFja2dyaWQuRXh0ZW5zaW9uLkRlcGVuZGVudENlbGwucHJv dG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgIH0sCisgICAg ICBkZXBlbmRlbnRDaGFuZ2VkOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuJGVsLmVtcHR5 KCk7CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgbW9kZWwgPSB0aGlz Lm1vZGVsLAorICAgICAgICAgICAgY29sdW1uID0gdGhpcy5jb2x1bW4sCisgICAgICAgICAgICBl ZGl0YWJsZSA9IHRoaXMuY29sdW1uLmdldCgiZWRpdGFibGUiKTsKKworICAgICAgICB0aGlzLnJl bmRlcigpOworCisgICAgICAgIGlzX2VkaXRhYmxlID0gXy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ ICEhZWRpdGFibGUuYXBwbHkoY29sdW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7CisgICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2VsZi4kZWwucmVtb3ZlQ2xhc3Mo ImVkaXRvciIpOworICAgICAgICAgIGlmIChpc19lZGl0YWJsZSl7IHNlbGYuJGVsLmFkZENsYXNz KCJlZGl0YWJsZSIpOyB9CisgICAgICAgICAgZWxzZSB7IHNlbGYuJGVsLnJlbW92ZUNsYXNzKCJl ZGl0YWJsZSIpOyB9CisgICAgICAgIH0sIDEwKTsKKworICAgICAgICB0aGlzLmRlbGVnYXRlRXZl bnRzKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFj a2dyaWQuRXh0ZW5zaW9uLkRlcGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZQorICAgIH0pOwor CisgIEJhY2tncmlkLkV4dGVuc2lvbi5TZWxlY3QyRGVwQ2VsbCA9IEJhY2tncmlkLkV4dGVuc2lv bi5TZWxlY3QyQ2VsbC5leHRlbmQoeworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAg ICAgQmFja2dyaWQuRXh0ZW5zaW9uLlNlbGVjdDJDZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5kZW50 Q2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0s CisKKyAgICBkZXBlbmRlbnRDaGFuZ2VkOiBmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgbW9kZWwg PSB0aGlzLm1vZGVsOworICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uOworICAgICAgZWRp dGFibGUgPSB0aGlzLmNvbHVtbi5nZXQoImVkaXRhYmxlIik7CisKKyAgICAgIHRoaXMucmVuZGVy KCk7CisKKyAgICAgIGlzX2VkaXRhYmxlID0gXy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ICEhZWRp dGFibGUuYXBwbHkoY29sdW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7CisgICAgICBpZiAoaXNf ZWRpdGFibGUpeyB0aGlzLiRlbC5hZGRDbGFzcygiZWRpdGFibGUiKTsgfQorICAgICAgZWxzZSB7 IHRoaXMuJGVsLnJlbW92ZUNsYXNzKCJlZGl0YWJsZSIpOyB9CisKKyAgICAgIHRoaXMuZGVsZWdh dGVFdmVudHMoKTsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisgICAgcmVtb3ZlOiBCYWNr Z3JpZC5FeHRlbnNpb24uRGVwZW5kZW50Q2VsbC5wcm90b3R5cGUucmVtb3ZlCisgIH0pOworCiAg IHJldHVybiBCYWNrZ3JpZDsKIAogfSkpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv YmFja3VwL3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMv YmFja3VwL3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzCmluZGV4IDg3NGJiZWIuLjhlOTZk MWIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3Vw L2pzL2JhY2t1cC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVtcGxhdGVzL2Jh Y2t1cC9qcy9iYWNrdXAuanMKQEAgLTI2OSw3ICsyNjksNyBAQCBUT0RPIExJU1QgRk9SIEJBQ0tV UDoKIAogICAgICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCBiYWNrdXAgY29u dGV4dCBtZW51IG9wdGlvbiBhcHBlYXJzCiAgICAgICAgIHZhciBiYWNrdXBfc3VwcG9ydGVkX25v ZGVzID0gWwotICAgICAgICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywgJ3RhYmxlJworICAg ICAgICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywgJ3RhYmxlJywgJ3BhcnRpdGlvbicKICAg ICAgICAgICAgIF07CiAKICAgICAgICAgLyoqCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL19faW5p dF9fLnB5CmluZGV4IGY0NjI5ZmMuLmY4YTdlNGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L19faW5pdF9fLnB5CkBAIC0xMTIsNiArMTEyLDEwIEBAIGRlZiBpbml0aWFsaXplX2RhdGFncmlk KGNtZF90eXBlLCBvYmpfdHlwZSwgc2lkLCBkaWQsIG9ial9pZCk6CiAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKG1zZykpCiAKICAgICB0cnk6CisgICAg ICAgICMgaWYgb2JqZWN0IHR5cGUgaXMgcGFydGl0aW9uIHRoZW4gaXQgaXMgbm90aGluZyBidXQg YSB0YWJsZS4KKyAgICAgICAgaWYgb2JqX3R5cGUgPT0gJ3BhcnRpdGlvbic6CisgICAgICAgICAg ICBvYmpfdHlwZSA9ICd0YWJsZScKKwogICAgICAgICAjIEdldCB0aGUgb2JqZWN0IGFzIHBlciB0 aGUgb2JqZWN0IHR5cGUKICAgICAgICAgY29tbWFuZF9vYmogPSBPYmplY3RSZWdpc3RyeS5nZXRf b2JqZWN0KG9ial90eXBlLCBjb25uX2lkPWNvbm5faWQsIHNpZD1zaWQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBvYmpfaWQ9b2JqX2lk LCBjbWRfdHlwZT1jbWRfdHlwZSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFn cmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9qcy9kYXRhZ3JpZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9qcy9kYXRhZ3JpZC5qcwppbmRleCA3YzQ4ZWE1 Li42MzA2N2YwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0 ZXMvZGF0YWdyaWQvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdy aWQvdGVtcGxhdGVzL2RhdGFncmlkL2pzL2RhdGFncmlkLmpzCkBAIC0yOCw3ICsyOCw3IEBAIGRl ZmluZShbCiAgICAgICAgIC8vIERlZmluZSBsaXN0IG9mIG5vZGVzIG9uIHdoaWNoIHZpZXcgZGF0 YSBvcHRpb24gYXBwZWFycwogICAgICAgICB2YXIgc3VwcG9ydGVkX25vZGVzID0gWwogICAgICAg ICAgICAndGFibGUnLCAndmlldycsICdtdmlldycsCi0gICAgICAgICAgICdmb3JlaWduLXRhYmxl JywgJ2NhdGFsb2dfb2JqZWN0JworICAgICAgICAgICAnZm9yZWlnbi10YWJsZScsICdjYXRhbG9n X29iamVjdCcsICdwYXJ0aXRpb24nCiAgICAgICAgIF0sCiAKICAgICAgICAgLyogRW5hYmxlL2Rp c2FibGUgVmlldyBkYXRhIG1lbnUgaW4gdG9vbHMgYmFzZWQKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3RlbXBsYXRlcy9tYWludGVuYW5jZS9qcy9tYWludGVuYW5j ZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3RlbXBsYXRlcy9tYWludGVuYW5j ZS9qcy9tYWludGVuYW5jZS5qcwppbmRleCBmMzgyM2Y5Li41NGFkNzYyIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZW1wbGF0ZXMvbWFpbnRlbmFuY2UvanMvbWFp bnRlbmFuY2UuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVtcGxhdGVz L21haW50ZW5hbmNlL2pzL21haW50ZW5hbmNlLmpzCkBAIC0xNDcsNyArMTQ3LDcgQEAgZGVmaW5l KFsKIAogICAgICAgICB2YXIgbWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25vZGVzID0gWwogICAgICAg ICAgICAgICAnZGF0YWJhc2UnLCAndGFibGUnLCAncHJpbWFyeV9rZXknLAotICAgICAgICAgICAg ICAndW5pcXVlX2NvbnN0cmFpbnQnLCAnaW5kZXgnCisgICAgICAgICAgICAgICd1bmlxdWVfY29u c3RyYWludCcsICdpbmRleCcsICdwYXJ0aXRpb24nCiAgICAgICAgICAgICBdOwogCiAgICAgICAg IC8qKgpAQCAtMTc3LDcgKzE3Nyw3IEBAIGRlZmluZShbCiAKICAgICAgICAgdmFyIG1lbnVzID0g W3sKICAgICAgICAgICBuYW1lOiAnbWFpbnRlbmFuY2UnLCBtb2R1bGU6IHRoaXMsCi0gICAgICAg ICAgYXBwbGllczogWyd0b29scyddLCBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5hY2UnLAor ICAgICAgICAgIGFwcGxpZXM6IFsndG9vbHMnXSwgY2FsbGJhY2s6ICdjYWxsYmFja19tYWludGVu YW5jZScsCiAgICAgICAgICAgcHJpb3JpdHk6IDEwLCBsYWJlbDogZ2V0dGV4dCgnTWFpbnRlbmFu Y2UuLi4nKSwKICAgICAgICAgICBpY29uOiAnZmEgZmEtd3JlbmNoJywgZW5hYmxlOiBtZW51X2Vu YWJsZWQKICAgICAgICAgfV07CkBAIC0xODcsNyArMTg3LDcgQEAgZGVmaW5lKFsKICAgICAgICAg ICBtZW51cy5wdXNoKHsKICAgICAgICAgICAgIG5hbWU6ICdtYWludGVuYW5jZV9jb250ZXh0Xycg KyBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKICAgICAgICAgICAgIG5vZGU6IG1h aW50ZW5hbmNlX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLCBtb2R1bGU6IHRoaXMsCi0gICAgICAgICAg ICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdjYWxsYmFja19tYWludGVuYWNlJywK KyAgICAgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCddLCBjYWxsYmFjazogJ2NhbGxiYWNrX21h aW50ZW5hbmNlJywKICAgICAgICAgICAgIHByaW9yaXR5OiAxMCwgbGFiZWw6IGdldHRleHQoJ01h aW50ZW5hbmNlLi4uJyksCiAgICAgICAgICAgICBpY29uOiAnZmEgZmEtd3JlbmNoJywgZW5hYmxl OiBtZW51X2VuYWJsZWQKICAgICAgICAgICB9KTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBkZWZpbmUo WwogICAgICAgLyoKICAgICAgICAgT3BlbiB0aGUgZGlhbG9nIGZvciB0aGUgbWFpbnRlbmFuY2Ug ZnVuY3Rpb25hbGl0eQogICAgICAgKi8KLSAgICAgIGNhbGxiYWNrX21haW50ZW5hY2U6IGZ1bmN0 aW9uKGFyZ3MsIGl0ZW0pIHsKKyAgICAgIGNhbGxiYWNrX21haW50ZW5hbmNlOiBmdW5jdGlvbihh cmdzLCBpdGVtKSB7CiAgICAgICAgIHZhciBpID0gaXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxl Y3RlZCgpLAogICAgICAgICAgIHNlcnZlcl9kYXRhID0gbnVsbDsKIApAQCAtMzE3LDcgKzMxNywx MCBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICAgICAgaWYgKHRyZWVJbmZvLnNjaGVtYSAhPSB1 bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgc2NoZW1hID0gdHJlZUluZm8uc2NoZW1h Ll9sYWJlbDsKICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGlmICh0cmVl SW5mby50YWJsZSAhPSB1bmRlZmluZWQpIHsKKworICAgICAgICAgICAgICAgICAgaWYgKHRyZWVJ bmZvLnBhcnRpdGlvbiAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUg PSB0cmVlSW5mby5wYXJ0aXRpb24uX2xhYmVsOworICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm ICAodHJlZUluZm8udGFibGUgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgIHRh YmxlID0gdHJlZUluZm8udGFibGUuX2xhYmVsOwogICAgICAgICAgICAgICAgICAgfQogCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3RlbXBsYXRlcy9yZXN0b3JlL2pzL3Jl c3RvcmUuanMgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3RlbXBsYXRlcy9yZXN0b3JlL2pz L3Jlc3RvcmUuanMKaW5kZXggZjgyMTE2Mi4uMmYyMTJhYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVzdG9yZS9qcy9yZXN0b3JlLmpzCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVtcGxhdGVzL3Jlc3RvcmUvanMvcmVzdG9yZS5qcwpA QCAtMjI3LDcgKzIyNyw4IEBAIGRlZmluZShbCiAgICAgICAgIHZhciByZXN0b3JlX3N1cHBvcnRl ZF9ub2RlcyA9IFsKICAgICAgICAgICAgICAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsCiAgICAgICAg ICAgICAgICd0YWJsZScsICdmdW5jdGlvbicsCi0gICAgICAgICAgICAgICd0cmlnZ2VyJywgJ2lu ZGV4JworICAgICAgICAgICAgICAndHJpZ2dlcicsICdpbmRleCcsCisgICAgICAgICAgICAgICdw YXJ0aXRpb24nCiAgICAgICAgICAgICBdOwogCiAgICAgICAgIC8qKgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3RlbXBsYXRlcy91c2VyX21hbmFnZW1lbnQv anMvdXNlcl9tYW5hZ2VtZW50LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50 L3RlbXBsYXRlcy91c2VyX21hbmFnZW1lbnQvanMvdXNlcl9tYW5hZ2VtZW50LmpzCmluZGV4IGYx MWI1NTIuLjY4ZTUxZjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdl bWVudC90ZW1wbGF0ZXMvdXNlcl9tYW5hZ2VtZW50L2pzL3VzZXJfbWFuYWdlbWVudC5qcworKysg Yi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdl bWVudC9qcy91c2VyX21hbmFnZW1lbnQuanMKQEAgLTI1LDM0ICsyNSw3IEBAIGRlZmluZShbCiAg ICAgICAgICAgICAvLyBIb3cgbG9uZyB0byB3YWl0IGFmdGVyIHR5cGluZyBoYXMgc3RvcHBlZCBi ZWZvcmUgc2VhcmNoaW5nIGNhbiBzdGFydAogICAgICAgICAgICAgd2FpdDogMTUwCiAgICAgICAg ICAgfSkpOwotICAgICAgICB9LAotICAgICAgICBTdHJpbmdEZXBDZWxsID0gQmFja2dyaWQuU3Ry aW5nQ2VsbC5leHRlbmQoewotICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewotICAg ICAgICAgICAgQmFja2dyaWQuU3RyaW5nQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgQmFja2dyaWQuRXh0ZW5zaW9uLkRlcGVuZGVu dENlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAg ICAgICB9LAotICAgICAgICAgIGRlcGVuZGVudENoYW5nZWQ6IGZ1bmN0aW9uICgpIHsKLSAgICAg ICAgICAgIHRoaXMuJGVsLmVtcHR5KCk7Ci0KLSAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywK LSAgICAgICAgICAgICAgbW9kZWwgPSB0aGlzLm1vZGVsLAotICAgICAgICAgICAgICBjb2x1bW4g PSB0aGlzLmNvbHVtbiwKLSAgICAgICAgICAgICAgZWRpdGFibGUgPSB0aGlzLmNvbHVtbi5nZXQo ImVkaXRhYmxlIik7Ci0KLSAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7Ci0KLSAgICAgICAgICAg IGlzX2VkaXRhYmxlID0gXy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ICEhZWRpdGFibGUuYXBwbHko Y29sdW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uKCkgewotICAgICAgICAgICAgICBzZWxmLiRlbC5yZW1vdmVDbGFzcygiZWRpdG9yIik7 Ci0gICAgICAgICAgICAgIGlmIChpc19lZGl0YWJsZSl7IHNlbGYuJGVsLmFkZENsYXNzKCJlZGl0 YWJsZSIpOyB9Ci0gICAgICAgICAgICAgIGVsc2UgeyBzZWxmLiRlbC5yZW1vdmVDbGFzcygiZWRp dGFibGUiKTsgfQotICAgICAgICAgICAgfSwgMTApOwotCi0gICAgICAgICAgICB0aGlzLmRlbGVn YXRlRXZlbnRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICB9LAotICAg ICAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0ZW5zaW9uLkRlcGVuZGVudENlbGwucHJvdG90eXBl LnJlbW92ZQotICAgICAgICB9KTsKKyAgICAgICAgfQogCiAgICAgcGdCcm93c2VyLlVzZXJNYW5h Z2VtZW50ICA9IHsKICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewpAQCAtODMsNyArNTYsNyBAQCBk ZWZpbmUoWwogICAgICAgICAgICAgc2NoZW1hOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgIGlkOiAnZW1haWwnLCBsYWJlbDogZ2V0dGV4dCgnRW1haWwnKSwgdHlwZTogJ3RleHQnLAot ICAgICAgICAgICAgICBjZWxsOlN0cmluZ0RlcENlbGwsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0 aF9wZXJjZW50XzMwJywKKyAgICAgICAgICAgICAgY2VsbDpCYWNrZ3JpZC5FeHRlbnNpb24uU3Ry aW5nRGVwQ2VsbCwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfMzAnLAogICAgICAg ICAgICAgICBkZXBzOiBbJ2lkJ10sCiAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbiht KSB7CiAgICAgICAgICAgICAgICAgaWYobSBpbnN0YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24p IHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vdXRpbHMvX19pbml0X18ucHkKaW5kZXggNTUwYmFkMi4uNzAxYTM4YyAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdXRpbHMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvX19p bml0X18ucHkKQEAgLTI5LDYgKzI5LDcgQEAgY2xhc3MgUGdBZG1pbk1vZHVsZShCbHVlcHJpbnQp OgogICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgndGVtcGxhdGVfZm9sZGVyJywgJ3RlbXBsYXRl cycpCiAgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCdzdGF0aWNfZm9sZGVyJywgJ3N0YXRpYycp CiAgICAgICAgIHNlbGYuc3VibW9kdWxlcyA9IFtdCisgICAgICAgIHNlbGYucGFyZW50bW9kdWxl cyA9IFtdCiAKICAgICAgICAgc3VwZXIoUGdBZG1pbk1vZHVsZSwgc2VsZikuX19pbml0X18obmFt ZSwgaW1wb3J0X25hbWUsICoqa3dhcmdzKQogCkBAIC01OSw2ICs2MCw4IEBAIGNsYXNzIFBnQWRt aW5Nb2R1bGUoQmx1ZXByaW50KToKICAgICAgICAgc3VwZXIoUGdBZG1pbk1vZHVsZSwgc2VsZiku cmVnaXN0ZXIoYXBwLCBvcHRpb25zLCBmaXJzdF9yZWdpc3RyYXRpb24pCiAKICAgICAgICAgZm9y IG1vZHVsZSBpbiBzZWxmLnN1Ym1vZHVsZXM6CisgICAgICAgICAgICBpZiBmaXJzdF9yZWdpc3Ry YXRpb246CisgICAgICAgICAgICAgICAgbW9kdWxlLnBhcmVudG1vZHVsZXMuYXBwZW5kKHNlbGYp CiAgICAgICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KG1vZHVsZSkKIAogICAgIGRlZiBn ZXRfb3duX3N0eWxlc2hlZXRzKHNlbGYpOgo= --001a1149153e8e180d0552a0876d--