Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fPmCk-0004pe-9a for pgadmin-hackers@arkaria.postgresql.org; Mon, 04 Jun 2018 09:55:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fPmCi-0007Ff-WB for pgadmin-hackers@arkaria.postgresql.org; Mon, 04 Jun 2018 09:55:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fPmCi-0007FL-OZ for pgadmin-hackers@lists.postgresql.org; Mon, 04 Jun 2018 09:55:08 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fPmCZ-0000Bx-6y for pgadmin-hackers@postgresql.org; Mon, 04 Jun 2018 09:55:08 +0000 Received: by mail-lf0-x242.google.com with SMTP id n15-v6so6913556lfn.10 for ; Mon, 04 Jun 2018 02:54:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=HBCVlix/kezbKlmcA1qXOpNn2HvhMBn+R7MobyfU6go=; b=VPyFcrh5EdYKq/bkSw4Ezz3lLLq6TiaINHdR5lxlql0cFPQaMgqkCQ3dfGwzG7oaI3 XHS/S72t/NaO3YykmHsRvY3ZgFy27uBJMPqktcNakbpxra1MXTgIH3DKFlyZKBfnIgtY McfmJ5IRmbeKA5Jeti0tpLfLcXZwKt28TQINzkdMK8stqaIIwPQwvCIZcUCrFNOETjbO 5/aJx5/boMNAaTJRVYUZvB3BclRf4H/2mDrGqNYMI6snQvKzKOgF+gQmohpapy5kjQ+b 1A69gZeaNYdjqJinxFEz/7pBTp2zWNguigKD5Qmb5PNrbl5h76DDg3NBOgpjZGLE3a9U +uhQ== 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=HBCVlix/kezbKlmcA1qXOpNn2HvhMBn+R7MobyfU6go=; b=aDlHFVrT69WfP9H6coOXUlrSARAsShDx4mzcyT886YFaOVbL6dEHseas172odel3uZ 73+DeRHBeRtQ6uaWHfMzlsdoSOfK5gLwu99iQZNtTkGQVxmGUCQNn4l7OhrbLBk2NcoQ 25YlPExylPiVi5R5Q3ih2u6P3HqBZX2BHV+WR9qz3rm5KS+bsbL1PBohUrnSmkXdIC2p ZPDTOpW+KGgJkyehqnPJ8TrNQDe4LLW8+rGnleuApqcB7GLdZYlYVE/LcIzZzIix7u0J TBDlqwj0ZtKwrnVY3qMzNgD8sy73mKshCPSztd9/NlW+m+/pWzlmp0Zw0wCLzjgjB9JZ 9BCw== X-Gm-Message-State: ALKqPwfp5vQPwql8UqMM8pSvSV9ahObVg7oyqT3YkCTWnTbvWyD7zkgn wOcKAW87zgg9RmUYoaGFlcKcN7IgWQ5Djv3d0x5log== X-Google-Smtp-Source: ADUXVKLIH/sb5WGZRVqGUVyVag1pfT3+LaYaLlQ3xThg5Wddd+ZwCiUOfIjP/aJBGK26Yy/0Byw0ZWqqeJ9C27ymkvQ= X-Received: by 2002:a19:5c4b:: with SMTP id q72-v6mr11878195lfb.128.1528106098380; Mon, 04 Jun 2018 02:54:58 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a2e:9e8a:0:0:0:0:0 with HTTP; Mon, 4 Jun 2018 02:54:56 -0700 (PDT) In-Reply-To: References: From: Aditya Toshniwal Date: Mon, 4 Jun 2018 15:24:56 +0530 Message-ID: Subject: Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database. To: Dave Page Cc: Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000002c782a056dcded75" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000002c782a056dcded75 Content-Type: multipart/alternative; boundary="0000000000002c7827056dcded73" --0000000000002c7827056dcded73 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, Please ignore previous patch. Fixed some linter issues. PFA updated patch. Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB Software Solutions | Pune "Don't Complain about Heat, Plant a tree" On Mon, Jun 4, 2018 at 10:53 AM, Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Hackers, > > PFA the updated patch on this. I have tried to add test cases to check fo= r > different encoding database. In the test run, it will create a database, > fire a query for a string, check if we get the output and drops the > database. > Kindly review. > > Thanks and Regards, > Aditya Toshniwal > Software Engineer | EnterpriseDB Software Solutions | Pune > "Don't Complain about Heat, Plant a tree" > > On Thu, May 31, 2018 at 6:42 PM, Dave Page wrote: > >> Hi >> >> On Thu, May 31, 2018 at 1:20 AM, Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Victoria/Joao, >>> >>> On Thu, May 31, 2018 at 2:06 AM, Joao De Almeida Pereira < >>> jdealmeidapereira@pivotal.io> wrote: >>> >>>> Hello Aditya, >>>> >>>> It looks ok and it passes CI. >>>> >>>> We have some recommendations: >>>> - These look like 2 different changes so they should be in separated >>>> commits >>>> >>> >>> If you are talking of set client_encoding, then its not a bug. Its a >>> choice given to Postgres DB user to change the encoding of the characte= rs. >>> Postgres will translate characters from Server Encoding to Client Encod= ing, >>> and will throw error like mentioned previously. This link will help bet= ter >>> - https://www.postgresql.org/docs/10/static/multibyte.html >>> The actual bug was, even after changing the client encoding to >>> SQL_ASCII, pgAdmin4 was not able to show the output as it was failing i= n >>> encoding by psycopg2. The patch is for resolving that. >>> >>> >>>> - Do we have test coverage for the bug that you are talking about? If >>>> not we should, to ensure this problem does not happen again in a futur= e >>>> change. >>>> >>> >>> It is not possible adding test cases for encoding related stuff, as >>> Postgres support a lot many different types of encoding and conversions >>> (refer above link) >>> >> >> I was going to ask the same thing. Per https://www.postgresql.org >> /docs/10/static/multibyte.html#id-1.6.10.5.7, every characterset except >> SQL_ASCII can be converted to UTF-8, so we only need to test that UTF-8 = and >> some other charactersets besides SQL_ASCII work, and then separately tha= t >> SQL_ASCII with characters known not to be in UTF-8 work. >> >> >>> >>>> Thanks >>>> Victoria && Joao >>>> >>>> On Wed, May 30, 2018 at 3:06 AM Aditya Toshniwal < >>>> aditya.toshniwal@enterprisedb.com> wrote: >>>> >>>>> Hi Hackers, >>>>> >>>>> PFA updated patch after all the permutations, combinations for >>>>> encoding for SQL_ASCII database. Also fixed a small glitch for sql >>>>> editor connection status check. >>>>> >>>>> Please note, ERROR: invalid byte sequence for encoding "UTF8": 0xe9 >>>>> 0x73 is a Postgres DB error and not pgAdmin4 error. >>>>> >>>>> >>>>> >>>>> You need to change client_encoding to the appropriate. After changing >>>>> client_encoding using command - set client_encoding=3D'XYZ', it will = give not >>>>> give error. >>>>> >>>>> >>>>> >>>>> Thanks and Regards, >>>>> Aditya Toshniwal >>>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>>> "Don't Complain about Heat, Plant a tree" >>>>> >>>>> On Wed, May 23, 2018 at 10:13 AM, Aditya Toshniwal < >>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>> >>>>>> Thank you Victoria, Anthony. >>>>>> >>>>>> Thanks and Regards, >>>>>> Aditya Toshniwal >>>>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>>>> "Don't Complain about Heat, Plant a tree" >>>>>> >>>>>> On Tue, May 22, 2018 at 7:15 PM, Victoria Henry >>>>>> wrote: >>>>>> >>>>>>> Hi Aditya, >>>>>>> >>>>>>> We made a minor change to make the patch so the python linter can >>>>>>> pass. Attached is the change we made. >>>>>>> Everything else looks good. >>>>>>> >>>>>>> Sincerely, >>>>>>> >>>>>>> Victoria & Anthony >>>>>>> >>>>>>> On Tue, May 22, 2018 at 4:46 AM Aditya Toshniwal < >>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> PFA updated patch. Linter issues are fixed ( we dont have any >>>>>>>> linter setup for python :-( ) >>>>>>>> Regarding test cases, they run successfully on my system and the >>>>>>>> reason it failed for pivotal is timeout exception. I am sorry I ca= n't help >>>>>>>> with that. >>>>>>>> >>>>>>>> Traceback (most recent call last): >>>>>>>> File "/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests= /keyboard_shortcut_test.py", >>>>>>>> line 52, in runTest >>>>>>>> self._check_shortcuts() >>>>>>>> File "/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests= /keyboard_shortcut_test.py", >>>>>>>> line 77, in _check_shortcuts >>>>>>>> ") and contains(@class, 'open')]") >>>>>>>> File "/root/.pyenv/versions/pgadmin36/lib/python3.6/site-package= s >>>>>>>> /selenium/webdriver/support/wait.py", line 80, in until >>>>>>>> raise TimeoutException(message, screen, stacktrace) >>>>>>>> selenium.common.exceptions.TimeoutException: Message: >>>>>>>> >>>>>>>> Thanks and Regards, >>>>>>>> Aditya Toshniwal >>>>>>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>>>>>> "Don't Complain about Heat, Plant a tree" >>>>>>>> >>>>>>>> On Tue, May 22, 2018 at 1:37 PM, Dave Page >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> Pivotal's buildbot is showing problems with this patch: >>>>>>>>> >>>>>>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >>>>>>>>> /pgadmin-patch/jobs/run-linter/builds/66 (linter failed) >>>>>>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >>>>>>>>> /pgadmin-patch/jobs/run-tests/builds/84 (tests failed) >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, May 22, 2018 at 7:05 AM, Aditya Toshniwal < >>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Hackers, >>>>>>>>>> >>>>>>>>>> PFA patch for RM#3289 where decode error was thrown on querying = a >>>>>>>>>> SQL_ASCII database table. Please note, this problem occurs only = on windows. >>>>>>>>>> Sample insert - insert into test_tab values ('=C3=A9'); >>>>>>>>>> >>>>>>>>>> psycopg2 has a encodings dictionary where Postgres Database >>>>>>>>>> Encodings are mapped to python equivalent. It uses 'ascii' decod= er of >>>>>>>>>> python to decode for SQL_ASCII encoding. If data has characters = beyond the >>>>>>>>>> limit of ascii then it failed. The solution would be to use utf_= 8 decoder >>>>>>>>>> instead of ascii. I tried setting the client_encoding using >>>>>>>>>> set_client_encoding('UTF8') method of a psycopg2 connection but = no luck >>>>>>>>>> (also its not allowed for async connection). I also tried execut= ing "SET >>>>>>>>>> CLIENT_ENCODING=3D'UTF8'" but it didn't work too. >>>>>>>>>> So, as in the patch, I had to set encodings dict value directly >>>>>>>>>> to 'utf_8' and it seems to be working. Please note, the same is = added to >>>>>>>>>> psycopg3 milestones >>>>>>>>>> https://github.com/psycopg/psycopg2/milestone/4 >>>>>>>>>> >>>>>>>>>> Also fixed a small glitch for sql editor connection status check= . >>>>>>>>>> >>>>>>>>>> Kindly review. >>>>>>>>>> >>>>>>>>>> Thanks and Regards, >>>>>>>>>> Aditya Toshniwal >>>>>>>>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>>>>>>>> "Don't Complain about Heat, Plant a tree" >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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 >> > > --0000000000002c7827056dcded73 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Please ignore previous patc= h. Fixed some linter issues. PFA updated patch.

