Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1augsV-00006W-Dx for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Apr 2016 13:48:43 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1augsU-0002nO-P0 for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Apr 2016 13:48:42 +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 1augsS-0002nD-Nm for pgadmin-hackers@postgresql.org; Mon, 25 Apr 2016 13:48:41 +0000 Received: from mail-yw0-x233.google.com ([2607:f8b0:4002:c05::233]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1augsM-0000Fp-84 for pgadmin-hackers@postgresql.org; Mon, 25 Apr 2016 13:48:39 +0000 Received: by mail-yw0-x233.google.com with SMTP id t10so211541043ywa.0 for ; Mon, 25 Apr 2016 06:48:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=e9tD9SxHi5sImKorsGA+/XPaARDvUNCTGfaBAZhGTRw=; b=ln1k8V6GR1b0eiCfnaM0rNep/3TkF4F5gqQWoP7hMyY+mV/NBJsLwoCIpatE+ipKt1 gWf24K9y2izpYf2DNRqRKvoqlR/pVzFR3etbqwLDoTzSnIdepsnRf4PFdIWKbb0CnhHI iAicpgcBnMdilTx2k7dF+DHIZwlU92rRO5FW7Qw88Ia/Xx2kP2bC4ph8Qwnisw7zSQZX r77ilncJdB7Frum1MbgsJ/X42kI421hVEn5a7LOllxBLeroW5s2CKEPlR38x8aM0gDHv H4PiB+1rR0TB4Uxn26wl3/05HtQXEzjuAUvL2bGnZJaM4pUY5+KVCXtS3bHhJS07OTJ5 B+JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=e9tD9SxHi5sImKorsGA+/XPaARDvUNCTGfaBAZhGTRw=; b=g6GawQ+hDgk9yZrJpz6bOM4KVY0OsroAnrsFvMSPw8vzx4vjREw1jFVly6AKba3+9r Ds5C8xqN7kJGXPKWM+pFhzkzTCm+IOvQzT5vN79uWuDs/gLShjS/MfT+JQQPJyfbb0xk FUuqDAPEcbdoOz3rYE5klJKfdqyYOdIhc5jPt+EtT3nF4IYQ69f8mbYRjgJ9BJL7RiXT jV9yEDzkkBcSZl6J/9BIcDAgLZxNJ5qO83djIVMOMAncvEsnCHmYngXtBn0lOZPqcPqD nIEdL0GjvHKyfou6UNMjIEO2yP912vtRDRySFjfsNTkBDNeu8V2GEeTuDGJ8DmWu07v1 G2Gw== X-Gm-Message-State: AOPr4FWQxPBDFLAZHo3htNXdClFbYcSFV2A6Fuk4BNh4n85vPYFGPMwJb2zb4YFEc2k6Hgj7OGVVlWK+G+d0xTwe MIME-Version: 1.0 X-Received: by 10.13.213.67 with SMTP id x64mr15372340ywd.261.1461592113282; Mon, 25 Apr 2016 06:48:33 -0700 (PDT) Received: by 10.37.203.134 with HTTP; Mon, 25 Apr 2016 06:48:33 -0700 (PDT) In-Reply-To: References: Date: Mon, 25 Apr 2016 19:18:33 +0530 Message-ID: Subject: Re: [pgAdmin4][Debugger]: Initial Patch From: Neel Patel To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114fc14eb8444205314f6ea3 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114fc14eb8444205314f6ea3 Content-Type: multipart/alternative; boundary=001a114fc14eb8443d05314f6ea1 --001a114fc14eb8443d05314f6ea1 Content-Type: text/plain; charset=UTF-8 Hi, Please find attached patch file with below fixes. - Removed the "lineWrapping" option from the codemirror textarea because it was creating issue in the code folding. - Handle the values while depositing during debugging. - Properly handle the Array values while saving it to sqlite database and displayed in input dialog. - SQL code folding was not supported in codemirror so added the same. Currently we have added support for below keywords. IF-END IF LOOP-END LOOP BEGIN - END CASE- END CASE We will add more SQL folding support later ( e.g. Fold multiline query inside function, Folding of create function etc.) As query tool also requires the use of code folding so below is the usage for it. - Define below require javascript files in modules. 'codemirror/addon/fold/foldgutter', 'codemirror/addon/fold/foldcode', 'codemirror/addon/fold/pgadmin-sqlfoldcode' - Remove "lineWrapping" option from the codemirror textarea. - Add the below options while creating the Codemirror textarea. *foldOptions*: { widget: "\u2026" }, *foldGutter*: { rangeFinder: CodeMirror.fold.combine(CodeMirror.pgadminBeginRangeFinder, CodeMirror.pgadminIfRangeFinder, CodeMirror.pgadminLoopRangeFinder, CodeMirror.pgadminCaseRangeFinder) }, *gutters*: ["CodeMirror-foldgutter"] Do review it and let us know for comments. Thanks, Neel Patel On Wed, Apr 20, 2016 at 6:32 PM, Dave Page wrote: > Thanks - applied! > > > On Tuesday, April 19, 2016, Neel Patel > wrote: > >> Hi Dave, >> >> Please find the attached patch file with below fix. >> >> - Remove the duplicate CSS and used the actual class for the debugger >> button toolbar. >> - As per the Ashesh's comment, previously we used 2 wcDocker instance >> to arrange the multiple tabs to main debugger panel. Now with this patch >> file, we have used only 1 wcDocker instance. >> >> Do review it and let us know for comments. >> >> Thanks, >> Neel Patel >> >> On Mon, Apr 18, 2016 at 6:07 PM, Dave Page wrote: >> >>> Hi >>> >>> On Monday, April 18, 2016, Neel Patel >>> wrote: >>> >>>> Hi Dave, >>>> >>>> Please find inline comments with all the fixes. >>>> Attached is the updated patch file. Do review it and let me know for >>>> any comments. >>>> >>>> If you find any issues, let me know .Now, Working on the remaining >>>> TODOs as mentioned in below email. >>>> >>> >>> Thanks - committed with some minor tweaks. One problem partly still >>> remains though - you've partially copied the toolbar styling. Please use >>> the actual classes used by the Properties panel. I've already updated the >>> query tool in that way. Whilst your version looks much closer, it's missing >>> the minimum button widths, and duplicates CSS unnecessarily. >>> >>> Thanks. >>> >>> >>>> >>>> On Fri, Apr 15, 2016 at 2:09 AM, Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> On Thu, Apr 14, 2016 at 1:52 PM, Neel Patel < >>>>> neel.patel@enterprisedb.com> wrote: >>>>> > Hi, >>>>> > >>>>> > Please find attached v2 patch file of the debugger which fixes the >>>>> below >>>>> > issues which was not present in the first patch. >>>>> > In this patch, we have added new table in sqlite database to store >>>>> the >>>>> > functions arguments value user has given during debugging. >>>>> > After applying this patch, user needs to execute "setup.py" to >>>>> create the >>>>> > new table in pgadmin4.db file. >>>>> > >>>>> > In direct debugging, when user debug the function then arguments >>>>> values will >>>>> > be stored in the sqlite database so when user debug the same >>>>> function again >>>>> > then previous values will be filled in the user input dialog. >>>>> > Once the execution is completed then user will be able to do the >>>>> debug of >>>>> > the same function again by pressing the "Continue/Restart" button. >>>>> > User can debug the "procedure" which is supported in PPAS database. >>>>> > Replaced the "Glyphicon" with the "font-awesome" icons. >>>>> >>>>> Very cool! Committed, understanding that there are still improvements >>>>> to be made. >>>>> >>>>> > Below are the TODOs >>>>> > >>>>> > Validate the input arguments values changed by user while depositing >>>>> the >>>>> > value during debugging. >>>>> > Need to implement the code folding in the codemirror editor area. >>>>> > As per the Ashesh's suggestion, need to add debug logs information >>>>> so that >>>>> > we can get the state of the debug function. Also need to add "arrow" >>>>> next to >>>>> > breakpoint in the gutters as per the pgadmin3. >>>>> > Need to add "Debug package initializer" in the user input dialog for >>>>> the >>>>> > direct debugging. >>>>> > Last but not least "Review comments" :) >>>>> >>>>> Here you go :-) >>>>> >>>>> - Ensure all messages are gettext enabled. >>>>> >>>> >>>> Fixed. >>>> >>>>> >>>>> - Constructs like the following won't work, because Jinja will >>>>> evaluate the string " + err.errormsg + " before it ever gets evaluated >>>>> as JS by the browser. >>>>> >>>>> Alertify.alert("{{ _('" + err.errormsg + "') }}"); >>>>> >>>> >>>> Fixed. >>>> >>>> >>>>> >>>>> - Please adjust the button bar to use the same styling as the button >>>>> bar on the Properties tab. >>>>> >>>> >>>> Fixed >>>> >>>>> >>>>> - Let's make the stack pane tab part of the tabset at the bottom of >>>>> the debugger, and ensure docking etc. works so tabs can be split off >>>>> and arranged around the main source window. >>>>> >>>> >>>> Fixed. Now stack pane will be displayed along with another panel at >>>> bottom and also docking has been introduced for all the panels so tabs will >>>> be arranged around main debugger panel. >>>> >>>> >>>>> >>>>> - Stepping is quite slow. What's causing that? I wonder if we really >>>>> need to have all the one line SQL templates - they're probably quite >>>>> expensive to process. >>>>> >>>> Fixed. This is due to polling timeout was high (1 second) and we are >>>> getting delay in getting the results. Now polling timeout has reduced to to >>>> 200ms. >>>> >>>>> >>>>> - Is backend_running.sql required? I've removed both versions as I >>>>> can't find any references to them. Are any other templates not >>>>> required? >>>>> >>>> Ok. No other templates. >>>> >>>>> >>>>> Will log any other issues that come up in further work. >>>>> >>>>> > Below functionalities are implemented but testing are pending. >>>>> > >>>>> > Trigger functions need to test with the debugger. >>>>> > Functions are tested with data types (like text, integer etc.) but >>>>> it needs >>>>> > to be tested with all the data types for direct debugging. >>>>> > Functions/Procedures need to test with PPAS 9.2 and earlier version >>>>> where >>>>> > debugger version is different. >>>>> >>>>> 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 >>> >>> >> > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > --001a114fc14eb8443d05314f6ea1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find attached patch fil= e with below fixes.
  • Removed the "lineWrapping" = option from the codemirror textarea because it was creating issue in the co= de folding.
  • Handle the values while depositing during debugging= .
  • Properly handle the Array values while saving it to sqlite da= tabase and displayed in input dialog.
  • SQL code folding was= not supported in codemirror so added the same. Currently we have added sup= port for below keywords.
    =C2=A0 =C2=A0 =C2=A0 IF-END IF=C2=A0
    =C2=A0 =C2=A0 =C2=A0 LOOP-END LOOP
    =C2=A0 =C2=A0 =C2=A0 BE= GIN - END
    =C2=A0 =C2=A0 =C2=A0 CASE- END CASE
    We will a= dd more SQL folding support later ( e.g. Fold multiline query inside functi= on, Folding of create function etc.)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0As query tool also requires the use of code folding= so below is the usage for it.
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 - Define below require javascript files in mod= ules.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0'codemirror/addon/fold/foldgutter',=C2=A0
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'codemirror/addon/f= old/foldcode',=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0'codemirror/addon/fold/pgadmin-sqlfoldcode'=

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = - Remove "lineWrapping" option from the codemirror textarea.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - Add= the below options while creating the Codemirror textarea.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 foldOptions: {
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 widget: "\= u2026"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 },
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 foldGutter: {
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 rangeFinder: CodeMirror.fold.combine(CodeMirror.pgadminBeginRang= eFinder, CodeMirror.pgadminIfRangeFinder,
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0CodeMirror.pgadminLoopRangeFinder, CodeMirror.pgadminCaseRangeFinder)=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0},
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0gutters: ["CodeMirror-foldgutter&quo= t;]

=C2=A0 =C2=A0
Do review it and= let us know for comments.

Thanks,
Neel Patel


On Wed, Apr 20, 2016 at 6:32 PM, Dave Page <dpage@p= gadmin.org> wrote:
Thanks -= applied!


On Tuesday, April = 19, 2016, Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi Dave,

Please find t= he attached patch file with below fix.
  • Remove the duplica= te CSS and used the actual class for the debugger button toolbar.
  • A= s per the Ashesh's comment, previously we used 2 wcDocker instance to a= rrange the multiple tabs to main debugger panel. Now with this patch file, = we have used only 1 wcDocker instance.
Do review it and let u= s know for comments.

Thanks,
Neel = =C2=A0Patel

On Mon, Apr 18, 2016 at 6:07 PM, Dave Page <d= page@pgadmin.org> wrote:
Hi=

On Monday, April 18, 2016, Neel Patel <neel.patel@enter= prisedb.com> wrote:
Hi Dave,

Please find inline comments with all the fix= es.
Attached is the updated patch file. Do review it and let me k= now for any comments.

If you find any issues, let = me know .Now, Working on the remaining TODOs as mentioned in below email.

Thanks - committed with s= ome minor tweaks. One problem partly still remains though - you've part= ially copied the toolbar styling. Please use the actual classes used by the= Properties panel. I've already updated the query tool in that way. Whi= lst your version looks much closer, it's missing the minimum button wid= ths, and duplicates CSS unnecessarily.

Thanks.
=C2=A0

On Fri, Apr 15,= 2016 at 2:09 AM, Dave Page <dpage@pgadmin.org&= gt; wrote:
Hi

On Thu, Apr 14, 2016 at 1:52 PM, Neel Patel <neel.patel@enterprisedb.= com> wrote:
> Hi,
>
> Please find attached v2 patch file of the debugger which fixes the bel= ow
> issues which was not present in the first patch.
> In this patch, we have added new table in sqlite database to store the=
> functions arguments value user has given during debugging.
> After applying this patch, user needs to execute "setup.py" = to create the
> new table in pgadmin4.db file.
>
> In direct debugging, when user debug the function then arguments value= s will
> be stored in the sqlite database so when user debug the same function = again
> then previous values will be filled in the user input dialog.
> Once the execution is completed then user will be able to do the debug= of
> the same function again by pressing the "Continue/Restart" b= utton.
> User can debug the "procedure" which is supported in PPAS da= tabase.
> Replaced the "Glyphicon" with the "font-awesome" i= cons.

Very cool! Committed, understanding that there are still improvement= s
to be made.

> Below are the TODOs
>
> Validate the input arguments values changed by user while depositing t= he
> value during debugging.
> Need to implement the code folding in the codemirror editor area.
> As per the Ashesh's suggestion, need to add debug logs information= so that
> we can get the state of the debug function. Also need to add "arr= ow" next to
> breakpoint in the gutters as per the pgadmin3.
> Need to add "Debug package initializer" in the user input di= alog for the
> direct debugging.
> Last but not least "Review comments" :)

Here you go :-)

