Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cWX2I-0001MF-JK for pgadmin-hackers@arkaria.postgresql.org; Wed, 25 Jan 2017 23:31:30 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cWX2I-00040e-4P for pgadmin-hackers@arkaria.postgresql.org; Wed, 25 Jan 2017 23:31:30 +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 1cWX22-0003kg-G6 for pgadmin-hackers@postgresql.org; Wed, 25 Jan 2017 23:31:15 +0000 Received: from mail-yb0-x235.google.com ([2607:f8b0:4002:c09::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1cWX1x-000385-Jx for pgadmin-hackers@postgresql.org; Wed, 25 Jan 2017 23:31:12 +0000 Received: by mail-yb0-x235.google.com with SMTP id j82so26869523ybg.1 for ; Wed, 25 Jan 2017 15:31:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YqXtUCzbJ3nPzCu8GBlBb/NIvWwFCR93UdoH9V6/gMk=; b=FsFsDFsYtZ2Uo7GD8WMo3M51RuCMepbR9yKVotw0Hd7fet2nfO94IeZhppzsiC7FMq ljLufV4HrOyUP8TTvQE4yrhcJH/xLj0D619j9ebZqIjiRkePlY1SjU5gwJEv7uqs1Cv7 aF7t/nyulq25vZVyh8XCHHPRsruOeyaF3KqN6OPSVzFu+B49gAiKa9DKmQM+JQRYaJnu 1JxsUcv+DuYytige6sTEubJ1fKG099NYV/Mk39yd7EsagEfOhB9/7KlnEwl7SyxoXkbJ SV+OO02RWHO45LB9tKwZi5KSSUdlKUL2XNIbVI1a5lXdkkTGzQqLU6UZmTGPfvmmTWaz YUTg== 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=YqXtUCzbJ3nPzCu8GBlBb/NIvWwFCR93UdoH9V6/gMk=; b=RfpNxaaewYn85oGJ7voLxf+ut9vhEUEC0LQWUmKqdA1dw3thWOeVaDs7OpuPopBqWo 3WOEV5056Fv7f1GOQ8T6PwgtkysMnIL7JPQMHxZO+BRdxglr8ug5pCy3Fy4Ko2nZpuFE +raN1nPsmUnvQ+I1O8cyt5GHh2C2UI6oCfhza0vefo2r3+mVPXs5vzXWSrEfOYQvNiqn CqAmPO3r1m5J7eppLYEram3PPKU/G9L+mXs+1lU8cvm0C/O2Z5P6kyIkMc0T9ZPX76lT itq8I/4Wg/ch+5kbSDKIH6lyS+c3EUK/cRFHQ/OZfXJzl7D7vA+/D6Jg96yilRQcbygZ NRLg== X-Gm-Message-State: AIkVDXLYdFnKVqzYXqCyoamo73E/BuSreIKrCAvd9e1VaUbEnHsx+i/8Kkp/VeTOxkNz0r76v9UU8D1nDiI1D4R0 X-Received: by 10.37.176.161 with SMTP id f33mr3092302ybj.142.1485387066979; Wed, 25 Jan 2017 15:31:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.170.171 with HTTP; Wed, 25 Jan 2017 15:31:06 -0800 (PST) In-Reply-To: References: From: George Gelashvili Date: Wed, 25 Jan 2017 18:31:06 -0500 Message-ID: Subject: Re: Acceptance Tests against a browser (WIP) To: Dave Page Cc: Atira Odhner , pgadmin-hackers Content-Type: multipart/mixed; boundary=f403045f3dc47dd6300546f3a0b2 X-Pg-Spam-Score: -1.9 (-) 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 --f403045f3dc47dd6300546f3a0b2 Content-Type: multipart/alternative; boundary=f403045f3dc47dd62b0546f3a0b0 --f403045f3dc47dd62b0546f3a0b0 Content-Type: text/plain; charset=UTF-8 ah That diff was generated before the python 3 patch was applied. This should work against master Cheers, George On Tue, Jan 24, 2017 at 4:43 AM, Dave Page wrote: > On Fri, Jan 20, 2017 at 5:33 PM, George Gelashvili > wrote: > > Thanks for bringing that to our attention! Here's the latest patch > > piranha:pgadmin4 dpage$ git apply > ~/Downloads/acceptance-tests-with-server-start-and-polling.diff > error: patch failed: web/regression/test_utils.py:69 > error: web/regression/test_utils.py: patch does not apply > > :-( > > > On Fri, Jan 20, 2017 at 10:38 AM, Dave Page wrote: > >> > >> On Thu, Jan 19, 2017 at 10:07 PM, George Gelashvili > >> wrote: > >> > > >> > Here is an updated patch which starts the server up when the test > starts > >> > and > >> > uses the values from config.py for server name etc. It still requires > >> > installing chromedriver before running. Should we add something to the > >> > readme about that? > >> > >> Yes, we definitely should (including download site URL) > >> > >> > On Tue, Jan 17, 2017 at 11:09 AM, Atira Odhner > >> > wrote: > >> >> > >> >> Thanks for your feedback, Dave! > >> >> > >> >> We can put the tests under the regression directory. I think that > makes > >> >> sense. > >> >> I'm not picturing these tests being module specific, but we may want > to > >> >> enable running it as a separate suite of tests. > >> >> > >> >> Thanks for the callout about the port and title. We'll make sure > those > >> >> are > >> >> pulled from config or that the pgAdmin server is spun up by the test > >> >> with > >> >> specific values. > >> >> > >> >> I have a couple ideas about why the test might not have been running > >> >> for > >> >> you. I think the patch we attached didn't spin up its own pgAdmin yet > >> >> and it > >> >> definitely doesn't fill in username/password if your app is running > >> >> that > >> >> way. That's part of the WIP-ness :-P > >> >> > >> >> -Tira > >> >> > >> >> Hi > >> >> > >> >> On Thu, Jan 12, 2017 at 10:41 PM, George Gelashvili > >> >> wrote: > >> >> > here's the patch we forgot to attach. Also, you can see work on our > >> >> > branch > >> >> > at: > >> >> > > >> >> > > >> >> > https://github.com/pivotalsoftware/pgadmin4/tree/ > pivotal/acceptance-tests > >> >> > > >> >> > On Thu, Jan 12, 2017 at 5:26 PM, George Gelashvili > >> >> > > >> >> > wrote: > >> >> >> > >> >> >> Hi there, > >> >> >> > >> >> >> We are working on browser-automation-based acceptance tests that > >> >> >> exercise > >> >> >> pgAdmin4 the way a user might. > >> >> > >> >> Nice! > >> >> > >> >> >> The first "connect to database" test works, but at the moment > >> >> >> depends > >> >> >> on > >> >> >> Chrome and chromedriver. We would appreciate feedback on any > >> >> >> possible > >> >> >> license or code style issues at this point, as well as any > thoughts > >> >> >> on > >> >> >> adding this sort of test to the codebase. > >> >> > >> >> A few thoughts: > >> >> > >> >> - If these tests are to run as part of the regression suite, the > >> >> framework for them should live under that directory. > >> >> > >> >> - Are any of the tests likely to be module-specific? If so, they > >> >> should really be part of the relevant module as the regression tests > >> >> are. If they're more general/less tightly coupled, then I don't see a > >> >> problem with them residing where they are. > >> >> > >> >> - Please take care not to include changes to .gitgnore files that > >> >> aren't relevant to the rest of us. > >> >> > >> >> - The port number is hard-coded in the test. > >> >> > >> >> - You've hard-coded the string "pgAdmin 4". We've tried to keep that > >> >> title as a config option in config.py, so you should pull the string > >> >> from there rather than hard-coding it. > >> >> > >> >> - The connect test fails for me (Mac, Python 2.7). I have a suspicion > >> >> that this may be because when the test starts chromedriver, OS X > >> >> prompts the user about whether a listening port should be opened, but > >> >> the tests don't wait (though, I tested with 3 servers configured and > >> >> it failed with the same error on the second and third as well, long > >> >> after I clicked OK on the prompt): > >> >> > >> >> Traceback (most recent call last): > >> >> File > >> >> > >> >> "/Users/dpage/git/pgadmin4/web/acceptance/test_connects_ > to_database.py", > >> >> line 32, in runTest > >> >> self.assertEqual("pgAdmin 4", self.driver.title) > >> >> AssertionError: 'pgAdmin 4' != u'localhost' > >> >> > >> >> - Please keep tests in the pgadmin. namespace > (pgadmin.acceptance.??). > >> >> > >> >> - It looks like running a single test won't work yet (because of > >> >> TestsGeneratorRegistry.load_generators('pgadmin.%s.tests' % > >> >> arguments['pkg'])) > >> >> > >> >> Thanks! > >> >> > >> >> -- > >> >> 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 > >> > > >> > >> > >> > >> -- > >> 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 > --f403045f3dc47dd62b0546f3a0b0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
ah
That diff was generated before the python 3 patch wa= s applied. This should work against master

Cheers,
=
George

On Tue, Jan 24, 2017 at 4:43 AM, Dave Page <dpage@pgadmin.org>= ; wrote:
On Fri, = Jan 20, 2017 at 5:33 PM, George Gelashvili
<ggelashvili@pivotal.io>= ; wrote:
> Thanks for bringing that to our attention! Here's the latest patch=

piranha:pgadmin4 dpage$ git apply
~/Downloads/acceptance-tests-with-server-start-and-polling.diff error: patch failed: web/regression/test_utils.py:69
error: web/regression/test_utils.py: patch does not apply

:-(

> On Fri, Jan 20, 2017 at 10:38 AM, Dave Page <dpage@pgadmin.org> wrote:
>>
>> On Thu, Jan 19, 2017 at 10:07 PM, George Gelashvili
>> <ggelashvili@pivotal.= io> wrote:
>> >
>> > Here is an updated patch which starts the server up when the = test starts
>> > and
>> > uses the values from config.py for server name etc. It still = requires
>> > installing chromedriver before running. Should we add somethi= ng to the
>> > readme about that?
>>
>> Yes, we definitely should (including download site URL)
>>
>> > On Tue, Jan 17, 2017 at 11:09 AM, Atira Odhner <aodhner@pivotal.io>
>> > wrote:
>> >>
>> >> Thanks for your feedback, Dave!
>> >>
>> >> We can put the tests under the regression directory. I th= ink that makes
>> >> sense.
>> >> I'm not picturing these tests being module specific, = but we may want to
>> >> enable running it as a separate suite of tests.
>> >>
>> >> Thanks for the callout about the port and title. We'l= l make sure those
>> >> are
>> >> pulled from config or that the pgAdmin server is spun up = by the test
>> >> with
>> >> specific values.
>> >>
>> >> I have a couple ideas about why the test might not have b= een running
>> >> for
>> >> you. I think the patch we attached didn't spin up its= own pgAdmin yet
>> >> and it
>> >> definitely doesn't fill in username/password if your = app is running
>> >> that
>> >> way. That's part of the WIP-ness :-P
>> >>
>> >> -Tira
>> >>
>> >> Hi
>> >>
>> >> On Thu, Jan 12, 2017 at 10:41 PM, George Gelashvili
>> >> <ggelashvili(at)pivotal(dot)io> wrote:
>> >> > here's the patch we forgot to attach. Also, you = can see work on our
>> >> > branch
>> >> > at:
>> >> >
>> >> >
>> >> > http= s://github.com/pivotalsoftware/pgadmin4/tree/pivotal/acceptance-t= ests
>> >> >
>> >> > On Thu, Jan 12, 2017 at 5:26 PM, George Gelashvili >> >> > <ggelashvili(at)pivotal(dot)io>
>> >> > wrote:
>> >> >>
>> >> >> Hi there,
>> >> >>
>> >> >> We are working on browser-automation-based accep= tance tests that
>> >> >> exercise
>> >> >> pgAdmin4 the way a user might.
>> >>
>> >> Nice!
>> >>
>> >> >> The first "connect to database" test w= orks, but at the moment
>> >> >> depends
>> >> >> on
>> >> >> Chrome and chromedriver. We would appreciate fee= dback on any
>> >> >> possible
>> >> >> license or code style issues at this point, as w= ell as any thoughts
>> >> >> on
>> >> >> adding this sort of test to the codebase.
>> >>
>> >> A few thoughts:
>> >>
>> >> - If these tests are to run as part of the regression sui= te, the
>> >> framework for them should live under that directory.
>> >>
>> >> - Are any of the tests likely to be module-specific? If s= o, they
>> >> should really be part of the relevant module as the regre= ssion tests
>> >> are. If they're more general/less tightly coupled, th= en I don't see a
>> >> problem with them residing where they are.
>> >>
>> >> - Please take care not to include changes to .gitgnore fi= les that
>> >> aren't relevant to the rest of us.
>> >>
>> >> - The port number is hard-coded in the test.
>> >>
>> >> - You've hard-coded the string "pgAdmin 4".= We've tried to keep that
>> >> title as a config option in config.py, so you should pull= the string
>> >> from there rather than hard-coding it.
>> >>
>> >> - The connect test fails for me (Mac, Python 2.7). I have= a suspicion
>> >> that this may be because when the test starts chromedrive= r, OS X
>> >> prompts the user about whether a listening port should be= opened, but
>> >> the tests don't wait (though, I tested with 3 servers= configured and
>> >> it failed with the same error on the second and third as = well, long
>> >> after I clicked OK on the prompt):
>> >>
>> >> Traceback (most recent call last):
>> >>=C2=A0 =C2=A0File
>> >>
>> >> "/Users/dpage/git/pgadmin4/web/acceptance/test_= connects_to_database.py",
>> >> line 32, in runTest
>> >>=C2=A0 =C2=A0 =C2=A0self.assertEqual("pgAdmin 4"= , self.driver.title)
>> >> AssertionError: 'pgAdmin 4' !=3D u'localhost&= #39;
>> >>
>> >> - Please keep tests in the pgadmin. namespace (pgadmin.ac= ceptance.??).
>> >>
>> >> - It looks like running a single test won't work yet = (because of
>> >> TestsGeneratorRegistry.load_generators('pgadmin.= %s.tests' %
>> >> arguments['pkg']))
>> >>
>> >> Thanks!
>> >>
>> >> --
>> >> 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/mailp= ref/pgadmin-hackers
>> >
>>
>>
>>
>> --
>> 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

--f403045f3dc47dd62b0546f3a0b0-- --f403045f3dc47dd6300546f3a0b2 Content-Type: text/plain; charset=US-ASCII; name="acceptance-tests-with-server-start-and-polling.diff" Content-Disposition: attachment; filename="acceptance-tests-with-server-start-and-polling.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iydl3lsb0 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50c19weTIudHh0IGIvcmVxdWlyZW1l bnRzX3B5Mi50eHQKaW5kZXggNTExNzBhNDUuLmRlMTY3MTIxIDEwMDY0NAot LS0gYS9yZXF1aXJlbWVudHNfcHkyLnR4dAorKysgYi9yZXF1aXJlbWVudHNf cHkyLnR4dApAQCAtMzYsNiArMzYsNyBAQCB0ZXN0c2NlbmFyaW9zPT0wLjUu MAogdGVzdHRvb2xzPT0yLjAuMAogdHJhY2ViYWNrMj09MS40LjAKIHVuaXR0 ZXN0Mj09MS4xLjAKK3NlbGVuaXVtPT0zLjAuMgogV2Vya3pldWc9PTAuOS42 CiBXVEZvcm1zPT0yLjAuMgogc3FscGFyc2U9PTAuMS4xOQpkaWZmIC0tZ2l0 IGEvcmVxdWlyZW1lbnRzX3B5My50eHQgYi9yZXF1aXJlbWVudHNfcHkzLnR4 dAppbmRleCBmNjhkYjdhOC4uOTU2NWE2ZTQgMTAwNjQ0Ci0tLSBhL3JlcXVp cmVtZW50c19weTMudHh0CisrKyBiL3JlcXVpcmVtZW50c19weTMudHh0CkBA IC0zNSw2ICszNSw3IEBAIHRlc3RzY2VuYXJpb3M9PTAuNS4wCiB0ZXN0dG9v bHM9PTIuMC4wCiB0cmFjZWJhY2syPT0xLjQuMAogdW5pdHRlc3QyPT0xLjEu MAorc2VsZW5pdW09PTMuMC4yCiBXZXJremV1Zz09MC45LjYKIFdURm9ybXM9 PTIuMC4yCiBzcWxwYXJzZT09MC4xLjE5CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9hY2NlcHRhbmNlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYWNj ZXB0YW5jZS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uZTY5ZGUyOWIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2FjY2VwdGFuY2UvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9h Y2NlcHRhbmNlL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwLi5lNjlkZTI5YgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy90ZXN0X2Nvbm5lY3RzX3RvX2Rh dGFiYXNlLnB5IGIvd2ViL3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy90ZXN0 X2Nvbm5lY3RzX3RvX2RhdGFiYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5jMzVjZDBmZAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2FjY2VwdGFuY2UvdGVzdHMvdGVzdF9jb25uZWN0c190 b19kYXRhYmFzZS5weQpAQCAtMCwwICsxLDEyNyBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQgdGltZQorCitmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJk cml2ZXIKK2Zyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0 IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24KK2Zyb20gc2VsZW5pdW0ud2ViZHJp dmVyIGltcG9ydCBBY3Rpb25DaGFpbnMKKworZnJvbSBwZ2FkbWluLnV0aWxz LnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpbXBvcnQgc3Vi cHJvY2VzcworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgY29u ZmlnCisKKworY2xhc3MgQ29ubmVjdHNUb0RhdGFiYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKKyAgICAiIiIKKyAgICBUZXN0cyB0aGF0IGEgZGF0YWJhc2Ug Y29ubmVjdGlvbiBjYW4gYmUgY3JlYXRlZCBmcm9tIHRoZSBVSQorICAgICIi IgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBjb25maWcu U0VSVkVSX01PREU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDdXJy ZW50bHksIGNvbmZpZyBpcyBzZXQgdG8gc3RhcnQgcGdhZG1pbiBpbiBzZXJ2 ZXIgbW9kZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyB0 ZXN0IGRvZXNuJ3Qga25vdyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgc28gZG9l c24ndCB3b3JrIGluIHNlcnZlciBtb2RlIikKKworICAgICAgICBzZWxmLnBn YWRtaW5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWyJweXRob24iLCAi cGdBZG1pbjQucHkiXSwgc2hlbGw9RmFsc2UsIHByZWV4ZWNfZm49b3Muc2V0 c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RkZXJyPW9wZW4ob3MuZGV2bnVsbCwgJ3cnKSkKKworICAg ICAgICBzZWxmLmRyaXZlciA9IHdlYmRyaXZlci5DaHJvbWUoKQorICAgICAg ICBzZWxmLnNlcnZlcl9jb25maWcgPSBzZWxmLnNlcnZlcgorCisgICAgICAg IHByaW50KCJvcGVuaW5nIGJyb3dzZXIiKQorICAgICAgICBzZWxmLmRyaXZl ci5nZXQoImh0dHA6Ly8iICsgY29uZmlnLkRFRkFVTFRfU0VSVkVSICsgIjoi ICsgc3RyKGNvbmZpZy5ERUZBVUxUX1NFUlZFUl9QT1JUKSkKKyAgICAgICAg c2VsZi5fd2FpdF9mb3JfYXBwKCkKKworICAgIGRlZiBydW5UZXN0KHNlbGYp OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZy5BUFBfTkFNRSwg c2VsZi5kcml2ZXIudGl0bGUpCisgICAgICAgIHNlbGYuX3dhaXRfZm9yX3Nw aW5uZXJfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxmLl9maW5kX2J5 X3hwYXRoKCIvLypbQGNsYXNzPSdhY2lUcmVlVGV4dCcgYW5kIC49J1NlcnZl cnMnXSIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVt ZW50X2J5X2xpbmtfdGV4dCgiT2JqZWN0IikuY2xpY2soKQorICAgICAgICBB Y3Rpb25DaGFpbnMoc2VsZi5kcml2ZXIpIFwKKyAgICAgICAgICAgIC5tb3Zl X3RvX2VsZW1lbnQoc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtf dGV4dCgiQ3JlYXRlIikpIFwKKyAgICAgICAgICAgIC5wZXJmb3JtKCkKKyAg ICAgICAgc2VsZi5fZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiU2VydmVy Li4uIikuY2xpY2soKQorCisgICAgICAgIHNlbGYuX2ZpbGxfaW5wdXRfYnlf eHBhdGgoIm5hbWUiLCBzZWxmLnNlcnZlcl9jb25maWdbJ25hbWUnXSkKKyAg ICAgICAgc2VsZi5fZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiQ29ubmVj dGlvbiIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5fZmlsbF9pbnB1dF9ieV94 cGF0aCgiaG9zdCIsIHNlbGYuc2VydmVyX2NvbmZpZ1snaG9zdCddKQorICAg ICAgICBzZWxmLl9maWxsX2lucHV0X2J5X3hwYXRoKCJwb3J0Iiwgc2VsZi5z ZXJ2ZXJfY29uZmlnWydwb3J0J10pCisgICAgICAgIHNlbGYuX2ZpbGxfaW5w dXRfYnlfeHBhdGgoInVzZXJuYW1lIiwgc2VsZi5zZXJ2ZXJfY29uZmlnWyd1 c2VybmFtZSddKQorICAgICAgICBzZWxmLl9maWxsX2lucHV0X2J5X3hwYXRo KCJwYXNzd29yZCIsIHNlbGYuc2VydmVyX2NvbmZpZ1snZGJfcGFzc3dvcmQn XSkKKyAgICAgICAgc2VsZi5fZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29u dGFpbnMoLiwnU2F2ZScpXSIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLl9m aW5kX2J5X3hwYXRoKCIvLypbQGlkPSd0cmVlJ10vLypbLj0nIiArIHNlbGYu c2VydmVyX2NvbmZpZ1snbmFtZSddICsgIiddIikKKworICAgIGRlZiB0ZWFy RG93bihzZWxmKToKKyAgICAgICAgc2VsZi5kcml2ZXIuY2xvc2UoKQorICAg ICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxmLnBnYWRtaW5fcHJvY2Vz cy5waWQpLCBzaWduYWwuU0lHVEVSTSkKKworICAgIGRlZiBmYWlsdXJlRXhj ZXB0aW9uKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYu ZHJpdmVyLnNhdmVfc2NyZWVuc2hvdCgnL3RtcC9wZ2FkbWluX3Rlc3Rfc2Ny ZWVuc2hvdC5wbmcnKQorICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRXJyb3Io KmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIF9maW5kX2J5X3hwYXRoKHNl bGYsIHhwYXRoKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dhaXRfZm9yX2Vs ZW1lbnQobGFtYmRhOiBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBh dGgoeHBhdGgpKQorCisgICAgZGVmIF9maW5kX2J5X3BhcnRpYWxfbGlua190 ZXh0KHNlbGYsIGxpbmtfdGV4dCk6CisgICAgICAgIHJldHVybiBzZWxmLl93 YWl0X2Zvcl9lbGVtZW50KGxhbWJkYTogc2VsZi5kcml2ZXIuZmluZF9lbGVt ZW50X2J5X3BhcnRpYWxfbGlua190ZXh0KGxpbmtfdGV4dCkpCisKKyAgICBk ZWYgX2ZpbGxfaW5wdXRfYnlfeHBhdGgoc2VsZiwgZmllbGRfbmFtZSwgZmll bGRfY29udGVudCk6CisgICAgICAgIHNlbGYuX2ZpbmRfYnlfeHBhdGgoIi8v aW5wdXRbQG5hbWU9JyIgKyBmaWVsZF9uYW1lICsgIiddIikuY2xlYXIoKQor ICAgICAgICBzZWxmLl9maW5kX2J5X3hwYXRoKCIvL2lucHV0W0BuYW1lPSci ICsgZmllbGRfbmFtZSArICInXSIpLnNlbmRfa2V5cygKKyAgICAgICAgICAg IGZpZWxkX2NvbnRlbnQpCisKKyAgICBkZWYgX3dhaXRfZm9yX2VsZW1lbnQo c2VsZiwgZmluZF9tZXRob2Rfd2l0aF9hcmdzKToKKyAgICAgICAgZGVmIGVs ZW1lbnRfaWZfaXRfZXhpc3RzKCk6CisgICAgICAgICAgICB0cnk6CisgICAg ICAgICAgICAgICAgZWxlbWVudCA9IGZpbmRfbWV0aG9kX3dpdGhfYXJncygp CisgICAgICAgICAgICAgICAgaWYgZWxlbWVudC5pc19kaXNwbGF5ZWQoKSAm IGVsZW1lbnQuaXNfZW5hYmxlZCgpOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZWxlbWVudAorICAgICAgICAgICAgZXhjZXB0IE5vU3VjaEVsZW1l bnRFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK KyAgICAgICAgcmV0dXJuIHNlbGYuX193YWl0X2ZvcigiZWxlbWVudCB0byBl eGlzdCIsIGVsZW1lbnRfaWZfaXRfZXhpc3RzKQorCisgICAgZGVmIF93YWl0 X2Zvcl9zcGlubmVyX3RvX2Rpc2FwcGVhcihzZWxmKToKKyAgICAgICAgZGVm IHNwaW5uZXJfaGFzX2Rpc2FwcGVhcmVkKCk6CisgICAgICAgICAgICB0cnk6 CisgICAgICAgICAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5 X2lkKCJwZy1zcGlubmVyIikKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFs c2UKKyAgICAgICAgICAgIGV4Y2VwdCBOb1N1Y2hFbGVtZW50RXhjZXB0aW9u OgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgc2Vs Zi5fX3dhaXRfZm9yKCJzcGlubmVyIHRvIGRpc2FwcGVhciIsIHNwaW5uZXJf aGFzX2Rpc2FwcGVhcmVkKQorCisgICAgZGVmIF93YWl0X2Zvcl9hcHAoc2Vs Zik6CisgICAgICAgIGRlZiBwYWdlX3Nob3dzX2FwcCgpOgorICAgICAgICAg ICAgaWYgc2VsZi5kcml2ZXIudGl0bGUgPT0gY29uZmlnLkFQUF9OQU1FOgor ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHNlbGYuZHJpdmVyLnJlZnJlc2goKQorICAg ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGYuX193 YWl0X2ZvcigiYXBwIHRvIHN0YXJ0IiwgcGFnZV9zaG93c19hcHApCisKKyAg ICBkZWYgX193YWl0X2ZvcihzZWxmLCB3YWl0aW5nX2Zvcl9tZXNzYWdlLCBj b25kaXRpb25fbWV0X2Z1bmN0aW9uKToKKyAgICAgICAgdGltZW91dCA9IDUK KyAgICAgICAgdGltZV93YWl0ZWQgPSAwCisgICAgICAgIHNsZWVwX3RpbWUg PSAwLjAxCisKKyAgICAgICAgd2hpbGUgdGltZV93YWl0ZWQgPCB0aW1lb3V0 OgorICAgICAgICAgICAgcmVzdWx0ID0gY29uZGl0aW9uX21ldF9mdW5jdGlv bigpCisgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAg cmV0dXJuIHJlc3VsdAorICAgICAgICAgICAgdGltZV93YWl0ZWQgKz0gc2xl ZXBfdGltZQorICAgICAgICAgICAgdGltZS5zbGVlcChzbGVlcF90aW1lKQor CisgICAgICAgIHNlbGYuZmFpbCgiVGltZWQgb3V0IHdhaXRpbmcgZm9yICIg KyB3YWl0aW5nX2Zvcl9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL19faW5pdF9fLnB5CmluZGV4IGY1MDFkM2QwLi45OWZhMDBjNyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5Cisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMTY3 Myw4ICsxNjczLDggQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCi0gICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0 KCJUcmlnZ2VyKHMpIGhhdmUgYmVlbiBlbmFibGVkIikgaWYgaXNfZW5hYmxl Ci0gICAgICAgICAgICAgICAgZWxzZSBnZXR0ZXh0KCJUcmlnZ2VyKHMpIGhh dmUgYmVlbiBkaXNhYmxlZCIpLAorICAgICAgICAgICAgICAgIGluZm89Z2V0 dGV4dCgiVHJpZ2dlcihzKSBoYXMgYmVlbiBlbmFibGVkIikgaWYgaXNfZW5h YmxlCisgICAgICAgICAgICAgICAgZWxzZSBnZXR0ZXh0KCJUcmlnZ2VyKHMp IGhhcyBiZWVuIGRpc2FibGVkIiksCiAgICAgICAgICAgICAgICAgZGF0YT17 CiAgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKICAgICAgICAgICAg ICAgICAgICAgJ3NjaWQnOiBzY2lkCkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBj bGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRl ciwgVmFjdXVtU2V0dGluZ3MpOgogCiAgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwK LSAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlRhYmxlIHN0YXRpc3Rp Y3MgaGF2ZSBiZWVuIHJlc2V0IiksCisgICAgICAgICAgICAgICAgaW5mbz1n ZXR0ZXh0KCJUYWJsZSBzdGF0aXN0aWNzIGhhcyBiZWVuIHJlc2V0IiksCiAg ICAgICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgICAgICdp ZCc6IHRpZCwKICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQv X19pbml0X18ucHkKaW5kZXggZmU3ZDkzNDkuLjZiN2Y1MmIwIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L19f aW5pdF9fLnB5CkBAIC04MTYsNyArODE2LDcgQEAgY2xhc3MgRXhjbHVzaW9u Q29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQogCi0g ICAgICAgIHJldHVybiBzcWwsIGRhdGFbJ25hbWUnXQorICAgICAgICByZXR1 cm4gc3FsLCBkYXRhWyduYW1lJ10gaWYgJ25hbWUnIGluIGRhdGEgZWxzZSBv bGRfZGF0YVsnbmFtZSddCiAKICAgICBAY2hlY2tfcHJlY29uZGl0aW9uCiAg ICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGV4 aWQ9Tm9uZSk6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvdGVtcGxhdGVzL2V4 Y2x1c2lvbl9jb25zdHJhaW50L2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50Lmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9q cy9leGNsdXNpb25fY29uc3RyYWludC5qcwppbmRleCBlN2JkOTA1Yy4uY2Zl MTUxOTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC90ZW1wbGF0ZXMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9q cy9leGNsdXNpb25fY29uc3RyYWludC5qcwpAQCAtNywxMSArNywxMCBAQCBm dW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5 KSB7CiAgICAgZGVmYXVsdHM6IHsKICAgICAgIGNvbHVtbjogdW5kZWZpbmVk LAogICAgICAgb3Blcl9jbGFzczogdW5kZWZpbmVkLAotICAgICAgb3JkZXI6 IGZhbHNlLAotICAgICAgbnVsbHNfb3JkZXI6IGZhbHNlLAorICAgICAgb3Jk ZXI6IHVuZGVmaW5lZCwKKyAgICAgIG51bGxzX29yZGVyOiB1bmRlZmluZWQs CiAgICAgICBvcGVyYXRvcjp1bmRlZmluZWQsCi0gICAgICBjb2xfdHlwZTp1 bmRlZmluZWQsCi0gICAgICBpc19zb3J0X251bGxzX2FwcGxpY2FibGU6IHRy dWUKKyAgICAgIGNvbF90eXBlOnVuZGVmaW5lZAogICAgIH0sCiAgICAgdG9K U09OOiBmdW5jdGlvbiAoKSB7CiAgICAgICB2YXIgZCA9IHBnQnJvd3Nlci5O b2RlLk1vZGVsLnByb3RvdHlwZS50b0pTT04uYXBwbHkodGhpcywgYXJndW1l bnRzKTsKQEAgLTI0LDkgKzIzLDI2IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBn QWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnkpIHsKICAgICAgIH0sewogICAg ICAgICBpZDogJ29wZXJfY2xhc3MnLCBsYWJlbDone3sgXygnT3BlcmF0b3Ig Y2xhc3MnKSB9fScsIHR5cGU6J3RleHQnLAogICAgICAgICBub2RlOiAndGFi bGUnLCB1cmw6ICdnZXRfb3Blcl9jbGFzcycsIGZpcnN0X2VtcHR5OiB0cnVl LAotICAgICAgICBlZGl0YWJsZTogdHJ1ZSwKKyAgICAgICAgZWRpdGFibGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEJh Y2tib25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoKF8uaGFzKG0uY29sbGVj dGlvbiwgJ2hhbmRsZXInKSAmJgorICAgICAgICAgICAgICAgICFfLmlzVW5k ZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyKSAmJgorICAgICAgICAgICAg ICAgICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyLmdldCgn b2lkJykpKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKworICAgICAgICAgIGlmIChtLmNvbGxlY3Rpb24pIHsKKyAgICAg ICAgICAgIHZhciBpbmRleFR5cGUgPSBtLmNvbGxlY3Rpb24uaGFuZGxlci5n ZXQoJ2FtbmFtZScpCisgICAgICAgICAgICByZXR1cm4gKGluZGV4VHlwZSA9 PSAnYnRyZWUnIHx8IF8uaXNVbmRlZmluZWQoaW5kZXhUeXBlKSB8fAorICAg ICAgICAgICAgICBfLmlzTnVsbChpbmRleFR5cGUpIHx8IGluZGV4VHlwZSA9 PSAnJyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAgICAgc2Vs ZWN0MjogewotICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsIHdpZHRoOiAn c3R5bGUnLCB0YWdzOiB0cnVlLAorICAgICAgICAgIGFsbG93Q2xlYXI6IHRy dWUsIHdpZHRoOiAnc3R5bGUnLAogICAgICAgICAgIHBsYWNlaG9sZGVyOiAn e3sgXygiU2VsZWN0IHRoZSBvcGVyYXRvciBjbGFzcyIpIH19JwogICAgICAg ICB9LCBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkNlbGwuZXh0 ZW5kKHsKICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CkBA IC0zOSwxMiArNTUsNiBAQCBmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBw Z0Jyb3dzZXIsIEFsZXJ0aWZ5KSB7CiAKICAgICAgICAgICAgIGlmICh1cmwg JiYgKGluZGV4dHlwZSA9PSAnYnRyZWUnIHx8IF8uaXNVbmRlZmluZWQoaW5k ZXh0eXBlKSB8fAogICAgICAgICAgICAgICAgIF8uaXNOdWxsKGluZGV4dHlw ZSkgfHwgaW5kZXh0eXBlID09ICcnKSkgewotICAgICAgICAgICAgICAvLyBT ZXQgc29ydF9vcmRlciBhbmQgbnVsbHMgdG8gdHJ1ZSBpZiBhY2Nlc3MgbWV0 aG9kIGlzIGJ0cmVlCi0gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ29yZGVyJywgdHJ1ZSk7 Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ251bGxzX29yZGVyJywgdHJ1ZSk7 Ci0gICAgICAgICAgICAgIH0sIDEwKTsKLQogICAgICAgICAgICAgICB2YXIg bm9kZSA9IHRoaXMuY29sdW1uLmdldCgnc2NoZW1hX25vZGUnKSwKICAgICAg ICAgICAgICAgICAgIGV2ZW50SGFuZGxlciA9IG0udG9wIHx8IG0sCiAgICAg ICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmNvbHVtbi5nZXQoJ25v ZGVfaW5mbycpLApAQCAtOTgsMTQgKzEwOCw2IEBAIGZ1bmN0aW9uKCQsIF8s IFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnkpIHsKICAgICAgICAg ICBpZiAobSBpbnN0YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24pIHsKICAg ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgIH0KLSAgICAgICAg ICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtLnRvcC5nZXQoJ2FtbmFtZScp ID09PSAnYnRyZWUnKSB7Ci0gICAgICAgICAgICAgIG0uc2V0KCdpc19zb3J0 X251bGxzX2FwcGxpY2FibGUnLCB0cnVlKTsKLSAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtLnNldCgn aXNfc29ydF9udWxsc19hcHBsaWNhYmxlJywgZmFsc2UpOwotICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KICAgICAgICAgICBpZiAo KF8uaGFzKG0uY29sbGVjdGlvbiwgJ2hhbmRsZXInKSAmJgogICAgICAgICAg ICAgICAgICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyKSAm JgogICAgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlv bi5oYW5kbGVyLmdldCgnb2lkJykpKSkgewpAQCAtMTIyLDE1ICsxMjQsNiBA QCBmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFsZXJ0 aWZ5KSB7CiAgICAgICAgICAgaWYgKG0gaW5zdGFuY2VvZiBCYWNrYm9uZS5D b2xsZWN0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg ICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAobS50 b3AuZ2V0KCdhbW5hbWUnKSA9PT0gJ2J0cmVlJykgewotICAgICAgICAgICAg ICBtLnNldCgnaXNfc29ydF9udWxsc19hcHBsaWNhYmxlJywgdHJ1ZSk7Ci0g ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAg ICAgICAgICAgbS5zZXQoJ2lzX3NvcnRfbnVsbHNfYXBwbGljYWJsZScsIGZh bHNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9 Ci0KICAgICAgICAgICBpZiAoKF8uaGFzKG0uY29sbGVjdGlvbiwgJ2hhbmRs ZXInKSAmJgogICAgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uY29s bGVjdGlvbi5oYW5kbGVyKSAmJgogICAgICAgICAgICAgICAgICFfLmlzVW5k ZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyLmdldCgnb2lkJykpKSkgewpA QCAtOTA1LDE1ICs4OTgsOCBAQCBmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWlu LCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5KSB7CiAgICAgICAgIH1dLAogICAgICAg ICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLmNsZWFyKCk7Ci0gICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlz LmdldCgnY29sdW1ucycpLAotICAgICAgICAgICAgICBuYW1lID0gdGhpcy5n ZXQoJ25hbWUnKTsKLQotICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZChu YW1lKSB8fCBfLmlzTnVsbChuYW1lKSB8fCBuYW1lLmxlbmd0aCA8IDEpKSB7 Ci0gICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5 IG5hbWUgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50LicpIH19JzsKLSAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwotICAg ICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICB9Ci0gICAgICAgICAg ZWxzZSAgaWYgKChfLmlzVW5kZWZpbmVkKGNvbHVtbnMpIHx8IF8uaXNOdWxs KGNvbHVtbnMpIHx8IGNvbHVtbnMubGVuZ3RoIDwgMSkpIHsKKyAgICAgICAg ICB2YXIgY29sdW1ucyA9IHRoaXMuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAg ICAgaWYgKChfLmlzVW5kZWZpbmVkKGNvbHVtbnMpIHx8IF8uaXNOdWxsKGNv bHVtbnMpIHx8IGNvbHVtbnMubGVuZ3RoIDwgMSkpIHsKICAgICAgICAgICAg IHZhciBtc2cgPSAne3sgXygnUGxlYXNlIHNwZWNpZnkgY29sdW1ucyBmb3Ig ZXhjbHVzaW9uIGNvbnN0cmFpbnQuJykgfX0nOwogICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnNldCgnY29sdW1ucycsIG1zZyk7CiAgICAgICAgICAg ICByZXR1cm4gbXNnOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2luZGV4LmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pz L2luZGV4LmpzCmluZGV4IDZmNDYyNjUyLi42NTMxYmE1ZSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvdGVtcGxhdGVzL2lu ZGV4L2pzL2luZGV4LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9p bmRleGVzL3RlbXBsYXRlcy9pbmRleC9qcy9pbmRleC5qcwpAQCAtNTEsOCAr NTEsNyBAQCBmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IEJhY2tmb3JtLCBhbGVydGlmeSkgewogICAgICAgICAgIGNvbGxzcGNuYW1l OiB1bmRlZmluZWQsCiAgICAgICAgICAgb3BfY2xhc3M6IHVuZGVmaW5lZCwK ICAgICAgICAgICBzb3J0X29yZGVyOiBmYWxzZSwKLSAgICAgICAgICBudWxs czogZmFsc2UsCi0gICAgICAgICAgaXNfc29ydF9udWxsc19hcHBsaWNhYmxl OiB0cnVlCisgICAgICAgICAgbnVsbHM6IGZhbHNlCiAgICAgICAgIH0sCiAg ICAgICAgIHNjaGVtYTogWwogICAgICAgICAgIHsKQEAgLTc4LDcgKzc3LDcg QEAgZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNr Zm9ybSwgYWxlcnRpZnkpIHsKICAgICAgICAgICAgIGNvbnRyb2w6ICdub2Rl LWFqYXgtb3B0aW9ucycsIHVybDogJ2dldF9jb2xsYXRpb25zJywgbm9kZTog J2luZGV4JwogICAgICAgICAgIH0sewogICAgICAgICAgICAgaWQ6ICdvcF9j bGFzcycsIGxhYmVsOid7eyBfKCdPcGVyYXRvciBjbGFzcycpIH19JywKLSAg ICAgICAgICAgIGNlbGw6IE5vZGVBamF4T3B0aW9uc0RlcHNDZWxsLCB0YWdz OiB0cnVlLAorICAgICAgICAgICAgY2VsbDogTm9kZUFqYXhPcHRpb25zRGVw c0NlbGwsCiAgICAgICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiAn Y2hlY2tBY2Nlc3NNZXRob2QnLAogICAgICAgICAgICAgZWRpdGFibGU6IGZ1 bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAgICAvLyBIZWFkZXIgY2VsbCB0 aGVuIHNraXAKQEAgLTEwOSwxOSArMTA4LDEzIEBAIGZ1bmN0aW9uKCQsIF8s IFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIGFsZXJ0aWZ5KSB7 CiAgICAgICAgICAgfSx7CiAgICAgICAgICAgICBpZDogJ3NvcnRfb3JkZXIn LCBsYWJlbDone3sgXygnU29ydCBvcmRlcicpIH19JywKICAgICAgICAgICAg IGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5UYWJsZUNoaWxkU3dpdGNoQ2Vs bCwgdHlwZTogJ3N3aXRjaCcsCisgICAgICAgICAgICBkaXNhYmxlZDogJ2No ZWNrQWNjZXNzTWV0aG9kJywKICAgICAgICAgICAgIGVkaXRhYmxlOiBmdW5j dGlvbihtKSB7Ci0gICAgICAgICAgICAgIC8vIEhlYWRlciBjZWxsIHRoZW4g c2tpcAotICAgICAgICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEJhY2tib25l LkNvbGxlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAg ICAgICAgICAgICAgICBpZiAobS50b3AuZ2V0KCdhbW5hbWUnKSA9PT0gJ2J0 cmVlJykgewotICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3NvcnRfbnVs bHNfYXBwbGljYWJsZScsIHRydWUpOwotICAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICAgICAgLy8gSGVhZGVyIGNlbGwgdGhl biBza2lwCisgICAgICAgICAgICAgICAgaWYgKG0gaW5zdGFuY2VvZiBCYWNr Ym9uZS5Db2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg bS5zZXQoJ2lzX3NvcnRfbnVsbHNfYXBwbGljYWJsZScsIGZhbHNlKTsKLSAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICByZXR1cm4gIShtLmNoZWNrQWNjZXNzTWV0aG9k LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogICAgICAgICAgICAgfSwKICAg ICAgICAgICAgIGRlcHM6IFsnYW1uYW1lJ10sCiAgICAgICAgICAgICBvcHRp b25zOiB7CkBAIC0xMzIsMTggKzEyNSwxMyBAQCBmdW5jdGlvbigkLCBfLCBT LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBhbGVydGlmeSkgewog ICAgICAgICAgIH0sewogICAgICAgICAgICAgaWQ6ICdudWxscycsIGxhYmVs Oid7eyBfKCdOVUxMcycpIH19JywKICAgICAgICAgICAgIGNlbGw6IEJhY2tn cmlkLkV4dGVuc2lvbi5UYWJsZUNoaWxkU3dpdGNoQ2VsbCwgdHlwZTogJ3N3 aXRjaCcsCisgICAgICAgICAgICBkaXNhYmxlZDogJ2NoZWNrQWNjZXNzTWV0 aG9kJywKICAgICAgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7Ci0g ICAgICAgICAgICAgIC8vIEhlYWRlciBjZWxsIHRoZW4gc2tpcAotICAgICAg ICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24p IHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgaWYgKG0udG9wLmdl dCgnYW1uYW1lJykgPT09ICdidHJlZScpIHsKLSAgICAgICAgICAgICAgICAg ICAgbS5zZXQoJ2lzX3NvcnRfbnVsbHNfYXBwbGljYWJsZScsIHRydWUpOwor ICAgICAgICAgICAgICAgIC8vIEhlYWRlciBjZWxsIHRoZW4gc2tpcAorICAg ICAgICAgICAgICAgIGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuQ29sbGVj dGlvbikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIG0uc2V0KCdp c19zb3J0X251bGxzX2FwcGxpY2FibGUnLCBmYWxzZSk7Ci0gICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuICEobS5jaGVj a0FjY2Vzc01ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICAgICAg ICAgICAgIH0sCiAgICAgICAgICAgICBkZXBzOiBbJ2FtbmFtZScsICdzb3J0 X29yZGVyJ10sCiAgICAgICAgICAgICBvcHRpb25zOiB7CkBAIC0xOTYsMTEg KzE4NCw5IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2Zvcm0sIGFsZXJ0aWZ5KSB7CiAgICAgICAgICAgICBpZihtLmdl dCgnc29ydF9vcmRlcicpID09IHRydWUgJiYgbS5wcmV2aW91cygnc29ydF9v cmRlcicpID09ICBmYWxzZSkgewogICAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsgbS5zZXQoJ251bGxzJywgdHJ1ZSkgfSwgMTApOwog ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG0uc2V0 KCdpc19zb3J0X251bGxzX2FwcGxpY2FibGUnLCBmYWxzZSk7Ci0gICAgICAg ICAgfQotICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICByZXR1 cm4gdHJ1ZTsKICAgICAgICAgfSwKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29u c3RyYWludC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMV9wbHVzL2NyZWF0ZS5zcWwKaW5kZXggNmQwYmQxYmUuLmRiMjkwNDhi IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTEs NyArMSw3IEBACiBBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEudGFibGUpIH19CiAgICAgQUREeyUgaWYgZGF0YS5uYW1l ICV9IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17 JSBlbmRpZiV9IEVYQ0xVREUgeyUgaWYgZGF0YS5hbW5hbWUgYW5kIGRhdGEu YW1uYW1lICE9ICcnICV9VVNJTkcge3tkYXRhLmFtbmFtZX19eyUgZW5kaWYg JX0gKAogICAgIHslIGZvciBjb2wgaW4gZGF0YS5jb2x1bW5zICV9eyUgaWYg bG9vcC5pbmRleCAhPSAxICV9LAotICAgIHslIGVuZGlmICV9e3sgY29ubnxx dElkZW50KGNvbC5jb2x1bW4pfX17JSBpZiBjb2wub3Blcl9jbGFzcyBhbmQg Y29sLm9wZXJfY2xhc3MgIT0gJycgJX0ge3tjb2wub3Blcl9jbGFzc319eyUg ZW5kaWYlfXslIGlmIGNvbC5vcmRlciBpcyBkZWZpbmVkIGFuZCBjb2wuaXNf c29ydF9udWxsc19hcHBsaWNhYmxlICV9eyUgaWYgY29sLm9yZGVyICV9IEFT Q3slIGVsc2UgJX0gREVTQ3slIGVuZGlmICV9IE5VTExTeyUgZW5kaWYgJX0g eyUgaWYgY29sLm51bGxzX29yZGVyIGlzIGRlZmluZWQgYW5kIGNvbC5pc19z b3J0X251bGxzX2FwcGxpY2FibGUgJX17JSBpZiBjb2wubnVsbHNfb3JkZXIg JX1GSVJTVCB7JSBlbHNlICV9TEFTVCB7JSBlbmRpZiAlfXslIGVuZGlmICV9 V0lUSCB7e2NvbC5vcGVyYXRvcn19eyUgZW5kZm9yICV9KXslIGlmIGRhdGEu ZmlsbGZhY3RvciAlfQorICAgIHslIGVuZGlmICV9e3sgY29ubnxxdElkZW50 KGNvbC5jb2x1bW4pfX0geyUgaWYgY29sLm9wZXJfY2xhc3MgYW5kIGNvbC5v cGVyX2NsYXNzICE9ICcnICV9e3tjb2wub3Blcl9jbGFzc319IHslIGVuZGlm JX17JSBpZiBjb2wub3JkZXIgJX1BU0N7JSBlbHNlICV9REVTQ3slIGVuZGlm ICV9IE5VTExTIHslIGlmIGNvbC5udWxsc19vcmRlciAlfUZJUlNUeyUgZWxz ZSAlfUxBU1R7JSBlbmRpZiAlfSBXSVRIIHt7Y29sLm9wZXJhdG9yfX17JSBl bmRmb3IgJX0peyUgaWYgZGF0YS5maWxsZmFjdG9yICV9CiAgICAgV0lUSCAo RklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KXslIGVuZGlmICV9eyUg aWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0gInBnX2RlZmF1 bHQiICV9CiAKICAgICBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHt7IGNvbm58 cXRJZGVudChkYXRhLnNwY25hbWUpIH19eyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9u X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50 L3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCmluZGV4IDZkMGJkMWJlLi5kYjI5 MDQ4YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvY3JlYXRl LnNxbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4 Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCkBA IC0xLDcgKzEsNyBAQAogQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQogICAgIEFERHslIGlmIGRhdGEu bmFtZSAlfSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19eyUgZW5kaWYlfSBFWENMVURFIHslIGlmIGRhdGEuYW1uYW1lIGFuZCBk YXRhLmFtbmFtZSAhPSAnJyAlfVVTSU5HIHt7ZGF0YS5hbW5hbWV9fXslIGVu ZGlmICV9ICgKICAgICB7JSBmb3IgY29sIGluIGRhdGEuY29sdW1ucyAlfXsl IGlmIGxvb3AuaW5kZXggIT0gMSAlfSwKLSAgICB7JSBlbmRpZiAlfXt7IGNv bm58cXRJZGVudChjb2wuY29sdW1uKX19eyUgaWYgY29sLm9wZXJfY2xhc3Mg YW5kIGNvbC5vcGVyX2NsYXNzICE9ICcnICV9IHt7Y29sLm9wZXJfY2xhc3N9 fXslIGVuZGlmJX17JSBpZiBjb2wub3JkZXIgaXMgZGVmaW5lZCBhbmQgY29s LmlzX3NvcnRfbnVsbHNfYXBwbGljYWJsZSAlfXslIGlmIGNvbC5vcmRlciAl fSBBU0N7JSBlbHNlICV9IERFU0N7JSBlbmRpZiAlfSBOVUxMU3slIGVuZGlm ICV9IHslIGlmIGNvbC5udWxsc19vcmRlciBpcyBkZWZpbmVkIGFuZCBjb2wu aXNfc29ydF9udWxsc19hcHBsaWNhYmxlICV9eyUgaWYgY29sLm51bGxzX29y ZGVyICV9RklSU1QgeyUgZWxzZSAlfUxBU1QgeyUgZW5kaWYgJX17JSBlbmRp ZiAlfVdJVEgge3tjb2wub3BlcmF0b3J9fXslIGVuZGZvciAlfSl7JSBpZiBk YXRhLmZpbGxmYWN0b3IgJX0KKyAgICB7JSBlbmRpZiAlfXt7IGNvbm58cXRJ ZGVudChjb2wuY29sdW1uKX19IHslIGlmIGNvbC5vcGVyX2NsYXNzIGFuZCBj b2wub3Blcl9jbGFzcyAhPSAnJyAlfXt7Y29sLm9wZXJfY2xhc3N9fSB7JSBl bmRpZiV9eyUgaWYgY29sLm9yZGVyICV9QVNDeyUgZWxzZSAlfURFU0N7JSBl bmRpZiAlfSBOVUxMUyB7JSBpZiBjb2wubnVsbHNfb3JkZXIgJX1GSVJTVHsl IGVsc2UgJX1MQVNUeyUgZW5kaWYgJX0gV0lUSCB7e2NvbC5vcGVyYXRvcn19 eyUgZW5kZm9yICV9KXslIGlmIGRhdGEuZmlsbGZhY3RvciAlfQogICAgIFdJ VEggKEZJTExGQUNUT1I9e3tkYXRhLmZpbGxmYWN0b3J9fSl7JSBlbmRpZiAl fXslIGlmIGRhdGEuc3BjbmFtZSBhbmQgZGF0YS5zcGNuYW1lICE9ICJwZ19k ZWZhdWx0IiAlfQogCiAgICAgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKSB9fXslIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjZfcGx1cy9jcmVhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3Ry YWludC9zcWwvOS42X3BsdXMvY3JlYXRlLnNxbAppbmRleCA2ZDBiZDFiZS4u ZGIyOTA0OGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuNl9wbHVzL2Ny ZWF0ZS5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS42X3BsdXMvY3JlYXRlLnNx bApAQCAtMSw3ICsxLDcgQEAKIEFMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KICAgICBBRER7JSBpZiBk YXRhLm5hbWUgJX0gQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5u YW1lKSB9fXslIGVuZGlmJX0gRVhDTFVERSB7JSBpZiBkYXRhLmFtbmFtZSBh bmQgZGF0YS5hbW5hbWUgIT0gJycgJX1VU0lORyB7e2RhdGEuYW1uYW1lfX17 JSBlbmRpZiAlfSAoCiAgICAgeyUgZm9yIGNvbCBpbiBkYXRhLmNvbHVtbnMg JX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sCi0gICAgeyUgZW5kaWYgJX17 eyBjb25ufHF0SWRlbnQoY29sLmNvbHVtbil9fXslIGlmIGNvbC5vcGVyX2Ns YXNzIGFuZCBjb2wub3Blcl9jbGFzcyAhPSAnJyAlfSB7e2NvbC5vcGVyX2Ns YXNzfX17JSBlbmRpZiV9eyUgaWYgY29sLm9yZGVyIGlzIGRlZmluZWQgYW5k IGNvbC5pc19zb3J0X251bGxzX2FwcGxpY2FibGUgJX17JSBpZiBjb2wub3Jk ZXIgJX0gQVNDeyUgZWxzZSAlfSBERVNDeyUgZW5kaWYgJX0gTlVMTFN7JSBl bmRpZiAlfSB7JSBpZiBjb2wubnVsbHNfb3JkZXIgaXMgZGVmaW5lZCBhbmQg Y29sLmlzX3NvcnRfbnVsbHNfYXBwbGljYWJsZSAlfXslIGlmIGNvbC5udWxs c19vcmRlciAlfUZJUlNUIHslIGVsc2UgJX1MQVNUIHslIGVuZGlmICV9eyUg ZW5kaWYgJX1XSVRIIHt7Y29sLm9wZXJhdG9yfX17JSBlbmRmb3IgJX0peyUg aWYgZGF0YS5maWxsZmFjdG9yICV9CisgICAgeyUgZW5kaWYgJX17eyBjb25u fHF0SWRlbnQoY29sLmNvbHVtbil9fSB7JSBpZiBjb2wub3Blcl9jbGFzcyBh bmQgY29sLm9wZXJfY2xhc3MgIT0gJycgJX17e2NvbC5vcGVyX2NsYXNzfX0g eyUgZW5kaWYlfXslIGlmIGNvbC5vcmRlciAlfUFTQ3slIGVsc2UgJX1ERVND eyUgZW5kaWYgJX0gTlVMTFMgeyUgaWYgY29sLm51bGxzX29yZGVyICV9RklS U1R7JSBlbHNlICV9TEFTVHslIGVuZGlmICV9IFdJVEgge3tjb2wub3BlcmF0 b3J9fXslIGVuZGZvciAlfSl7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0KICAg ICBXSVRIIChGSUxMRkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9yfX0peyUgZW5k aWYgJX17JSBpZiBkYXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSAi cGdfZGVmYXVsdCIgJX0KIAogICAgIFVTSU5HIElOREVYIFRBQkxFU1BBQ0Ug e3sgY29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSkgfX17JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9p bmRleC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2NyZWF0ZS5z cWwKaW5kZXggYjdiZmE1MjcuLjMzYWYxOTczIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTMsNyAr Myw3IEBAIENSRUFURSB7JSBpZiBkYXRhLmluZGlzdW5pcXVlICV9VU5JUVVF IHslIGVuZGlmICV9SU5ERVggeyUgaWYgZGF0YS5pc2NvbmN1cnJlbnQKIAog eyUgaWYgbW9kZSA9PSAnY3JlYXRlJyAlfQogICAgICh7JSBmb3IgYyBpbiBk YXRhLmNvbHVtbnMgJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVu ZGlmICV9e3tjb25ufHF0SWRlbnQoYy5jb2xuYW1lKX19eyUgaWYgYy5jb2xs c3BjbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsc3BjbmFtZX19eyUgZW5kaWYg JX17JSBpZiBjLm9wX2NsYXNzICV9Ci0ge3tjLm9wX2NsYXNzfX17JSBlbmRp ZiAlfXslIGlmIGRhdGEuYW1uYW1lIGlzIGRlZmluZWQgJX17JSBpZiBjLnNv cnRfb3JkZXIgaXMgZGVmaW5lZCBhbmQgYy5pc19zb3J0X251bGxzX2FwcGxp Y2FibGUgJX17JSBpZiBjLnNvcnRfb3JkZXIgJX0gREVTQ3slIGVsc2UgJX0g QVNDeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmIGMubnVsbHMgaXMgZGVm aW5lZCBhbmQgYy5pc19zb3J0X251bGxzX2FwcGxpY2FibGUgJX0gTlVMTFMg eyUgaWYgYy5udWxscyAlfQorIHt7Yy5vcF9jbGFzc319eyUgZW5kaWYgJX17 JSBpZiBkYXRhLmFtbmFtZSBpcyBkZWZpbmVkIGFuZCBkYXRhLmFtbmFtZSBu b3QgaW4gWydnaXN0JywgJ2dpbiddICV9eyUgaWYgYy5zb3J0X29yZGVyIGlz IGRlZmluZWQgJX17JSBpZiBjLnNvcnRfb3JkZXIgJX0gREVTQ3slIGVsc2Ug JX0gQVNDeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmIGMubnVsbHMgaXMg ZGVmaW5lZCAlfSBOVUxMUyB7JSBpZiBjLm51bGxzICV9CiBGSVJTVHslIGVs c2UgJX1MQVNUeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUg ZW5kZm9yICV9KQogeyUgZWxzZSAlfQogeyMjIFdlIHdpbGwgZ2V0IGluZGVu dGVkIGRhdGEgZnJvbSBwb3N0Z3JlcyBmb3IgY29sdW1uICMjfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9q cy90YWJsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv dGFibGUvanMvdGFibGUuanMKaW5kZXggYzg3YTI5MzAuLjJkMDA2MDkwIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Rh YmxlL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvanMvdGFibGUuanMKQEAgLTE5OCw1NCArMTk4LDUx IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxl cnRpZnkpIHsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgcmVz ZXRfdGFibGVfc3RhdHM6IGZ1bmN0aW9uKGFyZ3MpIHsKLSAgICAgICAgICB2 YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAotICAgICAgICAgICAgb2JqID0gdGhp cywKLSAgICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAg ICAgIGkgPSBpbnB1dC5pdGVtIHx8IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAg ICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDog dW5kZWZpbmVkOworICAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge307 CisgICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICB0ID0gcGdCcm93 c2VyLnRyZWUsCisgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxl Y3RlZCgpLAorICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0 Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOwogCiAgICAgICAgICAgaWYgKCFk KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgYWxl cnRpZnkuY29uZmlybSgKLSAgICAgICAgICAgICd7eyBfKCdSZXNldCBzdGF0 aXN0aWNzJykgfX0nLAotICAgICAgICAgICAgUygne3sgXygnQXJlIHlvdSBz dXJlIHlvdSB3YW50IHRvIHJlc2V0IHRoZSBzdGF0aXN0aWNzIGZvciB0YWJs ZSAlJXM/JykgfX0nKS5zcHJpbnRmKGQuX2xhYmVsKS52YWx1ZSgpLAorICAg ICAgICAgICAgUygne3sgXygnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJl c2V0IHRhYmxlIHN0YXRpc3RpY3MgZm9yICVzPycpIH19Jykuc3ByaW50Zihk LmxhYmVsKS52YWx1ZSgpLAogICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsK LSAgICAgICAgICAgICAgaWYgKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIg ZGF0YSA9IGQ7Ci0gICAgICAgICAgICAgICAgJC5hamF4KHsKLSAgICAgICAg ICAgICAgICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChpLCAncmVzZXQnICwg ZCwgdHJ1ZSksCi0gICAgICAgICAgICAgICAgICB0eXBlOidERUxFVEUnLAot ICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0g ICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2Vzcygie3sgXygn IiArIHJlcy5pbmZvICsgIicpIH19Iik7Ci0gICAgICAgICAgICAgICAgICAg ICAgdC5yZW1vdmVJY29uKGkpOwotICAgICAgICAgICAgICAgICAgICAgIGRh dGEuaWNvbiA9ICdpY29uLXRhYmxlJzsKLSAgICAgICAgICAgICAgICAgICAg ICB0LmFkZEljb24oaSwge2ljb246IGRhdGEuaWNvbn0pOwotICAgICAgICAg ICAgICAgICAgICAgIHQudW5sb2FkKGkpOwotICAgICAgICAgICAgICAgICAg ICAgIHQuc2V0SW5vZGUoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgdC5k ZXNlbGVjdChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCB1 cGRhdGVkIGRhdGEgZnJvbSBzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg ICAgICAgdC5zZWxlY3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgfSwg MTApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICB9LAotICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwg c3RhdHVzLCBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewot ICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4 aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICBpZiAo ZXJyLnN1Y2Nlc3MgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg bXNnID0gUygne3sgXygnICsgZXJyLmVycm9ybXNnICsgJyl9fScpLnZhbHVl KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5lcnJvcigi e3sgXygnIiArIGVyci5lcnJvcm1zZyArICInKSB9fSIpOwotICAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAo ZSkge30KKyAgICAgICAgICAgIGlmIChlKSB7CisgICAgICAgICAgICAgIHZh ciBkYXRhID0gZDsKKyAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAg ICAgICAgICB1cmw6IG9iai5nZW5lcmF0ZV91cmwoaSwgJ3Jlc2V0JyAsIGQs IHRydWUpLAorICAgICAgICAgICAgICAgIHR5cGU6J0RFTEVURScsCisgICAg ICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAg ICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKCJ7eyBfKCciICsgcmVzLmlu Zm8gKyAiJykgfX0iKTsKKyAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVJ Y29uKGkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmljb24gPSAnaWNv bi10YWJsZSc7CisgICAgICAgICAgICAgICAgICAgIHQuYWRkSWNvbihpLCB7 aWNvbjogZGF0YS5pY29ufSk7CiAgICAgICAgICAgICAgICAgICAgIHQudW5s b2FkKGkpOworICAgICAgICAgICAgICAgICAgICB0LnNldElub2RlKGkpOwor ICAgICAgICAgICAgICAgICAgICB0LmRlc2VsZWN0KGkpOworICAgICAgICAg ICAgICAgICAgICAvLyBGZXRjaCB1cGRhdGVkIGRhdGEgZnJvbSBzZXJ2ZXIK KyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICAgICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAg ICAgICAgICAgICAgfSwgMTApOwogICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICB9LAotICAgICAgICAgICAgZnVuY3Rpb24oKSB7fQotICAgICAgICAgICk7 CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBlcnJvcjog ZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAg ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gJC5w YXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAg ICAgIGlmIChlcnIuc3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICAgICAg ICAgICAgbXNnID0gUygne3sgXygnICsgZXJyLmVycm9ybXNnICsgJyl9fScp LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuZXJy b3IoInt7IF8oJyIgKyBlcnIuZXJyb3Jtc2cgKyAiJykgfX0iKTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSBjYXRjaCAo ZSkge30KKyAgICAgICAgICAgICAgICAgIHQudW5sb2FkKGkpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9 CisgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICB9LAogICAgICAgbW9k ZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5weSBiL3dlYi9wZ2FkbWluL3V0 aWxzL3JvdXRlLnB5CmluZGV4IGYxOGQyYzE4Li5mZWQyNmEwZiAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKKysrIGIvd2ViL3Bn YWRtaW4vdXRpbHMvcm91dGUucHkKQEAgLTU0LDIwICs1NCwyNSBAQCBjbGFz cyBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5KEFCQ01ldGEpOgogICAgICAgICBB QkNNZXRhLl9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGQpCiAKICAgICBA Y2xhc3NtZXRob2QKLSAgICBkZWYgbG9hZF9nZW5lcmF0b3JzKGNscywgcGtn KToKKyAgICBkZWYgbG9hZF9nZW5lcmF0b3JzKGNscywgKnBrZ3MpOgogCiAg ICAgICAgIGNscy5yZWdpc3RyeSA9IGRpY3QoKQogCisgICAgICAgIGFsbF9t b2R1bGVzID0gW10KKworICAgICAgICBmb3IgcGtnIGluIHBrZ3M6CisgICAg ICAgICAgICBhbGxfbW9kdWxlcyArPSBmaW5kX21vZHVsZXMocGtnLCBGYWxz ZSwgVHJ1ZSkKKworCiAgICAgICAgICMgQ2hlY2sgZm9yIFNFUlZFUiBtb2Rl Ci0gICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERToKLSAgICAgICAgICAg IGZvciBtb2R1bGVfbmFtZSBpbiBmaW5kX21vZHVsZXMocGtnLCBGYWxzZSwg VHJ1ZSk6CisgICAgICAgIGZvciBtb2R1bGVfbmFtZSBpbiBhbGxfbW9kdWxl czoKKyAgICAgICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERToKICAgICAg ICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGlmICJ0ZXN0 cy4iIGluIHN0cihtb2R1bGVfbmFtZSk6CiAgICAgICAgICAgICAgICAgICAg ICAgICBpbXBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAg ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAg dHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAg IGVsc2U6Ci0gICAgICAgICAgICBmb3IgbW9kdWxlX25hbWUgaW4gZmluZF9t b2R1bGVzKHBrZywgRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgZWxzZToK ICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICMg RXhjbHVkZSB0aGUgdGVzdCBjYXNlcyBpbiBicm93c2VyIG5vZGUgaWYgU0VS VkVSX01PREUKICAgICAgICAgICAgICAgICAgICAgIyBpcyBGYWxzZQpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vLmdpdGlnbm9yZSBiL3dlYi9yZWdy ZXNzaW9uLy5naXRpZ25vcmUKaW5kZXggMDU4MTgxMGIuLjcyM2ZjZTdlIDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi8uZ2l0aWdub3JlCisrKyBiL3dl Yi9yZWdyZXNzaW9uLy5naXRpZ25vcmUKQEAgLTEsNCArMSw1IEBACiBwYXJl bnRfaWQucGtsCiByZWdyZXNzaW9uLmxvZwordGVzdF9ncmVlbnBsdW1fY29u ZmlnLmpzb24KIHRlc3RfYWR2YW5jZWRfY29uZmlnLmpzb24KIHRlc3RfY29u ZmlnLmpzb24KZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL1JFQURNRSBi L3dlYi9yZWdyZXNzaW9uL1JFQURNRQppbmRleCA4Y2MyOTk4Ny4uYWU1ZDI2 OGQgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL1JFQURNRQorKysgYi93 ZWIvcmVncmVzc2lvbi9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTAgQEAgVGVz dCBEYXRhIERldGFpbHMKIEV4ZWN1dGlvbjoKIC0tLS0tLS0tLS0tCiAKKy0g Rm9yIGFjY2VwdGFuY2UgdGVzdHMgdG8gcnVuIGFzIHBhcnQgb2YgdGhlIGVu dGlyZSB0ZXN0IHN1aXRlLCBDaHJvbWUgYW5kIGNocm9tZWRyaXZlciBuZWVk IHRvIGJlIGluc3RhbGxlZDoKKyAgZ2V0IGNocm9tZWRyaXZlciBmcm9tIGh0 dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9jaHJvbWVk cml2ZXIvZG93bmxvYWRzIG9yIGEgcGFja2FnZSBtYW5hZ2VyCisgIGFuZCBt YWtlIHN1cmUgaXQgaXMgb24gdGhlIFBBVEgKKwogLSBUaGUgdGVzdCBmcmFt ZXdvcmsgaXMgbW9kdWxhciBhbmQgcGx1Z2dhYmxlIGFuZCBkeW5hbWljYWxs eSBsb2NhdGVzIHRlc3RzCiAgIGZvciBtb2R1bGVzIHdoaWNoIGFyZSBkaXNj b3ZlcmVkIGF0IHJ1bnRpbWUuIEFsbCB0ZXN0IGNhc2VzIGFyZSBmb3VuZAog ICBhbmQgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5IGJ5IGl0cyBtb2R1bGUg bmFtZSBpbgo= --f403045f3dc47dd6300546f3a0b2 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 --f403045f3dc47dd6300546f3a0b2--