Thanks and Regar= ds,
Aditya Toshniwal=
= Softwa= re Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
&qu= ot;Don't Complain about Heat, Plant a tree"

On Mon, Jun 4, 2018 at 10:53 AM, Aditya Tosh= niwal <aditya.toshniwal@enterprisedb.com> wr= ote:
Hi Hackers,
PFA the updated patch on this. I have tried to add test cases t= o check for different encoding database. In the test run, it will create a = database, fire a query for a string, check if we get the output and drops t= he database.
Kindly review.

=
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Sol= utions |=C2=A0Pune
"Don't Complain about Heat, Plant a tr= ee"

On Thu, May 31= , 2018 at 6:42 PM, Dave Page <dpage@pgadmin.org> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
Hi

On Thu, May 31, 2018 at 1:20 AM, = Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
<= div dir=3D"ltr">Hi Victoria/Joao,

=
On Thu, May 31, 2018 at 2:06 AM, Joao De Almeida Pereira <= span dir=3D"ltr"><jdealmeidapereira@pivotal.io> wrote:
Hello Aditya,
It looks ok and it passes CI.

We h= ave some recommendations:
- These look like 2 different changes s= o they should be in separated commits
=C2=A0
If you are talking of set client_= encoding, then its not a bug. Its a choice given to Postgres DB user to cha= nge the encoding of the characters. Postgres will translate characters from= Server Encoding to Client Encoding, and will throw error like mentioned pr= eviously. This link will help better -=C2=A0ht= tps://www.postgresql.org/docs/10/static/multibyte.html
<= span style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:sm= all;font-style:normal;font-variant-ligatures:normal;font-variant-caps:norma= l;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;te= xt-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(= 255,255,255);text-decoration-style:initial;text-decoration-color:initial;fl= oat:none;display:inline">The actual bug was, even after changing the client= encoding to SQL_ASCII, pgAdmin4 was not able to show the output as it was = failing in encoding by psycopg2. The patch is for resolving that.
=C2=A0
- Do we have test coverage for the bug that you are talking abou= t? If not we should, to ensure this problem does not happen again in a futu= re change.