- Ensure all messages are gettext enabled.
=C2=A0
Fixed.=C2=A0

- Constructs like the following won't work, because Jinja will
evaluate the string " + err.errormsg + " before it ever gets eval= uated
as JS by the browser.

Alertify.alert("{{ _('" + err.errormsg + "') }}"= ;);
=C2=A0
Fixed.
=C2=A0

- Please adjust the button bar to use the same styling as the button
bar on the Properties tab.
=C2=A0
Fixed=C2= =A0

- Let's make the stack pane tab part of the tabset at the bottom of
the debugger, and ensure docking etc. works so tabs can be split off
and arranged around the main source window.
=C2=A0
Fixed. Now stack pane will be displayed along with another panel at = bottom and also docking has been introduced for all the panels so tabs will= be arranged around main debugger panel.
=C2=A0

- Stepping is quite slow. What's causing that? I wonder if we really
need to have all the one line SQL templates - they're probably quite
expensive to process.
Fixed. This is due to polling ti= meout was high (1 second) and we are getting delay in getting the results. = Now polling timeout has reduced to to 200ms.

- Is backend_running.sql required? I've removed both versions as I
can't find any references to them. Are any other templates not
required?
Ok. No other templates.

Will log any other issues that come up in further work.

> Below functionalities are implemented but testing are pending.
>
> Trigger functions need to test with the debugger.
> Functions are tested with data types (like text, integer etc.)=C2=A0 b= ut it needs
> to be tested with all the data types for direct debugging.
> Functions/Procedures need to test with PPAS 9.2 and earlier version wh= ere
> debugger version is different.

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




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

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


