Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dLGtu-0003fG-EQ for pgadmin-hackers@arkaria.postgresql.org; Wed, 14 Jun 2017 22:36:34 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dLGtu-0001Wa-0S for pgadmin-hackers@arkaria.postgresql.org; Wed, 14 Jun 2017 22:36:34 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dLGtm-00011M-Be for pgadmin-hackers@postgresql.org; Wed, 14 Jun 2017 22:36:27 +0000 Received: from mail-it0-x22a.google.com ([2607:f8b0:4001:c0b::22a]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dLGtf-0007UY-6E for pgadmin-hackers@postgresql.org; Wed, 14 Jun 2017 22:36:25 +0000 Received: by mail-it0-x22a.google.com with SMTP id m47so1101873iti.0 for ; Wed, 14 Jun 2017 15:36:18 -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=mljGqysxUOpYdlFvOv2DQVzaGmb1lSR8cXKH6BmyGuA=; b=vwBEG7zMNenHBGZ1PMutEjtaNqx5M9G+eYZpafHxs6JxbQmC4l28VLgfDzgv/m5aA7 D22ebR4ZOpBAuAQ4oZ3pex6+jyubqg9W5w3xgOcqogbxlOZErfUChFKSWB/a9rOksId7 dxfs6dnIOD7fTNf6dXWVjFfSRhunQHrQ9Bv5Y3g8FmqlYrqo3INb+KV7y2BS/EEiSehN 6ZXxgb0qh9eRScdN+cFDTcfVebIkLi4qtJzHJAr+ssc2L9rVJbHrR972cXO5CT3wAMUX f2nbx0JLU8+jVu2BV4EoFPP3N2L0H4+JW+qP99/tudAQF03txr7NA85UZdKYIXRBgD5Q TmPg== 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=mljGqysxUOpYdlFvOv2DQVzaGmb1lSR8cXKH6BmyGuA=; b=NbJPTi1m4tXAfseezusIQPpCD77JupzGmg3OemoF5eXlo2jD/QKJeptSgvQLrESQhy 29MVGKU3SxwjjrqKBdfWO1uTSfH/lVrT5Z3k8RqO6f8sjvfZ9C2RK/yZloO6LwBlATt3 C6vFFk4o/Tj7jbX6ByajvBHS3mKCkC3wW3kO+JvcvPdI8/R3bc4YmQyPjIog8cb0vMz1 lqnJ2DGBHmJOmeoaJuPqdnr1NfWFiIcM7h60aHInz95vzQLuVfbwq28eQPmIDkuGkw5x R89/wmRIvp3M+ECdApv63TfcbitWYjElMHoPrSUFKAp69hmct3xGg33DVQEni5dBbnfT jW/Q== X-Gm-Message-State: AKS2vOymA1SRnouXfpaUF8Jqbpma6srXrWv42nPyWOO9UT7uPXkSAjsQ fmNKIGzk0jwiFoASP0QauZtYZQ6FId7B X-Received: by 10.36.55.149 with SMTP id r143mr2426496itr.53.1497479778211; Wed, 14 Jun 2017 15:36:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.147.23 with HTTP; Wed, 14 Jun 2017 15:36:16 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Thu, 15 Jun 2017 04:06:16 +0530 Message-ID: Subject: Re: Re: Server side cursor limitations for on demand loading of data in query tool [RM2137] [pgAdmin4] To: Harshal Dhumal Cc: Ashesh Vashi , Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary="001a1140c8383e38be0551f32ee9" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1140c8383e38be0551f32ee9 Content-Type: multipart/alternative; boundary="001a1140c8383e38b90551f32ee7" --001a1140c8383e38b90551f32ee7 Content-Type: text/plain; charset="UTF-8" Hi Dave, Please find rebased patch for RM2137. -- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Wed, Jun 14, 2017 at 7:55 PM, Harshal Dhumal wrote: > > > On Wed, Jun 14, 2017 at 6:21 PM, Ashesh Vashi < > ashesh.vashi@enterprisedb.com> wrote: > >> On Wed, Jun 14, 2017 at 6:19 PM, Dave Page wrote: >> >>> Hi, >>> >>> Sorry - it's drifted out again, I suspect because of the work Ashesh >>> has been doing. Can you rebase please? Check with Ashesh first though, >>> in case he's about ready to commit another big change. >>> >> I am not. :-) >> >> Sure, I'll send updated patch. > > >> -- >> >> Thanks & Regards, >> >> Ashesh Vashi >> EnterpriseDB INDIA: Enterprise PostgreSQL Company >> >> >> >> *http://www.linkedin.com/in/asheshvashi* >> >> >>> >>> Thanks. >>> >>> On Fri, Jun 9, 2017 at 10:08 AM, Harshal Dhumal >>> wrote: >>> > Hi, >>> > >>> > >>> > Please find rebased patch >>> > >>> > -- >>> > Harshal Dhumal >>> > Sr. Software Engineer >>> > >>> > EnterpriseDB India: http://www.enterprisedb.com >>> > The Enterprise PostgreSQL Company >>> > >>> > On Thu, Jun 8, 2017 at 6:40 PM, Harshal Dhumal >>> > wrote: >>> >> >>> >> Ignore this patch. >>> >> Rebase and migration of feature tests and jasmine tests required. >>> >> >>> >> -- >>> >> Harshal Dhumal >>> >> Sr. Software Engineer >>> >> >>> >> EnterpriseDB India: http://www.enterprisedb.com >>> >> The Enterprise PostgreSQL Company >>> >> >>> >> On Thu, Jun 8, 2017 at 3:56 PM, Harshal Dhumal >>> >> wrote: >>> >>> >>> >>> Hi, >>> >>> Please find attached updated patch for feature RM2137. >>> >>> >>> >>> Changes in this patch: >>> >>> 1. Patch rebased. >>> >>> >>> >>> 2. Updated existing feature tests which requires changes due to this >>> >>> feature. >>> >>> affected feature test cases: >>> >>> i. PGDataypeFeatureTest >>> >>> ii. CheckForXssFeatureTest >>> >>> >>> >>> 3. Updated existing jasmine test cases which requires changes due to >>> this >>> >>> feature. >>> >>> affected jasmine test cases: >>> >>> i. copy data >>> >>> ii. range_boundary_navigator >>> >>> iii. row_selector >>> >>> iv. set_stages_rows >>> >>> >>> >>> 4. New feature tests added >>> >>> i. on demand result set on scrolling. >>> >>> ii. on demand result set on grid select all. >>> >>> iii. on demand result set on column select all. >>> >>> iv. explain query >>> >>> v. explain query with verbose >>> >>> vi. explain query with costs >>> >>> vii. explain analyze query >>> >>> viii. explain analyze query with buffers >>> >>> ix. explain analyze query with timing >>> >>> x. auto commit disabled. >>> >>> xi. auto commit enabled. >>> >>> xii. auto rollback enabled. >>> >>> xiii. cancel query. >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Harshal Dhumal >>> >>> Sr. Software Engineer >>> >>> >>> >>> EnterpriseDB India: http://www.enterprisedb.com >>> >>> The Enterprise PostgreSQL Company >>> >>> >>> >>> On Tue, May 16, 2017 at 8:14 PM, Dave Page >>> wrote: >>> >>>> >>> >>>> >>> >>>> >>> >>>> On Mon, May 15, 2017 at 7:40 PM, Harshal Dhumal >>> >>>> wrote: >>> >>>>> >>> >>>>> Hi, >>> >>>>> >>> >>>>> On Sat, May 13, 2017 at 12:35 AM, Joao Pedro De Almeida Pereira >>> >>>>> wrote: >>> >>>>>> >>> >>>>>> We were only able to apply the patch on 1f903ba2 (were seeing >>> patch >>> >>>>>> does not apply due to sqleditor.js conflicts) >>> >>>>>> The javascript tests passed, but we were unable to copy rows or >>> >>>>>> columns or cells when running the application. Could you run >>> feature tests? >>> >>>>> >>> >>>>> There are three modes sqleditor can be launched >>> >>>>> 1. Query tool (Tools menus -> Query Tool) >>> >>>>> 2. Datagrid. (Right click on any table/view -> View Data -> View >>> >>>>> All/First 100/Last 100/Filtered rows) >>> >>>>> 3. Scripts (Right click on any table/view -> >>> >>>>> INSERT/CREATE/UPDATE/DELETE/SELECT) >>> >>>>> >>> >>>>> Paste functionality is only enabled in Datagrid and table has >>> Primary >>> >>>>> key otherwise it's disabled. In your case row might have been >>> copied but you >>> >>>>> were unable paste because you might be trying to paste the rows in >>> Query >>> >>>>> tool. Please try again in Datagrid with table having Primary key. >>> >>>>> >>> >>>>>> >>> >>>>>> >>> >>>>>> Now that more functionality is being added to sqleditor.js, this >>> may >>> >>>>>> be a good time to extract the functionality to separate files. >>> This will >>> >>>>>> increase readability, and encourage separation of concerns. It >>> will also >>> >>>>>> make changes easier to test in isolation. >>> >>>>> >>> >>>>> Ok. Let me check if I can separate out ant functionalities. >>> >>>>> >>> >>>>>> >>> >>>>>> It's probably a good idea to test the changes made to the python >>> as >>> >>>>>> well as javascript code. In this case, the new behavior of poll() >>> in >>> >>>>>> sqleditor __init__ should be tested. >>> >>>>> >>> >>>>> >>> >>>>> At this point we don't have any python unit tests that can test >>> >>>>> sqleditor backend (python code). >>> >>>>> @Dave should I include python unit test cases in this patch? >>> >>>> >>> >>>> >>> >>>> We do have some feature tests that hit the query tool - Murtuza >>> wrote >>> >>>> some anti-XSS validation tests for example, and Khushboo has been >>> working on >>> >>>> some datatype rendering tests. >>> >>>> >>> >>>> As a general rule, I prefer we focus more on feature tests now than >>> the >>> >>>> API tests - they cover the whole app end-to-end of course. The >>> disadvantages >>> >>>> are: >>> >>>> >>> >>>> - The treeview isn't reliable enough for me to enable those tests >>> on the >>> >>>> CI server yet. >>> >>>> >>> >>>> - They can take a long time to run, so we need to test multiple >>> things >>> >>>> at once wherever possible. That means minimising browser reloads, >>> or new >>> >>>> instances of tools like the Query Tool - or even the number of >>> queries >>> >>>> executed through the query tool as part of a test. >>> >>>> >>> >>>> That said, yes, if there are specific things that are not covered by >>> >>>> Murtuza and Khushboo's work, we should test them. For example, >>> loading all >>> >>>> rows when the user selects all, running/rendering EXPLAIN, >>> auto-commit vs. >>> >>>> auto-rollback (and combinations thereof). >>> >>>> >>> >>>> The standard moving forwards should be to include feature tests for >>> new >>> >>>> functionality and Jasmine tests for algorithmic JS code. >>> >>>> >>> >>>> I also agree with Joao on the modularisation of JS code. Testable >>> and >>> >>>> reusable code should be in "library" files, and we should work to >>> minimise >>> >>>> the amount of JS templates - for the most part, that means moving >>> to the >>> >>>> client-side translation mechanism which Tira worked on, and I've >>> done some >>> >>>> early migration work. >>> >>>> >>> >>>> Thanks. >>> >>>> >>> >>>> >>> >>>> -- >>> >>>> Dave Page >>> >>>> Blog: http://pgsnake.blogspot.com >>> >>>> Twitter: @pgsnake >>> >>>> >>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>> >>>> The Enterprise PostgreSQL Company >>> >>> >>> >>> >>> >> >>> > >>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> >>> -- >>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>> To make changes to your subscription: >>> http://www.postgresql.org/mailpref/pgadmin-hackers >>> >> >> > --001a1140c8383e38b90551f32ee7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

Please find rebased patch for = RM2137.


=
=
--=C2=A0
Harshal Dhumal
Sr. Software Eng= ineer

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

On Wed, Jun 14, 2017 at 7:55 PM, Harshal Dhu= mal <harshaldhumal15@gmail.com> wrote:


On Wed, Jun 14, 2017 at 6:21 PM, = Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
On Wed, Jun 14, 2017 at 6:19 P= M, Dave Page <dpage@pgadmin.org> wrote:
Hi,

Sorry - it's drifted out again, I suspect because of the work Ashesh
has been doing. Can you rebase please? Check with Ashesh first though,
in case he's about ready to commit another big change.
=
I am not. :-)

Sure, I'll send updated patch.
=C2=A0

<= span style=3D"font-style:italic">--

Thanks & Regards,

A= shesh Vashi
EnterpriseDB INDIA:=C2=A0Enterprise PostgreSQL Company



Thanks.

On Fri, Jun 9, 2017 at 10:08 AM, Harshal Dhumal
<harshal.dhumal@e= nterprisedb.com> wrote:
> Hi,
>
>
> Please find rebased patch
>
> --
> Harshal Dhumal
> Sr. Software Engineer
>
> EnterpriseDB India: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
> On Thu, Jun 8, 2017 at 6:40 PM, Harshal Dhumal
> <harshal.dhumal@enterprisedb.com> wrote:
>>
>> Ignore this patch.
>> Rebase and migration of feature tests and jasmine tests required.<= br> >>
>> --
>> Harshal Dhumal
>> Sr. Software Engineer
>>
>> EnterpriseDB India: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>> On Thu, Jun 8, 2017 at 3:56 PM, Harshal Dhumal
>> <harshal.dhumal@enterprisedb.com> wrote:
>>>
>>> Hi,
>>> Please find attached updated patch for feature RM2137.
>>>
>>> Changes in this patch:
>>> 1. Patch rebased.
>>>
>>> 2. Updated existing feature tests which requires changes due t= o this
>>> feature.
>>>=C2=A0 =C2=A0 =C2=A0 affected feature test cases:
>>>=C2=A0 =C2=A0 =C2=A0 i. PGDataypeFeatureTest
>>>=C2=A0 =C2=A0 =C2=A0 ii. CheckForXssFeatureTest
>>>
>>> 3. Updated existing jasmine test cases which requires changes = due to this
>>> feature.
>>>=C2=A0 =C2=A0 =C2=A0 affected jasmine test cases:
>>>=C2=A0 =C2=A0 =C2=A0 i. copy data
>>>=C2=A0 =C2=A0 =C2=A0 ii. range_boundary_navigator
>>>=C2=A0 =C2=A0 =C2=A0 iii. row_selector
>>>=C2=A0 =C2=A0 =C2=A0 iv. set_stages_rows
>>>
>>> 4. New feature tests added
>>>=C2=A0 =C2=A0 =C2=A0i. on demand result set on scrolling.
>>>=C2=A0 =C2=A0 =C2=A0ii. on demand result set on grid select all= .
>>>=C2=A0 =C2=A0 =C2=A0iii. on demand result set on column select = all.
>>>=C2=A0 =C2=A0 =C2=A0iv. explain query
>>>=C2=A0 =C2=A0 =C2=A0v. explain query with verbose
>>>=C2=A0 =C2=A0 =C2=A0vi. explain query with costs
>>>=C2=A0 =C2=A0 =C2=A0vii. explain analyze query
>>>=C2=A0 =C2=A0 =C2=A0viii. explain analyze query with buffers
>>>=C2=A0 =C2=A0 =C2=A0ix. explain analyze query with timing
>>>=C2=A0 =C2=A0 =C2=A0x. auto commit disabled.
>>>=C2=A0 =C2=A0 =C2=A0xi. auto commit enabled.
>>>=C2=A0 =C2=A0 =C2=A0xii. auto rollback enabled.
>>>=C2=A0 =C2=A0 =C2=A0xiii. cancel query.
>>>
>>>
>>>
>>> --
>>> Harshal Dhumal
>>> Sr. Software Engineer
>>>
>>> EnterpriseDB India: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>> On Tue, May 16, 2017 at 8:14 PM, Dave Page <dpage@pgadmin.org> wrote:
>>>>
>>>>
>>>>
>>>> On Mon, May 15, 2017 at 7:40 PM, Harshal Dhumal
>>>> <harshal.dhumal@enterprisedb.com> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On Sat, May 13, 2017 at 12:35 AM, Joao Pedro De Almeid= a Pereira
>>>>> <jdealmeidapereira@pivotal.io> wrote:
>>>>>>
>>>>>> We were only able to apply the patch on 1f903ba2 (= were seeing patch
>>>>>> does not apply due to sqleditor.js conflicts)
>>>>>> The javascript tests passed, but we were unable to= copy rows or
>>>>>> columns or cells when running the application. Cou= ld you run feature tests?
>>>>>
>>>>> There are three modes sqleditor can be launched
>>>>> 1. Query tool=C2=A0 (Tools menus -> Query Tool)
>>>>> 2. Datagrid.=C2=A0 (Right click on any table/view=C2= =A0 -> View Data -> View
>>>>> All/First 100/Last 100/Filtered rows)
>>>>> 3. Scripts (Right click on any table/view ->
>>>>> INSERT/CREATE/UPDATE/DELETE/SELECT)
>>>>>
>>>>> Paste functionality is only enabled in Datagrid and ta= ble has Primary
>>>>> key otherwise it's disabled. In your case row migh= t have been copied but you
>>>>> were unable paste because you might be trying to paste= the rows in Query
>>>>> tool. Please try again in Datagrid with table having P= rimary key.
>>>>>
>>>>>>
>>>>>>
>>>>>> Now that more functionality is being added to sqle= ditor.js, this may
>>>>>> be a good time to extract the functionality to sep= arate files. This will
>>>>>> increase readability, and encourage separation of = concerns. It will also
>>>>>> make changes easier to test in isolation.
>>>>>
>>>>> Ok. Let me check if I can separate out ant functionali= ties.
>>>>>
>>>>>>
>>>>>> It's probably a good idea to test the changes = made to the python as
>>>>>> well as javascript code. In this case, the new beh= avior of poll() in
>>>>>> sqleditor __init__ should be tested.
>>>>>
>>>>>
>>>>> At this point we don't have any python unit tests = that can test
>>>>> sqleditor backend (python code).
>>>>> @Dave should I include python unit test cases in this = patch?
>>>>
>>>>
>>>> We do have some feature tests that hit the query tool - Mu= rtuza wrote
>>>> some anti-XSS validation tests for example, and Khushboo h= as been working on
>>>> some datatype rendering tests.
>>>>
>>>> As a general rule, I prefer we focus more on feature tests= now than the
>>>> API tests - they cover the whole app end-to-end of course.= The disadvantages
>>>> are:
>>>>
>>>> - The treeview isn't reliable enough for me to enable = those tests on the
>>>> CI server yet.
>>>>
>>>> - They can take a long time to run, so we need to test mul= tiple things
>>>> at once wherever possible. That means minimising browser r= eloads, or new
>>>> instances of tools like the Query Tool - or even the numbe= r of queries
>>>> executed through the query tool as part of a test.
>>>>
>>>> That said, yes, if there are specific things that are not = covered by
>>>> Murtuza and Khushboo's work, we should test them. For = example, loading all
>>>> rows when the user selects all, running/rendering EXPLAIN,= auto-commit vs.
>>>> auto-rollback (and combinations thereof).
>>>>
>>>> The standard moving forwards should be to include feature = tests for new
>>>> functionality and Jasmine tests for algorithmic JS code. >>>>
>>>> I also agree with Joao on the modularisation of JS code. T= estable and
>>>> reusable code should be in "library" files, and = we should work to minimise
>>>> the amount of JS templates - for the most part, that means= moving to the
>>>> client-side translation mechanism which Tira worked on, an= d I've done some
>>>> early migration work.
>>>>
>>>> Thanks.
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>
>>>
>>
>



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

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


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



--001a1140c8383e38b90551f32ee7-- --001a1140c8383e38be0551f32ee9 Content-Type: text/x-patch; charset="US-ASCII"; name="RM2137_query_tool_on_demand_result_V6.patch" Content-Disposition: attachment; filename="RM2137_query_tool_on_demand_result_V6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3xkoaxn0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5Cmlu ZGV4IGMzZjgyODUuLjY4OTU4MWMgMTAwNjQ0Ci0tLSBhL3dlYi9jb25maWcu cHkKKysrIGIvd2ViL2NvbmZpZy5weQpAQCAtMzI0LDYgKzMyNCwxMiBAQCBU SFJFQURFRF9NT0RFID0gVHJ1ZQogU1FMQUxDSEVNWV9UUkFDS19NT0RJRklD QVRJT05TID0gRmFsc2UKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgTnVtYmVyIG9mIHJlY29yZHMgdG8gZmV0Y2ggaW4gb25lIGJhdGNo IGluIHF1ZXJ5IHRvb2wgd2hlbiBxdWVyeSByZXN1bHQKKyMgc2V0IGlzIGxh cmdlLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK09OX0RFTUFO RF9SRUNPUkRfQ09VTlQgPSAxMDAwCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIExvY2FsIGNvbmZpZyBzZXR0aW5ncwogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9wZ19kYXRhdHlwZV92YWxpZGF0aW9uX3Rlc3Qu cHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBlX3Zh bGlkYXRpb25fdGVzdC5weQppbmRleCA2OWIxMmYzLi4wZGRmNGNmIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBl X3ZhbGlkYXRpb25fdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJl X3Rlc3RzL3BnX2RhdGF0eXBlX3ZhbGlkYXRpb25fdGVzdC5weQpAQCAtOTMs MTcgKzkzLDE4IEBAIGNsYXNzIFBHRGF0YXlwZUZlYXR1cmVUZXN0KEJhc2VG ZWF0dXJlVGVzdCk6CiAgICAgICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJy b3JfYXJlYV93aXRoKHF1ZXJ5KQogICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9pZCgiYnRuLWZsYXNoIikuY2xpY2soKQogICAgICAgICB3YWl0ID0gV2Vi RHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCA1KQotICAgICAgICB3YWl0 LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZCgKLSAgICAg ICAgICAgIChCeS5YUEFUSCwgIi8vKltAaWQ9JzAnXS8vKltAaWQ9J2RhdGFn cmlkJ10vZGl2WzVdL2Rpdi9kaXZbMV0vZGl2WzJdL3NwYW4iKSkpCisgICAg ICAgIGNhbnZhcyA9IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVu dF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNk YXRhZ3JpZCAuc2xpY2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpCisgICAg ICAgICkKIAogICAgICAgICAjIEZvciBldmVyeSBzYW1wbGUgZGF0YS10eXBl IHZhbHVlLCBjaGVjayB0aGUgZXhwZWN0ZWQgb3V0cHV0LgogICAgICAgICBj bnQgPSAyCi0gICAgICAgIGZvciB2YWwgaW4gZXhwZWN0ZWRfb3V0cHV0Ogor ICAgICAgICBjZWxscyA9IGNhbnZhcy5maW5kX2VsZW1lbnRzX2J5X3RhZ19u YW1lKCdzcGFuJykKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgZWxlbWVudCBh cyBpdCBpcyByb3cgbnVtYmVyLgorICAgICAgICBjZWxscy5wb3AoMCkKKyAg ICAgICAgZm9yIHZhbCwgY2VsbCBpbiB6aXAoZXhwZWN0ZWRfb3V0cHV0LCBj ZWxscyk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc291 cmNlX2NvZGUgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKLSAgICAgICAg ICAgICAgICAgICAgIi8vKltAaWQ9JzAnXS8vKltAaWQ9J2RhdGFncmlkJ10v ZGl2WzVdL2Rpdi9kaXZbMV0vZGl2WyIgKyBzdHIoY250KSArICJdL3NwYW4i Ci0gICAgICAgICAgICAgICAgKS5nZXRfYXR0cmlidXRlKCdpbm5lckhUTUwn KQotCisgICAgICAgICAgICAgICAgc291cmNlX2NvZGUgPSBjZWxsLmdldF9h dHRyaWJ1dGUoJ2lubmVySFRNTCcpCiAgICAgICAgICAgICAgICAgUEdEYXRh eXBlRmVhdHVyZVRlc3QuY2hlY2tfcmVzdWx0KAogICAgICAgICAgICAgICAg ICAgICBzb3VyY2VfY29kZSwKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0 ZWRfb3V0cHV0W2NudCAtIDJdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfdGVzdHMucHkgYi93ZWIvcGdhZG1p bi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfdGVzdHMucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ1M2Y5YQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVlcnlfdG9v bF90ZXN0cy5weQpAQCAtMCwwICsxLDc2MyBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBfX2Z1dHVyZV9fIGlt cG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IHRpbWUKK2ltcG9ydCBzeXMK K2ltcG9ydCBjb25maWcKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyIGltcG9y dCBBY3Rpb25DaGFpbnMKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBv cnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20gc2VsZW5pdW0ud2Vi ZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMg RUMKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQg QnkKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQg dGVzdF91dGlscworZnJvbSByZWdyZXNzaW9uLmZlYXR1cmVfdXRpbHMuYmFz ZV9mZWF0dXJlX3Rlc3QgaW1wb3J0IEJhc2VGZWF0dXJlVGVzdAorCisKK2Ns YXNzIFF1ZXJ5VG9vbEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6Cisg ICAgIiIiCisgICAgICAgIFRoaXMgZmVhdHVyZSB0ZXN0IHdpbGwgdGVzdCB0 aGUgZGlmZmVyZW50IHF1ZXJ5IHRvb2wgZmVhdHVyZXMuCisgICAgIiIiCisK KyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgiUXVlcnkgdG9vbCBmZWF0 dXJlIHRlc3QiLCBkaWN0KCkpCisgICAgXQorCisgICAgZGVmIGJlZm9yZShz ZWxmKToKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2Ri X2Nvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vy dmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dv cmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFi YXNlKGNvbm5lY3Rpb24sICJhY2NlcHRhbmNlX3Rlc3RfZGIiKQorICAgICAg ICB0ZXN0X3V0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgImFj Y2VwdGFuY2VfdGVzdF9kYiIpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zv cl9zcGlubmVyX3RvX2Rpc2FwcGVhcigpCisgICAgICAgIHNlbGYuX2Nvbm5l Y3RzX3RvX3NlcnZlcigpCisgICAgICAgIHNlbGYuX2xvY2F0ZV9kYXRhYmFz ZV90cmVlX25vZGUoKQorICAgICAgICBzZWxmLl9vcGVuX3F1ZXJ5X3Rvb2wo KQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICMgb24gZGVt YW5kIHJlc3VsdCBzZXQgb24gc2Nyb2xsaW5nLgorICAgICAgICBwcmludCgi T24gZGVtYW5kIHJlc3VsdCBzZXQgb24gc2Nyb2xsaW5nLi4uIiwKKyAgICAg ICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLl9vbl9k ZW1hbmRfcmVzdWx0KCkKKyAgICAgICAgcHJpbnQoIk9LLlxuIiwKKyAgICAg ICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLl9jbGVh cl9xdWVyeV90b29sKCkKKworICAgICAgICAjIG9uIGRlbWFuZCByZXN1bHQg c2V0IG9uIGdyaWQgc2VsZWN0IGFsbC4KKyAgICAgICAgcHJpbnQoIk9uIGRl bWFuZCByZXN1bHQgc2V0IG9uIGdyaWQgc2VsZWN0IGFsbC4uLiIsCisgICAg ICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5fb25f ZGVtYW5kX3Jlc3VsdF9zZWxlY3RfYWxsX2dyaWQoKQorICAgICAgICBwcmlu dCgiT0suXG4iLAorICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisg ICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMg b24gZGVtYW5kIHJlc3VsdCBzZXQgb24gY29sdW1uIHNlbGVjdCBhbGwuCisg ICAgICAgIHByaW50KCJPbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBjb2x1bW4g c2VsZWN0IGFsbC4uLiIsCisgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVy cikKKyAgICAgICAgc2VsZi5fb25fZGVtYW5kX3Jlc3VsdF9zZWxlY3RfYWxs X2NvbHVtbigpCisgICAgICAgIHByaW50KCJPSy5cbiIsCisgICAgICAgICAg ICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVl cnlfdG9vbCgpCisKKyAgICAgICAgIyBleHBsYWluIHF1ZXJ5CisgICAgICAg IHByaW50KCJFeHBsYWluIHF1ZXJ5Li4uIiwgZmlsZT1zeXMuc3RkZXJyKQor ICAgICAgICBzZWxmLl9xdWVyeV90b29sX2V4cGxhaW4oKQorICAgICAgICBw cmludCgiT0suXG4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYu X2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgZXhwbGFpbiBxdWVy eSB3aXRoIHZlcmJvc2UKKyAgICAgICAgcHJpbnQoIkV4cGxhaW4gcXVlcnkg d2l0aCB2ZXJib3NlLi4uIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBz ZWxmLl9xdWVyeV90b29sX2V4cGxhaW5fdmVyYm9zZSgpCisgICAgICAgIHBy aW50KCJPSy5cbiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5f Y2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAgICAgIyBleHBsYWluIHF1ZXJ5 IHdpdGggY29zdHMKKyAgICAgICAgcHJpbnQoIkV4cGxhaW4gcXVlcnkgd2l0 aCBjb3N0cy4uLiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5f cXVlcnlfdG9vbF9leHBsYWluX2Nvc3QoKQorICAgICAgICBwcmludCgiT0su XG4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1 ZXJ5X3Rvb2woKQorCisgICAgICAgICMgZXhwbGFpbiBhbmFseXplIHF1ZXJ5 CisgICAgICAgIHByaW50KCJFeHBsYWluIGFuYWx5emUgcXVlcnkuLi4iLCBm aWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfZXhw bGFpbl9hbmFseXplKCkKKyAgICAgICAgcHJpbnQoIk9LLlxuIiwgZmlsZT1z eXMuc3RkZXJyKQorICAgICAgICBzZWxmLl9jbGVhcl9xdWVyeV90b29sKCkK KworICAgICAgICAjIGV4cGxhaW4gYW5hbHl6ZSBxdWVyeSB3aXRoIGJ1ZmZl cnMKKyAgICAgICAgcHJpbnQoIkV4cGxhaW4gYW5hbHl6ZSBxdWVyeSB3aXRo IGJ1ZmZlcnMuLi4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYu X3F1ZXJ5X3Rvb2xfZXhwbGFpbl9hbmFseXplX2J1ZmZlcnMoKQorICAgICAg ICBwcmludCgiT0suXG4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNl bGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgZXhwbGFpbiBh bmFseXplIHF1ZXJ5IHdpdGggdGltaW5nCisgICAgICAgIHByaW50KCJFeHBs YWluIGFuYWx5emUgcXVlcnkgd2l0aCB0aW1pbmcuLi4iLCBmaWxlPXN5cy5z dGRlcnIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfZXhwbGFpbl9hbmFs eXplX3RpbWluZygpCisgICAgICAgIHByaW50KCJPSy5cbiIsIGZpbGU9c3lz LnN0ZGVycikKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisK KyAgICAgICAgIyBhdXRvIGNvbW1pdCBkaXNhYmxlZC4KKyAgICAgICAgcHJp bnQoIkF1dG8gY29tbWl0IGRpc2FibGVkLi4uIiwgZmlsZT1zeXMuc3RkZXJy KQorICAgICAgICBzZWxmLl9xdWVyeV90b29sX2F1dG9fY29tbWl0X2Rpc2Fi bGVkKCkKKyAgICAgICAgcHJpbnQoIk9LLlxuIiwgZmlsZT1zeXMuc3RkZXJy KQorICAgICAgICBzZWxmLl9jbGVhcl9xdWVyeV90b29sKCkKKworICAgICAg ICAjIGF1dG8gY29tbWl0IGVuYWJsZWQuCisgICAgICAgIHByaW50KCJBdXRv IGNvbW1pdCBlbmFibGVkLi4uIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAg ICBzZWxmLl9xdWVyeV90b29sX2F1dG9fY29tbWl0X2VuYWJsZWQoKQorICAg ICAgICBwcmludCgiT0suXG4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAg IHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgYXV0byBy b2xsYmFjayBlbmFibGVkLgorICAgICAgICBwcmludCgiQXV0byByb2xsYmFj ayBlbmFibGVkLi4uIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxm Ll9xdWVyeV90b29sX2F1dG9fcm9sbGJhY2tfZW5hYmxlZCgpCisgICAgICAg IHByaW50KCJPSy5cbiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2Vs Zi5fY2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAgICAgIyBjYW5jZWwgcXVl cnkuCisgICAgICAgIHByaW50KCJDYW5jZWwgcXVlcnkuLi4iLCBmaWxlPXN5 cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfY2FuY2VsX3F1 ZXJ5KCkKKyAgICAgICAgcHJpbnQoIk9LLlxuIiwgZmlsZT1zeXMuc3RkZXJy KQorICAgICAgICBzZWxmLl9jbGVhcl9xdWVyeV90b29sKCkKKworICAgIGRl ZiBhZnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnJlbW92ZV9zZXJ2 ZXIoc2VsZi5zZXJ2ZXIpCisgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0 aWxzLmdldF9kYl9jb25uZWN0aW9uKHNlbGYuc2VydmVyWydkYiddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWydwb3J0J10pCisgICAgICAgIHRlc3RfdXRpbHMu ZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCAiYWNjZXB0YW5jZV90ZXN0X2Ri IikKKworICAgIGRlZiBfY29ubmVjdHNfdG9fc2VydmVyKHNlbGYpOgorICAg ICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKKyAgICAgICAgICAgICIv LypbQGNsYXNzPSdhY2lUcmVlVGV4dCcgYW5kIC49J1NlcnZlcnMnXSIpLmNs aWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5maW5kX2VsZW1lbnRf YnlfbGlua190ZXh0KCJPYmplY3QiKS5jbGljaygpCisgICAgICAgIEFjdGlv bkNoYWlucyhzZWxmLnBhZ2UuZHJpdmVyKSBcCisgICAgICAgICAgICAubW92 ZV90b19lbGVtZW50KAorICAgICAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5m aW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJDcmVhdGUiKSlcCisgICAgICAg ICAgICAucGVyZm9ybSgpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3Bh cnRpYWxfbGlua190ZXh0KCJTZXJ2ZXIuLi4iKS5jbGljaygpCisKKyAgICAg ICAgc2VydmVyX2NvbmZpZyA9IHNlbGYuc2VydmVyCisgICAgICAgIHNlbGYu cGFnZS5maWxsX2lucHV0X2J5X2ZpZWxkX25hbWUoIm5hbWUiLCBzZXJ2ZXJf Y29uZmlnWyduYW1lJ10pCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3Bh cnRpYWxfbGlua190ZXh0KCJDb25uZWN0aW9uIikuY2xpY2soKQorICAgICAg ICBzZWxmLnBhZ2UuZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1lKCJob3N0Iiwg c2VydmVyX2NvbmZpZ1snaG9zdCddKQorICAgICAgICBzZWxmLnBhZ2UuZmls bF9pbnB1dF9ieV9maWVsZF9uYW1lKCJwb3J0Iiwgc2VydmVyX2NvbmZpZ1sn cG9ydCddKQorICAgICAgICBzZWxmLnBhZ2UuZmlsbF9pbnB1dF9ieV9maWVs ZF9uYW1lKAorICAgICAgICAgICAgInVzZXJuYW1lIiwKKyAgICAgICAgICAg IHNlcnZlcl9jb25maWdbJ3VzZXJuYW1lJ10KKyAgICAgICAgKQorICAgICAg ICBzZWxmLnBhZ2UuZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1lKAorICAgICAg ICAgICAgInBhc3N3b3JkIiwKKyAgICAgICAgICAgIHNlcnZlcl9jb25maWdb J2RiX3Bhc3N3b3JkJ10KKyAgICAgICAgKQorICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoLiwnU2F2ZScpXSIp LmNsaWNrKCkKKworICAgIGRlZiBfbG9jYXRlX2RhdGFiYXNlX3RyZWVfbm9k ZShzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVf aXRlbShzZWxmLnNlcnZlclsnbmFtZSddKQorICAgICAgICBzZWxmLnBhZ2Uu dG9nZ2xlX29wZW5fdHJlZV9pdGVtKCdEYXRhYmFzZXMnKQorICAgICAgICBz ZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVtKCdhY2NlcHRhbmNlX3Rl c3RfZGInKQorCisgICAgZGVmIF9vcGVuX3F1ZXJ5X3Rvb2woc2VsZik6Cisg ICAgICAgIHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtf dGV4dCgiVG9vbHMiKS5jbGljaygpCisKKyAgICAgICAgdG9vbHNfbWVudSA9 IHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdtbnVfdG9v bHMnKQorCisgICAgICAgICMgUXVlcnkgVG9vbCBpcyBmaXJzdCBsaQorICAg ICAgICBxdWVyeV90b29sID0gdG9vbHNfbWVudS5maW5kX2VsZW1lbnRfYnlf dGFnX25hbWUoJ2xpJykKKworICAgICAgICB0ID0gdGltZS50aW1lKCkKKyAg ICAgICAgIyB3YWl0IHVudGlsIFF1ZXJ5IFRvb2wgbWVudSBiZWNvbWVzIGVu YWJsZWQuCisgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIC0gdCA8IDIwOiAg IyAyMCBzZWNvbmRzCisgICAgICAgICAgICAjIGlmIG1lbnUgaXMgZGlzYWJs ZWQgdGhlbiBpdCB3aWxsIGhhdmUKKyAgICAgICAgICAgICMgdHdvIGNsYXNz ZXMgJ21lbnUtaXRlbSBkaXNhYmxlZCcuCisgICAgICAgICAgICAjIEFuZCBp ZiBtZW51IGlzIGVuYWJsZWQgdGhlIGl0IHdpbGwgaGF2ZQorICAgICAgICAg ICAgIyBvbmx5IG9uZSBjbGFzcyAnbWVudS1pdGVtJy4KKyAgICAgICAgICAg IGlmICdtZW51LWl0ZW0nID09IHN0cihxdWVyeV90b29sLmdldF9hdHRyaWJ1 dGUoJ2NsYXNzJykpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg ICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg ICAgIGFzc2VydCBGYWxzZSwgIidUb29scyAtPiBRdWVyeSBUb29sJyBtZW51 IGRpZCBub3QgZW5hYmxlLiIKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9wYXJ0aWFsX2xpbmtfdGV4dCgiUXVlcnkgVG9vbCIpLmNsaWNrKCkKKyAg ICAgICAgc2VsZi5wYWdlLmNsaWNrX3RhYignUXVlcnkgLScpCisKKyAgICAg ICAgIyB3YWl0IHVudGlsIHdjIGRvY2tlciBhY3RpdmF0ZXMgcXVlcnkgdG9v bCBpZnJhbWUuCisgICAgICAgICMgdGltZS5zbGVlcCgzKQorICAgICAgICBz ZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAg IHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJp ZnJhbWUiKQorICAgICAgICApCisKKyAgICBkZWYgX2NsZWFyX3F1ZXJ5X3Rv b2woc2VsZik6CisgICAgICAgICMgY2xlYXIgY29kZW1pcnJvci4KKyAgICAg ICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1lZGl0IikuY2xpY2soKQor ICAgICAgICAjIHdhaXQgZm9yIGFsZXJ0aWZ5IGRpYWxvZyBvcGVuIGFuaW1h dGlvbiB0byBjb21wbGV0ZS4KKyAgICAgICAgdGltZS5zbGVlcCgxKQorCisg ICAgICAgIHNlbGYucGFnZS5jbGlja19lbGVtZW50KHNlbGYucGFnZS5maW5k X2J5X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyguLCdZZXMnKV0iKSkKKyAg ICAgICAgIyB3YWl0IGZvciBhbGVydGlmeSBkaWFsb2cgY2xvc2UgYW5pbWF0 aW9uIHRvIGNvbXBsZXRlLgorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAg ICBkZWYgX29uX2RlbWFuZF9yZXN1bHQoc2VsZik6CisgICAgICAgIE9OX0RF TUFORF9DSFVOS1MgPSAyCisgICAgICAgIHF1ZXJ5ID0gIiIiLS0gT24gZGVt YW5kIHF1ZXJ5IHJlc3VsdCBvbiBzY3JvbGwKK1NFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwge30pIGFzIGlkIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGNv bmZpZy5PTl9ERU1BTkRfUkVDT1JEX0NPVU5UICogT05fREVNQU5EX0NIVU5L UykKKworICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2Uu ZHJpdmVyLCAxMCkKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJv cl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRf YnlfaWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBh Z2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGljYXRvcl90b19k aXNhcHBlYXIoKQorCisgICAgICAgIGNhbnZhcyA9IHdhaXQudW50aWwoRUMu cHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5 LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xpY2stdmlld3BvcnQgLmdy aWQtY2FudmFzIikpKQorCisgICAgICAgICMgc2Nyb2xsIHRvIGJvdHRvbSB0 byBmZXRjaCBuZXh0IGNodW5rIG9mIHJlc3VsdCBzZXQuCisgICAgICAgIHNl bGYuZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KAorICAgICAgICAgICAgIiQoJy5z bGljay12aWV3cG9ydCcpLnNjcm9sbFRvcCgkKCcuZ3JpZC1jYW52YXMnKS5o ZWlnaHQoKSk7IgorICAgICAgICApCisKKyAgICAgICAgIyB3YWl0IGZvciBh amF4IHRvIGNvbXBsZXRlLgorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAg ICAgICAgIyBhZ2FpbiBzY3JvbGwgdG8gYm90dG9tIHRvIGJyaW5nIGxhc3Qg cm93IG9mIG5leHQgY2h1bmsgaW4KKyAgICAgICAgIyB2aWV3cG9ydC4KKyAg ICAgICAgc2VsZi5kcml2ZXIuZXhlY3V0ZV9zY3JpcHQoCisgICAgICAgICAg ICAiJCgnLnNsaWNrLXZpZXdwb3J0Jykuc2Nyb2xsVG9wKCQoJy5ncmlkLWNh bnZhcycpLmhlaWdodCgpKTsiCisgICAgICAgICkKKworICAgICAgICByb3df aWRfdG9fZmluZCA9IGNvbmZpZy5PTl9ERU1BTkRfUkVDT1JEX0NPVU5UICog T05fREVNQU5EX0NIVU5LUworCisgICAgICAgIGNhbnZhcy5maW5kX2VsZW1l bnRfYnlfeHBhdGgoCisgICAgICAgICAgICAnLy9zcGFuW3RleHQoKT0ie30i XScuZm9ybWF0KHJvd19pZF90b19maW5kKQorICAgICAgICApCisKKyAgICBk ZWYgX29uX2RlbWFuZF9yZXN1bHRfc2VsZWN0X2FsbF9ncmlkKHNlbGYpOgor ICAgICAgICBPTl9ERU1BTkRfQ0hVTktTID0gMworICAgICAgICBxdWVyeSA9 ICIiIi0tIE9uIGRlbWFuZCBxdWVyeSByZXN1bHQgb24gZ3JpZCBzZWxlY3Qg YWxsCitTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIHt9KSBhcyBpZCIiIi5m b3JtYXQoCisgICAgICAgICAgICBjb25maWcuT05fREVNQU5EX1JFQ09SRF9D T1VOVCAqIE9OX0RFTUFORF9DSFVOS1MpCisKKyAgICAgICAgd2FpdCA9IFdl YkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAg c2VsZi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNs aWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9v bF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorCisgICAgICAg IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIi5zbGljay1oZWFkZXIt Y29sdW1uIikpKS5jbGljaygpCisKKyAgICAgICAgIyB3YWl0IGZvciB1bnRp bCBhbGwgcmVjb3JkcyBhcmUgZmV0Y2hlZCBhbmQgc2VsZWN0ZWQuCisgICAg ICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgIyBzY3JvbGwgdG8gYm90dG9t IHRvIGJyaW5nIGxhc3Qgcm93IG9mIG5leHQgY2h1bmsgaW4KKyAgICAgICAg IyB2aWV3cG9ydC4KKyAgICAgICAgc2VsZi5kcml2ZXIuZXhlY3V0ZV9zY3Jp cHQoCisgICAgICAgICAgICAiJCgnLnNsaWNrLXZpZXdwb3J0Jykuc2Nyb2xs VG9wKCQoJy5ncmlkLWNhbnZhcycpLmhlaWdodCgpKTsiCisgICAgICAgICkK KworICAgICAgICBjYW52YXMgPSB3YWl0LnVudGlsKEVDLnByZXNlbmNlX29m X2VsZW1lbnRfbG9jYXRlZCgKKyAgICAgICAgICAgIChCeS5DU1NfU0VMRUNU T1IsICIjZGF0YWdyaWQgLnNsaWNrLXZpZXdwb3J0IC5ncmlkLWNhbnZhcyIp KQorICAgICAgICApCisKKyAgICAgICAgcm93X2lkX3RvX2ZpbmQgPSBjb25m aWcuT05fREVNQU5EX1JFQ09SRF9DT1VOVCAqIE9OX0RFTUFORF9DSFVOS1MK KworICAgICAgICBjYW52YXMuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAg ICAgICAgICAgJy8vc3Bhblt0ZXh0KCk9Int9Il0nLmZvcm1hdChyb3dfaWRf dG9fZmluZCkKKyAgICAgICAgKQorCisgICAgZGVmIF9vbl9kZW1hbmRfcmVz dWx0X3NlbGVjdF9hbGxfY29sdW1uKHNlbGYpOgorICAgICAgICBPTl9ERU1B TkRfQ0hVTktTID0gMworICAgICAgICBxdWVyeSA9ICIiIi0tIE9uIGRlbWFu ZCBxdWVyeSByZXN1bHQgb24gY29sdW1uIHNlbGVjdCBhbGwKK1NFTEVDVCBn ZW5lcmF0ZV9zZXJpZXMoMSwge30pIGFzIGlkMSwgJ2R1bW15JyBhcyBpZDIi IiIuZm9ybWF0KAorICAgICAgICAgICAgY29uZmlnLk9OX0RFTUFORF9SRUNP UkRfQ09VTlQgKiBPTl9ERU1BTkRfQ0hVTktTKQorCisgICAgICAgIHdhaXQg PSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDEwKQorCisgICAg ICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5 KQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tZmxhc2gi KS5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5 X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKworICAg ICAgICAjIGNsaWNrIG9uIGZpcnN0IGRhdGEgY29sdW1uIHRvIHNlbGVjdCBh bGwgY29sdW1uLgorCisgICAgICAgIHdhaXQudW50aWwoRUMucHJlc2VuY2Vf b2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICgKKyAgICAgICAgICAg IEJ5LlhQQVRILAorICAgICAgICAgICAgIi8vc3Bhbltjb250YWlucyhAY2xh c3MsICdjb2x1bW4tbmFtZScpIGFuZCBjb250YWlucyguLCAnaWQxJyldIikp CisgICAgICAgICkuY2xpY2soKQorCisgICAgICAgICMgd2FpdCBmb3IgdW50 aWwgYWxsIHJlY29yZHMgYXJlIGZldGNoZWQgYW5kIHNlbGVjdGVkLgorICAg ICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICMgc2Nyb2xsIHRvIGJvdHRv bSB0byBicmluZyBsYXN0IHJvdyBvZiBuZXh0IGNodW5rIGluCisgICAgICAg ICMgdmlld3BvcnQuCisgICAgICAgIHNlbGYuZHJpdmVyLmV4ZWN1dGVfc2Ny aXB0KAorICAgICAgICAgICAgIiQoJy5zbGljay12aWV3cG9ydCcpLnNjcm9s bFRvcCgkKCcuZ3JpZC1jYW52YXMnKS5oZWlnaHQoKSk7IgorICAgICAgICAp CisKKyAgICAgICAgY2FudmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9v Zl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVD VE9SLCAiI2RhdGFncmlkIC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMi KSkKKyAgICAgICAgKQorCisgICAgICAgIHJvd19pZF90b19maW5kID0gY29u ZmlnLk9OX0RFTUFORF9SRUNPUkRfQ09VTlQgKiBPTl9ERU1BTkRfQ0hVTktT CisKKyAgICAgICAgY2FudmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgKKyAg ICAgICAgICAgICcvL3NwYW5bdGV4dCgpPSJ7fSJdJy5mb3JtYXQocm93X2lk X3RvX2ZpbmQpCisgICAgICAgICkKKworICAgIGRlZiBfcXVlcnlfdG9vbF9l eHBsYWluKHNlbGYpOgorICAgICAgICBxdWVyeSA9ICIiIi0tIEV4cGxhaW4g cXVlcnkKK1NFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgYXMgaWQg b3JkZXIgYnkgaWQgZGVzYyIiIgorCisgICAgICAgIHdhaXQgPSBXZWJEcml2 ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDEwKQorCisgICAgICAgIHNlbGYu cGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAgICAg ICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIiku Y2xpY2soKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4 cGxhaW4iKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9y X3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkK KworICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcp CisKKyAgICAgICAgY2FudmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9v Zl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVD VE9SLCAiI2RhdGFncmlkIC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMi KSkKKyAgICAgICAgKQorICAgICAgICAjIFNlYXJjaCBmb3IgUGxhbiB3b3Jk IGluIHJlc3VsdAorICAgICAgICBjYW52YXMuZmluZF9lbGVtZW50X2J5X3hw YXRoKCIvLypbY29udGFpbnMoc3RyaW5nKCksJ1BsYW4nKV0iKQorCisgICAg ZGVmIF9xdWVyeV90b29sX2V4cGxhaW5fdmVyYm9zZShzZWxmKToKKyAgICAg ICAgcXVlcnkgPSAiIiItLSBFeHBsYWluIHF1ZXJ5IHdpdGggdmVyYm9zZQor U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBhcyBpZCBvcmRlciBi eSBpZCBkZXNjIiIiCisKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQo c2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZp bGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgcXVl cnlfb3AgPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bk b3duIikKKyAgICAgICAgcXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFj dGlvbkNoYWlucyhzZWxmLmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAg ICAgICAgICAgcXVlcnlfb3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAg ICAgICAgICAgICAgICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9u cycpXSIpKS5wZXJmb3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9pZCgiYnRuLWV4cGxhaW4tdmVyYm9zZSIpLmNsaWNrKCkKKworICAgICAg ICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4iKS5jbGljaygp CisKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9h ZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxm LnBhZ2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisKKyAgICAgICAgY2Fu dmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0 ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFncmlk IC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkKKyAgICAgICAgKQor ICAgICAgICAjIFNlYXJjaCBmb3IgJ091dHB1dCcgd29yZCBpbiByZXN1bHQK KyAgICAgICAgY2FudmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy8qW2Nv bnRhaW5zKHN0cmluZygpLCAnT3V0cHV0JyldIikKKworICAgIGRlZiBfcXVl cnlfdG9vbF9leHBsYWluX2Nvc3Qoc2VsZik6CisgICAgICAgIHF1ZXJ5ID0g IiIiLS0gRXhwbGFpbiBxdWVyeSB3aXRoIGNvc3RzCitTRUxFQ1QgZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIGFzIGlkIG9yZGVyIGJ5IGlkIGRlc2MiIiIK KworICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJp dmVyLCAxMCkKKworICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9y X2FyZWFfd2l0aChxdWVyeSkKKyAgICAgICAgcXVlcnlfb3AgPSBzZWxmLnBh Z2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikKKyAgICAgICAg cXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFjdGlvbkNoYWlucyhzZWxm LmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAgICAgICAgICAgcXVlcnlf b3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICIv L2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9ucycpXSIpKS5wZXJmb3Jt KCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxh aW4tY29zdHMiKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRf YnlfaWQoImJ0bi1leHBsYWluIikuY2xpY2soKQorCisgICAgICAgIHNlbGYu cGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9yX3Rv X2Rpc2FwcGVhcigpCisKKyAgICAgICAgc2VsZi5wYWdlLmNsaWNrX3RhYign RGF0YSBPdXRwdXQnKQorCisgICAgICAgIGNhbnZhcyA9IHdhaXQudW50aWwo RUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAg KEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xpY2stdmlld3BvcnQg LmdyaWQtY2FudmFzIikpCisgICAgICAgICkKKyAgICAgICAgIyBTZWFyY2gg Zm9yICdUb3RhbCBDb3N0IHdvcmQgaW4gcmVzdWx0CisgICAgICAgIGNhbnZh cy5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8vKltjb250YWlucyhzdHJpbmco KSwnVG90YWwgQ29zdCcpXSIpCisKKyAgICBkZWYgX3F1ZXJ5X3Rvb2xfZXhw bGFpbl9hbmFseXplKHNlbGYpOgorICAgICAgICBxdWVyeSA9ICIiIi0tIEV4 cGxhaW4gYW5hbHl6ZSBxdWVyeQorU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygx LCAxMDAwKSBhcyBpZCBvcmRlciBieSBpZCBkZXNjIiIiCisKKyAgICAgICAg d2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgo cXVlcnkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1x dWVyeS1kcm9wZG93biIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmZp bmRfYnlfaWQoImJ0bi1leHBsYWluLWFuYWx5emUiKS5jbGljaygpCisKKyAg ICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGluZ19p bmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxmLnBhZ2Uu Y2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisKKyAgICAgICAgY2FudmFzID0g d2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisg ICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFncmlkIC5zbGlj ay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkKKyAgICAgICAgKQorICAgICAg ICAjIFNlYXJjaCBmb3IgQWN0dWFsIFJvd3Mgd29yZCBpbiByZXN1bHQKKyAg ICAgICAgY2FudmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy8qW2NvbnRh aW5zKHN0cmluZygpLCdBY3R1YWwgUm93cycpXSIpCisKKyAgICBkZWYgX3F1 ZXJ5X3Rvb2xfZXhwbGFpbl9hbmFseXplX2J1ZmZlcnMoc2VsZik6CisgICAg ICAgIHF1ZXJ5ID0gIiIiLS0gRXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGgg YnVmZmVycworU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBhcyBp ZCBvcmRlciBieSBpZCBkZXNjIiIiCisKKyAgICAgICAgd2FpdCA9IFdlYkRy aXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAg ICAgICAgcXVlcnlfb3AgPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1 ZXJ5LWRyb3Bkb3duIikKKyAgICAgICAgcXVlcnlfb3AuY2xpY2soKQorCisg ICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZlcikubW92ZV90b19lbGVt ZW50KAorICAgICAgICAgICAgcXVlcnlfb3AuZmluZF9lbGVtZW50X2J5X3hw YXRoKAorICAgICAgICAgICAgICAgICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxh aW4gT3B0aW9ucycpXSIpKS5wZXJmb3JtKCkKKworICAgICAgICBzZWxmLnBh Z2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4tYnVmZmVycyIpLmNsaWNrKCkK KworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4t YW5hbHl6ZSIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9m b3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIo KQorCisgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIoJ0RhdGEgT3V0cHV0 JykKKworICAgICAgICBjYW52YXMgPSB3YWl0LnVudGlsKEVDLnByZXNlbmNl X29mX2VsZW1lbnRfbG9jYXRlZCgKKyAgICAgICAgICAgIChCeS5DU1NfU0VM RUNUT1IsICIjZGF0YWdyaWQgLnNsaWNrLXZpZXdwb3J0IC5ncmlkLWNhbnZh cyIpKQorICAgICAgICApCisgICAgICAgICMgU2VhcmNoIGZvciAnU2hhcmVk IFJlYWQgQmxvY2tzJyB3b3JkIGluIHJlc3VsdAorICAgICAgICBjYW52YXMu ZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvLypbY29udGFpbnMoc3RyaW5nKCks ICdTaGFyZWQgUmVhZCBCbG9ja3MnKV0iKQorCisgICAgZGVmIF9xdWVyeV90 b29sX2V4cGxhaW5fYW5hbHl6ZV90aW1pbmcoc2VsZik6CisgICAgICAgIHF1 ZXJ5ID0gIiIiLS0gRXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGggdGltaW5n CitTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGFzIGlkIG9yZGVy IGJ5IGlkIGRlc2MiIiIKKworICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2Fp dChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKworICAgICAgICBzZWxmLnBhZ2Uu ZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChxdWVyeSkKKyAgICAgICAgcXVl cnlfb3AgPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bk b3duIikKKyAgICAgICAgcXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFj dGlvbkNoYWlucyhzZWxmLmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAg ICAgICAgICAgcXVlcnlfb3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAg ICAgICAgICAgICAgICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9u cycpXSIpKS5wZXJmb3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9pZCgiYnRuLWV4cGxhaW4tdGltaW5nIikuY2xpY2soKQorCisgICAgICAg IHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tZXhwbGFpbi1hbmFseXplIiku Y2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9xdWVyeV90 b29sX2xvYWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCisKKyAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX3RhYignRGF0YSBPdXRwdXQnKQorCisgICAg ICAgIGNhbnZhcyA9IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVu dF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNk YXRhZ3JpZCAuc2xpY2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpCisgICAg ICAgICkKKyAgICAgICAgIyBTZWFyY2ggZm9yICdBY3R1YWwgVG90YWwgVGlt ZScgd29yZCBpbiByZXN1bHQKKyAgICAgICAgY2FudmFzLmZpbmRfZWxlbWVu dF9ieV94cGF0aCgiLy8qW2NvbnRhaW5zKHN0cmluZygpLCAnQWN0dWFsIFRv dGFsIFRpbWUnKV0iKQorCisgICAgZGVmIF9xdWVyeV90b29sX2F1dG9fY29t bWl0X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICB0YWJsZV9uYW1lID0gJ3F1 ZXJ5X3Rvb2xfYXV0b19jb21taXRfZGlzYWJsZWRfdGFibGUnCisgICAgICAg IHF1ZXJ5ID0gIiIiLS0gMS4gRGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDIu IENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gMy4gUk9MTEJB Q0sgdHJhbnNhY3Rpb24uCistLSA0LiBDaGVjayBpZiB0YWJsZSBpcyAqTk9U KiBjcmVhdGVkLgorQ1JFQVRFIFRBQkxFIHB1YmxpYy57fSgpOyIiIi5mb3Jt YXQodGFibGVfbmFtZSkKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQo c2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZp bGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1xdWVyeS1kcm9wZG93biIpLmNsaWNr KCkKKworICAgICAgICBhdXRvX2NvbW1pdF9idG4gPSBzZWxmLnBhZ2UuZmlu ZF9ieV9pZCgiYnRuLWF1dG8tY29tbWl0IikKKworICAgICAgICBhdXRvX2Nv bW1pdF9jaGVjayA9IGF1dG9fY29tbWl0X2J0bi5maW5kX2VsZW1lbnRfYnlf dGFnX25hbWUoImkiKQorCisgICAgICAgICMgaWYgYXV0byBjb21taXQgaXMg ZW5hYmxlZCB0aGVuICdpJyBlbGVtZW50IHdpbGwKKyAgICAgICAgIyBoYXZl ICdhdXRvLWNvbW1pdCBmYSBmYS1jaGVjaycgY2xhc3NlcworICAgICAgICAj IGlmIGF1dG8gY29tbWl0IGlzIGRpc2FibGVkIHRoZW4gJ2knIGVsZW1lbnQg d2lsbAorICAgICAgICAjIGhhdmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNr IHZpc2liaWxpdHktaGlkZGVuJyBjbGFzc2VzCisKKyAgICAgICAgaWYgJ2F1 dG8tY29tbWl0IGZhIGZhLWNoZWNrJyA9PSBzdHIoYXV0b19jb21taXRfY2hl Y2suZ2V0X2F0dHJpYnV0ZSgKKyAgICAgICAgICAgICAgICAnY2xhc3MnKSk6 CisgICAgICAgICAgICBhdXRvX2NvbW1pdF9idG4uY2xpY2soKQorCisgICAg ICAgIHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tZmxhc2giKS5jbGljaygp CisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRp bmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCisgICAgICAgIHNlbGYucGFn ZS5jbGlja190YWIoJ01lc3NhZ2VzJykKKyAgICAgICAgc2VsZi5kcml2ZXIu ZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgJy8vZGl2W2Nv bnRhaW5zKEBjbGFzcywgInNxbC1lZGl0b3ItbWVzc2FnZSIpIGFuZCBjb250 YWlucyhzdHJpbmcoKSwgIkNSRUFURSBUQUJMRSIpXScKKyAgICAgICAgKQor CisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBx dWVyeSA9ICIiIi0tIDEuIChEb25lKSBEaXNhYmxlIGF1dG8gY29tbWl0Lgor LS0gMi4gKERvbmUpIENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgor LS0gMy4gUk9MTEJBQ0sgdHJhbnNhY3Rpb24uCistLSA0LiBDaGVjayBpZiB0 YWJsZSBpcyAqTk9UKiBjcmVhdGVkLgorUk9MTEJBQ0s7IiIiCisgICAgICAg IHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xp Y2soKQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9s b2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxm LnBhZ2UuY2xpY2tfdGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJp dmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rp dltjb250YWlucyhAY2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQg Y29udGFpbnMoc3RyaW5nKCksICJST0xMQkFDSyIpXScKKyAgICAgICAgKQor CisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBx dWVyeSA9ICIiIi0tIDEuIChEb25lKSBEaXNhYmxlIGF1dG8gY29tbWl0Lgor LS0gMi4gKERvbmUpIENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgor LS0gMy4gKERvbmUpIFJPTExCQUNLIHRyYW5zYWN0aW9uLgorLS0gNC4gQ2hl Y2sgaWYgdGFibGUgaXMgKk5PVCogY3JlYXRlZC4KK1NFTEVDVCByZWxuYW1l IEZST00gcGdfY2xhc3MgV0hFUkUgcmVsa2luZCBJTiAoJ3InLCdzJywndCcp IGFuZCByZWxuYW1lc3BhY2UgPSAyMjAwOjpvaWQ7IiIiCisgICAgICAgIHNl bGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAg ICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2Fk aW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisgICAgICAgIGNhbnZhcyA9 IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xp Y2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpKQorCisgICAgICAgIGVsID0g Y2FudmFzLmZpbmRfZWxlbWVudHNfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5z KEBjbGFzcywgJ3NsaWNrLWNlbGwnKSBhbmQgY29udGFpbnModGV4dCgpLCAn e30nKV0iLmZvcm1hdCh0YWJsZV9uYW1lKSkKKworICAgICAgICBhc3NlcnQg bGVuKGVsKSA9PSAwLCAiVGFibGUgJ3t9JyBjcmVhdGVkIHdpdGggYXV0byBj b21taXQgZGlzYWJsZWQgYW5kIHdpdGhvdXQgYW55IGV4cGxpY2l0IGNvbW1p dC4iLmZvcm1hdCh0YWJsZV9uYW1lKQorCisgICAgZGVmIF9xdWVyeV90b29s X2F1dG9fY29tbWl0X2VuYWJsZWQoc2VsZik6CisgICAgICAgIHRhYmxlX25h bWUgPSAncXVlcnlfdG9vbF9hdXRvX2NvbW1pdF9lbmFibGVkX3RhYmxlJwor ICAgICAgICBxdWVyeSA9ICIiIi0tIDEuIEVORCBhbnkgb3BlbiB0cmFuc2Fj dGlvbi4KKy0tIDIuIEVuYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIENyZWF0 ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gNC4gUk9MTEJBQ0sgdHJh bnNhY3Rpb24KKy0tIDUuIENoZWNrIGlmIHRhYmxlIGlzIGNyZWF0ZWQgZXZl bnQgYWZ0ZXIgUk9MTEJBQ0suCitFTkQ7CitDUkVBVEUgVEFCTEUgcHVibGlj Lnt9KCk7IiIiLmZvcm1hdCh0YWJsZV9uYW1lKQorICAgICAgICB3YWl0ID0g V2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKworICAgICAg ICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChxdWVyeSkK KworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRy b3Bkb3duIikuY2xpY2soKQorCisgICAgICAgIGF1dG9fY29tbWl0X2J0biA9 IHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tYXV0by1jb21taXQiKQorCisg ICAgICAgIGF1dG9fY29tbWl0X2NoZWNrID0gYXV0b19jb21taXRfYnRuLmZp bmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaSIpCisKKyAgICAgICAgIyBpZiBh dXRvIGNvbW1pdCBpcyBlbmFibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAor ICAgICAgICAjIGhhdmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNrJyBjbGFz c2VzCisgICAgICAgICMgaWYgYXV0byBjb21taXQgaXMgZGlzYWJsZWQgdGhl biAnaScgZWxlbWVudCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1jb21t aXQgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4nIGNsYXNzZXMKKwor ICAgICAgICBpZiAnYXV0by1jb21taXQgZmEgZmEtY2hlY2sgdmlzaWJpbGl0 eS1oaWRkZW4nID09IHN0cihhdXRvX2NvbW1pdF9jaGVjay5nZXRfYXR0cmli dXRlKAorICAgICAgICAgICAgICAgICdjbGFzcycpKToKKyAgICAgICAgICAg IGF1dG9fY29tbWl0X2J0bi5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X2lkKCJidG4tZmxhc2giKS5jbGljaygpCisgICAgICAgIHNlbGYu cGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9yX3Rv X2Rpc2FwcGVhcigpCisgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIoJ01l c3NhZ2VzJykKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5 X3hwYXRoKAorICAgICAgICAgICAgJy8vZGl2W2NvbnRhaW5zKEBjbGFzcywg InNxbC1lZGl0b3ItbWVzc2FnZSIpIGFuZCBjb250YWlucyhzdHJpbmcoKSwg IkNSRUFURSBUQUJMRSIpXScKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYu X2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBxdWVyeSA9ICIiIi0tIDEu IChEb25lKSBFTkQgYW55IG9wZW4gdHJhbnNhY3Rpb24gaWYgYW55LgorLS0g Mi4gKERvbmUpIEVuYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25lKSBD cmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIFJPTExCQUNL IHRyYW5zYWN0aW9uCistLSA1LiBDaGVjayBpZiB0YWJsZSBpcyBjcmVhdGVk IGV2ZW50IGFmdGVyIFJPTExCQUNLLgorUk9MTEJBQ0s7IiIiCisgICAgICAg IHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xp Y2soKQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9s b2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxm LnBhZ2UuY2xpY2tfdGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJp dmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rp dltjb250YWlucyhAY2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQg Y29udGFpbnMoc3RyaW5nKCksICJST0xMQkFDSyIpXScKKyAgICAgICAgKQor CisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBx dWVyeSA9ICIiIi0tIDEuIChEb25lKSBFTkQgYW55IG9wZW4gdHJhbnNhY3Rp b24gaWYgYW55LgorLS0gMi4gKERvbmUpIEVuYWJsZSBhdXRvIGNvbW1pdC4K Ky0tIDMuIChEb25lKSBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4K Ky0tIDQuIChEb25lKSBST0xMQkFDSyB0cmFuc2FjdGlvbgorLS0gNS4gQ2hl Y2sgaWYgdGFibGUgaXMgY3JlYXRlZCBldmVudCBhZnRlciBST0xMQkFDSy4K K1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsa2luZCBJ TiAoJ3InLCdzJywndCcpIGFuZCByZWxuYW1lc3BhY2UgPSAyMjAwOjpvaWQ7 IiIiCisgICAgICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93 aXRoKHF1ZXJ5KQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRu LWZsYXNoIikuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFi KCdEYXRhIE91dHB1dCcpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9x dWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCisK KyAgICAgICAgY2FudmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9l bGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9S LCAiI2RhdGFncmlkIC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkp CisKKyAgICAgICAgZWwgPSBjYW52YXMuZmluZF9lbGVtZW50c19ieV94cGF0 aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCAnc2xpY2stY2VsbCcpIGFuZCBj b250YWlucyh0ZXh0KCksICd7fScpXSIuZm9ybWF0KHRhYmxlX25hbWUpKQor CisgICAgICAgIGFzc2VydCBsZW4oZWwpICE9IDAsICJUYWJsZSAne30nIGlz IG5vdCBjcmVhdGVkIHdpdGggYXV0byBjb21taXQgZW5hYmxlZC4iLmZvcm1h dCh0YWJsZV9uYW1lKQorCisgICAgZGVmIF9xdWVyeV90b29sX2F1dG9fcm9s bGJhY2tfZW5hYmxlZChzZWxmKToKKyAgICAgICAgdGFibGVfbmFtZSA9ICdx dWVyeV90b29sX2F1dG9fcm9sbGJhY2tfZW5hYmxlZF90YWJsZScKKyAgICAg ICAgcXVlcnkgPSAiIiItLSAxLiBFTkQgYW55IG9wZW4gdHJhbnNhY3Rpb24u CistLSAyLiBFbmFibGUgYXV0byByb2xsYmFjayBhbmQgZGlzYWJsZSBhdXRv IGNvbW1pdC4KKy0tIDMuIENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1h LgorLS0gNC4gR2VuZXJhdGUgZXJyb3IgaW4gdHJhbnNhY3Rpb24uCistLSA1 LiBFTkQgdHJhbnNhY3Rpb24uCistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAq bm90KiBjcmVhdGVkIGFmdGVyIGVuZGluZyB0cmFuc2FjdGlvbi4KK0VORDsi IiIKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dp dGgocXVlcnkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0 bi1mbGFzaCIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9y X3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkK KyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAgICAg cXVlcnkgPSAiIiItLSAxLiAoRG9uZSkgRU5EIGFueSBvcGVuIHRyYW5zYWN0 aW9uLgorLS0gMi4gRW5hYmxlIGF1dG8gcm9sbGJhY2sgYW5kIGRpc2FibGUg YXV0byBjb21taXQuCistLSAzLiBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNj aGVtYS4KKy0tIDQuIEdlbmVyYXRlIGVycm9yIGluIHRyYW5zYWN0aW9uLgor LS0gNS4gRU5EIHRyYW5zYWN0aW9uLgorLS0gNi4gQ2hlY2sgaWYgdGFibGUg aXMgKm5vdCogY3JlYXRlZCBhZnRlciBlbmRpbmcgdHJhbnNhY3Rpb24uCitD UkVBVEUgVEFCTEUgcHVibGljLnt9KCk7IiIiLmZvcm1hdCh0YWJsZV9uYW1l KQorICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJp dmVyLCAxMCkKKworICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9y X2FyZWFfd2l0aChxdWVyeSkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikuY2xpY2soKQorCisgICAgICAg IGF1dG9fcm9sbGJhY2tfYnRuID0gc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0 bi1hdXRvLXJvbGxiYWNrIikKKworICAgICAgICBhdXRvX3JvbGxiYWNrX2No ZWNrID0gYXV0b19yb2xsYmFja19idG4uZmluZF9lbGVtZW50X2J5X3RhZ19u YW1lKCJpIikKKworICAgICAgICAjIGlmIGF1dG8gcm9sbGJhY2sgaXMgZW5h YmxlZCB0aGVuICdpJyBlbGVtZW50IHdpbGwKKyAgICAgICAgIyBoYXZlICdh dXRvLXJvbGxiYWNrIGZhIGZhLWNoZWNrJyBjbGFzc2VzCisgICAgICAgICMg aWYgYXV0byByb2xsYmFjayBpcyBkaXNhYmxlZCB0aGVuICdpJyBlbGVtZW50 IHdpbGwKKyAgICAgICAgIyBoYXZlICdhdXRvLXJvbGxiYWNrIGZhIGZhLWNo ZWNrIHZpc2liaWxpdHktaGlkZGVuJyBjbGFzc2VzCisKKyAgICAgICAgaWYg J2F1dG8tcm9sbGJhY2sgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4n ID09IHN0cihhdXRvX3JvbGxiYWNrX2NoZWNrLmdldF9hdHRyaWJ1dGUoCisg ICAgICAgICAgICAgICAgJ2NsYXNzJykpOgorICAgICAgICAgICAgYXV0b19y b2xsYmFja19idG4uY2xpY2soKQorCisgICAgICAgIGF1dG9fY29tbWl0X2J0 biA9IHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tYXV0by1jb21taXQiKQor CisgICAgICAgIGF1dG9fY29tbWl0X2NoZWNrID0gYXV0b19jb21taXRfYnRu LmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaSIpCisKKyAgICAgICAgIyBp ZiBhdXRvIGNvbW1pdCBpcyBlbmFibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2ls bAorICAgICAgICAjIGhhdmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNrJyBj bGFzc2VzCisgICAgICAgICMgaWYgYXV0byBjb21taXQgaXMgZGlzYWJsZWQg dGhlbiAnaScgZWxlbWVudCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1j b21taXQgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4nIGNsYXNzZXMK KworICAgICAgICBpZiAnYXV0by1jb21taXQgZmEgZmEtY2hlY2snID09IHN0 cihhdXRvX2NvbW1pdF9jaGVjay5nZXRfYXR0cmlidXRlKAorICAgICAgICAg ICAgICAgICdjbGFzcycpKToKKyAgICAgICAgICAgIGF1dG9fY29tbWl0X2J0 bi5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0 bi1mbGFzaCIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9y X3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkK KyAgICAgICAgc2VsZi5wYWdlLmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAg ICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAg ICAgICAgICAnLy9kaXZbY29udGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1t ZXNzYWdlIikgYW5kIGNvbnRhaW5zKHN0cmluZygpLCAiQ1JFQVRFIFRBQkxF IildJworICAgICAgICApCisKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlf dG9vbCgpCisgICAgICAgIHF1ZXJ5ID0gIiIiLS0gMS4gKERvbmUpIEVORCBh bnkgb3BlbiB0cmFuc2FjdGlvbi4KKy0tIDIuIChEb25lKSBFbmFibGUgYXV0 byByb2xsYmFjayBhbmQgZGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChE b25lKSBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIEdl bmVyYXRlIGVycm9yIGluIHRyYW5zYWN0aW9uLgorLS0gNS4gRU5EIHRyYW5z YWN0aW9uLgorLS0gNi4gQ2hlY2sgaWYgdGFibGUgaXMgKm5vdCogY3JlYXRl ZCBhZnRlciBlbmRpbmcgdHJhbnNhY3Rpb24uCitTRUxFQ1QgMS8wOyIiIgor ICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChx dWVyeSkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFz aCIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5 X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAgICAgICBz ZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAgICAgICAg ICAnLy9kaXZbY29udGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1tZXNzYWdl IikgYW5kIGNvbnRhaW5zKHN0cmluZygpLCAiZGl2aXNpb24gYnkgemVybyIp XScKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rv b2woKQorICAgICAgICBxdWVyeSA9ICIiIi0tIDEuIChEb25lKSBFTkQgYW55 IG9wZW4gdHJhbnNhY3Rpb24uCistLSAyLiAoRG9uZSkgRW5hYmxlIGF1dG8g cm9sbGJhY2sgYW5kIGRpc2FibGUgYXV0byBjb21taXQuCistLSAzLiAoRG9u ZSkgQ3JlYXRlIHRhYmxlIGluIHB1YmxpYyBzY2hlbWEuCistLSA0LiAoRG9u ZSkgR2VuZXJhdGUgZXJyb3IgaW4gdHJhbnNhY3Rpb24uCistLSA1LiBFTkQg dHJhbnNhY3Rpb24uCistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAqbm90KiBj cmVhdGVkIGFmdGVyIGVuZGluZyB0cmFuc2FjdGlvbi4KK0VORDsiIiIKKwor ICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChx dWVyeSkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFz aCIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5 X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAgICAgICBz ZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAgICAgICAg ICAnLy9kaXZbY29udGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1tZXNzYWdl IikgYW5kIGNvbnRhaW5zKHN0cmluZygpLCAiQ09NTUlUIildJworICAgICAg ICApCisKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisgICAg ICAgIHF1ZXJ5ID0gIiIiLS0gMS4gKERvbmUpIEVORCBhbnkgb3BlbiB0cmFu c2FjdGlvbi4KKy0tIDIuIChEb25lKSBFbmFibGUgYXV0byByb2xsYmFjayBh bmQgZGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25lKSBDcmVhdGUg dGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIChEb25lKSBHZW5lcmF0 ZSBlcnJvciBpbiB0cmFuc2FjdGlvbi4KKy0tIDUuIChEb25lKSBFTkQgdHJh bnNhY3Rpb24uCistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAqbm90KiBjcmVh dGVkIGFmdGVyIGVuZGluZyB0cmFuc2FjdGlvbi4KK1NFTEVDVCByZWxuYW1l IEZST00gcGdfY2xhc3MgV0hFUkUgcmVsa2luZCBJTiAoJ3InLCdzJywndCcp IGFuZCByZWxuYW1lc3BhY2UgPSAyMjAwOjpvaWQ7IiIiCisgICAgICAgIHNl bGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAg ICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2Fk aW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisgICAgICAgIGNhbnZhcyA9 IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xp Y2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpKQorCisgICAgICAgIGVsID0g Y2FudmFzLmZpbmRfZWxlbWVudHNfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5z KEBjbGFzcywgJ3NsaWNrLWNlbGwnKSBhbmQgY29udGFpbnModGV4dCgpLCAn e30nKV0iLmZvcm1hdCh0YWJsZV9uYW1lKSkKKworICAgICAgICBhc3NlcnQg bGVuKGVsKSA9PSAwLCAiVGFibGUgJ3t9JyBjcmVhdGVkIGV2ZW4gYWZ0ZXIg Uk9MTEJBQ0sgZHVlIHRvIHNxbCBlcnJvci4iLmZvcm1hdCh0YWJsZV9uYW1l KQorCisgICAgZGVmIF9xdWVyeV90b29sX2NhbmNlbF9xdWVyeShzZWxmKToK KyAgICAgICAgcXVlcnkgPSAiIiItLSAxLiBFTkQgYW55IG9wZW4gdHJhbnNh Y3Rpb24uCistLSAyLiBFbmFibGUgYXV0byBjb21taXQgYW5kIERpc2FibGUg YXV0byByb2xsYmFjay4KKy0tIDMuIEV4ZWN1dGUgbG9uZyBydW5uaW5nIHF1 ZXJ5LgorLS0gNC4gQ2FuY2VsIGxvbmcgcnVubmluZyBxdWVyeSBleGVjdXRp b24uCitFTkQ7CitTRUxFQ1QgMSwgcGdfc2xlZXAoMTApIiIiCisgICAgICAg IHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQor CisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tcXVlcnktZHJv cGRvd24iKS5jbGljaygpCisKKyAgICAgICAgYXV0b19yb2xsYmFja19idG4g PSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWF1dG8tcm9sbGJhY2siKQor CisgICAgICAgIGF1dG9fcm9sbGJhY2tfY2hlY2sgPSBhdXRvX3JvbGxiYWNr X2J0bi5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoImkiKQorCisgICAgICAg ICMgaWYgYXV0byByb2xsYmFjayBpcyBlbmFibGVkIHRoZW4gJ2knIGVsZW1l bnQgd2lsbAorICAgICAgICAjIGhhdmUgJ2F1dG8tcm9sbGJhY2sgZmEgZmEt Y2hlY2snIGNsYXNzZXMKKyAgICAgICAgIyBpZiBhdXRvIHJvbGxiYWNrIGlz IGRpc2FibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAorICAgICAgICAjIGhh dmUgJ2F1dG8tcm9sbGJhY2sgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRk ZW4nIGNsYXNzZXMKKworICAgICAgICBpZiAnYXV0by1yb2xsYmFjayBmYSBm YS1jaGVjaycgPT0gc3RyKGF1dG9fcm9sbGJhY2tfY2hlY2suZ2V0X2F0dHJp YnV0ZSgKKyAgICAgICAgICAgICAgICAnY2xhc3MnKSk6CisgICAgICAgICAg ICBhdXRvX3JvbGxiYWNrX2J0bi5jbGljaygpCisKKyAgICAgICAgYXV0b19j b21taXRfYnRuID0gc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1hdXRvLWNv bW1pdCIpCisKKyAgICAgICAgYXV0b19jb21taXRfY2hlY2sgPSBhdXRvX2Nv bW1pdF9idG4uZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpIikKKworICAg ICAgICAjIGlmIGF1dG8gY29tbWl0IGlzIGVuYWJsZWQgdGhlbiAnaScgZWxl bWVudCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1jb21taXQgZmEgZmEt Y2hlY2snIGNsYXNzZXMKKyAgICAgICAgIyBpZiBhdXRvIGNvbW1pdCBpcyBk aXNhYmxlZCB0aGVuICdpJyBlbGVtZW50IHdpbGwKKyAgICAgICAgIyBoYXZl ICdhdXRvLWNvbW1pdCBmYSBmYS1jaGVjayB2aXNpYmlsaXR5LWhpZGRlbicg Y2xhc3NlcworCisgICAgICAgIGlmICdhdXRvLWNvbW1pdCBmYSBmYS1jaGVj ayB2aXNpYmlsaXR5LWhpZGRlbicgPT0gc3RyKGF1dG9fY29tbWl0X2NoZWNr LmdldF9hdHRyaWJ1dGUoCisgICAgICAgICAgICAgICAgJ2NsYXNzJykpOgor ICAgICAgICAgICAgYXV0b19jb21taXRfYnRuLmNsaWNrKCkKKworICAgICAg ICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2soKQor ICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8v KltAaWQ9J2ZldGNoaW5nX2RhdGEnXSIpCisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X2lkKCJidG4tY2FuY2VsLXF1ZXJ5IikuY2xpY2soKQorICAgICAg ICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGlj YXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxl bWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltjb250YWlucyhA Y2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQgY29udGFpbnMoc3Ry aW5nKCksICJjYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byB1c2VyIHJlcXVl c3QiKV0nCisgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Zl YXR1cmVfdGVzdHMveHNzX2NoZWNrc19wYW5lbHNfYW5kX3F1ZXJ5X3Rvb2xf dGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNr c19wYW5lbHNfYW5kX3F1ZXJ5X3Rvb2xfdGVzdC5weQppbmRleCA0ZmQwNzgz Li5hMGRmNDRlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rl c3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QucHkK KysrIGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3Bh bmVsc19hbmRfcXVlcnlfdG9vbF90ZXN0LnB5CkBAIC0xMCw2ICsxMCw5IEBA CiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlciBpbXBvcnQgQWN0aW9uQ2hhaW5z CiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRl c3RfdXRpbHMKIGZyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJhc2Vf ZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVyZVRlc3QKK2Zyb20gc2Vs ZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldh aXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4 cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gc2VsZW5pdW0ud2ViZHJp dmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKIGltcG9ydCB0aW1lCiAKIGNsYXNz IENoZWNrRm9yWHNzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKQEAg LTE1MiwxMSArMTU1LDE2IEBAIGNsYXNzIENoZWNrRm9yWHNzRmVhdHVyZVRl c3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgc2VsZi5wYWdlLmZpbGxf Y29kZW1pcnJvcl9hcmVhX3dpdGgoInNlbGVjdCAnPGltZyBzcmM9XCJ4XCIg b25lcnJvcj1cImNvbnNvbGUubG9nKDEpXCI+JyIpCiAgICAgICAgIHRpbWUu c2xlZXAoMSkKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1m bGFzaCIpLmNsaWNrKCkKLSAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAg ICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCA1KQog Ci0gICAgICAgIHNvdXJjZV9jb2RlID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBh dGgoCi0gICAgICAgICAgICAiLy8qW0BpZD0nMCddLy8qW0BpZD0nZGF0YWdy aWQnXS9kaXZbNV0vZGl2L2RpdlsxXS9kaXZbMl0iCi0gICAgICAgICkuZ2V0 X2F0dHJpYnV0ZSgnaW5uZXJIVE1MJykKKyAgICAgICAgcmVzdWx0X3JvdyA9 IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgIi8vKltj b250YWlucyhAY2xhc3MsICd1aS13aWRnZXQtY29udGVudCcpIGFuZCBjb250 YWlucyhAc3R5bGUsICd0b3A6MHB4JyldIgorICAgICAgICApCisKKyAgICAg ICAgY2VsbHMgPSByZXN1bHRfcm93LmZpbmRfZWxlbWVudHNfYnlfdGFnX25h bWUoJ2RpdicpCisKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgZWxlbWVudCBh cyBpdCBpcyByb3cgbnVtYmVyLgorICAgICAgICBzb3VyY2VfY29kZSA9IGNl bGxzWzFdLmdldF9hdHRyaWJ1dGUoJ2lubmVySFRNTCcpCiAKICAgICAgICAg c2VsZi5fY2hlY2tfZXNjYXBlZF9jaGFyYWN0ZXJzKAogICAgICAgICAgICAg c291cmNlX2NvZGUsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvc2VsZWN0aW9uL2NvbHVtbl9zZWxlY3Rvci5qcyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9yLmpzCmluZGV4 IDMwNWI0MzguLmYzY2I3MjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9yLmpzCisrKyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9y LmpzCkBAIC00LDEzICs0LDE4IEBAIGRlZmluZShbCiAgICdzbGlja2dyaWQn LAogXSwgZnVuY3Rpb24gKCQsIFJhbmdlU2VsZWN0aW9uSGVscGVyKSB7CiAg IHZhciBDb2x1bW5TZWxlY3RvciA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIg U2xpY2sgPSB3aW5kb3cuU2xpY2s7Ci0gICAgdmFyIGdyaWRFdmVudEJ1cyA9 IG5ldyBTbGljay5FdmVudEhhbmRsZXIoKTsKKyAgICB2YXIgU2xpY2sgPSB3 aW5kb3cuU2xpY2ssCisgICAgICBncmlkRXZlbnRCdXMgPSBuZXcgU2xpY2su RXZlbnRIYW5kbGVyKCksCisgICAgICBvbkJlZm9yZUNvbHVtblNlbGVjdEFs bCA9IG5ldyBTbGljay5FdmVudCgpLAorICAgICAgb25Db2x1bW5TZWxlY3RB bGwgPSBuZXcgU2xpY2suRXZlbnQoKTsKIAogICAgIHZhciBpbml0ID0gZnVu Y3Rpb24gKGdyaWQpIHsKICAgICAgIGdyaWRFdmVudEJ1cy5zdWJzY3JpYmUo Z3JpZC5vbkhlYWRlckNsaWNrLCBoYW5kbGVIZWFkZXJDbGljay5iaW5kKG51 bGwsIGdyaWQpKTsKICAgICAgIGdyaWQuZ2V0U2VsZWN0aW9uTW9kZWwoKS5v blNlbGVjdGVkUmFuZ2VzQ2hhbmdlZAogICAgICAgICAuc3Vic2NyaWJlKGhh bmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZC5iaW5kKG51bGwsIGdyaWQpKTsK KyAgICAgIG9uQ29sdW1uU2VsZWN0QWxsLnN1YnNjcmliZShmdW5jdGlvbihl LCBhcmdzKSB7CisgICAgICAgIHVwZGF0ZVJhbmdlcyhhcmdzLmdyaWQsIGFy Z3MuY29sdW1uLmlkKTsKKyAgICAgIH0pOwogICAgIH07CiAKICAgICB2YXIg aGFuZGxlSGVhZGVyQ2xpY2sgPSBmdW5jdGlvbiAoZ3JpZCwgZXZlbnQsIGFy Z3MpIHsKQEAgLTIxLDExICsyNiwyMCBAQCBkZWZpbmUoWwogICAgICAgaWYg KGlzQ29sdW1uU2VsZWN0YWJsZShjb2x1bW5EZWZpbml0aW9uKSkgewogICAg ICAgICB2YXIgJGNvbHVtbkhlYWRlciA9ICQoZXZlbnQudGFyZ2V0KTsKICAg ICAgICAgaWYgKGhhc0NsaWNrZWRDaGlsZE9mQ29sdW1uSGVhZGVyKGV2ZW50 KSkgeworICAgICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuaGFzQ2xhc3Mo J3NsaWNrLXJlc2l6YWJsZS1oYW5kbGUnKSkgeworICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgIH0KICAgICAgICAgICAkY29sdW1uSGVhZGVyID0g JChldmVudC50YXJnZXQpLnBhcmVudHMoJy5zbGljay1oZWFkZXItY29sdW1u Jyk7CiAgICAgICAgIH0KICAgICAgICAgJGNvbHVtbkhlYWRlci50b2dnbGVD bGFzcygnc2VsZWN0ZWQnKTsKIAotICAgICAgICB1cGRhdGVSYW5nZXMoZ3Jp ZCwgY29sdW1uRGVmaW5pdGlvbi5pZCk7CisgICAgICAgIGlmICgkY29sdW1u SGVhZGVyLmhhc0NsYXNzKCdzZWxlY3RlZCcpKSB7CisgICAgICAgICAgb25C ZWZvcmVDb2x1bW5TZWxlY3RBbGwubm90aWZ5KGFyZ3MsIGV2ZW50KTsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICghKGV2ZW50LmlzUHJvcGFnYXRpb25T dG9wcGVkKCkgfHwgZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3Bw ZWQoKSkpIHsKKyAgICAgICAgICB1cGRhdGVSYW5nZXMoZ3JpZCwgY29sdW1u RGVmaW5pdGlvbi5pZCk7CisgICAgICAgIH0KICAgICAgIH0KICAgICB9Owog CkBAIC0xMDcsNiArMTIxLDggQEAgZGVmaW5lKFsKICAgICAkLmV4dGVuZCh0 aGlzLCB7CiAgICAgICAnaW5pdCc6IGluaXQsCiAgICAgICAnZ2V0Q29sdW1u RGVmaW5pdGlvbnMnOiBnZXRDb2x1bW5EZWZpbml0aW9ucywKKyAgICAgICdv bkJlZm9yZUNvbHVtblNlbGVjdEFsbCc6IG9uQmVmb3JlQ29sdW1uU2VsZWN0 QWxsLAorICAgICAgJ29uQ29sdW1uU2VsZWN0QWxsJzogb25Db2x1bW5TZWxl Y3RBbGwsCiAgICAgfSk7CiAgIH07CiAgIHJldHVybiBDb2x1bW5TZWxlY3Rv cjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rp b24vY29weV9kYXRhLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVj dGlvbi9jb3B5X2RhdGEuanMKaW5kZXggYzIyNjMyMy4uMzUyNTk2NiAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jb3B5 X2RhdGEuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlv bi9jb3B5X2RhdGEuanMKQEAgLTEyLDE5ICsxMiwxOSBAQCBmdW5jdGlvbiAo JCwgXywgY2xpcGJvYXJkLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwgcmFuZ2VC b3VuZGFyeU5hdmlnYXRvcikgewogICAgIHZhciBncmlkID0gc2VsZi5zbGlj a2dyaWQ7CiAgICAgdmFyIGNvbHVtbkRlZmluaXRpb25zID0gZ3JpZC5nZXRD b2x1bW5zKCk7CiAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gZ3JpZC5nZXRT ZWxlY3Rpb25Nb2RlbCgpLmdldFNlbGVjdGVkUmFuZ2VzKCk7Ci0gICAgdmFy IGRhdGEgPSBncmlkLmdldERhdGEoKTsKKyAgICB2YXIgZGF0YVZpZXcgPSBn cmlkLmdldERhdGEoKTsKICAgICB2YXIgcm93cyA9IGdyaWQuZ2V0U2VsZWN0 ZWRSb3dzKCk7CiAKICAgICBpZiAoUmFuZ2VTZWxlY3Rpb25IZWxwZXIuYXJl QWxsUmFuZ2VzQ29tcGxldGVSb3dzKGdyaWQsIHNlbGVjdGVkUmFuZ2VzKSkg ewogICAgICAgc2VsZi5jb3BpZWRfcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9u IChyb3dJbmRleCkgewotICAgICAgICByZXR1cm4gZGF0YVtyb3dJbmRleF07 CisgICAgICAgIHJldHVybiBncmlkLmdldERhdGFJdGVtKHJvd0luZGV4KTsK ICAgICAgIH0pOwogICAgICAgc2V0UGFzdGVSb3dCdXR0b25FbmFibGVtZW50 KHNlbGYuY2FuX2VkaXQsIHRydWUpOwogICAgIH0gZWxzZSB7CiAgICAgICBz ZWxmLmNvcGllZF9yb3dzID0gW107CiAgICAgICBzZXRQYXN0ZVJvd0J1dHRv bkVuYWJsZW1lbnQoc2VsZi5jYW5fZWRpdCwgZmFsc2UpOwogICAgIH0KLSAg ICB2YXIgY3N2VGV4dCA9IHJhbmdlQm91bmRhcnlOYXZpZ2F0b3IucmFuZ2Vz VG9Dc3YoZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHNlbGVjdGVkUmFuZ2Vz KTsKKyAgICB2YXIgY3N2VGV4dCA9IHJhbmdlQm91bmRhcnlOYXZpZ2F0b3Iu cmFuZ2VzVG9Dc3YoZGF0YVZpZXcuZ2V0SXRlbXMoKSwgY29sdW1uRGVmaW5p dGlvbnMsIHNlbGVjdGVkUmFuZ2VzKTsKICAgICBpZiAoY3N2VGV4dCkgewog ICAgICAgY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQoY3N2VGV4dCk7 CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Nl bGVjdGlvbi9ncmlkX3NlbGVjdG9yLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NlbGVjdGlvbi9ncmlkX3NlbGVjdG9yLmpzCmluZGV4IDI0ZmQ5ZDYu LmRkYmJlMjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9z ZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvci5qcworKysgYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc2VsZWN0aW9uL2dyaWRfc2VsZWN0b3IuanMKQEAgLTYsMjEg KzYsMzEgQEAgZGVmaW5lKFsnanF1ZXJ5JywKICAgJ3NvdXJjZXMvdXJsX2Zv cicsCiBdLCBmdW5jdGlvbiAoJCwgZ2V0dGV4dCwgQ29sdW1uU2VsZWN0b3Is IFJvd1NlbGVjdG9yLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwgdXJsX2Zvcikg ewogICB2YXIgR3JpZFNlbGVjdG9yID0gZnVuY3Rpb24gKGNvbHVtbkRlZmlu aXRpb25zKSB7Ci0gICAgdmFyIHJvd1NlbGVjdG9yID0gbmV3IFJvd1NlbGVj dG9yKGNvbHVtbkRlZmluaXRpb25zKTsKLSAgICB2YXIgY29sdW1uU2VsZWN0 b3IgPSBuZXcgQ29sdW1uU2VsZWN0b3IoY29sdW1uRGVmaW5pdGlvbnMpOwor ICAgIHZhciBTbGljayA9IHdpbmRvdy5TbGljaywKKyAgICAgIHJvd1NlbGVj dG9yID0gbmV3IFJvd1NlbGVjdG9yKGNvbHVtbkRlZmluaXRpb25zKSwKKyAg ICAgIGNvbHVtblNlbGVjdG9yID0gbmV3IENvbHVtblNlbGVjdG9yKGNvbHVt bkRlZmluaXRpb25zKSwKKyAgICAgIG9uQmVmb3JlR3JpZFNlbGVjdEFsbCA9 IG5ldyBTbGljay5FdmVudCgpLAorICAgICAgb25HcmlkU2VsZWN0QWxsID0g bmV3IFNsaWNrLkV2ZW50KCksCisgICAgICBvbkJlZm9yZUdyaWRDb2x1bW5T ZWxlY3RBbGwgPSBjb2x1bW5TZWxlY3Rvci5vbkJlZm9yZUNvbHVtblNlbGVj dEFsbCwKKyAgICAgIG9uR3JpZENvbHVtblNlbGVjdEFsbCA9IGNvbHVtblNl bGVjdG9yLm9uQ29sdW1uU2VsZWN0QWxsOwogCiAgICAgdmFyIGluaXQgPSBm dW5jdGlvbiAoZ3JpZCkgewogICAgICAgdGhpcy5ncmlkID0gZ3JpZDsKICAg ICAgIGdyaWQub25IZWFkZXJDbGljay5zdWJzY3JpYmUoZnVuY3Rpb24gKGV2 ZW50LCBldmVudEFyZ3VtZW50cykgewotICAgICAgICBpZiAoZXZlbnRBcmd1 bWVudHMuY29sdW1uLnNlbGVjdEFsbE9uQ2xpY2spIHsKLSAgICAgICAgICB0 b2dnbGVTZWxlY3RBbGwoZ3JpZCk7CisgICAgICAgIGlmIChldmVudEFyZ3Vt ZW50cy5jb2x1bW4uc2VsZWN0QWxsT25DbGljayAmJiAhJChldmVudC50YXJn ZXQpLmhhc0NsYXNzKCdzbGljay1yZXNpemFibGUtaGFuZGxlJykpIHsKKyAg ICAgICAgICB0b2dnbGVTZWxlY3RBbGwoZ3JpZCwgZXZlbnQsIGV2ZW50QXJn dW1lbnRzKTsKICAgICAgICAgfQogICAgICAgfSk7CiAKICAgICAgIGdyaWQu Z2V0U2VsZWN0aW9uTW9kZWwoKS5vblNlbGVjdGVkUmFuZ2VzQ2hhbmdlZAot ICAgICAgICAgIC5zdWJzY3JpYmUoaGFuZGxlU2VsZWN0ZWRSYW5nZXNDaGFu Z2VkLmJpbmQobnVsbCwgZ3JpZCkpOworICAgICAgICAuc3Vic2NyaWJlKGhh bmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZC5iaW5kKG51bGwsIGdyaWQpKTsK KwogICAgICAgZ3JpZC5yZWdpc3RlclBsdWdpbihyb3dTZWxlY3Rvcik7CiAg ICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKGNvbHVtblNlbGVjdG9yKTsKKwor ICAgICAgb25HcmlkU2VsZWN0QWxsLnN1YnNjcmliZShmdW5jdGlvbihlLCBh cmdzKSB7CisgICAgICAgIFJhbmdlU2VsZWN0aW9uSGVscGVyLnNlbGVjdEFs bChhcmdzLmdyaWQpOworICAgICAgfSk7CiAgICAgfTsKIAogICAgIHZhciBn ZXRDb2x1bW5EZWZpbml0aW9ucyA9IGZ1bmN0aW9uIChjb2x1bW5EZWZpbml0 aW9ucykgewpAQCAtNDUsMTEgKzU1LDE0IEBAIGRlZmluZShbJ2pxdWVyeScs CiAgICAgICB9CiAgICAgfQogCi0gICAgZnVuY3Rpb24gdG9nZ2xlU2VsZWN0 QWxsKGdyaWQpIHsKKyAgICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoZ3Jp ZCwgZXZlbnQsIGV2ZW50QXJndW1lbnRzKSB7CiAgICAgICBpZiAoUmFuZ2VT ZWxlY3Rpb25IZWxwZXIuaXNFbnRpcmVHcmlkU2VsZWN0ZWQoZ3JpZCkpIHsK ICAgICAgICAgc2VsZWN0Tm9uZShncmlkKTsKICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgIFJhbmdlU2VsZWN0aW9uSGVscGVyLnNlbGVjdEFsbChncmlkKTsK KyAgICAgICAgb25CZWZvcmVHcmlkU2VsZWN0QWxsLm5vdGlmeShldmVudEFy Z3VtZW50cywgZXZlbnQpOworICAgICAgICBpZiAoIShldmVudC5pc1Byb3Bh Z2F0aW9uU3RvcHBlZCgpIHx8IGV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRp b25TdG9wcGVkKCkpKSB7CisgICAgICAgICAgUmFuZ2VTZWxlY3Rpb25IZWxw ZXIuc2VsZWN0QWxsKGdyaWQpOworICAgICAgICB9CiAgICAgICB9CiAgICAg fQogCkBAIC02MSw2ICs3NCwxMCBAQCBkZWZpbmUoWydqcXVlcnknLAogICAg ICQuZXh0ZW5kKHRoaXMsIHsKICAgICAgICdpbml0JzogaW5pdCwKICAgICAg ICdnZXRDb2x1bW5EZWZpbml0aW9ucyc6IGdldENvbHVtbkRlZmluaXRpb25z LAorICAgICAgJ29uQmVmb3JlR3JpZFNlbGVjdEFsbCc6IG9uQmVmb3JlR3Jp ZFNlbGVjdEFsbCwKKyAgICAgICdvbkdyaWRTZWxlY3RBbGwnOiBvbkdyaWRT ZWxlY3RBbGwsCisgICAgICAnb25CZWZvcmVHcmlkQ29sdW1uU2VsZWN0QWxs Jzogb25CZWZvcmVHcmlkQ29sdW1uU2VsZWN0QWxsLAorICAgICAgJ29uR3Jp ZENvbHVtblNlbGVjdEFsbCc6IG9uR3JpZENvbHVtblNlbGVjdEFsbCwKICAg ICB9KTsKICAgfTsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3IuanMgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3JhbmdlX2JvdW5kYXJ5 X25hdmlnYXRvci5qcwppbmRleCA4MDNmNzVhLi4yNzRiNjIxIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3JhbmdlX2Jv dW5kYXJ5X25hdmlnYXRvci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvc2VsZWN0aW9uL3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRvci5qcwpAQCAt NTgsNiArNTgsNyBAQCBmdW5jdGlvbiAoUmFuZ2VTZWxlY3Rpb25IZWxwZXIp IHsKICAgICB9LAogCiAgICAgcmFuZ2VzVG9Dc3Y6IGZ1bmN0aW9uIChkYXRh LCBjb2x1bW5EZWZpbml0aW9ucywgc2VsZWN0ZWRSYW5nZXMpIHsKKwogICAg ICAgdmFyIHJvd1JhbmdlQm91bmRzID0gc2VsZWN0ZWRSYW5nZXMubWFwKGZ1 bmN0aW9uIChyYW5nZSkgewogICAgICAgICByZXR1cm4gW3JhbmdlLmZyb21S b3csIHJhbmdlLnRvUm93XTsKICAgICAgIH0pOwpAQCAtNzIsNiArNzMsNyBA QCBmdW5jdGlvbiAoUmFuZ2VTZWxlY3Rpb25IZWxwZXIpIHsKICAgICAgIHZh ciBjc3ZSb3dzID0gdGhpcy5tYXBPdmVyMkRBcnJheShyb3dSYW5nZUJvdW5k cywgY29sUmFuZ2VCb3VuZHMsIHRoaXMuY3N2Q2VsbC5iaW5kKHRoaXMsIGRh dGEsIGNvbHVtbkRlZmluaXRpb25zKSwgZnVuY3Rpb24gKHJvd0RhdGEpIHsK ICAgICAgICAgcmV0dXJuIHJvd0RhdGEuam9pbignLCcpOwogICAgICAgfSk7 CisKICAgICAgIHJldHVybiBjc3ZSb3dzLmpvaW4oJ1xuJyk7CiAgICAgfSwK IApAQCAtMTAxLDcgKzEwMyw3IEBAIGZ1bmN0aW9uIChSYW5nZVNlbGVjdGlv bkhlbHBlcikgewogICAgIH0sCiAKICAgICBjc3ZDZWxsOiBmdW5jdGlvbiAo ZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHJvd0lkLCBjb2xJZCkgewotICAg ICAgdmFyIHZhbCA9IGRhdGFbcm93SWRdW2NvbHVtbkRlZmluaXRpb25zW2Nv bElkXS5wb3NdOworICAgICAgdmFyIHZhbCA9IGRhdGFbcm93SWRdW2NvbHVt bkRlZmluaXRpb25zW2NvbElkXS5maWVsZF07CiAKICAgICAgIGlmICh2YWwg JiYgXy5pc09iamVjdCh2YWwpKSB7CiAgICAgICAgIHZhbCA9ICdcJycgKyBK U09OLnN0cmluZ2lmeSh2YWwpICsgJ1wnJzsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vcm93X3NlbGVjdG9yLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yb3dfc2VsZWN0b3Iu anMKaW5kZXggMjM2ZWQ2Mi4uNTlkMmZhMiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yb3dfc2VsZWN0b3IuanMKKysr IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yb3dfc2VsZWN0 b3IuanMKQEAgLTgyLDcgKzgyLDggQEAgZGVmaW5lKFsKICAgICAgICAgZm9y bWF0dGVyOiBmdW5jdGlvbiAocm93SW5kZXgpIHsKICAgICAgICAgICByZXR1 cm4gJzxzcGFuICcgKwogICAgICAgICAgICAgJ2RhdGEtcm93PSInICsgcm93 SW5kZXggKyAnIiAnICsKLSAgICAgICAgICAgICdkYXRhLWNlbGwtdHlwZT0i cm93LWhlYWRlci1zZWxlY3RvciIvPic7CisgICAgICAgICAgICAnZGF0YS1j ZWxsLXR5cGU9InJvdy1oZWFkZXItc2VsZWN0b3IiPicgKworICAgICAgICAg ICAgKHJvd0luZGV4KzEpICsgJzwvc3Bhbj4nOwogICAgICAgICB9LAogICAg ICAgICB3aWR0aDogMzAsCiAgICAgICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vc2V0X3N0YWdlZF9yb3dzLmpz IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9zZXRfc3RhZ2Vk X3Jvd3MuanMKaW5kZXggNDY5NzdlMy4uZTdhNTI5YyAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9zZXRfc3RhZ2VkX3Jv d3MuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9z ZXRfc3RhZ2VkX3Jvd3MuanMKQEAgLTIyLDUzICsyMiw0NCBAQCBkZWZpbmUo CiAgICAgICAkKHNlbGVjdG9yKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsK ICAgICB9CiAKLSAgICBmdW5jdGlvbiBnZXRSb3dQcmltYXJ5S2V5VmFsdWVz VG9TdGFnZShzZWxlY3RlZFJvd3MsIHByaW1hcnlLZXlDb2x1bW5JbmRpY2Vz LCBncmlkRGF0YSkgeworICAgIGZ1bmN0aW9uIGdldFJvd1ByaW1hcnlLZXlW YWx1ZXNUb1N0YWdlKHNlbGVjdGVkUm93cywgcHJpbWFyeUtleXMsIGRhdGFW aWV3LCBjbGllbnRfcHJpbWFyeV9rZXkpIHsKICAgICAgIHJldHVybiBfLnJl ZHVjZShzZWxlY3RlZFJvd3MsIGZ1bmN0aW9uIChwcmltYXJ5S2V5VmFsdWVz VG9TdGFnZSwgZGF0YUdyaWRSb3dJbmRleCkgewotICAgICAgICB2YXIgZ3Jp ZFJvdyA9IGdyaWREYXRhW2RhdGFHcmlkUm93SW5kZXhdOwotCi0gICAgICAg IGlmIChpc1Jvd01pc3NpbmdQcmltYXJ5S2V5cyhncmlkUm93LCBwcmltYXJ5 S2V5Q29sdW1uSW5kaWNlcykpIHsKKyAgICAgICAgdmFyIGdyaWRSb3cgPSBk YXRhVmlldy5nZXRJdGVtKGRhdGFHcmlkUm93SW5kZXgpOworICAgICAgICBp ZiAoaXNSb3dNaXNzaW5nUHJpbWFyeUtleXMoZ3JpZFJvdywgcHJpbWFyeUtl eXMpKSB7CiAgICAgICAgICAgcmV0dXJuIHByaW1hcnlLZXlWYWx1ZXNUb1N0 YWdlOwogICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBQSyA9IGdyaWRS b3cuX190ZW1wX1BLOwotICAgICAgICBwcmltYXJ5S2V5VmFsdWVzVG9TdGFn ZVt0ZW1wUEtdID0gZ2V0U2luZ2xlUm93UHJpbWFyeUtleVZhbHVlVG9TdGFn ZShwcmltYXJ5S2V5Q29sdW1uSW5kaWNlcywgZ3JpZFJvdyk7Ci0KKyAgICAg ICAgdmFyIHRlbXBQSyA9IGdyaWRSb3dbY2xpZW50X3ByaW1hcnlfa2V5XTsK KyAgICAgICAgcHJpbWFyeUtleVZhbHVlc1RvU3RhZ2VbdGVtcFBLXSA9IGdl dFNpbmdsZVJvd1ByaW1hcnlLZXlWYWx1ZVRvU3RhZ2UocHJpbWFyeUtleXMs IGdyaWRSb3cpOwogICAgICAgICByZXR1cm4gcHJpbWFyeUtleVZhbHVlc1Rv U3RhZ2U7CiAgICAgICB9LCB7fSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24g aXNSb3dNaXNzaW5nUHJpbWFyeUtleXMoZ3JpZFJvdywgcHJpbWFyeUtleUNv bHVtbkluZGljZXMpIHsKKyAgICBmdW5jdGlvbiBpc1Jvd01pc3NpbmdQcmlt YXJ5S2V5cyhncmlkUm93LCBwcmltYXJ5S2V5cykgewogICAgICAgaWYgKF8u aXNVbmRlZmluZWQoZ3JpZFJvdykpIHsKICAgICAgICAgcmV0dXJuIHRydWU7 CiAgICAgICB9CiAKICAgICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZCgKLSAg ICAgICAgXy5maW5kKHByaW1hcnlLZXlDb2x1bW5JbmRpY2VzLCBmdW5jdGlv biAocGtJbmRleCkgewotICAgICAgICAgIHJldHVybiBfLmlzVW5kZWZpbmVk KGdyaWRSb3dbcGtJbmRleF0pOworICAgICAgICBfLmZpbmQocHJpbWFyeUtl eXMgLCBmdW5jdGlvbiAocGspIHsKKyAgICAgICAgICByZXR1cm4gXy5pc1Vu ZGVmaW5lZChncmlkUm93W3BrXSk7CiAgICAgICAgIH0pCiAgICAgICApOwog ICAgIH0KIAotICAgIGZ1bmN0aW9uIGdldFNpbmdsZVJvd1ByaW1hcnlLZXlW YWx1ZVRvU3RhZ2UocHJpbWFyeUtleUNvbHVtbkluZGljZXMsIGdyaWRSb3cp IHsKKyAgICBmdW5jdGlvbiBnZXRTaW5nbGVSb3dQcmltYXJ5S2V5VmFsdWVU b1N0YWdlKHByaW1hcnlLZXlzLCBncmlkUm93KSB7CiAgICAgICB2YXIgcm93 VG9TdGFnZSA9IHt9OwotICAgICAgaWYgKHByaW1hcnlLZXlDb2x1bW5JbmRp Y2VzLmxlbmd0aCkgewotICAgICAgICBfLmVhY2goXy5rZXlzKGdyaWRSb3cp LCBmdW5jdGlvbiAoY29sdW1uUG9zKSB7Ci0gICAgICAgICAgaWYgKF8uY29u dGFpbnMocHJpbWFyeUtleUNvbHVtbkluZGljZXMsIE51bWJlcihjb2x1bW5Q b3MpKSkKLSAgICAgICAgICAgIHJvd1RvU3RhZ2VbY29sdW1uUG9zXSA9IGdy aWRSb3dbY29sdW1uUG9zXTsKKyAgICAgIGlmIChwcmltYXJ5S2V5cyAmJiBw cmltYXJ5S2V5cy5sZW5ndGgpIHsKKyAgICAgICAgXy5lYWNoKF8ua2V5cyhn cmlkUm93KSwgZnVuY3Rpb24gKGNvbHVtbk5hbWVzKSB7CisgICAgICAgICAg aWYgKF8uY29udGFpbnMocHJpbWFyeUtleXMsIGNvbHVtbk5hbWVzKSkKKyAg ICAgICAgICAgIHJvd1RvU3RhZ2VbY29sdW1uTmFtZXNdID0gZ3JpZFJvd1tj b2x1bW5OYW1lc107CiAgICAgICAgIH0pOwogICAgICAgfQogICAgICAgcmV0 dXJuIHJvd1RvU3RhZ2U7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZ2V0UHJp bWFyeUtleXNGb3JTZWxlY3RlZFJvd3Moc2VsZiwgc2VsZWN0ZWRSb3dzKSB7 Ci0gICAgICB2YXIgcHJpbWFyeUtleUNvbHVtbkluZGljZXMgPSBfLm1hcChf LmtleXMoc2VsZi5rZXlzKSwgZnVuY3Rpb24gKGNvbHVtbk5hbWUpIHsKLSAg ICAgICAgdmFyIGNvbHVtbkluZm8gPSBfLmZpbmRXaGVyZShzZWxmLmNvbHVt bnMsIHtuYW1lOiBjb2x1bW5OYW1lfSk7Ci0gICAgICAgIHJldHVybiBjb2x1 bW5JbmZvWydwb3MnXTsKLSAgICAgIH0pOwotCi0gICAgICB2YXIgZ3JpZERh dGEgPSBzZWxmLmdyaWQuZ2V0RGF0YSgpOwotICAgICAgdmFyIHN0YWdlZFJv d3MgPSBnZXRSb3dQcmltYXJ5S2V5VmFsdWVzVG9TdGFnZShzZWxlY3RlZFJv d3MsIHByaW1hcnlLZXlDb2x1bW5JbmRpY2VzLCBncmlkRGF0YSk7Ci0KKyAg ICAgIHZhciBkYXRhVmlldyA9IHNlbGYuZ3JpZC5nZXREYXRhKCk7CisgICAg ICB2YXIgc3RhZ2VkUm93cyA9IGdldFJvd1ByaW1hcnlLZXlWYWx1ZXNUb1N0 YWdlKHNlbGVjdGVkUm93cywgXy5rZXlzKHNlbGYua2V5cyksIGRhdGFWaWV3 LCBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSk7CiAgICAgICByZXR1cm4gc3Rh Z2VkUm93czsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zbGlja2dyaWQvc2xpY2sucGdhZG1pbi5lZGl0b3JzLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NsaWNrZ3JpZC9zbGljay5wZ2FkbWlu LmVkaXRvcnMuanMKaW5kZXggZjJkYWJlMC4uMTViNWZlOSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NsaWNrZ3JpZC9zbGljay5wZ2Fk bWluLmVkaXRvcnMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Ns aWNrZ3JpZC9zbGljay5wZ2FkbWluLmVkaXRvcnMuanMKQEAgLTc2LDE4ICs3 NiwxOCBAQAogICAgICAgICAgIGxhc3RfdmFsdWUgPSAoY29sdW1uX3R5cGUg PT09ICdudW1iZXInKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAoXy5p c0VtcHR5KGxhc3RfdmFsdWUpIHx8IGxhc3RfdmFsdWUpIDogbGFzdF92YWx1 ZTsKIAotICAgICAgaXRlbVthcmdzLmNvbHVtbi5wb3NdID0gc3RhdGU7Cisg ICAgICBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXSA9IHN0YXRlOwogICAgICAg aWYgKGxhc3RfdmFsdWUgJiYgXy5pc051bGwoc3RhdGUpICYmCiAgICAgICAg ICAgKF8uaXNVbmRlZmluZWQoZ3JpZC5jb3BpZWRfcm93c1tyb3ddKSB8fAog ICAgICAgICAgIF8uaXNVbmRlZmluZWQoZ3JpZC5jb3BpZWRfcm93c1tyb3dd W2NlbGxdKSkKICAgICAgICkgewotICAgICAgICBpdGVtW2FyZ3MuY29sdW1u LnBvc10gPSB1bmRlZmluZWQ7CisgICAgICAgIGl0ZW1bYXJncy5jb2x1bW4u ZmllbGRdID0gdW5kZWZpbmVkOwogICAgICAgICBpZiAoZ3JpZC5jb3BpZWRf cm93c1tyb3ddID09IHVuZGVmaW5lZCkgZ3JpZC5jb3BpZWRfcm93c1tyb3dd ID0gW107CiAgICAgICAgIGdyaWQuY29waWVkX3Jvd3Nbcm93XVtjZWxsXSA9 IDE7CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgaXRlbVth cmdzLmNvbHVtbi5wb3NdID0gc3RhdGU7CisgICAgICBpdGVtW2FyZ3MuY29s dW1uLmZpZWxkXSA9IHN0YXRlOwogICAgIH0KICAgfQogCkBAIC0xODksMTQg KzE4OSwxNCBAQAogICAgIHRoaXMubG9hZFZhbHVlID0gZnVuY3Rpb24gKGl0 ZW0pIHsKICAgICAgIHZhciBjb2wgPSBhcmdzLmNvbHVtbjsKIAotICAgICAg aWYgKF8uaXNVbmRlZmluZWQoaXRlbVthcmdzLmNvbHVtbi5wb3NdKSAmJiBj b2wuaGFzX2RlZmF1bHRfdmFsKSB7CisgICAgICBpZiAoXy5pc1VuZGVmaW5l ZChpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXSkgJiYgY29sLmhhc19kZWZhdWx0 X3ZhbCkgewogICAgICAgICAkaW5wdXQudmFsKGRlZmF1bHRWYWx1ZSA9ICIi KTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGl0ZW1bYXJncy5jb2x1bW4u cG9zXSA9PT0gIiIpIHsKKyAgICAgIGVsc2UgaWYgKGl0ZW1bYXJncy5jb2x1 bW4uZmllbGRdID09PSAiIikgewogICAgICAgICAkaW5wdXQudmFsKGRlZmF1 bHRWYWx1ZSA9ICInJyIpOwogICAgICAgfQogICAgICAgZWxzZSB7Ci0gICAg ICAgICRpbnB1dC52YWwoZGVmYXVsdFZhbHVlID0gaXRlbVthcmdzLmNvbHVt bi5wb3NdKTsKKyAgICAgICAgJGlucHV0LnZhbChkZWZhdWx0VmFsdWUgPSBp dGVtW2FyZ3MuY29sdW1uLmZpZWxkXSk7CiAgICAgICAgICRpbnB1dC5zZWxl Y3QoKTsKICAgICAgIH0KICAgICB9OwpAQCAtMzIzLDcgKzMyMyw3IEBACiAg ICAgfTsKIAogICAgIHRoaXMubG9hZFZhbHVlID0gZnVuY3Rpb24gKGl0ZW0p IHsKLSAgICAgIHZhciBkYXRhID0gZGVmYXVsdFZhbHVlID0gaXRlbVthcmdz LmNvbHVtbi5wb3NdOworICAgICAgdmFyIGRhdGEgPSBkZWZhdWx0VmFsdWUg PSBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAgICAgIGlmIChkYXRhICYm IHR5cGVvZiBkYXRhID09PSAib2JqZWN0IiAmJiAhQXJyYXkuaXNBcnJheShk YXRhKSkgewogICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7 CiAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHsKQEAg LTQ0Myw3ICs0NDMsNyBAQAogICAgIH07CiAKICAgICB0aGlzLmxvYWRWYWx1 ZSA9IGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgICAkaW5wdXQudmFsKGRlZmF1 bHRWYWx1ZSA9IGl0ZW1bYXJncy5jb2x1bW4ucG9zXSk7CisgICAgICAkaW5w dXQudmFsKGRlZmF1bHRWYWx1ZSA9IGl0ZW1bYXJncy5jb2x1bW4uZmllbGRd KTsKICAgICAgICRpbnB1dC5zZWxlY3QoKTsKICAgICB9OwogCkBAIC00NTIs NyArNDUyLDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5hcHBseVZhbHVlID0g ZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7Ci0gICAgICBpdGVtW2FyZ3MuY29s dW1uLnBvc10gPSBzdGF0ZTsKKyAgICAgIGl0ZW1bYXJncy5jb2x1bW4uZmll bGRdID0gc3RhdGU7CiAgICAgfTsKIAogICAgIHRoaXMuaXNWYWx1ZUNoYW5n ZWQgPSBmdW5jdGlvbiAoKSB7CkBAIC01MzEsMTMgKzUzMSwxMyBAQAogICAg IH07CiAKICAgICB0aGlzLmxvYWRWYWx1ZSA9IGZ1bmN0aW9uIChpdGVtKSB7 Ci0gICAgICBkZWZhdWx0VmFsdWUgPSBpdGVtW2FyZ3MuY29sdW1uLnBvc107 Ci0gICAgICBpZiAoXy5pc051bGwoZGVmYXVsdFZhbHVlKXx8IF8uaXNVbmRl ZmluZWQoZGVmYXVsdFZhbHVlKSkgeworICAgICAgZGVmYXVsdFZhbHVlID0g aXRlbVthcmdzLmNvbHVtbi5maWVsZF07CisgICAgICBpZiAoXy5pc051bGwo ZGVmYXVsdFZhbHVlKXx8Xy5pc1VuZGVmaW5lZChkZWZhdWx0VmFsdWUpKSB7 CiAgICAgICAgICRzZWxlY3QucHJvcCgnaW5kZXRlcm1pbmF0ZScsIHRydWUp OwogICAgICAgICAkc2VsZWN0LmRhdGEoJ2NoZWNrZWQnLCAyKTsKICAgICAg IH0KICAgICAgIGVsc2UgewotICAgICAgICBkZWZhdWx0VmFsdWUgPSAhIWl0 ZW1bYXJncy5jb2x1bW4ucG9zXTsKKyAgICAgICAgZGVmYXVsdFZhbHVlID0g ISFpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAgICAgICAgaWYgKGRlZmF1 bHRWYWx1ZSkgewogICAgICAgICAgICRzZWxlY3QucHJvcCgnY2hlY2tlZCcs IHRydWUpOwogICAgICAgICAgICRzZWxlY3QuZGF0YSgnY2hlY2tlZCcsIDAp OwpAQCAtNTU2LDcgKzU1Niw3IEBACiAgICAgfTsKIAogICAgIHRoaXMuYXBw bHlWYWx1ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSkgewotICAgICAgaXRl bVthcmdzLmNvbHVtbi5wb3NdID0gc3RhdGU7CisgICAgICBpdGVtW2FyZ3Mu Y29sdW1uLmZpZWxkXSA9IHN0YXRlOwogICAgIH07CiAKICAgICB0aGlzLmlz VmFsdWVDaGFuZ2VkID0gZnVuY3Rpb24gKCkgewpAQCAtNjQ4LDcgKzY0OCw3 IEBACiAgICAgfTsKIAogICAgIHRoaXMubG9hZFZhbHVlID0gZnVuY3Rpb24g KGl0ZW0pIHsKLSAgICAgIHZhciBkYXRhID0gZGVmYXVsdFZhbHVlID0gaXRl bVthcmdzLmNvbHVtbi5wb3NdOworICAgICAgdmFyIGRhdGEgPSBkZWZhdWx0 VmFsdWUgPSBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAgICAgIGlmICh0 eXBlb2YgZGF0YSA9PT0gIm9iamVjdCIgJiYgIUFycmF5LmlzQXJyYXkoZGF0 YSkpIHsKICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwog ICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CkBAIC02 NzEsNyArNjcxLDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5hcHBseVZhbHVl ID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7Ci0gICAgICBpdGVtW2FyZ3Mu Y29sdW1uLnBvc10gPSBzdGF0ZTsKKyAgICAgIGl0ZW1bYXJncy5jb2x1bW4u ZmllbGRdID0gc3RhdGU7CiAgICAgfTsKIAogICAgIHRoaXMuaXNWYWx1ZUNo YW5nZWQgPSBmdW5jdGlvbiAoKSB7CkBAIC03MjUsNyArNzI1LDcgQEAKICAg ICB9OwogCiAgICAgdGhpcy5sb2FkVmFsdWUgPSBmdW5jdGlvbiAoaXRlbSkg ewotICAgICAgdmFyIHZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5wb3NdOwor ICAgICAgdmFyIHZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5maWVsZF07CiAK ICAgICAgIC8vIENoZWNrIGlmIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVk CiAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFs dWUgPT09ICJ1bmRlZmluZWQiKSB7CkBAIC04NTgsNyArODU4LDcgQEAKICAg ICB9OwogCiAgICAgdGhpcy5sb2FkVmFsdWUgPSBmdW5jdGlvbiAoaXRlbSkg ewotICAgICAgZGVmYXVsdFZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5wb3Nd OworICAgICAgZGVmYXVsdFZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5maWVs ZF07CiAgICAgICAkaW5wdXQudmFsKGRlZmF1bHRWYWx1ZSk7CiAgICAgICAk aW5wdXRbMF0uZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlOwogICAgICAg JGlucHV0LnNlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdGVt cGxhdGVzL2Jhc2UuaHRtbCBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9iYXNl Lmh0bWwKaW5kZXggODI5YzE5NS4uNzYxNmVhYyAxMDA3NTUKLS0tIGEvd2Vi L3BnYWRtaW4vdGVtcGxhdGVzL2Jhc2UuaHRtbAorKysgYi93ZWIvcGdhZG1p bi90ZW1wbGF0ZXMvYmFzZS5odG1sCkBAIC0xNDYsNiArMTQ2LDEyIEBACiAg ICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAg ICAgICAgImV4cG9ydHMiOiAnU2xpY2suR3JpZCcKICAgICAgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgInNsaWNrZ3JpZC9zbGlj ay5kYXRhdmlldyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXBz IjogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGlja2dyaWQi CisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg ICAgICAgICAgImV4cG9ydHMiOiAnU2xpY2suRGF0YS5EYXRhVmlldycKKyAg ICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgImZs b3RyMiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IFsnYmVh biddLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogZnVuY3Rp b24oYmVhbikgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL19faW5pdF9fLnB5CmluZGV4IDgyOGNiOTkuLjcwOTMzMmMgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5w eQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18u cHkKQEAgLTI3LDcgKzI3LDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxzLnNxbGF1 dG9jb21wbGV0ZS5hdXRvY29tcGxldGUgaW1wb3J0IFNRTEF1dG9Db21wbGV0 ZQogZnJvbSBwZ2FkbWluLm1pc2MuZmlsZV9tYW5hZ2VyIGltcG9ydCBGaWxl bWFuYWdlcgogCiAKLWZyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RS SVZFUgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSLCBP Tl9ERU1BTkRfUkVDT1JEX0NPVU5UCiAKIE1PRFVMRV9OQU1FID0gJ3NxbGVk aXRvcicKIApAQCAtMjI5LDEzICsyMjksMzIgQEAgZGVmIHN0YXJ0X3ZpZXdf ZGF0YSh0cmFuc19pZCk6CiAKICAgICAjIENoZWNrIHRoZSB0cmFuc2FjdGlv biBhbmQgY29ubmVjdGlvbiBzdGF0dXMKICAgICBzdGF0dXMsIGVycm9yX21z ZywgY29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iaiA9IGNoZWNrX3RyYW5z YWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKKworICAgICMgZ2V0IHRoZSBkZWZh dWx0IGNvbm5lY3Rpb24gYXMgY3VycmVudCBjb25uZWN0aW9uIHdoaWNoIGlz IGF0dGFjaGVkIHRvCisgICAgIyB0cmFucyBpZCBob2xkcyB0aGUgY3Vyc29y IHdoaWNoIGhhcyBxdWVyeSByZXN1bHQgc28gd2UgY2Fubm90IHVzZSB0aGF0 CisgICAgIyBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgYW5vdGhlciBxdWVyeSBv dGhlcndpc2Ugd2UnbGwgbG9zZSBxdWVyeSByZXN1bHQuCisKKyAgICBtYW5h Z2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlv bl9tYW5hZ2VyKHRyYW5zX29iai5zaWQpCisgICAgZGVmYXVsdF9jb25uID0g bWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19vYmouZGlkKQorCisgICAg IyBDb25uZWN0IHRvIHRoZSBTZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KKyAg ICBpZiBub3QgZGVmYXVsdF9jb25uLmNvbm5lY3RlZCgpOgorICAgICAgICBz dGF0dXMsIG1zZyA9IGRlZmF1bHRfY29ubi5jb25uZWN0KCkKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT17J3N0YXR1cyc6IHN0 YXR1cywgJ3Jlc3VsdCc6IHUie30iLmZvcm1hdChtc2cpfQorICAgICAgICAg ICAgKQorCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIFwK ICAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNl c3Npb25fb2JqIGlzIG5vdCBOb25lOgogICAgICAgICB0cnk6CisgICAgICAg ICAgICAjIHNldCBmZXRjaGVkIHJvdyBjb3VudCB0byAwIGFzIHdlIGFyZSBl eGVjdXRpbmcgcXVlcnkgYWdhaW4uCisgICAgICAgICAgICB0cmFuc19vYmou dXBkYXRlX2ZldGNoZWRfcm93X2NudCgwKQorICAgICAgICAgICAgc2Vzc2lv bl9vYmpbJ2NvbW1hbmRfb2JqJ10gPSBwaWNrbGUuZHVtcHModHJhbnNfb2Jq LCAtMSkKIAogICAgICAgICAgICAgIyBGZXRjaCB0aGUgc3FsIGFuZCBwcmlt YXJ5X2tleXMgZnJvbSB0aGUgb2JqZWN0CiAgICAgICAgICAgICBzcWwgPSB0 cmFuc19vYmouZ2V0X3NxbCgpCi0gICAgICAgICAgICBwa19uYW1lcywgcHJp bWFyeV9rZXlzID0gdHJhbnNfb2JqLmdldF9wcmltYXJ5X2tleXMoKQorICAg ICAgICAgICAgcGtfbmFtZXMsIHByaW1hcnlfa2V5cyA9IHRyYW5zX29iai5n ZXRfcHJpbWFyeV9rZXlzKGRlZmF1bHRfY29ubikKIAogICAgICAgICAgICAg IyBGZXRjaCB0aGUgYXBwbGllZCBmaWx0ZXIuCiAgICAgICAgICAgICBmaWx0 ZXJfYXBwbGllZCA9IHRyYW5zX29iai5pc19maWx0ZXJfYXBwbGllZCgpCkBA IC0zMDMsNiArMzIyLDggQEAgZGVmIHN0YXJ0X3F1ZXJ5X3Rvb2wodHJhbnNf aWQpOgogICAgICMgVXNlIHBpY2tsZS5sb2FkcyBmdW5jdGlvbiB0byBnZXQg dGhlIGNvbW1hbmQgb2JqZWN0CiAgICAgc2Vzc2lvbl9vYmogPSBncmlkX2Rh dGFbc3RyKHRyYW5zX2lkKV0KICAgICB0cmFuc19vYmogPSBwaWNrbGUubG9h ZHMoc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10pCisgICAgIyBzZXQgZmV0 Y2hlZCByb3cgY291bnQgdG8gMCBhcyB3ZSBhcmUgZXhlY3V0aW5nIHF1ZXJ5 IGFnYWluLgorICAgIHRyYW5zX29iai51cGRhdGVfZmV0Y2hlZF9yb3dfY250 KDApCiAKICAgICBjYW5fZWRpdCA9IEZhbHNlCiAgICAgY2FuX2ZpbHRlciA9 IEZhbHNlCkBAIC00MjksNjUgKzQ1MCw2IEBAIGRlZiBwcmVmZXJlbmNlcyh0 cmFuc19pZCk6CiAgICAgICAgIHJldHVybiBzdWNjZXNzX3JldHVybigpCiAK IAotQGJsdWVwcmludC5yb3V0ZSgnL2NvbHVtbnMvPGludDp0cmFuc19pZD4n LCBtZXRob2RzPVsiR0VUIl0pCi1AbG9naW5fcmVxdWlyZWQKLWRlZiBnZXRf Y29sdW1ucyh0cmFuc19pZCk6Ci0gICAgIiIiCi0gICAgVGhpcyBtZXRob2Qg d2lsbCByZXR1cm5zIGxpc3Qgb2YgY29sdW1ucyBvZiBsYXN0IGFzeW5jIHF1 ZXJ5LgotCi0gICAgQXJnczoKLSAgICAgICAgdHJhbnNfaWQ6IHVuaXF1ZSB0 cmFuc2FjdGlvbiBpZAotICAgICIiIgotICAgIGNvbHVtbnMgPSBkaWN0KCkK LSAgICBjb2x1bW5zX2luZm8gPSBOb25lCi0gICAgcHJpbWFyeV9rZXlzID0g Tm9uZQotICAgIHJzZXQgPSBOb25lCi0gICAgc3RhdHVzLCBlcnJvcl9tc2cs IGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmogPSBjaGVja190cmFuc2Fj dGlvbl9zdGF0dXModHJhbnNfaWQpCi0gICAgaWYgc3RhdHVzIGFuZCBjb25u IGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKLQot ICAgICAgICB2ZXIgPSBjb25uLm1hbmFnZXIudmVyc2lvbgotICAgICAgICAj IEdldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhlIGNvbHVtbgotICAgICAg ICB0ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbi9zcWwvI3swfSMnLmZvcm1hdCh2 ZXIpCi0gICAgICAgIGNvbW1hbmRfb2JqID0gcGlja2xlLmxvYWRzKHNlc3Np b25fb2JqWydjb21tYW5kX29iaiddKQotICAgICAgICBpZiBoYXNhdHRyKGNv bW1hbmRfb2JqLCAnb2JqX2lkJyk6Ci0gICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5z cWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlk PWNvbW1hbmRfb2JqLm9ial9pZCkKLSAgICAgICAgICAgICMgcm93cyB3aXRo IGF0dHJpYnV0ZSBub3RfbnVsbAotICAgICAgICAgICAgc3RhdHVzLCByc2V0 ID0gY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgIyBDaGVj ayBQSyBjb2x1bW4gaW5mbyBpcyBhdmFpbGFibGUgb3Igbm90Ci0gICAgICAg IGlmICdwcmltYXJ5X2tleXMnIGluIHNlc3Npb25fb2JqOgotICAgICAgICAg ICAgcHJpbWFyeV9rZXlzID0gc2Vzc2lvbl9vYmpbJ3ByaW1hcnlfa2V5cydd Ci0KLSAgICAgICAgIyBGZXRjaCBjb2x1bW4gaW5mb3JtYXRpb24KLSAgICAg ICAgY29sdW1uc19pbmZvID0gY29ubi5nZXRfY29sdW1uX2luZm8oKQotICAg ICAgICBpZiBjb2x1bW5zX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAg ICBmb3Iga2V5LCBjb2wgaW4gZW51bWVyYXRlKGNvbHVtbnNfaW5mbyk6Ci0g ICAgICAgICAgICAgICAgY29sX3R5cGUgPSBkaWN0KCkKLSAgICAgICAgICAg ICAgICBjb2xfdHlwZVsndHlwZV9jb2RlJ10gPSBjb2xbJ3R5cGVfY29kZSdd Ci0gICAgICAgICAgICAgICAgY29sX3R5cGVbJ3R5cGVfbmFtZSddID0gTm9u ZQotICAgICAgICAgICAgICAgIGlmIHJzZXQ6Ci0gICAgICAgICAgICAgICAg ICAgIGNvbF90eXBlWydub3RfbnVsbCddID0gY29sWydub3RfbnVsbCddID0g XAotICAgICAgICAgICAgICAgICAgICAgICAgcnNldFsncm93cyddW2tleV1b J25vdF9udWxsJ10KLQotICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZVsn aGFzX2RlZmF1bHRfdmFsJ10gPSBjb2xbJ2hhc19kZWZhdWx0X3ZhbCddID0g XAotICAgICAgICAgICAgICAgICAgICAgICAgcnNldFsncm93cyddW2tleV1b J2hhc19kZWZhdWx0X3ZhbCddCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5z W2NvbFsnbmFtZSddXSA9IGNvbF90eXBlCi0KLSAgICAgICAgIyBBcyB3ZSBj aGFuZ2VkIHRoZSB0cmFuc2FjdGlvbiBvYmplY3Qgd2UgbmVlZCB0bwotICAg ICAgICAjIHJlc3RvcmUgaXQgYW5kIHVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJp YWJsZS4KLSAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddID0g Y29sdW1ucwotICAgICAgICB1cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5zYWN0 aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKLQotICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IFRydWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sdW1ucyc6IGNvbHVt bnNfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcmltYXJ5X2tleXMnOiBwcmltYXJ5X2tleXN9KQotCi0KIEBibHVlcHJp bnQucm91dGUoJy9wb2xsLzxpbnQ6dHJhbnNfaWQ+JywgbWV0aG9kcz1bIkdF VCJdKQogQGxvZ2luX3JlcXVpcmVkCiBkZWYgcG9sbCh0cmFuc19pZCk6CkBA IC00OTksMTIgKzQ2MSwyMSBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAgICAg IiIiCiAgICAgcmVzdWx0ID0gTm9uZQogICAgIHJvd3NfYWZmZWN0ZWQgPSAw CisgICAgcm93c19mZXRjaGVkX2Zyb20gPSAwCisgICAgcm93c19mZXRjaGVk X3RvID0gMAorICAgIGhhc19tb3JlX3Jvd3MgPSBGYWxzZQogICAgIGFkZGl0 aW9uYWxfcmVzdWx0ID0gW10KKyAgICBjb2x1bW5zID0gZGljdCgpCisgICAg Y29sdW1uc19pbmZvID0gTm9uZQorICAgIHByaW1hcnlfa2V5cyA9IE5vbmUK KyAgICB0eXBlcyA9IHt9CisgICAgY2xpZW50X3ByaW1hcnlfa2V5ID0gTm9u ZQorICAgIHJzZXQgPSBOb25lCiAKICAgICAjIENoZWNrIHRoZSB0cmFuc2Fj dGlvbiBhbmQgY29ubmVjdGlvbiBzdGF0dXMKICAgICBzdGF0dXMsIGVycm9y X21zZywgY29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iaiA9IGNoZWNrX3Ry YW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKICAgICBpZiBzdGF0dXMgYW5k IGNvbm4gaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25l OgotICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4ucG9sbChmb3JtYXR0 ZWRfZXhjZXB0aW9uX21zZz1UcnVlKQorICAgICAgICBzdGF0dXMsIHJlc3Vs dCA9IGNvbm4ucG9sbChmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1UcnVlLCBu b19yZXN1bHQ9VHJ1ZSkKICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IocmVzdWx0KQog ICAgICAgICBlbGlmIHN0YXR1cyA9PSBBU1lOQ19PSzoKQEAgLTUxOSw2ICs0 OTAsODAgQEAgZGVmIHBvbGwodHJhbnNfaWQpOgogICAgICAgICAgICAgICAg IGlmICh0cmFuc19zdGF0dXMgPT0gVFhfU1RBVFVTX0lORVJST1IgYW5kCiAg ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc19vYmouYXV0b19yb2xsYmFj ayk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCJS T0xMQkFDSzsiKQorCisgICAgICAgICAgICBzdCwgcmVzdWx0ID0gY29ubi5h c3luY19mZXRjaG1hbnlfMmRhcnJheShPTl9ERU1BTkRfUkVDT1JEX0NPVU5U KQorICAgICAgICAgICAgaWYgc3Q6CisgICAgICAgICAgICAgICAgaWYgJ3By aW1hcnlfa2V5cycgaW4gc2Vzc2lvbl9vYmo6CisgICAgICAgICAgICAgICAg ICAgIHByaW1hcnlfa2V5cyA9IHNlc3Npb25fb2JqWydwcmltYXJ5X2tleXMn XQorCisgICAgICAgICAgICAgICAgIyBGZXRjaCBjb2x1bW4gaW5mb3JtYXRp b24KKyAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm8gPSBjb25uLmdldF9j b2x1bW5faW5mbygpCisgICAgICAgICAgICAgICAgY2xpZW50X3ByaW1hcnlf a2V5ID0gZ2VuZXJhdGVfY2xpZW50X3ByaW1hcnlfa2V5X25hbWUoCisgICAg ICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbworICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsnY2xpZW50X3ByaW1h cnlfa2V5J10gPSBjbGllbnRfcHJpbWFyeV9rZXkKKworICAgICAgICAgICAg ICAgIGlmIGNvbHVtbnNfaW5mbyBpcyBub3QgTm9uZToKKworICAgICAgICAg ICAgICAgICAgICBjb21tYW5kX29iaiA9IHBpY2tsZS5sb2FkcyhzZXNzaW9u X29ialsnY29tbWFuZF9vYmonXSkKKyAgICAgICAgICAgICAgICAgICAgaWYg aGFzYXR0cihjb21tYW5kX29iaiwgJ29ial9pZCcpOgorICAgICAgICAgICAg ICAgICAgICAgICAgIyBHZXQgdGhlIHRlbXBsYXRlIHBhdGggZm9yIHRoZSBj b2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BhdGgg PSAnY29sdW1uL3NxbC8jezB9IycuZm9ybWF0KAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm4ubWFuYWdlci52ZXJzaW9uCisgICAgICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y29tbWFuZF9vYmou b2JqX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgIyByb3dzIHdpdGgg YXR0cmlidXRlIG5vdF9udWxsCisgICAgICAgICAgICAgICAgICAgICAgICBj b2xzdCwgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb2xzdDoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIGtl eSwgY29sIGluIGVudW1lcmF0ZShjb2x1bW5zX2luZm8pOgorICAgICAgICAg ICAgICAgICAgICAgICAgY29sX3R5cGUgPSBkaWN0KCkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbF90eXBlWyd0eXBlX2NvZGUnXSA9IGNvbFsndHlw ZV9jb2RlJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlWyd0 eXBlX25hbWUnXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bHVtbnNbY29sWyduYW1lJ11dID0gY29sX3R5cGUKKworICAgICAgICAgICAg ICAgICAgICAgICAgaWYgcnNldDoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb2xfdHlwZVsnbm90X251bGwnXSA9IGNvbFsnbm90X251bGwnXSA9 IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNldFsncm93 cyddW2tleV1bJ25vdF9udWxsJ10KKworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbF90eXBlWydoYXNfZGVmYXVsdF92YWwnXSA9IFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sWydoYXNfZGVmYXVsdF92 YWwnXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNl dFsncm93cyddW2tleV1bJ2hhc19kZWZhdWx0X3ZhbCddCisKKyAgICAgICAg ICAgICAgICBpZiBjb2x1bW5zOgorICAgICAgICAgICAgICAgICAgICBzdCwg dHlwZXMgPSBmZXRjaF9wZ190eXBlcyhjb2x1bW5zLCB0cmFuc19vYmopCisK KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0OgorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcih0eXBl cykKKworICAgICAgICAgICAgICAgICAgICBmb3IgY29sX2luZm8gaW4gY29s dW1ucy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBj b2xfdHlwZSBpbiB0eXBlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBjb2xfdHlwZVsnb2lkJ10gPT0gY29sX2luZm9bJ3R5cGVfY29kZSdd OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfaW5mb1sn dHlwZV9uYW1lJ10gPSBjb2xfdHlwZVsndHlwbmFtZSddCisKKyAgICAgICAg ICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddID0gY29s dW1ucworICAgICAgICAgICAgICAgICMgc3RhdHVzIG9mIGFzeW5jX2ZldGNo bWFueV8yZGFycmF5IGlzIFRydWUgYW5kIHJlc3VsdCBpcyBub25lCisgICAg ICAgICAgICAgICAgIyBtZWFucyBub3RoaW5nIHRvIGZldGNoCisgICAgICAg ICAgICAgICAgaWYgcmVzdWx0IGFuZCByb3dzX2FmZmVjdGVkID4gLTE6Cisg ICAgICAgICAgICAgICAgICAgIHJlc19sZW4gPSBsZW4ocmVzdWx0KQorICAg ICAgICAgICAgICAgICAgICBpZiByZXNfbGVuID09IE9OX0RFTUFORF9SRUNP UkRfQ09VTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNfbW9yZV9y b3dzID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHJlc19sZW4g PiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcm93c19mZXRjaGVkX2Zy b20gPSB0cmFuc19vYmouZ2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAg ICAgICAgICAgICAgICAgICB0cmFuc19vYmoudXBkYXRlX2ZldGNoZWRfcm93 X2NudChyb3dzX2ZldGNoZWRfZnJvbSArIHJlc19sZW4pCisgICAgICAgICAg ICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfZnJvbSArPSAxCisgICAgICAg ICAgICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfdG8gPSB0cmFuc19vYmou Z2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAgICAgICAg ICBzZXNzaW9uX29ialsnY29tbWFuZF9vYmonXSA9IHBpY2tsZS5kdW1wcyh0 cmFuc19vYmosIC0xKQorCisgICAgICAgICAgICAgICAgIyBBcyB3ZSBjaGFu Z2VkIHRoZSB0cmFuc2FjdGlvbiBvYmplY3Qgd2UgbmVlZCB0bworICAgICAg ICAgICAgICAgICMgcmVzdG9yZSBpdCBhbmQgdXBkYXRlIHRoZSBzZXNzaW9u IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2dy aWRfdHJhbnNhY3Rpb24odHJhbnNfaWQsIHNlc3Npb25fb2JqKQorCiAgICAg ICAgIGVsaWYgc3RhdHVzID09IEFTWU5DX0VYRUNVVElPTl9BQk9SVEVEOgog ICAgICAgICAgICAgc3RhdHVzID0gJ0NhbmNlbCcKICAgICAgICAgZWxzZToK QEAgLTU1OSw1MSArNjA0LDEyMyBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAg ICAgICAgIGRhdGE9ewogICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywg J3Jlc3VsdCc6IHJlc3VsdCwKICAgICAgICAgICAgICdyb3dzX2FmZmVjdGVk Jzogcm93c19hZmZlY3RlZCwKLSAgICAgICAgICAgICdhZGRpdGlvbmFsX21l c3NhZ2VzJzogYWRkaXRpb25hbF9tZXNzYWdlcworICAgICAgICAgICAgJ3Jv d3NfZmV0Y2hlZF9mcm9tJzogcm93c19mZXRjaGVkX2Zyb20sCisgICAgICAg ICAgICAncm93c19mZXRjaGVkX3RvJzogcm93c19mZXRjaGVkX3RvLAorICAg ICAgICAgICAgJ2FkZGl0aW9uYWxfbWVzc2FnZXMnOiBhZGRpdGlvbmFsX21l c3NhZ2VzLAorICAgICAgICAgICAgJ2hhc19tb3JlX3Jvd3MnOiBoYXNfbW9y ZV9yb3dzLAorICAgICAgICAgICAgJ2NvbGluZm8nOiBjb2x1bW5zX2luZm8s CisgICAgICAgICAgICAncHJpbWFyeV9rZXlzJzogcHJpbWFyeV9rZXlzLAor ICAgICAgICAgICAgJ3R5cGVzJzogdHlwZXMsCisgICAgICAgICAgICAnY2xp ZW50X3ByaW1hcnlfa2V5JzogY2xpZW50X3ByaW1hcnlfa2V5CiAgICAgICAg IH0KICAgICApCiAKIAotQGJsdWVwcmludC5yb3V0ZSgnL2ZldGNoL3R5cGVz LzxpbnQ6dHJhbnNfaWQ+JywgbWV0aG9kcz1bIkdFVCJdKQorQGJsdWVwcmlu dC5yb3V0ZSgnL2ZldGNoLzxpbnQ6dHJhbnNfaWQ+JywgbWV0aG9kcz1bIkdF VCJdKQorQGJsdWVwcmludC5yb3V0ZSgnL2ZldGNoLzxpbnQ6dHJhbnNfaWQ+ LzxpbnQ6ZmV0Y2hfYWxsPicsIG1ldGhvZHM9WyJHRVQiXSkKIEBsb2dpbl9y ZXF1aXJlZAotZGVmIGZldGNoX3BnX3R5cGVzKHRyYW5zX2lkKToKK2RlZiBm ZXRjaCh0cmFuc19pZCwgZmV0Y2hfYWxsPU5vbmUpOgorICAgIHJlc3VsdCA9 IE5vbmUKKyAgICBoYXNfbW9yZV9yb3dzID0gRmFsc2UKKyAgICByb3dzX2Zl dGNoZWRfZnJvbSA9IDAKKyAgICByb3dzX2ZldGNoZWRfdG8gPSAwCisgICAg ZmV0Y2hfcm93X2NudCA9IC0xIGlmIGZldGNoX2FsbCA9PSAxIGVsc2UgT05f REVNQU5EX1JFQ09SRF9DT1VOVAorCisgICAgIyBDaGVjayB0aGUgdHJhbnNh Y3Rpb24gYW5kIGNvbm5lY3Rpb24gc3RhdHVzCisgICAgc3RhdHVzLCBlcnJv cl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmogPSBjaGVja190 cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCisgICAgaWYgc3RhdHVzIGFu ZCBjb25uIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9u ZToKKyAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmFzeW5jX2ZldGNo bWFueV8yZGFycmF5KGZldGNoX3Jvd19jbnQpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICBzdGF0dXMgPSAnRXJyb3InCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICBzdGF0dXMgPSAnU3VjY2VzcycKKyAgICAg ICAgICAgIHJlc19sZW4gPSBsZW4ocmVzdWx0KQorICAgICAgICAgICAgaWYg ZmV0Y2hfcm93X2NudCAhPSAtMSBhbmQgcmVzX2xlbiA9PSBPTl9ERU1BTkRf UkVDT1JEX0NPVU5UOgorICAgICAgICAgICAgICAgIGhhc19tb3JlX3Jvd3Mg PSBUcnVlCisKKyAgICAgICAgICAgIGlmIHJlc19sZW46CisgICAgICAgICAg ICAgICAgcm93c19mZXRjaGVkX2Zyb20gPSB0cmFuc19vYmouZ2V0X2ZldGNo ZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAgdHJhbnNfb2JqLnVwZGF0 ZV9mZXRjaGVkX3Jvd19jbnQocm93c19mZXRjaGVkX2Zyb20gKyByZXNfbGVu KQorICAgICAgICAgICAgICAgIHJvd3NfZmV0Y2hlZF9mcm9tICs9IDEKKyAg ICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfdG8gPSB0cmFuc19vYmouZ2V0 X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAgc2Vzc2lvbl9v YmpbJ2NvbW1hbmRfb2JqJ10gPSBwaWNrbGUuZHVtcHModHJhbnNfb2JqLCAt MSkKKyAgICAgICAgICAgICAgICB1cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5z YWN0aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICBlbHNlOgorICAg ICAgICBzdGF0dXMgPSAnTm90Q29ubmVjdGVkJworICAgICAgICByZXN1bHQg PSBlcnJvcl9tc2cKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgIGRhdGE9eworICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1 cywgJ3Jlc3VsdCc6IHJlc3VsdCwKKyAgICAgICAgICAgICdoYXNfbW9yZV9y b3dzJzogaGFzX21vcmVfcm93cywKKyAgICAgICAgICAgICdyb3dzX2ZldGNo ZWRfZnJvbSc6IHJvd3NfZmV0Y2hlZF9mcm9tLAorICAgICAgICAgICAgJ3Jv d3NfZmV0Y2hlZF90byc6IHJvd3NfZmV0Y2hlZF90bworICAgICAgICB9Cisg ICAgKQorCisKK2RlZiBmZXRjaF9wZ190eXBlcyhjb2x1bW5zX2luZm8sIHRy YW5zX29iaik6CiAgICAgIiIiCiAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0 byBmZXRjaCB0aGUgcGcgdHlwZXMsIHdoaWNoIGlzIHJlcXVpcmVkCiAgICAg dG8gbWFwIHRoZSBkYXRhIHR5cGUgY29tZXMgYXMgYSByZXN1bHQgb2YgdGhl IHF1ZXJ5LgogCiAgICAgQXJnczoKLSAgICAgICAgdHJhbnNfaWQ6IHVuaXF1 ZSB0cmFuc2FjdGlvbiBpZAorICAgICAgICBjb2x1bW5zX2luZm86CiAgICAg IiIiCiAKLSAgICAjIENoZWNrIHRoZSB0cmFuc2FjdGlvbiBhbmQgY29ubmVj dGlvbiBzdGF0dXMKLSAgICBzdGF0dXMsIGVycm9yX21zZywgY29ubiwgdHJh bnNfb2JqLCBzZXNzaW9uX29iaiA9IGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1 cyh0cmFuc19pZCkKLSAgICBpZiBzdGF0dXMgYW5kIGNvbm4gaXMgbm90IE5v bmUgXAotICAgICAgICAgICAgYW5kIHRyYW5zX29iaiBpcyBub3QgTm9uZSBh bmQgc2Vzc2lvbl9vYmogaXMgbm90IE5vbmU6Ci0gICAgICAgIHJlcyA9IHt9 Ci0gICAgICAgIGlmICdjb2x1bW5zX2luZm8nIGluIHNlc3Npb25fb2JqIFwK LSAgICAgICAgICAgICAgICBhbmQgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5m byddIGlzIG5vdCBOb25lOgorICAgICMgZ2V0IHRoZSBkZWZhdWx0IGNvbm5l Y3Rpb24gYXMgY3VycmVudCBjb25uZWN0aW9uIGF0dGFjaGVkIHRvIHRyYW5z IGlkCisgICAgIyBob2xkcyB0aGUgY3Vyc29yIHdoaWNoIGhhcyBxdWVyeSBy ZXN1bHQgc28gd2UgY2Fubm90IHVzZSB0aGF0IGNvbm5lY3Rpb24KKyAgICAj IHRvIGV4ZWN1dGUgYW5vdGhlciBxdWVyeSBvdGhlcndpc2Ugd2UnbGwgbG9z ZSBxdWVyeSByZXN1bHQuCisKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQ R19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHRyYW5zX29i ai5zaWQpCisgICAgZGVmYXVsdF9jb25uID0gbWFuYWdlci5jb25uZWN0aW9u KGRpZD10cmFuc19vYmouZGlkKQorCisgICAgIyBDb25uZWN0IHRvIHRoZSBT ZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KKyAgICByZXMgPSBbXQorICAgIGlm IG5vdCBkZWZhdWx0X2Nvbm4uY29ubmVjdGVkKCk6CisgICAgICAgIHN0YXR1 cywgbXNnID0gZGVmYXVsdF9jb25uLmNvbm5lY3QoKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCiAK LSAgICAgICAgICAgIG9pZHMgPSBbc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5m byddW2NvbF1bJ3R5cGVfY29kZSddIGZvciBjb2wgaW4gc2Vzc2lvbl9vYmpb J2NvbHVtbnNfaW5mbyddXQorICAgIG9pZHMgPSBbY29sdW1uc19pbmZvW2Nv bF1bJ3R5cGVfY29kZSddIGZvciBjb2wgaW4gY29sdW1uc19pbmZvXQogCi0g ICAgICAgICAgICBpZiBvaWRzOgotICAgICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gY29ubi5leGVjdXRlX2RpY3QoCi0gICAgICAgICAgICAgICAgICAg IHUiIiJTRUxFQ1Qgb2lkLCBmb3JtYXRfdHlwZShvaWQsbnVsbCkgYXMgdHlw bmFtZSBGUk9NIHBnX3R5cGUgV0hFUkUgb2lkIElOICVzIE9SREVSIEJZIG9p ZDsKKyAgICBpZiBvaWRzOgorICAgICAgICBzdGF0dXMsIHJlcyA9IGRlZmF1 bHRfY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICB1IiIiU0VMRUNU IG9pZCwgZm9ybWF0X3R5cGUob2lkLG51bGwpIGFzIHR5cG5hbWUgRlJPTSBw Z190eXBlIFdIRVJFIG9pZCBJTiAlcyBPUkRFUiBCWSBvaWQ7CiAiIiIsIFt0 dXBsZShvaWRzKV0pCiAKLSAgICAgICAgICAgICAgICBpZiBzdGF0dXM6Ci0g ICAgICAgICAgICAgICAgICAgICMgaXRlcmF0ZSB0aHJvdWdoIHBnX3R5cGVz IGFuZCB1cGRhdGUgdGhlIHR5cGUgbmFtZSBpbiBzZXNzaW9uIG9iamVjdAot ICAgICAgICAgICAgICAgICAgICBmb3IgcmVjb3JkIGluIHJlc1sncm93cydd OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbCBpbiBzZXNzaW9u X29ialsnY29sdW1uc19pbmZvJ106Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZV9vYmogPSBzZXNzaW9uX29ialsnY29sdW1uc19pbmZvJ11b Y29sXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGVfb2Jq Wyd0eXBlX2NvZGUnXSA9PSByZWNvcmRbJ29pZCddOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlX29ialsndHlwZV9uYW1lJ10gPSBy ZWNvcmRbJ3R5cG5hbWUnXQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIEZhbHNlLCByZXMKIAotICAgICAgICAgICAgICAg ICAgICB1cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5zYWN0aW9uKHRyYW5zX2lk LCBzZXNzaW9uX29iaikKKyAgICAgICAgcmV0dXJuIHN0YXR1cywgcmVzWydy b3dzJ10KICAgICBlbHNlOgotICAgICAgICBzdGF0dXMgPSBGYWxzZQotICAg ICAgICByZXMgPSBlcnJvcl9tc2cKLQotICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHJl c30pCisgICAgICAgIHJldHVybiBUcnVlLCBbXQorCisKK2RlZiBnZW5lcmF0 ZV9jbGllbnRfcHJpbWFyeV9rZXlfbmFtZShjb2x1bW5zX2luZm8pOgorICAg IHRlbXBfa2V5ID0gJ19fdGVtcF9QSycKKyAgICBpZiBub3QgY29sdW1uc19p bmZvOgorICAgICAgICByZXR1cm4gdGVtcF9rZXkKKworICAgIGluaXRpYWxf dGVtcF9rZXlfbGVuID0gbGVuKHRlbXBfa2V5KQorICAgIGR1cGxpY2F0ZSA9 IEZhbHNlCisgICAgc3VmZml4ID0gMQorICAgIHdoaWxlIDE6CisgICAgICAg IGZvciBjb2wgaW4gY29sdW1uc19pbmZvOgorICAgICAgICAgICAgaWYgY29s WyduYW1lJ10gPT0gdGVtcF9rZXk6CisgICAgICAgICAgICAgICAgZHVwbGlj YXRlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlm IGR1cGxpY2F0ZToKKyAgICAgICAgICAgIGlmIGluaXRpYWxfdGVtcF9rZXlf bGVuID09IGxlbih0ZW1wX2tleSk6CisgICAgICAgICAgICAgICAgdGVtcF9r ZXkgKz0gc3RyKHN1ZmZpeCkKKyAgICAgICAgICAgICAgICBzdWZmaXggKz0g MQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZW1wX2tl eSA9IHRlbXBfa2V5WzotMV0gKyBzdHIoc3VmZml4KQorICAgICAgICAgICAg ICAgIHN1ZmZpeCArPSAxCisgICAgICAgICAgICBkdXBsaWNhdGUgPSBGYWxz ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1 cm4gdGVtcF9rZXkKIAogCiBAYmx1ZXByaW50LnJvdXRlKCcvc2F2ZS88aW50 OnRyYW5zX2lkPicsIG1ldGhvZHM9WyJQVVQiLCAiUE9TVCJdKQpAQCAtNjE1 LDcgKzczMiw2IEBAIGRlZiBzYXZlKHRyYW5zX2lkKToKICAgICBBcmdzOgog ICAgICAgICB0cmFuc19pZDogdW5pcXVlIHRyYW5zYWN0aW9uIGlkCiAgICAg IiIiCi0KICAgICBpZiByZXF1ZXN0LmRhdGE6CiAgICAgICAgIGNoYW5nZWRf ZGF0YSA9IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLCBlbmNvZGluZz0ndXRm LTgnKQogICAgIGVsc2U6CkBAIC02MjUsNyArNzQxLDYgQEAgZGVmIHNhdmUo dHJhbnNfaWQpOgogICAgIHN0YXR1cywgZXJyb3JfbXNnLCBjb25uLCB0cmFu c19vYmosIHNlc3Npb25fb2JqID0gY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVz KHRyYW5zX2lkKQogICAgIGlmIHN0YXR1cyBhbmQgY29ubiBpcyBub3QgTm9u ZSBcCiAgICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFu ZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKLSAgICAgICAgc2V0YXR0cih0 cmFuc19vYmosICdjb2x1bW5zX2luZm8nLCBzZXNzaW9uX29ialsnY29sdW1u c19pbmZvJ10pCiAKICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyBwcmltYXJ5 IGtleSBmb3VuZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KICAg ICAgICAgaWYgbGVuKHNlc3Npb25fb2JqWydwcmltYXJ5X2tleXMnXSkgPD0g MCBvciBsZW4oY2hhbmdlZF9kYXRhKSA8PSAwOgpAQCAtNjM2LDcgKzc1MSwy MiBAQCBkZWYgc2F2ZSh0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgKQogCi0gICAgICAgIHN0YXR1cywgcmVzLCBxdWVyeV9y ZXMsIF9yb3dpZCA9IHRyYW5zX29iai5zYXZlKGNoYW5nZWRfZGF0YSkKKyAg ICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIp LmNvbm5lY3Rpb25fbWFuYWdlcih0cmFuc19vYmouc2lkKQorICAgICAgICBk ZWZhdWx0X2Nvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPXRyYW5zX29i ai5kaWQpCisKKyAgICAgICAgIyBDb25uZWN0IHRvIHRoZSBTZXJ2ZXIgaWYg bm90IGNvbm5lY3RlZC4KKyAgICAgICAgaWYgbm90IGRlZmF1bHRfY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgIHN0YXR1cywgbXNnID0gZGVmYXVs dF9jb25uLmNvbm5lY3QoKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAn cmVzdWx0JzogdSJ7fSIuZm9ybWF0KG1zZyl9CisgICAgICAgICAgICAgICAg KQorCisgICAgICAgIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMsIF9yb3dpZCA9 IHRyYW5zX29iai5zYXZlKAorICAgICAgICAgICAgY2hhbmdlZF9kYXRhLAor ICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddLAorICAg ICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NsaWVudF9wcmltYXJ5X2tleSddLAor ICAgICAgICAgICAgZGVmYXVsdF9jb25uKQogICAgIGVsc2U6CiAgICAgICAg IHN0YXR1cyA9IEZhbHNlCiAgICAgICAgIHJlcyA9IGVycm9yX21zZwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL2NvbW1hbmQu cHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQpp bmRleCBiN2Q4YTc4Li41MWIxZjU2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQorKysgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQpAQCAtMjU4LDcgKzI1OCwy MSBAQCBjbGFzcyBTUUxGaWx0ZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJu IHN0YXR1cywgcmVzdWx0CiAKIAotY2xhc3MgR3JpZENvbW1hbmQoQmFzZUNv bW1hbmQsIFNRTEZpbHRlcik6CitjbGFzcyBGZXRjaGVkUm93VHJhY2tlcihv YmplY3QpOgorICAgICIiIgorICAgIEtlZXBzIHRyYWNrIG9mIGZldGNoZWQg cm93IGNvdW50LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq Kmt3YXJncyk6CisgICAgICAgIHNlbGYuZmV0Y2hlZF9yb3dzID0gMAorCisg ICAgZGVmIGdldF9mZXRjaGVkX3Jvd19jbnQoc2VsZik6CisgICAgICAgIHJl dHVybiBzZWxmLmZldGNoZWRfcm93cworCisgICAgZGVmIHVwZGF0ZV9mZXRj aGVkX3Jvd19jbnQoc2VsZiwgcm93c19jbnQpOgorICAgICAgICBzZWxmLmZl dGNoZWRfcm93cyA9IHJvd3NfY250CisKKworY2xhc3MgR3JpZENvbW1hbmQo QmFzZUNvbW1hbmQsIFNRTEZpbHRlciwgRmV0Y2hlZFJvd1RyYWNrZXIpOgog ICAgICIiIgogICAgIGNsYXNzIEdyaWRDb21tYW5kKG9iamVjdCkKIApAQCAt MjkwLDYgKzMwNCw3IEBAIGNsYXNzIEdyaWRDb21tYW5kKEJhc2VDb21tYW5k LCBTUUxGaWx0ZXIpOgogICAgICAgICAiIiIKICAgICAgICAgQmFzZUNvbW1h bmQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAgICAgICAgIFNRTEZpbHRl ci5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKyAgICAgICAgRmV0Y2hlZFJv d1RyYWNrZXIuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAKICAgICAgICAg IyBTYXZlIHRoZSBjb25uZWN0aW9uIGlkLCBjb21tYW5kIHR5cGUKICAgICAg ICAgc2VsZi5jb25uX2lkID0ga3dhcmdzWydjb25uX2lkJ10gaWYgJ2Nvbm5f aWQnIGluIGt3YXJncyBlbHNlIE5vbmUKQEAgLTI5OSwxMCArMzE0LDEwIEBA IGNsYXNzIEdyaWRDb21tYW5kKEJhc2VDb21tYW5kLCBTUUxGaWx0ZXIpOgog ICAgICAgICBpZiBzZWxmLmNtZF90eXBlID09IFZJRVdfRklSU1RfMTAwX1JP V1Mgb3Igc2VsZi5jbWRfdHlwZSA9PSBWSUVXX0xBU1RfMTAwX1JPV1M6CiAg ICAgICAgICAgICBzZWxmLmxpbWl0ID0gMTAwCiAKLSAgICBkZWYgZ2V0X3By aW1hcnlfa2V5cyhzZWxmKToKKyAgICBkZWYgZ2V0X3ByaW1hcnlfa2V5cyhz ZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gTm9uZSwg Tm9uZQogCi0gICAgZGVmIHNhdmUoc2VsZiwgY2hhbmdlZF9kYXRhKToKKyAg ICBkZWYgc2F2ZShzZWxmLCBjaGFuZ2VkX2RhdGEsIGRlZmF1bHRfY29ubj1O b25lKToKICAgICAgICAgcmV0dXJuIGZvcmJpZGRlbihlcnJtc2c9Z2V0dGV4 dCgiRGF0YSBjYW5ub3QgYmUgc2F2ZWQgZm9yIHRoZSBjdXJyZW50IG9iamVj dC4iKSkKIAogICAgIGRlZiBnZXRfbGltaXQoc2VsZik6CkBAIC0zNDAsMTQg KzM1NSwxNCBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1hbmQpOgog ICAgICAgICAjIGNhbGwgYmFzZSBjbGFzcyBpbml0IHRvIGZldGNoIHRoZSB0 YWJsZSBuYW1lCiAgICAgICAgIHN1cGVyKFRhYmxlQ29tbWFuZCwgc2VsZiku X19pbml0X18oKiprd2FyZ3MpCiAKLSAgICBkZWYgZ2V0X3NxbChzZWxmKToK KyAgICBkZWYgZ2V0X3NxbChzZWxmLCBkZWZhdWx0X2Nvbm49Tm9uZSk6CiAg ICAgICAgICIiIgogICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNy ZWF0ZSBhIHByb3BlciBTUUwgcXVlcnkKICAgICAgICAgdG8gZmV0Y2ggdGhl IGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUKICAgICAgICAgIiIiCiAK ICAgICAgICAgIyBGZXRjaCB0aGUgcHJpbWFyeSBrZXlzIGZvciB0aGUgdGFi bGUKLSAgICAgICAgcGtfbmFtZXMsIHByaW1hcnlfa2V5cyA9IHNlbGYuZ2V0 X3ByaW1hcnlfa2V5cygpCisgICAgICAgIHBrX25hbWVzLCBwcmltYXJ5X2tl eXMgPSBzZWxmLmdldF9wcmltYXJ5X2tleXMoZGVmYXVsdF9jb25uKQogCiAg ICAgICAgIHNxbF9maWx0ZXIgPSBzZWxmLmdldF9maWx0ZXIoKQogCkBAIC0z NjIsMTMgKzM3NywxNiBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1h bmQpOgogCiAgICAgICAgIHJldHVybiBzcWwKIAotICAgIGRlZiBnZXRfcHJp bWFyeV9rZXlzKHNlbGYpOgorICAgIGRlZiBnZXRfcHJpbWFyeV9rZXlzKHNl bGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAg IFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUgcHJpbWFyeSBr ZXkgY29sdW1ucy4KICAgICAgICAgIiIiCiAgICAgICAgIGRyaXZlciA9IGdl dF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAgIG1hbmFnZXIg PSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQotICAgICAg ICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1zZWxmLmRpZCwgY29u bl9pZD1zZWxmLmNvbm5faWQpCisgICAgICAgIGlmIGRlZmF1bHRfY29ubiBp cyBOb25lOgorICAgICAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0 aW9uX21hbmFnZXIoc2VsZi5zaWQpCisgICAgICAgICAgICBjb25uID0gbWFu YWdlci5jb25uZWN0aW9uKGRpZD1zZWxmLmRpZCwgY29ubl9pZD1zZWxmLmNv bm5faWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25uID0gZGVm YXVsdF9jb25uCiAKICAgICAgICAgcGtfbmFtZXMgPSAnJwogICAgICAgICBw cmltYXJ5X2tleXMgPSBPcmRlcmVkRGljdCgpCkBAIC00MDAsNyArNDE4LDEx IEBAIGNsYXNzIFRhYmxlQ29tbWFuZChHcmlkQ29tbWFuZCk6CiAgICAgZGVm IGNhbl9maWx0ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAg ICBkZWYgc2F2ZShzZWxmLCBjaGFuZ2VkX2RhdGEpOgorICAgIGRlZiBzYXZl KHNlbGYsCisgICAgICAgICAgICAgY2hhbmdlZF9kYXRhLAorICAgICAgICAg ICAgIGNvbHVtbnNfaW5mbywKKyAgICAgICAgICAgICBjbGllbnRfcHJpbWFy eV9rZXk9J19fdGVtcF9QSycsCisgICAgICAgICAgICAgZGVmYXVsdF9jb25u PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHNhdmUgdGhlIGRhdGEgaW50byB0aGUgZGF0YWJhc2UuCiAg ICAgICAgIERlcGVuZGluZyBvbiBjb25kaXRpb24gaXQgd2lsbCBlaXRoZXIg dXBkYXRlIG9yIGluc2VydCB0aGUKQEAgLTQwOCwxMCArNDMwLDE2IEBAIGNs YXNzIFRhYmxlQ29tbWFuZChHcmlkQ29tbWFuZCk6CiAKICAgICAgICAgQXJn czoKICAgICAgICAgICAgIGNoYW5nZWRfZGF0YTogQ29udGFpbnMgZGF0YSB0 byBiZSBzYXZlZAorICAgICAgICAgICAgY29sdW1uc19pbmZvOgorICAgICAg ICAgICAgZGVmYXVsdF9jb25uOgorICAgICAgICAgICAgY2xpZW50X3ByaW1h cnlfa2V5OgogICAgICAgICAiIiIKLQotICAgICAgICBtYW5hZ2VyID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2Vy KHNlbGYuc2lkKQotICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9u KGRpZD1zZWxmLmRpZCwgY29ubl9pZD1zZWxmLmNvbm5faWQpCisgICAgICAg IGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAg ICAgIGlmIGRlZmF1bHRfY29ubiBpcyBOb25lOgorICAgICAgICAgICAgbWFu YWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5zaWQpCisg ICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1zZWxm LmRpZCwgY29ubl9pZD1zZWxmLmNvbm5faWQpCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBjb25uID0gZGVmYXVsdF9jb25uCiAKICAgICAgICAgc3Rh dHVzID0gRmFsc2UKICAgICAgICAgcmVzID0gTm9uZQpAQCAtNDIxLDE0ICs0 NDksNiBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1hbmQpOgogICAg ICAgICBsaXN0X29mX3NxbCA9IFtdCiAgICAgICAgIF9yb3dpZCA9IE5vbmUK IAotICAgICAgICAjIFJlcGxhY2UgY29sdW1uIHBvc2l0aW9ucyB3aXRoIG5h bWVzCi0gICAgICAgIGRlZiBzZXRfY29sdW1uX25hbWVzKGRhdGEpOgotICAg ICAgICAgICAgbmV3X2RhdGEgPSB7fQotICAgICAgICAgICAgZm9yIGtleSBp biBkYXRhOgotICAgICAgICAgICAgICAgIG5ld19kYXRhW2NoYW5nZWRfZGF0 YVsnY29sdW1ucyddW2ludChrZXkpXVsnbmFtZSddXSA9IGRhdGFba2V5XQot Ci0gICAgICAgICAgICByZXR1cm4gbmV3X2RhdGEKLQogICAgICAgICBpZiBj b25uLmNvbm5lY3RlZCgpOgogCiAgICAgICAgICAgICAjIFN0YXJ0IHRoZSB0 cmFuc2FjdGlvbgpAQCAtNDU0LDI4ICs0NzQsMjYgQEAgY2xhc3MgVGFibGVD b21tYW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgICAgICAgICAgICAgY29s dW1uX3R5cGUgPSB7fQogICAgICAgICAgICAgICAgICAgICBwa19uYW1lcywg cHJpbWFyeV9rZXlzID0gc2VsZi5nZXRfcHJpbWFyeV9rZXlzKCkKIAotICAg ICAgICAgICAgICAgICAgICBmb3IgZWFjaF9jb2wgaW4gc2VsZi5jb2x1bW5z X2luZm86CisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoX2NvbCBpbiBj b2x1bW5zX2luZm86CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5zX2luZm9b ZWFjaF9jb2xdWydub3RfbnVsbCddIGFuZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vdCBzZWxmLmNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc19pbmZvW2VhY2hf Y29sXVsnbm90X251bGwnXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBub3QgY29sdW1uc19pbmZvW2VhY2hfY29sXVsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2hhc19kZWZhdWx0X3ZhbCddCiAgICAg ICAgICAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbHVtbl9kYXRhW2VhY2hfY29sXSA9IE5vbmUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNoX2NvbF0gPVwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5z X2luZm9bZWFjaF9jb2xdWyd0eXBlX25hbWUnXQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9jb2xdWyd0eXBl X25hbWUnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNoX2NvbF0g PSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29s dW1uc19pbmZvW2VhY2hfY29sXVsndHlwZV9uYW1lJ10KLQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9jb2xd Wyd0eXBlX25hbWUnXQogCiAgICAgICAgICAgICAgICAgICAgIGZvciBlYWNo X3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06CiAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhID0gY2hhbmdlZF9kYXRhW29mX3R5cGVdW2VhY2hf cm93XVsnZGF0YSddCiAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlbW92 ZSBvdXIgdW5pcXVlIHRyYWNraW5nIGtleQotICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YS5wb3AoJ19fdGVtcF9QSycsIE5vbmUpCisgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLnBvcChjbGllbnRfcHJpbWFyeV9rZXksIE5v bmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnBvcCgnaXNfcm93 X2NvcGllZCcsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh ID0gc2V0X2NvbHVtbl9uYW1lcyhkYXRhKQotICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YV90eXBlID0gc2V0X2NvbHVtbl9uYW1lcyhjaGFuZ2VkX2Rh dGFbb2ZfdHlwZV1bZWFjaF9yb3ddWydkYXRhX3R5cGUnXSkKLSAgICAgICAg ICAgICAgICAgICAgICAgIGxpc3Rfb2Zfcm93aWQuYXBwZW5kKGRhdGEuZ2V0 KCdfX3RlbXBfUEsnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFf dHlwZSA9IGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd11bJ2RhdGFf dHlwZSddCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3Jvd2lk LmFwcGVuZChkYXRhLmdldChjbGllbnRfcHJpbWFyeV9rZXkpKQogCiAgICAg ICAgICAgICAgICAgICAgICAgICAjIFVwZGF0ZSBjb2x1bW5zIHZhbHVlIGFu ZCBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBj b2x1bW5zIGhhdmluZyBub3RfbnVsbD1GYWxzZSBhbmQgaGFzCkBAIC00OTcs OSArNTE1LDkgQEAgY2xhc3MgVGFibGVDb21tYW5kKEdyaWRDb21tYW5kKToK ICAgICAgICAgICAgICAgICAjIEZvciB1cGRhdGVkIHJvd3MKICAgICAgICAg ICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ3VwZGF0ZWQnOgogICAgICAgICAg ICAgICAgICAgICBmb3IgZWFjaF9yb3cgaW4gY2hhbmdlZF9kYXRhW29mX3R5 cGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNldF9jb2x1 bW5fbmFtZXMoY2hhbmdlZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93XVsnZGF0 YSddKQotICAgICAgICAgICAgICAgICAgICAgICAgcGsgPSBzZXRfY29sdW1u X25hbWVzKGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd11bJ3ByaW1h cnlfa2V5cyddKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV90eXBl ID0gc2V0X2NvbHVtbl9uYW1lcyhjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFj aF9yb3ddWydkYXRhX3R5cGUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAg IGRhdGEgPSBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddWydkYXRh J10KKyAgICAgICAgICAgICAgICAgICAgICAgIHBrID0gY2hhbmdlZF9kYXRh W29mX3R5cGVdW2VhY2hfcm93XVsncHJpbWFyeV9rZXlzJ10KKyAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGFfdHlwZSA9IGNoYW5nZWRfZGF0YVtvZl90 eXBlXVtlYWNoX3Jvd11bJ2RhdGFfdHlwZSddCiAgICAgICAgICAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu c3FsX3BhdGgsICd1cGRhdGUuc3FsJ10pLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdG9fYmVfc2F2ZWQ9 ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmltYXJ5X2tleXM9cGssCkBAIC01MTksMTggKzUzNywxOSBA QCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1hbmQpOgogICAgICAgICAg ICAgICAgICAgICAgICAgcm93c190b19kZWxldGUuYXBwZW5kKGNoYW5nZWRf ZGF0YVtvZl90eXBlXVtlYWNoX3Jvd10pCiAgICAgICAgICAgICAgICAgICAg ICAgICAjIEZldGNoIHRoZSBrZXlzIGZvciBTUUwgZ2VuZXJhdGlvbgogICAg ICAgICAgICAgICAgICAgICAgICAgaWYgaXNfZmlyc3Q6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNvdmVydCBkaWN0X2tl eXMgdG8gbm9ybWFsIGxpc3QgaW4gUHl0aG9uMwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgSW4gUHl0aG9uMiwgaXQncyBhbHJlYWR5IGEgbGlz dCAmIFdlIHdpbGwgYWxzbyBmZXRjaCBjb2x1bW4gbmFtZXMgdXNpbmcgaW5k ZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gWwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2RhdGFbJ2Nv bHVtbnMnXVtpbnQoayldWyduYW1lJ10KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGxpc3QoY2hhbmdlZF9kYXRh W29mX3R5cGVdW2VhY2hfcm93XS5rZXlzKCkpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg V2UgbmVlZCB0byBjb3ZlcnQgZGljdF9rZXlzIHRvIG5vcm1hbCBsaXN0IGlu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQeXRob24zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBQeXRob24yLCBpdCdzIGFs cmVhZHkgYSBsaXN0ICYgV2Ugd2lsbCBhbHNvCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBmZXRjaCBjb2x1bW4gbmFtZXMgdXNpbmcgaW5kZXgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gbGlzdChjaGFu Z2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddLmtleXMoKSkKKwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBsZW4oa2V5cykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJzdCA9IEZhbHNl CiAgICAgICAgICAgICAgICAgICAgICMgTWFwIGluZGV4IHdpdGggY29sdW1u IG5hbWUgZm9yIGVhY2ggcm93CiAgICAgICAgICAgICAgICAgICAgIGZvciBy b3cgaW4gcm93c190b19kZWxldGU6CiAgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgaywgdiBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxhYmVsICYgZGVs ZXRlIGluZGV4IGJhc2VkIG1hcHBlZCBrZXkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxhYmVsICYgZGVs ZXRlIGluZGV4IGJhc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBtYXBwZWQga2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5 OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbY2hhbmdl ZF9kYXRhWydjb2x1bW5zJ11baW50KGspXVsnbmFtZSddXSA9IHYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAg LTU5Nyw3ICs2MTYsNyBAQCBjbGFzcyBWaWV3Q29tbWFuZChHcmlkQ29tbWFu ZCk6CiAgICAgICAgICMgY2FsbCBiYXNlIGNsYXNzIGluaXQgdG8gZmV0Y2gg dGhlIHRhYmxlIG5hbWUKICAgICAgICAgc3VwZXIoVmlld0NvbW1hbmQsIHNl bGYpLl9faW5pdF9fKCoqa3dhcmdzKQogCi0gICAgZGVmIGdldF9zcWwoc2Vs Zik6CisgICAgZGVmIGdldF9zcWwoc2VsZiwgZGVmYXVsdF9jb25uPU5vbmUp OgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0 byBjcmVhdGUgYSBwcm9wZXIgU1FMIHF1ZXJ5CiAgICAgICAgIHRvIGZldGNo IHRoZSBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHZpZXcKQEAgLTY1Miw3ICs2 NzEsNyBAQCBjbGFzcyBGb3JlaWduVGFibGVDb21tYW5kKEdyaWRDb21tYW5k KToKICAgICAgICAgIyBjYWxsIGJhc2UgY2xhc3MgaW5pdCB0byBmZXRjaCB0 aGUgdGFibGUgbmFtZQogICAgICAgICBzdXBlcihGb3JlaWduVGFibGVDb21t YW5kLCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKIAotICAgIGRlZiBnZXRf c3FsKHNlbGYpOgorICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRlZmF1bHRfY29u bj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgbWV0aG9kIGlz IHVzZWQgdG8gY3JlYXRlIGEgcHJvcGVyIFNRTCBxdWVyeQogICAgICAgICB0 byBmZXRjaCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCBmb3JlaWduIHRh YmxlCkBAIC02OTcsNyArNzE2LDcgQEAgY2xhc3MgQ2F0YWxvZ0NvbW1hbmQo R3JpZENvbW1hbmQpOgogICAgICAgICAjIGNhbGwgYmFzZSBjbGFzcyBpbml0 IHRvIGZldGNoIHRoZSB0YWJsZSBuYW1lCiAgICAgICAgIHN1cGVyKENhdGFs b2dDb21tYW5kLCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKIAotICAgIGRl ZiBnZXRfc3FsKHNlbGYpOgorICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRlZmF1 bHRfY29ubj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgbWV0 aG9kIGlzIHVzZWQgdG8gY3JlYXRlIGEgcHJvcGVyIFNRTCBxdWVyeQogICAg ICAgICB0byBmZXRjaCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCBjYXRh bG9nIG9iamVjdApAQCAtNzIyLDcgKzc0MSw3IEBAIGNsYXNzIENhdGFsb2dD b21tYW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgcmV0dXJuIFRydWUKIAog Ci1jbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5kKToKK2NsYXNz IFF1ZXJ5VG9vbENvbW1hbmQoQmFzZUNvbW1hbmQsIEZldGNoZWRSb3dUcmFj a2VyKToKICAgICAiIiIKICAgICBjbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJh c2VDb21tYW5kKQogCkBAIC03MzIsMTMgKzc1MSwxNSBAQCBjbGFzcyBRdWVy eVRvb2xDb21tYW5kKEJhc2VDb21tYW5kKToKIAogICAgIGRlZiBfX2luaXRf XyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgICMgY2FsbCBiYXNlIGNsYXNz IGluaXQgdG8gZmV0Y2ggdGhlIHRhYmxlIG5hbWUKLSAgICAgICAgc3VwZXIo UXVlcnlUb29sQ29tbWFuZCwgc2VsZikuX19pbml0X18oKiprd2FyZ3MpCisK KyAgICAgICAgQmFzZUNvbW1hbmQuX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp CisgICAgICAgIEZldGNoZWRSb3dUcmFja2VyLl9faW5pdF9fKHNlbGYsICoq a3dhcmdzKQogCiAgICAgICAgIHNlbGYuY29ubl9pZCA9IE5vbmUKICAgICAg ICAgc2VsZi5hdXRvX3JvbGxiYWNrID0gRmFsc2UKICAgICAgICAgc2VsZi5h dXRvX2NvbW1pdCA9IFRydWUKIAotICAgIGRlZiBnZXRfc3FsKHNlbGYpOgor ICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAg ICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBjYW5fZWRpdChzZWxmKToK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0 aWMvY3NzL3NxbGVkaXRvci5jc3MgYi93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzCmluZGV4IDcyNjZiMzQu LjhlZDUwMzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcwpA QCAtNDYwLDYgKzQ2MCwxMSBAQCBpbnB1dC5lZGl0b3ItY2hlY2tib3g6Zm9j dXMgewogICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM3NkI0OwogfQogCisuc2xp Y2stY2VsbCBzcGFuW2RhdGEtY2VsbC10eXBlPSJyb3ctaGVhZGVyLXNlbGVj dG9yIl0geworICBkaXNwbGF5OiBibG9jazsKKyAgdGV4dC1hbGlnbjogcmln aHQ7Cit9CisKICNkYXRhZ3JpZCBkaXYuc2xpY2staGVhZGVyLnVpLXN0YXRl LWRlZmF1bHQgewogICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICBib3JkZXIt Ym90dG9tOiBub25lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpz IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxl ZGl0b3IvanMvc3FsZWRpdG9yLmpzCmluZGV4IGI5ZjAxN2UuLmFkOGEyMGIg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1w bGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9qcy9z cWxlZGl0b3IuanMKQEAgLTMzLDcgKzMzLDggQEAgZGVmaW5lKFsKICAgICAn c2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbHNlbGVjdGlvbm1vZGVsJywK ICAgICAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbGNvcHltYW5hZ2Vy JywKICAgICAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2sucm93c2VsZWN0aW9u bW9kZWwnLAotICAgICdzbGlja2dyaWQvc2xpY2suZ3JpZCcKKyAgICAnc2xp Y2tncmlkL3NsaWNrLmdyaWQnLAorICAgICdzbGlja2dyaWQvc2xpY2suZGF0 YXZpZXcnCiBdLCBmdW5jdGlvbigKICAgJCwgXywgUywgYWxlcnRpZnksIHBn QWRtaW4sIEJhY2tib25lLCBCYWNrZ3JpZCwgQ29kZU1pcnJvciwKICAgcGdF eHBsYWluLCBHcmlkU2VsZWN0b3IsIEFjdGl2ZUNlbGxDYXB0dXJlLCBjbGlw Ym9hcmQsIGNvcHlEYXRhLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwgaGFuZGxl UXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50LApAQCAtNDcwLDcgKzQ3MSw3IEBA IGRlZmluZShbCiAgICAgICAgICAtIHN0YWdlZF9yb3dzOgogICAgICAgICAg ICBUaGlzIHdpbGwgaG9sZCBhbGwgdGhlIGRhdGEgd2hpY2ggdXNlciBjb3Bp ZXMvcGFzdGVzL2RlbGV0ZXMgaW4gZ3JpZAogICAgICAgICAgLSBkZWxldGVk OgotICAgICAgICAgICBUaGlzIHdpbGwgaG9sZCBhbGwgdGhlIGRhdGEgd2hp Y2ggdXNlciBkZWxldHMgaW4gZ3JpZAorICAgICAgICAgICBUaGlzIHdpbGwg aG9sZCBhbGwgdGhlIGRhdGEgd2hpY2ggdXNlciBkZWxldGVzIGluIGdyaWQK IAogICAgICAgIEV2ZW50cyBoYW5kbGluZzoKICAgICAgICAtLS0tLS0tLS0t LS0tLS0tCkBAIC00ODYsMzQgKzQ4NywxMCBAQCBkZWZpbmUoWwogICAgICAg ICAgICAtIFdlIGFyZSB1c2luZyB0aGlzIGV2ZW50IGZvciBDb3B5IG9wZXJh dGlvbiBvbiBncmlkCiAgICAgICAgKi8KIAotICAgICAgLy8gR2V0IHRoZSBp dGVtIGNvbHVtbiB2YWx1ZSB1c2luZyBhIGN1c3RvbSAnZmllbGRJZHgnIGNv bHVtbiBwYXJhbQotICAgICAgZ2V0X2l0ZW1fY29sdW1uX3ZhbHVlOiBmdW5j dGlvbiAoaXRlbSwgY29sdW1uKSB7Ci0gICAgICAgIGlmIChjb2x1bW4ucG9z ICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICByZXR1cm4gaXRlbVtjb2x1 bW4ucG9zXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4g bnVsbDsKLSAgICAgICAgfQotICAgICAgfSwKLQogICAgICAgLy8gVGhpcyBm dW5jdGlvbiBpcyByZXNwb25zaWJsZSB0byBjcmVhdGUgYW5kIHJlbmRlciB0 aGUgU2xpY2tHcmlkLgotICAgICAgcmVuZGVyX2dyaWQ6IGZ1bmN0aW9uKGNv bGxlY3Rpb24sIGNvbHVtbnMsIGlzX2VkaXRhYmxlKSB7CisgICAgICByZW5k ZXJfZ3JpZDogZnVuY3Rpb24oY29sbGVjdGlvbiwgY29sdW1ucywgaXNfZWRp dGFibGUsIGNsaWVudF9wcmltYXJ5X2tleSkgewogICAgICAgICB2YXIgc2Vs ZiA9IHRoaXM7CiAKLSAgICAgICAgLy8gcmV0dXJucyBwcmltYXJ5IGtleXMK LSAgICAgICAgc2VsZi5oYW5kbGVyLmdldF9yb3dfcHJpbWFyeV9rZXkgPSBm dW5jdGlvbigpIHsKLSAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAg ICAgICAgICB0bXBfa2V5cyA9IFtdOwotICAgICAgICAgIF8uZWFjaChzZWxm LnByaW1hcnlfa2V5cywgZnVuY3Rpb24ocCwgaWR4KSB7Ci0gICAgICAgICAg ICAvLyBGb3IgZWFjaCBjb2x1bW5zIHNlYXJjaCBwcmltYXJ5IGtleSBwb3Np dGlvbgotICAgICAgICAgICAgXy5lYWNoKHNlbGYuY29sdW1ucywgZnVuY3Rp b24oYykgewotICAgICAgICAgICAgICAgaWYoYy5uYW1lID09IGlkeCkgewot ICAgICAgICAgICAgICAgICB0bXBfa2V5cy5wdXNoKGMucG9zKTsKLSAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0pOwot ICAgICAgICAgIHJldHVybiB0bXBfa2V5czsKLSAgICAgICAgfTsKLQogICAg ICAgICAvLyBUaGlzIHdpbGwgd29yayBhcyBkYXRhIHN0b3JlIGFuZCBob2xk cyBhbGwgdGhlCiAgICAgICAgIC8vIGluc2VydGVkL3VwZGF0ZWQvZGVsZXRl ZCBkYXRhIGZyb20gZ3JpZAogICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9z dG9yZSA9IHsKQEAgLTUyOCw4ICs1MDUsOSBAQCBkZWZpbmUoWwogICAgICAg ICAvLyBUbyBzdG9yZSBwcmltYXJ5IGtleXMgYmVmb3JlIHRoZXkgZ2V0cyBj aGFuZ2VkCiAgICAgICAgIHNlbGYuaGFuZGxlci5wcmltYXJ5X2tleXNfZGF0 YSA9IHt9OwogCi0gICAgICAgIC8vIEFkZCBnZXRJdGVtTWV0YWRhdGEgaW50 byBoYW5kbGVyIGZvciBsYXRlciB1c2UKLSAgICAgICAgc2VsZi5oYW5kbGVy LmRhdGFfdmlldyA9IGNvbGxlY3Rpb247CisgICAgICAgIHNlbGYuY2xpZW50 X3ByaW1hcnlfa2V5ID0gY2xpZW50X3ByaW1hcnlfa2V5OworCisgICAgICAg IHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5X2NvdW50ZXIgPSAwOwogCiAgICAg ICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgZ3JpZCBmaXJzdAogICAgICAg ICBpZiAoc2VsZi5oYW5kbGVyLnNsaWNrZ3JpZCkgewpAQCAtNjA3LDcgKzU4 NSw3IEBAIGRlZmluZShbCiAgICAgICAgIH0pOwogCiAgICAgICAgIHZhciBn cmlkU2VsZWN0b3IgPSBuZXcgR3JpZFNlbGVjdG9yKCk7Ci0gICAgICAgIGdy aWRfY29sdW1ucyA9IGdyaWRTZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0aW9u cyhncmlkX2NvbHVtbnMpOworICAgICAgICBncmlkX2NvbHVtbnMgPSBzZWxm LmdyaWRfY29sdW1ucyA9IGdyaWRTZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0 aW9ucyhncmlkX2NvbHVtbnMpOwogCiAgICAgICAgIHZhciBncmlkX29wdGlv bnMgPSB7CiAgICAgICAgICAgZWRpdGFibGU6IHRydWUsCkBAIC02MTUsOCAr NTkzLDcgQEAgZGVmaW5lKFsKICAgICAgICAgICBlbmFibGVDZWxsTmF2aWdh dGlvbjogdHJ1ZSwKICAgICAgICAgICBlbmFibGVDb2x1bW5SZW9yZGVyOiBm YWxzZSwKICAgICAgICAgICBhc3luY0VkaXRvckxvYWRpbmc6IGZhbHNlLAot ICAgICAgICAgIGF1dG9FZGl0OiBmYWxzZSwKLSAgICAgICAgICBkYXRhSXRl bUNvbHVtblZhbHVlRXh0cmFjdG9yOiB0aGlzLmdldF9pdGVtX2NvbHVtbl92 YWx1ZQorICAgICAgICAgIGF1dG9FZGl0OiBmYWxzZQogICAgICAgICB9Owog CiAgICAgICAgIHZhciAkZGF0YV9ncmlkID0gc2VsZi4kZWwuZmluZCgnI2Rh dGFncmlkJyk7CkBAIC02MjQsMTcgKzYwMSwxNSBAQCBkZWZpbmUoWwogICAg ICAgICB2YXIgZ3JpZF9oZWlnaHQgPSAkKCQoJyNlZGl0b3ItcGFuZWwnKS5m aW5kKCcud2NGcmFtZScpWzFdKS5oZWlnaHQoKSAtIDM1OwogICAgICAgICAk ZGF0YV9ncmlkLmhlaWdodChncmlkX2hlaWdodCk7CiAKLSAgICAgICAgLy8g QWRkIG91ciBvd24gY3VzdG9tIHByaW1hcnkga2V5IHRvIGtlZXAgdHJhY2sg b2YgY2hhbmdlcwotICAgICAgICBfLmVhY2goY29sbGVjdGlvbiwgZnVuY3Rp b24ocm93KXsKLSAgICAgICAgICByb3dbJ19fdGVtcF9QSyddID0gU3FsRWRp dG9yVXRpbHMuZXBpY1JhbmRvbVN0cmluZygxNSk7Ci0gICAgICAgIH0pOwor ICAgICAgICB2YXIgZGF0YVZpZXcgPSBzZWxmLmRhdGFWaWV3ID0gbmV3IFNs aWNrLkRhdGEuRGF0YVZpZXcoKSwKKyAgICAgICAgICAgIGdyaWQgPSBzZWxm LmdyaWQgPSBuZXcgU2xpY2suR3JpZCgkZGF0YV9ncmlkLCBkYXRhVmlldywg Z3JpZF9jb2x1bW5zLCBncmlkX29wdGlvbnMpOwogCiAgICAgICAgIC8vIEFk ZC1vbiBmdW5jdGlvbiB3aGljaCBhbGxvdyB1cyB0byBpZGVudGlmeSB0aGUg ZmF1bHR5IHJvdyBhZnRlciBpbnNlcnQvdXBkYXRlCiAgICAgICAgIC8vIGFu ZCBhcHBseSBjc3MgYWNjb3JkaW5nbHkKLSAgICAgICAgY29sbGVjdGlvbi5n ZXRJdGVtTWV0YWRhdGEgPSBmdW5jdGlvbihpKSB7Ci0gICAgICAgICAgdmFy IHJlcyA9IHt9LAotICAgICAgICAgICAgY3NzQ2xhc3MgPSAnJywKLSAgICAg ICAgICAgIGRhdGFfc3RvcmUgPSBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZTsK KworICAgICAgICBkYXRhVmlldy5nZXRJdGVtTWV0YWRhdGEgPSBmdW5jdGlv bihpKSB7CisgICAgICAgICAgdmFyIHJlcyA9IHt9LCBjc3NDbGFzcyA9ICcn LAorICAgICAgICAgICAgICBkYXRhX3N0b3JlID0gc2VsZi5oYW5kbGVyLmRh dGFfc3RvcmU7CiAKICAgICAgICAgICBpZiAoXy5oYXMoc2VsZi5oYW5kbGVy LCAnZGF0YV9zdG9yZScpKSB7CiAgICAgICAgICAgICBpZiAoaSBpbiBkYXRh X3N0b3JlLmFkZGVkX2luZGV4ICYmCkBAIC02NTcsOSArNjMyLDggQEAgZGVm aW5lKFsKICAgICAgICAgICAgIGNzc0NsYXNzICs9ICcgZGlzYWJsZWRfcm93 JzsKICAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIHsnY3NzQ2xhc3Nl cyc6IGNzc0NsYXNzfTsKLSAgICAgICAgfQorICAgICAgICB9OwogCi0gICAg ICAgIHZhciBncmlkID0gbmV3IFNsaWNrLkdyaWQoJGRhdGFfZ3JpZCwgY29s bGVjdGlvbiwgZ3JpZF9jb2x1bW5zLCBncmlkX29wdGlvbnMpOwogICAgICAg ICBncmlkLnJlZ2lzdGVyUGx1Z2luKCBuZXcgU2xpY2suQXV0b1Rvb2x0aXBz KHsgZW5hYmxlRm9ySGVhZGVyQ2VsbHM6IGZhbHNlIH0pICk7CiAgICAgICAg IGdyaWQucmVnaXN0ZXJQbHVnaW4obmV3IEFjdGl2ZUNlbGxDYXB0dXJlKCkp OwogICAgICAgICBncmlkLnNldFNlbGVjdGlvbk1vZGVsKG5ldyBYQ2VsbFNl bGVjdGlvbk1vZGVsKCkpOwpAQCAtNjcxLDcgKzY0NSw4IEBAIGRlZmluZShb CiAgICAgICAgICAgY29sdW1uczogY29sdW1ucywKICAgICAgICAgICBncmlk OiBncmlkLAogICAgICAgICAgIHNlbGVjdGlvbjogZ3JpZC5nZXRTZWxlY3Rp b25Nb2RlbCgpLAotICAgICAgICAgIGVkaXRvcjogc2VsZgorICAgICAgICAg IGVkaXRvcjogc2VsZiwKKyAgICAgICAgICBjbGllbnRfcHJpbWFyeV9rZXk6 IHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5CiAgICAgICAgIH07CiAKICAgICAg ICAgc2VsZi5oYW5kbGVyLnNsaWNrZ3JpZCA9IGdyaWQ7CkBAIC02OTAsNiAr NjY1LDQyIEBAIGRlZmluZShbCiAgICAgICAgICAgICB9KTsKICAgICAgICAg fSk7CiAKKyAgICAgICAgZ3JpZFNlbGVjdG9yLm9uQmVmb3JlR3JpZFNlbGVj dEFsbC5zdWJzY3JpYmUoZnVuY3Rpb24oZSwgYXJncykgeworICAgICAgICAg IGlmIChzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cykgeworICAgICAgICAg ICAgLy8gdGhpcyB3aWxsIHByZXZlbnQgc2VsZWN0aW9uIHVuLXRpbGwgd2Ug bG9hZCBhbGwgZGF0YQorICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJv cGFnYXRpb24oKTsKKyAgICAgICAgICAgIHNlbGYuZmV0Y2hfbmV4dF9hbGwo ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIC8vIHNpbmNlIHdlJ3ZlIHN0 b3BwZWQgZXZlbnQgcHJvcGFnYXRpb24gd2UgbmVlZCB0bworICAgICAgICAg ICAgICAvLyB0cmlnZ2VyIG9uR3JpZFNlbGVjdEFsbCBtYW51YWxseSB3aXRo IG5ldyBldmVudCBkYXRhLgorICAgICAgICAgICAgICBncmlkU2VsZWN0b3Iu b25HcmlkU2VsZWN0QWxsLm5vdGlmeShhcmdzLCBuZXcgU2xpY2suRXZlbnRE YXRhKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAg ICB9KTsKKworICAgICAgICBncmlkU2VsZWN0b3Iub25CZWZvcmVHcmlkQ29s dW1uU2VsZWN0QWxsLnN1YnNjcmliZShmdW5jdGlvbihlLCBhcmdzKSB7Cisg ICAgICAgICAgaWYgKHNlbGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzKSB7Cisg ICAgICAgICAgICAvLyB0aGlzIHdpbGwgcHJldmVudCBzZWxlY3Rpb24gdW4t dGlsbCB3ZSBsb2FkIGFsbCBkYXRhCisgICAgICAgICAgICBlLnN0b3BJbW1l ZGlhdGVQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgc2VsZi5mZXRjaF9u ZXh0X2FsbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgLy8gc2luY2Ug d2UndmUgc3RvcHBlZCBldmVudCBwcm9wYWdhdGlvbiB3ZSBuZWVkIHRvCisg ICAgICAgICAgICAgIC8vIHRyaWdnZXIgb25HcmlkQ29sdW1uU2VsZWN0QWxs IG1hbnVhbGx5IHdpdGggbmV3IGV2ZW50IGRhdGEuCisgICAgICAgICAgICAg IGdyaWRTZWxlY3Rvci5vbkdyaWRDb2x1bW5TZWxlY3RBbGwubm90aWZ5KGFy Z3MsIG5ldyBTbGljay5FdmVudERhdGEoKSk7CisgICAgICAgICAgICB9KTsK KyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIGxpc3Rl biBmb3Igcm93IGNvdW50IGNoYW5nZS4KKyAgICAgICAgZGF0YVZpZXcub25S b3dDb3VudENoYW5nZWQuc3Vic2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7 CisgICAgICAgICAgZ3JpZC51cGRhdGVSb3dDb3VudCgpOworICAgICAgICAg IGdyaWQucmVuZGVyKCk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIGxp c3RlbiBmb3Igcm93cyBjaGFuZ2UuCisgICAgICAgIGRhdGFWaWV3Lm9uUm93 c0NoYW5nZWQuc3Vic2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7CisgICAg ICAgICAgZ3JpZC5pbnZhbGlkYXRlUm93cyhhcmdzLnJvd3MpOworICAgICAg ICAgIGdyaWQucmVuZGVyKCk7CisgICAgICAgIH0pOworCiAgICAgICAgIC8v IExpc3RlbmVyIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGJlZm9y ZSB1c2VyIHVwZGF0ZXMgZXhpc3RpbmcgY2VsbAogICAgICAgICAvLyBUaGlz IHdpbGwgYmUgdXNlZCB0byBjb2xsZWN0IHByaW1hcnkga2V5IGZvciB0aGF0 IHJvdwogICAgICAgICBncmlkLm9uQmVmb3JlRWRpdENlbGwuc3Vic2NyaWJl KGZ1bmN0aW9uIChlLCBhcmdzKSB7CkBAIC03MDIsOCArNzEzLDggQEAgZGVm aW5lKFsKICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg ICAgfQogCi0gICAgICAgICAgICBpZihzZWxmLmhhbmRsZXIuY2FuX2VkaXQg JiYgYmVmb3JlX2RhdGEgJiYgJ19fdGVtcF9QSycgaW4gYmVmb3JlX2RhdGEp IHsKLSAgICAgICAgICAgICAgdmFyIF9wayA9IGJlZm9yZV9kYXRhLl9fdGVt cF9QSywKKyAgICAgICAgICAgIGlmKHNlbGYuaGFuZGxlci5jYW5fZWRpdCAm JiBiZWZvcmVfZGF0YSAmJiBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSBpbiBi ZWZvcmVfZGF0YSkgeworICAgICAgICAgICAgICB2YXIgX3BrID0gYmVmb3Jl X2RhdGFbc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldLAogICAgICAgICAgICAg ICAgIF9rZXlzID0gc2VsZi5oYW5kbGVyLnByaW1hcnlfa2V5cywKICAgICAg ICAgICAgICAgICBjdXJyZW50X3BrID0ge30sIGVhY2hfcGtfa2V5ID0ge307 CiAKQEAgLTcxNSwyMiArNzI2LDM0IEBAIGRlZmluZShbCiAgICAgICAgICAg ICAgIC8vIEZldGNoIHByaW1hcnkga2V5cyBmb3IgdGhlIHJvdyBiZWZvcmUg dGhleSBnZXRzIG1vZGlmaWVkCiAgICAgICAgICAgICAgIHZhciBfY29sdW1u cyA9IHNlbGYuaGFuZGxlci5jb2x1bW5zOwogICAgICAgICAgICAgICBfLmVh Y2goX2tleXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsKLSAgICAgICAgICAg ICAgICBwb3MgPSBfLndoZXJlKF9jb2x1bW5zLCB7bmFtZToga2V5fSlbMF1b J3BvcyddCi0gICAgICAgICAgICAgICAgY3VycmVudF9wa1twb3NdID0gYmVm b3JlX2RhdGFbcG9zXTsKKyAgICAgICAgICAgICAgICBjdXJyZW50X3BrW2tl eV0gPSBiZWZvcmVfZGF0YVtrZXldOwogICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgICAgLy8gUGxhY2UgaXQgaW4gbWFpbiB2YXJpYWJsZSBmb3Ig bGF0ZXIgdXNlCiAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlci5wcmltYXJ5 X2tleXNfZGF0YVtfcGtdID0gY3VycmVudF9wawogICAgICAgICAgICAgfQog ICAgICAgICB9KTsKIAotICAgICAgICBncmlkLm9uS2V5RG93bi5zdWJzY3Jp YmUoaGFuZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50KTsKKyAgICAgICAg Z3JpZC5vbktleURvd24uc3Vic2NyaWJlKGZ1bmN0aW9uKGV2ZW50LCBhcmdz KSB7CisgICAgICAgICAgdmFyIEtFWV9BID0gNjU7CisgICAgICAgICAgdmFy IG1vZGlmaWVkS2V5ID0gZXZlbnQua2V5Q29kZTsKKyAgICAgICAgICB2YXIg aXNNb2RpZmllckRvd24gPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFL ZXk7CisgICAgICAgICAgLy8gSW50ZXJjZXB0IEN0cmwvQ21kICsgQSBrZXkg Ym9hcmQgZXZlbnQuCisgICAgICAgICAgLy8gQXMgd2UgbWlnaHQgd2FudCB0 byBsb2FkIGFsbCByb3dzIGJlZm9yZSBzZWxlY3RpbmcgYWxsLgorICAgICAg ICAgIGlmIChpc01vZGlmaWVyRG93biAmJiBtb2RpZmllZEtleSA9PSBLRVlf QSAmJiBzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cykgeworICAgICAgICAg ICAgc2VsZi5mZXRjaF9uZXh0X2FsbChmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgaGFuZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50KGV2ZW50LCBh cmdzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBoYW5kbGVRdWVyeU91dHB1dEtleWJvYXJkRXZlbnQoZXZl bnQsIGFyZ3MpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CiAKICAgICAg ICAgLy8gTGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQg d2hlbiB1c2VyIHVwZGF0ZXMgZXhpc3Rpbmcgcm93cwogICAgICAgICBncmlk Lm9uQ2VsbENoYW5nZS5zdWJzY3JpYmUoZnVuY3Rpb24gKGUsIGFyZ3MpIHsK ICAgICAgICAgICAvLyBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS51cGRhdGVk IHdpbGwgaG9sZHMgYWxsIHRoZSB1cGRhdGVkIGRhdGEKLSAgICAgICAgICB2 YXIgY2hhbmdlZF9jb2x1bW4gPSBhcmdzLmdyaWQuZ2V0Q29sdW1ucygpW2Fy Z3MuY2VsbF0ucG9zLCAvLyBDdXJyZW50IGZpZWxkIHBvcworICAgICAgICAg IHZhciBjaGFuZ2VkX2NvbHVtbiA9IGFyZ3MuZ3JpZC5nZXRDb2x1bW5zKClb YXJncy5jZWxsXS5maWVsZCwKICAgICAgICAgICAgIHVwZGF0ZWRfZGF0YSA9 IGFyZ3MuaXRlbVtjaGFuZ2VkX2NvbHVtbl0sICAgICAgICAgICAgICAgICAg IC8vIE5ldyB2YWx1ZSBmb3IgY3VycmVudCBmaWVsZAotICAgICAgICAgICAg X3BrID0gYXJncy5pdGVtLl9fdGVtcF9QSyB8fCBudWxsLCAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gVW5pcXVlIGtleSB0byBpZGVudGlmeSByb3cK KyAgICAgICAgICAgIF9wayA9IGFyZ3MuaXRlbVtzZWxmLmNsaWVudF9wcmlt YXJ5X2tleV0gfHwgbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFVuaXF1ZSBrZXkgdG8gaWRlbnRpZnkgcm93CiAgICAgICAgICAgICBjb2x1 bW5fZGF0YSA9IHt9LAogICAgICAgICAgICAgX3R5cGU7CiAKQEAgLTc0MCwx MSArNzYzLDE2IEBAIGRlZmluZShbCiAgICAgICAgICAgLy8gc28gdGhhdCBj ZWxsIGVkaXQgaXMgZW5hYmxlZCBmb3IgdGhhdCByb3cuCiAgICAgICAgICAg dmFyIGdyaWQgPSBhcmdzLmdyaWQsCiAgICAgICAgICAgICByb3dfZGF0YSA9 IGdyaWQuZ2V0RGF0YUl0ZW0oYXJncy5yb3cpLAotICAgICAgICAgICAgcF9r ZXlzX2xpc3QgPSBfLnBpY2soCi0gICAgICAgICAgICAgIHJvd19kYXRhLCBz ZWxmLmhhbmRsZXIuZ2V0X3Jvd19wcmltYXJ5X2tleSgpCi0gICAgICAgICAg ICApLAotICAgICAgICAgICAgaXNfcHJpbWFyeV9rZXkgPSBPYmplY3Qua2V5 cyhwX2tleXNfbGlzdCkubGVuZ3RoID8KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcF9rZXlzX2xpc3RbMF0gOiB1bmRlZmluZWQ7CisgICAgICAg ICAgICBpc19wcmltYXJ5X2tleSA9IF8uYWxsKAorICAgICAgICAgICAgICAg IF8udmFsdWVzKAorICAgICAgICAgICAgICAgICAgXy5waWNrKAorICAgICAg ICAgICAgICAgICAgICAgIHJvd19kYXRhLCBzZWxmLnByaW1hcnlfa2V5cwor ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgICAgZnVuY3Rpb24odmFsKSB7CisgICAgICAgICAgICAgICAg ICByZXR1cm4gdmFsICE9IHVuZGVmaW5lZAorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgKTsKIAogICAgICAgICAgIC8vIHRlbXBfbmV3X3Jv d3MgaXMgYXZhaWxhYmxlIG9ubHkgZm9yIHZpZXcgZGF0YS4KICAgICAgICAg ICBpZiAoaXNfcHJpbWFyeV9rZXkgJiYgc2VsZi5oYW5kbGVyLnRlbXBfbmV3 X3Jvd3MpIHsKQEAgLTc2NCw3ICs3OTIsNyBAQCBkZWZpbmUoWwogICAgICAg ICAgICAgICAgICAgY29sdW1uX2RhdGEpOwogICAgICAgICAgICAgICAvL0Zp bmQgdHlwZSBmb3IgY3VycmVudCBjb2x1bW4KICAgICAgICAgICAgICAgc2Vs Zi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX3BrXVsnZXJyJ10gPSBmYWxz ZQotICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5hZGRl ZFtfcGtdWydkYXRhX3R5cGUnXVtjaGFuZ2VkX2NvbHVtbl0gPSBfLndoZXJl KHRoaXMuY29sdW1ucywge3BvczogY2hhbmdlZF9jb2x1bW59KVswXVsndHlw ZSddOworICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5h ZGRlZFtfcGtdWydkYXRhX3R5cGUnXVtjaGFuZ2VkX2NvbHVtbl0gPSBfLndo ZXJlKHRoaXMuY29sdW1ucywge25hbWU6IGNoYW5nZWRfY29sdW1ufSlbMF1b J3R5cGUnXTsKICAgICAgICAgICAgIC8vIENoZWNrIGlmIGl0IGlzIHVwZGF0 ZWQgZGF0YSBmcm9tIGV4aXN0aW5nIHJvd3M/CiAgICAgICAgICAgICB9IGVs c2UgaWYoX3BrIGluIHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlLnVwZGF0ZWQp IHsKICAgICAgICAgICAgICAgXy5leHRlbmQoCkBAIC03NzQsNyArODAyLDcg QEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFf c3RvcmUudXBkYXRlZFtfcGtdWydlcnInXSA9IGZhbHNlCiAKICAgICAgICAg ICAgICAvL0ZpbmQgdHlwZSBmb3IgY3VycmVudCBjb2x1bW4KLSAgICAgICAg ICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS51cGRhdGVkW19wa11bJ2Rh dGFfdHlwZSddW2NoYW5nZWRfY29sdW1uXSA9IF8ud2hlcmUodGhpcy5jb2x1 bW5zLCB7cG9zOiBjaGFuZ2VkX2NvbHVtbn0pWzBdWyd0eXBlJ107CisgICAg ICAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUudXBkYXRlZFtfcGtd WydkYXRhX3R5cGUnXVtjaGFuZ2VkX2NvbHVtbl0gPSBfLndoZXJlKHRoaXMu Y29sdW1ucywge25hbWU6IGNoYW5nZWRfY29sdW1ufSlbMF1bJ3R5cGUnXTsK ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgIC8vIEZpcnN0 IHVwZGF0ZWQgZGF0YSBmb3IgdGhpcyBwcmltYXJ5IGtleQogICAgICAgICAg ICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS51cGRhdGVkW19wa10gPSB7 CkBAIC03ODQsNyArODEyLDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAg c2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUudXBkYXRlZF9pbmRleFthcmdzLnJv d10gPSBfcGs7CiAgICAgICAgICAgICAgIC8vIEZpbmQgJiBhZGQgY29sdW1u IGRhdGEgdHlwZSBmb3IgY3VycmVudCBjaGFuZ2VkIGNvbHVtbgogICAgICAg ICAgICAgICB2YXIgdGVtcCA9IHt9OwotICAgICAgICAgICAgICB0ZW1wW2No YW5nZWRfY29sdW1uXSA9IF8ud2hlcmUodGhpcy5jb2x1bW5zLCB7cG9zOiBj aGFuZ2VkX2NvbHVtbn0pWzBdWyd0eXBlJ107CisgICAgICAgICAgICAgIHRl bXBbY2hhbmdlZF9jb2x1bW5dID0gXy53aGVyZSh0aGlzLmNvbHVtbnMsIHtu YW1lOiBjaGFuZ2VkX2NvbHVtbn0pWzBdWyd0eXBlJ107CiAgICAgICAgICAg ICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlLnVwZGF0ZWRbX3BrXVsnZGF0 YV90eXBlJ10gPSB0ZW1wOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0K QEAgLTgwMywxMSArODMxLDEwIEBAIGRlZmluZShbCiAgICAgICAgIC8vIExp c3RlbmVyIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdXNl ciBhZGRzIG5ldyByb3dzCiAgICAgICAgIGdyaWQub25BZGROZXdSb3cuc3Vi c2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7CiAgICAgICAgICAgLy8gc2Vs Zi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWQgd2lsbCBob2xkcyBhbGwgdGhl IG5ld2x5IGFkZGVkIHJvd3MvZGF0YQotICAgICAgICAgIHZhciBfa2V5ID0g U3FsRWRpdG9yVXRpbHMuZXBpY1JhbmRvbVN0cmluZygxMCksCi0gICAgICAg ICAgICBjb2x1bW4gPSBhcmdzLmNvbHVtbiwKLSAgICAgICAgICAgIGl0ZW0g PSBhcmdzLml0ZW0sCi0gICAgICAgICAgICBkYXRhX2xlbmd0aCA9IHRoaXMu Z3JpZC5nZXREYXRhTGVuZ3RoKCksCi0gICAgICAgICAgICBuZXdfY29sbGVj dGlvbiA9IGFyZ3MuZ3JpZC5nZXREYXRhKCk7CisgICAgICAgICAgdmFyIGNv bHVtbiA9IGFyZ3MuY29sdW1uLAorICAgICAgICAgICAgaXRlbSA9IGFyZ3Mu aXRlbSwgZGF0YV9sZW5ndGggPSB0aGlzLmdyaWQuZ2V0RGF0YUxlbmd0aCgp LAorICAgICAgICAgICAgX2tleSA9IChzZWxmLmNsaWVudF9wcmltYXJ5X2tl eV9jb3VudGVyKyspLnRvU3RyaW5nKCksCisgICAgICAgICAgICBkYXRhVmll dyA9IHRoaXMuZ3JpZC5nZXREYXRhKCk7CiAKICAgICAgICAgICAvLyBBZGQg bmV3IHJvdyBpbiBsaXN0IHRvIGtlZXAgdHJhY2sgb2YgaXQKICAgICAgICAg ICBpZiAoXy5pc1VuZGVmaW5lZChpdGVtWzBdKSkgewpAQCAtODE2LDE3ICs4 NDMsMTYgQEAgZGVmaW5lKFsKIAogICAgICAgICAgIC8vIElmIGNvcGllZCBp dGVtIGhhcyBhbHJlYWR5IHByaW1hcnkga2V5LCB1c2UgaXQuCiAgICAgICAg ICAgaWYoaXRlbSkgewotICAgICAgICAgICAgaXRlbS5fX3RlbXBfUEsgPSBf a2V5OworICAgICAgICAgICAgaXRlbVtzZWxmLmNsaWVudF9wcmltYXJ5X2tl eV0gPSBfa2V5OwogICAgICAgICAgIH0KLSAgICAgICAgICBuZXdfY29sbGVj dGlvbi5wdXNoKGl0ZW0pOwogCisgICAgICAgICAgZGF0YVZpZXcuYWRkSXRl bShpdGVtKTsKICAgICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5h ZGRlZFtfa2V5XSA9IHsnZXJyJzogZmFsc2UsICdkYXRhJzogaXRlbX07CiAg ICAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRfaW5kZXhb ZGF0YV9sZW5ndGhdID0gX2tleTsKICAgICAgICAgICAvLyBGZXRjaCBkYXRh IHR5cGUgJiBhZGQgaXQgZm9yIHRoZSBjb2x1bW4KICAgICAgICAgICB2YXIg dGVtcCA9IHt9OwotICAgICAgICAgIHRlbXBbY29sdW1uLnBvc10gPSBfLndo ZXJlKHRoaXMuY29sdW1ucywge3BvczogY29sdW1uLnBvc30pWzBdWyd0eXBl J107CisgICAgICAgICAgdGVtcFtjb2x1bW4ubmFtZV0gPSBfLndoZXJlKHRo aXMuY29sdW1ucywge3BvczogY29sdW1uLnBvc30pWzBdWyd0eXBlJ107CiAg ICAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX2tleV1b J2RhdGFfdHlwZSddID0gIHRlbXA7Ci0gICAgICAgICAgZ3JpZC5pbnZhbGlk YXRlUm93cyhbbmV3X2NvbGxlY3Rpb24ubGVuZ3RoIC0gMV0pOwogICAgICAg ICAgIGdyaWQudXBkYXRlUm93Q291bnQoKTsKICAgICAgICAgICBncmlkLnJl bmRlcigpOwogCkBAIC04MzksNiArODY1LDE2IEBAIGRlZmluZShbCiAgICAg ICAgICAgJCgiI2J0bi1zYXZlIikucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7 CiAgICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogCisgICAgICAgIC8v IExpc3RlbiBncmlkIHZpZXdwb3J0Q2hhbmdlZCBldmVudCB0byBsb2FkIG5l eHQgY2h1bmsgb2YgZGF0YS4KKyAgICAgICAgZ3JpZC5vblZpZXdwb3J0Q2hh bmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24oZSwgYXJncykgeworICAgICAgICAg IHZhciByZW5kZXJlZF9yYW5nZSA9IGFyZ3MuZ3JpZC5nZXRSZW5kZXJlZFJh bmdlKCksCisgICAgICAgICAgICAgIGRhdGFfbGVuID0gYXJncy5ncmlkLmdl dERhdGFMZW5ndGgoKTsKKyAgICAgICAgICAvLyBzdGFydCBmZXRjaGluZyBu ZXh0IGJhdGNoIG9mIHJlY29yZHMgYmVmb3JlIHJlYWNoaW5nIHRvIGJvdHRv bS4KKyAgICAgICAgICBpZiAoc2VsZi5oYW5kbGVyLmhhc19tb3JlX3Jvd3Mg JiYgIXNlbGYuaGFuZGxlci5mZXRjaGluZ19yb3dzICYmIHJlbmRlcmVkX3Jh bmdlLmJvdHRvbSA+IGRhdGFfbGVuIC0gMTAwKSB7CisgICAgICAgICAgICAv LyBmZXRjaCBhc3luY2hyb25vdXMKKyAgICAgICAgICAgIHNldFRpbWVvdXQo c2VsZi5mZXRjaF9uZXh0LmJpbmQoc2VsZikpOworICAgICAgICAgIH0KKyAg ICAgICAgfSkKICAgICAgICAgLy8gUmVzaXplIFNsaWNrR3JpZCB3aGVuIHdp bmRvdyByZXNpemUKICAgICAgICAgJCggd2luZG93ICkucmVzaXplKCBmdW5j dGlvbigpIHsKICAgICAgICAgICAvLyBSZXNpemUgZ3JpZCBvbmx5IHdoZW4g J0RhdGEgT3V0cHV0JyBwYW5lbCBpcyB2aXNpYmxlLgpAQCAtODYxLDYgKzg5 Nyw4NCBAQCBkZWZpbmUoWwogICAgICAgICAgIGlmKHNlbGYuZGF0YV9vdXRw dXRfcGFuZWwuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICBzZWxmLmdyaWRf cmVzaXplKGdyaWQpOwogICAgICAgICB9KTsKKworICAgICAgICBmb3IgKHZh ciBpID0gMDsgaSA8IGNvbGxlY3Rpb24ubGVuZ3RoOyBpKyspIHsKKyAgICAg ICAgICAvLyBDb252ZXJ0IHRvIGRpY3QgZnJvbSAyZGFycmF5CisgICAgICAg ICAgdmFyIGl0ZW0gPSB7fTsKKyAgICAgICAgICBmb3IgKHZhciBqID0gMTsg aiA8IGdyaWRfY29sdW1ucy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAg aXRlbVtncmlkX2NvbHVtbnNbal1bJ2ZpZWxkJ11dID0gY29sbGVjdGlvbltp XVtncmlkX2NvbHVtbnNbal1bJ3BvcyddXQorICAgICAgICAgIH0KKworICAg ICAgICAgIGl0ZW1bc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldID0gKHNlbGYu Y2xpZW50X3ByaW1hcnlfa2V5X2NvdW50ZXIrKykudG9TdHJpbmcoKTsKKyAg ICAgICAgICBjb2xsZWN0aW9uW2ldID0gaXRlbTsKKyAgICAgICAgfQorICAg ICAgICBkYXRhVmlldy5zZXRJdGVtcyhjb2xsZWN0aW9uLCBzZWxmLmNsaWVu dF9wcmltYXJ5X2tleSk7CisgICAgICB9LAorICAgICAgZmV0Y2hfbmV4dF9h bGwoY2IpIHsKKyAgICAgICAgdGhpcy5mZXRjaF9uZXh0KHRydWUsIGNiKTsK KyAgICAgIH0sCisgICAgICBmZXRjaF9uZXh0OiBmdW5jdGlvbihmZXRjaF9h bGwsIGNiKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAg ICAvLyBUaGlzIHdpbGwgcHJldmVudCBmZXRjaCBvcGVyYXRpb24gaWYgcHJl dmlvdXMgZmV0Y2ggb3BlcmF0aW9uIGlzCisgICAgICAgIC8vIGFscmVhZHkg aW4gcHJvZ3Jlc3MuCisgICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IHRy dWU7CisKKyAgICAgICAgJCgiI2J0bi1mbGFzaCIpLnByb3AoJ2Rpc2FibGVk JywgdHJ1ZSk7CisKKyAgICAgICAgaWYgKGZldGNoX2FsbCkgeworICAgICAg ICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAorICAgICAgICAgICAgJ3BnYWRt aW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKKyAgICAgICAgICAg IGdldHRleHQoJ0ZldGNoaW5nIGFsbCByZWNvcmRzLi4uJykKKyAgICAgICAg ICApOworICAgICAgICB9CisKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAg ICB1cmw6ICJ7eyB1cmxfZm9yKCdzcWxlZGl0b3IuaW5kZXgnKSB9fSIgKyAi ZmV0Y2gvIiArIHNlbGYudHJhbnNJZCArIChmZXRjaF9hbGwgPyAiLzEiOiAi IiksCisgICAgICAgICAgbWV0aG9kOiAnR0VUJywKKyAgICAgICAgICBzdWNj ZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgIHNlbGYuaGFuZGxl ci5oYXNfbW9yZV9yb3dzID0gcmVzLmRhdGEuaGFzX21vcmVfcm93czsKKyAg ICAgICAgICAgICQoIiNidG4tZmxhc2giKS5wcm9wKCdkaXNhYmxlZCcsIGZh bHNlKTsKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKCdwZ2Fk bWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAgICAg ICAgc2VsZi51cGRhdGVfZ3JpZF9kYXRhKHJlcy5kYXRhLnJlc3VsdCk7Cisg ICAgICAgICAgICBpZiAodHlwZW9mIGNiID09ICJmdW5jdGlvbiIpIHsKKyAg ICAgICAgICAgICAgY2IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 LAorICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAg ICAkKCIjYnRuLWZsYXNoIikucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Cisg ICAgICAgICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigncGdhZG1pbi1zcWxl ZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgIHNlbGYu aGFuZGxlci5oYXNfbW9yZV9yb3dzID0gZmFsc2U7CisgICAgICAgICAgICBz ZWxmLmhhbmRsZXIuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOworICAgICAgICAg ICAgaWYgKHR5cGVvZiBjYiA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAg ICAgIGNiKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZS5y ZWFkeVN0YXRlID09IDApIHsKKyAgICAgICAgICAgICAgc2VsZi51cGRhdGVf bXNnX2hpc3RvcnkoZmFsc2UsCisgICAgICAgICAgICAgICAgZ2V0dGV4dCgn Tm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9u IHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCisgICAgICAgICAg ICAgICk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfSwKKworICAgICAg dXBkYXRlX2dyaWRfZGF0YTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICB0 aGlzLmRhdGFWaWV3LmJlZ2luVXBkYXRlKCk7CisKKyAgICAgICAgZm9yICh2 YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg Ly8gQ29udmVydCAyZGFycmF5IHRvIGRpY3QuCisgICAgICAgICAgdmFyIGl0 ZW0gPSB7fTsKKyAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHRoaXMu Z3JpZF9jb2x1bW5zLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBpdGVt W3RoaXMuZ3JpZF9jb2x1bW5zW2pdWydmaWVsZCddXSA9IGRhdGFbaV1bdGhp cy5ncmlkX2NvbHVtbnNbal1bJ3BvcyddXQorICAgICAgICAgIH0KKworICAg ICAgICAgIGl0ZW1bdGhpcy5jbGllbnRfcHJpbWFyeV9rZXldID0gKHRoaXMu Y2xpZW50X3ByaW1hcnlfa2V5X2NvdW50ZXIrKykudG9TdHJpbmcoKTsKKyAg ICAgICAgICB0aGlzLmRhdGFWaWV3LmFkZEl0ZW0oaXRlbSk7CisgICAgICAg IH0KKworICAgICAgICB0aGlzLmRhdGFWaWV3LmVuZFVwZGF0ZSgpOworICAg ICAgICB0aGlzLmhhbmRsZXIuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwogICAg ICAgfSwKIAogICAgICAgLyogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJs ZSB0byByZW5kZXIgb3V0cHV0IGdyaWQgKi8KQEAgLTE0MDIsNiArMTUxNiw4 IEBAIGRlZmluZShbCiAgICAgICAgICAgc2VsZi5leHBsYWluX2J1ZmZlcnMg PSBmYWxzZTsKICAgICAgICAgICBzZWxmLmV4cGxhaW5fdGltaW5nID0gZmFs c2U7CiAgICAgICAgICAgc2VsZi5pc19uZXdfYnJvd3Nlcl90YWIgPSBpc19u ZXdfYnJvd3Nlcl90YWI7CisgICAgICAgICAgc2VsZi5oYXNfbW9yZV9yb3dz ID0gZmFsc2U7CisgICAgICAgICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFs c2U7CiAKICAgICAgICAgICAvLyBXZSBkbyBub3QgYWxsb3cgdG8gY2FsbCB0 aGUgc3RhcnQgbXVsdGlwbGUgdGltZXMuCiAgICAgICAgICAgaWYgKHNlbGYu Z3JpZFZpZXcpCkBAIC0xNTA5LDYgKzE2MjUsOCBAQCBkZWZpbmUoWwogICAg ICAgICAgIHNlbGYucm93c190b19kaXNhYmxlID0gbmV3IEFycmF5KCk7CiAg ICAgICAgICAgLy8gVGVtcG9yYXJpbHkgaG9sZCBuZXcgcm93cyBhZGRlZAog ICAgICAgICAgIHNlbGYudGVtcF9uZXdfcm93cyA9IG5ldyBBcnJheSgpOwor ICAgICAgICAgIHNlbGYuaGFzX21vcmVfcm93cyA9IGZhbHNlOworICAgICAg ICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwogCiAgICAgICAgICAg c2VsZi50cmlnZ2VyKAogICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9y OmxvYWRpbmctaWNvbjpzaG93JywKQEAgLTE1ODcsNDUgKzE3MDUsMTQgQEAg ZGVmaW5lKFsKICAgICAgICAgICB9KTsKICAgICAgICAgfSwKIAotICAgICAg ICAvLyBUaGlzIGZ1bmN0aW9uIG1ha2VzIHRoZSBhamF4IGNhbGwgdG8gZmV0 Y2ggY29sdW1ucyBmb3IgbGFzdCBhc3luYyBxdWVyeSwKLSAgICAgICAgZ2V0 X2NvbHVtbnM6IGZ1bmN0aW9uKHBvbGxfcmVzdWx0KSB7Ci0gICAgICAgICAg dmFyIHNlbGYgPSB0aGlzOwotICAgICAgICAgIC8vIENoZWNrIHRoZSBmbGFn IGFuZCBkZWNpZGUgaWYgd2UgbmVlZCB0byBmZXRjaCBjb2x1bW5zIGZyb20g c2VydmVyCi0gICAgICAgICAgLy8gb3IgdXNlIHRoZSBjb2x1bW5zIGRhdGEg c3RvcmVkIGxvY2FsbHkgZnJvbSBwcmV2aW91cyBjYWxsPwotICAgICAgICAg IGlmIChzZWxmLkZFVENIX0NPTFVNTlNfRlJPTV9TRVJWRVIpIHsKLSAgICAg ICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgIHVybDogInt7IHVybF9m b3IoJ3NxbGVkaXRvci5pbmRleCcpIH19IiArICJjb2x1bW5zLyIgKyBzZWxm LnRyYW5zSWQsCi0gICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsCi0gICAg ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAgICAg ICAgICAgIHBvbGxfcmVzdWx0LmNvbGluZm8gPSByZXMuZGF0YS5jb2x1bW5z OwotICAgICAgICAgICAgICAgIHBvbGxfcmVzdWx0LnByaW1hcnlfa2V5cyA9 IHJlcy5kYXRhLnByaW1hcnlfa2V5czsKLSAgICAgICAgICAgICAgICBzZWxm LmNhbGxfcmVuZGVyX2FmdGVyX3BvbGwocG9sbF9yZXN1bHQpOwotICAgICAg ICAgICAgICAgIC8vIFNldCBhIGZsYWcgdG8gZ2V0IGNvbHVtbnMgdG8gZmFs c2UgJiBzZXQgdGhlIHZhbHVlIGZvciBmdXR1cmUgdXNlCi0gICAgICAgICAg ICAgICAgc2VsZi5GRVRDSF9DT0xVTU5TX0ZST01fU0VSVkVSID0gZmFsc2U7 Ci0gICAgICAgICAgICAgICAgc2VsZi5DT0xVTU5TX0RBVEEgPSByZXM7Ci0g ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlv bihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1zZyA9IGUucmVzcG9uc2VU ZXh0OwotICAgICAgICAgICAgICAgIGlmIChlLnJlc3BvbnNlSlNPTiAhPSB1 bmRlZmluZWQgJiYgZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0gdW5kZWZp bmVkKQotICAgICAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25zZUpTT04u ZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5lcnJvciht c2csIDUpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gVXNlIHRoZSBwcmV2 aW91c2x5IHNhdmVkIGNvbHVtbnMgZGF0YQotICAgICAgICAgICAgcG9sbF9y ZXN1bHQuY29saW5mbyA9IHNlbGYuQ09MVU1OU19EQVRBLmRhdGEuY29sdW1u czsKLSAgICAgICAgICAgIHBvbGxfcmVzdWx0LnByaW1hcnlfa2V5cyA9IHNl bGYuQ09MVU1OU19EQVRBLmRhdGEucHJpbWFyeV9rZXlzOwotICAgICAgICAg ICAgc2VsZi5jYWxsX3JlbmRlcl9hZnRlcl9wb2xsKHBvbGxfcmVzdWx0KTsK LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KICAgICAgICAgLy8gVGhpcyBp cyBhIHdyYXBwZXIgdG8gY2FsbCBfcmVuZGVyIGZ1bmN0aW9uCiAgICAgICAg IC8vIFdlIG5lZWQgdGhpcyBiZWNhdXNlIHdlIGhhdmUgc2VwYXJhdGVkIGNv bHVtbnMgcm91dGUgJiByZXN1bHQgcm91dGUKICAgICAgICAgLy8gV2UgbmVl ZCB0byBjb21iaW5lIGJvdGggcmVzdWx0IGhlcmUgaW4gd3JhcHBlciBiZWZv cmUgcmVuZGVyaW5nIGdyaWQKICAgICAgICAgY2FsbF9yZW5kZXJfYWZ0ZXJf cG9sbDogZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgICAgdmFyIHNlbGYgPSB0 aGlzOwogICAgICAgICAgIHNlbGYucXVlcnlfZW5kX3RpbWUgPSBuZXcgRGF0 ZSgpOwotICAgICAgICAgIHNlbGYucm93c19hZmZlY3RlZCA9IHJlcy5yb3dz X2FmZmVjdGVkOworICAgICAgICAgIHNlbGYucm93c19hZmZlY3RlZCA9IHJl cy5yb3dzX2FmZmVjdGVkLAorICAgICAgICAgIHNlbGYuaGFzX21vcmVfcm93 cyA9IHJlcy5oYXNfbW9yZV9yb3dzOwogCiAgICAgICAgICAgLyogSWYgbm8g Y29sdW1uIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpdCBtZWFucyBxdWVy eQogICAgICAgICAgICAgIHJ1bnMgc3VjY2Vzc2Z1bGx5IHdpdGggbm8gcmVz dWx0IHRvIGRpc3BsYXkuIEluIHRoaXMKQEAgLTE2NzQsNyArMTc2MSw4IEBA IGRlZmluZShbCiAgICAgICAgICAgICAgICAgICAgICAgJ3BnYWRtaW4tc3Fs ZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywKICAgICAgICAgICAgICAg ICAgICAgICBnZXR0ZXh0KCJMb2FkaW5nIGRhdGEgZnJvbSB0aGUgZGF0YWJh c2Ugc2VydmVyIGFuZCByZW5kZXJpbmcuLi4iKQogICAgICAgICAgICAgICAg ICAgICApOwotICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb2x1bW5z KHJlcy5kYXRhKTsKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmNhbGxf cmVuZGVyX2FmdGVyX3BvbGwocmVzLmRhdGEpOwogICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzLmRhdGEuc3Rh dHVzID09PSAnQnVzeScpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYg c3RhdHVzIGlzIEJ1c3kgdGhlbiBwb2xsIHRoZSByZXN1bHQgYnkgcmVjdXJz aXZlIGNhbGwgdG8gdGhlIHBvbGwgZnVuY3Rpb24KQEAgLTE3MzQsNiArMTgy Miw3IEBAIGRlZmluZShbCiAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwog ICAgICAgICAgIHNlbGYuY29saW5mbyA9IGRhdGEuY29sX2luZm87CiAgICAg ICAgICAgc2VsZi5wcmltYXJ5X2tleXMgPSBkYXRhLnByaW1hcnlfa2V5czsK KyAgICAgICAgICBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSA9IGRhdGEuY2xp ZW50X3ByaW1hcnlfa2V5OwogICAgICAgICAgIHNlbGYuY2VsbF9zZWxlY3Rl ZCA9IGZhbHNlOwogICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfbW9kZWwgPSBu dWxsOwogICAgICAgICAgIHNlbGYuY2hhbmdlZE1vZGVscyA9IFtdOwpAQCAt MTc4Niw3ICsxODc1LDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgc2Vs Zi50b3RhbF90aW1lID0gc2VsZi5nZXRfcXVlcnlfcnVuX3RpbWUoc2VsZi5x dWVyeV9zdGFydF90aW1lLCBzZWxmLnF1ZXJ5X2VuZF90aW1lKTsKICAgICAg ICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkodHJ1ZSwgIiIsIGZh bHNlKTsKICAgICAgICAgICAgICAgdmFyIG1zZzEgPSBTKGdldHRleHQoIlRv dGFsIHF1ZXJ5IHJ1bnRpbWU6ICVzLiIpKS5zcHJpbnRmKHNlbGYudG90YWxf dGltZSkudmFsdWUoKTsKLSAgICAgICAgICAgICAgdmFyIG1zZzIgPSBTKGdl dHRleHQoIiVzIHJvd3MgcmV0cmlldmVkLiIpKS5zcHJpbnRmKHNlbGYucm93 c19hZmZlY3RlZCkudmFsdWUoKTsKKyAgICAgICAgICAgICAgdmFyIG1zZzIg PSBTKGdldHRleHQoIiVzIHJvd3MgYWZmZWN0ZWQuIikpLnNwcmludGYoc2Vs Zi5yb3dzX2FmZmVjdGVkKS52YWx1ZSgpOwogCiAgICAgICAgICAgICAgIC8v IERpc3BsYXkgdGhlIG5vdGlmaWVyIGlmIHRoZSB0aW1lb3V0IGlzIHNldCB0 byA+PSAwCiAgICAgICAgICAgICAgIGlmIChzZWxmLmluZm9fbm90aWZpZXJf dGltZW91dCA+PSAwKSB7CkBAIC0xODIyLDcgKzE5MTEsOCBAQCBkZWZpbmUo WwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCiAgICAgICAgICAgICAg ICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5n cmlkVmlldy5yZW5kZXJfZ3JpZCgKLSAgICAgICAgICAgICAgICAgICAgICBl eHBsYWluX2RhdGFfYXJyYXksIHNlbGYuY29sdW1ucywgc2VsZi5jYW5fZWRp dAorICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZGF0YV9hcnJheSwg c2VsZi5jb2x1bW5zLCBzZWxmLmNhbl9lZGl0LAorICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5CiAgICAgICAgICAgICAg ICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSAt IHRoZSAnRXhwbGFpbicgcGFuZWwgaXMgdmlzaWJsZSwgYmVmb3JlIC0gd2UK ICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgcmVuZGVyaW5nIHRoZSBn cmlkLgpAQCAtMTgzOCw3ICsxOTI4LDggQEAgZGVmaW5lKFsKICAgICAgICAg ICAgICAgICBzZWxmLmdyaWRWaWV3LmRhdGFfb3V0cHV0X3BhbmVsLmZvY3Vz KCk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKICAgICAgICAgICAg ICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBzZWxm LmdyaWRWaWV3LnJlbmRlcl9ncmlkKGRhdGEucmVzdWx0LCBzZWxmLmNvbHVt bnMsIHNlbGYuY2FuX2VkaXQpOworICAgICAgICAgICAgICAgICAgICBzZWxm LmdyaWRWaWV3LnJlbmRlcl9ncmlkKGRhdGEucmVzdWx0LCBzZWxmLmNvbHVt bnMsCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FuX2VkaXQsIHNlbGYu Y2xpZW50X3ByaW1hcnlfa2V5KTsKICAgICAgICAgICAgICAgICAgIH0sIDEw CiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgfQpAQCAtMTg0 NiwxMzYgKzE5MzcsMTE0IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgIC8v IEhpZGUgdGhlIGxvYWRpbmcgaWNvbgogICAgICAgICAgICAgICBzZWxmLnRy aWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7 CiAgICAgICAgICAgICAgICQoIiNidG4tZmxhc2giKS5wcm9wKCdkaXNhYmxl ZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIH0uYmluZChzZWxmKSwKLSAgICAg ICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICB0aGlzLnRyaWdn ZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0g ICAgICAgICAgICAgICQoIiNidG4tZmxhc2giKS5wcm9wKCdkaXNhYmxlZCcs IGZhbHNlKTsKICAgICAgICAgICAgIH0uYmluZChzZWxmKQogICAgICAgICAg ICk7CiAgICAgICAgIH0sCiAKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBj cmVhdGVzIHRoZSBjb2x1bW5zIGFzIHJlcXVpcmVkIGJ5IHRoZSBiYWNrZ3Jp ZAotICAgICAgICBfZmV0Y2hfY29sdW1uX21ldGFkYXRhOiBmdW5jdGlvbihk YXRhLCBjYiwgX2ZhaWwpIHsKKyAgICAgICAgX2ZldGNoX2NvbHVtbl9tZXRh ZGF0YTogZnVuY3Rpb24oZGF0YSwgY2IpIHsKICAgICAgICAgICB2YXIgY29s aW5mbyA9IGRhdGEuY29saW5mbywKICAgICAgICAgICAgICAgcHJpbWFyeV9r ZXlzID0gZGF0YS5wcmltYXJ5X2tleXMsCiAgICAgICAgICAgICAgIHJlc3Vs dCA9IGRhdGEucmVzdWx0LAogICAgICAgICAgICAgICBjb2x1bW5zID0gW10s CiAgICAgICAgICAgICAgIHNlbGYgPSB0aGlzOworICAgICAgICAgIC8vIFN0 b3JlIHBnX3R5cGVzIGluIGFuIGFycmF5CisgICAgICAgICAgdmFyIHBnX3R5 cGVzID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgXy5lYWNoKGRhdGEudHlw ZXMsIGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIHBnX3R5cGVzW3Iub2lk XSA9IFtyLnR5cG5hbWVdOworICAgICAgICAgIH0pOwogCi0gICAgICAgICAg c2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9y OmxvYWRpbmctaWNvbjptZXNzYWdlJywKLSAgICAgICAgICAgIGdldHRleHQo IlJldHJpZXZpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbHVtbnMgcmV0 dXJuZWQuLi4iKQotICAgICAgICAgICk7Ci0KLSAgICAgICAgICAvLyBNYWtl IGFqYXggY2FsbCB0byBmZXRjaCB0aGUgcGcgdHlwZXMgdG8gbWFwIG51bWVy aWMgZGF0YSB0eXBlCi0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAg IHVybDogInt7IHVybF9mb3IoJ3NxbGVkaXRvci5pbmRleCcpIH19IiArICJm ZXRjaC90eXBlcy8iICsgc2VsZi50cmFuc0lkLAotICAgICAgICAgICAgbWV0 aG9kOiAnR0VUJywKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJl cykgewotICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7Ci0g ICAgICAgICAgICAgICAgLy8gU3RvcmUgcGdfdHlwZXMgaW4gYW4gYXJyYXkK LSAgICAgICAgICAgICAgICB2YXIgcGdfdHlwZXMgPSBuZXcgQXJyYXkoKTsK LSAgICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucmVzdWx0LnJvd3Ms IGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgICAgICAgIHBnX3R5cGVzW3Iu b2lkXSA9IFtyLnR5cG5hbWVdOwotICAgICAgICAgICAgICAgIH0pOwotCi0g ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGNvbHVtbnMgcmVxdWlyZWQgYnkg YmFja2dyaWQgdG8gcmVuZGVyCi0gICAgICAgICAgICAgICAgXy5lYWNoKGNv bGluZm8sIGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgICAgICAgIHZhciBp c19wcmltYXJ5X2tleSA9IGZhbHNlOworICAgICAgICAgIC8vIENyZWF0ZSBj b2x1bW5zIHJlcXVpcmVkIGJ5IHNsaWNrIGdyaWQgdG8gcmVuZGVyCisgICAg ICAgICAgXy5lYWNoKGNvbGluZm8sIGZ1bmN0aW9uKGMpIHsKKyAgICAgICAg ICAgIHZhciBpc19wcmltYXJ5X2tleSA9IGZhbHNlOwogCi0gICAgICAgICAg ICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRhYmxlIGhhdmUgcHJpbWFyeSBr ZXkKLSAgICAgICAgICAgICAgICAgIGlmIChfLnNpemUocHJpbWFyeV9rZXlz KSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHByaW1hcnlf a2V5cywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHsKLSAgICAgICAgICAgICAg ICAgICAgICBpZiAoa2V5ID09PSBjLm5hbWUpCi0gICAgICAgICAgICAgICAg ICAgICAgICBpc19wcmltYXJ5X2tleSA9IHRydWU7Ci0gICAgICAgICAgICAg ICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg Ly8gQ2hlY2sgd2hldGhlciB0YWJsZSBoYXZlIHByaW1hcnkga2V5CisgICAg ICAgICAgICBpZiAoXy5zaXplKHByaW1hcnlfa2V5cykgPiAwKSB7CisgICAg ICAgICAgICAgIF8uZWFjaChwcmltYXJ5X2tleXMsIGZ1bmN0aW9uICh2YWx1 ZSwga2V5KSB7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gYy5uYW1l KQorICAgICAgICAgICAgICAgICAgaXNfcHJpbWFyeV9rZXkgPSB0cnVlOwor ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAg ICAgICAgICAgLy8gVG8gc2hvdyBjb2x1bW4gbGFiZWwgYW5kIGRhdGEgdHlw ZSBpbiBtdWx0aWxpbmUsCi0gICAgICAgICAgICAgICAgICAvLyBUaGUgZWxl bWVudHMgc2hvdWxkIGJlIHB1dCBpbnNpZGUgdGhlIGRpdi4KLSAgICAgICAg ICAgICAgICAgIC8vIENyZWF0ZSBjb2x1bW4gbGFiZWwgYW5kIHR5cGUuCi0g ICAgICAgICAgICAgICAgICB2YXIgY29sX3R5cGUgPSBjb2x1bW5fbGFiZWwg PSAnJzsKLSAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcGdfdHlwZXNb Yy50eXBlX2NvZGVdID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ190eXBlc1tjLnR5cGVfY29kZV1bMF0gOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgdXNl ciBtaWdodAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhh dmUgdXNlIGNhc3Rpbmcgc28gd2Ugd2lsbCB1c2UgdHlwZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybmVkIGJ5IGNhc3QgZnVu Y3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ190eXBl c1twZ190eXBlcy5sZW5ndGggLSAxXVswXSA/Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ190eXBlc1twZ190eXBlcy5sZW5ndGggLSAx XVswXSA6ICd1bmtub3duJzsKLQotICAgICAgICAgICAgICAgICAgaWYgKCFp c19wcmltYXJ5X2tleSkKLSAgICAgICAgICAgICAgICAgICAgY29sX3R5cGUg Kz0gJyAnICsgdHlwZTsKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICAgICAgICAgY29sX3R5cGUgKz0gJyBbUEtdICcgKyB0eXBlOwor ICAgICAgICAgICAgLy8gVG8gc2hvdyBjb2x1bW4gbGFiZWwgYW5kIGRhdGEg dHlwZSBpbiBtdWx0aWxpbmUsCisgICAgICAgICAgICAvLyBUaGUgZWxlbWVu dHMgc2hvdWxkIGJlIHB1dCBpbnNpZGUgdGhlIGRpdi4KKyAgICAgICAgICAg IC8vIENyZWF0ZSBjb2x1bW4gbGFiZWwgYW5kIHR5cGUuCisgICAgICAgICAg ICB2YXIgY29sX3R5cGUgPSBjb2x1bW5fbGFiZWwgPSAnJzsKKyAgICAgICAg ICAgIHZhciB0eXBlID0gcGdfdHlwZXNbYy50eXBlX2NvZGVdID8KKyAgICAg ICAgICAgICAgICAgICAgICAgICBwZ190eXBlc1tjLnR5cGVfY29kZV1bMF0g OgorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNh c2Ugd2hlcmUgdXNlciBtaWdodAorICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGhhdmUgdXNlIGNhc3Rpbmcgc28gd2Ugd2lsbCB1c2UgdHlwZQorICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybmVkIGJ5IGNhc3QgZnVu Y3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBwZ190eXBlc1twZ190 eXBlcy5sZW5ndGggLSAxXVswXSA/CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ190eXBlc1twZ190eXBlcy5sZW5ndGggLSAxXVswXSA6ICd1bmtu b3duJzsKKworICAgICAgICAgICAgaWYgKCFpc19wcmltYXJ5X2tleSkKKyAg ICAgICAgICAgICAgY29sX3R5cGUgKz0gJyAnICsgdHlwZTsKKyAgICAgICAg ICAgIGVsc2UKKyAgICAgICAgICAgICAgY29sX3R5cGUgKz0gJyBbUEtdICcg KyB0eXBlOwogCi0gICAgICAgICAgICAgICAgICBpZiAoYy5wcmVjaXNpb24g JiYgYy5wcmVjaXNpb24gPj0gMCAmJiBjLnByZWNpc2lvbiAhPSA2NTUzNSkg ewotICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsgYy5w cmVjaXNpb247Ci0gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlICs9IGMu c2NhbGUgJiYgYy5zY2FsZSAhPSA2NTUzNSA/Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICcsJyArIGMuc2NhbGUgKyAnKSc6Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcpJzsKLSAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIGlmIChjLnByZWNpc2lvbiAmJiBjLnByZWNp c2lvbiA+PSAwICYmIGMucHJlY2lzaW9uICE9IDY1NTM1KSB7CisgICAgICAg ICAgICAgIGNvbF90eXBlICs9ICcgKCcgKyBjLnByZWNpc2lvbjsKKyAgICAg ICAgICAgICAgY29sX3R5cGUgKz0gYy5zY2FsZSAmJiBjLnNjYWxlICE9IDY1 NTM1ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywnICsgYy5zY2Fs ZSArICcpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyknOworICAg ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAvLyBJZGVudGlmeSBj ZWxsIHR5cGUgb2YgY29sdW1uLgotICAgICAgICAgICAgICAgICAgc3dpdGNo KHR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAianNvbiI6Ci0g ICAgICAgICAgICAgICAgICAgIGNhc2UgImpzb25bXSI6Ci0gICAgICAgICAg ICAgICAgICAgIGNhc2UgImpzb25iIjoKLSAgICAgICAgICAgICAgICAgICAg Y2FzZSAianNvbmJbXSI6Ci0gICAgICAgICAgICAgICAgICAgICAgY29sX2Nl bGwgPSAnSnNvbic7Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgICAgICAgICAgIGNhc2UgInNtYWxsaW50IjoKLSAgICAgICAg ICAgICAgICAgICAgY2FzZSAiaW50ZWdlciI6Ci0gICAgICAgICAgICAgICAg ICAgIGNhc2UgImJpZ2ludCI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug ImRlY2ltYWwiOgotICAgICAgICAgICAgICAgICAgICBjYXNlICJudW1lcmlj IjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVhbCI6Ci0gICAgICAg ICAgICAgICAgICAgIGNhc2UgImRvdWJsZSBwcmVjaXNpb24iOgotICAgICAg ICAgICAgICAgICAgICAgIGNvbF9jZWxsID0gJ251bWJlcic7Ci0gICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh c2UgImJvb2xlYW4iOgotICAgICAgICAgICAgICAgICAgICAgIGNvbF9jZWxs ID0gJ2Jvb2xlYW4nOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot ICAgICAgICAgICAgICAgICAgICBjYXNlICJjaGFyYWN0ZXIiOgotICAgICAg ICAgICAgICAgICAgICBjYXNlICJjaGFyYWN0ZXJbXSI6Ci0gICAgICAgICAg ICAgICAgICAgIGNhc2UgImNoYXJhY3RlciB2YXJ5aW5nIjoKLSAgICAgICAg ICAgICAgICAgICAgY2FzZSAiY2hhcmFjdGVyIHZhcnlpbmdbXSI6Ci0gICAg ICAgICAgICAgICAgICAgICAgaWYgKGMuaW50ZXJuYWxfc2l6ZSAmJiBjLmlu dGVybmFsX3NpemUgPj0gMCAmJiBjLmludGVybmFsX3NpemUgIT0gNjU1MzUp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2x1bW4g dHlwZSB0byBkaXNwbGF5IGxlbmd0aCBvbiBjb2x1bW4gaGVhZGVyCi0gICAg ICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsgYy5pbnRl cm5hbF9zaXplICsgJyknOwotICAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgICAgICBjb2xfY2VsbCA9ICdzdHJpbmcnOwotICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgIGNvbF9jZWxsID0g J3N0cmluZyc7Ci0gICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAv LyBJZGVudGlmeSBjZWxsIHR5cGUgb2YgY29sdW1uLgorICAgICAgICAgICAg c3dpdGNoKHR5cGUpIHsKKyAgICAgICAgICAgICAgY2FzZSAianNvbiI6Cisg ICAgICAgICAgICAgIGNhc2UgImpzb25bXSI6CisgICAgICAgICAgICAgIGNh c2UgImpzb25iIjoKKyAgICAgICAgICAgICAgY2FzZSAianNvbmJbXSI6Cisg ICAgICAgICAgICAgICAgY29sX2NlbGwgPSAnSnNvbic7CisgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgInNtYWxsaW50IjoK KyAgICAgICAgICAgICAgY2FzZSAiaW50ZWdlciI6CisgICAgICAgICAgICAg IGNhc2UgImJpZ2ludCI6CisgICAgICAgICAgICAgIGNhc2UgImRlY2ltYWwi OgorICAgICAgICAgICAgICBjYXNlICJudW1lcmljIjoKKyAgICAgICAgICAg ICAgY2FzZSAicmVhbCI6CisgICAgICAgICAgICAgIGNhc2UgImRvdWJsZSBw cmVjaXNpb24iOgorICAgICAgICAgICAgICAgIGNvbF9jZWxsID0gJ251bWJl cic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh c2UgImJvb2xlYW4iOgorICAgICAgICAgICAgICAgIGNvbF9jZWxsID0gJ2Jv b2xlYW4nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICBjYXNlICJjaGFyYWN0ZXIiOgorICAgICAgICAgICAgICBjYXNlICJjaGFy YWN0ZXJbXSI6CisgICAgICAgICAgICAgIGNhc2UgImNoYXJhY3RlciB2YXJ5 aW5nIjoKKyAgICAgICAgICAgICAgY2FzZSAiY2hhcmFjdGVyIHZhcnlpbmdb XSI6CisgICAgICAgICAgICAgICAgaWYgKGMuaW50ZXJuYWxfc2l6ZSAmJiBj LmludGVybmFsX3NpemUgPj0gMCAmJiBjLmludGVybmFsX3NpemUgIT0gNjU1 MzUpIHsKKyAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2x1bW4gdHlw ZSB0byBkaXNwbGF5IGxlbmd0aCBvbiBjb2x1bW4gaGVhZGVyCisgICAgICAg ICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsgYy5pbnRlcm5hbF9zaXpl ICsgJyknOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj b2xfY2VsbCA9ICdzdHJpbmcnOworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbF9j ZWxsID0gJ3N0cmluZyc7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg ICAgICAgIGNvbHVtbl9sYWJlbCA9IGMuZGlzcGxheV9uYW1lICsgJzxicj4n ICsgY29sX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSB7 Ci0gICAgICAgICAgICAgICAgICAgICduYW1lJzogYy5uYW1lLAotICAgICAg ICAgICAgICAgICAgICAncG9zJzogYy5wb3MsCi0gICAgICAgICAgICAgICAg ICAgICdsYWJlbCc6IGNvbHVtbl9sYWJlbCwKLSAgICAgICAgICAgICAgICAg ICAgJ2NlbGwnOiBjb2xfY2VsbCwKLSAgICAgICAgICAgICAgICAgICAgJ2Nh bl9lZGl0Jzogc2VsZi5jYW5fZWRpdCwKLSAgICAgICAgICAgICAgICAgICAg J3R5cGUnOiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAnZGlzcGxheV9u YW1lJzogYy5kaXNwbGF5X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICdj b2x1bW5fdHlwZSc6IGNvbF90eXBlLAotICAgICAgICAgICAgICAgICAgICAn bm90X251bGwnOiBjLm5vdF9udWxsLAotICAgICAgICAgICAgICAgICAgICAn aGFzX2RlZmF1bHRfdmFsJzogYy5oYXNfZGVmYXVsdF92YWwKLSAgICAgICAg ICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2go Y29sKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KCdGZXRjaGluZyBUeXBlIEVycm9yJywgcmVzLmRhdGEucmVzdWx0 KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBzZWxmLmNvbHVt bnMgPSBjb2x1bW5zOwotICAgICAgICAgICAgICBpZiAoY2IgJiYgdHlwZW9m KGNiKSA9PSAnZnVuY3Rpb24nKSB7Ci0gICAgICAgICAgICAgICAgY2IoKTsK LSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGZhaWw6IF9mYWlsCisgICAgICAgICAgICBjb2x1bW5fbGFiZWwgPSBjLmRp c3BsYXlfbmFtZSArICc8YnI+JyArIGNvbF90eXBlOworCisgICAgICAgICAg ICB2YXIgY29sID0geworICAgICAgICAgICAgICAnbmFtZSc6IGMubmFtZSwK KyAgICAgICAgICAgICAgJ2Rpc3BsYXlfbmFtZSc6IGMuZGlzcGxheV9uYW1l LAorICAgICAgICAgICAgICAnY29sdW1uX3R5cGUnOiBjb2xfdHlwZSwKKyAg ICAgICAgICAgICAgJ3Bvcyc6IGMucG9zLAorICAgICAgICAgICAgICAnbGFi ZWwnOiBjb2x1bW5fbGFiZWwsCisgICAgICAgICAgICAgICdjZWxsJzogY29s X2NlbGwsCisgICAgICAgICAgICAgICdjYW5fZWRpdCc6IHNlbGYuY2FuX2Vk aXQsCisgICAgICAgICAgICAgICd0eXBlJzogdHlwZSwKKyAgICAgICAgICAg ICAgJ25vdF9udWxsJzogYy5ub3RfbnVsbCwKKyAgICAgICAgICAgICAgJ2hh c19kZWZhdWx0X3ZhbCc6IGMuaGFzX2RlZmF1bHRfdmFsCisgICAgICAgICAg ICB9OworICAgICAgICAgICAgY29sdW1ucy5wdXNoKGNvbCk7CiAgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBzZWxmLmNvbHVtbnMgPSBjb2x1bW5zOwor ICAgICAgICAgIGlmIChjYiAmJiB0eXBlb2YoY2IpID09ICdmdW5jdGlvbicp IHsKKyAgICAgICAgICAgIGNiKCk7CisgICAgICAgICAgfQogICAgICAgICB9 LAogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByYWlz ZSBhcHByb3ByaWF0ZSBtZXNzYWdlLgpAQCAtMTk4NiwyMiArMjA1NSwyMSBA QCBkZWZpbmUoWwogCiAgICAgICAgICAgc2VsZi5ncmlkVmlldy5tZXNzYWdl c19wYW5lbC5mb2N1cygpOwogCi0gICAgICAgICAgaWYgKHNlbGYuaXNfcXVl cnlfdG9vbCkgewotICAgICAgICAgICAgaWYgKGNsZWFyX2dyaWQpIHsKLSAg ICAgICAgICAgICAgLy8gRGVsZXRlIGdyaWQKLSAgICAgICAgICAgICAgaWYg KHNlbGYuZ3JpZFZpZXcuaGFuZGxlci5zbGlja2dyaWQpIHsKLSAgICAgICAg ICAgICAgICBzZWxmLmdyaWRWaWV3LmhhbmRsZXIuc2xpY2tncmlkLmRlc3Ry b3koKTsKKyAgICAgICAgICBpZiAoY2xlYXJfZ3JpZCkgeworICAgICAgICAg ICAgLy8gRGVsZXRlIGdyaWQKKyAgICAgICAgICAgIGlmIChzZWxmLmdyaWRW aWV3LmhhbmRsZXIuc2xpY2tncmlkKSB7CisgICAgICAgICAgICAgIHNlbGYu Z3JpZFZpZXcuaGFuZGxlci5zbGlja2dyaWQuZGVzdHJveSgpOwogCi0gICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgLy8gTWlzYyBjbGVhbmluZwot ICAgICAgICAgICAgICBzZWxmLmNvbHVtbnMgPSB1bmRlZmluZWQ7Ci0gICAg ICAgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHVuZGVmaW5lZDsKLQotICAg ICAgICAgICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJykudGV4dChtc2cp OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgJCgnLnNx bC1lZGl0b3ItbWVzc2FnZScpLmFwcGVuZChtc2cpOwogICAgICAgICAgICAg fQorICAgICAgICAgICAgLy8gTWlzYyBjbGVhbmluZworICAgICAgICAgICAg c2VsZi5jb2x1bW5zID0gdW5kZWZpbmVkOworICAgICAgICAgICAgc2VsZi5j b2xsZWN0aW9uID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICAkKCcuc3Fs LWVkaXRvci1tZXNzYWdlJykudGV4dChtc2cpOworICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJykuYXBw ZW5kKG1zZyk7CiAgICAgICAgICAgfQorCiAgICAgICAgICAgLy8gU2Nyb2xs IGF1dG9tYXRpY2FsbHkgd2hlbiBtc2dzIGFwcGVuZHMgdG8gZWxlbWVudAog ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAg ICQoIi5zcWwtZWRpdG9yLW1lc3NhZ2UiKS5zY3JvbGxUb3AoJCgiLnNxbC1l ZGl0b3ItbWVzc2FnZSIpWzBdLnNjcm9sbEhlaWdodCk7OwpAQCAtMjA1NSw3 ICsyMTIzLDcgQEAgZGVmaW5lKFsKIAogICAgICAgICByb3dzX3RvX2RlbGV0 ZTogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgIHZhciBzZWxmID0gdGhp cywKLSAgICAgICAgICAgIHRtcF9rZXlzID0gc2VsZi5nZXRfcm93X3ByaW1h cnlfa2V5LmNhbGwoc2VsZik7CisgICAgICAgICAgICB0bXBfa2V5cyA9IHNl bGYucHJpbWFyeV9rZXlzOwogCiAgICAgICAgICAgLy8gcmUtY2FsY3VsYXRl IHJvd3Mgd2l0aCBubyBwcmltYXJ5IGtleXMKICAgICAgICAgICBzZWxmLnRl bXBfbmV3X3Jvd3MgPSBbXTsKQEAgLTIwNjgsNyArMjEzNiw2IEBAIGRlZmlu ZShbCiAgICAgICAgICAgICAgIHNlbGYudGVtcF9uZXdfcm93cy5wdXNoKGlk eCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfSk7Ci0gICAgICAgICAg ZGF0YS5nZXRJdGVtTWV0YWRhdGEgPSBzZWxmLmRhdGFfdmlldy5nZXRJdGVt TWV0YWRhdGE7CiAgICAgICAgICAgc2VsZi5yb3dzX3RvX2Rpc2FibGUgPSBf LmNsb25lKHNlbGYudGVtcF9uZXdfcm93cyk7CiAgICAgICAgIH0sCiAKQEAg LTIwNzksNjkgKzIxNDYsNzMgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAg aXNfYWRkZWQgPSBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSwKICAg ICAgICAgICAgICAgaXNfdXBkYXRlZCA9IF8uc2l6ZShzZWxmLmRhdGFfc3Rv cmUudXBkYXRlZCk7CiAKLSAgICAgICAgICAgICAgLy8gUmVtb3ZlIG5ld2x5 IGFkZGVkIHJvd3MgZnJvbSBzdGFnZWQgcm93cyBhcyB3ZSBkb24ndCB3YW50 IHRvIHNlbmQgdGhlbSBvbiBzZXJ2ZXIKLSAgICAgICAgICAgICAgaWYoaXNf YWRkZWQpIHsKLSAgICAgICAgICAgICAgICAgIF8uZWFjaChzZWxmLmRhdGFf c3RvcmUuYWRkZWQsIGZ1bmN0aW9uKHZhbCwga2V5KSB7Ci0gICAgICAgICAg ICAgICAgICAgIGlmKGtleSBpbiBzZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jv d3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHJv dyBmcm9tIGRhdGEgc3RvcmUgc28gdGhhdCB3ZSBkbyBub3Qgc2VuZCBpdCBv biBzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkX2tleXMu cHVzaChrZXkpOwotICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxm LmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3Nba2V5XTsKLSAgICAgICAgICAgICAg ICAgICAgICBkZWxldGUgc2VsZi5kYXRhX3N0b3JlLmFkZGVkW2tleV0KLSAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgLy8gUmVtb3ZlIG5ld2x5IGFkZGVkIHJvd3MgZnJvbSBzdGFn ZWQgcm93cyBhcyB3ZSBkb24ndCB3YW50IHRvIHNlbmQgdGhlbSBvbiBzZXJ2 ZXIKKyAgICAgICAgICBpZihpc19hZGRlZCkgeworICAgICAgICAgICAgXy5l YWNoKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCwgZnVuY3Rpb24odmFsLCBrZXkp IHsKKyAgICAgICAgICAgICAgaWYoa2V5IGluIHNlbGYuZGF0YV9zdG9yZS5z dGFnZWRfcm93cykgeworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUg cm93IGZyb20gZGF0YSBzdG9yZSBzbyB0aGF0IHdlIGRvIG5vdCBzZW5kIGl0 IG9uIHNlcnZlcgorICAgICAgICAgICAgICAgIGRlbGV0ZWRfa2V5cy5wdXNo KGtleSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuZGF0YV9zdG9y ZS5zdGFnZWRfcm93c1trZXldOworICAgICAgICAgICAgICAgIGRlbGV0ZSBz ZWxmLmRhdGFfc3RvcmUuYWRkZWRba2V5XTsKKyAgICAgICAgICAgICAgICBk ZWxldGUgc2VsZi5kYXRhX3N0b3JlLmFkZGVkX2luZGV4W2tleV07CiAgICAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBJZiBvbmx5IG5ld2x5 IHJvd3MgdG8gZGVsZXRlIGFuZCBubyBkYXRhIGlzIHRoZXJlIHRvIHNlbmQg b24gc2VydmVyCi0gICAgICAgICAgICAgIC8vIHRoZW4ganVzdCByZS1yZW5k ZXIgdGhlIGdyaWQKLSAgICAgICAgICAgICAgaWYoXy5zaXplKHNlbGYuZGF0 YV9zdG9yZS5zdGFnZWRfcm93cykgPT0gMCkgewotICAgICAgICAgICAgICAg IHZhciBncmlkID0gc2VsZi5zbGlja2dyaWQsIGRhdGEgPSBncmlkLmdldERh dGEoKSwgaWR4ID0gMDsKLSAgICAgICAgICAgICAgICAgIGlmKGRlbGV0ZWRf a2V5cy5sZW5ndGgpewotICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUg bmV3IHJvd3MgZnJvbSBncmlkIGRhdGEgdXNpbmcgZGVsZXRlZCBrZXlzCi0g ICAgICAgICAgICAgICAgICAgZGF0YSA9IF8ucmVqZWN0KGRhdGEsIGZ1bmN0 aW9uKGQpewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkICYmIF8u aW5kZXhPZihkZWxldGVkX2tleXMsIGQuX190ZW1wX1BLKSA+IC0xKQotICAg ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgc2VsZi5yb3dzX3RvX2RlbGV0ZS5hcHBseShzZWxm LCBbZGF0YV0pOwotICAgICAgICAgICAgICAgICAgZ3JpZC5yZXNldEFjdGl2 ZUNlbGwoKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuc2V0RGF0YShkYXRh LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuc2V0U2VsZWN0ZWRS b3dzKFtdKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuaW52YWxpZGF0ZSgp OwotICAgICAgICAgICAgICAgICAgLy8gTm90aGluZyB0byBjb3B5IG9yIGRl bGV0ZSBoZXJlCi0gICAgICAgICAgICAgICAgICAkKCIjYnRuLWRlbGV0ZS1y b3ciKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICAgICAgICAg ICAgJCgiI2J0bi1jb3B5LXJvdyIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7 Ci0gICAgICAgICAgICAgICAgICBpZihfLnNpemUoc2VsZi5kYXRhX3N0b3Jl LmFkZGVkKSB8fCBpc191cGRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAg IC8vIERvIG5vdCBkaXNhYmxlIHNhdmUgYnV0dG9uIGlmIHRoZXJlIGFyZQot ICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdlcyBwcmVz ZW50IGluIGdyaWQgZGF0YQotICAgICAgICAgICAgICAgICAgICAkKCIjYnRu LXNhdmUiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICQoIiNidG4t c2F2ZSIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKGdl dHRleHQoIlJvdyhzKSBkZWxldGVkIikpOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfQorICAgICAgICAgIC8vIElmIG9ubHkgbmV3bHkgcm93cyB0 byBkZWxldGUgYW5kIG5vIGRhdGEgaXMgdGhlcmUgdG8gc2VuZCBvbiBzZXJ2 ZXIKKyAgICAgICAgICAvLyB0aGVuIGp1c3QgcmUtcmVuZGVyIHRoZSBncmlk CisgICAgICAgICAgaWYoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5zdGFnZWRf cm93cykgPT0gMCkgeworICAgICAgICAgICAgICB2YXIgZ3JpZCA9IHNlbGYu c2xpY2tncmlkLAorICAgICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQuZ2V0 RGF0YSgpLAorICAgICAgICAgICAgICBkYXRhID0gZGF0YVZpZXcuZ2V0SXRl bXMoKSwKKyAgICAgICAgICAgICAgaWR4ID0gMDsKKworICAgICAgICAgICAg ICBncmlkLnJlc2V0QWN0aXZlQ2VsbCgpOworCisgICAgICAgICAgICAgIGRh dGFWaWV3LmJlZ2luVXBkYXRlKCk7CisgICAgICAgICAgICAgIGZvciAodmFy IGkgPSAwOyBpIDwgZGVsZXRlZF9rZXlzLmxlbmd0aDsgaSsrKSB7CisgICAg ICAgICAgICAgICAgZGF0YVZpZXcuZGVsZXRlSXRlbShkZWxldGVkX2tleXNb aV0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGRhdGFWaWV3 LmVuZFVwZGF0ZSgpOworICAgICAgICAgICAgICBzZWxmLnJvd3NfdG9fZGVs ZXRlLmFwcGx5KHNlbGYsIFtkYXRhVmlldy5nZXRJdGVtcygpXSk7CisgICAg ICAgICAgICAgIGdyaWQucmVzZXRBY3RpdmVDZWxsKCk7CisgICAgICAgICAg ICAgIGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKKyAgICAgICAgICAgICAg Z3JpZC5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgICAgICAgLy8gTm90aGlu ZyB0byBjb3B5IG9yIGRlbGV0ZSBoZXJlCisgICAgICAgICAgICAgICQoIiNi dG4tZGVsZXRlLXJvdyIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAg ICAgICAgICAgICQoIiNidG4tY29weS1yb3ciKS5wcm9wKCdkaXNhYmxlZCcs IHRydWUpOworICAgICAgICAgICAgICBpZihfLnNpemUoc2VsZi5kYXRhX3N0 b3JlLmFkZGVkKSB8fCBpc191cGRhdGVkKSB7CisgICAgICAgICAgICAgICAg Ly8gRG8gbm90IGRpc2FibGUgc2F2ZSBidXR0b24gaWYgdGhlcmUgYXJlCisg ICAgICAgICAgICAgICAgLy8gYW55IG90aGVyIGNoYW5nZXMgcHJlc2VudCBp biBncmlkIGRhdGEKKyAgICAgICAgICAgICAgICAkKCIjYnRuLXNhdmUiKS5w cm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgb3RoZXIgZGF0YSB0 byBuZWVkcyB0byBiZSB1cGRhdGVkIG9uIHNlcnZlcgotICAgICAgICAgICAg ICAgIGlmKGlzX3VwZGF0ZWQpIHsKLSAgICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KGdldHRleHQoIk9wZXJhdGlvbiBmYWlsZWQiKSwKKyAgICAg ICAgICAgICAgICAkKCIjYnRuLXNhdmUiKS5wcm9wKCdkaXNhYmxlZCcsIHRy dWUpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGFsZXJ0aWZ5 LnN1Y2Nlc3MoZ2V0dGV4dCgiUm93KHMpIGRlbGV0ZWQiKSk7CisgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdGhlciBk YXRhIHRvIG5lZWRzIHRvIGJlIHVwZGF0ZWQgb24gc2VydmVyCisgICAgICAg ICAgICBpZihpc191cGRhdGVkKSB7CisgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KGdldHRleHQoIk9wZXJhdGlvbiBmYWlsZWQiKSwKICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgiVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdl cyBpbiBncmlkLCBQbGVhc2Ugc2F2ZSB0aGVtIGZpcnN0IHRvIGF2b2lkIGlu Y29uc2lzdGVuY3kgaW4gZGF0YSIpCiAgICAgICAgICAgICAgICAgICApOwot ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICBhbGVydGlmeS5jb25maXJtKGdldHRleHQoIkRl bGV0ZSBSb3cocykiKSwKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgYWxlcnRpZnkuY29uZmlybShnZXR0ZXh0 KCJEZWxldGUgUm93KHMpIiksCiAgICAgICAgICAgICAgICAgICBnZXR0ZXh0 KCJBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gZGVsZXRlIHNlbGVjdGVkIHJv dyhzKT8iKSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAg ICAgICAgICAgICAgICAgICAkKCIjYnRuLWRlbGV0ZS1yb3ciKS5wcm9wKCdk aXNhYmxlZCcsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAkKCIjYnRu LWNvcHktcm93IikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAg ICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBzdGF0ZQotICAgICAgICAgICAg ICAgICAgICBzZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCA9IHNlbGYuZGF0YV9z dG9yZS5zdGFnZWRfcm93czsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5k YXRhX3N0b3JlLnN0YWdlZF9yb3dzID0ge307Ci0gICAgICAgICAgICAgICAg ICAgIC8vIFNhdmUgdGhlIGNoYW5nZXMgb24gc2VydmVyCi0gICAgICAgICAg ICAgICAgICAgIHNlbGYuX3NhdmUoKTsKLSAgICAgICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg ICAgICAgICAgLy8gRG8gbm90aGluZyBhcyB1c2VyIGNhbmNlbGVkIHRoZSBv cGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgKS5zZXQoJ2xhYmVscycsIHtvazonWWVzJywgY2FuY2VsOidObyd9KTsK KyAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg JCgiI2J0bi1kZWxldGUtcm93IikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsK KyAgICAgICAgICAgICAgICAkKCIjYnRuLWNvcHktcm93IikucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgdGhl IHN0YXRlCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLmRlbGV0 ZWQgPSBzZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3M7CisgICAgICAgICAg ICAgICAgc2VsZi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzID0ge307CisgICAg ICAgICAgICAgICAgLy8gU2F2ZSB0aGUgY2hhbmdlcyBvbiBzZXJ2ZXIKKyAg ICAgICAgICAgICAgICBzZWxmLl9zYXZlKCk7CisgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg IC8vIERvIG5vdGhpbmcgYXMgdXNlciBjYW5jZWxlZCB0aGUgb3BlcmF0aW9u LgogICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICkuc2V0KCdsYWJl bHMnLCB7b2s6IGdldHRleHQoIlllcyIpLCBjYW5jZWw6Z2V0dGV4dCgiTm8i KX0pOworICAgICAgICAgIH0KICAgICAgICAgfSwKIAogICAgICAgICAvKiBU aGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgY2hhbmdlZCBt b2RlbHMgYW5kIG1ha2UKQEAgLTIyMDMsNyArMjI3NCw5IEBAIGRlZmluZShb CiAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlcV9kYXRh KSwKICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CiAg ICAgICAgICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwKLSAg ICAgICAgICAgICAgICAgIGRhdGEgPSBncmlkLmdldERhdGEoKTsKKyAgICAg ICAgICAgICAgICAgICAgZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKSwKKyAg ICAgICAgICAgICAgICAgICAgZGF0YV9sZW5ndGggPSBkYXRhVmlldy5nZXRM ZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFtdOwogICAg ICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKICAgICAgICAg ICAgICAgICAgICAgLy8gUmVtb3ZlIGZsYWcgaXNfcm93X2NvcGllZCBmcm9t IGNvcGllZCByb3dzCiAgICAgICAgICAgICAgICAgICAgIF8uZWFjaChkYXRh LCBmdW5jdGlvbihyb3csIGlkeCkgewpAQCAtMjIyMCwyMiArMjI5MywyMCBA QCBkZWZpbmUoWwogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZGVs ZXRlZCByb3dzIGZyb20gY2xpZW50IGFzIHdlbGwKICAgICAgICAgICAgICAg ICAgICAgaWYoaXNfZGVsZXRlZCkgewogICAgICAgICAgICAgICAgICAgICAg IHZhciByb3dzID0gZ3JpZC5nZXRTZWxlY3RlZFJvd3MoKTsKLSAgICAgICAg ICAgICAgICAgICAgICAvKiBJbiBKYXZhU2NyaXB0IHNvcnRpbmcgYnkgZGVm YXVsdCBpcyBsZXhpY2FsLAotICAgICAgICAgICAgICAgICAgICAgICAqIFRv IG1ha2Ugc29ydGluZyBudW1lcmljYWwgd2UgbmVlZCB0byBwYXNzIGZ1bmN0 aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICogQWZ0ZXIgdGhhdCB3ZSB3 aWxsIFJldmVyc2UgdGhlIG9yZGVyIG9mIHNvcnRlZCBhcnJheQotICAgICAg ICAgICAgICAgICAgICAgICAqIHNvIHRoYXQgd2hlbiB3ZSByZW1vdmUgaXQg ZG9lcyBub3QgYWZmZWN0IGFycmF5IGluZGV4Ci0gICAgICAgICAgICAgICAg ICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5sZW5n dGggPT0gcm93cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICBp ZihkYXRhX2xlbmd0aCA9PSByb3dzLmxlbmd0aCkgewogICAgICAgICAgICAg ICAgICAgICAgICAgLy8gVGhpcyBtZWFucyBhbGwgdGhlIHJvd3MgYXJlIHNl bGVjdGVkLCBjbGVhciBhbGwgZGF0YQogICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YSA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVZp ZXcuc2V0SXRlbXMoZGF0YSwgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkpOwog ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICByb3dzID0gcm93cy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0 dXJuIGEgLSBifSkucmV2ZXJzZSgpOwotICAgICAgICAgICAgICAgICAgICAg ICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKGlkeCkgewotICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLnNwbGljZShpZHgsIDEpOwotICAgICAgICAg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBk YXRhVmlldy5iZWdpblVwZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAg ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBncmlkLmdldERhdGFJ dGVtKHJvd3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh LnB1c2goaXRlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFW aWV3LmRlbGV0ZUl0ZW0oaXRlbVtzZWxmLmNsaWVudF9wcmltYXJ5X2tleV0p OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YVZpZXcuZW5kVXBkYXRlKCk7CiAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm93c190 b19kZWxldGUuYXBwbHkoc2VsZiwgW2RhdGFdKTsKLSAgICAgICAgICAgICAg ICAgICAgICBncmlkLnNldERhdGEoZGF0YSwgdHJ1ZSk7CiAgICAgICAgICAg ICAgICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOwogICAgICAg ICAgICAgICAgICAgICB9CiAKQEAgLTIyNDgsNiArMjMxOSw3IEBAIGRlZmlu ZShbCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm93c190b19kaXNh YmxlID0gXy5jbG9uZShzZWxmLnRlbXBfbmV3X3Jvd3MpOwogICAgICAgICAg ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgZ3JpZC5zZXRT ZWxlY3RlZFJvd3MoW10pOwogICAgICAgICAgICAgICAgICAgICAvLyBSZXNl dCBkYXRhIHN0b3JlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9z dG9yZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQnOiB7fSwK QEAgLTIyNjgsNyArMjM0MCw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICAg ICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJykudGV4dChyZXMuZGF0YS5y ZXN1bHQpOwogICAgICAgICAgICAgICAgICAgdmFyIGVycl9tc2cgPSBTKGdl dHRleHQoIiVzLiIpKS5zcHJpbnRmKHJlcy5kYXRhLnJlc3VsdCkudmFsdWUo KTsKICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5Lm5vdGlmeShlcnJfbXNn LCAnZXJyb3InLCAyMCk7Ci0KKyAgICAgICAgICAgICAgICAgIGdyaWQuc2V0 U2VsZWN0ZWRSb3dzKFtdKTsKICAgICAgICAgICAgICAgICAgIC8vIFRvIGhp Z2hsaWdodCB0aGUgcm93IGF0IGZhdWx0CiAgICAgICAgICAgICAgICAgICBp ZihfLmhhcyhyZXMuZGF0YSwgJ19yb3dpZCcpICYmCiAgICAgICAgICAgICAg ICAgICAgICAgKCFfLmlzVW5kZWZpbmVkKHJlcy5kYXRhLl9yb3dpZCl8fCAh Xy5pc051bGwocmVzLmRhdGEuX3Jvd2lkKSkpIHsKQEAgLTIzMjQsMTQgKzIz OTYsMjEgQEAgZGVmaW5lKFsKIAogICAgICAgICAvLyBGaW5kIGluZGV4IG9m IHJvdyBhdCBmYXVsdCBmcm9tIGdyaWQgZGF0YQogICAgICAgICBfZmluZF9y b3dpbmRleDogZnVuY3Rpb24ocm93aWQpIHsKLSAgICAgICAgICB2YXIgc2Vs ZiA9IHRoaXM7Ci0gICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3Jp ZCwKLSAgICAgICAgICAgIGRhdGEgPSBncmlkLmdldERhdGEoKSwgX3Jvd2lk LCBjb3VudCA9IDAsIF9pZHggPSAtMTsKKyAgICAgICAgICB2YXIgc2VsZiA9 IHRoaXMsCisgICAgICAgICAgICBncmlkID0gc2VsZi5zbGlja2dyaWQsCisg ICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQuZ2V0RGF0YSgpLAorICAgICAg ICAgICAgZGF0YSA9IGRhdGFWaWV3LmdldEl0ZW1zKCksCisgICAgICAgICAg ICBfcm93aWQsCisgICAgICAgICAgICBjb3VudCA9IDAsCisgICAgICAgICAg ICBfaWR4ID0gLTE7CisKICAgICAgICAgICAvLyBJZiBfcm93aWQgaXMgb2Jq ZWN0IHRoZW4gaXQncyB1cGRhdGUvZGVsZXRlIG9wZXJhdGlvbgogICAgICAg ICAgIGlmKF8uaXNPYmplY3Qocm93aWQpKSB7CiAgICAgICAgICAgICAgIF9y b3dpZCA9IHJvd2lkOwotICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1N0cmlu Zyhyb3dpZCkpIHsgLy8gSW5zZXJ0IG9wcmF0aW9uCi0gICAgICAgICAgICBf cm93aWQgPSB7ICdfX3RlbXBfUEsnOiByb3dpZCB9OworICAgICAgICAgIH0g ZWxzZSBpZiAoXy5pc1N0cmluZyhyb3dpZCkpIHsgLy8gSW5zZXJ0IG9wZXJh dGlvbgorICAgICAgICAgICAgdmFyIHJvd2lkID0ge307CisgICAgICAgICAg ICByb3dpZFtzZWxmLmNsaWVudF9wcmltYXJ5X2tleV09IHJvd2lkOworICAg ICAgICAgICAgX3Jvd2lkID0gcm93aWQ7CiAgICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHVuaXF1 ZSBpZAogICAgICAgICAgICAgcmV0dXJuIF9pZHg7CkBAIC0yNTUzLDExICsy NjMyLDYgQEAgZGVmaW5lKFsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3 aWxsIHNldCB0aGUgcmVxdWlyZWQgZmxhZyBmb3IgcG9sbGluZyByZXNwb25z ZSBkYXRhCiAgICAgICAgIF9pbml0X3BvbGxpbmdfZmxhZ3M6IGZ1bmN0aW9u KCkgewogICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgICAv LyBTZXQgYSBmbGFnIHRvIGdldCBjb2x1bW5zCi0gICAgICAgICAgc2VsZi5G RVRDSF9DT0xVTU5TX0ZST01fU0VSVkVSID0gdHJ1ZTsKLSAgICAgICAgICAv LyBXZSB3aWxsIHNldCBjb2x1bW5zIGRhdGEgaW4gdGhpcyB2YXJpYWJsZSBm b3IgZnV0dXJlIHVzZSBvbmNlIHdlIGZldGNoIGl0Ci0gICAgICAgICAgLy8g ZnJvbSBzZXJ2ZXIKLSAgICAgICAgICBzZWxmLkNPTFVNTlNfREFUQSA9IHt9 OwogCiAgICAgICAgICAgLy8gVG8gZ2V0IGEgdGltZW91dCBmb3IgcG9sbGlu ZyBmYWxsYmFjayB0aW1lciBpbiBzZWNvbmRzIGluCiAgICAgICAgICAgLy8g cmVnYXJkcyB0byBlbGFwc2VkIHRpbWUKQEAgLTI2NTMsNyArMjcyNyw3IEBA IGRlZmluZShbCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAv LyBBZGQgY29sdW1uIHBvc2l0aW9uIGFuZCBpdCdzIHZhbHVlIHRvIGRhdGEK LSAgICAgICAgICBkYXRhW2NvbHVtbl9pbmZvLmZpZWxkXSA9IF92YWx1ZXNb Y29sdW1uX2luZm8ucG9zXSB8fCAnJzsKKyAgICAgICAgICBkYXRhW2NvbHVt bl9pbmZvLmZpZWxkXSA9IF92YWx1ZXNbY29sdW1uX2luZm8uZmllbGRdIHx8 ICcnOwogCiAgICAgICAgICAgc2VsZi50cmlnZ2VyKAogICAgICAgICAgICAg J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKQEAgLTI3 MjMsNyArMjc5Nyw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICByZXR1cm47 CiAKICAgICAgICAgICAvLyBBZGQgY29sdW1uIHBvc2l0aW9uIGFuZCBpdCdz IHZhbHVlIHRvIGRhdGEKLSAgICAgICAgICBkYXRhW2NvbHVtbl9pbmZvLmZp ZWxkXSA9IF92YWx1ZXNbY29sdW1uX2luZm8ucG9zXSB8fCAnJzsKKyAgICAg ICAgICBkYXRhW2NvbHVtbl9pbmZvLmZpZWxkXSA9IF92YWx1ZXNbY29sdW1u X2luZm8uZmllbGRdIHx8ICcnOwogCiAgICAgICAgICAgc2VsZi50cmlnZ2Vy KAogICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNv bjpzaG93JywKQEAgLTI4ODYsMTYgKzI5NjAsMTggQEAgZGVmaW5lKFsKICAg ICAgICAgX3Bhc3RlX3JvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgdmFy IHNlbGYgPSB0aGlzLCBjb2xfaW5mbyA9IHt9LAogICAgICAgICAgICAgZ3Jp ZCA9IHNlbGYuc2xpY2tncmlkLAotICAgICAgICAgICAgZGF0YSA9IGdyaWQu Z2V0RGF0YSgpLAotICAgICAgICAgICAgY291bnQgPSBPYmplY3Qua2V5cyhk YXRhKS5sZW5ndGgtMTsKLQotICAgICAgICAgIHZhciByb3dzID0gZ3JpZC5n ZXRTZWxlY3RlZFJvd3MoKS5zb3J0KAorICAgICAgICAgICAgZGF0YVZpZXcg PSBncmlkLmdldERhdGEoKSwKKyAgICAgICAgICAgIGRhdGEgPSBkYXRhVmll dy5nZXRJdGVtcygpLAorICAgICAgICAgICAgY291bnQgPSBkYXRhVmlldy5n ZXRMZW5ndGgoKSwKKyAgICAgICAgICAgIHJvd3MgPSBncmlkLmdldFNlbGVj dGVkUm93cygpLnNvcnQoCiAgICAgICAgICAgICAgIGZ1bmN0aW9uIChhLCBi KSB7IHJldHVybiBhIC0gYjsgfQogICAgICAgICAgICAgKSwKLSAgICAgICAg ICAgIHJvd3MgPSByb3dzLmxlbmd0aCA9PSAwID8gc2VsZi5sYXN0X2NvcGll ZF9yb3dzIDogcm93cywKICAgICAgICAgICAgIGNvcGllZF9yb3dzID0gcm93 cy5tYXAoZnVuY3Rpb24gKHJvd0luZGV4KSB7CiAgICAgICAgICAgICAgIHJl dHVybiBkYXRhW3Jvd0luZGV4XTsKICAgICAgICAgICAgIH0pOworCisgICAg ICAgICAgICByb3dzID0gcm93cy5sZW5ndGggPT0gMCA/IHNlbGYubGFzdF9j b3BpZWRfcm93cyA6IHJvd3MKKwogICAgICAgICAgICAgc2VsZi5sYXN0X2Nv cGllZF9yb3dzID0gcm93czsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUg YXJlIHJvd3MgdG8gcGFzdGU/CkBAIC0zMDE1LDYgKzMwOTEsOSBAQCBkZWZp bmUoWwogICAgICAgICAgICAgICBzcWwgPSAnJywKICAgICAgICAgICAgICAg aGlzdG9yeV9tc2cgPSAnJzsKIAorICAgICAgICAgIHNlbGYuaGFzX21vcmVf cm93cyA9IGZhbHNlOworICAgICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9 IGZhbHNlOworCiAgICAgICAgICAgLyogSWYgY29kZSBpcyBzZWxlY3RlZCBp biB0aGUgY29kZSBtaXJyb3IgdGhlbiBleGVjdXRlCiAgICAgICAgICAgICog dGhlIHNlbGVjdGVkIHBhcnQgZWxzZSBleGVjdXRlIHRoZSBjb21wbGV0ZSBj b2RlLgogICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dXRpbHMvZHJpdmVyL2Fic3RyYWN0LnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMv ZHJpdmVyL2Fic3RyYWN0LnB5CmluZGV4IDliMjM2M2MuLjdkYjNlMzcgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9hYnN0cmFjdC5w eQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvYWJzdHJhY3QucHkK QEAgLTEwMSw2ICsxMDEsMTIgQEAgY2xhc3MgQmFzZUNvbm5lY3Rpb24ob2Jq ZWN0KToKICAgICAgIC0gSW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIGV4ZWN1 dGUgdGhlIGdpdmVuIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQKICAg ICAgICAgYXMgYW4gYXJyYXkgb2YgZGljdCAoY29sdW1uIG5hbWUgLT4gdmFs dWUpIGZvcm1hdC4KIAorICAgICogZGVmIGFzeW5jX2ZldGNobWFueV8yZGFy cmF5KHJlY29yZHM9LTEsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZhbHNl KToKKyAgICAgIC0gSW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHJpZXZl IHJlc3VsdCBvZiBhc3luY2hyb25vdXMgY29ubmVjdGlvbiBhbmQKKyAgICAg ICAgcG9sbGluZyB3aXRoIG5vX3Jlc3VsdCBmbGFnIHNldCB0byBUcnVlLgor ICAgICAgICBUaGlzIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDIgZGltZW5z aW9uYWwgYXJyYXkuCisgICAgICAgIElmIHJlY29yZHMgaXMgLTEgdGhlbiBm ZXRjaG1hbnkgd2lsbCBiZWhhdmUgYXMgZmV0Y2hhbGwuCisKICAgICAqIGNv bm5lY3RlZCgpCiAgICAgICAtIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBn ZXQgdGhlIHN0YXR1cyBvZiB0aGUgY29ubmVjdGlvbi4gSXQgc2hvdWxkCiAg ICAgICAgIHJldHVybiBUcnVlIGZvciBjb25uZWN0ZWQsIG90aGVyd2lzZSBG YWxzZQpAQCAtMTMzLDcgKzEzOSw3IEBAIGNsYXNzIEJhc2VDb25uZWN0aW9u KG9iamVjdCk6CiAgICAgICAtIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0byB3 YWl0IGZvciBhc3luY2hyb25vdXMgY29ubmVjdGlvbiB3aXRoIHRpbWVvdXQu CiAgICAgICAgIFRoaXMgbXVzdCBiZSBhIG5vbiBibG9ja2luZyBjYWxsLgog Ci0gICAgKiBwb2xsKGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQorICAgICog cG9sbChmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZywgbm9fcmVzdWx0KQogICAg ICAgLSBJbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcG9sbCB0aGUgZGF0YSBv ZiBxdWVyeSBydW5uaW5nIG9uIGFzeW5jaHJvbm91cwogICAgICAgICBjb25u ZWN0aW9uLgogCkBAIC0xODAsNiArMTg2LDEwIEBAIGNsYXNzIEJhc2VDb25u ZWN0aW9uKG9iamVjdCk6CiAgICAgICAgIHBhc3MKIAogICAgIEBhYnN0cmFj dG1ldGhvZAorICAgIGRlZiBhc3luY19mZXRjaG1hbnlfMmRhcnJheShzZWxm LCByZWNvcmRzPS0xLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSk6 CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRl ZiBjb25uZWN0ZWQoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjA4LDcg KzIxOCw3IEBAIGNsYXNzIEJhc2VDb25uZWN0aW9uKG9iamVjdCk6CiAgICAg ICAgIHBhc3MKIAogICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBwb2xs KHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUpOgorICAgIGRl ZiBwb2xsKHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUsIG5v X3Jlc3VsdD1GYWxzZSk6CiAgICAgICAgIHBhc3MKIAogICAgIEBhYnN0cmFj dG1ldGhvZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVy L3BzeWNvcGcyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJp dmVyL3BzeWNvcGcyL19faW5pdF9fLnB5CmluZGV4IDkyNTYyYmMuLmQzZGM1 YzUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3lj b3BnMi9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2 ZXIvcHN5Y29wZzIvX19pbml0X18ucHkKQEAgLTEwNzgsNiArMTA3OCw1NSBA QCBGYWlsZWQgdG8gZXhlY3V0ZSBxdWVyeSAoZXhlY3V0ZV92b2lkKSBmb3Ig dGhlIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29ubl9pZH0KIAogICAgICAg ICByZXR1cm4gVHJ1ZSwgeydjb2x1bW5zJzogY29sdW1ucywgJ3Jvd3MnOiBy b3dzfQogCisgICAgZGVmIGFzeW5jX2ZldGNobWFueV8yZGFycmF5KHNlbGYs IHJlY29yZHM9MjAwMCwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2Up OgorICAgICAgICAiIiIKKyAgICAgICAgVXNlciBzaG91bGQgcG9sbCBhbmQg Y2hlY2sgaWYgc3RhdHVzIGlzIEFTWU5DX09LIGJlZm9yZSBjYWxsaW5nIHRo aXMKKyAgICAgICAgZnVuY3Rpb24KKyAgICAgICAgQXJnczoKKyAgICAgICAg ICByZWNvcmRzOiBubyBvZiByZWNvcmRzIHRvIGZldGNoLiB1c2UgLTEgdG8g ZmV0Y2hhbGwuCisgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6 CisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAg Y3VyID0gc2VsZi5fX2FzeW5jX2N1cnNvcgorICAgICAgICBpZiBub3QgY3Vy OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KAorICAgICAg ICAgICAgICAgICJDdXJzb3IgY291bGQgbm90IGJlIGZvdW5kIGZvciB0aGUg YXN5bmMgY29ubmVjdGlvbi4iCisgICAgICAgICAgICApCisKKyAgICAgICAg aWYgc2VsZi5jb25uLmlzZXhlY3V0aW5nKCk6CisgICAgICAgICAgICByZXR1 cm4gRmFsc2UsIGdldHRleHQoCisgICAgICAgICAgICAgICAgIkFzeW5jaHJv bm91cyBxdWVyeSBleGVjdXRpb24vb3BlcmF0aW9uIHVuZGVyd2F5LiIKKyAg ICAgICAgICAgICkKKworICAgICAgICBpZiBzZWxmLnJvd19jb3VudCA+IDA6 CisgICAgICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICAgICAgIyBGb3Ig RERMIG9wZXJhdGlvbiwgd2UgbWF5IG5vdCBoYXZlIHJlc3VsdC4KKyAgICAg ICAgICAgICMKKyAgICAgICAgICAgICMgQmVjYXVzZSAtIHRoZXJlIGlzIG5v dCBkaXJlY3Qgd2F5IHRvIGRpZmZlcmVudGlhdGUgRE1MIGFuZAorICAgICAg ICAgICAgIyBEREwgb3BlcmF0aW9ucywgd2UgbmVlZCB0byByZWx5IG9uIGV4 Y2VwdGlvbiB0byBmaWd1cmUKKyAgICAgICAgICAgICMgdGhhdCBvdXQgYXQg dGhlIG1vbWVudC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICBpZiByZWNvcmRzID09IC0xOgorICAgICAgICAgICAgICAgICAgICByZXMg PSBjdXIuZmV0Y2hhbGwoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgIHJlcyA9IGN1ci5mZXRjaG1hbnkocmVjb3JkcykK KyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJlczoKKyAgICAgICAgICAg ICAgICAgICAgbmV3X3JvdyA9IFtdCisgICAgICAgICAgICAgICAgICAgIGZv ciBjb2wgaW4gc2VsZi5jb2x1bW5faW5mbzoKKyAgICAgICAgICAgICAgICAg ICAgICAgIG5ld19yb3cuYXBwZW5kKHJvd1tjb2xbJ25hbWUnXV0pCisgICAg ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmV3X3JvdykKKyAgICAg ICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5Qcm9ncmFtbWluZ0Vycm9yIGFzIGU6 CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgIyBVc2VyIHBlcmZvcm1lZCBvcGVyYXRpb24gd2hp Y2ggZG9zZSBub3QgcHJvZHVjZSByZWNvcmQvcyBhcworICAgICAgICAgICAg IyByZXN1bHQuCisgICAgICAgICAgICAjIGZvciBlZy4gRERMIG9wZXJhdGlv bnMuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAgICAg IHJldHVybiBUcnVlLCByZXN1bHQKKwogICAgIGRlZiBjb25uZWN0ZWQoc2Vs Zik6CiAgICAgICAgIGlmIHNlbGYuY29ubjoKICAgICAgICAgICAgIGlmIG5v dCBzZWxmLmNvbm4uY2xvc2VkOgpAQCAtMTIyNCw3ICsxMjczLDcgQEAgRmFp bGVkIHRvIHJlc2V0IHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgZHVl IHRvIGZvbGxvd2luZyBlcnJvcjoKICAgICAgICAgICAgICAgICAicG9sbCgp IHJldHVybmVkICVzIGZyb20gX3dhaXRfdGltZW91dCBmdW5jdGlvbiIgJSBz dGF0ZQogICAgICAgICAgICAgKQogCi0gICAgZGVmIHBvbGwoc2VsZiwgZm9y bWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2UpOgorICAgIGRlZiBwb2xsKHNl bGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZhbHNlLCBub19yZXN1bHQ9 RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyBhIHdyYXBwZXIgYXJvdW5kIGNvbm5lY3Rpb24ncyBwb2xsIGZ1bmN0aW9u LgogICAgICAgICBJdCBpbnRlcm5hbGx5IHVzZXMgdGhlIF93YWl0X3RpbWVv dXQgbWV0aG9kIHRvIHBvbGwgdGhlCkBAIC0xMjM0LDYgKzEyODMsNyBAQCBG YWlsZWQgdG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBk dWUgdG8gZm9sbG93aW5nIGVycm9yOgogICAgICAgICBBcmdzOgogICAgICAg ICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6IGlmIFRydWUgdGhlbiBm dW5jdGlvbiByZXR1cm4gdGhlIGZvcm1hdHRlZAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBtZXNzYWdlLCBvdGhl cndpc2UgZXJyb3Igc3RyaW5nLgorICAgICAgICAgICAgbm9fcmVzdWx0OiBJ ZiBUcnVlIHRoZW4gb25seSBwb2xsIHN0YXR1cyB3aWxsIGJlIHJldHVybmVk LgogICAgICAgICAiIiIKIAogICAgICAgICBjdXIgPSBzZWxmLl9fYXN5bmNf Y3Vyc29yCkBAIC0xMjg5LDIzICsxMzM5LDIzIEBAIEZhaWxlZCB0byByZXNl dCB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGR1ZSB0byBmb2xsb3dp bmcgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBvcyArPSAxCiAKICAg ICAgICAgICAgIHNlbGYucm93X2NvdW50ID0gY3VyLnJvd2NvdW50Ci0KLSAg ICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6Ci0gICAgICAgICAgICAg ICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgICAgICAjIEZvciBEREwgb3Bl cmF0aW9uLCB3ZSBtYXkgbm90IGhhdmUgcmVzdWx0LgotICAgICAgICAgICAg ICAgICMKLSAgICAgICAgICAgICAgICAjIEJlY2F1c2UgLSB0aGVyZSBpcyBu b3QgZGlyZWN0IHdheSB0byBkaWZmZXJlbnRpYXRlIERNTCBhbmQKLSAgICAg ICAgICAgICAgICAjIERETCBvcGVyYXRpb25zLCB3ZSBuZWVkIHRvIHJlbHkg b24gZXhjZXB0aW9uIHRvIGZpZ3VyZSB0aGF0Ci0gICAgICAgICAgICAgICAg IyBvdXQgYXQgdGhlIG1vbWVudC4KLSAgICAgICAgICAgICAgICB0cnk6Ci0g ICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gY3VyOgotICAgICAgICAg ICAgICAgICAgICAgICAgbmV3X3JvdyA9IFtdCi0gICAgICAgICAgICAgICAg ICAgICAgICBmb3IgY29sIGluIHNlbGYuY29sdW1uX2luZm86Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvdy5hcHBlbmQocm93W2NvbFsn bmFtZSddXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl bmQobmV3X3JvdykKLQotICAgICAgICAgICAgICAgIGV4Y2VwdCBwc3ljb3Bn Mi5Qcm9ncmFtbWluZ0Vycm9yOgotICAgICAgICAgICAgICAgICAgICByZXN1 bHQgPSBOb25lCisgICAgICAgICAgICBpZiBub3Qgbm9fcmVzdWx0OgorICAg ICAgICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6CisgICAgICAgICAg ICAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICAgICAgICAgICAgICMg Rm9yIERETCBvcGVyYXRpb24sIHdlIG1heSBub3QgaGF2ZSByZXN1bHQuCisg ICAgICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAgICAgIyBC ZWNhdXNlIC0gdGhlcmUgaXMgbm90IGRpcmVjdCB3YXkgdG8gZGlmZmVyZW50 aWF0ZSBETUwgYW5kCisgICAgICAgICAgICAgICAgICAgICMgRERMIG9wZXJh dGlvbnMsIHdlIG5lZWQgdG8gcmVseSBvbiBleGNlcHRpb24gdG8gZmlndXJl CisgICAgICAgICAgICAgICAgICAgICMgdGhhdCBvdXQgYXQgdGhlIG1vbWVu dC4KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIHJvdyBpbiBjdXI6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmV3X3JvdyA9IFtdCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9yIGNvbCBpbiBzZWxmLmNvbHVtbl9pbmZvOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm93LmFwcGVuZChyb3dbY29s WyduYW1lJ11dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dC5hcHBlbmQobmV3X3JvdykKKworICAgICAgICAgICAgICAgICAgICBleGNl cHQgcHN5Y29wZzIuUHJvZ3JhbW1pbmdFcnJvcjoKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdCA9IE5vbmUKIAogICAgICAgICByZXR1cm4gc3Rh dHVzLCByZXN1bHQKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vZmVh dHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkgYi93ZWIvcmVncmVzc2lvbi9m ZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weQppbmRleCBiYjExMWExLi4x ZjEyYTgwIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0 aWxzL3BnYWRtaW5fcGFnZS5weQorKysgYi93ZWIvcmVncmVzc2lvbi9mZWF0 dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weQpAQCAtMjI0LDYgKzIyNCwyMCBA QCBjbGFzcyBQZ2FkbWluUGFnZToKIAogICAgICAgICBzZWxmLl93YWl0X2Zv cigic3Bpbm5lciB0byBkaXNhcHBlYXIiLCBzcGlubmVyX2hhc19kaXNhcHBl YXJlZCkKIAorICAgIGRlZiB3YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRpbmdf aW5kaWNhdG9yX3RvX2Rpc2FwcGVhcihzZWxmKToKKyAgICAgICAgZGVmIHNw aW5uZXJfaGFzX2Rpc2FwcGVhcmVkKGRyaXZlcik6CisgICAgICAgICAgICB0 cnk6CisgICAgICAgICAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94 cGF0aCgKKyAgICAgICAgICAgICAgICAgICAgIi8vKltAaWQ9J2ZldGNoaW5n X2RhdGEnIGFuZCBAY2xhc3M9J2hpZGUnXSIKKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBl eGNlcHQgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAg ICAjIHdhaXQgZm9yIGxvYWRpbmcgaW5kaWNhdG9yIGRpc2FwcGVhciBhbmlt YXRpb24gdG8gY29tcGxldGUuCisgICAgICAgICAgICAgICAgdGltZS5zbGVl cCgwLjUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg ICBzZWxmLl93YWl0X2Zvcigic3Bpbm5lciB0byBkaXNhcHBlYXIiLCBzcGlu bmVyX2hhc19kaXNhcHBlYXJlZCkKKwogICAgIGRlZiB3YWl0X2Zvcl9hcHAo c2VsZik6CiAgICAgICAgIGRlZiBwYWdlX3Nob3dzX2FwcChkcml2ZXIpOgog ICAgICAgICAgICAgaWYgZHJpdmVyLnRpdGxlID09IHNlbGYuYXBwX2NvbmZp Zy5BUFBfTkFNRToKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvc2VsZWN0aW9uL2NvcHlfZGF0YV9zcGVjLmpzIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29weV9kYXRhX3NwZWMuanMK aW5kZXggOWUwNWU4NC4uMmI2MjNiMyAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29weV9kYXRhX3NwZWMuanMK KysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29w eV9kYXRhX3NwZWMuanMKQEAgLTE2LDE2ICsxNiwxNiBAQCBpbXBvcnQgY2xp cGJvYXJkIGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVj dGlvbi9jbGlwYm9hcmQnOwogaW1wb3J0IGNvcHlEYXRhIGZyb20gJy4uLy4u Ly4uL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jb3B5X2RhdGEnOwog aW1wb3J0IFJhbmdlU2VsZWN0aW9uSGVscGVyIGZyb20gJ3NvdXJjZXMvc2Vs ZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxwZXInOwogaW1wb3J0IFhDZWxs U2VsZWN0aW9uTW9kZWwgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24veGNlbGxf c2VsZWN0aW9uX21vZGVsJzsKLQogZGVzY3JpYmUoJ2NvcHlEYXRhJywgZnVu Y3Rpb24gKCkgewogICB2YXIgZ3JpZCwgc3FsRWRpdG9yLCBncmlkQ29udGFp bmVyLCBidXR0b25QYXN0ZVJvdzsKICAgdmFyIFNsaWNrR3JpZDsKIAogICBi ZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKICAgICBTbGlja0dyaWQgPSBTbGlj ay5HcmlkOwotICAgIHZhciBkYXRhID0gW1sxLCAnbGVvcG9yZCcsICcxMidd LAotICAgICAgWzIsICdsaW9uJywgJzEzJ10sCi0gICAgICBbMywgJ3B1bWEn LCAnOSddXTsKKyAgICB2YXIgZGF0YSA9IFt7J2lkJzogMSwgJ2JyYW5kJzon bGVvcG9yZCcsICdzaXplJzonMTInLCAnX190ZW1wX1BLJzogJzEyMyd9LAor ICAgICAgICAgICAgICAgIHsnaWQnOiAyLCAnYnJhbmQnOidsaW9uJywgJ3Np emUnOicxMycsICdfX3RlbXBfUEsnOiAnNDU2J30sCisgICAgICAgICAgICAg ICAgeydpZCc6IDMsICdicmFuZCc6J3B1bWEnLCAnc2l6ZSc6JzknLCAnX190 ZW1wX1BLJzogJzc4OSd9XSwKKyAgICAgIGRhdGFWaWV3ID0gbmV3IFNsaWNr LkRhdGEuRGF0YVZpZXcoKTsKIAogICAgIHZhciBjb2x1bW5zID0gWwogICAg ICAgewpAQCAtMzcsNiArMzcsNyBAQCBkZXNjcmliZSgnY29weURhdGEnLCBm dW5jdGlvbiAoKSB7CiAgICAgICB9LAogICAgICAgewogICAgICAgICBuYW1l OiAnaWQnLAorICAgICAgICBmaWVsZDogJ2lkJywKICAgICAgICAgcG9zOiAw LAogICAgICAgICBsYWJlbDogJ2lkPGJyPiBudW1lcmljJywKICAgICAgICAg Y2VsbDogJ251bWJlcicsCkBAIC00NCw2ICs0NSw3IEBAIGRlc2NyaWJlKCdj b3B5RGF0YScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgdHlwZTogJ251bWVy aWMnLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYnJhbmQnLAorICAg ICAgICBmaWVsZDogJ2JyYW5kJywKICAgICAgICAgcG9zOiAxLAogICAgICAg ICBsYWJlbDogJ2ZsYXZvcjxicj4gY2hhcmFjdGVyIHZhcnlpbmcnLAogICAg ICAgICBjZWxsOiAnc3RyaW5nJywKQEAgLTUxLDI0ICs1MywyNiBAQCBkZXNj cmliZSgnY29weURhdGEnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHR5cGU6 ICdjaGFyYWN0ZXIgdmFyeWluZycsCiAgICAgICB9LCB7CiAgICAgICAgIG5h bWU6ICdzaXplJywKKyAgICAgICAgZmllbGQ6ICdzaXplJywKICAgICAgICAg cG9zOiAyLAogICAgICAgICBsYWJlbDogJ3NpemU8YnI+IG51bWVyaWMnLAog ICAgICAgICBjZWxsOiAnbnVtYmVyJywKICAgICAgICAgY2FuX2VkaXQ6IGZh bHNlLAogICAgICAgICB0eXBlOiAnbnVtZXJpYycsCiAgICAgICB9LAotICAg IF0KLSAgICA7Ci0gICAgZ3JpZENvbnRhaW5lciA9ICQoJzxkaXYgaWQ9XCdn cmlkXCc+PC9kaXY+Jyk7CisgICAgXTsKKyAgICBncmlkQ29udGFpbmVyID0g JCgnPGRpdiBpZD0iZ3JpZCI+PC9kaXY+Jyk7CiAgICAgJCgnYm9keScpLmFw cGVuZChncmlkQ29udGFpbmVyKTsKLSAgICBidXR0b25QYXN0ZVJvdyA9ICQo JzxidXR0b24gaWQ9XCdidG4tcGFzdGUtcm93XCcgZGlzYWJsZWQ+PC9idXR0 b24+Jyk7CisgICAgYnV0dG9uUGFzdGVSb3cgPSAkKCc8YnV0dG9uIGlkPSJi dG4tcGFzdGUtcm93IiBkaXNhYmxlZD48L2J1dHRvbj4nKTsKICAgICAkKCdi b2R5JykuYXBwZW5kKGJ1dHRvblBhc3RlUm93KTsKLSAgICBncmlkID0gbmV3 IFNsaWNrR3JpZCgnI2dyaWQnLCBkYXRhLCBjb2x1bW5zLCB7fSk7CisgICAg Z3JpZCA9IG5ldyBTbGlja0dyaWQoJyNncmlkJywgZGF0YVZpZXcsIGNvbHVt bnMsIHt9KTsKKyAgICBkYXRhVmlldy5zZXRJdGVtcyhkYXRhLCAnX190ZW1w X1BLJyk7CiAgICAgZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChuZXcgWENlbGxT ZWxlY3Rpb25Nb2RlbCgpKTsKICAgICBzcWxFZGl0b3IgPSB7c2xpY2tncmlk OiBncmlkfTsKICAgfSk7CiAKLSAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsK KyAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkgeworICAgIGdyaWQuZGVzdHJveSgp OwogICAgIGdyaWRDb250YWluZXIucmVtb3ZlKCk7CiAgICAgYnV0dG9uUGFz dGVSb3cucmVtb3ZlKCk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2 aWdhdG9yX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Nl bGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3Jfc3BlYy5qcwppbmRl eCAxZGU2ZDgxLi4yZDU2YjA1IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0 b3Jfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Nl bGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3Jfc3BlYy5qcwpAQCAt MTM0LDE3ICsxMzQsMTkgQEAgZGVzY3JpYmUoJ1JhbmdlQm91bmRhcnlOYXZp Z2F0b3InLCBmdW5jdGlvbiAoKSB7CiAgIGRlc2NyaWJlKCcjcmFuZ2VzVG9D c3YnLCBmdW5jdGlvbiAoKSB7CiAgICAgdmFyIGRhdGEsIGNvbHVtbkRlZmlu aXRpb25zLCByYW5nZXM7CiAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7 Ci0gICAgICBkYXRhID0gW1sxLCAnbGVvcGFyZCcsICcxMiddLAotICAgICAg ICBbMiwgJ2xpb24nLCAnMTMnXSwKLSAgICAgICAgWzMsICdjb3VnYXInLCAn OSddLAotICAgICAgICBbNCwgJ3RpZ2VyJywgJzEwJ11dOwotICAgICAgY29s dW1uRGVmaW5pdGlvbnMgPSBbe25hbWU6ICdpZCcsIHBvczogMH0sIHtuYW1l OiAnYW5pbWFsJywgcG9zOiAxfSwge25hbWU6ICdzaXplJywgcG9zOiAyfV07 CisgICAgICBkYXRhID0gW3snaWQnOjEsICdhbmltYWwnOidsZW9wYXJkJywg J3NpemUnOicxMid9LAorICAgICAgICAgICAgICB7J2lkJzoyLCAnYW5pbWFs JzonbGlvbicsICdzaXplJzonMTMnfSwKKyAgICAgICAgICAgICAgeydpZCc6 MywgJ2FuaW1hbCc6J2NvdWdhcicsICdzaXplJzonOSd9LAorICAgICAgICAg ICAgICB7J2lkJzo0LCAnYW5pbWFsJzondGlnZXInLCAnc2l6ZSc6JzEwJ31d OworCisgICAgICBjb2x1bW5EZWZpbml0aW9ucyA9IFt7bmFtZTogJ2lkJywg ZmllbGQ6ICdpZCcsIHBvczogMH0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAge25hbWU6ICdhbmltYWwnLCBmaWVsZDogJ2FuaW1hbCcsIHBvczog MX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdzaXpl JywgZmllbGQ6ICdzaXplJywgcG9zOiAyfV07CiAgICAgICByYW5nZXMgPSBb bmV3IFNsaWNrLlJhbmdlKDAsIDAsIDAsIDIpLCBuZXcgU2xpY2suUmFuZ2Uo MywgMCwgMywgMildOwogICAgIH0pOwogCiAgICAgaXQoJ3JldHVybnMgY3N2 IGZvciB0aGUgcHJvdmlkZWQgcmFuZ2VzJywgZnVuY3Rpb24gKCkgewogICAg ICAgdmFyIGNzdlJlc3VsdCA9IHJhbmdlQm91bmRhcnlOYXZpZ2F0b3IucmFu Z2VzVG9Dc3YoZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHJhbmdlcyk7Ci0K ICAgICAgIGV4cGVjdChjc3ZSZXN1bHQpLnRvRXF1YWwoJzEsXCdsZW9wYXJk XCcsXCcxMlwnXG40LFwndGlnZXJcJyxcJzEwXCcnKTsKICAgICB9KTsKIApA QCAtMTU4LDEwICsxNjAsMTAgQEAgZGVzY3JpYmUoJ1JhbmdlQm91bmRhcnlO YXZpZ2F0b3InLCBmdW5jdGlvbiAoKSB7CiAKICAgICBkZXNjcmliZSgnd2hl biB0aGVyZSBpcyBhbiBleHRyYSBjb2x1bW4gd2l0aCBjaGVja2JveGVzJywg ZnVuY3Rpb24gKCkgewogICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7 Ci0gICAgICAgIGNvbHVtbkRlZmluaXRpb25zID0gW3tuYW1lOiAnbm90LWEt ZGF0YS1jb2x1bW4nfSwge25hbWU6ICdpZCcsIHBvczogMH0sIHtuYW1lOiAn YW5pbWFsJywgcG9zOiAxfSwgewotICAgICAgICAgIG5hbWU6ICdzaXplJywK LSAgICAgICAgICBwb3M6IDIsCi0gICAgICAgIH1dOworICAgICAgICBjb2x1 bW5EZWZpbml0aW9ucyA9IFt7bmFtZTogJ25vdC1hLWRhdGEtY29sdW1uJ30s CisgICAgICAgICAge25hbWU6ICdpZCcsIGZpZWxkOiAnaWQnLCBwb3M6IDB9 LAorICAgICAgICAgIHtuYW1lOiAnYW5pbWFsJywgZmllbGQ6ICdhbmltYWwn LCBwb3M6IDF9LAorICAgICAgICAgIHtuYW1lOiAnc2l6ZScsIGZpZWxkOiAn c2l6ZScscG9zOiAyfV07CiAgICAgICAgIHJhbmdlcyA9IFtuZXcgU2xpY2su UmFuZ2UoMCwgMCwgMCwgMyksIG5ldyBTbGljay5SYW5nZSgzLCAwLCAzLCAz KV07CiAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9zZWxlY3Rpb24vcm93X3NlbGVjdG9yX3NwZWMuanMgYi93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yb3dfc2VsZWN0 b3Jfc3BlYy5qcwppbmRleCBkYjNjMGI0Li5kNDE1MmY4IDEwMDY0NAotLS0g YS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yb3dfc2Vs ZWN0b3Jfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NlbGVjdGlvbi9yb3dfc2VsZWN0b3Jfc3BlYy5qcwpAQCAtNiwxMSArNiwx MSBAQAogLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KLQogaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIAogaW1wb3J0 IFNsaWNrIGZyb20gJ3NsaWNrZ3JpZCc7CiBpbXBvcnQgJ3NsaWNrZ3JpZC5n cmlkJzsKK2ltcG9ydCAnc2xpY2suZGF0YXZpZXcnOwogCiBpbXBvcnQgUm93 U2VsZWN0b3IgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24vcm93X3NlbGVjdG9y JzsKIGltcG9ydCBBY3RpdmVDZWxsQ2FwdHVyZSBmcm9tICdzb3VyY2VzL3Nl bGVjdGlvbi9hY3RpdmVfY2VsbF9jYXB0dXJlJzsKQEAgLTIzLDcgKzIzLDcg QEAgZGVzY3JpYmUoJ1Jvd1NlbGVjdG9yJywgZnVuY3Rpb24gKCkgewogICAg IFVQOiAzOCwKICAgICBET1dOOiA0MCwKICAgfTsKLSAgdmFyIGNvbnRhaW5l ciwgZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIGdyaWQsIGNlbGxTZWxlY3Rp b25Nb2RlbDsKKyAgdmFyIGNvbnRhaW5lciwgZGF0YVZpZXcsIGNvbHVtbkRl ZmluaXRpb25zLCBncmlkLCBjZWxsU2VsZWN0aW9uTW9kZWw7CiAgIHZhciBT bGlja0dyaWQgPSBTbGljay5HcmlkOwogCiAgIGJlZm9yZUVhY2goZnVuY3Rp b24gKCkgewpAQCAtNDMsMTQgKzQzLDE1IEBAIGRlc2NyaWJlKCdSb3dTZWxl Y3RvcicsIGZ1bmN0aW9uICgpIHsKICAgICAgIHBvczogMSwKICAgICB9XTsK IAorICAgIGRhdGFWaWV3ID0gbmV3IFNsaWNrLkRhdGEuRGF0YVZpZXcoKTsK ICAgICB2YXIgcm93U2VsZWN0b3IgPSBuZXcgUm93U2VsZWN0b3IoKTsKLSAg ICBkYXRhID0gW107CisgICAgdmFyIGRhdGEgPSBbXTsKICAgICBmb3IgKHZh ciBpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgIGRhdGEucHVzaChbJ3Nv bWUtdmFsdWUtJyArIGksICdzZWNvbmQgdmFsdWUgJyArIGldKTsKKyAgICAg IGRhdGEucHVzaCh7J3NvbWUtY29sdW1uLW5hbWUnOidzb21lLXZhbHVlLScg KyBpLCAnc2Vjb25kIGNvbHVtbic6J3NlY29uZCB2YWx1ZSAnICsgaX0pOwog ICAgIH0KICAgICBjb2x1bW5EZWZpbml0aW9ucyA9IHJvd1NlbGVjdG9yLmdl dENvbHVtbkRlZmluaXRpb25zKGNvbHVtbkRlZmluaXRpb25zKTsKLSAgICBn cmlkID0gbmV3IFNsaWNrR3JpZChjb250YWluZXIsIGRhdGEsIGNvbHVtbkRl ZmluaXRpb25zKTsKLQorICAgIGRhdGFWaWV3LnNldEl0ZW1zKGRhdGEsICdz b21lLWNvbHVtbi1uYW1lJyk7CisgICAgZ3JpZCA9IG5ldyBTbGlja0dyaWQo Y29udGFpbmVyLCBkYXRhVmlldywgY29sdW1uRGVmaW5pdGlvbnMpOwogICAg IGdyaWQucmVnaXN0ZXJQbHVnaW4obmV3IEFjdGl2ZUNlbGxDYXB0dXJlKCkp OwogICAgIGNlbGxTZWxlY3Rpb25Nb2RlbCA9IG5ldyBYQ2VsbFNlbGVjdGlv bk1vZGVsKCk7CiAgICAgZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChjZWxsU2Vs ZWN0aW9uTW9kZWwpOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zZWxlY3Rpb24vc2V0X3N0YWdlZF9yb3dzX3NwZWMuanMgYi93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9zZXRfc3RhZ2Vk X3Jvd3Nfc3BlYy5qcwppbmRleCA2NzM1MzE0Li5jZjIwMWM0IDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9zZXRf c3RhZ2VkX3Jvd3Nfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L3NlbGVjdGlvbi9zZXRfc3RhZ2VkX3Jvd3Nfc3BlYy5qcwpAQCAt NywyMzYgKzcsMjQ4IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotZGVm aW5lKFsKLSAgJ2pxdWVyeScsCi0gICd1bmRlcnNjb3JlJywKLSAgJ3NvdXJj ZXMvc2VsZWN0aW9uL3NldF9zdGFnZWRfcm93cycsCi1dLCBmdW5jdGlvbiAo JCwgXywgU2V0U3RhZ2VkUm93cykgewotICBkZXNjcmliZSgnc2V0X3N0YWdl ZF9yb3dzJywgZnVuY3Rpb24gKCkgewotICAgIHZhciBzcWxFZGl0b3JPYmos IGdyaWRTcHksIGRlbGV0ZUJ1dHRvbiwgY29weUJ1dHRvbiwgc2VsZWN0aW9u U3B5OwotICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgZ3Jp ZFNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdncmlkU3B5JywgWydnZXRE YXRhJywgJ2dldENlbGxOb2RlJywgJ2dldENvbHVtbnMnXSk7Ci0gICAgICBn cmlkU3B5LmdldERhdGEuYW5kLnJldHVyblZhbHVlKFsKLSAgICAgICAgezA6 ICdvbmUnLCAxOiAndHdvJywgX190ZW1wX1BLOiAnMTIzJ30sCi0gICAgICAg IHswOiAndGhyZWUnLCAxOiAnZm91cicsIF9fdGVtcF9QSzogJzQ1Nid9LAot ICAgICAgICB7MDogJ2ZpdmUnLCAxOiAnc2l4JywgX190ZW1wX1BLOiAnNzg5 J30sCi0gICAgICAgIHswOiAnc2V2ZW4nLCAxOiAnZWlnaHQnLCBfX3RlbXBf UEs6ICc0MzInfSwKLSAgICAgIF0pOwotICAgICAgZ3JpZFNweS5nZXRDb2x1 bW5zLmFuZC5yZXR1cm5WYWx1ZShbCitpbXBvcnQgJCBmcm9tICdqcXVlcnkn OworaW1wb3J0ICdzbGlja2dyaWQuZ3JpZCc7CitpbXBvcnQgU2xpY2sgZnJv bSAnc2xpY2tncmlkJzsKK2ltcG9ydCAnc2xpY2suZGF0YXZpZXcnOworaW1w b3J0IFNldFN0YWdlZFJvd3MgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24vc2V0 X3N0YWdlZF9yb3dzJzsKKworZGVzY3JpYmUoJ3NldF9zdGFnZWRfcm93cycs IGZ1bmN0aW9uICgpIHsKKyAgdmFyIHNxbEVkaXRvck9iaiwgZ3JpZFNweSwg ZGVsZXRlQnV0dG9uLCBjb3B5QnV0dG9uLCBzZWxlY3Rpb25TcHk7CisgIGJl Zm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgIHZhciBkYXRhID0gW3snYSBw ayBjb2x1bW4nOiAnb25lJywgJ3NvbWUgY29sdW1uJzogJ3R3bycsICdfX3Rl bXBfUEsnOiAnMTIzJ30sCisgICAgICAgIHsnYSBwayBjb2x1bW4nOiAndGhy ZWUnLCAnc29tZSBjb2x1bW4nOiAnZm91cicsICdfX3RlbXBfUEsnOiAnNDU2 J30sCisgICAgICAgIHsnYSBwayBjb2x1bW4nOiAnZml2ZScsICdzb21lIGNv bHVtbic6ICdzaXgnLCAnX190ZW1wX1BLJzogJzc4OSd9LAorICAgICAgICB7 J2EgcGsgY29sdW1uJzogJ3NldmVuJywgJ3NvbWUgY29sdW1uJzogJ2VpZ2h0 JywgJ19fdGVtcF9QSyc6ICc0MzInfV0sCisgICAgICBkYXRhVmlldyA9IG5l dyBTbGljay5EYXRhLkRhdGFWaWV3KCk7CisKKyAgICBkYXRhVmlldy5zZXRJ dGVtcyhkYXRhLCAnX190ZW1wX1BLJyk7CisKKyAgICBncmlkU3B5ID0gamFz bWluZS5jcmVhdGVTcHlPYmooJ2dyaWRTcHknLCBbJ2dldERhdGEnLCAnZ2V0 Q2VsbE5vZGUnLCAnZ2V0Q29sdW1ucyddKTsKKyAgICBncmlkU3B5LmdldERh dGEuYW5kLnJldHVyblZhbHVlKGRhdGFWaWV3KTsKKyAgICBncmlkU3B5Lmdl dENvbHVtbnMuYW5kLnJldHVyblZhbHVlKFsKKyAgICAgIHsKKyAgICAgICAg bmFtZTogJ2EgcGsgY29sdW1uJywKKyAgICAgICAgZmllbGQ6ICdhIHBrIGNv bHVtbicsCisgICAgICAgIHBvczogMCwKKyAgICAgICAgc2VsZWN0YWJsZTog dHJ1ZSwKKyAgICAgIH0sIHsKKyAgICAgICAgbmFtZTogJ3NvbWUgY29sdW1u JywKKyAgICAgICAgZmllbGQ6ICdzb21lIGNvbHVtbicsCisgICAgICAgIHBv czogMSwKKyAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSwKKyAgICAgIH0sCisg ICAgXSk7CisgICAgc2VsZWN0aW9uU3B5ID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ3NlbGVjdGlvblNweScsIFsnc2V0U2VsZWN0ZWRSb3dzJywgJ2dldFNl bGVjdGVkUmFuZ2VzJ10pOworICAgIGRlbGV0ZUJ1dHRvbiA9ICQoJzxidXR0 b24gaWQ9ImJ0bi1kZWxldGUtcm93Ij48L2J1dHRvbj4nKTsKKyAgICBjb3B5 QnV0dG9uID0gJCgnPGJ1dHRvbiBpZD0iYnRuLWNvcHktcm93Ij48L2J1dHRv bj4nKTsKKworICAgIHNxbEVkaXRvck9iaiA9IHsKKyAgICAgIGdyaWQ6IGdy aWRTcHksCisgICAgICBlZGl0b3I6IHsKKyAgICAgICAgaGFuZGxlcjogewor ICAgICAgICAgIGRhdGFfc3RvcmU6IHsKKyAgICAgICAgICAgIHN0YWdlZF9y b3dzOiB7JzQ1Nic6IHt9fSwKKyAgICAgICAgICB9LAorICAgICAgICAgIGNh bl9lZGl0OiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgICBr ZXlzOiBudWxsLAorICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb25TcHksCisg ICAgICBjb2x1bW5zOiBbCiAgICAgICAgIHsKKyAgICAgICAgICBuYW1lOiAn YSBwayBjb2x1bW4nLAorICAgICAgICAgIGZpZWxkOiAnYSBwayBjb2x1bW4n LAogICAgICAgICAgIHBvczogMCwKLSAgICAgICAgICBzZWxlY3RhYmxlOiB0 cnVlLAotICAgICAgICB9LCB7CisgICAgICAgIH0sCisgICAgICAgIHsKKyAg ICAgICAgICBuYW1lOiAnc29tZSBjb2x1bW4nLAorICAgICAgICAgIGZpZWxk OiAnc29tZSBjb2x1bW4nLAogICAgICAgICAgIHBvczogMSwKLSAgICAgICAg ICBzZWxlY3RhYmxlOiB0cnVlLAogICAgICAgICB9LAotICAgICAgXSk7Cisg ICAgICBdLAorICAgICAgY2xpZW50X3ByaW1hcnlfa2V5OiAnX190ZW1wX1BL JywKKyAgICB9OwogCi0gICAgICBzZWxlY3Rpb25TcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignc2VsZWN0aW9uU3B5JywgWydzZXRTZWxlY3RlZFJvd3Mn LCAnZ2V0U2VsZWN0ZWRSYW5nZXMnXSk7CisgICAgJCgnYm9keScpLmFwcGVu ZChkZWxldGVCdXR0b24pOworICAgICQoJ2JvZHknKS5hcHBlbmQoY29weUJ1 dHRvbik7CiAKLSAgICAgIGRlbGV0ZUJ1dHRvbiA9ICQoJzxidXR0b24gaWQ9 ImJ0bi1kZWxldGUtcm93Ij48L2J1dHRvbj4nKTsKLSAgICAgIGNvcHlCdXR0 b24gPSAkKCc8YnV0dG9uIGlkPSJidG4tY29weS1yb3ciPjwvYnV0dG9uPicp OworICAgIGRlbGV0ZUJ1dHRvbi5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwor ICAgIGNvcHlCdXR0b24ucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKIAotICAg ICAgc3FsRWRpdG9yT2JqID0gewotICAgICAgICBncmlkOiBncmlkU3B5LAot ICAgICAgICBlZGl0b3I6IHsKLSAgICAgICAgICBoYW5kbGVyOiB7Ci0gICAg ICAgICAgICBkYXRhX3N0b3JlOiB7Ci0gICAgICAgICAgICAgIHN0YWdlZF9y b3dzOiB7JzQ1Nic6IHt9fSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg ICBjYW5fZWRpdDogZmFsc2UsCi0gICAgICAgICAgfSwKLSAgICAgICAgfSwK LSAgICAgICAga2V5czogbnVsbCwKLSAgICAgICAgc2VsZWN0aW9uOiBzZWxl Y3Rpb25TcHksCi0gICAgICAgIGNvbHVtbnM6IFsKLSAgICAgICAgICB7Ci0g ICAgICAgICAgICBuYW1lOiAnYSBwayBjb2x1bW4nLAotICAgICAgICAgICAg cG9zOiAwLAotICAgICAgICAgIH0sCi0gICAgICAgICAgewotICAgICAgICAg ICAgbmFtZTogJ3NvbWUgY29sdW1uJywKLSAgICAgICAgICAgIHBvczogMSwK LSAgICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgfTsKKyAgICBzZWxl Y3Rpb25TcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignc2VsZWN0aW9uU3B5 JywgWworICAgICAgJ3NldFNlbGVjdGVkUm93cycsCisgICAgICAnZ2V0U2Vs ZWN0ZWRSYW5nZXMnLAorICAgIF0pOworICB9KTsKIAotICAgICAgJCgnYm9k eScpLmFwcGVuZChkZWxldGVCdXR0b24pOwotICAgICAgJCgnYm9keScpLmFw cGVuZChjb3B5QnV0dG9uKTsKKyAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsK KyAgICBjb3B5QnV0dG9uLnJlbW92ZSgpOworICAgIGRlbGV0ZUJ1dHRvbi5y ZW1vdmUoKTsKKyAgfSk7CisgIGRlc2NyaWJlKCd3aGVuIG5vIGZ1bGwgcm93 cyBhcmUgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUo J3doZW4gbm90aGluZyBpcyBzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsKKyAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICBzZWxlY3Rp b25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMuYW5kLnJldHVyblZhbHVlKFtdKTsK KyAgICAgICAgc3FsRWRpdG9yT2JqLnNlbGVjdGlvbiA9IHNlbGVjdGlvblNw eTsKKyAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVkaXRvck9iaiwg e30sIHt9KTsKKyAgICAgIH0pOwogCi0gICAgICBkZWxldGVCdXR0b24ucHJv cCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgIGNvcHlCdXR0b24ucHJvcCgn ZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0 aGUgZGVsZXRlIHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAg IGV4cGVjdCgkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcp KS50b0JlVHJ1dGh5KCk7CisgICAgICB9KTsKIAotICAgICAgc2VsZWN0aW9u U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3NlbGVjdGlvblNweScsIFsK LSAgICAgICAgJ3NldFNlbGVjdGVkUm93cycsCi0gICAgICAgICdnZXRTZWxl Y3RlZFJhbmdlcycsCi0gICAgICBdKTsKLSAgICB9KTsKKyAgICAgIGl0KCdz aG91bGQgZGlzYWJsZSB0aGUgY29weSByb3cgYnV0dG9uJywgZnVuY3Rpb24g KCkgeworICAgICAgICBleHBlY3QoJCgnI2J0bi1jb3B5LXJvdycpLnByb3Ao J2Rpc2FibGVkJykpLnRvQmVUcnV0aHkoKTsKKyAgICAgIH0pOwogCi0gICAg YWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgIGNvcHlCdXR0b24ucmVt b3ZlKCk7Ci0gICAgICBkZWxldGVCdXR0b24ucmVtb3ZlKCk7CisgICAgICBp dCgnc2hvdWxkIGNsZWFyIHN0YWdlZCByb3dzJywgZnVuY3Rpb24gKCkgewor ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVkaXRvci5oYW5kbGVyLmRh dGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwoe30pOworICAgICAgfSk7 CiAgICAgfSk7Ci0gICAgZGVzY3JpYmUoJ3doZW4gbm8gZnVsbCByb3dzIGFy ZSBzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGRlc2NyaWJlKCd3 aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHNlbGVj dGlvblNweS5nZXRTZWxlY3RlZFJhbmdlcy5hbmQucmV0dXJuVmFsdWUoW10p OwotICAgICAgICAgIHNxbEVkaXRvck9iai5zZWxlY3Rpb24gPSBzZWxlY3Rp b25TcHk7Ci0gICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVkaXRv ck9iaiwge30sIHt9KTsKLSAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3No b3VsZCBkaXNhYmxlIHRoZSBkZWxldGUgcm93IGJ1dHRvbicsIGZ1bmN0aW9u ICgpIHsKLSAgICAgICAgICBleHBlY3QoJCgnI2J0bi1kZWxldGUtcm93Jyku cHJvcCgnZGlzYWJsZWQnKSkudG9CZVRydXRoeSgpOwotICAgICAgICB9KTsK KyAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBhIHNlbGVjdGlvbicsIGZ1 bmN0aW9uICgpIHsKKyAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewor ICAgICAgICB2YXIgcmFuZ2UgPSB7CisgICAgICAgICAgZnJvbUNlbGw6IDAs CisgICAgICAgICAgdG9DZWxsOiAwLAorICAgICAgICAgIGZyb21Sb3c6IDEs CisgICAgICAgICAgdG9Sb3c6IDEsCisgICAgICAgIH07CiAKLSAgICAgICAg aXQoJ3Nob3VsZCBkaXNhYmxlIHRoZSBjb3B5IHJvdyBidXR0b24nLCBmdW5j dGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KCQoJyNidG4tY29weS1yb3cn KS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlVHJ1dGh5KCk7Ci0gICAgICAgIH0p OworICAgICAgICBzZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMuYW5k LnJldHVyblZhbHVlKFtyYW5nZV0pOworICAgICAgICBzcWxFZGl0b3JPYmou c2VsZWN0aW9uID0gc2VsZWN0aW9uU3B5OworICAgICAgICBTZXRTdGFnZWRS b3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOworICAgICAgfSk7CiAK LSAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBzdGFnZWQgcm93cycsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVkaXRv ci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwoe30p OwotICAgICAgICB9KTsKKyAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUg ZGVsZXRlIHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV4 cGVjdCgkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50 b0JlVHJ1dGh5KCk7CiAgICAgICB9KTsKIAotICAgICAgZGVzY3JpYmUoJ3do ZW4gdGhlcmUgaXMgYSBzZWxlY3Rpb24nLCBmdW5jdGlvbiAoKSB7Ci0gICAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHZhciBy YW5nZSA9IHsKLSAgICAgICAgICAgIGZyb21DZWxsOiAwLAotICAgICAgICAg ICAgdG9DZWxsOiAwLAotICAgICAgICAgICAgZnJvbVJvdzogMSwKLSAgICAg ICAgICAgIHRvUm93OiAxLAotICAgICAgICAgIH07Ci0KLSAgICAgICAgICBz ZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMuYW5kLnJldHVyblZhbHVl KFtyYW5nZV0pOwotICAgICAgICAgIHNxbEVkaXRvck9iai5zZWxlY3Rpb24g PSBzZWxlY3Rpb25TcHk7Ci0gICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxs KHNxbEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgfSk7CisgICAgICBp dCgnc2hvdWxkIGRpc2FibGUgdGhlIGNvcHkgcm93IGJ1dHRvbicsIGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KCQoJyNidG4tY29weS1yb3cnKS5w cm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKKyAgICAgIH0pOwogCi0g ICAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgZGVsZXRlIHJvdyBidXR0 b24nLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KCQoJyNidG4t ZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJykpLnRvQmVUcnV0aHkoKTsK LSAgICAgICAgfSk7CisgICAgICBpdCgnc2hvdWxkIGNsZWFyIHN0YWdlZCBy b3dzJywgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBlY3Qoc3FsRWRpdG9y T2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRv RXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOwogCi0gICAg ICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgY29weSByb3cgYnV0dG9uJywg ZnVuY3Rpb24gKCkgewotICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWNvcHkt cm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7Ci0gICAgICAg IH0pOworICBkZXNjcmliZSgnd2hlbiAyIGZ1bGwgcm93cyBhcmUgc2VsZWN0 ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAo KSB7CisgICAgICB2YXIgcmFuZ2UxID0geworICAgICAgICBmcm9tQ2VsbDog MCwKKyAgICAgICAgdG9DZWxsOiAxLAorICAgICAgICBmcm9tUm93OiAxLAor ICAgICAgICB0b1JvdzogMSwKKyAgICAgIH07CisgICAgICB2YXIgcmFuZ2Uy ID0geworICAgICAgICBmcm9tQ2VsbDogMCwKKyAgICAgICAgdG9DZWxsOiAx LAorICAgICAgICBmcm9tUm93OiAyLAorICAgICAgICB0b1JvdzogMiwKKyAg ICAgIH07CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBzdGFnZWQgcm93 cycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9y T2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRv RXF1YWwoe30pOwotICAgICAgICB9KTsKLSAgICAgIH0pOworICAgICAgc2Vs ZWN0aW9uU3B5LmdldFNlbGVjdGVkUmFuZ2VzLmFuZC5yZXR1cm5WYWx1ZShb cmFuZ2UxLCByYW5nZTJdKTsKKyAgICAgIHNxbEVkaXRvck9iai5zZWxlY3Rp b24gPSBzZWxlY3Rpb25TcHk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgn d2hlbiAyIGZ1bGwgcm93cyBhcmUgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7 Ci0gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFy IHJhbmdlMSA9IHsKLSAgICAgICAgICBmcm9tQ2VsbDogMCwKLSAgICAgICAg ICB0b0NlbGw6IDEsCi0gICAgICAgICAgZnJvbVJvdzogMSwKLSAgICAgICAg ICB0b1JvdzogMSwKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIHJhbmdlMiA9 IHsKLSAgICAgICAgICBmcm9tQ2VsbDogMCwKLSAgICAgICAgICB0b0NlbGw6 IDEsCi0gICAgICAgICAgZnJvbVJvdzogMiwKLSAgICAgICAgICB0b1Jvdzog MiwKLSAgICAgICAgfTsKKyAgICBkZXNjcmliZSgnd2hlbiB0YWJsZSBkb2Vz IG5vdCBoYXZlIHByaW1hcnkga2V5cycsIGZ1bmN0aW9uICgpIHsKKyAgICAg IGl0KCdzaG91bGQgZW5hYmxlIHRoZSBjb3B5IHJvdyBidXR0b24nLCBmdW5j dGlvbiAoKSB7CisgICAgICAgIFNldFN0YWdlZFJvd3MuY2FsbChzcWxFZGl0 b3JPYmosIHt9LCB7fSk7CisgICAgICAgIGV4cGVjdCgkKCcjYnRuLWNvcHkt cm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7CisgICAgICB9 KTsKIAotICAgICAgICBzZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMu YW5kLnJldHVyblZhbHVlKFtyYW5nZTEsIHJhbmdlMl0pOwotICAgICAgICBz cWxFZGl0b3JPYmouc2VsZWN0aW9uID0gc2VsZWN0aW9uU3B5OworICAgICAg aXQoJ3Nob3VsZCBub3QgZW5hYmxlIHRoZSBkZWxldGUgcm93IGJ1dHRvbics IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNx bEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgZXhwZWN0KCQoJyNidG4t ZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJykpLnRvQmVUcnV0aHkoKTsK ICAgICAgIH0pOwogCi0gICAgICBkZXNjcmliZSgnd2hlbiB0YWJsZSBkb2Vz IG5vdCBoYXZlIHByaW1hcnkga2V5cycsIGZ1bmN0aW9uICgpIHsKLSAgICAg ICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIGNvcHkgcm93IGJ1dHRvbicsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3Fs RWRpdG9yT2JqLCB7fSwge30pOwotICAgICAgICAgIGV4cGVjdCgkKCcjYnRu LWNvcHktcm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7Ci0g ICAgICAgIH0pOworICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgc3RhZ2VkIHJv d3Mgd2l0aCB0aGUgX190ZW1wX1BLIHZhbHVlIG9mIHRoZSBuZXcgU2VsZWN0 ZWQgUm93cycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgU2V0U3RhZ2VkUm93 cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgZXhwZWN0 KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5kYXRhX3N0b3JlLnN0YWdl ZF9yb3dzKS50b0VxdWFsKHsnNDU2Jzoge30sICc3ODknOiB7fX0pOworICAg ICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3QgZW5hYmxlIHRoZSBk ZWxldGUgcm93IGJ1dHRvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGRlc2Ny aWJlKCd0aGUgdXNlciBjYW4gZWRpdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIGRlbGV0ZSByb3cgYnV0dG9uJywg ZnVuY3Rpb24gKCkgeworICAgICAgICAgIHNxbEVkaXRvck9iai5lZGl0b3Iu aGFuZGxlci5jYW5fZWRpdCA9IHRydWU7CiAgICAgICAgICAgU2V0U3RhZ2Vk Um93cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgICBl eHBlY3QoJCgnI2J0bi1kZWxldGUtcm93JykucHJvcCgnZGlzYWJsZWQnKSku dG9CZVRydXRoeSgpOworICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWRlbGV0 ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKICAgICAg ICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKIAotICAgICAgICBpdCgnc2hv dWxkIHVwZGF0ZSBzdGFnZWQgcm93cyB3aXRoIHRoZSBfX3RlbXBfUEsgdmFs dWUgb2YgdGhlIG5ldyBTZWxlY3RlZCBSb3dzJywgZnVuY3Rpb24gKCkgewor ICAgIGRlc2NyaWJlKCd3aGVuIHRhYmxlIGhhcyBwcmltYXJ5IGtleXMnLCBm dW5jdGlvbiAoKSB7CisgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK KyAgICAgICAgc3FsRWRpdG9yT2JqLmtleXMgPSB7J2EgcGsgY29sdW1uJzog J3ZhcmNoYXInfTsKKyAgICAgICAgc3FsRWRpdG9yT2JqLmVkaXRvci5oYW5k bGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MgPSB7JzQ1Nic6IHsnYSBwayBj b2x1bW4nOiAndGhyZWUnfX07CisgICAgICB9KTsKKworICAgICAgZGVzY3Jp YmUoJ3NlbGVjdGVkIHJvd3MgaGF2ZSBwcmltYXJ5IGtleScsIGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHN0YWdlZCByb3dz IGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICBTZXRTdGFn ZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuZGF0YV9zdG9y ZS5zdGFnZWRfcm93cykudG9FcXVhbCh7JzQ1Nic6IHt9LCAnNzg5Jzoge319 KTsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVkaXRvci5oYW5k bGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwoCisgICAgICAg ICAgICB7JzQ1Nic6IHsnYSBwayBjb2x1bW4nOiAndGhyZWUnfSwgJzc4OSc6 IHsnYSBwayBjb2x1bW4nOiAnZml2ZSd9fSk7CiAgICAgICAgIH0pOwogCi0g ICAgICAgIGRlc2NyaWJlKCd0aGUgdXNlciBjYW4gZWRpdCcsIGZ1bmN0aW9u ICgpIHsKLSAgICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUgZGVsZXRl IHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBzcWxF ZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuY2FuX2VkaXQgPSB0cnVlOwotICAg ICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVkaXRvck9iaiwge30s IHt9KTsKLSAgICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWRlbGV0ZS1yb3cn KS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKLSAgICAgICAgICB9 KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgc2VsZWN0ZWQgcm93 cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcsIGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwg e30pOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JPYmouc2VsZWN0aW9u LnNldFNlbGVjdGVkUm93cykubm90LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCk7 CiAgICAgICAgIH0pOwogICAgICAgfSk7CiAKLSAgICAgIGRlc2NyaWJlKCd3 aGVuIHRhYmxlIGhhcyBwcmltYXJ5IGtleXMnLCBmdW5jdGlvbiAoKSB7Cisg ICAgICBkZXNjcmliZSgnc2VsZWN0ZWQgcm93cyBtaXNzaW5nIHByaW1hcnkg a2V5JywgZnVuY3Rpb24gKCkgewogICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBzcWxFZGl0b3JPYmoua2V5cyA9IHsnYSBw ayBjb2x1bW4nOiAndmFyY2hhcid9OwotICAgICAgICAgIHNxbEVkaXRvck9i ai5lZGl0b3IuaGFuZGxlci5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzID0geyc0 NTYnOiB7MDogJ3RocmVlJ319OwotICAgICAgICB9KTsKKyAgICAgICAgICB2 YXIgZGF0YSA9IFt7J2EgcGsgY29sdW1uJzogJ29uZScsICdzb21lIGNvbHVt bic6ICd0d28nLCAnX190ZW1wX1BLJzogJzEyMyd9LAorICAgICAgICAgICAg ICAgIHsnc29tZSBjb2x1bW4nOiAnZm91cicsICdfX3RlbXBfUEsnOiAnNDU2 J30sCisgICAgICAgICAgICAgICAgeydzb21lIGNvbHVtbic6ICdzaXgnLCAn X190ZW1wX1BLJzogJzc4OSd9LAorICAgICAgICAgICAgICAgIHsnYSBwayBj b2x1bW4nOiAnc2V2ZW4nLCAnc29tZSBjb2x1bW4nOiAnZWlnaHQnLCAnX190 ZW1wX1BLJzogJzQzMid9XSwKKyAgICAgICAgICAgIGRhdGFWaWV3ID0gbmV3 IFNsaWNrLkRhdGEuRGF0YVZpZXcoKTsKIAotICAgICAgICBkZXNjcmliZSgn c2VsZWN0ZWQgcm93cyBoYXZlIHByaW1hcnkga2V5JywgZnVuY3Rpb24gKCkg ewotICAgICAgICAgIGl0KCdzaG91bGQgc2V0IHRoZSBzdGFnZWQgcm93cyBj b3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBTZXRTdGFn ZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAgICAg ICAgZXhwZWN0KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5kYXRhX3N0 b3JlLnN0YWdlZF9yb3dzKS50b0VxdWFsKAotICAgICAgICAgICAgICB7JzQ1 Nic6IHswOiAndGhyZWUnfSwgJzc4OSc6IHswOiAnZml2ZSd9fSk7Ci0gICAg ICAgICAgfSk7CisgICAgICAgICAgZGF0YVZpZXcuc2V0SXRlbXMoZGF0YSwg J19fdGVtcF9QSycpOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2xl YXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICAgIFNldFN0YWdlZFJvd3MuY2FsbChz cWxFZGl0b3JPYmosIHt9LCB7fSk7Ci0gICAgICAgICAgICBleHBlY3Qoc3Fs RWRpdG9yT2JqLnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3MpLm5vdC50b0hh dmVCZWVuQ2FsbGVkV2l0aCgpOwotICAgICAgICAgIH0pOworICAgICAgICAg IGdyaWRTcHkuZ2V0RGF0YS5hbmQucmV0dXJuVmFsdWUoZGF0YVZpZXcpOwog ICAgICAgICB9KTsKIAotICAgICAgICBkZXNjcmliZSgnc2VsZWN0ZWQgcm93 cyBtaXNzaW5nIHByaW1hcnkga2V5JywgZnVuY3Rpb24gKCkgewotICAgICAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZ3Jp ZFNweS5nZXREYXRhLmFuZC5yZXR1cm5WYWx1ZShbCi0gICAgICAgICAgICAg IHswOiAnb25lJywgMTogJ3R3bycsIF9fdGVtcF9QSzogJzEyMyd9LAotICAg ICAgICAgICAgICB7MTogJ2ZvdXInLCBfX3RlbXBfUEs6ICc0NTYnfSwKLSAg ICAgICAgICAgICAgezE6ICdzaXgnLCBfX3RlbXBfUEs6ICc3ODknfSwKLSAg ICAgICAgICAgICAgezA6ICdzZXZlbicsIDE6ICdlaWdodCcsIF9fdGVtcF9Q SzogJzQzMid9LAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgfSk7Ci0K LSAgICAgICAgICBpdCgnc2hvdWxkIGNsZWFyIHRoZSBzdGFnZWQgcm93cycs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIFNldFN0YWdlZFJvd3MuY2Fs bChzcWxFZGl0b3JPYmosIHt9LCB7fSk7Ci0gICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yT2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2Vk X3Jvd3MpLnRvRXF1YWwoe30pOwotICAgICAgICAgIH0pOworICAgICAgICBp dCgnc2hvdWxkIGNsZWFyIHRoZSBzdGFnZWQgcm93cycsIGZ1bmN0aW9uICgp IHsKKyAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2Jq LCB7fSwge30pOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JPYmouZWRp dG9yLmhhbmRsZXIuZGF0YV9zdG9yZS5zdGFnZWRfcm93cykudG9FcXVhbCh7 fSk7CisgICAgICAgIH0pOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBjbGVh ciBzZWxlY3RlZCByb3dzIGluIENlbGwgU2VsZWN0aW9uIE1vZGVsJywgZnVu Y3Rpb24gKCkgewotICAgICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNx bEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgICAgIGV4cGVjdChzcWxF ZGl0b3JPYmouc2VsZWN0aW9uLnNldFNlbGVjdGVkUm93cykudG9IYXZlQmVl bkNhbGxlZFdpdGgoW10pOwotICAgICAgICAgIH0pOworICAgICAgICBpdCgn c2hvdWxkIGNsZWFyIHNlbGVjdGVkIHJvd3MgaW4gQ2VsbCBTZWxlY3Rpb24g TW9kZWwnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgU2V0U3RhZ2VkUm93 cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yT2JqLnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3MpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKFtdKTsKICAgICAgICAgfSk7CisgICAgICB9 KTsKIAotICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgc2VsZWN0ZWQgcm93 IGlzIGEgbmV3IHJvdycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICB2YXIg cGFyZW50RGl2OwotICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkg ewotICAgICAgICAgICAgdmFyIGNoaWxkRGl2ID0gJCgnPGRpdj48L2Rpdj4n KTsKLSAgICAgICAgICAgIHBhcmVudERpdiA9ICQoJzxkaXYgY2xhc3M9Im5l d19yb3ciPjwvZGl2PicpOwotICAgICAgICAgICAgcGFyZW50RGl2LmFwcGVu ZChjaGlsZERpdik7Ci0gICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKHBh cmVudERpdik7Ci0gICAgICAgICAgICBncmlkU3B5LmdldENlbGxOb2RlLmFu ZC5yZXR1cm5WYWx1ZShjaGlsZERpdik7Ci0gICAgICAgICAgICBTZXRTdGFn ZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAgICAg IH0pOworICAgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHNlbGVjdGVkIHJvdyBp cyBhIG5ldyByb3cnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBwYXJl bnREaXY7CisgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAg ICAgICAgIHZhciBjaGlsZERpdiA9ICQoJzxkaXY+PC9kaXY+Jyk7CisgICAg ICAgICAgcGFyZW50RGl2ID0gJCgnPGRpdiBjbGFzcz0ibmV3X3JvdyI+PC9k aXY+Jyk7CisgICAgICAgICAgcGFyZW50RGl2LmFwcGVuZChjaGlsZERpdik7 CisgICAgICAgICAgJCgnYm9keScpLmFwcGVuZChwYXJlbnREaXYpOworICAg ICAgICAgIGdyaWRTcHkuZ2V0Q2VsbE5vZGUuYW5kLnJldHVyblZhbHVlKGNo aWxkRGl2KTsKKyAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3FsRWRp dG9yT2JqLCB7fSwge30pOworICAgICAgICB9KTsKIAotICAgICAgICAgIGFm dGVyRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBwYXJlbnREaXYu cmVtb3ZlKCk7Ci0gICAgICAgICAgfSk7CisgICAgICAgIGFmdGVyRWFjaChm dW5jdGlvbiAoKSB7CisgICAgICAgICAgcGFyZW50RGl2LnJlbW92ZSgpOwor ICAgICAgICB9KTsKIAotICAgICAgICAgIGl0KCdzaG91bGQgbm90IGNsZWFy IHRoZSBzdGFnZWQgcm93cycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuZGF0YV9zdG9y ZS5zdGFnZWRfcm93cykudG9FcXVhbCh7Ci0gICAgICAgICAgICAgICc0NTYn OiB7MDogJ3RocmVlJ30sCi0gICAgICAgICAgICAgICc3ODknOiB7MDogJ2Zp dmUnfSwKLSAgICAgICAgICAgIH0pOworICAgICAgICBpdCgnc2hvdWxkIG5v dCBjbGVhciB0aGUgc3RhZ2VkIHJvd3MnLCBmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgZXhwZWN0KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5kYXRh X3N0b3JlLnN0YWdlZF9yb3dzKS50b0VxdWFsKHsKKyAgICAgICAgICAgICc0 NTYnOiB7J2EgcGsgY29sdW1uJzogJ3RocmVlJ30sCisgICAgICAgICAgICAn Nzg5JzogeydhIHBrIGNvbHVtbic6ICdmaXZlJ30sCiAgICAgICAgICAgfSk7 CisgICAgICAgIH0pOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2xl YXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JPYmou c2VsZWN0aW9uLnNldFNlbGVjdGVkUm93cykubm90LnRvSGF2ZUJlZW5DYWxs ZWQoKTsKLSAgICAgICAgICB9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qg Y2xlYXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcs IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2Jq LnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3MpLm5vdC50b0hhdmVCZWVuQ2Fs bGVkKCk7CiAgICAgICAgIH0pOwogICAgICAgfSk7CiAgICAgfSk7CiAgIH0p OwogfSk7CisKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvc2VsZWN0aW9uL3hjZWxsX3NlbGVjdGlvbl9tb2RlbF9zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24veGNlbGxfc2Vs ZWN0aW9uX21vZGVsX3NwZWMuanMKaW5kZXggZGIzZjZkNi4uMjg4MmU0OSAx MDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rp b24veGNlbGxfc2VsZWN0aW9uX21vZGVsX3NwZWMuanMKKysrIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24veGNlbGxfc2VsZWN0aW9u X21vZGVsX3NwZWMuanMKQEAgLTMyLDE0ICszMiwxNyBAQCBkZXNjcmliZSgn WENlbGxTZWxlY3Rpb25Nb2RlbCcsIGZ1bmN0aW9uICgpIHsKICAgICB9LCB7 CiAgICAgICBpZDogJzEnLAogICAgICAgbmFtZTogJ3NvbWUtY29sdW1uLW5h bWUnLAorICAgICAgZmllbGQ6ICdzb21lLWNvbHVtbi1uYW1lJywKICAgICAg IHBvczogMCwKICAgICB9LCB7CiAgICAgICBpZDogJ3NlY29uZC1jb2x1bW4t aWQnLAogICAgICAgbmFtZTogJ3NlY29uZCBjb2x1bW4nLAorICAgICAgZmll bGQ6ICdzZWNvbmQgY29sdW1uJywKICAgICAgIHBvczogMSwKICAgICB9LCB7 CiAgICAgICBpZDogJ3RoaXJkLWNvbHVtbi1pZCcsCiAgICAgICBuYW1lOiAn dGhpcmQgY29sdW1uJywKKyAgICAgIGZpZWxkOiAndGhpcmQgY29sdW1uJywK ICAgICAgIHBvczogMiwKICAgICB9LAogICAgIF07CkBAIC01MSwxMyArNTQs MTUgQEAgZGVzY3JpYmUoJ1hDZWxsU2VsZWN0aW9uTW9kZWwnLCBmdW5jdGlv biAoKSB7CiAgICAgICAgICdzZWNvbmQgY29sdW1uJzogJ3NlY29uZCB2YWx1 ZSAnICsgaSwKICAgICAgICAgJ3RoaXJkIGNvbHVtbic6ICd0aGlyZCB2YWx1 ZSAnICsgaSwKICAgICAgICAgJ2ZvdXJ0aCBjb2x1bW4nOiAnZm91cnRoIHZh bHVlICcgKyBpLAorICAgICAgICAnX190ZW1wX1BLJzogJzEyMycgKyBpLAog ICAgICAgfSk7CiAgICAgfQogICAgIGNvbnRhaW5lciA9ICQoJzxkaXY+PC9k aXY+Jyk7CisgICAgdmFyIGRhdGFWaWV3ID0gbmV3IFNsaWNrLkRhdGEuRGF0 YVZpZXcoKTsKICAgICBjb250YWluZXIuaGVpZ2h0KDk5OTkpOwogICAgIGNv bnRhaW5lci53aWR0aCg5OTk5KTsKLQotICAgIGdyaWQgPSBuZXcgU2xpY2tH cmlkKGNvbnRhaW5lciwgZGF0YSwgY29sdW1ucyk7CisgICAgZGF0YVZpZXcu c2V0SXRlbXMoZGF0YSwgJ19fdGVtcF9QSycpOworICAgIGdyaWQgPSBuZXcg U2xpY2tHcmlkKGNvbnRhaW5lciwgZGF0YVZpZXcsIGNvbHVtbnMpOwogICAg IGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwobmV3IFhDZWxsU2VsZWN0aW9uTW9k ZWwoKSk7CiAgICAgJCgnYm9keScpLmFwcGVuZChjb250YWluZXIpOwogICB9 KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2xp Y2tncmlkL2V2ZW50X2hhbmRsZXJzL2hhbmRsZV9xdWVyeV9vdXRwdXRfa2V5 Ym9hcmRfZXZlbnRfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvc2xpY2tncmlkL2V2ZW50X2hhbmRsZXJzL2hhbmRsZV9xdWVyeV9vdXRw dXRfa2V5Ym9hcmRfZXZlbnRfc3BlYy5qcwppbmRleCBlYjQ0MTFkLi5lNzkw YThmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Ns aWNrZ3JpZC9ldmVudF9oYW5kbGVycy9oYW5kbGVfcXVlcnlfb3V0cHV0X2tl eWJvYXJkX2V2ZW50X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zbGlja2dyaWQvZXZlbnRfaGFuZGxlcnMvaGFuZGxlX3F1ZXJ5 X291dHB1dF9rZXlib2FyZF9ldmVudF9zcGVjLmpzCkBAIC0yNywyMSArMjcs MjIgQEAgZGVzY3JpYmUoJyNoYW5kbGVRdWVyeU91dHB1dEtleWJvYXJkRXZl bnQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICBtZXRhS2V5OiBmYWxzZSwKICAg ICAgIHdoaWNoOiAtMSwKICAgICAgIGtleUNvZGU6IC0xLAotICAgICAgcHJl dmVudERlZmF1bHQ6IGphc21pbmUuY3JlYXRlU3B5KCdwcmV2ZW50RGVmYXVs dCcpLAorICAgICAgcHJldmVudERlZmF1bHQ6IGphc21pbmUuY3JlYXRlU3B5 KCdwcmV2ZW50RGVmYXVsdCcpCiAgICAgfTsKIAotICAgIHZhciBkYXRhID0g W1snJywgJzAsMC1jZWxsLWNvbnRlbnQnLCAnMCwxLWNlbGwtY29udGVudCdd LAotICAgICAgWycnLCAnMSwwLWNlbGwtY29udGVudCcsICcxLDEtY2VsbC1j b250ZW50J10sCi0gICAgICBbJycsICcyLDAtY2VsbC1jb250ZW50JywgJzIs MS1jZWxsLWNvbnRlbnQnXV07Ci0gICAgdmFyIGNvbHVtbkRlZmluaXRpb25z ID0gW3tuYW1lOiAnY2hlY2tib3hDb2x1bW4nfSwge3BvczogMSwgbmFtZTog J2ZpcnN0Q29sdW1uJ30sIHsKLSAgICAgIHBvczogMiwKLSAgICAgIG5hbWU6 ICdzZWNvbmRDb2x1bW4nLAotICAgIH1dOwotICAgIGdyaWQgPSBuZXcgU2xp Y2tHcmlkKCQoJzxkaXY+PC9kaXY+JyksIGRhdGEsIGNvbHVtbkRlZmluaXRp b25zKTsKLSAgICBncmlkLnNldFNlbGVjdGlvbk1vZGVsKG5ldyBYQ2VsbFNl bGVjdGlvbk1vZGVsKCkpOworICAgIHZhciBkYXRhID0gW3snY2hlY2tib3hD b2x1bW4nOiAnJywgJ2ZpcnN0Q29sdW1uJzogJzAsMC1jZWxsLWNvbnRlbnQn LCAnc2Vjb25kQ29sdW1uJzogJzAsMS1jZWxsLWNvbnRlbnQnLCAnX190ZW1w X1BLJzogJzEyMyd9LAorICAgICAgICB7J2NoZWNrYm94Q29sdW1uJzogJycs ICdmaXJzdENvbHVtbic6ICcxLDAtY2VsbC1jb250ZW50JywgJ3NlY29uZENv bHVtbic6ICcxLDEtY2VsbC1jb250ZW50JywgJ19fdGVtcF9QSyc6ICc0NTYn fSwKKyAgICAgICAgeydjaGVja2JveENvbHVtbic6ICcnLCAnZmlyc3RDb2x1 bW4nOiAnMiwwLWNlbGwtY29udGVudCcsICdzZWNvbmRDb2x1bW4nOiAnMiwx LWNlbGwtY29udGVudCcsICdfX3RlbXBfUEsnOiAnNzg5J31dLAorICAgICAg Y29sdW1uRGVmaW5pdGlvbnMgPSBbe25hbWU6ICdjaGVja2JveENvbHVtbid9 LAorICAgICAgICB7cG9zOiAxLCBuYW1lOiAnZmlyc3RDb2x1bW4nLCBmaWVs ZDogJ2ZpcnN0Q29sdW1uJ30sCisgICAgICAgIHsgcG9zOiAyLCBuYW1lOiAn c2Vjb25kQ29sdW1uJywgZmllbGQ6ICdzZWNvbmRDb2x1bW4nfV0sCisgICAg ICBkYXRhVmlldyA9IG5ldyBTbGljay5EYXRhLkRhdGFWaWV3KCk7CiAKKyAg ICBncmlkID0gbmV3IFNsaWNrLkdyaWQoJCgnPGRpdj48L2Rpdj4nKSwgZGF0 YVZpZXcsIGNvbHVtbkRlZmluaXRpb25zKTsKKyAgICBncmlkLnNldFNlbGVj dGlvbk1vZGVsKG5ldyBYQ2VsbFNlbGVjdGlvbk1vZGVsKCkpOworICAgIGRh dGFWaWV3LnNldEl0ZW1zKGRhdGEsICdfX3RlbXBfUEsnKTsKICAgICBzbGlj a0V2ZW50ID0gewotICAgICAgZ3JpZDogZ3JpZCwKKyAgICAgIGdyaWQ6IGdy aWQKICAgICB9OwogCiAgICAgc3B5T24oY2xpcGJvYXJkLCAnY29weVRleHRU b0NsaXBib2FyZCcpOwpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVzdC5j b25maWcuanMgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwppbmRleCA2 NzU0ZjA0Li44ZDNlOWU5IDEwMDY0NAotLS0gYS93ZWIvd2VicGFjay50ZXN0 LmNvbmZpZy5qcworKysgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwpA QCAtNjMsNiArNjMsNyBAQCBtb2R1bGUuZXhwb3J0cyA9IHsKICAgICAgICdw Z2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogcmVncmVzc2lvbkRpciArICcv amF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cycsCiAgICAgICAnc2xpY2tncmlk Jzogc291cmNlc0RpciArICcvdmVuZG9yL3NsaWNrZ3JpZC9zbGljay5jb3Jl JywKICAgICAgICdzbGlja2dyaWQuZ3JpZCc6IHNvdXJjZXNEaXIgKyAnL3Zl bmRvci9zbGlja2dyaWQvc2xpY2suZ3JpZCcsCisgICAgICAnc2xpY2suZGF0 YXZpZXcnOiBzb3VyY2VzRGlyICsgJy92ZW5kb3Ivc2xpY2tncmlkL3NsaWNr LmRhdGF2aWV3JywKICAgICAgICdzbGlja2dyaWQucm93c2VsZWN0aW9ubW9k ZWwnOiBzb3VyY2VzRGlyICsgJy92ZW5kb3Ivc2xpY2tncmlkL3BsdWdpbnMv c2xpY2sucm93c2VsZWN0aW9ubW9kZWwnLAogICAgICAgJ2Jyb3dzZXInOiBw YXRoLnJlc29sdmUoX19kaXJuYW1lLCAncGdhZG1pbi9icm93c2VyL3N0YXRp Yy9qcycpLAogICAgICAgJ3BnYWRtaW4nOiBzb3VyY2VzRGlyICsgJy9qcy9w Z2FkbWluJywK --001a1140c8383e38be0551f32ee9 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1140c8383e38be0551f32ee9--