It is not pos= sible adding test cases for encoding related stuff, as Postgres support a l= ot many different types of encoding and conversions (refer above link)=C2= =A0

I was go= ing to ask the same thing. Per=C2=A0https://www.p= ostgresql.org/docs/10/static/multibyte.html#id-1.6.10.5.7, ev= ery characterset except SQL_ASCII can be converted to UTF-8, so we only nee= d to test that UTF-8 and some other charactersets besides SQL_ASCII work, a= nd then separately that SQL_ASCII with characters known not to be in UTF-8 = work.
=C2=A0

Thanks
Vi= ctoria && Joao

On Wed, May 30, 2018 at 3:06 AM Aditya Toshniwal= <aditya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,

<= /div>
PFA updated patch after all the permutations, combinations for en= coding for SQL_ASCII database.=C2=A0 Also fixed a small glitch for sql editor connect= ion status check.

Please note,=C2=A0ERROR: invalid byte sequence fo= r encoding "UTF8": 0xe9 0x73 is a Postgres DB error and not pgAdm= in4 error.

<Image Deleted>
=

<= /div>
You need to change client_encoding to the appropriate. After chan= ging client_encoding using command - set client_encoding=3D'XYZ', i= t will give not give error.

<Image Deleted>
<= div class=3D"gmail_extra">
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2= =A0Pune
"Don't Complain about Heat, Plant a tree"