--001a114fc14eb8443d05314f6ea1-- --001a114fc14eb8444205314f6ea3 Content-Type: application/octet-stream; name="debugger_25_April_Fixes.patch" Content-Disposition: attachment; filename="debugger_25_April_Fixes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ing1marw0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC9i YWNrZ3JpZC5wZ2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2Jh Y2tncmlkL2JhY2tncmlkLnBnYWRtaW4uanMKaW5kZXggOTk5YWM3Yy4uNjBm NmI4NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tn cmlkL2JhY2tncmlkLnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2JhY2tncmlkL2JhY2tncmlkLnBnYWRtaW4uanMKQEAgLTc2Miw5 ICs3NjIsMTAgQEAKICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKICAg ICAgIEJhY2tncmlkLkNlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgLy8gc2V0IHZhbHVlIHRvIGVt cHR5IGFycmF5LgorICAgICAgICB2YXIgbSA9IGFyZ3VtZW50c1swXS5tb2Rl bDsKICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5jb2xsZWN0aW9u KSkgewogICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gbmV3IChCYWNr Ym9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0gICAgICAgICAgICBtb2RlbDog YXJyYXlDZWxsTW9kZWx9KSk7CisgICAgICAgICAgICBtb2RlbDogYXJyYXlD ZWxsTW9kZWx9KSkobS5nZXQoJ3ZhbHVlJykpOwogICAgICAgICB9CiAKICAg ICAgICAgdGhpcy5tb2RlbC5zZXQodGhpcy5jb2x1bW4uZ2V0KCduYW1lJyks IHRoaXMuY29sbGVjdGlvbik7CkBAIC03ODQsOSArNzg1LDEwIEBACiAgICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICBCYWNrZ3JpZC5DZWxs LnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CiAgICAgICAgIC8vIHNldCB2YWx1ZSB0byBlbXB0eSBhcnJheS4KKyAgICAg ICAgdmFyIG0gPSBhcmd1bWVudHNbMF0ubW9kZWw7CiAgICAgICAgIGlmIChf LmlzVW5kZWZpbmVkKHRoaXMuY29sbGVjdGlvbikpIHsKICAgICAgICAgICAg IHRoaXMuY29sbGVjdGlvbiA9IG5ldyAoQmFja2JvbmUuQ29sbGVjdGlvbi5l eHRlbmQoewotICAgICAgICAgICAgbW9kZWw6IGFycmF5Q2VsbE1vZGVsfSkp OworICAgICAgICAgICAgbW9kZWw6IGFycmF5Q2VsbE1vZGVsfSkpKG0uZ2V0 KCd2YWx1ZScpKTsKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9jb2RlbWlycm9yL2FkZG9uL2ZvbGQvcGdhZG1p bi1zcWxmb2xkY29kZS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb2Rl bWlycm9yL2FkZG9uL2ZvbGQvcGdhZG1pbi1zcWxmb2xkY29kZS5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWY4MzkzCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvZGVtaXJy b3IvYWRkb24vZm9sZC9wZ2FkbWluLXNxbGZvbGRjb2RlLmpzCkBAIC0wLDAg KzEsODMgQEAKKyhmdW5jdGlvbihtb2QpIHsKKyAgaWYgKHR5cGVvZiBleHBv cnRzID09ICJvYmplY3QiICYmIHR5cGVvZiBtb2R1bGUgPT0gIm9iamVjdCIp IC8vIENvbW1vbkpTCisgICAgbW9kKHJlcXVpcmUoIi4uLy4uL2xpYi9jb2Rl bWlycm9yIikpOworICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09ICJmdW5j dGlvbiIgJiYgZGVmaW5lLmFtZCkgLy8gQU1ECisgICAgZGVmaW5lKFsiLi4v Li4vbGliL2NvZGVtaXJyb3IiXSwgbW9kKTsKKyAgZWxzZSAvLyBQbGFpbiBi cm93c2VyIGVudgorICAgIG1vZChDb2RlTWlycm9yKTsKK30pKGZ1bmN0aW9u KENvZGVNaXJyb3IpIHsKKyAgInVzZSBzdHJpY3QiOworCisgIENvZGVNaXJy b3IucGdhZG1pbktleXdvcmRSYW5nZUZpbmRlciA9IGZ1bmN0aW9uKGNtLCBz dGFydCwgc3RhcnRUa24sIGVuZFRrbikgeworICAgIHZhciBsaW5lID0gc3Rh cnQubGluZSwgbGluZVRleHQgPSBjbS5nZXRMaW5lKGxpbmUpOworICAgIHZh ciBhdCA9IGxpbmVUZXh0Lmxlbmd0aCwgc3RhcnRDaGFyLCB0b2tlblR5cGU7 CisgICAgZm9yICg7IGF0ID4gMDspIHsKKyAgICAgIHZhciBmb3VuZCA9IGxp bmVUZXh0Lmxhc3RJbmRleE9mKHN0YXJ0VGtuLCBhdCk7CisgICAgICB2YXIg c3RhcnRUb2tlbiA9IHN0YXJ0VGtuOworICAgICAgdmFyIGVuZFRva2VuID0g ZW5kVGtuOworICAgICAgaWYgKGZvdW5kIDwgc3RhcnQuY2gpIHsKKyAgICAg ICAgdmFyIGZvdW5kID0gbGluZVRleHQubGFzdEluZGV4T2YoIlsiLCBhdCk7 CisgICAgICAgIGlmIChmb3VuZCA8IHN0YXJ0LmNoKSBicmVhazsKKyAgICAg ICAgdmFyIHN0YXJ0VG9rZW4gPSAnWyc7CisgICAgICAgIHZhciBlbmRUb2tl biA9ICddJzsKKyAgICAgIH0KKworICAgICAgdG9rZW5UeXBlID0gY20uZ2V0 VG9rZW5BdChDb2RlTWlycm9yLlBvcyhsaW5lLCBmb3VuZCArIDEpKS50eXBl OworICAgICAgaWYgKCEvXihjb21tZW50fHN0cmluZykvLnRlc3QodG9rZW5U eXBlKSkgeyBzdGFydENoYXIgPSBmb3VuZDsgYnJlYWs7IH0KKyAgICAgIGF0 ID0gZm91bmQgLSAxOworICAgIH0KKyAgICBpZiAoc3RhcnRDaGFyID09IG51 bGwgfHwgbGluZVRleHQubGFzdEluZGV4T2Yoc3RhcnRUb2tlbikgPiBzdGFy dENoYXIpIHJldHVybjsKKyAgICB2YXIgY291bnQgPSAxLCBsYXN0TGluZSA9 IGNtLmxpbmVDb3VudCgpLCBlbmQsIGVuZENoOworICAgIG91dGVyOiBmb3Ig KHZhciBpID0gbGluZSArIDE7IGkgPCBsYXN0TGluZTsgKytpKSB7CisgICAg ICB2YXIgdGV4dCA9IGNtLmdldExpbmUoaSksIHBvcyA9IDA7CisgICAgICBm b3IgKDs7KSB7CisgICAgICAgIHZhciBuZXh0T3BlbiA9IHRleHQuaW5kZXhP ZihzdGFydFRva2VuLCBwb3MpLCBuZXh0Q2xvc2UgPSB0ZXh0LmluZGV4T2Yo ZW5kVG9rZW4sIHBvcyk7CisgICAgICAgIGlmIChuZXh0T3BlbiA8IDApIG5l eHRPcGVuID0gdGV4dC5sZW5ndGg7CisgICAgICAgIGlmIChuZXh0Q2xvc2Ug PCAwKSBuZXh0Q2xvc2UgPSB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgcG9zID0g TWF0aC5taW4obmV4dE9wZW4sIG5leHRDbG9zZSk7CisgICAgICAgIGlmIChw b3MgPT0gdGV4dC5sZW5ndGgpIGJyZWFrOworICAgICAgICBpZiAoY20uZ2V0 VG9rZW5BdChDb2RlTWlycm9yLlBvcyhpLCBwb3MgKyAxKSkudHlwZSA9PSB0 b2tlblR5cGUpIHsKKyAgICAgICAgICBpZiAocG9zID09IG5leHRPcGVuKSAr K2NvdW50OworICAgICAgICAgIGVsc2UgaWYgKCEtLWNvdW50KSB7CisgICAg ICAgICAgICBlbmQgPSBpOworICAgICAgICAgICAgZW5kQ2ggPSBwb3M7Cisg ICAgICAgICAgICBicmVhayBvdXRlcjsKKyAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgICAgKytwb3M7CisgICAgICB9CisgICAgfQorICAgIGlmIChl bmQgPT0gbnVsbCB8fCBlbmQgPT0gbGluZSArIDEpIHJldHVybjsKKyAgICBy ZXR1cm4ge2Zyb206IENvZGVNaXJyb3IuUG9zKGxpbmUsIHN0YXJ0Q2hhciAr IHN0YXJ0VGtuLmxlbmd0aCksCisgICAgICAgICAgdG86IENvZGVNaXJyb3Iu UG9zKGVuZCwgZW5kQ2gpfTsKKyAgfTsKKworICBDb2RlTWlycm9yLnBnYWRt aW5CZWdpblJhbmdlRmluZGVyID0gZnVuY3Rpb24oY20sIHN0YXJ0KSB7Cisg ICAgdmFyIHN0YXJ0VG9rZW4gPSAnQkVHSU4nOworICAgIHZhciBlbmRUb2tl biA9ICdFTkQ7JzsKKyAgICB2YXIgZnJvbVRvUG9zID0gQ29kZU1pcnJvci5w Z2FkbWluS2V5d29yZFJhbmdlRmluZGVyKGNtLCBzdGFydCwgc3RhcnRUb2tl biwgZW5kVG9rZW4pOworICAgIHJldHVybiBmcm9tVG9Qb3M7CisgIH07CisK KyAgQ29kZU1pcnJvci5wZ2FkbWluSWZSYW5nZUZpbmRlciA9IGZ1bmN0aW9u KGNtLCBzdGFydCkgeworICAgIHZhciBzdGFydFRva2VuID0gJ0lGJzsKKyAg ICB2YXIgZW5kVG9rZW4gPSAnRU5EIElGJzsKKyAgICB2YXIgZnJvbVRvUG9z ID0gQ29kZU1pcnJvci5wZ2FkbWluS2V5d29yZFJhbmdlRmluZGVyKGNtLCBz dGFydCwgc3RhcnRUb2tlbiwgZW5kVG9rZW4pOworICAgIHJldHVybiBmcm9t VG9Qb3M7CisgIH07CisKKyAgQ29kZU1pcnJvci5wZ2FkbWluTG9vcFJhbmdl RmluZGVyID0gZnVuY3Rpb24oY20sIHN0YXJ0KSB7CisgICAgdmFyIHN0YXJ0 VG9rZW4gPSAnTE9PUCc7CisgICAgdmFyIGVuZFRva2VuID0gJ0VORCBMT09Q JzsKKyAgICB2YXIgZnJvbVRvUG9zID0gQ29kZU1pcnJvci5wZ2FkbWluS2V5 d29yZFJhbmdlRmluZGVyKGNtLCBzdGFydCwgc3RhcnRUb2tlbiwgZW5kVG9r ZW4pOworICAgIHJldHVybiBmcm9tVG9Qb3M7CisgIH07CisKKyAgQ29kZU1p cnJvci5wZ2FkbWluQ2FzZVJhbmdlRmluZGVyID0gZnVuY3Rpb24oY20sIHN0 YXJ0KSB7CisgICAgdmFyIHN0YXJ0VG9rZW4gPSAnQ0FTRSc7CisgICAgdmFy IGVuZFRva2VuID0gJ0VORCBDQVNFJzsKKyAgICB2YXIgZnJvbVRvUG9zID0g Q29kZU1pcnJvci5wZ2FkbWluS2V5d29yZFJhbmdlRmluZGVyKGNtLCBzdGFy dCwgc3RhcnRUb2tlbiwgZW5kVG9rZW4pOworICAgIHJldHVybiBmcm9tVG9Q b3M7CisgIH07CisKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvZGVidWdnZXIvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9k ZWJ1Z2dlci9fX2luaXRfXy5weQppbmRleCAzOTc2NDk4Li5iYzAyYmE0IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRf Xy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRf Xy5weQpAQCAtNDQ3LDEzICs0NDcsOCBAQCBkZWYgY2xvc2UodHJhbnNfaWQp OgogCiAgICAgIyBSZWxlYXNlIHRoZSBjb25uZWN0aW9uCiAgICAgaWYgY29u bi5jb25uZWN0ZWQoKToKLSAgICAgICAgaWYgb2JqWydkZWJ1Z190eXBlJ10g PT0gJ2luZGlyZWN0JzoKLSAgICAgICAgICAgICMgcmVuZGVyIHRoZSBTUUwg dGVtcGxhdGUgYW5kIHNlbmQgdGhlIHF1ZXJ5IHRvIHNlcnZlcgotICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFt0ZW1wbGF0 ZV9wYXRoLCAnYWJvcnRfdGFyZ2V0LnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgc2Vzc2lvbl9pZD1vYmpbJ3Nlc3Npb25faWQnXSkKLSAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KyAgICAgICAgIyBvbiBzdWNjZXNzZnVsIGNvbm5lY3Rpb24gY2FuY2VsIHRo ZSBydW5uaW5nIHRyYW5zYWN0aW9uCisgICAgICAgIHN0YXR1cywgcmVzdWx0 ID0gY29ubi5jYW5jZWxfdHJhbnNhY3Rpb24ob2JqWydjb25uX2lkJ10sIG9i alsnZGF0YWJhc2VfaWQnXSkKIAogICAgICAgICAjIERlbGV0ZSB0aGUgZXhp c3RpbmcgZGVidWdnZXIgZGF0YSBpbiBzZXNzaW9uIHZhcmlhYmxlCiAgICAg ICAgIGRlbCBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXVtzdHIodHJhbnNfaWQp XQpAQCAtMTA2NiwxMSArMTA2MSwxOCBAQCBkZWYgZGVwb3NpdF9wYXJhbWV0 ZXJfdmFsdWUodHJhbnNfaWQpOgogICAgICAgICAgICAgc3RhdHVzLCByZXN1 bHQgPSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCiAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgICAgICAgICAj IENoZWNrIGlmIHZhbHVlIGRlcG9zaXRlZCBzdWNjZXNzZnVsbHkgb3Igbm90 IGFuZCBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCwgcmV0dXJuIHRoZSBtZXNz YWdlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgaWYgcmVzdWx0Wydyb3dz J11bMF1bJ3BsZGJnX2RlcG9zaXRfdmFsdWUnXToKKyAgICAgICAgICAgICAg ICBpbmZvID0gZ2V0dGV4dCgnVmFsdWUgZGVwb3NpdGVkIHN1Y2Nlc3NmdWxs eScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluZm8g PSBnZXR0ZXh0KCdFcnJvciB3aGlsZSBzZXR0aW5nIHRoZSB2YWx1ZScpCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKGRhdGE9eydz dGF0dXMnOiBzdGF0dXMsICdpbmZvJzppbmZvLCAncmVzdWx0JzogcmVzdWx0 Wydyb3dzJ11bMF1bJ3BsZGJnX2RlcG9zaXRfdmFsdWUnXX0pCiAgICAgZWxz ZToKICAgICAgICAgc3RhdHVzID0gRmFsc2UKICAgICAgICAgcmVzdWx0ID0g Z2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byBzZXJ2ZXIgb3IgY29ubmVjdGlv biB3aXRoIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCiAKLSAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKGRhdGE9eydzdGF0dXMnOiBzdGF0 dXMsICdyZXN1bHQnOiByZXN1bHRbJ3Jvd3MnXX0pCisgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAncmVz dWx0JzogcmVzdWx0fSkKIAogCiBAYmx1ZXByaW50LnJvdXRlKCcvc2VsZWN0 X2ZyYW1lLzxpbnQ6dHJhbnNfaWQ+LzxpbnQ6ZnJhbWVfaWQ+JywgbWV0aG9k cz1bJ0dFVCddKQpAQCAtMTIwMCw2ICsxMjAyLDE4IEBAIGRlZiBzZXRfYXJn dW1lbnRzX3NxbGl0ZShzaWQsIGRpZCwgc2NpZCwgZnVuY19pZCk6CiAgICAg ICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1kYXRhW2ldWydzZXJ2ZXJfaWQn XSwgZGF0YWJhc2VfaWQ9ZGF0YVtpXVsnZGF0YWJhc2VfaWQnXSwgc2NoZW1h X2lkPWRhdGFbaV1bJ3NjaGVtYV9pZCddLAogICAgICAgICAgICAgICAgICAg ICBmdW5jdGlvbl9pZD1kYXRhW2ldWydmdW5jdGlvbl9pZCddLCBhcmdfaWQ9 ZGF0YVtpXVsnYXJnX2lkJ10pLmNvdW50KCkKIAorICAgICAgICAgICAgIyBo YW5kbGUgdGhlIEFycmF5IGxpc3Qgc2VudCBmcm9tIHRoZSBjbGllbnQKKyAg ICAgICAgICAgIGFycmF5X3N0cmluZyA9ICcnCisgICAgICAgICAgICBpZiBk YXRhW2ldWyd2YWx1ZSddLl9fY2xhc3NfXy5fX25hbWVfXyBpbiAoJ2xpc3Qn KSBhbmQgZGF0YVtpXVsndmFsdWUnXToKKyAgICAgICAgICAgICAgICBmb3Ig ayBpbiByYW5nZSgwLCBsZW4oZGF0YVtpXVsndmFsdWUnXSkpOgorICAgICAg ICAgICAgICAgICAgICBhcnJheV9zdHJpbmcgKz0gZGF0YVtpXVsndmFsdWUn XVtrXVsndmFsdWUnXQorICAgICAgICAgICAgICAgICAgICBpZiBrICE9IChs ZW4oZGF0YVtpXVsndmFsdWUnXSkgLSAxKToKKyAgICAgICAgICAgICAgICAg ICAgICAgIGFycmF5X3N0cmluZyArPSAnLCcKKyAgICAgICAgICAgIGVsaWYg ZGF0YVtpXVsndmFsdWUnXS5fX2NsYXNzX18uX19uYW1lX18gaW4gKCdsaXN0 JykgYW5kIG5vdCBkYXRhW2ldWyd2YWx1ZSddOgorICAgICAgICAgICAgICAg IGFycmF5X3N0cmluZyA9ICcnCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIGFycmF5X3N0cmluZyA9IGRhdGFbaV1bJ3ZhbHVlJ10KKwog ICAgICAgICAgICAgIyBDaGVjayBpZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxh YmxlIGluIGRhdGFiYXNlIHRoZW4gdXBkYXRlIHRoZSBleGlzdGluZyB2YWx1 ZSBvdGhlcndpc2UgYWRkIHRoZSBuZXcgdmFsdWUKICAgICAgICAgICAgIGlm IERiZ0Z1bmNBcmdzRXhpc3RzOgogICAgICAgICAgICAgICAgIERiZ0Z1bmNB cmdzID0gRGVidWdnZXJGdW5jdGlvbkFyZ3VtZW50cy5xdWVyeS5maWx0ZXJf YnkoCkBAIC0xMjA5LDcgKzEyMjMsNyBAQCBkZWYgc2V0X2FyZ3VtZW50c19z cWxpdGUoc2lkLCBkaWQsIHNjaWQsIGZ1bmNfaWQpOgogICAgICAgICAgICAg ICAgIERiZ0Z1bmNBcmdzLmlzX251bGwgPSBkYXRhW2ldWydpc19udWxsJ10K ICAgICAgICAgICAgICAgICBEYmdGdW5jQXJncy5pc19leHByZXNzaW9uID0g ZGF0YVtpXVsnaXNfZXhwcmVzc2lvbiddCiAgICAgICAgICAgICAgICAgRGJn RnVuY0FyZ3MudXNlX2RlZmF1bHQgPSBkYXRhW2ldWyd1c2VfZGVmYXVsdCdd Ci0gICAgICAgICAgICAgICAgRGJnRnVuY0FyZ3MudmFsdWUgPSBkYXRhW2ld Wyd2YWx1ZSddCisgICAgICAgICAgICAgICAgRGJnRnVuY0FyZ3MudmFsdWUg PSBhcnJheV9zdHJpbmcKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg ICAgICAgZGVidWdnZXJfZnVuY19hcmdzID0gRGVidWdnZXJGdW5jdGlvbkFy Z3VtZW50cygKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkID0gZGF0 YVtpXVsnc2VydmVyX2lkJ10sCkBAIC0xMjIwLDcgKzEyMzQsNyBAQCBkZWYg c2V0X2FyZ3VtZW50c19zcWxpdGUoc2lkLCBkaWQsIHNjaWQsIGZ1bmNfaWQp OgogICAgICAgICAgICAgICAgICAgICBpc19udWxsID0gZGF0YVtpXVsnaXNf bnVsbCddLAogICAgICAgICAgICAgICAgICAgICBpc19leHByZXNzaW9uID0g ZGF0YVtpXVsnaXNfZXhwcmVzc2lvbiddLAogICAgICAgICAgICAgICAgICAg ICB1c2VfZGVmYXVsdCA9IGRhdGFbaV1bJ3VzZV9kZWZhdWx0J10sCi0gICAg ICAgICAgICAgICAgICAgIHZhbHVlID0gZGF0YVtpXVsndmFsdWUnXQorICAg ICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFycmF5X3N0cmluZwogICAgICAg ICAgICAgICAgICkKIAogICAgICAgICAgICAgICAgIGRiLnNlc3Npb24uYWRk KGRlYnVnZ2VyX2Z1bmNfYXJncykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9jc3MvZGVidWdnZXIuY3NzIGIvd2Vi L3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2Nzcy9kZWJ1Z2dlci5j c3MKaW5kZXggY2MwYzFhNS4uNDBlYjE5NSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2Nzcy9kZWJ1Z2dlci5jc3MK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2Nzcy9k ZWJ1Z2dlci5jc3MKQEAgLTUzLDQgKzUzLDMzIEBACiAKIC5kZWJ1Z2dlci1j b250YWluZXIgLkNvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3JvdW5kIHsK ICAgICBiYWNrZ3JvdW5kOiAjNTBCMEYwOwotfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKK30KKworLkNvZGVNaXJyb3ItZm9sZG1hcmtlciB7Cisg IGNvbG9yOiBibHVlOworICB0ZXh0LXNoYWRvdzogI2I5ZiAxcHggMXB4IDJw eCwgI2I5ZiAtMXB4IC0xcHggMnB4LCAjYjlmIDFweCAtMXB4IDJweCwgI2I5 ZiAtMXB4IDFweCAycHg7CisgIGZvbnQtZmFtaWx5OiBhcmlhbDsKKyAgbGlu ZS1oZWlnaHQ6IC4zOworICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKKy5Db2Rl TWlycm9yLCAuQ29kZU1pcnJvci1ndXR0ZXJzIHsKKyAgICBtaW4taGVpZ2h0 OiAxMDAlOworfQorCisuQ29kZU1pcnJvci1mb2xkZ3V0dGVyIHsKKyAgd2lk dGg6IC45ZW07Cit9CisKKy5Db2RlTWlycm9yLWZvbGRndXR0ZXItb3BlbiwK Ky5Db2RlTWlycm9yLWZvbGRndXR0ZXItZm9sZGVkIHsKKyAgY3Vyc29yOiBw b2ludGVyOworfQorCisuQ29kZU1pcnJvci1mb2xkZ3V0dGVyLW9wZW46YWZ0 ZXIgeworICBjb250ZW50OiAiXDI1QkMiOworfQorCisuQ29kZU1pcnJvci1m b2xkZ3V0dGVyLWZvbGRlZDphZnRlciB7CisgIGNvbnRlbnQ6ICJcMjVCNiI7 Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90 ZW1wbGF0ZXMvZGVidWdnZXIvanMvZGVidWdnZXJfdWkuanMgYi93ZWIvcGdh ZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0ZXMvZGVidWdnZXIvanMvZGVi dWdnZXJfdWkuanMKaW5kZXggZjM0NWRjOS4uODQ2YTUzOSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVn Z2VyL2pzL2RlYnVnZ2VyX3VpLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2RlYnVnZ2VyL3RlbXBsYXRlcy9kZWJ1Z2dlci9qcy9kZWJ1Z2dlcl91aS5q cwpAQCAtMjg3LDExICsyODcsMjUgQEAgZGVmaW5lKAogICAgICAgICAgICAg ICB9CiAKICAgICAgICAgICAgICAgLy8gTmVlZCB0byB1cGRhdGUgdGhlIGZ1 bmNfb2JqIHZhcmlhYmxlIGZyb20gc3FsaXRlIGRhdGFiYXNlIGlmIGF2YWls YWJsZQotICAgICAgICAgICAgICAvLyBUT0RPOiBOZWVkIHRvIGNoZWNrLCBo b3cgdG8gdXBkYXRlIHRoZSB2YWx1ZSBpbiBBcnJheSBmaWVsZHMuLi4uCiAg ICAgICAgICAgICAgIGlmIChmdW5jX2FyZ3NfZGF0YS5sZW5ndGggIT0gMCkg ewogICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmdW5jX2FyZ3Nf ZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgdmFyIGlu ZGV4ID0gZnVuY19hcmdzX2RhdGFbaV1bJ2FyZ19pZCddOwotICAgICAgICAg ICAgICAgICAgZnVuY19vYmoucHVzaCh7ICJuYW1lIjogYXJnbmFtZVtpbmRl eF0sICJ0eXBlIjogYXJndHlwZVtpbmRleF0sICJpc19udWxsIjogZnVuY19h cmdzX2RhdGFbaV1bJ2lzX251bGwnXSA/IHRydWU6IGZhbHNlLCAiZXhwciI6 IGZ1bmNfYXJnc19kYXRhW2ldWydpc19leHByZXNzaW9uJ10/IHRydWU6IGZh bHNlLCAidmFsdWUiOiBmdW5jX2FyZ3NfZGF0YVtpXVsndmFsdWUnXSwgInVz ZV9kZWZhdWx0IjogZnVuY19hcmdzX2RhdGFbaV1bJ3VzZV9kZWZhdWx0J10/ IHRydWU6IGZhbHNlLCAiZGVmYXVsdF92YWx1ZSI6IGRlZl92YWxfbGlzdFtp bmRleF19KTsKKyAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbXTsK KyAgICAgICAgICAgICAgICAgIGlmIChhcmd0eXBlW2luZGV4XS5pbmRleE9m KCJbXSIpICE9LTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFs cyA9IGZ1bmNfYXJnc19kYXRhW2ldWyd2YWx1ZSddLnNwbGl0KCIsIik7Cisg ICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3R5cGVbaW5kZXhdLmluZGV4 T2YoImludGVnZXIiKSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgXy5lYWNoKHZhbHMsIGZ1bmN0aW9uKHZhbCl7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goeyd2YWx1ZSc6IHBhcnNlSW50 KHZhbCl9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBfLmVh Y2godmFscywgZnVuY3Rpb24odmFsKXsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZXMucHVzaCh7J3ZhbHVlJzogdmFsfSk7CisgICAgICAg ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZ1bmNfYXJnc19k YXRhW2ldWyd2YWx1ZSddOworICAgICAgICAgICAgICAgICAgfQorCisgICAg ICAgICAgICAgICAgICBmdW5jX29iai5wdXNoKHsgIm5hbWUiOiBhcmduYW1l W2luZGV4XSwgInR5cGUiOiBhcmd0eXBlW2luZGV4XSwgImlzX251bGwiOiBm dW5jX2FyZ3NfZGF0YVtpXVsnaXNfbnVsbCddID8gdHJ1ZTogZmFsc2UsICJl eHByIjogZnVuY19hcmdzX2RhdGFbaV1bJ2lzX2V4cHJlc3Npb24nXT8gdHJ1 ZTogZmFsc2UsICJ2YWx1ZSI6IHZhbHVlcywgInVzZV9kZWZhdWx0IjogZnVu Y19hcmdzX2RhdGFbaV1bJ3VzZV9kZWZhdWx0J10/IHRydWU6IGZhbHNlLCAi ZGVmYXVsdF92YWx1ZSI6IGRlZl92YWxfbGlzdFtpbmRleF19KTsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K QEAgLTM1OCwxMSArMzcyLDI0IEBAIGRlZmluZSgKICAgICAgICAgICAgICAg fQogCiAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gdXBkYXRlIHRoZSBmdW5j X29iaiB2YXJpYWJsZSBmcm9tIHNxbGl0ZSBkYXRhYmFzZSBpZiBhdmFpbGFi bGUKLSAgICAgICAgICAgICAgLy8gVE9ETzogTmVlZCB0byBjaGVjaywgaG93 IHRvIHVwZGF0ZSB0aGUgdmFsdWUgaW4gQXJyYXkgZmllbGRzLi4uLgogICAg ICAgICAgICAgICBpZiAoZnVuY19hcmdzX2RhdGEubGVuZ3RoICE9IDApIHsK ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnVuY19hcmdzX2Rh dGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgIHZhciBpbmRl eCA9IGZ1bmNfYXJnc19kYXRhW2ldWydhcmdfaWQnXTsKLSAgICAgICAgICAg ICAgICAgIGZ1bmNfb2JqLnB1c2goeyAibmFtZSI6IG15YXJnbmFtZVtpbmRl eF0sICJ0eXBlIjogYXJndHlwZVtpbmRleF0sICJpc19udWxsIjogZnVuY19h cmdzX2RhdGFbaV1bJ2lzX251bGwnXSA/IHRydWU6IGZhbHNlLCAiZXhwciI6 IGZ1bmNfYXJnc19kYXRhW2ldWydpc19leHByZXNzaW9uJ10/IHRydWU6IGZh bHNlLCAidmFsdWUiOiBmdW5jX2FyZ3NfZGF0YVtpXVsndmFsdWUnXSwgInVz ZV9kZWZhdWx0IjogZnVuY19hcmdzX2RhdGFbaV1bJ3VzZV9kZWZhdWx0J10/ IHRydWU6IGZhbHNlLCAiZGVmYXVsdF92YWx1ZSI6IGRlZl92YWxfbGlzdFtp bmRleF19KTsKKyAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBbXTsK KyAgICAgICAgICAgICAgICAgIGlmIChhcmd0eXBlW2luZGV4XS5pbmRleE9m KCJbXSIpICE9LTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFs cyA9IGZ1bmNfYXJnc19kYXRhW2ldWyd2YWx1ZSddLnNwbGl0KCIsIik7Cisg ICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3R5cGVbaW5kZXhdLmluZGV4 T2YoImludGVnZXIiKSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgXy5lYWNoKHZhbHMsIGZ1bmN0aW9uKHZhbCl7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goeyd2YWx1ZSc6IHBhcnNlSW50 KHZhbCl9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBfLmVh Y2godmFscywgZnVuY3Rpb24odmFsKXsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZXMucHVzaCh7J3ZhbHVlJzogdmFsfSk7CisgICAgICAg ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZ1bmNfYXJnc19k YXRhW2ldWyd2YWx1ZSddOworICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgZnVuY19vYmoucHVzaCh7ICJuYW1lIjogbXlhcmduYW1l W2luZGV4XSwgInR5cGUiOiBhcmd0eXBlW2luZGV4XSwgImlzX251bGwiOiBm dW5jX2FyZ3NfZGF0YVtpXVsnaXNfbnVsbCddID8gdHJ1ZTogZmFsc2UsICJl eHByIjogZnVuY19hcmdzX2RhdGFbaV1bJ2lzX2V4cHJlc3Npb24nXT8gdHJ1 ZTogZmFsc2UsICJ2YWx1ZSI6IHZhbHVlcywgInVzZV9kZWZhdWx0IjogZnVu Y19hcmdzX2RhdGFbaV1bJ3VzZV9kZWZhdWx0J10/IHRydWU6IGZhbHNlLCAi ZGVmYXVsdF92YWx1ZSI6IGRlZl92YWxfbGlzdFtpbmRleF19KTsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K QEAgLTQyMyw3ICs0NTAsNiBAQCBkZWZpbmUoCiAKICAgICAgICAgICAgICAg dGhpcy5ncmlkLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihtKSB7CiAKLSAg ICAgICAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZWQgdGVtcG9yYXJ5IGZv ciB0ZXN0aW5nLi4uLi4KICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlm IHZhbHVlIGlzIHNldCB0byBOVUxMIHRoZW4gd2Ugc2hvdWxkIGlnbm9yZSB0 aGUgdmFsdWUgZmllbGQKICAgICAgICAgICAgICAgICAgIGlmIChtLmdldCgn aXNfbnVsbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFyZ3NfdmFsdWVf bGlzdC5wdXNoKHsgJ25hbWUnOiBtLmdldCgnbmFtZScpLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVn Z2VyL2pzL2RpcmVjdC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2Vy L3RlbXBsYXRlcy9kZWJ1Z2dlci9qcy9kaXJlY3QuanMKaW5kZXggMDU4MDFl YS4uNDU3NDcxNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVi dWdnZXIvdGVtcGxhdGVzL2RlYnVnZ2VyL2pzL2RpcmVjdC5qcworKysgYi93 ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0ZXMvZGVidWdnZXIv anMvZGlyZWN0LmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5lKAogICBbJ2px dWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ2Fs ZXJ0aWZ5JywgJ3BnYWRtaW4nLCdwZ2FkbWluLmJyb3dzZXInLAogICAgJ2Jh Y2tib25lJywgJ2JhY2tncmlkJywgJ2NvZGVtaXJyb3InLCAnYmFja2Zvcm0n LCdwZ2FkbWluLnRvb2xzLmRlYnVnZ2VyLnVpJywKLSAgJ3djZG9ja2VyJywg J3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsICdjb2Rl bWlycm9yL2FkZG9uL3NlbGVjdGlvbi9hY3RpdmUtbGluZSddLAorICAnd2Nk b2NrZXInLCAncGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlk JywgJ2NvZGVtaXJyb3IvYWRkb24vc2VsZWN0aW9uL2FjdGl2ZS1saW5lJywK KyAgJ2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkZ3V0dGVyJywgJ2NvZGVt aXJyb3IvYWRkb24vZm9sZC9mb2xkY29kZScsICdjb2RlbWlycm9yL2FkZG9u L2ZvbGQvcGdhZG1pbi1zcWxmb2xkY29kZSddLAogICBmdW5jdGlvbigkLCBf LCBTLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrYm9uZSwg QmFja2dyaWQsIENvZGVNaXJyb3IsIEJhY2tmb3JtLCBkZWJ1Z19mdW5jdGlv bl9hZ2FpbikgewogCiAgIGlmIChwZ0FkbWluLkJyb3dzZXIudHJlZSAhPSBu dWxsKSB7CkBAIC0yNTEsNyArMjUyLDcgQEAgZGVmaW5lKAogICAgICAgICBE dXJpbmcgdGhlIGV4ZWN1dGlvbiB3ZSBzaG91bGQgcG9sbCB0aGUgcmVzdWx0 IGluIG1pbmltdW0gc2Vjb25kcyBidXQgb25jZSB0aGUgZXhlY3V0aW9uIGlz IGNvbXBsZXRlZAogICAgICAgICBhbmQgd2FpdCBmb3IgdGhlIGFub3RoZXIg ZGVidWdnaW5nIHNlc3Npb24gdGhlbiB3ZSBzaG91bGQgZGVjcmVhc2UgdGhl IHBvbGxpbmcgZnJlcXVlbmN5LgogICAgICAgKi8KLSAgICAgIGlmIChwZ1Rv b2xzLkRpcmVjdERlYnVnLmRpcmVjdF9leGVjdXRpb25fY29tcGxldGVkKSB7 CisgICAgICBpZiAocGdUb29scy5EaXJlY3REZWJ1Zy5wb2xsaW5nX3RpbWVv dXRfaWRsZSkgewogICAgICAgICAvLyBwb2xsIHRoZSByZXN1bHQgYWZ0ZXIg MSBzZWNvbmQKICAgICAgICAgdmFyICBwb2xsX3RpbWVvdXQgPSAxMDAwOwog ICAgICAgfQpAQCAtMjczLDYgKzI3NCw3IEBAIGRlZmluZSgKICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg ICBpZiAocmVzLmRhdGEucmVzdWx0WzBdLnNyYyAhPSB1bmRlZmluZWQgfHwg cmVzLmRhdGEucmVzdWx0WzBdLnNyYyAhPSBudWxsKSB7CisgICAgICAgICAg ICAgICAgcGdUb29scy5EaXJlY3REZWJ1Zy5wb2xsaW5nX3RpbWVvdXRfaWRs ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHBnVG9vbHMuRGlyZWN0RGVi dWcuZG9ja2VyLmZpbmlzaExvYWRpbmcoNTApOwogICAgICAgICAgICAgICAg IHBnVG9vbHMuRGlyZWN0RGVidWcuZWRpdG9yLnNldFZhbHVlKHJlcy5kYXRh LnJlc3VsdFswXS5zcmMpOwogICAgICAgICAgICAgICAgIHNlbGYuVXBkYXRl QnJlYWtwb2ludCh0cmFuc19pZCk7CkBAIC0yOTMsOCArMjk1LDEwIEBAIGRl ZmluZSgKICAgICAgICAgICAgICAgICAgIHNlbGYuY2xlYXJfYWxsX2JyZWFr cG9pbnQodHJhbnNfaWQpOwogICAgICAgICAgICAgICAgICAgc2VsZi5leGVj dXRlX3F1ZXJ5KHRyYW5zX2lkKTsKICAgICAgICAgICAgICAgICAgIHBnVG9v bHMuRGlyZWN0RGVidWcuZmlyc3RfdGltZV9pbmRpcmVjdF9kZWJ1ZyA9IHRy dWU7CisgICAgICAgICAgICAgICAgICBwZ1Rvb2xzLkRpcmVjdERlYnVnLnBv bGxpbmdfdGltZW91dF9pZGxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg cGdUb29scy5EaXJlY3REZWJ1Zy5wb2xsaW5nX3RpbWVvdXRfaWRsZSA9IGZh bHNlOwogICAgICAgICAgICAgICAgICAgcGdUb29scy5EaXJlY3REZWJ1Zy5k b2NrZXIuZmluaXNoTG9hZGluZyg1MCk7CiAgICAgICAgICAgICAgICAgICAv LyBJZiB0aGUgc291cmNlIGlzIHJlYWxseSBjaGFuZ2VkIHRoZW4gb25seSB1 cGRhdGUgdGhlIGJyZWFrcG9pbnQgaW5mb3JtYXRpb24KICAgICAgICAgICAg ICAgICAgIGlmIChyZXMuZGF0YS5yZXN1bHRbMF0uc3JjICE9IHBnVG9vbHMu RGlyZWN0RGVidWcuZWRpdG9yLmdldFZhbHVlKCkpIHsKQEAgLTMyMSw2ICsz MjUsNyBAQCBkZWZpbmUoCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0KICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5kYXRhLnN0YXR1cyA9PT0g J0J1c3knKSB7CisgICAgICAgICAgICAgIHBnVG9vbHMuRGlyZWN0RGVidWcu cG9sbGluZ190aW1lb3V0X2lkbGUgPSB0cnVlOwogICAgICAgICAgICAgICAv LyBJZiBzdGF0dXMgaXMgQnVzeSB0aGVuIHBvbGwgdGhlIHJlc3VsdCBieSBy ZWN1cnNpdmUgY2FsbCB0byB0aGUgcG9sbCBmdW5jdGlvbgogICAgICAgICAg ICAgICBpZiAoIXBnVG9vbHMuRGlyZWN0RGVidWcuZGVidWdfdHlwZSkgewog ICAgICAgICAgICAgICAgIHBnVG9vbHMuRGlyZWN0RGVidWcuZG9ja2VyLnN0 YXJ0TG9hZGluZygne3sgXygnV2FpdGluZyBmb3IgYW5vdGhlciBzZXNzaW9u IHRvIGludm9rZSB0aGUgdGFyZ2V0Li4uJykgfX0nKTsKQEAgLTM2OCw3ICsz NzMsNyBAQCBkZWZpbmUoCiAgICAgICAgIER1cmluZyB0aGUgZXhlY3V0aW9u IHdlIHNob3VsZCBwb2xsIHRoZSByZXN1bHQgaW4gbWluaW11bSBzZWNvbmRz IGJ1dCBvbmNlIHRoZSBleGVjdXRpb24gaXMgY29tcGxldGVkCiAgICAgICAg IGFuZCB3YWl0IGZvciB0aGUgYW5vdGhlciBkZWJ1Z2dpbmcgc2Vzc2lvbiB0 aGVuIHdlIHNob3VsZCBkZWNyZWFzZSB0aGUgcG9sbGluZyBmcmVxdWVuY3ku CiAgICAgICAqLwotICAgICAgaWYgKHBnVG9vbHMuRGlyZWN0RGVidWcuZGly ZWN0X2V4ZWN1dGlvbl9jb21wbGV0ZWQpIHsKKyAgICAgIGlmIChwZ1Rvb2xz LkRpcmVjdERlYnVnLnBvbGxpbmdfdGltZW91dF9pZGxlKSB7CiAgICAgICAg IC8vIHBvbGwgdGhlIHJlc3VsdCB0byBjaGVjayB0aGF0IGV4ZWN1dGlvbiBp cyBjb21wbGV0ZWQgb3Igbm90IGFmdGVyIDEyMDAgbXMKICAgICAgICAgdmFy ICBwb2xsX2VuZF90aW1lb3V0ID0gMTIwMDsKICAgICAgIH0KQEAgLTM5MSw2 ICszOTYsNyBAQCBkZWZpbmUoCiAgICAgICAgICAgICAgICAgKi8KICAgICAg ICAgICAgICAgICBwZ1Rvb2xzLkRpcmVjdERlYnVnLmVkaXRvci5yZW1vdmVM aW5lQ2xhc3Moc2VsZi5hY3RpdmVfbGluZV9ubywgJ3dyYXAnLCAnQ29kZU1p cnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQnKTsKICAgICAgICAgICAgICAg ICBwZ1Rvb2xzLkRpcmVjdERlYnVnLmRpcmVjdF9leGVjdXRpb25fY29tcGxl dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwZ1Rvb2xzLkRpcmVjdERl YnVnLnBvbGxpbmdfdGltZW91dF9pZGxlID0gdHJ1ZTsKIAogICAgICAgICAg ICAgICAgIC8vU2V0IHRoZSBhbGVydGlmeSBtZXNzYWdlIHRvIGluZm9ybSB0 aGUgdXNlciB0aGF0IGV4ZWN1dGlvbiBpcyBjb21wbGV0ZWQuCiAgICAgICAg ICAgICAgICAgQWxlcnRpZnkubm90aWZ5KApAQCAtNDE4LDYgKzQyNCw3IEBA IGRlZmluZSgKICAgICAgICAgICAgICAgICAgIHNlbGYuQWRkUmVzdWx0cyhy ZXMuZGF0YS5yZXN1bHQpOwogICAgICAgICAgICAgICAgICAgcGdUb29scy5E aXJlY3REZWJ1Zy5yZXN1bHRzX3BhbmVsLmZvY3VzKCk7CiAgICAgICAgICAg ICAgICAgICBwZ1Rvb2xzLkRpcmVjdERlYnVnLmRpcmVjdF9leGVjdXRpb25f Y29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgIHBnVG9vbHMu RGlyZWN0RGVidWcucG9sbGluZ190aW1lb3V0X2lkbGUgPSB0cnVlOwogCiAg ICAgICAgICAgICAgICAgICAvL1NldCB0aGUgYWxlcnRpZnkgbWVzc2FnZSB0 byBpbmZvcm0gdGhlIHVzZXIgdGhhdCBleGVjdXRpb24gaXMgY29tcGxldGVk LgogICAgICAgICAgICAgICAgICAgQWxlcnRpZnkubm90aWZ5KApAQCAtNTM3 LDEwICs1NDQsOSBAQCBkZWZpbmUoCiAgICAgICB2YXIgc2VsZiA9IHRoaXM7 CiAKICAgICAgIC8vQ2hlY2sgZmlyc3QgaWYgcHJldmlvdXMgZXhlY3V0aW9u IHdhcyBjb21wbGV0ZWQgb3Igbm90Ci0gICAgICBpZiAocGdUb29scy5EaXJl Y3REZWJ1Zy5kaXJlY3RfZXhlY3V0aW9uX2NvbXBsZXRlZCkgewotICAgICAg ICAvLyBUT0RPOiBXZSBuZWVkIHRvIGdldCB0aGUgYXJndW1lbnRzIGdpdmVu IGJ5IHRoZSB1c2VyIGZyb20gc3FsaXRlIGRhdGFiYXNlCisgICAgICBpZiAo cGdUb29scy5EaXJlY3REZWJ1Zy5kaXJlY3RfZXhlY3V0aW9uX2NvbXBsZXRl ZCAmJgorICAgICAgICAgIHBnVG9vbHMuRGlyZWN0RGVidWcuZGlyZWN0X2V4 ZWN1dGlvbl9jb21wbGV0ZWQgPT0gcGdUb29scy5EaXJlY3REZWJ1Zy5wb2xs aW5nX3RpbWVvdXRfaWRsZSkgewogICAgICAgICBzZWxmLlJlc3RhcnQodHJh bnNfaWQpOwotICAgICAgICBwZ1Rvb2xzLkRpcmVjdERlYnVnLmRpcmVjdF9l eGVjdXRpb25fY29tcGxldGVkID0gZmFsc2U7CiAgICAgICB9CiAgICAgICBl bHNlIHsKICAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwgdG8gbGlzdGVuIHRo ZSBkYXRhYmFzZSBtZXNzYWdlCkBAIC04MDIsNyArODA4LDYgQEAgZGVmaW5l KAogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSAwKQogICAgICAgICB7 CiAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkr KykgewotICAgICAgICAgICAgLy8gVE9ETzogY2hhbmdlIHRoZSBteV9mdW5j X3Rlc3RfMiB3aXRoIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1 dGVkLgogICAgICAgICAgICAgbXlfb2JqLnB1c2goeyAibmFtZSI6IHJlc3Vs dFtpXS50YXJnZXRuYW1lLCAidmFsdWUiOiByZXN1bHRbaV0uYXJncywgImxp bmVfbm8iOiByZXN1bHRbaV0ubGluZW51bWJlciB9KTsKICAgICAgICAgICB9 CiAgICAgICAgIH0KQEAgLTg3MSw3ICs4NzYsNiBAQCBkZWZpbmUoCiAgICAg ICAgIGlmIChyZXN1bHQudmFsdWUubGVuZ3RoICE9IDApCiAgICAgICAgIHsK ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVzdWx0LnZhbHVlLmxlbmd0 aDsgaSsrKSB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBjaGFuZ2UgdGhlIG15 X2Z1bmNfdGVzdF8yIHdpdGggbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gYmUg ZXhlY3V0ZWQuCiAgICAgICAgICAgICBteV9vYmoucHVzaCh7ICJ2YWx1ZSI6 IHJlc3VsdC52YWx1ZVtpXX0pOwogICAgICAgICAgIH0KICAgICAgICAgfQpA QCAtMTAxNCw2ICsxMDE4LDEzIEBAIGRlZmluZSgKICAgICAgICAgICAgIGlm IChyZXMuZGF0YS5zdGF0dXMpIHsKICAgICAgICAgICAgICAgLy8gR2V0IHRo ZSB1cGRhdGVkIHZhcmlhYmxlcyB2YWx1ZQogICAgICAgICAgICAgICBzZWxm LkdldExvY2FsVmFyaWFibGVzKHBnVG9vbHMuRGlyZWN0RGVidWcudHJhbnNf aWQpOworICAgICAgICAgICAgICAvLyBTaG93IHRoZSBtZXNzYWdlIHRvIHRo ZSB1c2VyIHRoYXQgZGVwb3NpdCB2YWx1ZSBpcyBzdWNjZXNzIG9yIGZhaWx1 cmUKKyAgICAgICAgICAgICAgQWxlcnRpZnkubm90aWZ5KAorICAgICAgICAg ICAgICAgIHJlcy5kYXRhLmluZm8sCisgICAgICAgICAgICAgICAgcmVzLmRh dGEucmVzdWx0ID8gJ3N1Y2Nlc3MnOiAnZXJyb3InLAorICAgICAgICAgICAg ICAgIDMsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IH0KKyAgICAg ICAgICAgICAgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LAogICAg ICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CkBAIC0xMTg3LDYgKzExOTgs NyBAQCBkZWZpbmUoCiAgICAgICB0aGlzLmRlYnVnX3R5cGUgPSBkZWJ1Z190 eXBlOwogICAgICAgdGhpcy5maXJzdF90aW1lX2luZGlyZWN0X2RlYnVnID0g ZmFsc2U7CiAgICAgICB0aGlzLmRpcmVjdF9leGVjdXRpb25fY29tcGxldGVk ID0gZmFsc2U7CisgICAgICB0aGlzLnBvbGxpbmdfdGltZW91dF9pZGxlID0g ZmFsc2U7CiAKICAgICAgIHZhciBkb2NrZXIgPSB0aGlzLmRvY2tlciA9IG5l dyB3Y0RvY2tlcigKICAgICAgICAgICAnI2NvbnRhaW5lcicsIHsKQEAgLTEy NjgsMTQgKzEyODAsMTQgQEAgZGVmaW5lKAogICAgICAgICAgIH0KICAgICAg ICAgICBlbHNlIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdOb3RDb25uZWN0 ZWQnKSB7CiAgICAgICAgICAgICBBbGVydGlmeS5hbGVydCgKLSAgICAgICAg ICAgICAgJ0RhdGEgZ3JpZCBwb2xsIHJlc3VsdCBlcnJvcicsCisgICAgICAg ICAgICAgICdOb3QgY29ubmVjdGVkIHRvIHNlcnZlciBvciBjb25uZWN0aW9u IHdpdGggdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJywKICAgICAgICAg ICAgICAgcmVzLmRhdGEucmVzdWx0CiAgICAgICAgICAgICApOwogICAgICAg ICAgIH0KICAgICAgICAgfSwKICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUp IHsKICAgICAgICAgICBBbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICdE ZWJ1Z2dlciBsaXN0ZW5lciBzdGFydGluZyBlcnJvcicKKyAgICAgICAgICAg ICdEZWJ1Z2dlcjogRXJyb3IgZmV0Y2hpbmcgbWVzc2FnZXMgaW5mb3JtYXRp b24nCiAgICAgICAgICAgKTsKICAgICAgICAgfQogICAgICAgfSk7CkBAIC0x MjgzLDMxICsxMjk1LDMzIEBAIGRlZmluZSgKICAgICB9LAogCiAgICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb24gd2hlbiB1c2VyIGNsaWNrIG9uIGd1dHRlcnMg b2YgY29kZW1pcnJvciB0byBzZXQvY2xlYXIgdGhlIGJyZWFrcG9pbnQKLSAg ICBvbkJyZWFrUG9pbnQ6IGZ1bmN0aW9uKGNtLCBtKSB7CisgICAgb25CcmVh a1BvaW50OiBmdW5jdGlvbihjbSwgbSwgZ3V0dGVyKSB7CiAgICAgICB2YXIg c2VsZiA9IHRoaXM7CiAKLSAgICAgIC8vIFRPRE86OgotICAgICAgLy8gV2Ug bWF5IHdhbnQgdG8gY2hlY2ssIGlmIGJyZWFrLXBvaW50IGlzIGFsbG93ZWQg YXQgdGhpcyBtb21lbnQgb3Igbm90Ci0gICAgICB2YXIgaW5mbyA9IGNtLmxp bmVJbmZvKG0pOworICAgICAgLy8gSWYgYnJlYWtwb2ludCBndXR0ZXIgaXMg Y2xpY2tlZCBhbmQgZXhlY3V0aW9uIGlzIG5vdCBjb21wbGV0ZWQgdGhlbiBv bmx5IHNldCB0aGUgYnJlYWtwb2ludAorICAgICAgaWYgKGd1dHRlciA9PSAi YnJlYWtwb2ludHMiICYmICFwZ1Rvb2xzLkRpcmVjdERlYnVnLnBvbGxpbmdf dGltZW91dF9pZGxlICkgeworICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBj aGVjaywgaWYgYnJlYWstcG9pbnQgaXMgYWxsb3dlZCBhdCB0aGlzIG1vbWVu dCBvciBub3QKKyAgICAgICAgdmFyIGluZm8gPSBjbS5saW5lSW5mbyhtKTsK IAotICAgICAgLy8gSWYgZ3V0dGVyTWFya2VyIGlzIHVuZGVmaW5lZCB0aGF0 IG1lYW5zIHRoZXJlIGlzIG5vIG1hcmtlciBkZWZpbmVkIHByZXZpb3VzbHkK LSAgICAgIC8vIFNvIHdlIG5lZWQgdG8gc2V0IHRoZSBicmVha3BvaW50IGNv bW1hbmQgaGVyZS4uLgotICAgICAgaWYgKGluZm8uZ3V0dGVyTWFya2VycyA9 PSB1bmRlZmluZWQpIHsKLSAgICAgICAgY29udHJvbGxlci5zZXRfYnJlYWtw b2ludChzZWxmLnRyYW5zX2lkLG0rMSwxKTsgLy9zZXQgdGhlIGJyZWFrcG9p bnQKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBjb250cm9sbGVy LnNldF9icmVha3BvaW50KHNlbGYudHJhbnNfaWQsbSsxLDApOyAvL2NsZWFy IHRoZSBicmVha3BvaW50Ci0gICAgICB9CisgICAgICAgIC8vIElmIGd1dHRl ck1hcmtlciBpcyB1bmRlZmluZWQgdGhhdCBtZWFucyB0aGVyZSBpcyBubyBt YXJrZXIgZGVmaW5lZCBwcmV2aW91c2x5CisgICAgICAgIC8vIFNvIHdlIG5l ZWQgdG8gc2V0IHRoZSBicmVha3BvaW50IGNvbW1hbmQgaGVyZS4uLgorICAg ICAgICBpZiAoaW5mby5ndXR0ZXJNYXJrZXJzID09IHVuZGVmaW5lZCkgewor ICAgICAgICAgIGNvbnRyb2xsZXIuc2V0X2JyZWFrcG9pbnQoc2VsZi50cmFu c19pZCxtKzEsMSk7IC8vc2V0IHRoZSBicmVha3BvaW50CisgICAgICAgIH0K KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgY29udHJvbGxlci5zZXRfYnJl YWtwb2ludChzZWxmLnRyYW5zX2lkLG0rMSwwKTsgLy9jbGVhciB0aGUgYnJl YWtwb2ludAorICAgICAgICB9CiAKLSAgICAgIGNtLnNldEd1dHRlck1hcmtl cigKLSAgICAgICAgbSwgImJyZWFrcG9pbnRzIiwgaW5mby5ndXR0ZXJNYXJr ZXJzID8gbnVsbCA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciBtYXJr ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg Y20uc2V0R3V0dGVyTWFya2VyKAorICAgICAgICAgIG0sICJicmVha3BvaW50 cyIsIGluZm8uZ3V0dGVyTWFya2VycyA/IG51bGwgOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgIHZhciBtYXJrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJkaXYiKTsKIAotICAgICAgICAgIG1hcmtlci5zdHlsZS5jb2xvciA9 ICIjODIyIjsKLSAgICAgICAgICBtYXJrZXIuaW5uZXJIVE1MID0gIuKXjyI7 CisgICAgICAgICAgICBtYXJrZXIuc3R5bGUuY29sb3IgPSAiIzgyMiI7Cisg ICAgICAgICAgICBtYXJrZXIuaW5uZXJIVE1MID0gIuKXjyI7CiAKLSAgICAg ICAgICByZXR1cm4gbWFya2VyOworICAgICAgICAgICAgcmV0dXJuIG1hcmtl cjsKICAgICAgICAgfSgpKTsKKyAgICAgIH0KICAgICB9LAogCiAgICAgLy8g Q3JlYXRlIHRoZSBkZWJ1Z2dlciBsYXlvdXQgd2l0aCBzcGxpdHRlciBhbmQg ZGlzcGxheSB0aGUgYXBwcm9wcmlhdGUgZGF0YSByZWNlaXZlZCBmcm9tIHNl cnZlci4KQEAgLTE0MDEsOCArMTQxNSwxNCBAQCBkZWZpbmUoCiAgICAgICAg IHZhciBlZGl0b3IgPSBzZWxmLmVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRl eHRBcmVhKAogICAgICAgICAgIGNvZGVfZWRpdG9yX2FyZWEuZ2V0KDApLCB7 CiAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsCi0gICAgICAgICAgbGlu ZVdyYXBwaW5nOiB0cnVlLAotICAgICAgICAgIGd1dHRlcnM6IFsibm90ZS1n dXR0ZXIiLCAiQ29kZU1pcnJvci1saW5lbnVtYmVycyIsICJicmVha3BvaW50 cyJdLAorICAgICAgICAgIGZvbGRPcHRpb25zOiB7CisgICAgICAgICAgICB3 aWRnZXQ6ICJcdTIwMjYiCisgICAgICAgICAgfSwKKyAgICAgICAgICBmb2xk R3V0dGVyOiB7CisgICAgICAgICAgICByYW5nZUZpbmRlcjogQ29kZU1pcnJv ci5mb2xkLmNvbWJpbmUoQ29kZU1pcnJvci5wZ2FkbWluQmVnaW5SYW5nZUZp bmRlciwgQ29kZU1pcnJvci5wZ2FkbWluSWZSYW5nZUZpbmRlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD b2RlTWlycm9yLnBnYWRtaW5Mb29wUmFuZ2VGaW5kZXIsIENvZGVNaXJyb3Iu cGdhZG1pbkNhc2VSYW5nZUZpbmRlcikKKyAgICAgICAgICB9LAorICAgICAg ICAgIGd1dHRlcnM6IFsiQ29kZU1pcnJvci1saW5lbnVtYmVycyIsICJDb2Rl TWlycm9yLWZvbGRndXR0ZXIiLCAiYnJlYWtwb2ludHMiXSwKICAgICAgICAg ICBtb2RlOiAidGV4dC94LXBnc3FsIiwKICAgICAgICAgICByZWFkT25seTog dHJ1ZQogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3RlbXBsYXRlcy9kZWJ1Z2dlci9zcWwvZXhlY3V0ZV9l ZGJzcGwuc3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxh dGVzL2RlYnVnZ2VyL3NxbC9leGVjdXRlX2VkYnNwbC5zcWwKaW5kZXggZDQz ZjBlMi4uM2MwY2Q3OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv ZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVnZ2VyL3NxbC9leGVjdXRlX2VkYnNw bC5zcWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxh dGVzL2RlYnVnZ2VyL3NxbC9leGVjdXRlX2VkYnNwbC5zcWwKQEAgLTM0LDcg KzM0LDcgQEAKIHslIHNldCBzdHJQYXJhbSA9ICJwX3BhcmFtIiB+IChsb29w LmluZGV4IC0gMSkgJX0KIHslIHNldCBzdHJfZGVjbGFyZSA9IHN0cl9kZWNs YXJlIH4gIlx0IiB+IHN0clBhcmFtIH4gIiAiIH4gYXJnX3R5cGVbbG9vcC5p bmRleCAtIDFdICV9CiB7JSBpZiBhcmdfbW9kZSA9PSAnYicgJX0KLXsjIyMg VE9ETzogdG8gY2hlY2sgZm9yIE51bGwgcGFyYW1ldGVycyByZWNlaXZlZCBm cm9tIGNsaWVudCAjIyN9Cit7IyMjIEhhbmRsZSBOdWxsIHBhcmFtZXRlcnMg cmVjZWl2ZWQgZnJvbSBjbGllbnQgIyMjfQogeyUgaWYgZGF0YVtpbnB1dF92 YWx1ZV9pbmRleF1bJ3R5cGUnXSA9PSAndGV4dCcgYW5kIGRhdGFbaW5wdXRf dmFsdWVfaW5kZXhdWyd2YWx1ZSddICE9ICdOVUxMJyAlfQogeyUgc2V0IHRt cF92YWwgPSBkYXRhW2lucHV0X3ZhbHVlX2luZGV4XVsndmFsdWUnXXxxdExp dGVyYWwgJX0KIHslIHNldCBzdHJfZGVjbGFyZSA9IHN0cl9kZWNsYXJlIH4g IiA6PSAiIH4gc3RyUGFyYW0gfiAiICIgfiB0bXBfdmFsIH4gIjo6IiB+IGRh dGFbaW5wdXRfdmFsdWVfaW5kZXhdWyd0eXBlJ10gJX0KQEAgLTYxLDcgKzYx LDcgQEAKIHslIHNldCBzdHJfc3RhdGVtZW50ID0gc3RyX3N0YXRlbWVudCB+ ICJWQVJJQURJQyAiICV9CiB7JSBlbmRpZiAlfQogCi17IyMjIFRPRE86IHRv IGNoZWNrIGZvciBOdWxsIHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSBjbGll bnQgIyMjfQoreyMjIyBIYW5kbGUgTnVsbCBwYXJhbWV0ZXJzIHJlY2VpdmVk IGZyb20gY2xpZW50ICMjI30KIHslIGlmIGRhdGFbaW5wdXRfdmFsdWVfaW5k ZXhdWyd0eXBlJ10gPT0gJ3RleHQnIGFuZCBkYXRhW2lucHV0X3ZhbHVlX2lu ZGV4XVsndmFsdWUnXSAhPSAnTlVMTCcgJX0KIHslIHNldCB0bXBfdmFyID0g ZGF0YVtpbnB1dF92YWx1ZV9pbmRleF1bJ3ZhbHVlJ118cXRMaXRlcmFsICV9 CiB7JSBzZXQgc3RyX3N0YXRlbWVudCA9IHN0cl9zdGF0ZW1lbnQgfiB0bXBf dmFyIH4gIjo6IiB+IGRhdGFbaW5wdXRfdmFsdWVfaW5kZXhdWyd0eXBlJ10g JX0KQEAgLTEwMSw0ICsxMDEsNCBAQAogeyMjIyBSZXR1cm4gZmluYWwgcXVl cnkgZm9ybWVkIHdpdGggYWJvdmUgY29uZGl0aW9uICMjI30KIHslIGlmIG5v dCBpbnNpZGVfbG9vcC52YWx1ZSAlfQoge3sgc3RyUXVlcnkgfX0KLXslIGVu ZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3Rl bXBsYXRlcy9kZWJ1Z2dlci9zcWwvZXhlY3V0ZV9wbHBnc3FsLnNxbCBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3RlbXBsYXRlcy9kZWJ1Z2dlci9z cWwvZXhlY3V0ZV9wbHBnc3FsLnNxbAppbmRleCBlY2Q3NWYxLi5lMDk2NzAz IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90ZW1w bGF0ZXMvZGVidWdnZXIvc3FsL2V4ZWN1dGVfcGxwZ3NxbC5zcWwKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVnZ2Vy L3NxbC9leGVjdXRlX3BscGdzcWwuc3FsCkBAIC0xMSw3ICsxMSw3IEBACiB7 JSBpZiAndHlwZScgaW4gZGljdF9pdGVtIGFuZCAndmFsdWUnIGluIGRpY3Rf aXRlbSAlfQogeyUgaWYgZGljdF9pdGVtWyd0eXBlJ10gPT0gJ3RleHQnIGFu ZCBkaWN0X2l0ZW1bJ3ZhbHVlJ10gIT0gJ05VTEwnICV9CiB7eyBkaWN0X2l0 ZW1bJ3ZhbHVlJ118cXRMaXRlcmFsIH19Ojp7eyBkaWN0X2l0ZW1bJ3R5cGUn XSB9fXslIGlmIG5vdCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9Ci17JSBl bGlmIGRpY3RfaXRlbVsndHlwZSddID09ICd0ZXh0JyBhbmQgZGljdF9pdGVt Wyd2YWx1ZSddID09ICdOVUxMJyAlfQoreyUgZWxpZiBkaWN0X2l0ZW1bJ3Zh bHVlJ10gPT0gJ05VTEwnICV9CiB7eyBkaWN0X2l0ZW1bJ3ZhbHVlJ10gfX06 Ont7IGRpY3RfaXRlbVsndHlwZSddIH19eyUgaWYgbm90IGxvb3AubGFzdCAl fSwgeyUgZW5kaWYgJX0KIHslIGVsc2UgJX0KIHslIGlmICdbXScgaW4gZGlj dF9pdGVtWyd0eXBlJ10gJX0KQEAgLTI5LDQgKzI5LDQgQEAKIHslIGVuZGlm ICV9CiB7JSBlbmRmb3IgJX0KIHslIGVuZGlmICV9Ci0pClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorKQo= --001a114fc14eb8444205314f6ea3 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 --001a114fc14eb8444205314f6ea3--