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 1fQQkd-0008Ht-7I for pgadmin-hackers@arkaria.postgresql.org; Wed, 06 Jun 2018 05:12:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fQQkb-0002GI-MO for pgadmin-hackers@arkaria.postgresql.org; Wed, 06 Jun 2018 05:12:49 +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 1fQQkb-0002G8-9z for pgadmin-hackers@lists.postgresql.org; Wed, 06 Jun 2018 05:12:49 +0000 Received: from mail-oi0-x241.google.com ([2607:f8b0:4003:c06::241]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fQQkT-00054H-VJ for pgadmin-hackers@postgresql.org; Wed, 06 Jun 2018 05:12:48 +0000 Received: by mail-oi0-x241.google.com with SMTP id i205-v6so4286209oib.1 for ; Tue, 05 Jun 2018 22:12:41 -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=OQKlVFUw4ZEnnkdU56y6dGo1efUgAkBWmiMjivDRgHw=; b=kWsKFZRPhyNhyPJdqIYPihb2caRPSC+5ReBWTc1HHb+zqe43kiJmy2H0zJl4wFDtec wAryxDowS/GuGREEF14/Sli7//A/uXPY67cbZjJ9tSZSIaDgboD0GkRHYbAXd/hbPLiH bKRraNL2dHprtY2wCsxt9cBruZLDWK2Tjeq65KFA5+rx6YmjugJdZYqVdrNNBn2dnC7Q PBGqUQ/0x6YTKuizyUAfS52XLc1kg7Em3H0g1SHTyesHy1wHTbizUHuURtUdihzjjkbz dIwaRjxJwhGEdoXiJHL2Jk9BhlSmWp2KcqrP0obc41s2EAH5JOwjDmfjTHNATtPNxCUB hzpg== 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=OQKlVFUw4ZEnnkdU56y6dGo1efUgAkBWmiMjivDRgHw=; b=lO0yLJE2iPCgQBxPiAdFTdfiN/NUL1Yn5xMbcZTAm1FO6dp8/vT9LQPrcShX4e9gGs BLjShJLJvVNZ2AqsdHQtA/Nb8Zk1vGmSP8srKIdfsAKwJw0hbBREUtbGnYNmulglr4Nn 3+Kcp+G8q+wD8jo7GcLd99+FrEjVjmnXmYzVVyGM1uFDVD5O6GwL4p+EGHnauQDK0ev+ no5Lb22SfM8Mdi5qcaolAFVEy3Slb3wGjnPufEMmUwOnXY2tw+MVoNAdbEGtFpobC6A3 OZkPVXBZZSAZSf26eoMleG0i8I8e2dMBQh3CJl+Pav+oNpB2HlqX2Om1Gcg5H0TMyAed yTng== X-Gm-Message-State: APt69E3JrEFrksCSuSNmVTnkMyCfoPyYMZruXw98H6ke/2RaHH8xNFa9 IM1eu+JRDjZCQL2XFfk45om3Xd31NEpXBNmsV+FRHw== X-Google-Smtp-Source: ADUXVKJE7ic/1IUtEqHlNDLWXU6fe6IsTjWGNjWWWgKiHZjgs3dGpj4gajeaLctW3WP7otnyKihTe66Wrr3mekwbd28= X-Received: by 2002:aca:a97:: with SMTP id k23-v6mr903147oiy.83.1528261959781; Tue, 05 Jun 2018 22:12:39 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Tue, 5 Jun 2018 22:12:38 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Wed, 6 Jun 2018 10:42:38 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Victoria Henry Cc: Dave Page , Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000003ccd2e056df237b5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000003ccd2e056df237b5 Content-Type: multipart/alternative; boundary="0000000000003ccd2a056df237b3" --0000000000003ccd2a056df237b3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Dave, As per our discussion I have added the code to clean up the generated files= . Please find the attached updated patch. Thanks, Khushboo On Wed, Jun 6, 2018 at 9:37 AM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi Victoria, > > As per the logs, Restore job is failing only for GPDB. As I don't have > setup for the greenplum database, can you please check this functionality > works well in pgAdmin4 with GPDB? > > Thanks, > Khushboo > > On Wed, Jun 6, 2018 at 5:13 AM, Victoria Henry wrote: > >> Hi Khushboo >> >> The tests are still failing and seems flaky: >> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >> /pgadmin-patch/jobs/run-tests/builds/113 >> >> Sincerely, >> >> Victoria >> >> On Tue, Jun 5, 2018 at 4:50 AM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> >>> >>> On Tue, Jun 5, 2018 at 2:09 PM, Dave Page wrote: >>> >>>> >>>> >>>> On Tue, Jun 5, 2018 at 9:37 AM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> >>>>> >>>>> On Tue, Jun 5, 2018 at 1:36 PM, Dave Page wrote: >>>>> >>>>>> Hi >>>>>> >>>>>> On Tue, Jun 5, 2018 at 4:39 AM, Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida Pereira < >>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>> >>>>>>>> Hi Khushboo, >>>>>>>> >>>>>>>> Some tests are failing in greenplum: >>>>>>>> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >>>>>>>> /pgadmin-patch/jobs/run-tests/builds/108 >>>>>>>> The piece of code responsible for the error is: >>>>>>>> >>>>>>>> if server['default_binary_paths'] is not None: >>>>>>>> test_utils.set_preference(server['default_binary_paths']) >>>>>>>> >>>>>>>> config.DEFAULT_BINARY_PATHS =3D { >>>>>>>> "pg": str(server['default_binary_paths']['pg']), >>>>>>>> "ppas": str(server['default_binary_paths']['ppas']), >>>>>>>> "gpdb": "" >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> Can you send me the test_config.json file? The above code sets th= e >>>>>>> paths to the SQLite database and through the logs couldn't figure o= ut the >>>>>>> exact failure. >>>>>>> >>>>>> >>>>>> It seems clear from the code shown that it's not setting the binary >>>>>> paths for gpdb database servers. Shouldn't it be something like: >>>>>> >>>>>> config.DEFAULT_BINARY_PATHS =3D { >>>>>> "pg": str(server['default_binary_paths']['pg']), >>>>>> "ppas": str(server['default_binary_paths']['ppas']), >>>>>> "gpdb": str(server['default_binary_paths']['gpdb']) >>>>>> } >>>>>> >>>>>> Without this code, the test cases should work as I already set path= s >>>>> through below code. >>>>> >>>>> test_utils.set_preference(server['default_binary_paths']) >>>>> >>>>> >>>> In that case, why is the code above required at all? >>>> >>>> My bad. Removed this code and also updated set_preference function for >>> greenplum database. >>> Please find the attached updated patch. >>> >>>> >>>> >>>>> >>>>>> >>>>>>> test_backup_utils.py file name is misleading, these are not tests, >>>>>>>> are helpers. >>>>>>>> =E2=80=8B >>>>>>>> >>>>>>>> >>>>>>>> Thanks >>>>>>>> Victoria & Joao >>>>>>>> >>>>>>>> On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vashi < >>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Sat, Jun 2, 2018 at 3:01 AM, Dave Page >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi >>>>>>>>>> >>>>>>>>>> This looks good, except that it's leaving the >>>>>>>>>> test_restore_database behind. Can we clean that up please? >>>>>>>>>> >>>>>>>>>> PFA updated patch. >>>>>>>>> >>>>>>>>>> Thanks. >>>>>>>>>> >>>>>>>>>> On Fri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi < >>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Victoria, >>>>>>>>>>> >>>>>>>>>>> Thanks for reviewing the patch. >>>>>>>>>>> The tests were failing due to the latest commit >>>>>>>>>>> #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f - Ensure >>>>>>>>>>> backup/restore/maintenance work via SSH tunnels. Fixes #3355 >>>>>>>>>>> >>>>>>>>>>> I have fixed the issues and attached the updated patch. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Khushboo >>>>>>>>>>> >>>>>>>>>>> On Thu, May 31, 2018 at 10:00 PM, Victoria Henry < >>>>>>>>>>> vhenry@pivotal.io> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi there, >>>>>>>>>>>> >>>>>>>>>>>> We've been noticing some issues with the tests on both our CI >>>>>>>>>>>> and local Mac workstations. >>>>>>>>>>>> >>>>>>>>>>>> 1. When the following code blocks are invoked - we get >>>>>>>>>>>> plenty of app.context() issues. It must not be valid when >>>>>>>>>>>> running tests. >>>>>>>>>>>> >>>>>>>>>>>> =E2=80=8B >>>>>>>>>>>> >>>>>>>>>>>> from pgadmin.utils.driver import get_driver >>>>>>>>>>>> driver =3D get_driver(PG_DEFAULT_DRIVER) >>>>>>>>>>>> manager =3D driver.connection_manager(self.sid) >>>>>>>>>>>> >>>>>>>>>>>> host =3D manager.local_bind_host if manager.use_ssh_tunnel els= e s.host >>>>>>>>>>>> port =3D manager.local_bind_port if manager.use_ssh_tunnel els= e s.port >>>>>>>>>>>> >>>>>>>>>>>> 2. When we finally enable >>>>>>>>>>>> >>>>>>>>>>>> "default_binary_paths": { >>>>>>>>>>>> >>>>>>>>>>>> in our test_config, we get more failing tests that look like: >>>>>>>>>>>> >>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>> FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create= _job_unit_test.RestoreCreateJobTest) >>>>>>>>>>>> When restore object with option - Miscellaneous >>>>>>>>>>>> --------------------------------------------------------------= -------- >>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/uni= ttest/mock.py", line 1179, in patched >>>>>>>>>>>> return func(*args, **keywargs) >>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/re= store/tests/test_restore_create_job_unit_test.py", line 295, in runTest >>>>>>>>>>>> self.assertEquals(response.status_code, 200) >>>>>>>>>>>> AssertionError: 410 !=3D 200 >>>>>>>>>>>> >>>>>>>>>>>> And >>>>>>>>>>>> >>>>>>>>>>>> When restore object with the sections options ... 2018-05-31 1= 2:24:42,988: ERROR pgadmin: illegal environment variable name >>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/re= store/__init__.py", line 352, in create_restore_job >>>>>>>>>>>> manager.export_password_env(p.id) >>>>>>>>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/dr= iver/psycopg2/server_manager.py", line 365, in export_password_env >>>>>>>>>>>> os.environ[str(env)] =3D password >>>>>>>>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.= py", line 675, in __setitem__ >>>>>>>>>>>> self.putenv(key, value) >>>>>>>>>>>> ValueError: illegal environment variable name >>>>>>>>>>>> FAIL >>>>>>>>>>>> >>>>>>>>>>>> =E2=80=8B >>>>>>>>>>>> >>>>>>>>>>>> Sincerely, >>>>>>>>>>>> >>>>>>>>>>>> Victoria && Anthony >>>>>>>>>>>> >>>>>>>>>>>> On Thu, May 31, 2018 at 1:16 AM Khushboo Vashi < >>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> Please find the attached updated patch with the fixes. >>>>>>>>>>>>> The test cases were only failing on MAC not on Linux. >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Khushboo >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi < >>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, May 30, 2018 at 1:05 AM, Dave Page >>>>>>>>>>>>> > wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi < >>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> please find the attached updated patch for the test cases >>>>>>>>>>>>>>>> of Backup, Restore and Maintenance modules which includes: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 1. Unit test cases >>>>>>>>>>>>>>>> 2. End to end regression test cases >>>>>>>>>>>>>>>> 3. Feature test cases >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks. I've yet to be able to run the feature tests >>>>>>>>>>>>>>> successfully. Here's what I've found so far: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1) DEFAULT_BINARY_PATHS should be default_binary_paths in >>>>>>>>>>>>>>> the JSON config file. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Will do. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2) I've hit screensize related issues: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>>>>>>>> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Test for PG maintenance: database >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -----------------------------------------------------------= - >>>>>>>>>>>>>>> ---------- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py", >>>>>>>>>>>>>>> line 56, in runTest >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> self._open_maintenance_dialogue() >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py", >>>>>>>>>>>>>>> line 75, in _open_maintenance_dialogue >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> "*[.=3D'" + self.table_name + >>>>>>>>>>>>>>> "']/../*[@class=3D'aciTreeItem'" >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote= /webelement.py", >>>>>>>>>>>>>>> line 80, in click >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> self._execute(Command.CLICK_ELEMENT) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote= /webelement.py", >>>>>>>>>>>>>>> line 628, in _execute >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> return self._parent.execute(command, params) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote= /webdriver.py", >>>>>>>>>>>>>>> line 312, in execute >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> self.error_handler.check_response(response) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote= /errorhandler.py", >>>>>>>>>>>>>>> line 242, in check_response >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> raise exception_class(message, screen, stacktrace) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> WebDriverException: Message: unknown error: Element >>>>>>>>>>>>>> class=3D"aciTreeItem">... is not clickable at point = (223, 604). Other >>>>>>>>>>>>>>> element would receive the click:
>>>>>>>>>>>>>> wcPanelBackground wcScrollableX wcScrollableY" style=3D"lef= t: 0px; right: >>>>>>>>>>>>>>> 0px; bottom: 0px;">...
>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> (Session info: chrome=3D66.0.3359.181) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> (Driver info: chromedriver=3D2.38.552518 >>>>>>>>>>>>>>> (183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac O= S >>>>>>>>>>>>>>> X 10.12.6 x86_64) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 3) One time the test did start, but then I saw this failure= : >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>>>>>>>> ities_backup_restore_test.PGUtilitiesBackupFeatureTest) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Test for PG utilities - Backup and Restore >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -----------------------------------------------------------= - >>>>>>>>>>>>>>> ---------- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /pgadmin/feature_tests/pg_utilities_backup_restore_test.py"= , >>>>>>>>>>>>>>> line 93, in runTest >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> self.page.fill_input_by_field_name("file", >>>>>>>>>>>>>>> "test_backup_file") >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 211, in >>>>>>>>>>>>>>> fill_input_by_field_name >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> self.wait_for_input_field_content(field_name, >>>>>>>>>>>>>>> field_content) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 251, in >>>>>>>>>>>>>>> wait_for_input_field_content >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> "field to contain '" + str(content) + "'", >>>>>>>>>>>>>>> input_field_has_content >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 337, in >>>>>>>>>>>>>>> _wait_for >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> "Timed out waiting for " + waiting_for_message >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/suppor= t/wait.py", >>>>>>>>>>>>>>> line 80, in until >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> raise TimeoutException(message, screen, stacktrace) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> TimeoutException: Message: Timed out waiting for field to >>>>>>>>>>>>>>> contain 'test_backup_file' >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> (with screenshot attached) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I have ran the feature tests with multiple servers many >>>>>>>>>>>>>> times but didn't get a single failure. >>>>>>>>>>>>>> I have asked Akshay to run on his machine, let see what he >>>>>>>>>>>>>> gets. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira < >>>>>>>>>>>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Khushboo, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> We reviewed the patch and it is very nice to see some mor= e >>>>>>>>>>>>>>>>> coverage in this area. Good job :D >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> We passed the tests through our CI the feature tests are >>>>>>>>>>>>>>>>> not passing, but the linter fails: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:37: [= E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [= E501] line too long (104 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [= E501] line too long (85 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [= E501] line too long (96 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [= E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [= E501] line too long (118 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:37: [= E121] continuation line under-indented for hanging indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:48: [= E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [= E251] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [= E251] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:51: [= E501] line too long (91 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:52: [= E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:53: [= E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:81: [= E501] line too long (113 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:82: [= E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:83: [= E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:111: = [E501] line too long (100 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:113: = [E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:114: = [E501] line too long (108 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:147: = [E501] line too long (93 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E= 121] continuation line under-indented for hanging indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E= 122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:135: [= E501] line too long (80 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:137: [= E501] line too long (83 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:138: [= E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:139: [= E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:140: [= E122] continuation line missing indentation or outdented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:191: [= E501] line too long (81 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:203: [= E501] line too long (80 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [= E128] continuation line under-indented for visual indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [= E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [= E128] continuation line under-indented for visual indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [= E501] line too long (94 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:216: [= W391] blank line at end of file >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:29= 6: [E501] line too long (97 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:31= 7: [E303] too many blank lines (2) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:33= 6: [E501] line too long (84 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:37= 1: [W391] blank line at end of file >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2 E121 continuation line under-indented for hanging= indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 5 E122 continuation line missing indentation or out= dented >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2 E128 continuation line under-indented for visual = indent >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2 E251 unexpected spaces around keyword / parameter= equals >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 1 E303 too many blank lines (2) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 24 E501 line too long (91 > 79 characters) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2 W391 blank line at end of file >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 38 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> For the feature tests, we realized we had to update the >>>>>>>>>>>>>>>>> configuration, and we did that, but we get the following = error attached. We >>>>>>>>>>>>>>>>> spent some time trying to understand the problem but we w= ere not successful. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Codewise: >>>>>>>>>>>>>>>>> - We just found some One Letter Variables in the code... >>>>>>>>>>>>>>>>> - Looks like there is a bug report in this area of the >>>>>>>>>>>>>>>>> code and we do not have coverage for it: >>>>>>>>>>>>>>>>> https://redmine.postgresql.org/issues/3232 >>>>>>>>>>>>>>>>> Looks like in some of the unit tests we only have happy >>>>>>>>>>>>>>>>> path tests, maybe we should see if there are any sad path= s that also need >>>>>>>>>>>>>>>>> coverage. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The configuration change, maybe need to be updated. When >>>>>>>>>>>>>>>>> we install multiple versions of postgres the binaries liv= e in >>>>>>>>>>>>>>>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes us >>>>>>>>>>>>>>>>> think that this configuration should live near the server= configuration, >>>>>>>>>>>>>>>>> maybe? Also to maintain coherency on the naming maybe we = should make it all >>>>>>>>>>>>>>>>> lower case. >>>>>>>>>>>>>>>>> Just as an aside, you can add the gpdb configuration as >>>>>>>>>>>>>>>>> well in you patch. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>>> Victoria & Joao >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < >>>>>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Please find the attached patch which covers test cases >>>>>>>>>>>>>>>>>> for the backup module (RM #3206). >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 1. Unit test cases >>>>>>>>>>>>>>>>>> 2. End to end regression test cases >>>>>>>>>>>>>>>>>> 3. Feature test cases >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> > --0000000000003ccd2a056df237b3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