On Wed, May 23, 2018 at 10:13 AM, Aditya Tos= hniwal <aditya.toshniwal@enterprisedb.com> wrote:
Thank you Victoria, Anthony.
Than= ks and Regards,
Adit= ya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don't Complain about Heat, Plant a tree"

On Tue, May 22, 2018 at 7:15 PM, Victoria Henry <= vhenry@pivotal.io> wrote:
Hi Aditya,

We made a = minor change to make the patch so the python linter can pass.=C2=A0 Attache= d is the change we made.
Everything else looks good.
Sincerely,

Victoria & Anthony

On Tue,= May 22, 2018 at 4:46 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi,

PFA updated patch. Linter issu= es are fixed ( we dont have any linter setup for python :-( )
Reg= arding test cases, they run successfully on my system and the reason it fai= led for pivotal is timeout exception. I am sorry I can't help with that= .

Traceback (most recent call last):
=C2=A0 File &qu= ot;/tmp/build/a453582b/pgadmin-repo/web/pgadmin/feature_tests/key= board_shortcut_test.py", line 52, in runTest
=C2=A0 =C2=A0 self._ch= eck_shortcuts()
=C2=A0 File "/tmp/build/a453582b/pgadmin-repo/= web/pgadmin/feature_tests/keyboard_shortcut_test.py", line 77, in= _check_shortcuts
=C2=A0 =C2=A0 ") and contains(@class, 'open&#= 39;)]")
=C2=A0 File "/root/.pyenv/versions/pgadmin36/lib/= python3.6/site-packages/selenium/webdriver/support/wait.py",= line 80, in until
=C2=A0 =C2=A0 raise TimeoutException(message, screen,= stacktrace)
selenium.common.exceptions.TimeoutException: Message: =

T= hanks and Regards,
A= ditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don't Complain about Heat, Plant a tree"=

On Tue, May 22, 2018 at 1:37 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
=

On Tue, May 22, 2018 at 7:05 AM, Aditya Toshniwal <= adit= ya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,
<= div>
PFA patch for RM#3289 where decode error was thrown on q= uerying a SQL_ASCII database table. Please note, this problem occurs only o= n windows.
Sample insert -=C2=A0insert into test_tab values ('= ;=C3=A9');