As per our discussion I have a= dded the code to clean up the generated files.
Please find the at= tached updated patch.

Thanks,
Khushboo

On Wed,= Jun 6, 2018 at 9:37 AM, Khushboo Vashi <khushboo.vashi@ente= rprisedb.com> wrote:
Hi Victoria,

As per the logs, Restore job is = failing only for GPDB. As I don't have setup for the greenplum database= , can you please check this functionality works well in pgAdmin4 with GPDB?=

Thanks,
Khushboo

On Wed, Jun 6, 2018 at 5:13 AM, Victoria Henry <vhenry@= pivotal.io> wrote:
Hi Khushboo

The tests are still failing a= nd seems flaky:

Sincerely,

Victoria

On Tue, Jun 5, 2018 at 4:50 AM Khushboo= Vashi <khushboo.vashi@enterprisedb.com> wrote:


<= div class=3D"gmail_quote">On Tue, Jun 5, 2018 at 2:09 PM, Dave Page <dpage= @pgadmin.org> wrote:


On Tue, Jun 5, 2018 at 9:37 AM, Khushboo Vashi <khushboo= .vashi@enterprisedb.com> wrote:


On Tue, Jun 5, 2018 at 1:36 PM, Dave Page <dpage@pgadm= in.org> wrote:
Hi

On Tue, Jun 5, 2018 at 4:39 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:


On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeid= a Pereira <jdealmeidapereira@pivotal.io> wrote:
Hi Khushboo,
<= br>
Some tests are failing in greenplum:
The piece of code responsible for the error is= :
if server['default_binary_paths'] is not None:
test_utils.set_preference(server['default_binary_paths'])
config.DEFAULT_BINARY_PATHS =3D {
"pg": str(server['default_bi= nary_paths']['pg&= #39;]),
"ppas": str(server['default_binary_paths']['ppas']),
&quo= t;gpdb": ""
=
}

Can you send me the test_config.json file?=C2= =A0 The above code sets the paths to the SQLite database and through the lo= gs couldn't figure out the exact failure.=C2=A0
=

It seems clear from the code shown = that it's not setting the binary paths for gpdb database servers. Shoul= dn't it be something like:

    config.DEFAULT_BINAR=
Y_PATHS =3D {
"pg&quo= t;: str(server['default_binary_paths'][= 'pg']),
= "ppas": = str(server['default_binary_paths']['ppas']),
= "gpdb": st= r(server['default_binary_paths']['gpdb'])
}
Witho= ut this code, the test cases should work as I already set=C2=A0 paths throu= gh below code.
    test_utils.set_preference(server['default_binary_paths'])
<= /div>

In that case, why is the code above required at all?

My b= ad. Removed this code and also updated set_preference function for greenplu= m database.
Please find the attached updated patch.
=C2=A0
=
=C2=A0

test_backup_utils.py file name is misleading, these are not tests, are helpers.

=E2=80=8B
=


Thanks
Victoria &a= mp; Joao

On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vash= i <= khushboo.vashi@enterprisedb.com> wrote:


On Sat, Jun 2, 2018 at 3:01 AM, Dave Page <dpage@pgad= min.org> wrote:
Hi

This looks good, except that it's leaving t= he test_restore_database behind. Can we clean that up please?
PFA updated patch.=C2=A0
Thanks.

<= div class=3D"gmail_quote">On Fri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Victoria,

Thanks for reviewing the patch.
The tests were failing due = to the latest commit #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f=C2=A0 -= Ensure backup/restore/maintenance work via SSH tunnels. Fixes #3355
<= div>
I have fixed the issues and attached the updated patch.<= /div>

Thanks,
Khushboo=C2=A0

On Th= u, May 31, 2018 at 10:00 PM, Victoria Henry <vhenry@pivotal.io> wrote:
Hi there,
We've been noticing some issues with the tests on bot= h our CI and local Mac workstations.
  1. When the following code blocks are invoked -= we get plenty of app.context() issues. It must not= be valid when running tests.
=E2=80=8B
=
from pgadmin.utils.driver import get_driver
driver =3D get_driver(PG_DEFAULT_DR= IVER)
manager =3D driver.connection_manager(self.sid)

host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.host
port =3D manager.local= _bind_port if manager.use_ssh_= tunnel else s.port=C2=A0
=
2. When we finally enable=C2=A0
"default_binary_=
paths": {
in our test_config, we get more failing tests that look like:
=
=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_uni= t_test.RestoreCreateJobTest) When restore object with option - Miscellaneous -----------------------------------------------------------------= ----- Traceback (most recent call last): File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/unitte= st/mock.py", line 1179, in patched return func(*args, **keywargs) File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto= re/tests/test_restore_create_job_unit_test.py", line 295, in= runTest self.assertEquals(response.status_code, 200) AssertionError: 410 !=3D 200

And

When restore object =
with the sections options ... 2018-05-31 12:24:42,988: ERROR    pgadmin:   =
 illegal environment variable name
Traceback (most recent call last):
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto=
re/__init__.py", line 352, in create_restore_job
    manager.export_password_env(p=
.id)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/drive=
r/psycopg2/server_manager.py", line 365, in export_password_env
    os.environ[str(env)] =3D password
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.py&=
quot;, line 675, in __setitem__
    self.putenv(key, value)
ValueError: illegal environment variable name
FAIL
=E2=80=8B
=

Sincerely,

Vi= ctoria && Anthony

On Th= u, May 31, 2018 at 1:16 AM Khushboo Vashi <khushboo.vashi@enterprisedb.co= m> wrote:
H= i,

Please find the attached updated patch with the fixes= .
The test cases were only failing on MAC not on Linux.

Thanks,
Khushboo

On Wed, May 30, 2018 at 10:13 AM, Khus= hboo Vashi <khushboo.vashi@enterprisedb.com> wrote:


On Wed, May 30, 2018= at 1:05 AM, Dave Page <dpage@pgadmin.org> wrote:
Hi
<= br>
On Mon, May 28, 2018 at 8:09 AM, Khushb= oo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,
=
please find the attached updated patch for the test ca= ses of Backup, Restore and Maintenance modules which includes:
<= div>
1. Unit test cases
2. End to end regression test ca= ses=C2=A0
3. Feature test cases

Thanks. I've yet to be able to run the featur= e tests successfully. Here's what I've found so far:

=
1) DEFAULT_BINARY_PATHS should be default_binary_paths in the JS= ON config file.

<= div>Will do.=C2=A0
2) I'v= e hit screensize related issues:

=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest = (pgadmin.feature_tests.pg_utilities_maintenance_test.PGUtilitiesM= aintenanceFeatureTest)

Test for PG mai= ntenance: database

---------------= -------------------------------------------------------

Traceback (most= recent call last):

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_ma= intenance_test.py", line 56, in runTest

=C2=A0 =C2=A0 self._= open_maintenance_dialogue()

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_ma= intenance_test.py", line 75, in _open_maintenance_dialogue

=C2=A0 =C2=A0 "= *[.=3D'" + self.table_name + "']/../*[@class=3D'aciTr= eeItem'"

=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/remote/webelement.py", line 80, in click

=C2=A0 =C2=A0 self._= execute(Command.CLICK_ELEMENT)

=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/remote/webelement.py", line 628, in _execute

=C2=A0 =C2=A0 return= self._parent.execute(command, params)

=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/remote/webdriver.py", line 312, in execute<= /p>

=C2=A0 =C2=A0 self.e= rror_handler.check_response(response)

=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/remote/errorhandler.py", line 242, in check_respon= se

=C2=A0 =C2=A0 raise = exception_class(message, screen, stacktrace)

WebDriverExcept= ion: Message: unknown error: Element <span class=3D"aciTreeItem&quo= t;>...</span> is not clickable at point (223, 604). Other element = would receive the click: <div class=3D"wcFrameCenter wcPanelBackgro= und wcScrollableX wcScrollableY" style=3D"left: 0px; right: 0px; = bottom: 0px;">...</div>

=C2=A0 (Session info= : chrome=3D66.0.3359.181)

=C2=A0 (Driver info:= chromedriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011)= ,platform=3DMac OS X 10.12.6 x86_64)


3) One time the test did start, but then I saw this failure:=

=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest = (pgadmin.feature_tests.pg_utilities_backup_restore_test.PGUtiliti= esBackupFeatureTest)

Test for PG uti= lities - Backup and Restore

---------------= -------------------------------------------------------

Traceback (most= recent call last):

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_ba= ckup_restore_test.py", line 93, in runTest

=C2=A0 =C2=A0 self.p= age.fill_input_by_field_name("file", "test_backup_file&= quot;)

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page= .py", line 211, in fill_input_by_field_name

=C2=A0 =C2=A0 self.w= ait_for_input_field_content(field_name, field_content)

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page= .py", line 251, in wait_for_input_field_content

=C2=A0 =C2=A0 "= field to contain '" + str(content) + "'", input_fiel= d_has_content

=C2=A0 File "/U= sers/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page= .py", line 337, in _wait_for

=C2=A0 =C2=A0 "= Timed out waiting for " + waiting_for_message

=C2=A0 File "/U= sers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sele= nium/webdriver/support/wait.py", line 80, in until

=C2=A0 =C2=A0 raise = TimeoutException(message, screen, stacktrace)

TimeoutExceptio= n: Message: Timed out waiting for field to contain 'test_backup_file= 9;



(with screenshot attached)

Thanks.<= /div>

I have ran the feature tests with multiple servers= many times but didn't get a single failure.
I have asked Aks= hay to run on his machine, let see what he gets.


=C2= =A0

Thanks,
Khushboo




On Wed= , Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira <jdealmeidap= ereira@pivotal.io> wrote:
<= div dir=3D"ltr">Hi Khushboo,

We reviewed the patch and i= t is very nice to see some more coverage in this area. Good job :D

We passed the tests through our CI the feature tests are n= ot passing, but the linter fails:
./pgadmin/feature_tests/pg_utilities_backup= _test.py:37: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E5= 01] line too long (104 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E5= 01] line too long (85 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E5= 01] line too long (96 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E5= 01] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E5= 01] line too long (118 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:37: [E1= 21] continuation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_backup_message.py:48: [E1= 22] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_backup_message.py:49: [E2= 51] unexpected spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_message.py:49: [E2= 51] unexpected spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_message.py:51: [E5= 01] line too long (91 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:52: [E5= 01] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:53: [E5= 01] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:81: [E5= 01] line too long (113 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:82: [E5= 01] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:83: [E5= 01] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:111: [E= 501] line too long (100 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:113: [E= 501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:114: [E= 501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:147: [E= 501] line too long (93 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:40: [E12= 1] continuation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_batch_process.py:51: [E12= 2] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:135: [E5= 01] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:137: [E5= 01] line too long (83 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:138: [E1= 22] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:139: [E1= 22] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:140: [E1= 22] continuation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:191: [E5= 01] line too long (81 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:203: [E5= 01] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:204: [E1= 28] continuation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_process.py:204: [E5= 01] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:205: [E1= 28] continuation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_process.py:205: [E5= 01] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:216: [W3= 91] blank line at end of file
./pgadmin/tools/backup/tests/test_create_backup_job.py:296:= [E501] line too long (97 > 79 characters)
./pgadmin/tools/backup/tests/test_create_backup_job.py:317:= [E303] too many blank lines (2)
./pgadmin/tools/backup/tests/test_create_backup_job.py:336:= [E501] line too long (84 > 79 characters)
./pgadmin/tools/backup/tests/test_create_backup_job.py:371:= [W391] blank line at end of file
2 E121 continuation line under-indented for hanging indent=
5 E122 continuation line missing indentation or outdented<= /span>
2 E128 continuation line under-indented for visual indent<= /span>
2 E251 unexpected spaces around keyword / parameter equals=
1 E303 too many blank lines (2)
24 E501 line too long (91 > 79 characters)
2 W391 blank line at end of file
38

For the feat= ure tests, we realized we had to update the configuration, and we did that,= but we get the following error attached. We spent some time trying to unde= rstand the problem but we were not successful.

Codewise:
- We just found some One Letter Variables i= n the code...
- Looks like there is a bug report in this area of = the code and we do not have coverage for it:=C2=A0https://redmine.postgresql<= wbr>.org/issues/3232
=C2=A0 Looks like in some of the unit te= sts we only have happy path tests, maybe we should see if there are any sad= paths that also need coverage.

The configuration = change, maybe need to be updated. When we install multiple versions of post= gres the binaries live in `/usr/lib/postgresql/{{db_version}}/bin`, wh= ich makes us think that this configuration should live near the server conf= iguration, maybe? Also to maintain coherency on the naming maybe we should = make it all lower case.
Just as an aside, you can add the gpdb co= nfiguration as well in you patch.

Thanks
Victoria & Joao

On Wed, Apr = 25, 2018 at 5:20 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com&g= t; wrote:
Hi,
=
Please find the attached patch which covers test cases for t= he backup module (RM #3206).

1. Unit test cases
2. End to end regression test cases=C2=A0
3. Feature test= cases

Thanks,
Khushboo

=
<= /div>


--0000000000003ccd2a056df237b3-- --0000000000003ccd2e056df237b5 Content-Type: application/octet-stream; name="RM_3206_ver5.patch" Content-Disposition: attachment; filename="RM_3206_ver5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ji2nlw6w0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX2JhY2t1 cF9yZXN0b3JlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGll c19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjY1YjU3MDgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTUxIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgdGltZQoraW1wb3J0IG9zCisKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKK2Zyb20gc2VsZW5pdW0ud2Vi ZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gcmVn cmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJhc2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVy ZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGls cworCitpbXBvcnQgY29uZmlnCisKKworY2xhc3MgUEdVdGlsaXRpZXNCYWNrdXBGZWF0dXJlVGVz dChCYXNlRmVhdHVyZVRlc3QpOgorICAgICIiIiBUaGlzIGNsYXNzIHRlc3QgUEcgdXRpbGl0aWVz IC0gQmFja3VwIGFuZCBSZXN0b3JlIHRlc3Qgc2NlbmFyaW9zICIiIgorCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoIlRlc3QgZm9yIFBHIHV0aWxpdGllcyAtIEJhY2t1cCBhbmQgUmVzdG9y ZSIsIGRpY3QoKSkKKyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBpZiBz ZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAg c2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMg bm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg ICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAg ICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0 ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgInBnX3V0aWxpdHlfdGVzdF9kYiIp CisKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsICJwZ191 dGlsaXR5X3Rlc3RfZGIiKQorICAgICAgICBzZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxmLnNlcnZl cikKKworICAgICAgICBzZWxmLndhaXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIs IDIwKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS50b2dnbGVf b3Blbl9zZXJ2ZXIoc2VsZi5zZXJ2ZXJbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2ds ZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9v cGVuX3RyZWVfaXRlbSgncGdfdXRpbGl0eV90ZXN0X2RiJykKKyAgICAgICAgc2VsZi5kcml2ZXIu ZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIkJhY2t1cC4uLiIpLmNsaWNrKCkKKwor ICAgICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRILAorICAgICAgICAgICAgICAg ICIvL2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUnKV0iCisgICAgICAgICAgICAp CisgICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGlsKEVDLmVsZW1lbnRfdG9fYmVf Y2xpY2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIi5icm93c2VfZmlsZV9p bnB1dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxk X25hbWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5 X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSAiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJhbmQgY29udGFpbnMoLiwnQmFja3VwJyldIikuY2xpY2so KQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAg ICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVj dG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygp LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInQ2xpY2sgaGVyZSBmb3IgZGV0 YWlscy4nKV0iKS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94 cGF0aCgiLy9wW2NvbnRhaW5zKEBjbGFzcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIidiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorCisgICAgICAgIHNl bGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQpKQorICAgICAgICBz ZWxmLmFzc2VydEluKCJmcm9tIGRhdGFiYXNlICdwZ191dGlsaXR5X3Rlc3RfZGInIiwgc3RyKGNv bW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ0ZXN0X2JhY2t1cCIsIHN0cihjb21tYW5k KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicGdfZHVtcCIsIHN0cihjb21tYW5kKSkKKworICAg ICAgICBiYWNrdXBfZmlsZSA9IE5vbmUKKyAgICAgICAgaWYgY29tbWFuZDoKKyAgICAgICAgICAg IGJhY2t1cF9maWxlID0gY29tbWFuZFtpbnQoY29tbWFuZC5maW5kKCctLWZpbGUnKSkgKyA4Ogor ICAgICAgICAgICAgaW50KGNvbW1hbmQuZmluZCgnLS1ob3N0JykpIC0gMl0KKworICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCd3Y0Zsb2F0aW5n Rm9jdXMnKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl0vL2Rpdltjb250YWlu cyhAY2xhc3MsJ2ZhLWNsb3NlJyldIikuY2xpY2soKQorCisgICAgICAgIHNlbGYuZHJpdmVyLmZp bmRfZWxlbWVudF9ieV9saW5rX3RleHQoIlRvb2xzIikuY2xpY2soKQorICAgICAgICBzZWxmLnBh Z2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiUmVzdG9yZS4uLiIpLmNsaWNrKCkKKworICAg ICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAg ICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRILAorICAgICAgICAgICAgICAgICIv L2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUnKV0iCisgICAgICAgICAgICApCisg ICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGlsKEVDLmVsZW1lbnRfdG9fYmVfY2xp Y2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIi5icm93c2VfZmlsZV9pbnB1 dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxkX25h bWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0 aCgiLy9idXR0b25bY29udGFpbnMoQGNsYXNzLCdmYS11cGxvYWQnKSIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiBhbmQgY29udGFpbnMoLiwnUmVzdG9yZScpXSIpLmNsaWNrKCkK KworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVudF90b19kaXNhcHBlYXIoCisgICAg ICAgICAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2Nzc19zZWxlY3Rv cigiLmFqcy1tb2RhbCIpCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMgPSBzZWxmLnBhZ2Uu ZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1zdWNjZXNzJyldIikudGV4dAorCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgIlN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuIikKKyAg ICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vc3Bhbltjb250YWlucyhzdHJpbmcoKSwi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ0NsaWNrIGhlcmUgZm9yIGRldGFp bHMuJyldIikuY2xpY2soKQorICAgICAgICBjb21tYW5kID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBh dGgoIi8vcFtjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiAnYmctZGV0YWlsZWQtZGVzYycpXSIpLnRleHQKKworICAgICAgICBzZWxm LmFzc2VydEluKHNlbGYuc2VydmVyWyduYW1lJ10sIHN0cihjb21tYW5kKSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRJbigidGVzdF9iYWNrdXAiLCBzdHIoY29tbWFuZCkpCisgICAgICAgIHNlbGYuYXNz ZXJ0SW4oInBnX3Jlc3RvcmUiLCBzdHIoY29tbWFuZCkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZp bmRfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywnd2NGbG9hdGluZ0ZvY3VzJyldIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9kaXZbY29udGFpbnMoQGNsYXNzLCdm YS1jbG9zZScpXSIpLmNsaWNrKCkKKworICAgICAgICBpZiBiYWNrdXBfZmlsZSBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGJhY2t1cF9maWxlKToKKyAgICAgICAg ICAgICAgICBvcy5yZW1vdmUoYmFja3VwX2ZpbGUpCisKKyAgICBkZWYgYWZ0ZXIoc2VsZik6Cisg ICAgICAgIHNlbGYucGFnZS5yZW1vdmVfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBjb25u ZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYu c2VydmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAg ICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMu ZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCAicGdfdXRpbGl0eV90ZXN0X2RiIikKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX21haW50ZW5hbmNlX3Rl c3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19tYWludGVuYW5j ZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MDYyNjgKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19t YWludGVuYW5jZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTEyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBfKl8gIGNvZGluZzogdXRmLTggXypfCitpbXBvcnQgdGltZQorZnJvbSBzZWxlbml1 bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVyV2FpdAorZnJvbSBzZWxlbml1 bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIu c3VwcG9ydCBpbXBvcnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBhcyBFQworZnJvbSByZWdyZXNzaW9u LmZlYXR1cmVfdXRpbHMuYmFzZV9mZWF0dXJlX3Rlc3QgaW1wb3J0IEJhc2VGZWF0dXJlVGVzdAor ZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCisKKwor Y2xhc3MgUEdVdGlsaXRpZXNNYWludGVuYW5jZUZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6 CisgICAgIiIiIFRoaXMgY2xhc3MgdGVzdCBQRyB1dGlsaXRpZXMgdGVzdCBzY2VuYXJpb3MgIiIi CisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgiVGVzdCBmb3IgUEcgbWFpbnRlbmFuY2U6 IGRhdGFiYXNlIHBnX21haW50ZW5hbmNlIiwgZGljdCgKKyAgICAgICAgICAgIGRhdGFiYXNlX25h bWU9J3BnX21haW50ZW5hbmNlJywKKyAgICAgICAgICAgIHRhYmxlX25hbWU9J3BnX21haW50ZW5h bmNlX3RhYmxlJywKKyAgICAgICAgICAgIHRlc3RfbGV2ZWw9J2RhdGFiYXNlJworICAgICAgICAp KSwKKyAgICAgICAgKCJUZXN0IGZvciBQRyBtYWludGVuYW5jZTogZGF0YWJhc2UiLCBkaWN0KAor ICAgICAgICAgICAgZGF0YWJhc2VfbmFtZT0ncGdfbWFpbnRlbmFuY2UnLAorICAgICAgICAgICAg dGFibGVfbmFtZT0ncGdfbWFpbnRlbmFuY2VfdGFibGUnLAorICAgICAgICAgICAgdGVzdF9sZXZl bD0ndGFibGUnCisgICAgICAgICkpLAorICAgIF0KKworICAgIGRlZiBiZWZvcmUoc2VsZik6Cisg ICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6Cisg ICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFy eV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAg ICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgKQorICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlv bigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZl clsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICAp CisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlbGYuc2VydmVyLCBzZWxmLmRh dGFiYXNlX25hbWUpCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVy LCBzZWxmLmRhdGFiYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi5wYWdlLmFkZF9zZXJ2ZXIoc2VsZi5zZXJ2ZXIp CisgICAgICAgIHNlbGYud2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMjAp CisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5fb3Blbl9tYWludGVuYW5j ZV9kaWFsb2d1ZSgpCisgICAgICAgICMgdGltZS5zbGVlcAorICAgICAgICBzZWxmLnBhZ2UuZmlu ZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoQGNsYXNzLCdmYS1zYXZlJykgYW5kIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNvbnRhaW5zKC4sJ09LJyldIikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVudF90b19kaXNhcHBlYXIoCisgICAg ICAgICAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2Nzc19zZWxlY3Rv cigiLmFqcy1tb2RhbCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fdmVyaWZ5X2NvbW1hbmQo KQorCisgICAgZGVmIF9vcGVuX21haW50ZW5hbmNlX2RpYWxvZ3VlKHNlbGYpOgorICAgICAgICBz ZWxmLnBhZ2UudG9nZ2xlX29wZW5fc2VydmVyKHNlbGYuc2VydmVyWyduYW1lJ10pCisgICAgICAg IHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ0RhdGFiYXNlcycpCisgICAgICAgIHNl bGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oc2VsZi5kYXRhYmFzZV9uYW1lKQorICAgICAg ICBpZiBzZWxmLnRlc3RfbGV2ZWwgPT0gJ3RhYmxlJzoKKyAgICAgICAgICAgIHNlbGYucGFnZS50 b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ1NjaGVtYXMnKQorICAgICAgICAgICAgc2VsZi5wYWdlLnRv Z2dsZV9vcGVuX3RyZWVfaXRlbSgncHVibGljJykKKyAgICAgICAgICAgIHNlbGYucGFnZS50b2dn bGVfb3Blbl90cmVlX2l0ZW0oJ1RhYmxlcycpCisgICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV94cGF0aCgKKyAgICAgICAgICAgICAgICAiLy8qW0BpZD0ndHJlZSddLy8iCisgICAgICAgICAg ICAgICAgIipbLj0nIiArIHNlbGYudGFibGVfbmFtZSArICInXS8uLi8qW0BjbGFzcz0nYWNpVHJl ZUl0ZW0nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXSIp LmNsaWNrKCkKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgi VG9vbHMiKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3BhcnRpYWxfbGlua190 ZXh0KCJNYWludGVuYW5jZS4uLiIpLmNsaWNrKCkKKyAgICAgICAgdGltZS5zbGVlcCgwLjUpCisK KyAgICBkZWYgX3ZlcmlmeV9jb21tYW5kKHNlbGYpOgorICAgICAgICBzdGF0dXMgPSBzZWxmLnBh Z2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1zdWNjZXNzJyldIikudGV4dAorICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhzdGF0dXMsICJTdWNjZXNzZnVsbHkgY29tcGxldGVkLiIpCisg ICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3NwYW5bY29udGFpbnMoc3RyaW5nKCks IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICdDbGljayBoZXJlIGZvciBkZXRh aWxzLicpXSIpLmNsaWNrKCkKKyAgICAgICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X3hw YXRoKCIvL3BbY29udGFpbnMoQGNsYXNzLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgJ2JnLWRldGFpbGVkLWRlc2MnKV0iKS50ZXh0CisgICAgICAgIGlmIHNl bGYudGVzdF9sZXZlbCA9PSAnZGF0YWJhc2UnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMoY29tbWFuZCwgIlZBQ1VVTSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiKFZFUkJPU0UpXG5SdW5uaW5nIFF1ZXJ5OiIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJcblZBQ1VVTSBWRVJCT1NFOyIpCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21tYW5kLCAiVkFDVVVNICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVkVSQk9TRSlcblJ1bm5pbmcgUXVlcnk6Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuVkFDVVVNIFZFUkJPU0Ui CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHB1YmxpYy4iICsgc2Vs Zi50YWJsZV9uYW1lICsgIjsiKQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIv L2Rpdltjb250YWlucyhAY2xhc3MsJ3djRmxvYXRpbmdGb2N1cycpXS8vIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZGl2W2NvbnRhaW5zKEBjbGFzcywnZmEtY2xvc2UnKV0iKS5j bGljaygpCisKKyAgICBkZWYgYWZ0ZXIoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS5yZW1vdmVf c2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBjb25uZWN0aW9uID0gdGVzdF91dGlscy5nZXRf ZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJf cGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAg ICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUn XQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMuZHJvcF9kYXRhYmFzZShjb25uZWN0aW9u LCBzZWxmLmRhdGFiYXNlX25hbWUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKaW5k ZXggMTI1ZGI4MC4uMDUxMzM2NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQpA QCAtMTA5LDggKzEwOSw3IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAg ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5jbWQgKz0gY21kQXJnKGFyZykK IAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgIGRlZiBnZXRfc2Vy dmVyX2RldGFpbHMoc2VsZik6CiAgICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxp a2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwogICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZp bHRlcl9ieSgKICAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5p ZApAQCAtMTIzLDEzICsxMjIsMTkgQEAgY2xhc3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2Mp OgogICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFuYWdlci51c2Vf c3NoX3R1bm5lbCBlbHNlIHMuaG9zdAogICAgICAgICBwb3J0ID0gbWFuYWdlci5sb2NhbF9iaW5k X3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMucG9ydAogCisgICAgICAgIHJl dHVybiBzLm5hbWUsIGhvc3QsIHBvcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtZXNzYWdl KHNlbGYpOgorICAgICAgICBuYW1lLCBob3N0LCBwb3J0ID0gc2VsZi5nZXRfc2VydmVyX2RldGFp bHMoKQorCiAgICAgICAgIGlmIHNlbGYuYmFja3VwX3R5cGUgPT0gQkFDS1VQLk9CSkVDVDoKICAg ICAgICAgICAgIHJldHVybiBfKAogICAgICAgICAgICAgICAgICJCYWNraW5nIHVwIGFuIG9iamVj dCBvbiB0aGUgc2VydmVyICd7MH0nICIKICAgICAgICAgICAgICAgICAiZnJvbSBkYXRhYmFzZSAn ezF9Jy4uLiIKICAgICAgICAgICAgICkuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAor ICAgICAgICAgICAgICAgICAgICBuYW1lLCBob3N0LCBwb3J0CiAgICAgICAgICAgICAgICAgKSwK ICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlCiAgICAgICAgICAgICApCkBAIC0xMzcsMTMg KzE0MiwxMyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgICAg ICByZXR1cm4gXygiQmFja2luZyB1cCB0aGUgZ2xvYmFsIG9iamVjdHMgb24gIgogICAgICAgICAg ICAgICAgICAgICAgInRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCiAgICAgICAgICAgICAg ICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcy5uYW1lLCBo b3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQKICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgIGVsaWYgc2VsZi5iYWNrdXBfdHlwZSA9 PSBCQUNLVVAuU0VSVkVSOgogICAgICAgICAgICAgcmV0dXJuIF8oIkJhY2tpbmcgdXAgdGhlIHNl cnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIu Zm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAg ICAgICAgICAgICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICkKICAgICAgICAg ICAgICkKICAgICAgICAgZWxzZToKQEAgLTE1MSwxNyArMTU2LDcgQEAgY2xhc3MgQmFja3VwTWVz c2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmV0dXJuICJVbmtub3duIEJhY2t1cCIK IAogICAgIGRlZiBkZXRhaWxzKHNlbGYsIGNtZCwgYXJncyk6Ci0gICAgICAgICMgRmV0Y2ggdGhl IHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwotICAgICAgICBz ID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKLSAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1c2Vy X2lkPWN1cnJlbnRfdXNlci5pZAotICAgICAgICApLmZpcnN0KCkKLQotICAgICAgICBmcm9tIHBn YWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCi0gICAgICAgIGRyaXZlciA9IGdl dF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAgIG1hbmFnZXIgPSBkcml2ZXIuY29u bmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQotCi0gICAgICAgIGhvc3QgPSBtYW5hZ2VyLmxvY2Fs X2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0Ci0gICAgICAg IHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVs IGVsc2Ugcy5wb3J0CisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJf ZGV0YWlscygpCiAKICAgICAgICAgcmVzID0gJzxkaXYgY2xhc3M9Img1Ij4nCiAKQEAgLTE3MSw3 ICsxNjYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgICAg ICAgICAgImZyb20gZGF0YWJhc2UgJ3sxfScuLi4iCiAgICAgICAgICAgICApLmZvcm1hdCgKICAg ICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAg ICBodG1sLnNhZmVfc3RyKHMubmFtZSksCisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9z dHIobmFtZSksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAg ICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocG9ydCksCiAgICAgICAgICAgICAgICAgKSwK QEAgLTE4MSw3ICsxNzYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAg ICAgICAgICAgICByZXMgKz0gXygiQmFja2luZyB1cCB0aGUgZ2xvYmFsIG9iamVjdHMgb24gIgog ICAgICAgICAgICAgICAgICAgICAgInRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCiAgICAg ICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAg aHRtbC5zYWZlX3N0cihzLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3Ry KG5hbWUpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAg ICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHBvcnQpCiAgICAgICAgICAgICAgICAgKQpAQCAt MTg5LDcgKzE4NCw3IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAg ICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5TRVJWRVI6CiAgICAgICAgICAgICBy ZXMgKz0gXygiQmFja2luZyB1cCB0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0KAogICAgICAg ICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0 bWwuc2FmZV9zdHIocy5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihu YW1lKSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAg ICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihwb3J0KQogICAgICAgICAgICAgICAgICkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3Qu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3NmEzYgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9jcmVh dGVfam9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDQ2MyBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20g cGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcworZnJv bSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBvcnQgQmFja3VwTWVzc2FnZQorZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGlt cG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMg aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2Vy dmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFi YXNlX3V0aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1v Y2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2Nr IGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgQmFja3VwQ3JlYXRlSm9iVGVzdChC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNsYXNz IiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCB3aXRo IGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFt ZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAg ICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBf ZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAg ICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAg ICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRf Y21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10sCisgICAgICAg ICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4 aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRo ZSBvYmplY3Qgd2l0aCBvcHRpb24gc2VjdGlvbnMgdG8gYWxsIGRhdGEnLAorICAgICAgICAgZGlj dCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lk PTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAg ICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg YmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVz JworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9 J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAg ICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkYXRhPVRydWUsCisg ICAgICAgICAgICAgICAgIHByZV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHBvc3RfZGF0 YT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3sw fS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywg Jy0tZm9ybWF0PWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0aW9u PXByZS1kYXRhJywgJy0tc2VjdGlvbj1kYXRhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tc2VjdGlvbj1wb3N0LWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRf Y21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQor ICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlv biBvbmx5X2RhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVy Ym9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAg ICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVt YT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScs ICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVk X2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0K KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRp b24gb25seV9kYXRhJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1z PWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0 ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAg ICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAg ICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAg ICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxl JywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZl cmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAg ICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hl bWE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICctLWRhdGEt b25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tc2NoZW1hLW9u bHknLCAnLS1uby1vd25lciddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwg Tm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0 aCBvcHRpb24gb25seV9zY2hlbWEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFj a3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg b25seV9zY2hlbWE9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFj a3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0t dmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tc2NoZW1hLW9ubHknXSwKKyAgICAgICAgICAgICBu b3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2Rl PVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVj dCB3aXRoIG9wdGlvbiAtIGZvcm1hdCBwbGFpbiBhbmQgZG5zX293bmVyJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0 PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAg ICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkbnNfb3duZXI9VHJ1 ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2Jq ZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZv cm1hdD1wJywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29w dHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAg ICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIERv IG5vdCBzYXZlIHByaXZpbGVnZSwnCisgICAgICAgICAnIHRhYmxlc3BhY2UsIHVubG9nZ2VkIHRh YmxlIGRhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3Rf YmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAor ICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBkbnNfcHJpdmlsZWdlPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc191bmxv Z2dlZF90YmxfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVl CisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmpl Y3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1uby1wcml2aWxlZ2VzJywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tdGFibGVzcGFjZXMnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby11bmxvZ2dlZC10YWJsZS1kYXRhJ10s CisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g YmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwgcXVlcmllcycsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAg ICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVtbl9p bnNlcnRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRy dWUsCisgICAgICAgICAgICAgICAgIHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgaW5jbHVkZV9kcm9wX2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJywgJy0taW5zZXJ0cycsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNvbHVtbi1pbnNlcnRzJ10sCisgICAgICAg ICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4 aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRo ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwgcXVlcmllcyBhbmQgZm9ybWF0IGN1c3RvbScsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVz ZV9jb2x1bW5faW5zZXJ0cz1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9k YXRhYmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICB1c2VfaW5zZXJ0X2NvbW1hbmRzPVRydWUs CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfZHJvcF9kYXRhYmFzZT1UcnVlCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJ10sCisgICAgICAgICAgICAgZXhw ZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBi YWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIG1pc2NlbGxhbmVvdXMnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3Jt YXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkaXNhYmxlX3F1 b3Rpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1dGg9VHJ1ZSwK KyAgICAgICAgICAgICAgICAgd2l0aF9vaWRzPVRydWUsCisgICAgICAgICAgICAgICAgIGRxb3V0 ZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3sw fS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywg Jy0tcXVvdGUtYWxsLWlkZW50aWZpZXJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tZGlzYWJsZS1kb2xsYXItcXVvdGluZycsICctLW9pZHMnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnLS11c2Utc2V0LXNlc3Npb24tYXV0aG9yaXphdGlvbiddLAorICAg ICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3Rl ZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1 cCB0aGUgb2JqZWN0IHdpdGggZm9ybWF0IHRhcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAg ICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9y dD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9i YWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0n dGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0ndGFyJywKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tYmxvYnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1m b3JtYXQ9dCddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAg ICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAg ICAgKCdXaGVuIGJhY2t1cCB0aGUgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAg ICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAg ICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0 PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2Jh Y2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X2JhY2t1cF9zZXJ2ZXJfZmlsZScsCisgICAgICAgICAgICAgICAgIGRxb3V0ZT1GYWxzZSwK KyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICB0eXBlPSdz ZXJ2ZXInCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3sw fScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAgICAg ICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRf ZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAg Z2xvYmFscycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0 KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9i YWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBw YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZ2xvYmFsX2Zp bGUnLAorICAgICAgICAgICAgICAgICBkcW91dGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZl cmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdHlwZT0nZ2xvYmFscycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAgICBl eHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYg c2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAg IHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlz IG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK KyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLlNlcnZlcicpCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLmJhY2t1cC5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuQmFja3VwTWVzc2FnZScpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJh Y2t1cC5maWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMuYmFja3VwLkJhdGNoUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLnV0aWxz LmRyaXZlci5wc3ljb3BnMi5zZXJ2ZXJfbWFuYWdlci5TZXJ2ZXJNYW5hZ2VyLicKKyAgICAgICAg ICAgJ2V4cG9ydF9wYXNzd29yZF9lbnYnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGV4cG9ydF9w YXNzd29yZF9lbnZfbW9jaywgYmF0Y2hfcHJvY2Vzc19tb2NrLAorICAgICAgICAgICAgICAgIGZp bGVuYW1lX21vY2ssIGJhY2t1cF9tZXNzYWdlX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVu dF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIo KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0LCBpZCwg dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2VfZGIpOgorICAg ICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3Qg PSBob3N0CisgICAgICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgICAg IHNlbGYuaWQgPSBpZAorICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQor ICAgICAgICAgICAgICAgIHNlbGYubWFpbnRlbmFuY2VfZGIgPSBtYWludGVuYW5jZV9kYgorCisg ICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50 X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBtb2NrX29iaiA9 IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRh YmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBtb2Nr X3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAg ICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBm aWxlbmFtZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFyYW1zWydmaWxlJ10KKworICAgICAg ICBiYXRjaF9wcm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJsZXMgPSBNYWdpY01vY2soCisgICAg ICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGJhdGNoX3Byb2Nl c3NfbW9jay5zdGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVl CisgICAgICAgICkKKworICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52X21vY2sucmV0dXJuX3Zh bHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25u ZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVyX3Jlc3Bv bnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIGRiX293bmVy ID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCisgICAgICAgICAgICBz ZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9vd25lcikKKyAgICAgICAg ICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAgICAgICAgdXJsID0gc2Vs Zi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNr dXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1s L2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwg MjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRl Y29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydq b2JfaWQnXQorCisgICAgICAgIGFzc2VydCBiYWNrdXBfbWVzc2FnZV9tb2NrLmNhbGxlZAorICAg ICAgICBhc3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAgICAgIGlmIHNlbGYu ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRf Y21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgICAg ICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9h cmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgc2Vs Zi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYubm90 X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oCisg ICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vz c19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAgICAgICAgICAgICAgICApCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfbWVz c2FnZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNz YWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZWFjYzkKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBf bWVzc2FnZS5weQpAQCAtMCwwICsxLDE0OSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2lt cG9ydCBzeXMKKworZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29u IGFzIGpzb24KKworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBvcnQgQmFja3VwTWVzc2Fn ZSwgQkFDS1VQCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJh dG9yCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9y dCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQg cGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIEJhY2t1cE1lc3NhZ2VUZXN0KEJhc2VUZXN0R2Vu ZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYWNrdXBNZXNzYWdlIGNsYXNzIiIiCisgICAgc2Nl bmFyaW9zID0gWworICAgICAgICAoJ1doZW4gQmFja3VwIHNlcnZlcicsCisgICAgICAgICBkaWN0 KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBl PUJBQ0tVUC5TRVJWRVIsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUn LAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUn LAorICAgICAgICAgICAgICAgICAgICAgImJhY2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAg ICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAg ICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJw b3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAg ICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdy ZXMiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3RfcGF0 aC9wZ19kdW1wIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJC YWNraW5nIHVwIHRoZSBzZXJ2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ3Rlc3Rf YmFja3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRj ZWRfZGV0YWlsc19jbWQ9Jy90ZXN0X3BhdGgvcGdfZHVtcCAtLWZpbGUgJworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICciYmFja3VwX2ZpbGUiIC0taG9zdCAibG9jYWxob3N0IiAn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCAiNTQ0NCIgLS11c2Vy bmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1u by1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpLAorICAgICAg ICAoJ1doZW4gQmFja3VwIGdsb2JhbCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5HTE9CQUxTLAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNr dXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAg ICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAg ICAgICAgJ2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAg ICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1w b3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywKKyAgICAgICAgICAgICAgICAgICAg ICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1k YXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnCisgICAgICAgICAgICAg ICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3RfcGF0aC9wZ19kdW1wIgorICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJCYWNraW5nIHVwIHRoZSBnbG9i YWwgb2JqZWN0cyBvbiB0aGUgc2VydmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIid0 ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAgICAgICAgIGV4 cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX2R1bXAgLS1maWxlICJiYWNrdXBfZmls ZSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvc3QgImxvY2FsaG9z dCInCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLXBvcnQgIjU0NDQiIC0t dXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIGJhY2t1cCBvYmplY3QnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAg ICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuT0JKRUNU LAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9i YWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAg ICAgICAgICAgJ2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAor ICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAn LS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywKKyAgICAgICAgICAgICAgICAg ICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAn LS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnCisgICAgICAgICAg ICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3RfcGF0aC9wZ19kdW1wIgorICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJCYWNraW5nIHVwIGFuIG9i amVjdCBvbiB0aGUgc2VydmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0X2Jh Y2t1cF9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KSciCisgICAgICAgICAgICAgICAgICAgICAgICAg ICIgZnJvbSBkYXRhYmFzZSAncG9zdGdyZXMnLi4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9k ZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmlsZSAiYmFja3VwX2ZpbGUiICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJsb2NhbGhvc3QiICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1l ICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBh c3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAgKSkKKyAgICBdCisKKyAg ICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1cE1lc3NhZ2UuZ2V0X3NlcnZlcl9k ZXRhaWxzJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6 CisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJldHVybl92YWx1ZSA9IFwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAorICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCdd CisKKyAgICAgICAgYmFja3VwX29iaiA9IEJhY2t1cE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sndHlwZSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3Np ZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAg ICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICoqeydkYXRhYmFzZSc6 IHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddfQorICAgICAgICApCisKKyAgICAgICAgIyBD aGVjayB0aGUgZXhwZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgYmFja3Vw X29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisKKyAgICAgICAgIyBDaGVjayB0aGUg Y29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IGJhY2t1cF9vYmouZGV0YWlscyhzZWxmLmNs YXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2Vs Zi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkgYi93ZWIvcGdhZG1p bi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0MzJiNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF91dGlscy5weQpAQCAtMCwwICsxLDEx OSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IHRpbWUKK2ltcG9ydCByYW5k b20KK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworCitkZWYgY3JlYXRlX2JhY2t1cF9qb2Io dGVzdGVyLCB1cmwsIHBhcmFtcyk6CisgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICBy ZXNwb25zZSA9IHRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9anNvbi5kdW1wcyhwYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVu dF90eXBlPSdodG1sL2pzb24nKQorICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAy MDAKKyAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgn dXRmLTgnKSkKKyAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisg ICAgcmV0dXJuIGpvYl9pZAorCisKK2RlZiBydW5fYmFja3VwX2pvYih0ZXN0ZXIsIGpvYl9pZCwg ZXhwZWN0ZWRfcGFyYW1zLCBhc3NlcnRJbiwgYXNzZXJ0Tm90SW4pOgorICAgIGNudCA9IDAKKyAg ICB3aGlsZSAxOgorICAgICAgICBpZiBjbnQgPiAxOgorICAgICAgICAgICAgYnJlYWsKKyAgICAg ICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgIHJlc3BvbnNlMSA9IHRlc3Rlci5n ZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIHJhbmRvbS5yYW5k aW50KDEsIDk5OTk5OTkpKSkKKyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlMS5zdGF0dXNfY29kZSA9 PSAyMDAKKyAgICAgICAgcHJvY2Vzc19saXN0ID0ganNvbi5sb2FkcyhyZXNwb25zZTEuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFuZCAn ZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgIGJyZWFrCisg ICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICBjbnQgKz0gMQorCisgICAgYXNzZXJ0ICdl eGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdzdGltZScgaW4g cHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFsw XQorICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIGV4cGVjdGVkX3Bh cmFtc1sKKyAgICAgICAgJ2V4cGVjdGVkX2V4aXRfY29kZScKKyAgICBdCisKKyAgICBiYWNrdXBf ZmlsZSA9IE5vbmUKKyAgICBpZiAnZGV0YWlscycgaW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAg ICBiYWNrdXBfZGV0ID0gcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10KKyAgICAgICAgYmFja3Vw X2ZpbGUgPSBiYWNrdXBfZGV0W2ludChiYWNrdXBfZGV0LmZpbmQoJy0tZmlsZScpKSArIDg6Cisg ICAgICAgIGludChiYWNrdXBfZGV0LmZpbmQoJy0taG9zdCcpKSAtIDJdCisKKyAgICBpZiBleHBl Y3RlZF9wYXJhbXNbJ2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhw ZWN0ZWRfcGFyYW1zWydleHBlY3RlZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0SW4o b3B0LCBwcm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKyAgICBpZiBleHBlY3RlZF9wYXJhbXNb J25vdF9leHBlY3RlZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3Bh cmFtc1snbm90X2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnROb3RJbihv cHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorCisgICAgIyBDaGVjayB0aGUgcHJvY2Vz cyBkZXRhaWxzCisgICAgcF9kZXRhaWxzID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3sw fT9fPScuZm9ybWF0KAorICAgICAgICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkp KQorICAgICkKKyAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgIHBf ZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04Jykp CisKKyAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97 Mn0vP189Jy5mb3JtYXQoCisgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwg OTk5OTk5OSkpCisgICAgKQorICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0gMjAw CisgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgn dXRmLTgnKSkKKworICAgIGNudCA9IDAKKyAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9iIHBy b2Nlc3MgbG9ncworICAgIHdoaWxlIDE6CisgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBnZXRf cGFyYW1zKHBfZGV0YWlsc19kYXRhKQorICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEwOgor ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KAorICAg ICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAg ICAgICAgICAgICAgICBqb2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5 KSkKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIw MAorICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVj b2RlKCd1dGYtOCcpKQorCisgICAgICAgIGNudCArPSAxCisgICAgICAgIHRpbWUuc2xlZXAoMSkK KworICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICBiYWNrdXBfYWNrID0gdGVz dGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAgYXNzZXJ0 IGJhY2t1cF9hY2suc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgYmFja3VwX2Fja19yZXMgPSBqc29u LmxvYWRzKGJhY2t1cF9hY2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBhc3NlcnQgYmFj a3VwX2Fja19yZXNbJ3N1Y2Nlc3MnXSA9PSAxCisKKyAgICByZXR1cm4gYmFja3VwX2ZpbGUKKwor CitkZWYgZ2V0X3BhcmFtcyhkYXRhKToKKyAgICBvdXQgPSAwCisgICAgb3V0X2RvbmUgPSBGYWxz ZQorICAgIGVyciA9IDAKKyAgICBlcnJfZG9uZSA9IEZhbHNlCisgICAgaWYgJ291dCcgaW4gZGF0 YToKKyAgICAgICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisg ICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydvdXQnXToKKyAgICAgICAgICAgIG91dF9kb25lID0g ZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgaWYgJ2VycicgaW4gZGF0YToKKyAgICAgICAgZXJy ID0gZGF0YVsnZXJyJ10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgIGlmICdkb25l JyBpbiBkYXRhWydlcnInXToKKyAgICAgICAgICAgIGVycl9kb25lID0gZGF0YVsnZXJyJ11bJ2Rv bmUnXQorCisgICAgcmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUgYW5kIGVycl9kb25lKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz cy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3Mu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3NGNhNQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nl c3MucHkKQEAgLTAsMCArMSwyMTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQg c3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBn YWRtaW4udG9vbHMuYmFja3VwIGltcG9ydCBCYWNrdXBNZXNzYWdlLCBCQUNLVVAKK2Zyb20gcGdh ZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGlt cG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBm cm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBv cnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToK KyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnV2hlbiBiYWNrdXAgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLlNF UlZFUiwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywKKyAgICAgICAg ICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisg ICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICJiYWNr dXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAg ICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAg ICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFt ZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAg ICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAor ICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAg ICAgICAgICAgICAgICBjbWQ9J2JhY2t1cF9zZXJ2ZXInCisgICAgICAgICAgICAgKQorICAgICAg ICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgZ2xvYmFscycsCisgICAgICAgICBkaWN0KAor ICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJB Q0tVUC5HTE9CQUxTLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAor ICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBh cmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAg ICAgImJhY2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAg ICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0 JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICct LXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAg ICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRh YmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAg IF0sCisgICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwJworICAgICAgICAgICAgICkKKyAgICAg ICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCcsCisgICAgICAgICBkaWN0KAor ICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJB Q0tVUC5PQkpFQ1QsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBu YW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisg ICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFy Z3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAg ICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQn LAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0t dXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAg ICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFi YXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAg XSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAgICAgICAgKQorICAgICAg ICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1cE1l c3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nl c3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmN1 cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nl cy5jdXJyZW50X3VzZXInKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2Nr LCBjdXJyZW50X3VzZXIsIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9j aywgcG9wZW5fbW9jaywgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgorICAgICAgICBjdXJyZW50 X3VzZXIuaWQgPSAxCisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBj dXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGRi X3Nlc3Npb25fYWRkX21vY2soaik6CisgICAgICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNj KQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQor ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5iYWNrdXBfdHlwZSwgc2VsZi5j bGFzc19wYXJhbXNbJ3R5cGUnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9v YmouYmZpbGUsIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddKQorICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoY21kX29iai5kYXRhYmFzZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNl J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmNtZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1wb3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICctLXVzZXJuYW1lICJ7Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5v LXBhc3N3b3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7 M30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApKQorCisgICAgICAgIGRiX21vY2suc2Vzc2lvbi5hZGQuc2lkZV9lZmZl Y3QgPSBkYl9zZXNzaW9uX2FkZF9tb2NrCisKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxzX21v Y2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUn XSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBiYWNrdXBfb2JqID0gQmFja3Vw TWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10sCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3Bh cmFtc1snYmZpbGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAor ICAgICAgICAgICAgKip7J2RhdGFiYXNlJzogc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ119 CisgICAgICAgICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVz Yz1iYWNrdXBfb2JqLAorICAgICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwK KyAgICAgICAgICAgIGFyZ3M9c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisK KyAgICAgICAgIyBDaGVjayB0aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAg ICAgICAgYXNzZXJ0IGRiX21vY2suc2Vzc2lvbi5hZGQuY2FsbGVkCisKKyAgICAgICAgIyBDaGVj ayBzdGFydCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RhcnQocG9wZW5fbW9jaywgcCkK KworICAgICAgICAjIENoZWNrIGxpc3QgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX2xpc3Qo cCwgYmFja3VwX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9jaywg cCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAgICAg ICAgY2xhc3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVzdCBp biBjbWQKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAgICAg ICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwb3Bl bl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0YXJ0 KCkKKworICAgICAgICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2Fk bWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAgICAn dXBkYXRlX3Byb2Nlc3NfaW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIGJhY2t1 cF9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAgICAgICAgICAgICAgICAgICAgcHJv Y2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJncywgY21kKToKKyAgICAgICAgICAgICAgICBz ZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAw MDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAgICAgICAg ICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRz ID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAg ICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdlID0gTm9uZQorCisgICAgICAgIHByb2Nlc3Nf bW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0gWworICAgICAgICAgICAgVGVzdE1v Y2tQcm9jZXNzKGJhY2t1cF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j bGFzc19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1snY21kJ10pXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5y ZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3Qo KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBh c3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGlu IHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3Rz L3Rlc3RfY3JlYXRlX2JhY2t1cF9qb2IucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVz dHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lZDQ4YzU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFj a3VwL3Rlc3RzL3Rlc3RfY3JlYXRlX2JhY2t1cF9qb2IucHkKQEAgLTAsMCArMSw2MiBAQAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IG9zCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVu dF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRlc3Rf YmFja3VwX3V0aWxzIGFzIGJhY2t1cF91dGlscworCitjbGFzcyBCYWNrdXBKb2JUZXN0KEJhc2VU ZXN0R2VuZXJhdG9yKToKKyAgICAiIiJCYWNrdXAgYXBpIHRlc3QgY2FzZXMiIiIKKyAgICBzY2Vu YXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZh dWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9v YmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAg ICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1jJywgJy0tYmxv YnMnXSwKKyAgICAgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAgICAgKQor ICAgICAgICAgKSkKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNl bGYuc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBz ZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBu b3Qgc2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBz ZWxmLnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg ICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25v ZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICB1cmwgPSBzZWxmLnVy bC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBq b2IKKyAgICAgICAgam9iX2lkID0gYmFja3VwX3V0aWxzLmNyZWF0ZV9iYWNrdXBfam9iKHNlbGYu dGVzdGVyLCB1cmwsIHNlbGYucGFyYW1zKQorICAgICAgICBiYWNrdXBfZmlsZSA9IGJhY2t1cF91 dGlscy5ydW5fYmFja3VwX2pvYihzZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuZXhwZWN0ZWRfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0Tm90SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICBpZiBiYWNrdXBfZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG9zLnBh dGguaXNmaWxlKGJhY2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoYmFja3Vw X2ZpbGUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy9f X2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL19faW5pdF9f LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz c19tYWludGVuYW5jZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rl c3RfYmF0Y2hfcHJvY2Vzc19tYWludGVuYW5jZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41NWMzZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv bWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5CkBAIC0w LDAgKzEsMTUzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9t IHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MsIElQ cm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdl Citmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9t IHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg Myk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0 Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChCYXNlVGVzdEdl bmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIiCisgICAgc2Nl bmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCBzZXJ2ZXInLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAg ICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0t cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAg ICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYm5hbWUnLAorICAgICAg ICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWNvbW1h bmQnLAorICAgICAgICAgICAgICAgICAgICAgIlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAg ICAgICAgICBdLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg ICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFD VVVNJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAg ICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJv c2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFD VVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHBlY3RlZF9t c2c9Ik1haW50ZW5hbmNlIChWYWN1dW0pIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxz X2NtZD0nVkFDVVVNIFZFUkJPU0U7JworICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2go J3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2go J3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMubWFpbnRlbmFuY2UuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5i Z3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwg Y3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrLCBkYl9tb2NrLAorICAgICAgICAgICAgICAg IGN1cnJlbnRfYXBwX21vY2ssIHBvcGVuX21vY2spOgorICAgICAgICBjdXJyZW50X3VzZXJfbW9j ay5pZCA9IDEKKyAgICAgICAgY3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxz ZQorCisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1l ID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAg ICBzZWxmLnBvcnQgPSBwb3J0CisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRkX21vY2soaik6 CisgICAgICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAgICAgYXNzZXJ0 IGlzaW5zdGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoY21kX29iai5xdWVyeSwgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddKQorICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5tZXNzYWdlLCBzZWxmLmV4cGVjdGVkX21z ZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouZGF0YSwgc2VsZi5jbGFz c19wYXJhbXNbJ2RhdGEnXSkKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNl bGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkKKyAgICAgICAgbW9ja19yZXN1 bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1v Y2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZGJfbW9j ay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAg ICBtYWludGVuYW5jZV9vYmogPSBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGEnXSwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorICAgICAgICApCisKKyAgICAgICAgcCA9 IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRlc2M9bWFpbnRlbmFuY2Vfb2JqLAorICAgICAg ICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAgICAgICAgICAgIGFyZ3M9c2Vs Zi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGF0 IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgYXNzZXJ0IGRiX21vY2su c2Vzc2lvbi5hZGQuY2FsbGVkCisKKyAgICAgICAgIyBDaGVjayBzdGFydCBtZXRob2QKKyAgICAg ICAgc2VsZi5fY2hlY2tfc3RhcnQocG9wZW5fbW9jaywgcCkKKworICAgICAgICAjIENoZWNrIGxp c3QgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX2xpc3QocCwgbWFpbnRlbmFuY2Vfb2JqKQor CisgICAgZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21k X3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1v Y2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3 YXJncyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAg ICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2Vs Zik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZl Y3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFz c2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nl c3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19p bmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgbWFpbnRlbmFuY2Vfb2JqLCB1cGRh dGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfbW9jayk6 CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAgICAgc2VsZi5waWQgPSAx CisgICAgICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1ICswMDAwJworICAgICAg ICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5kZXNj ID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5qb2lu KGFyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21kCisgICAgICAgICAgICAg ICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9jZXNzX21vY2sucXVlcnku ZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRlc3RNb2NrUHJvY2Vzcyht YWludGVuYW5jZV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3Bh cmFtc1snY21kJ10pCisgICAgICAgIF0KKworICAgICAgICB1cGRhdGVfcHJvY2Vzc19pbmZvX21v Y2sucmV0dXJuX3ZhbHVlID0gW1RydWUsIFRydWVdCisKKyAgICAgICAgcmV0X3ZhbHVlID0gcC5s aXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmV0X3ZhbHVlKSkKKyAgICAg ICAgYXNzZXJ0ICdkZXRhaWxzJyBpbiByZXRfdmFsdWVbMF0KKyAgICAgICAgYXNzZXJ0ICdkZXNj JyBpbiByZXRfdmFsdWVbMF0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5h bmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50ZW5hbmNlX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50ZW5hbmNlX2pvYi5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTAxZjFkCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRl bmFuY2Vfam9iLnB5CkBAIC0wLDAgKzEsMTQwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor aW1wb3J0IHRpbWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKwor ZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9u X3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51dGls cyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMg XAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworY2xhc3MgTWFpbnRlbmFuY2VKb2JUZXN0KEJhc2VU ZXN0R2VuZXJhdG9yKToKKyAgICAiIiJNYWludGVuYW5jZSBhcGkgdGVzdCBjYXNlcyIiIgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0 aCB0aGUgZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg J2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNV VU0nLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAg ICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAg ICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9z ZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNV VU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50 ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWQ9J1ZBQ1VVTSBW RVJCT1NFJywKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAg ICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5z ZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYu c2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBz ZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBk ZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAgc2Vs Zi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsic2VydmVyX2lk Il0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFd WyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCwg c2VsZi5kYl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAgICBy ZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zWydkYXRhJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAg ICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRm LTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQor CisgICAgICAgIGNudCA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIGNudCA+ IDE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nl c3MgbGlzdAorICAgICAgICAgICAgcmVzcG9uc2UxID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9i Z3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwg OTk5OTk5OSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2UxLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgICAgICBwcm9jZXNzX2xpc3QgPSBqc29uLmxvYWRzKHJlc3Bv bnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAgICAgaWYgbGVuKHByb2Nlc3Nf bGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAgICAg ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAg ICBjbnQgKz0gMQorCisgICAgICAgIGFzc2VydCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3Nf bGlzdFswXQorICAgICAgICBhc3NlcnQgJ3N0aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAg ICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQg cHJvY2Vzc19saXN0WzBdWydleGl0X2NvZGUnXSBpbiBzZWxmLmV4cGVjdGVkX2V4aXRfY29kZQor CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBlY3RlZF9jbWQsIHByb2Nlc3NfbGlzdFsw XVsnZGV0YWlscyddKQorCisgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAg ICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0n LmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkp CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19j b2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMu ZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIu Z2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAgICAg ICBqb2JfaWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICApCisg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAg ICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorCisgICAgICAgICMgUmV0cmlldmUgdGhlIGJhY2t1cCBqb2IgcHJvY2VzcyBsb2dz CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gTWFpbnRl bmFuY2VKb2JUZXN0LmdldF9wYXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAgICAgICAgICBpZiBz dGF0dXM6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgcF9kZXRhaWxzID0g c2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAgICcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sx fS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGpvYl9pZCwgb3V0LCBl cnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAgICAgKQorICAgICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAg ICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAgICAgIyBDaGVjayB0 aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICBiYWNrdXBfYWNrID0gc2VsZi50ZXN0ZXIucHV0 KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkKKyAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoYmFja3VwX2Fjay5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBiYWNrdXBfYWNr X3JlcyA9IGpzb24ubG9hZHMoYmFja3VwX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQorCisg ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgICAgICBvdXQg PSAwCisgICAgICAgIG91dF9kb25lID0gRmFsc2UKKyAgICAgICAgZXJyID0gMAorICAgICAgICBl cnJfZG9uZSA9IEZhbHNlCisgICAgICAgIGlmICdvdXQnIGluIGRhdGE6CisgICAgICAgICAgICBv dXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisKKyAgICAgICAgICAgIGlm ICdkb25lJyBpbiBkYXRhWydvdXQnXToKKyAgICAgICAgICAgICAgICBvdXRfZG9uZSA9IGRhdGFb J291dCddWydkb25lJ10KKworICAgICAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICAgICAg ZXJyID0gZGF0YVsnZXJyJ10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgICAgICBp ZiAnZG9uZScgaW4gZGF0YVsnZXJyJ106CisgICAgICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRh WydlcnInXVsnZG9uZSddCisKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUgYW5k IGVycl9kb25lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVz dHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91bml0 X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThhZWY1YwotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3Rf bWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkKQEAgLTAsMCArMSwxOTggQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMg Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor IyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK KyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworaW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0 IEJhdGNoUHJvY2VzcworZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNz YWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5w eXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWlu LnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGls cyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMs IDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAgICBm cm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFzcyBNYWlu dGVuYW5jZUNyZWF0ZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhl IEJhY2t1cENyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdX aGVuIG1haW50ZW5hbmNlIG9iamVjdCB3aXRoIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nVkFDVVVNJywKKyAgICAgICAgICAg ICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVl emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0n L21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJ1ZBQ1VVTSBWRVJCT1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1h aW50ZW5hbmNlIG9iamVjdCB3aXRoIFZBQ1VVTSBGVUxMJywKKyAgICAgICAgIGRpY3QoCisgICAg ICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAg ICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAg ICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIG9wPSdWQUNVVU0nLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwK KyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdmVy Ym9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5j ZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WydWQUNVVU0g RlVMTCBWRVJCT1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5h bmNlIG9iamVjdCB3aXRoIHRoZSBBTkFMWVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAg ICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAg ICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAg IHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIG9wPSdBTkFMWVpFJywKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Fu YWx5emU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAg ICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9i L3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnQU5BTFlaRSBWRVJC T1NFO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBv YmplY3Qgd2l0aCB0aGUgUkVJTkRFWCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0 PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBvcD0nUkVJTkRFWCcsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXpl PUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxz ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3sw fS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnUkVJTkRFWCBEQVRBQkFT RSBwb3N0Z3JlcztcbiddLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGVuYW5j ZSB0aGUgb2JqZWN0IHdpdGggdGhlIENMVVNURVInLAorICAgICAgICAgZGljdCgKKyAgICAgICAg ICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAg ICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAg ICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAg ICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgb3A9J0NMVVNURVInLAorICAgICAgICAgICAgICAgICB2YWN1dW1f YW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAg ICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50ZW5hbmNl L2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJ0NMVVNURVI7 XG4nXSwKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg ICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAg ICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0 aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXInKQorICAg IEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5NZXNzYWdlJykKKyAgICBAcGF0Y2go J3BnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UuQmF0Y2hQcm9jZXNzJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZlcl9tYW5hZ2VyLlNlcnZlck1hbmFnZXIu JworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2VudicpCisgICAgZGVmIHJ1blRlc3Qoc2Vs ZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLAorICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nl c3NfbW9jaywgbWVzc2FnZV9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIHNlbGYuc2VydmVy X2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bInNlcnZlcl9pZCJdCisgICAg ICAgIHNlbGYuZGJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfaWQi XQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJf aWQpCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAg IHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAg ICAgICAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAgICAgICAgICAgc2VsZi51c2VybmFtZSA9 IHVzZXJuYW1lCisKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNz X3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j bGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5LnJl dHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBtb2Nr X29iagorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRfZW52X3ZhcmlhYmxlcyA9IE1h Z2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKyAgICAg ICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0 dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52X21v Y2sucmV0dXJuX3ZhbHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZl cl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYg c2VydmVyX3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAgICAg ICAgIGRiX293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCisg ICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9vd25l cikKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAgICAg ICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rl ci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNv bi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJl c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxv YWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNw b25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNzZXJ0IG1lc3NhZ2VfbW9j ay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsZWQKKworICAg ICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBz ZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxf YXJnc19saXN0WzBdWzFdWydhcmdzJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9t YWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1p bi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiODllZAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2Vf bWVzc2FnZS5weQpAQCAtMCwwICsxLDEyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor ZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKwor ZnJvbSBwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdlCitmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3MgTWFpbnRl bmFuY2VNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgTWFp bnRlbmFuY2UgTWVzc2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdX aGVuIG1haW50YWluZWQgdGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAg ICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1 dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBG YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFjdXVt KSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBWRVJCT1NFOycK KworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0 aCBGVUxMIFZFUkJPU0Ugb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAor ICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAg ICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1f ZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBUcnVl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiIKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1 bSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gRlVMTCBWRVJC T1NFOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2 ZXIgd2l0aCBBTkFMWVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRh PXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgICAgICAnb3AnOiAnQU5BTFlaRScsCisgICAgICAgICAgICAgICAgICAgICAndmFj dXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXpl JzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgICBjbWQ9IkFOQUxZWkUgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKEFuYWx5emUpIiwKKyAg ICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQU5BTFlaRSBWRVJCT1NFOycKKworICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBSRUlO REVYJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAg ICAnb3AnOiAnUkVJTkRFWCcsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2ZXJib3NlJzogRmFsc2UKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgICAgY21kPSJSRUlOREVYO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0 ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoUmVpbmRleCkiLAorICAgICAgICAgICAgIGV4cGV0Y2Vk X2RldGFpbHNfY21kPSdSRUlOREVYOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBt YWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBDTFVTVEVSJywKKyAgICAgICAgIGRpY3QoCisgICAg ICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnQ0xVU1RFUicsCisgICAgICAg ICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAg ICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVt X2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAg ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IkNMVVNURVIgVkVSQk9TRTtc biIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFu Y2UgKENsdXN0ZXIpIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQ0xVU1RF UiBWRVJCT1NFOycKKworICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0 YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAgICkKKwor ICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAgIGFz c2VydCBtYWludGVuYW5jZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAg ICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBtYWludGVuYW5j ZV9vYmouZGV0YWlscyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sIE5vbmUpCisgICAgICAgIHNl bGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weQppbmRleCA0NWQzODE2Li41OGJjMjUxIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0X18ucHkKQEAgLTg2LDggKzg2LDcgQEAgY2xhc3Mg UmVzdG9yZU1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg ICAgICAgICAgc2VsZi5jbWQgKz0gY21kQXJnKGFyZykKIAotICAgIEBwcm9wZXJ0eQotICAgIGRl ZiBtZXNzYWdlKHNlbGYpOgorICAgIGRlZiBnZXRfc2VydmVyX2RldGFpbHMoc2VsZik6CiAgICAg ICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVz IGV0YwogICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAgIGlk PXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZApAQCAtMTAwLDMwICs5OSwyNSBAQCBj bGFzcyBSZXN0b3JlTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBob3N0ID0gbWFuYWdl ci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAog ICAgICAgICBwb3J0ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3No X3R1bm5lbCBlbHNlIHMucG9ydAogCisgICAgICAgIHJldHVybiBzLm5hbWUsIGhvc3QsIHBvcnQK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICBuYW1lLCBo b3N0LCBwb3J0ID0gc2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQorCiAgICAgICAgIHJldHVybiBf KCJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCi0gICAg ICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCksCisgICAg ICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpLAogICAgICAg ICApCiAKICAgICBkZWYgZGV0YWlscyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZldGNo IHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAgICAg ICAgcyA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNpZCwg dXNlcl9pZD1jdXJyZW50X3VzZXIuaWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAgZnJv bSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2ZXIg PSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJpdmVy LmNvbm5lY3Rpb25fbWFuYWdlcihzZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdlci5s b2NhbF9iaW5kX2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAotICAg ICAgICBwb3J0ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1 bm5lbCBlbHNlIHMucG9ydAotCisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9z ZXJ2ZXJfZGV0YWlscygpCiAgICAgICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCiAgICAg ICAgIHJlcyArPSBodG1sLnNhZmVfc3RyKAogICAgICAgICAgICAgXygKICAgICAgICAgICAgICAg ICAiUmVzdG9yaW5nIGJhY2t1cCBvbiB0aGUgc2VydmVyICd7MH0nLi4uIgogICAgICAgICAgICAg KS5mb3JtYXQoCi0gICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChzLm5hbWUs IGhvc3QsIHBvcnQpCisgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChuYW1l LCBob3N0LCBwb3J0KQogICAgICAgICAgICAgKQogICAgICAgICApCiAKQEAgLTIwNiw2ICsyMDAs NyBAQCBkZWYgY3JlYXRlX3Jlc3RvcmVfam9iKHNpZCk6CiAKICAgICBpZiBfZmlsZSBpcyBOb25l OgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVz PTQxMCwKICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKICAgICAgICAgICAgIGVycm9ybXNnPV8oIkZp bGUgY291bGQgbm90IGJlIGZvdW5kLiIpCiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9y ZXN0b3JlL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMv dGVzdF9iYXRjaF9wcm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90 ZXN0X2JhdGNoX3Byb2Nlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjhkNjkyYQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTU0IEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJv Y2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRv b2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxv YWRzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9y dCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKwor Y2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0 aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1do ZW4gcmVzdG9yZSBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19w YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5h bWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisg ICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBh cmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAg ICAgInJlc3RvcmVfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAg ICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9y dCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAn LS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAg ICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J3Jlc3RvcmVfc2VydmVyJworICAgICAgICAgICAg ICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3Rv cmUuUmVzdG9yZU1lc3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4u bWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9v bHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJy ZW50X3VzZXJfbW9jaywgY3VycmVudF91c2VyLCBkYl9tb2NrLAorICAgICAgICAgICAgICAgIGN1 cnJlbnRfYXBwX21vY2ssIHBvcGVuX21vY2ssIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAg ICAgICAgY3VycmVudF91c2VyLmlkID0gMQorICAgICAgICBjdXJyZW50X3VzZXJfbW9jay5pZCA9 IDEKKyAgICAgICAgY3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxzZQorCisg ICAgICAgIGRlZiBkYl9zZXNzaW9uX2FkZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29iaiA9 IGxvYWRzKGouZGVzYykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQ cm9jZXNzRGVzYykKKyAgICAgICAgICAgIHByaW50KGNtZF9vYmopCisgICAgICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkK KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgInJlc3RvcmVfZmlsZSIgJworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1wb3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LXVzZXJuYW1lICJ7Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBh c3N3b3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7M30i Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApKQorCisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJldHVybl92 YWx1ZSA9IFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAorICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1sncG9ydCddCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVj dCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3RvcmVN ZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19w YXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgcCA9IEJhdGNoUHJvY2VzcygKKyAg ICAgICAgICAgIGRlc2M9cmVzdG9yZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncydd CisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBi ZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKwor ICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChw b3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2Vs Zi5fY2hlY2tfbGlzdChwLCByZXN0b3JlX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2Vs ZiwgcG9wZW5fbW9jaywgcCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNb J2NtZCddCisKKyAgICAgICAgY2xhc3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFz c2VydCBjbWRfdGVzdCBpbiBjbWQKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dh cmdzCisKKyAgICAgICAgICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MK KworICAgICAgICBwb3Blbl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAor ICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKwor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisg ICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3Mu JworICAgICAgICAgICAndXBkYXRlX3Byb2Nlc3NfaW5mbycpCisgICAgZGVmIF9jaGVja19saXN0 KHNlbGYsIHAsIHJlc3RvcmVfb2JqLCB1cGRhdGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAg ICAgICAgICAgICAgIHByb2Nlc3NfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2Vz cygpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6Cisg ICAgICAgICAgICAgICAgc2VsZi5waWQgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5leGl0X2Nv ZGUgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6 MTg6NTYuMzE1NDQ1ICswMDAwJworICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25l CisgICAgICAgICAgICAgICAgc2VsZi5kZXNjID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAg ICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5qb2luKGFyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5j b21tYW5kID0gY21kCisgICAgICAgICAgICAgICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKwor ICAgICAgICBwcm9jZXNzX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAg ICAgICAgICAgIFRlc3RNb2NrUHJvY2VzcyhyZXN0b3JlX29iaiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAgICAg IHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKwor ICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs IGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVsw XQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weSBi L3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2Iu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4MWJmNgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVz dG9yZV9qb2IucHkKQEAgLTAsMCArMSwxOTkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IG9zCisKK2ltcG9y dCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0 Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91 dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRlc3RfYmFja3VwX3V0aWxz IGFzIGJhY2t1cF91dGlscworCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAg ZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRl c3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIFJlc3RvcmVKb2JUZXN0 KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJCYWNrdXAgYXBpIHRlc3QgY2FzZXMiIiIKKyAg ICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIHRoZSBvYmplY3Qgd2l0aCB0 aGUgZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgcGFyYW1z PWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAg ICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBjdXN0b209RmFs c2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgYmxv YnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ndGVzdF9yZXN0b3JlX2RhdGFi YXNlJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9 JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAg ICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9l eGl0X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgICAgIGJhY2t1cF9vcHRpb25zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICAgICAgZmlsZT0n dGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20n LAorICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICAg ICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAg ICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n dGVzdF9yZXN0b3JlX2RhdGFiYXNlJworICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg ICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgICAgICBleHBl Y3RlZF9wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRz PVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icyddLAorICAgICAgICAgICAgICAg ICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICAgICAgICAgZXhw ZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgICApCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAg ICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAg ICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3Bh dGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICApCisKKyAgICBkZWYgY3JlYXRlX2JhY2t1cChzZWxmKToKKyAgICAgICAgdXJsID0gc2VsZi5i YWNrdXBfb3B0aW9uc1sndXJsJ10uZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorICAgICAgICBqb2Jf aWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Ioc2VsZi50ZXN0ZXIsIHVybCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFja3Vw X29wdGlvbnNbJ3BhcmFtcyddKQorICAgICAgICBzZWxmLmJhY2t1cF9maWxlID0gYmFja3VwX3V0 aWxzLnJ1bl9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCBqb2JfaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydleHBlY3RlZF9wYXJhbXMn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4sIHNl bGYuYXNzZXJ0Tm90SW4pCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5k Yl9uYW1lID0gJycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJz ZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZl cl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgZGJf aWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNlbGYucGFyYW1zWydkYXRh YmFzZSddKQorCisgICAgICAgIHNlbGYuY3JlYXRlX2JhY2t1cCgpCisgICAgICAgIHVybCA9IHNl bGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgcmVz dG9yZSBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFt cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0 bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11b J2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAg ICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyBDaGVj ayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEgPSBzZWxmLnRlc3Rlci5n ZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICByYW5kb20u cmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNw b25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nlc3NfbGlzdCA9IGpzb24u bG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICBpZiBs ZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0 WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkK KyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0ICdleGVjdXRpb25fdGltZScg aW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3RpbWUnIGluIHByb2Nlc3NfbGlz dFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAg ICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIHNlbGYuZXhwZWN0ZWRf ZXhpdF9jb2RlCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAg ICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBz ZWxmLmFzc2VydEluKG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisgICAgICAgIGlm IHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxm Lm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElu KG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGUg cHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgnL21p c2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAgam9iX2lkLCByYW5kb20u cmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBq c29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICBwX2Rl dGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz0n LmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5 OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0 YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2Rl dGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBSZXRyaWV2ZSB0aGUgcmVz dG9yZSBqb2IgcHJvY2VzcyBsb2dzCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgd2hpbGUgMToK KyAgICAgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBSZXN0b3JlSm9iVGVzdC5nZXRfcGFyYW1z KHBfZGV0YWlsc19kYXRhKQorICAgICAgICAgICAgaWYgc3RhdHVzIG9yIGNudCA+PSAxMDoKKyAg ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rl ci5nZXQoCisgICAgICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17 M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9t LnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0 YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisK KyAgICAgICAgICAgIGNudCArPSAxCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAg ICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICByZXN0b3JlX2FjayA9IHNl bGYudGVzdGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3RvcmVfYWNrLnN0YXR1c19jb2RlLCAyMDApCisgICAg ICAgIHJlc3RvcmVfYWNrX3JlcyA9IGpzb24ubG9hZHMocmVzdG9yZV9hY2suZGF0YS5kZWNvZGUo J3V0Zi04JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdG9yZV9hY2tfcmVzWydz dWNjZXNzJ10sIDEpCisKKyAgICAgICAgaWYgc2VsZi5iYWNrdXBfZmlsZSBpcyBub3QgTm9uZToK KyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuYmFja3VwX2ZpbGUpOgorICAgICAg ICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmJhY2t1cF9maWxlKQorCisgICAgQHN0YXRpY21ldGhv ZAorICAgIGRlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgICAgICBvdXQgPSAwCisgICAgICAgIG91 dF9kb25lID0gRmFsc2UKKyAgICAgICAgZXJyID0gMAorICAgICAgICBlcnJfZG9uZSA9IEZhbHNl CisgICAgICAgIGlmICdvdXQnIGluIGRhdGE6CisgICAgICAgICAgICBvdXQgPSBkYXRhWydvdXQn XSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRh WydvdXQnXToKKyAgICAgICAgICAgICAgICBvdXRfZG9uZSA9IGRhdGFbJ291dCddWydkb25lJ10K KworICAgICAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICAgICAgZXJyID0gZGF0YVsnZXJy J10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgICAgICBpZiAnZG9uZScgaW4gZGF0 YVsnZXJyJ106CisgICAgICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRhWydlcnInXVsnZG9uZSdd CisKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUgYW5kIGVycl9kb25lKQorCisg ICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2Ri X2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAg IHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bh c3N3b3JkJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10K KyAgICAgICAgKQorICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNlbGYu cGFyYW1zWydkYXRhYmFzZSddKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9y ZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkgYi93ZWIvcGdhZG1p bi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODI5Y2Q4Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3Jl YXRlX2pvYl91bml0X3Rlc3QucHkKQEAgLTAsMCArMSwzMTggQEAKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBw Z2FkbWluLnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4u dXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1w b3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBp bXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2 ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJh c2VfdXRpbHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sg aW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGlt cG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgUmVzdG9yZUNyZWF0ZUpvYlRlc3QoQmFz ZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIFJlc3RvcmVDcmVhdGVKb2IgY2xhc3Mi IiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRo IGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFt ZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAg ICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisg ICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3Rv cmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2Iv ezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAg ICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3Rl ZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3Rv cmUgb2JqZWN0IHdpdGggdGhlIHNlY3Rpb25zIG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAg ICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxl PSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1 c3RvbScsCisgICAgICAgICAgICAgICAgIG5vX29mX2pvYnM9JzInLAorICAgICAgICAgICAgICAg ICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAg ICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkYXRhPVRy dWUsCisgICAgICAgICAgICAgICAgIHByZV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHBv c3RfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg dXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIFBsZWFzZSBpbmNsdWRlIHNl Y3Rpb25zIGRhdGEgaGVyZSwgcmlnaHQgbm93IHRoaXMgaXMgYSBidWcKKyAgICAgICAgICAgICBl eHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWpvYnMnLCAnMiddLAorICAgICAgICAg ICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICAjIEJlbG93IG9wdGlv bnMgc2hvdWxkIGJlIGVuYWJsZWQgb25jZSB3ZSBmaXggdGhlIGlzc3VlICMzMzY4CisgICAgICAg ICAgICAgIyBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLWRhdGEtb25seScsICctLXNjaGVtYS1v bmx5J10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAgICAg ICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSB0aGUgb2JqZWN0IHdpdGggVHlwZSBvZiBv YmplY3RzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jl c3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBub19v Zl9qb2JzPScyJywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAg ICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgb25seV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9u bHlfc2NoZW1hPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZGF0YS1vbmx5J10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICMgQmVsb3cg b3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBvbmNlIHdlIGZpeCB0aGUgaXNzdWUgIzMzNjgKKyAg ICAgICAgICAgICAjIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tc2NoZW1hLW9ubHknLCAnLS1u by1vd25lciddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0sCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9uIC0g RG8gbm90IHNhdmUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAg ICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAg ICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2Zp bGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRuc19vd25l cj1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfcHJpdmlsZWdlPVRydWUsCisgICAgICAgICAg ICAgICAgIGRuc190YWJsZXNwYWNlPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1G YWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9 JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1wcml2aWxlZ2VzJyB0byB0aGUgZXhwZWN0ZWRf Y21kIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0t bm8tb3duZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby10YWJsZXNw YWNlcyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAg ICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9uIC0gUXVlcmllcycsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGNsZWFuPVRydWUs CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAg ICAgICAgICAgIHNpbmdsZV90cmFuc2FjdGlvbj1UcnVlLAorICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJy0tY3JlYXRlJywgJy0tY2xlYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1zaW5nbGUtdHJhbnNhY3Rpb24nXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0 ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25l XQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlv biAtIERpc2JhbGUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZl cmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAg ICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBkaXNhYmxlX3RyaWdnZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgbm9f ZGF0YV9mYWlsX3RhYmxlPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPUZhbHNl CisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAor ICAgICAgICAgICAgICMgQWRkICctLW5vLWRhdGEtZm9yLWZhaWxlZC10YWJsZXMnIGludG8KKyAg ICAgICAgICAgICAjIGV4cGVjdGVkX2NtZF9vcHRzIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAgICAg ICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tZGlzYWJsZS10cmlnZ2VycyddLAorICAgICAgICAg ICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2Jq ZWN0IHdpdGggb3B0aW9uIC0gTWlzY2VsbGFuZW91cycsCisgICAgICAgICBkaWN0KAorICAgICAg ICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAg ICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmls ZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywK KyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFz PVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZV9zZXRfc2Vzc2lvbl9hdXRoPVRy dWUsCisgICAgICAgICAgICAgICAgIGV4aXRfb25fZXJyb3I9VHJ1ZSwKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgIyBB ZGQgJy0tdXNlX3NldF9zZXNzaW9uX2F1dGgnIGludG8KKyAgICAgICAgICAgICAjIGV4cGVjdGVk X2NtZF9vcHRzIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJy0tZXhpdC1vbi1lcnJvciddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0 cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAg ICApKSwKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2Vy dmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNr aXBUZXN0KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0 IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNl cnZlclsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBh dGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5y ZXN0b3JlLlJlc3RvcmVNZXNzYWdlJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9y ZS5maWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMucmVzdG9yZS5CYXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5k cml2ZXIucHN5Y29wZzIuc2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAg ICdleHBvcnRfcGFzc3dvcmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFz c3dvcmRfZW52X21vY2ssIGJhdGNoX3Byb2Nlc3NfbW9jaywKKyAgICAgICAgICAgICAgICBmaWxl bmFtZV9tb2NrLCByZXN0b3JlX21lc3NhZ2VfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50 X3VzZXJfbW9jaywgc2VydmVyX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigp OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQsIGlkLCB1 c2VybmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICAgICAg ICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0Cisg ICAgICAgICAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAgICAgICAgICAgc2VsZi51c2VybmFt ZSA9IHVzZXJuYW1lCisKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAgc2VsZi5z ZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisK KyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNzX3BhcmFtc1snbmFt ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1z Wydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNl cnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3Bh cmFtc1sndXNlcm5hbWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3Zh bHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisK KyAgICAgICAgZmlsZW5hbWVfbW9jay5yZXR1cm5fdmFsdWUgPSBzZWxmLnBhcmFtc1snZmlsZSdd CisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNN b2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBi YXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5f dmFsdWU9VHJ1ZQorICAgICAgICApCisKKyAgICAgICAgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2Nr LnJldHVybl92YWx1ZSA9IFRydWUKKworICAgICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJf dXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNl cnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJTZXJ2ZXIgY29ubmVjdGVkLiI6CisgICAgICAgICAg ICBkYl9vd25lciA9IHNlcnZlcl9yZXNwb25zZVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAg ICAgICAgICAgc2VsZi5kYXRhID0gZGF0YWJhc2VfdXRpbHMuZ2V0X2RiX2RhdGEoZGJfb3duZXIp CisgICAgICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFbJ25hbWUnXQorCisgICAgICAg IHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0 ZSB0aGUgcmVzdG9yZSBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVy bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhz ZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRh WydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNzZXJ0IHJlc3RvcmVfbWVzc2FnZV9tb2Nr LmNhbGxlZAorICAgICAgICBhc3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAg ICAgIGlmIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNl bGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAg ICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNz X21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgaWYgc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0 IGluIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNz ZXJ0Tm90SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAgICAgICAg YmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAgICAgICAg ICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rl c3RfcmVzdG9yZV9tZXNzYWdlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90 ZXN0X3Jlc3RvcmVfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iYjQ1Mjg2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90 ZXN0cy90ZXN0X3Jlc3RvcmVfbWVzc2FnZS5weQpAQCAtMCwwICsxLDc2IEBACisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBp bXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9t IG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQg cGF0Y2gKKworCitjbGFzcyBSZXN0b3JlTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgor ICAgICIiIlRlc3QgdGhlIFJlc3RvcmVNZXNzYWdlIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0g WworICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3QnLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAg ICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0 ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAg ICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RvcmVfZmlsZScsCisgICAg ICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICdsb2NhbGhv c3QnLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAg ICAnNTQ0NCcsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAg ICAgICAgICAgICAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dv cmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAg ICAgICAgJ3Bvc3RncmVzJworICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBj bWQ9Ii90ZXN0X3BhdGgvcGdfcmVzdG9yZSIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IGV4dGVjdGVkX21zZz0iUmVzdG9yaW5nIGJhY2t1cCBvbiB0aGUgc2VydmVyICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIid0ZXN0X3Jlc3RvcmVfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCkn Li4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19y ZXN0b3JlIC0tZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJyZXN0 b3JlX2ZpbGUiIC0taG9zdCAibG9jYWxob3N0IicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnIC0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0 Z3JlcyInCisKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xz LnJlc3RvcmUuUmVzdG9yZU1lc3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBkZWYgcnVu VGVzdChzZWxmLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6CisgICAgICAgIGdldF9zZXJ2ZXJf ZGV0YWlsc19tb2NrLnJldHVybl92YWx1ZSA9IFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWyduYW1lJ10sXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSxcCisg ICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddCisKKyAgICAgICAgcmVzdG9yZV9v YmogPSBSZXN0b3JlTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQn XSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAg KnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sg dGhlIGV4cGVjdGVkIG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgYXNzZXJ0IHJlc3RvcmVfb2Jq Lm1lc3NhZ2UgPT0gc2VsZi5leHRlY3RlZF9tc2cKKworICAgICAgICAjIENoZWNrIHRoZSBjb21t YW5kCisgICAgICAgIG9ial9kZXRhaWxzID0gcmVzdG9yZV9vYmouZGV0YWlscyhzZWxmLmNsYXNz X3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYu ZXhwZXRjZWRfZGV0YWlsc19jbWQsIG9ial9kZXRhaWxzKQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jl c3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weSBiL3dlYi9yZWdyZXNzaW9uL3B5 dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKaW5kZXggM2U1MTdiNi4uNmY1N2M2NyAxMDA2 NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weQor KysgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CkBAIC0y MSw2ICsyMSw4IEBAIGltcG9ydCBjb25maWcKIGltcG9ydCByZWdyZXNzaW9uCiBmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHRlc3Rfc2V0dXAKIAorZnJvbSBwZ2FkbWluLnV0aWxzLnByZWZlcmVuY2Vz IGltcG9ydCBQcmVmZXJlbmNlcworCiBTRVJWRVJfR1JPVVAgPSB0ZXN0X3NldHVwLmNvbmZpZ19k YXRhWydzZXJ2ZXJfZ3JvdXAnXQogZmlsZV9uYW1lID0gb3MucGF0aC5yZWFscGF0aChfX2ZpbGVf XykKIApAQCAtODYsNyArODgsOCBAQCBkZWYgZ2V0X2NvbmZpZ19kYXRhKCk6CiAgICAgICAgICAg ICAgICAgImRiX3Bhc3N3b3JkIjogc3J2WydkYl9wYXNzd29yZCddLAogICAgICAgICAgICAgICAg ICJyb2xlIjogIiIsCiAgICAgICAgICAgICAgICAgInNzbG1vZGUiOiBzcnZbJ3NzbG1vZGUnXSwK LSAgICAgICAgICAgICAgICAidGFibGVzcGFjZV9wYXRoIjogc3J2LmdldCgndGFibGVzcGFjZV9w YXRoJywgTm9uZSkKKyAgICAgICAgICAgICAgICAidGFibGVzcGFjZV9wYXRoIjogc3J2LmdldCgn dGFibGVzcGFjZV9wYXRoJywgTm9uZSksCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5 X3BhdGhzIjogc3J2LmdldCgnZGVmYXVsdF9iaW5hcnlfcGF0aHMnLCBOb25lKQogICAgICAgICAg ICAgfQogICAgICAgICAgICAgaWYgJ2RiX3R5cGUnIGluIHNydjoKICAgICAgICAgICAgICAgICBk YXRhWydkYl90eXBlJ10gPSBzcnZbJ2RiX3R5cGUnXQpAQCAtNDQ1LDYgKzQ0OCwxMyBAQCBkZWYg ZGVsZXRlX3NlcnZlcl93aXRoX2FwaSh0ZXN0ZXIsIHNpZCk6CiAgICAgICAgIHVybCA9ICcvYnJv d3Nlci9zZXJ2ZXIvb2JqLycgKyBzdHIoU0VSVkVSX0dST1VQKSArICIvIgogICAgICAgICAjIENh bGwgQVBJIHRvIGRlbGV0ZSB0aGUgc2VydmVyCiAgICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLmRl bGV0ZSh1cmwgKyBzdHIoc2lkKSkKKworICAgICAgICBjbnQgPSAwCisgICAgICAgIGZvciBzIGlu IHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl06CisgICAgICAgICAgICBpZiBz WydzZXJ2ZXJfaWQnXSA9PSBpbnQoc2lkKToKKyAgICAgICAgICAgICAgICBkZWwgcmVncmVzc2lv bi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVtjbnRdCisgICAgICAgICAgICBjbnQgKz0gMQor CiAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxl PXN5cy5zdGRlcnIpCiAKQEAgLTU5Niw2ICs2MDYsNjQgQEAgZGVmIGdldF9kYl9zZXJ2ZXIoc2lk KToKICAgICByZXR1cm4gY29ubmVjdGlvbgogCiAKK2RlZiBzZXRfcHJlZmVyZW5jZShkZWZhdWx0 X2JpbmFyeV9wYXRoKToKKyAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KGNvbmZpZy5URVNUX1NR TElURV9QQVRIKQorICAgIGN1ciA9IGNvbm4uY3Vyc29yKCkKKworICAgIHBlcmYgPSBQcmVmZXJl bmNlcy5tb2R1bGUoJ3BhdGhzJykKKyAgICBwZ19wYXRoX3ByZWYgPSBwZXJmLnByZWZlcmVuY2Uo J3BnX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUoCisgICAgICAgICdT RUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBpZD0lcycgJSBwZ19w YXRoX3ByZWYucGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9uZSgp CisKKyAgICBpZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNlcl9w cmVmZXJlbmNlcyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8nLAorICAgICAgICAgICAgICAg ICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsncGcnXSwgcGdfcGF0aF9wcmVmLnBpZCkpCisgICAg ZWxzZToKKyAgICAgICAgcGdfcHJlZl9kZXRhaWxzID0gKHBnX3BhdGhfcHJlZi5waWQsIDEsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoWydwZyddKQorICAg ICAgICBjdXIuZXhlY3V0ZSgnSU5TRVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVpZCwg dmFsdWUpJworICAgICAgICAgICAgICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgcGdfcHJlZl9k ZXRhaWxzKQorCisgICAgcHBhc19wYXRoX3ByZWYgPSBwZXJmLnByZWZlcmVuY2UoJ3BwYXNfYmlu X2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAgJ1NFTEVDVCBw aWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlCisgICAgICAgIHBw YXNfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1c2VyX3ByZWYuZmV0Y2hv bmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhlY3V0ZSgnVVBEQVRFIHVz ZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ICcsCisgICAgICAgICAg ICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydwcGFzJ10sIHBwYXNfcGF0aF9wcmVmLnBp ZCkpCisgICAgZWxzZToKKyAgICAgICAgcHBhc19wcmVmX2RldGFpbHMgPSAocHBhc19wYXRoX3By ZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2JpbmFyeV9w YXRoWydwcGFzJ10pCisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZl cmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAgICAgICAgICAgICAgICAgICcgVkFMVUVTICg/ LD8sPyknLCBwcGFzX3ByZWZfZGV0YWlscykKKworICAgIGdwZGJfcGF0aF9wcmVmID0gcGVyZi5w cmVmZXJlbmNlKCdncGRiX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUo CisgICAgICAgICdTRUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBp ZD0lcycgJQorICAgICAgICBncGRiX3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVm ID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3Vy LmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlk ID0gPyAnLAorICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsnZ3BkYidd LCBncGRiX3BhdGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIGdwZGJfcHJlZl9kZXRh aWxzID0gKGdwZGJfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdF9iaW5hcnlfcGF0aFsnZ3BkYiddKQorICAgICAgICBjdXIuZXhlY3V0ZSgnSU5T RVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVpZCwgdmFsdWUpJworICAgICAgICAgICAg ICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgZ3BkYl9wcmVmX2RldGFpbHMpCisKKyAgICBjb25u LmNvbW1pdCgpCisKKwogZGVmIHJlbW92ZV9kYl9maWxlKCk6CiAgICAgIiIiVGhpcyBmdW5jdGlv biB1c2UgdG8gcmVtb3ZlIFNRTGl0ZSBEQiBmaWxlIiIiCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUo Y29uZmlnLlRFU1RfU1FMSVRFX1BBVEgpOgpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcnVu dGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQppbmRleCBkNzg2NjkyLi4yNmIy NWM3IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVn cmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtMTE0LDYgKzExNCw5IEBAIHRlc3RfY2xpZW50ID0gYXBw LnRlc3RfY2xpZW50KCkKIGRyaXZlciA9IE5vbmUKIGFwcF9zdGFydGVyID0gTm9uZQogaGFuZGxl X2NsZWFudXAgPSBOb25lCithcHAuUEdBRE1JTl9SVU5USU1FID0gVHJ1ZQoraWYgY29uZmlnLlNF UlZFUl9NT0RFIGlzIFRydWU6CisgICAgYXBwLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCiAKIHNl dGF0dHIodW5pdF90ZXN0LnJlc3VsdC5UZXN0UmVzdWx0LCAicGFzc2VkIiwgW10pCiAKQEAgLTIz NCw3ICsyMzcsNiBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICMgU29y dCBtb2R1bGUgbGlzdCBzbyB0aGF0IHRlc3Qgc3VpdGUgZXhlY3V0ZXMgdGhlIHRlc3QgY2FzZXMg c2VxdWVudGlhbGx5CiAgICAgbW9kdWxlX2xpc3QgPSBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LnJl Z2lzdHJ5Lml0ZW1zKCkKICAgICBtb2R1bGVfbGlzdCA9IHNvcnRlZChtb2R1bGVfbGlzdCwga2V5 PWxhbWJkYSBtb2R1bGVfdHVwbGU6IG1vZHVsZV90dXBsZVswXSkKLQogICAgIHJldHVybiBtb2R1 bGVfbGlzdAogCiAKQEAgLTM5Myw2ICszOTUsOSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18n OgogICAgICAgICAgICAgIyBDcmVhdGUgdGVzdCBzZXJ2ZXIKICAgICAgICAgICAgIHNlcnZlcl9p bmZvcm1hdGlvbiA9IHRlc3RfdXRpbHMuY3JlYXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXIp CiAKKyAgICAgICAgICAgIGlmIHNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLnNldF9wcmVmZXJlbmNlKHNlcnZlclsn ZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSkKKwogICAgICAgICAgICAgc3VpdGUgPSBnZXRfc3VpdGUo dGVzdF9tb2R1bGVfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2xpZW50LApkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rlc3Rf Y29uZmlnLmpzb24uaW4KaW5kZXggZWJjMTQ2Ni4uMTViMTMzYSAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgorKysgYi93ZWIvcmVncmVzc2lvbi90ZXN0X2Nv bmZpZy5qc29uLmluCkBAIC0yMyw3ICsyMywxMiBAQAogICAgICAgIm1haW50ZW5hbmNlX2RiIjog InBvc3RncmVzIiwKICAgICAgICJzc2xtb2RlIjogInByZWZlciIsCiAgICAgICAidGFibGVzcGFj ZV9wYXRoIjogIiIsCi0gICAgICAiZW5hYmxlZCI6IHRydWUKKyAgICAgICJlbmFibGVkIjogdHJ1 ZSwKKyAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyI6IHsKKyAgICAgICAgInBnIjogIi9vcHQv UG9zdGdyZVNRTC85LjQvYmluLyIsCisgICAgICAgICJwcGFzIjogIi9vcHQvZWRiL2FzMTAvYmlu LyIsCisgICAgICAgICJncGRiIjogIiIKKyAgICAgIH0KICAgICB9CiAgIF0sCiAgICJzZXJ2ZXJf dXBkYXRlX2RhdGEiOiBbCg== --0000000000003ccd2e056df237b5--