psycopg2 has a encodings dictionary= where Postgres Database Encodings are mapped to python equivalent. It uses= 'ascii' decoder of python to decode for SQL_ASCII encoding. If dat= a has characters beyond the limit of ascii then it failed. The solution wou= ld be to use utf_8 decoder instead of ascii. I tried setting the client_enc= oding using set_client_encoding('UTF8') method of a psycopg2 connec= tion but no luck (also its not allowed for async connection). I also tried = executing "SET CLIENT_ENCODING=3D'UTF8'" but it didn'= t work too.
So, as in the patch, I had to set encodings dict valu= e directly to 'utf_8' and it seems to be working. Please note, the = same is added to psycopg3 milestones

Also fixed a small= glitch for sql editor connection status check.

Ki= ndly review.

Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB= Software Solutions |=C2=A0Pune<= /div>
"Don't Complain about Hea= t, Plant a tree"



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

Ent= erpriseDB UK: htt= p://www.enterprisedb.com
The Enterprise PostgreSQL Company




=


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

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


--0000000000002c7827056dcded73-- --0000000000002c782a056dcded75 Content-Type: text/x-patch; charset="US-ASCII"; name="RM3289.patch" Content-Disposition: attachment; filename="RM3289.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ji02wrku1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQppbmRleCAwMTNlNGRjLi5hOTQ2 MGRkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CkBAIC0xNDgwLDE5 ICsxNDgwLDI0IEBAIGRlZiBxdWVyeV90b29sX3N0YXR1cyh0cmFuc19pZCk6CiAgICAgaWYgY29u biBhbmQgdHJhbnNfb2JqIGFuZCBzZXNzaW9uX29iajoKICAgICAgICAgc3RhdHVzID0gY29ubi50 cmFuc2FjdGlvbl9zdGF0dXMoKQogCi0gICAgICAgICMgQ2hlY2sgZm9yIHRoZSBhc3luY2hyb25v dXMgbm90aWZpZXMgc3RhdGVtZW50cy4KLSAgICAgICAgY29ubi5jaGVja19ub3RpZmllcyhUcnVl KQotICAgICAgICBub3RpZmllcyA9IGNvbm4uZ2V0X25vdGlmaWVzKCkKKyAgICAgICAgaWYgc3Rh dHVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBDaGVjayBmb3IgdGhlIGFzeW5jaHJvbm91 cyBub3RpZmllcyBzdGF0ZW1lbnRzLgorICAgICAgICAgICAgY29ubi5jaGVja19ub3RpZmllcyhU cnVlKQorICAgICAgICAgICAgbm90aWZpZXMgPSBjb25uLmdldF9ub3RpZmllcygpCiAKLSAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKLSAgICAgICAgICAgIGRhdGE9ewotICAgICAg ICAgICAgICAgICdzdGF0dXMnOiBzdGF0dXMsCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBn ZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICBDT05ORUNUSU9OX1NUQVRVU19NRVNTQUdFX01B UFBJTkcuZ2V0KHN0YXR1cyksCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAn bm90aWZpZXMnOiBub3RpZmllcwotICAgICAgICAgICAgfQotICAgICAgICApCisgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAnc3RhdHVzJzogc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAn bWVzc2FnZSc6IGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICBDT05ORUNUSU9OX1NU QVRVU19NRVNTQUdFX01BUFBJTkcuZ2V0KHN0YXR1cyksCisgICAgICAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICAgICAgICdub3RpZmllcyc6IG5vdGlmaWVzCisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KCJU cmFuc2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFpbGVkLiIpCisgICAgICAgICAgICApCiAgICAgZWxz ZToKICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcigKICAgICAgICAgICAgIGVy cm9ybXNnPWdldHRleHQoIlRyYW5zYWN0aW9uIHN0YXR1cyBjaGVjayBmYWlsZWQuIikKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2VuY29kaW5nX2No YXJzZXQucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9lbmNvZGlu Z19jaGFyc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTU1YmYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVz dF9lbmNvZGluZ19jaGFyc2V0LnB5CkBAIC0wLDAgKzEsMTMyIEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitmcm9tIGZsYXNrIGltcG9ydCBGbGFz aywgcmVuZGVyX3RlbXBsYXRlCitmcm9tIGppbmphMiBpbXBvcnQgRmlsZVN5c3RlbUxvYWRlcgor Citmcm9tIHBnYWRtaW4gaW1wb3J0IFZlcnNpb25lZFRlbXBsYXRlTG9hZGVyCitmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBnYWRtaW4udXRp bHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVM VF9EUklWRVIKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCitmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRo b25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscworaW1wb3J0IGpzb24KKworCitjbGFzcyBU ZXN0RW5jb2RpbmdDaGFyc2V0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlz IGNsYXNzIHZhbGlkYXRlcyBjaGFyYWN0ZXIgc3VwcG9ydCBpbiBwZ0FkbWluNCBmb3IKKyAgICBk aWZmZXJlbnQgUG9zdGdyZXNEQiBlbmNvZGluZ3MKKyAgICAiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgKKyAgICAgICAgICAgICdXaXRoIEVuY29kaW5nIFVURjgnLAorICAgICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICAgICBkYl9lbmNvZGluZz0nVVRGOCcsCisgICAgICAgICAg ICAgICAgbGNfY29sbGF0ZT0nQycsCisgICAgICAgICAgICAgICAgdGVzdF9zdHI9J0EnLAorICAg ICAgICAgICAgICAgIHNldF9jbGllbnRfZW5jb2Rpbmc9RmFsc2UKKyAgICAgICAgICAgICkpLAor ICAgICAgICAoCisgICAgICAgICAgICAnV2l0aCBFbmNvZGluZyBXSU4xMjUyJywKKyAgICAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgICAgZGJfZW5jb2Rpbmc9J1dJTjEyNTInLAorICAgICAg ICAgICAgICAgIGxjX2NvbGxhdGU9J0MnLAorICAgICAgICAgICAgICAgIHRlc3Rfc3RyPSdBJywK KyAgICAgICAgICAgICAgICBzZXRfY2xpZW50X2VuY29kaW5nPUZhbHNlCisgICAgICAgICAgICAp KSwKKyAgICAgICAgKAorICAgICAgICAgICAgJ1dpdGggRW5jb2RpbmcgRVVDX0NOJywKKyAgICAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgZGJfZW5jb2Rpbmc9J0VVQ19DTicsCisgICAg ICAgICAgICAgICAgbGNfY29sbGF0ZT0nQycsCisgICAgICAgICAgICAgICAgdGVzdF9zdHI9J0En LAorICAgICAgICAgICAgICAgIHNldF9jbGllbnRfZW5jb2Rpbmc9RmFsc2UKKyAgICAgICAgICAg ICkpLAorICAgICAgICAoCisgICAgICAgICAgICAnV2l0aCBFbmNvZGluZyBTUUxfQVNDSUknLAor ICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBkYl9lbmNvZGluZz0nU1FMX0FTQ0lJ JywKKyAgICAgICAgICAgICAgICBsY19jb2xsYXRlPSdDJywKKyAgICAgICAgICAgICAgICB0ZXN0 X3N0cj0nXFwyNTUnLAorICAgICAgICAgICAgICAgIHNldF9jbGllbnRfZW5jb2Rpbmc9VHJ1ZQor ICAgICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBz ZXJ2ZXJfZGV0YWlscyA9IHBhcmVudF9ub2RlX2RpY3RbJ3NlcnZlciddWy0xXQorICAgICAgICBz ZXJ2ZXIgPSBzZXJ2ZXJfZGV0YWlsc1snc2VydmVyJ10KKyAgICAgICAgc2VsZi5tYWluX2Nvbm4g PSB0ZXN0X3V0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VydmVyWydkYidd LAorICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VydmVyWydk Yl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAgICAgICBz ZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkK KyAgICAgICAgc2VsZi5lbmNvZGVfZGJfbmFtZSA9ICdlbmNvZGluZ190ZXN0JworICAgICAgICBz ZWxmLmVuY29kZV9zaWQgPSBzZXJ2ZXJfZGV0YWlsc1snc2VydmVyX2lkJ10KKyAgICAgICAgc2Vs Zi5lbmNvZGVfZGlkID0gdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2UoCisgICAgICAgICAgICBz ZWxmLnNlcnZlciwgc2VsZi5lbmNvZGVfZGJfbmFtZSwKKyAgICAgICAgICAgIChzZWxmLmRiX2Vu Y29kaW5nLCBzZWxmLmxjX2NvbGxhdGUpKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisKKyAg ICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMu U0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZW5jb2RlX3NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmVuY29kZV9kaWQpCisgICAgICAgIGlmIG5vdCBkYl9jb25b ImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZS4iKQorCisgICAgICAgICMg SW5pdGlhbGl6ZSBxdWVyeSB0b29sCisgICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5pdGlhbGl6 ZS9xdWVyeV90b29sL3swfS97MX0vezJ9Jy5mb3JtYXQoCisgICAgICAgICAgICB0ZXN0X3V0aWxz LlNFUlZFUl9HUk9VUCwgc2VsZi5lbmNvZGVfc2lkLCBzZWxmLmVuY29kZV9kaWQpCisgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9 IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYu dHJhbnNfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2dyaWRUcmFuc0lkJ10KKworICAgICAg ICBpZiBzZWxmLnNldF9jbGllbnRfZW5jb2Rpbmc6CisgICAgICAgICAgICAjIENoYW5nZSBDbGll bnQgRW5jb2RpbmcKKyAgICAgICAgICAgIHVybCA9ICIvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3Rh cnQvezB9Ii5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAgICAgICAgICAgIHNxbCA9ICJzZXQgY2xp ZW50X2VuY29kaW5nID0gJ3swfSc7Ii5mb3JtYXQoc2VsZi5kYl9lbmNvZGluZykKKyAgICAgICAg ICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsIGRhdGE9anNvbi5kdW1wcyh7InNx bCI6IHNxbH0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl bnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9wb2xs L3swfScuZm9ybWF0KHNlbGYudHJhbnNfaWQpCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYu dGVzdGVyLmdldCh1cmwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5z dGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMo cmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBDaGVjayBjaGFyYWN0 ZXIKKyAgICAgICAgdXJsID0gIi9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC97MH0iLmZvcm1h dChzZWxmLnRyYW5zX2lkKQorICAgICAgICBzcWwgPSAic2VsZWN0IEUnezB9JzsiLmZvcm1hdChz ZWxmLnRlc3Rfc3RyKQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLCBk YXRhPWpzb24uZHVtcHMoeyJzcWwiOiBzcWx9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgdXJsID0gJy9zcWxlZGl0 b3IvcG9sbC97MH0nLmZvcm1hdChzZWxmLnRyYW5zX2lkKQorICAgICAgICByZXNwb25zZSA9IHNl bGYudGVzdGVyLmdldCh1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNw b25zZV9kYXRhWydkYXRhJ11bJ3Jvd3NfZmV0Y2hlZF90byddLCAxKQorCisgICAgICAgIGRhdGFi YXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5lbmNvZGVfc2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RlX2RpZCkK KworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFi YXNlKHNlbGYubWFpbl9jb25uLCBzZWxmLmVuY29kZV9kYl9uYW1lKQorICAgICAgICBzZWxmLm1h aW5fY29ubi5jbG9zZSgpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5 Y29wZzIvY29ubmVjdGlvbi5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9j b25uZWN0aW9uLnB5CmluZGV4IGNmZDE2MWEuLmU4Y2E4ODYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9jb25uZWN0aW9uLnB5CisrKyBiL3dlYi9wZ2FkbWlu L3V0aWxzL2RyaXZlci9wc3ljb3BnMi9jb25uZWN0aW9uLnB5CkBAIC01MSw2ICs1MSwxMiBAQCBl bHNlOgogXyA9IGdldHRleHQKIAogCisjIFJlcGxhY2UgZGVmYXVsdCBhc2NpaSBlbmNvZGVyIHdp dGggdW5pY29kZS1lc2NhcGUKKyMgd2hpY2ggdHJhbnNsYXRlcyBjaGFyYWN0ZXJzIHRvIHVuaWNv ZGUgZm9ybWF0LgorIyBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIEFTQ0lJIGJhc2VkIG9u IHVuaWNvZGUKK2VuY29kaW5nc1snU1FMX0FTQ0lJJ10gPSAndW5pY29kZS1lc2NhcGUnCitlbmNv ZGluZ3NbJ1NRTEFTQ0lJJ10gPSAndW5pY29kZS1lc2NhcGUnCisKICMgUmVnaXN0ZXIgZ2xvYmFs IHR5cGUgY2FzdGVyIHdoaWNoIHdpbGwgYmUgYXBwbGljYWJsZSB0byBhbGwgY29ubmVjdGlvbnMu CiByZWdpc3Rlcl9nbG9iYWxfdHlwZWNhc3RlcnMoKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi91dGlscy9kcml2ZXIvcHN5Y29wZzIvdHlwZWNhc3QucHkgYi93ZWIvcGdhZG1pbi91dGlscy9k cml2ZXIvcHN5Y29wZzIvdHlwZWNhc3QucHkKaW5kZXggZjEzNjYwNC4uY2NlYmIyZiAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL3R5cGVjYXN0LnB5CisrKyBi L3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi90eXBlY2FzdC5weQpAQCAtMTY0LDcg KzE2NCw3IEBAIGRlZiByZWdpc3Rlcl9nbG9iYWxfdHlwZWNhc3RlcnMoKToKIAogCiBkZWYgcmVn aXN0ZXJfc3RyaW5nX3R5cGVjYXN0ZXJzKGNvbm5lY3Rpb24pOgotICAgIGlmIGNvbm5lY3Rpb24u ZW5jb2RpbmcgIT0gJ1VURjgnOgorICAgIGlmIGNvbm5lY3Rpb24uZW5jb2Rpbmcgbm90IGluICgn VVRGOCcsICdTUUxBU0NJSScsICdTUUxfQVNDSUknKToKICAgICAgICAgIyBJbiBweXRob24zIHdo ZW4gZGF0YWJhc2UgZW5jb2RpbmcgaXMgb3RoZXIgdGhhbiB1dGYtOCBhbmQgY2xpZW50CiAgICAg ICAgICMgZW5jb2RpbmcgaXMgc2V0IHRvIFVOSUNPREUgdGhlbiB3ZSBuZWVkIHRvIG1hcCBkYXRh IGZyb20gZGF0YWJhc2UKICAgICAgICAgIyBlbmNvZGluZyB0byB1dGYtOC4KZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkgYi93ZWIvcmVn cmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CmluZGV4IDNlNTE3YjYuLjQ2 NGEwOWUgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3Rf dXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGls cy5weQpAQCAtMTE2LDcgKzExNiw3IEBAIGRlZiBjbGVhcl9ub2RlX2luZm9fZGljdCgpOgogICAg ICAgICBkZWwgbm9kZV9pbmZvX2RpY3Rbbm9kZV1bOl0KIAogCi1kZWYgY3JlYXRlX2RhdGFiYXNl KHNlcnZlciwgZGJfbmFtZSk6CitkZWYgY3JlYXRlX2RhdGFiYXNlKHNlcnZlciwgZGJfbmFtZSwg ZW5jb2Rpbmc9Tm9uZSk6CiAgICAgIiIiVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBkYXRh YmFzZSBhbmQgcmV0dXJucyB0aGUgZGF0YWJhc2UgaWQiIiIKICAgICB0cnk6CiAgICAgICAgIGNv bm5lY3Rpb24gPSBnZXRfZGJfY29ubmVjdGlvbigKQEAgLTEzMCw4ICsxMzAsMTQgQEAgZGVmIGNy ZWF0ZV9kYXRhYmFzZShzZXJ2ZXIsIGRiX25hbWUpOgogICAgICAgICBvbGRfaXNvbGF0aW9uX2xl dmVsID0gY29ubmVjdGlvbi5pc29sYXRpb25fbGV2ZWwKICAgICAgICAgY29ubmVjdGlvbi5zZXRf aXNvbGF0aW9uX2xldmVsKDApCiAgICAgICAgIHBnX2N1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29y KCkKLSAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoCi0gICAgICAgICAgICAnJydDUkVBVEUgREFU QUJBU0UgIiVzIiBURU1QTEFURSB0ZW1wbGF0ZTAnJycgJSBkYl9uYW1lKQorICAgICAgICBpZiBl bmNvZGluZyBpcyBOb25lOgorICAgICAgICAgICAgcGdfY3Vyc29yLmV4ZWN1dGUoCisgICAgICAg ICAgICAgICAgJycnQ1JFQVRFIERBVEFCQVNFICIlcyIgVEVNUExBVEUgdGVtcGxhdGUwJycnICUg ZGJfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKAor ICAgICAgICAgICAgICAgICcnJ0NSRUFURSBEQVRBQkFTRSAiJXMiIFRFTVBMQVRFIHRlbXBsYXRl MAorICAgICAgICAgICAgICAgIEVOQ09ESU5HPSclcycgTENfQ09MTEFURT0nJXMnIExDX0NUWVBF PSclcycgJycnICUKKyAgICAgICAgICAgICAgICAoZGJfbmFtZSwgZW5jb2RpbmdbMF0sIGVuY29k aW5nWzFdLCBlbmNvZGluZ1sxXSkpCiAgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9s ZXZlbChvbGRfaXNvbGF0aW9uX2xldmVsKQogICAgICAgICBjb25uZWN0aW9uLmNvbW1pdCgpCiAK --0000000000002c782a056dcded75--