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 1fQ7gD-0004kd-46 for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Jun 2018 08:51:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fQ7gB-0007pI-Ni for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Jun 2018 08:50:59 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fQ7gA-0007p6-Qs for pgadmin-hackers@lists.postgresql.org; Tue, 05 Jun 2018 08:50:59 +0000 Received: from mail-ot0-x22c.google.com ([2607:f8b0:4003:c0f::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fQ7g6-0007yo-E2 for pgadmin-hackers@postgresql.org; Tue, 05 Jun 2018 08:50:57 +0000 Received: by mail-ot0-x22c.google.com with SMTP id w13-v6so1835828ote.11 for ; Tue, 05 Jun 2018 01:50:54 -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=ZGLsJNksRTH9jgZl5hetPB70zjBaHrEdUVrL35tMg5c=; b=mB1Tp0ufipYBgJd04vKWp326xcy1VawJz+pLAJX0kDAz5bIZQAKgd7z8q8WUrwxnZs w3Aj3EIABSayW3LZR6PyohZRnTvXxoeWq3KiXq9kXZToExu2M6Zy/DvnWQCgluCsjEBe PFcyEKhxHE4aMFgYXXdBS8WIjG1Myfjcag0ed1CZsEUOxT+8iy4Z8T6gbdoYfhUlMyYw eCEyFzRdwrKX2AFBc0GUqC/GtWyheULEV0O2Vk9236mqutvYPzPu2cXpPPZLtmJ8fXAu D7sH+UkkLS8WwtsGuxmO0vfN3230dU1vgpvlq+jTS5SAw7L9JsGC1+UxrLwqygGyAVIk ILNg== 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=ZGLsJNksRTH9jgZl5hetPB70zjBaHrEdUVrL35tMg5c=; b=qtpVRtj1wsntqZaMQyW8ksVjx5f5BWtIg1AY9x9smr1zcRhrRNmt3RSOk3yldI2JOS +JqkAmvbO0zyW2FZrrRj5/TFXCuqh+47IAHRbyf/7ic8trmDUlDEZAfGKBMV8AKCrh6o EM+ilsw/q6hg4OjSpkKa3cdsDQwsrBK8HsJPmTIYJIN9dJZl9Un6r043oxP//ElTK5IS GPRmiKkdzSAgRrxfeqRY1YTQFVlf1vcJIxRht6/Zn5MTh7uLqXYOWAgElcy/blsLk76U auH3RSM2sCJ4CyWaNeGgO5s5dxv0tnGqE6AJaPVCR2PkuFLEtZk7f8uFPqRamoJCyzxR 9JQA== X-Gm-Message-State: APt69E1jYURHFbWFg9o+O93c1bSp0kxG5BxucU4P3W0raN5YPyDvVLKk J4enILtzLdVE7ip6qlw8uh5xnXzG3wzx4yROdLQyyg== X-Google-Smtp-Source: ADUXVKI8Qm/4FFWNFFuFxR7J2kymahM9UuIEzVW61GxsYQrbXxfKaJhH6wGID5YFrZWhWb8HHsz2kdNRWxXxqpe+j3E= X-Received: by 2002:a9d:522:: with SMTP id 31-v6mr6587966otw.391.1528188653482; Tue, 05 Jun 2018 01:50:53 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:5301:0:0:0:0:0 with HTTP; Tue, 5 Jun 2018 01:50:52 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Tue, 5 Jun 2018 14:20:52 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Dave Page Cc: Joao De Almeida Pereira , Victoria Henry , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000d77316056de12594" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000d77316056de12594 Content-Type: multipart/alternative; boundary="000000000000d77311056de12592" --000000000000d77311056de12592 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 the >>>> paths to the SQLite database and through the logs couldn't figure out = 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 paths >> 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 >>>>>>> > 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 else s= .host >>>>>>>>> port =3D manager.local_bind_port if manager.use_ssh_tunnel else 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_jo= b_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/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:2= 4: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"= , 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'aciTreeIt= em'" >>>>>>>>>>>> >>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/we= belement.py", >>>>>>>>>>>> line 80, in click >>>>>>>>>>>> >>>>>>>>>>>> self._execute(Command.CLICK_ELEMENT) >>>>>>>>>>>> >>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/we= belement.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/we= bdriver.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/er= rorhandler.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 (22= 3, 604). Other >>>>>>>>>>>> element would receive the click:
>>>>>>>>>>> wcPanelBackground wcScrollableX wcScrollableY" style=3D"left: = 0px; right: >>>>>>>>>>>> 0px; bottom: 0px;">...
>>>>>>>>>>>> >>>>>>>>>>>> (Session info: chrome=3D66.0.3359.181) >>>>>>>>>>>> >>>>>>>>>>>> (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_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/support/w= ait.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 more >>>>>>>>>>>>>> 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: [E50= 1] line too long (91 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E50= 1] line too long (104 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E50= 1] line too long (85 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E50= 1] line too long (96 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E50= 1] line too long (91 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E50= 1] line too long (118 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:37: [E12= 1] continuation line under-indented for hanging indent >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:48: [E12= 2] continuation line missing indentation or outdented >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E25= 1] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E25= 1] unexpected spaces around keyword / parameter equals >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:51: [E50= 1] line too long (91 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:52: [E50= 1] line too long (94 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:53: [E50= 1] line too long (108 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:81: [E50= 1] line too long (113 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:82: [E50= 1] line too long (94 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:83: [E50= 1] line too long (108 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:111: [E5= 01] line too long (100 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:113: [E5= 01] line too long (94 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:114: [E5= 01] line too long (108 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:147: [E5= 01] line too long (93 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121= ] continuation line under-indented for hanging indent >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122= ] continuation line missing indentation or outdented >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:135: [E50= 1] line too long (80 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:137: [E50= 1] line too long (83 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:138: [E12= 2] continuation line missing indentation or outdented >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:139: [E12= 2] continuation line missing indentation or outdented >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:140: [E12= 2] continuation line missing indentation or outdented >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:191: [E50= 1] line too long (81 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:203: [E50= 1] line too long (80 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E12= 8] continuation line under-indented for visual indent >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E50= 1] line too long (94 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E12= 8] continuation line under-indented for visual indent >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E50= 1] line too long (94 > 79 characters) >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:216: [W39= 1] 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 in= dent >>>>>>>>>>>>>> >>>>>>>>>>>>>> 5 E122 continuation line missing indentation or outden= ted >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2 E128 continuation line under-indented for visual ind= ent >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2 E251 unexpected spaces around keyword / parameter eq= uals >>>>>>>>>>>>>> >>>>>>>>>>>>>> 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 err= or attached. We >>>>>>>>>>>>>> spent some time trying to understand the problem but we were= 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 paths t= hat also need >>>>>>>>>>>>>> coverage. >>>>>>>>>>>>>> >>>>>>>>>>>>>> The configuration change, maybe need to be updated. When we >>>>>>>>>>>>>> install multiple versions of postgres the binaries live in >>>>>>>>>>>>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes us >>>>>>>>>>>>>> think that this configuration should live near the server co= nfiguration, >>>>>>>>>>>>>> maybe? Also to maintain coherency on the naming maybe we sho= uld 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 >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Dave Page >>>>>>>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>>>>>>> Twitter: @pgsnake >>>>>>>>>>>> >>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>>>>>>> The Enterprise PostgreSQL Company >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Dave Page >>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>> Twitter: @pgsnake >>>>>>> >>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>> The Enterprise PostgreSQL Company >>>>>>> >>>>>> >>>>>> >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --000000000000d77311056de12592 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


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@ente= rprisedb.com> wrote:
<= div dir=3D"ltr">

On Tue, Jun 5, 2018 at 1:36 PM, Dave Page <dpage@pgadmin.org&= gt; wrote:
Hi

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


On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida Pereira <= span dir=3D"ltr"><jdealmeidapereira@pivotal.io> wrote:
Hi Khushboo,

Some tests are failing in greenplum:
The piece of code responsible for the error is:
=
if server['defa=
ult_binary_paths'] is not =
None:
test_utils.set_preference(server['default_binary_paths'])

con= fig.DEFAULT_BINARY_PATHS =3D {
"pg": str(server['default_binary_paths']['pg']= ),
"pp= as": str(server[<= span style=3D"color:rgb(106,135,89)">'default_binary_paths']['ppas']),
"gpdb"<= /span>: ""
}

Can you send me the test_config.json file?=C2=A0 The above = code sets the paths to the SQLite database and through the logs couldn'= t figure out the exact failure.=C2=A0
<= div>
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 {<=
br>        "pg": str(server['default_binary_paths']['pg']),
"ppas": str(server['default_binary_paths']['ppas']),=
"gpdb": str(server['default_binary_paths']['g= pdb'])
}
Without this code= , the test cases should work as I already set=C2=A0 paths through below cod= e.
    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 update= d patch.
=
=C2=A0
=C2=A0
<= div>
<= div class=3D"m_6691559589140134092m_-135466435915824739m_545379941642851226= 9m_-2106317768483674112m_-1197089741188147494markdown-here-wrapper">

test_backup_utils.py<= /code> 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 Vashi <khushboo.vashi@enterprisedb.com> wrote:


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

This looks good, except t= hat it's leaving the test_restore_database behind. Can we clean that up= please?

PFA updated patch.=C2= =A0
Th= anks.

On F= ri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi <khushboo.vashi@e= nterprisedb.com> wrote:
Hi Victoria,

Thanks for reviewing the= patch.
The tests were failing due to the latest commit #2b4605a9= d390cb44e5dfe9967c3adf2b28d04f1f=C2=A0 - Ensure backup/restore/mainten= ance work via SSH tunnels. Fixes #3355

I have fixe= d the issues and attached the updated patch.

Thank= s,
Khushboo=C2=A0

On Thu, May 3= 1, 2018 at 10:00 PM, Victoria Henry <vhenry@pivotal.io> wrot= e:
Hi there,

We've been noticing some issues with the tests on both our CI a= nd 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 Thu, May 31, 2018 at 1:16 AM Khushboo Vashi <khushboo.vash= i@enterprisedb.com> wrote:
Hi,

Please find the attached update= d patch with the fixes.
The test cases were only failing on MAC n= ot on Linux.

Thanks,
Khushboo

On Wed, May 30, = 2018 at 10:13 AM, Khushboo Vashi <khushboo.vashi@enterprised= b.com> wrote:


On Wed, May 30, 2018 at 1:05 AM, Dave Page <dpage@pgadmin.org> wrote:
Hi

On Mon, May 28, = 2018 at 8:09 AM, Khushboo Vashi <khushboo.vashi@enterprisedb= .com> wrote:
Hi,

please find the attached update= d patch for the test cases of Backup, Restore and Maintenance modules which= includes:

1. Unit test cases
2. End to= end regression test cases=C2=A0
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.=C2=A0
2) I've hit screensize related issues:
<= div>

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=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.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database

----------------------------------------------------------------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/f= eature_tests/pg_utilities_maintenance_test.py", line 56, in runTe= st

=C2=A0 =C2=A0 self._open_maintenance_dialogue()

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/f= eature_tests/pg_utilities_maintenance_test.py", line 75, in _open= _maintenance_dialogue

=C2=A0 =C2=A0 "*[.=3D'" + self.table_name + &quo= t;']/../*[@class=3D'aciTreeItem'"

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/= python2.7/site-packages/selenium/webdriver/remote/webelement.py&q= uot;, line 80, in click

=C2=A0 =C2=A0 self._execute(Command.CLICK_ELEMENT)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/= python2.7/site-packages/selenium/webdriver/remote/webelement.py&q= uot;, line 628, in _execute

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

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/= python2.7/site-packages/selenium/webdriver/remote/webdriver.py&qu= ot;, line 312, in execute

=C2=A0 =C2=A0 self.error_handler.check_response(response)=

=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/= python2.7/site-packages/selenium/webdriver/remote/errorhandler.py= ", line 242, in check_response

=C2=A0 =C2=A0 raise exception_class(message, screen, stacktrac= e)

WebDriverException: Message: unknown error: Element <span class= =3D"aciTreeItem">...</span> is not clickable at point (2= 23, 604). Other element would receive the click: <div class=3D"wcFr= ameCenter wcPanelBackground 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 (183d19265345f= 54ce39cbb94cf81ba5f15905011),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_resto= re_test.PGUtilitiesBackupFeatureTest)

Test for PG utilities - Backup and Restore

----------------------------------------------------------------------

Traceback (most recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/f= eature_tests/pg_utilities_backup_restore_test.py", line 93, in ru= nTest

=C2=A0 =C2=A0 self.page.fill_input_by_field_name("fi= le", "test_backup_file")

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regressio= n/feature_utils/pgadmin_page.py", line 211, in fill_input_by_fiel= d_name

=C2=A0 =C2=A0 self.wait_for_input_field_content(field_nam= e, field_content)

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regressio= n/feature_utils/pgadmin_page.py", line 251, in wait_for_input_fie= ld_content

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

=C2=A0 File "/Users/dpage/git/pgadmin4/web/regressio= n/feature_utils/pgadmin_page.py", line 337, in _wait_for

=C2=A0 =C2=A0 "Timed out waiting for " + waiting_for= _message

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

=C2=A0 =C2=A0 raise TimeoutException(message, screen, stacktra= ce)

TimeoutException: Message: Timed out waiting for field to contain &#= 39;test_backup_file'



(with screenshot attached)

Thanks.<= /div>

=
I have ran the feature tests with multi= ple servers many times but didn't get a single failure.
I hav= e asked Akshay to run on his machine, let see what he gets.
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
<= div class=3D"gmail_quote">

=C2=A0

Thanks,
Khushboo




On Wed, Apr 25, 2018 at 9:4= 0 PM, Joao De Almeida Pereira <jdealmeidapereira@pivotal.io= > wrote:
Hi Kh= ushboo,

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

We p= assed the tests through our CI the feature tests are not passing, but the l= inter fails:
= ./pgadmin/feature_tests/pg_utilities_backu= p_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: [E121] continuation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_batch_process.= py:51: [E122] 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: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 han= ging indent
5 E122 continuation line missing indentation or= outdented
2 E128 continuation line under-indented for vis= ual indent
2 E251 unexpected spaces around keyword / param= eter 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

F= or the feature tests, we realized we had to update the configuration, and w= e did that, but we get the following error attached. We spent some time try= ing to understand the problem but we were not successful.


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

The con= figuration change, maybe need to be updated. When we install multiple versi= ons of postgres the binaries live 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.

Thank= s
Victoria & Joao

On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi <khushboo.vashi@enter= prisedb.com> wrote:
Hi,

Please find the attached patch which c= overs test cases for the backup module (RM #3206).

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

Thanks,
Khu= shboo

<= font color=3D"#888888">


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

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






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

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






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

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

--000000000000d77311056de12592-- --000000000000d77316056de12594 Content-Type: application/octet-stream; name="RM_3206_ver4.patch" Content-Disposition: attachment; filename="RM_3206_ver4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ji1g1nbd0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX2JhY2t1 cF9yZXN0b3JlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGll c19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmI0YzFiYjIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTQwIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgdGltZQorZnJvbSBzZWxlbml1bS53ZWJk cml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVyV2FpdAorZnJvbSBzZWxlbml1bS53ZWJk cml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9y dCBpbXBvcnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBhcyBFQworZnJvbSByZWdyZXNzaW9uLmZlYXR1 cmVfdXRpbHMuYmFzZV9mZWF0dXJlX3Rlc3QgaW1wb3J0IEJhc2VGZWF0dXJlVGVzdAorZnJvbSBy ZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCisKK2ltcG9ydCBj b25maWcKKworCitjbGFzcyBQR1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJl VGVzdCk6CisgICAgIiIiIFRoaXMgY2xhc3MgdGVzdCBQRyB1dGlsaXRpZXMgLSBCYWNrdXAgYW5k IFJlc3RvcmUgdGVzdCBzY2VuYXJpb3MgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAg ICgiVGVzdCBmb3IgUEcgdXRpbGl0aWVzIC0gQmFja3VwIGFuZCBSZXN0b3JlIiwgZGljdCgpKQor ICAgIF0KKworICAgIGRlZiBiZWZvcmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydk ZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0 KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0 aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsn bmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBjb25uZWN0 aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVy Wydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMuZHJv cF9kYXRhYmFzZShjb25uZWN0aW9uLCAicGdfdXRpbGl0eV90ZXN0X2RiIikKKworICAgICAgICB0 ZXN0X3V0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgInBnX3V0aWxpdHlfdGVzdF9k YiIpCisgICAgICAgIHNlbGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorCisgICAgICAg IHNlbGYud2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMjApCisKKyAgICBk ZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3NlcnZlcihz ZWxmLnNlcnZlclsnbmFtZSddKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9p dGVtKCdEYXRhYmFzZXMnKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVt KCdwZ191dGlsaXR5X3Rlc3RfZGInKQorICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRf YnlfbGlua190ZXh0KCJUb29scyIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9wYXJ0aWFsX2xpbmtfdGV4dCgiQmFja3VwLi4uIikuY2xpY2soKQorCisgICAgICAgIHNlbGYu d2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAo CisgICAgICAgICAgICAgICAgQnkuWFBBVEgsCisgICAgICAgICAgICAgICAgIi8vbGFiZWxbY29u dGFpbnMoc3RyaW5nKCksICdGaWxlbmFtZScpXSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKSkK KworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMuZWxlbWVudF90b19iZV9jbGlja2FibGUoCisg ICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiLmJyb3dzZV9maWxlX2lucHV0IikpKS5jbGlj aygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiZmlsZSIs ICJ0ZXN0X2JhY2t1cCIpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vYnV0 dG9uW2NvbnRhaW5zKEBjbGFzcywnZmEtc2F2ZScpICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImFuZCBjb250YWlucyguLCdCYWNrdXAnKV0iKS5jbGljaygpCisKKyAgICAgICAg c2VsZi5wYWdlLndhaXRfZm9yX2VsZW1lbnRfdG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFt YmRhIGRyaXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9k YWwiKQorICAgICAgICApCisKKyAgICAgICAgc3RhdHVzID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBh dGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICInYmctc3VjY2VzcycpXSIpLnRleHQKKworICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhzdGF0dXMsICJTdWNjZXNzZnVsbHkgY29tcGxldGVkLiIpCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvL3NwYW5bY29udGFpbnMoc3RyaW5nKCksICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIidDbGljayBoZXJlIGZvciBkZXRhaWxzLicpXSIpLmNs aWNrKCkKKyAgICAgICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3BbY29u dGFpbnMoQGNsYXNzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiJ2JnLWRldGFpbGVkLWRlc2MnKV0iKS50ZXh0CisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihz ZWxmLnNlcnZlclsnbmFtZSddLCBzdHIoY29tbWFuZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o ImZyb20gZGF0YWJhc2UgJ3BnX3V0aWxpdHlfdGVzdF9kYiciLCBzdHIoY29tbWFuZCkpCisgICAg ICAgIHNlbGYuYXNzZXJ0SW4oInRlc3RfYmFja3VwIiwgc3RyKGNvbW1hbmQpKQorICAgICAgICBz ZWxmLmFzc2VydEluKCJwZ19kdW1wIiwgc3RyKGNvbW1hbmQpKQorCisgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsJ3djRmxvYXRpbmdGb2N1cycp IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXS8vZGl2W2NvbnRhaW5zKEBjbGFz cywnZmEtY2xvc2UnKV0iKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVt ZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5maW5k X2J5X3BhcnRpYWxfbGlua190ZXh0KCJSZXN0b3JlLi4uIikuY2xpY2soKQorCisgICAgICAgIHNl bGYud2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAg ICAoCisgICAgICAgICAgICAgICAgQnkuWFBBVEgsCisgICAgICAgICAgICAgICAgIi8vbGFiZWxb Y29udGFpbnMoc3RyaW5nKCksICdGaWxlbmFtZScpXSIKKyAgICAgICAgICAgICkKKyAgICAgICAg KSkKKworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMuZWxlbWVudF90b19iZV9jbGlja2FibGUo CisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiLmJyb3dzZV9maWxlX2lucHV0IikpKS5j bGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiZmls ZSIsICJ0ZXN0X2JhY2t1cCIpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2J1 dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXVwbG9hZCcpIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiIGFuZCBjb250YWlucyguLCdSZXN0b3JlJyldIikuY2xpY2soKQorCisgICAg ICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAgICAgICAgICAg IGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIuYWpz LW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFnZS5maW5kX2J5 X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQorICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygpLCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnQ2xpY2sgaGVyZSBmb3IgZGV0YWlscy4nKV0i KS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9w W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICdiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0 SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQpKQorICAgICAgICBzZWxmLmFzc2Vy dEluKCJ0ZXN0X2JhY2t1cCIsIHN0cihjb21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigi cGdfcmVzdG9yZSIsIHN0cihjb21tYW5kKSkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94 cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKV0iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIvL2Rpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3Nl JyldIikuY2xpY2soKQorCisgICAgZGVmIGFmdGVyKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2Uu cmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZlcikKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRp bHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydz c2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29u bmVjdGlvbiwgInBnX3V0aWxpdHlfdGVzdF9kYiIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LnB5IGIvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRlbmFuY2VfdGVzdC5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODA2MjY4Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRlbmFuY2VfdGVzdC5w eQpAQCAtMCwwICsxLDExMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgXypfICBjb2Rp bmc6IHV0Zi04IF8qXworaW1wb3J0IHRpbWUKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBv cnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1v bi5ieSBpbXBvcnQgQnkKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4 cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJh c2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVyZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5w eXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscworCisKK2NsYXNzIFBHVXRpbGl0aWVz TWFpbnRlbmFuY2VGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgorICAgICIiIiBUaGlzIGNs YXNzIHRlc3QgUEcgdXRpbGl0aWVzIHRlc3Qgc2NlbmFyaW9zICIiIgorCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoIlRlc3QgZm9yIFBHIG1haW50ZW5hbmNlOiBkYXRhYmFzZSBwZ19tYWlu dGVuYW5jZSIsIGRpY3QoCisgICAgICAgICAgICBkYXRhYmFzZV9uYW1lPSdwZ19tYWludGVuYW5j ZScsCisgICAgICAgICAgICB0YWJsZV9uYW1lPSdwZ19tYWludGVuYW5jZV90YWJsZScsCisgICAg ICAgICAgICB0ZXN0X2xldmVsPSdkYXRhYmFzZScKKyAgICAgICAgKSksCisgICAgICAgICgiVGVz dCBmb3IgUEcgbWFpbnRlbmFuY2U6IGRhdGFiYXNlIiwgZGljdCgKKyAgICAgICAgICAgIGRhdGFi YXNlX25hbWU9J3BnX21haW50ZW5hbmNlJywKKyAgICAgICAgICAgIHRhYmxlX25hbWU9J3BnX21h aW50ZW5hbmNlX3RhYmxlJywKKyAgICAgICAgICAgIHRlc3RfbGV2ZWw9J3RhYmxlJworICAgICAg ICApKSwKKyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNl cnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5z a2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNl dCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg Y29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBz ZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxm LnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAg ICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0ZXN0X3V0 aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5kYXRhYmFzZV9uYW1lKQorICAg ICAgICB0ZXN0X3V0aWxzLmNyZWF0ZV90YWJsZShzZWxmLnNlcnZlciwgc2VsZi5kYXRhYmFzZV9u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX25hbWUpCisg ICAgICAgIHNlbGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBzZWxmLndh aXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDIwKQorCisgICAgZGVmIHJ1blRl c3Qoc2VsZik6CisgICAgICAgIHNlbGYuX29wZW5fbWFpbnRlbmFuY2VfZGlhbG9ndWUoKQorICAg ICAgICAjIHRpbWUuc2xlZXAKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vYnV0 dG9uW2NvbnRhaW5zKEBjbGFzcywnZmEtc2F2ZScpIGFuZCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBjb250YWlucyguLCdPSycpXSIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5w YWdlLndhaXRfZm9yX2VsZW1lbnRfdG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFtYmRhIGRy aXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9kYWwiKQor ICAgICAgICApCisgICAgICAgIHNlbGYuX3ZlcmlmeV9jb21tYW5kKCkKKworICAgIGRlZiBfb3Bl bl9tYWludGVuYW5jZV9kaWFsb2d1ZShzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9v cGVuX3NlcnZlcihzZWxmLnNlcnZlclsnbmFtZSddKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xl X29wZW5fdHJlZV9pdGVtKCdEYXRhYmFzZXMnKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29w ZW5fdHJlZV9pdGVtKHNlbGYuZGF0YWJhc2VfbmFtZSkKKyAgICAgICAgaWYgc2VsZi50ZXN0X2xl dmVsID09ICd0YWJsZSc6CisgICAgICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9p dGVtKCdTY2hlbWFzJykKKyAgICAgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0 ZW0oJ3B1YmxpYycpCisgICAgICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVt KCdUYWJsZXMnKQorICAgICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAg ICAgICAgICAgIi8vKltAaWQ9J3RyZWUnXS8vIgorICAgICAgICAgICAgICAgICIqWy49JyIgKyBz ZWxmLnRhYmxlX25hbWUgKyAiJ10vLi4vKltAY2xhc3M9J2FjaVRyZWVJdGVtJyIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl0iKS5jbGljaygpCisgICAgICAg IHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIlRvb2xzIikuY2xpY2soKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiTWFpbnRlbmFuY2Uu Li4iKS5jbGljaygpCisgICAgICAgIHRpbWUuc2xlZXAoMC41KQorCisgICAgZGVmIF92ZXJpZnlf Y29tbWFuZChzZWxmKToKKyAgICAgICAgc3RhdHVzID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgo Ii8vZGl2W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICInYmctc3VjY2VzcycpXSIpLnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQorICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygpLCIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiAnQ2xpY2sgaGVyZSBmb3IgZGV0YWlscy4nKV0iKS5jbGljaygp CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9wW2NvbnRhaW5z KEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICdi Zy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorICAgICAgICBpZiBzZWxmLnRlc3RfbGV2ZWwgPT0g J2RhdGFiYXNlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbW1hbmQsICJWQUNV VU0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihWRVJCT1NFKVxu UnVubmluZyBRdWVyeToiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi XG5WQUNVVU0gVkVSQk9TRTsiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoY29tbWFuZCwgIlZBQ1VVTSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiKFZFUkJPU0UpXG5SdW5uaW5nIFF1ZXJ5OiIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJcblZBQ1VVTSBWRVJCT1NFIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiBwdWJsaWMuIiArIHNlbGYudGFibGVfbmFtZSArICI7 IikKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNs YXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKV0vLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImRpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3NlJyldIikuY2xpY2soKQorCisgICAgZGVm IGFmdGVyKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZl cikKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1 c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAg ICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3Bv cnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAg ICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5kYXRhYmFzZV9u YW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CmluZGV4IDEyNWRiODAuLjA1MTMz NjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQorKysg Yi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKQEAgLTEwOSw4ICsxMDksNyBA QCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgICAgICBlbHNlOgog ICAgICAgICAgICAgICAgIHNlbGYuY21kICs9IGNtZEFyZyhhcmcpCiAKLSAgICBAcHJvcGVydHkK LSAgICBkZWYgbWVzc2FnZShzZWxmKToKKyAgICBkZWYgZ2V0X3NlcnZlcl9kZXRhaWxzKHNlbGYp OgogICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0 LCByb2xlcyBldGMKICAgICAgICAgcyA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCiAgICAgICAg ICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJyZW50X3VzZXIuaWQKQEAgLTEyMywxMyArMTIy LDE5IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgaG9zdCA9 IG1hbmFnZXIubG9jYWxfYmluZF9ob3N0IGlmIG1hbmFnZXIudXNlX3NzaF90dW5uZWwgZWxzZSBz Lmhvc3QKICAgICAgICAgcG9ydCA9IG1hbmFnZXIubG9jYWxfYmluZF9wb3J0IGlmIG1hbmFnZXIu dXNlX3NzaF90dW5uZWwgZWxzZSBzLnBvcnQKIAorICAgICAgICByZXR1cm4gcy5uYW1lLCBob3N0 LCBwb3J0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKKyAgICAgICAg bmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKKwogICAgICAgICBp ZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5PQkpFQ1Q6CiAgICAgICAgICAgICByZXR1cm4g XygKICAgICAgICAgICAgICAgICAiQmFja2luZyB1cCBhbiBvYmplY3Qgb24gdGhlIHNlcnZlciAn ezB9JyAiCiAgICAgICAgICAgICAgICAgImZyb20gZGF0YWJhc2UgJ3sxfScuLi4iCiAgICAgICAg ICAgICApLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KAot ICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAgICAgICAgICAg ICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAg c2VsZi5kYXRhYmFzZQogICAgICAgICAgICAgKQpAQCAtMTM3LDEzICsxNDIsMTMgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmV0dXJuIF8oIkJhY2tp bmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGUg c2VydmVyICd7MH0nLi4uIikuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0p Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAg ICAgICAgICAgICAgICBuYW1lLCBob3N0LCBwb3J0CiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgKQogICAgICAgICBlbGlmIHNlbGYuYmFja3VwX3R5cGUgPT0gQkFDS1VQLlNFUlZFUjoK ICAgICAgICAgICAgIHJldHVybiBfKCJCYWNraW5nIHVwIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5m b3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAg ICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgIGVs c2U6CkBAIC0xNTEsMTcgKzE1Niw3IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNj KToKICAgICAgICAgICAgIHJldHVybiAiVW5rbm93biBCYWNrdXAiCiAKICAgICBkZWYgZGV0YWls cyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBs aWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAgICAgICAgcyA9IFNlcnZlci5xdWVyeS5m aWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJyZW50X3VzZXIu aWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAgZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFV TFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihz ZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFu YWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAotICAgICAgICBwb3J0ID0gbWFuYWdlci5s b2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMucG9ydAorICAg ICAgICBuYW1lLCBob3N0LCBwb3J0ID0gc2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQogCiAgICAg ICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCkBAIC0xNzEsNyArMTY2LDcgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgICAgICJmcm9tIGRhdGFi YXNlICd7MX0nLi4uIgogICAgICAgICAgICAgKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInsw fSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihz Lm5hbWUpLAorICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAg ICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBo dG1sLnNhZmVfc3RyKHBvcnQpLAogICAgICAgICAgICAgICAgICksCkBAIC0xODEsNyArMTc2LDcg QEAgY2xhc3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmVzICs9 IF8oIkJhY2tpbmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uICIKICAgICAgICAgICAgICAgICAg ICAgICJ0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0g KHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5u YW1lKSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAg ICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRt bC5zYWZlX3N0cihwb3J0KQogICAgICAgICAgICAgICAgICkKQEAgLTE4OSw3ICsxODQsNyBAQCBj bGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGVsaWYgc2VsZi5iYWNr dXBfdHlwZSA9PSBCQUNLVVAuU0VSVkVSOgogICAgICAgICAgICAgcmVzICs9IF8oIkJhY2tpbmcg dXAgdGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7 MX06ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFt ZSksCisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAg ICAgICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwu c2FmZV9zdHIocG9ydCkKICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9iYWNrdXAvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3Rf YmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3Rlc3RzL3Rlc3RfYmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNzZhM2IKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3Qu cHkKQEAgLTAsMCArMSw0NjMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworaW1wb3J0 IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MKK2Zyb20gcGdhZG1pbi50b29scy5i YWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBv cnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVf ZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxz IGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2 ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCisKK2lm IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwg TWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1h Z2ljTW9jaworCisKK2NsYXNzIEJhY2t1cENyZWF0ZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIlRlc3QgdGhlIEJhY2t1cENyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNjZW5hcmlv cyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMn LAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAg ICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwK KyAgICAgICAgICAgICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1b XSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAv am9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJi b3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0 aW9uIHNlY3Rpb25zIHRvIGFsbCBkYXRhJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg Y2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAg ICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0 NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1 cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0 X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBw cmVfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAg ICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1jJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VjdGlvbj1wcmUtZGF0YScsICctLXNl Y3Rpb249ZGF0YScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlY3Rpb249 cG9zdC1kYXRhJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9kYXRhJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvbmx5 X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9RmFsc2UKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICct LWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfZGF0YScsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb25s eV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUsCisgICAgICAg ICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1 cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1kYXRhLW9ubHknXSwKKyAgICAgICAg ICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXIn XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfc2No ZW1hJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1 cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAg IGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFt cz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAg ICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVz PVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBvbmx5X2RhdGE9RmFsc2UsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVj dCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3Jt YXQ9cCcsICctLXNjaGVtYS1vbmx5J10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9v cHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAg ICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBm b3JtYXQgcGxhaW4gYW5kIGRuc19vd25lcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01 NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNr dXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVz dF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICctLW5vLW93 bmVyJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAo J1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEbyBub3Qgc2F2ZSBwcml2aWxl Z2UsJworICAgICAgICAgJyB0YWJsZXNwYWNlLCB1bmxvZ2dlZCB0YWJsZSBkYXRhJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAg Zm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAg ICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX3By aXZpbGVnZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdW5sb2dnZWRfdGJsX2RhdGE9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3RhYmxlc3BhY2U9VHJ1ZQorICAgICAgICAgICAgICks CisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAg ICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tbm8tcHJpdmlsZWdlcycsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICctLW5vLXRhYmxlc3BhY2VzJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tdW5sb2dnZWQtdGFibGUtZGF0YSddLAorICAgICAgICAgICAgIG5v dF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9 WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0 IHdpdGggb3B0aW9uIC0gYWxsIHF1ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAg ICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAg ICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFj a3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rl c3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZV9jb2x1bW5faW5zZXJ0cz1UcnVlLAorICAg ICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZT1UcnVlLAorICAgICAgICAgICAg ICAgICB1c2VfaW5zZXJ0X2NvbW1hbmRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVf ZHJvcF9kYXRhYmFzZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9i YWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsn LS1jcmVhdGUnLCAnLS1jbGVhbicsICctLWluc2VydHMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1jb2x1bW4taW5zZXJ0cyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0 aW9uIC0gYWxsIHF1ZXJpZXMgYW5kIGZvcm1hdCBjdXN0b20nLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9 J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3Rv bScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2No ZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VfY29sdW1uX2luc2VydHM9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgdXNlX2luc2VydF9jb21tYW5kcz1UcnVlLAorICAgICAgICAgICAgICAg ICBpbmNsdWRlX2Ryb3BfZGF0YWJhc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJy0taW5zZXJ0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LWNvbHVtbi1pbnNlcnRzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsn LS1jcmVhdGUnLCAnLS1jbGVhbiddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1b MCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qg d2l0aCBvcHRpb24gLSBtaXNjZWxsYW5lb3VzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAg ICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAg ICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0 PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2Jh Y2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAg ICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10s CisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV9xdW90aW5nPVRydWUsCisgICAg ICAgICAgICAgICAgIHVzZV9zZXRfc2Vzc2lvbl9hdXRoPVRydWUsCisgICAgICAgICAgICAgICAg IHdpdGhfb2lkcz1UcnVlLAorICAgICAgICAgICAgICAgICBkcW91dGU9VHJ1ZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAg ICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLXF1b3RlLWFsbC1pZGVu dGlmaWVycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9s bGFyLXF1b3RpbmcnLCAnLS1vaWRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6YXRpb24nXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IGZvcm1hdCB0YXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3RhcicsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJy0tdmVyYm9zZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWJsb2Jz JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZm9ybWF0PXQnXSwKKyAgICAg ICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRf ZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAg dGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVz dF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAg ICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfc2VydmVy X2ZpbGUnLAorICAgICAgICAgICAgICAgICBkcW91dGU9RmFsc2UsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdHlwZT0nc2VydmVyJworICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0nLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVj dGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIGdsb2JhbHMnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2dsb2JhbF9maWxlJywKKyAgICAgICAgICAg ICAgICAgZHFvdXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIHR5cGU9J2dsb2JhbHMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICB1cmw9Jy9iYWNrdXAvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZh dWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAor ICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUg c2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFt ZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdwZ2Fk bWluLnRvb2xzLmJhY2t1cC5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNr dXAuY3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1 cE1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuZmlsZW5hbWVfd2l0 aF9maWxlX21hbmFnZXJfcGF0aCcpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5C YXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29wZzIu c2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBvcnRfcGFzc3dv cmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRfZW52X21vY2ss IGJhdGNoX3Byb2Nlc3NfbW9jaywKKyAgICAgICAgICAgICAgICBmaWxlbmFtZV9tb2NrLCBiYWNr dXBfbWVzc2FnZV9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2 ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlX2RiKToKKyAgICAgICAgICAgICAgICBzZWxm Lm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAg ICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAg ICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBz ZWxmLm1haW50ZW5hbmNlX2RiID0gbWFpbnRlbmFuY2VfZGIKKworICAgICAgICBzZWxmLmRiX25h bWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZl ciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihz ZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJf bW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZp cnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZmlsZW5hbWVfbW9jay5yZXR1 cm5fdmFsdWUgPSBzZWxmLnBhcmFtc1snZmlsZSddCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19t b2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3Zh bHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBN YWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisKKyAg ICAgICAgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLnJldHVybl92YWx1ZSA9IFRydWUKKworICAg ICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwg c2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJT ZXJ2ZXIgY29ubmVjdGVkLiI6CisgICAgICAgICAgICBkYl9vd25lciA9IHNlcnZlcl9yZXNwb25z ZVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YWJh c2VfdXRpbHMuZ2V0X2RiX2RhdGEoZGJfb3duZXIpCisgICAgICAgICAgICBzZWxmLmRiX25hbWUg PSBzZWxmLmRhdGFbJ25hbWUnXQorCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxm LnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAgICBy ZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAg c2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVz cG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisg ICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAg ICBhc3NlcnQgYmFja3VwX21lc3NhZ2VfbW9jay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNo X3Byb2Nlc3NfbW9jay5jYWxsZWQKKworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRz OgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAg ICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAg ICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydh cmdzJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2Nt ZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKAorICAgICAgICAgICAgICAgICAg ICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3Nf bGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfbWVzc2FnZS5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGVhY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkKQEAgLTAs MCArMSwxNDkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20g Zmxhc2sgaW1wb3J0IFJlc3BvbnNlCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20g cGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpZiBzeXMudmVy c2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9j aworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sK KworCitjbGFzcyBCYWNrdXBNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi VGVzdCB0aGUgQmFja3VwTWVzc2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAg ICAgKCdXaGVuIEJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBj bGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuU0VSVkVSLAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNr dXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAg ICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAg ICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0t cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAg ICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAg ICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0t ZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAg ICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCB0aGUgc2Vy dmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICd0ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxv Y2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScv dGVzdF9wYXRoL3BnX2R1bXAgLS1maWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnImJhY2t1cF9maWxlIiAtLWhvc3QgImxvY2FsaG9zdCIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRh YmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIEJhY2t1cCBn bG9iYWwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuR0xPQkFMUywKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAg ICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdiYWNrdXBfZmls ZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAg ICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAg ICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisg ICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAgJy0t bm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAg ICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg ICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCB0aGUgZ2xvYmFsIG9iamVjdHMgb24gdGhl IHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9iYWNrdXBfc2VydmVy IChsb2NhbGhvc3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2Nt ZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmlsZSAiYmFja3VwX2ZpbGUiICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcgLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3Jl cyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0t ZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNr dXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAg ICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdiYWNrdXBf ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAg ICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAg ICAgICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScs CisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAg Jy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAg ICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCBhbiBvYmplY3Qgb24gdGhlIHNlcnZl ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9iYWNrdXBfc2VydmVyIChsb2Nh bGhvc3Q6NTQ0NCknIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20gZGF0YWJhc2Ug J3Bvc3RncmVzJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0 X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0IiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNl ICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWlu LnRvb2xzLmJhY2t1cC5CYWNrdXBNZXNzYWdlLmdldF9zZXJ2ZXJfZGV0YWlscycpCisgICAgZGVm IHJ1blRlc3Qoc2VsZiwgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgorICAgICAgICBnZXRfc2Vy dmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10s XAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1 cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5 cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFy YW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVk IG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgYXNzZXJ0IGJhY2t1cF9vYmoubWVzc2FnZSA9PSBz ZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAg b2JqX2RldGFpbHMgPSBiYWNrdXBfb2JqLmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3Bh cmFtc1snYXJncyddKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuZXhwZXRjZWRfZGV0YWls c19jbWQsIG9ial9kZXRhaWxzKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3Rlc3RzL3Rlc3RfYmFja3VwX3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rl c3RzL3Rlc3RfYmFja3VwX3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjNjMGM5OGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv dGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkKQEAgLTAsMCArMSwxMTEgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKK2ltcG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2ltcGxl anNvbiBhcyBqc29uCisKKworZGVmIGNyZWF0ZV9iYWNrdXBfam9iKHRlc3RlciwgdXJsLCBwYXJh bXMpOgorICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgcmVzcG9uc2UgPSB0ZXN0ZXIu cG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMocGFy YW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29u JykKKyAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgcmVzcG9uc2Vf ZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgam9i X2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorICAgIHJldHVybiBqb2JfaWQK KworCitkZWYgcnVuX2JhY2t1cF9qb2IodGVzdGVyLCBqb2JfaWQsIGV4cGVjdGVkX3BhcmFtcywg YXNzZXJ0SW4sIGFzc2VydE5vdEluKToKKyAgICBjbnQgPSAwCisgICAgd2hpbGUgMToKKyAgICAg ICAgaWYgY250ID4gMToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgQ2hlY2sgdGhlIHBy b2Nlc3MgbGlzdAorICAgICAgICByZXNwb25zZTEgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nl c3MvP189Jy5mb3JtYXQoCisgICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkp CisgICAgICAgIGFzc2VydCByZXNwb25zZTEuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgICAgIHBy b2Nlc3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor CisgICAgICAgIGlmIGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4ZWN1dGlvbl90aW1lJyBp biBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgICAgICBicmVhaworICAgICAgICB0aW1lLnNsZWVw KDAuNSkKKyAgICAgICAgY250ICs9IDEKKworICAgIGFzc2VydCAnZXhlY3V0aW9uX3RpbWUnIGlu IHByb2Nlc3NfbGlzdFswXQorICAgIGFzc2VydCAnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQor ICAgIGFzc2VydCAnZXhpdF9jb2RlJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICBhc3NlcnQgcHJv Y2Vzc19saXN0WzBdWydleGl0X2NvZGUnXSBpbiBleHBlY3RlZF9wYXJhbXNbCisgICAgICAgICdl eHBlY3RlZF9leGl0X2NvZGUnCisgICAgXQorCisgICAgaWYgZXhwZWN0ZWRfcGFyYW1zWydleHBl Y3RlZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3BhcmFtc1snZXhw ZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydEluKG9wdCwgcHJvY2Vzc19saXN0 WzBdWydkZXRhaWxzJ10pCisgICAgaWYgZXhwZWN0ZWRfcGFyYW1zWydub3RfZXhwZWN0ZWRfY21k X29wdHMnXToKKyAgICAgICAgZm9yIG9wdCBpbiBleHBlY3RlZF9wYXJhbXNbJ25vdF9leHBlY3Rl ZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0Tm90SW4ob3B0LCBwcm9jZXNzX2xpc3Rb MF1bJ2RldGFpbHMnXSkKKworICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgIHBf ZGV0YWlscyA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgKKyAg ICAgICAgam9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICApCisgICAgYXNz ZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICBwX2RldGFpbHNfZGF0YSA9IGpz b24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgcF9kZXRhaWxz ID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPScuZm9ybWF0KAor ICAgICAgICBqb2JfaWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICkK KyAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgIHBfZGV0YWlsc19k YXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBj bnQgPSAwCisgICAgIyBSZXRyaWV2ZSB0aGUgYmFja3VwIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICB3 aGlsZSAxOgorICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gZ2V0X3BhcmFtcyhwX2RldGFpbHNf ZGF0YSkKKyAgICAgICAgaWYgc3RhdHVzIG9yIGNudCA+PSAxMDoKKyAgICAgICAgICAgIGJyZWFr CisKKyAgICAgICAgcF9kZXRhaWxzID0gdGVzdGVyLmdldCgKKyAgICAgICAgICAgICcvbWlzYy9i Z3Byb2Nlc3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgam9i X2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAg ICAgICAgYXNzZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICAgICAgcF9kZXRh aWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgICAgICBjbnQgKz0gMQorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAjIENoZWNrIHRo ZSBqb2IgaXMgY29tcGxldGUuCisgICAgYmFja3VwX2FjayA9IHRlc3Rlci5wdXQoJy9taXNjL2Jn cHJvY2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQorICAgIGFzc2VydCBiYWNrdXBfYWNrLnN0YXR1 c19jb2RlID09IDIwMAorICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNr LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgYXNzZXJ0IGJhY2t1cF9hY2tfcmVzWydzdWNj ZXNzJ10gPT0gMQorCisKK2RlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgIG91dCA9IDAKKyAgICBv dXRfZG9uZSA9IEZhbHNlCisgICAgZXJyID0gMAorICAgIGVycl9kb25lID0gRmFsc2UKKyAgICBp ZiAnb3V0JyBpbiBkYXRhOgorICAgICAgICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0 J11bJ3BvcyddCisKKyAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAg ICAgb3V0X2RvbmUgPSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICBpZiAnZXJyJyBpbiBkYXRh OgorICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAg ICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgZXJyX2RvbmUgPSBk YXRhWydlcnInXVsnZG9uZSddCisKKyAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQg ZXJyX2RvbmUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVz dF9iYXRjaF9wcm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3Rf YmF0Y2hfcHJvY2Vzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc0 Y2E1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rl c3RfYmF0Y2hfcHJvY2Vzcy5weQpAQCAtMCwwICsxLDIxMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2Fk bWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vz c0Rlc2MKK2Zyb20gcGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJB Q0tVUAorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwg KDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0 dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRl c3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg dHlwZT1CQUNLVVAuU0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01 NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAg ICAgICAgICAgImJhY2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAor ICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAn LS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAg ICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAg ICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAn LS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAg ICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwX3NlcnZlcicKKyAgICAgICAg ICAgICApCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHR5cGU9QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAg ICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAg ICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAg ICAgICAgICAgICAgICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0t aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAg ICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVz IiwKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAg ICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAg ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAg ICAgICAgKQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHR5cGU9QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAg IHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAg ICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAg ICAgICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1o b3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAg ICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAg ICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMi LAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAg ICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAg ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAg ICAgICApCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5i YWNrdXAuQmFja3VwTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1p bi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuY3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3Vy cmVudF91c2VyX21vY2ssIGN1cnJlbnRfdXNlciwgZGJfbW9jaywKKyAgICAgICAgICAgICAgICBj dXJyZW50X2FwcF9tb2NrLCBwb3Blbl9tb2NrLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6Cisg ICAgICAgIGN1cnJlbnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQg PSAxCisgICAgICAgIGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKwor ICAgICAgICBkZWYgZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmog PSBsb2FkcyhqLmRlc2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJ UHJvY2Vzc0Rlc2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJhY2t1 cF90eXBlLCBzZWxmLmNsYXNzX3BhcmFtc1sndHlwZSddKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoY21kX29iai5iZmlsZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10pCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmRhdGFiYXNlLCBzZWxmLmNsYXNzX3Bh cmFtc1snZGF0YWJhc2UnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmou Y21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgImJhY2t1cF9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tbm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tZGF0YWJhc2UgInszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9u LmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICBnZXRfc2Vy dmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10s XAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1 cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5 cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFy YW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisg ICAgICAgICAgICBkZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncydd CisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBi ZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKwor ICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChw b3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2Vs Zi5fY2hlY2tfbGlzdChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxm LCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1sn Y21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNz ZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2Fy Z3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcwor CisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0Cisg ICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisg ICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAg ICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4n CisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qo c2VsZiwgcCwgYmFja3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAg ICAgICAgICAgICBwcm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3Mo KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAg ICAgICAgICAgICAgIHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2Rl ID0gMQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4 OjU2LjMxNTQ0NSArMDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQor ICAgICAgICAgICAgICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAg c2VsZi5hcmd1bWVudHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29t bWFuZCA9IGNtZAorICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAg ICAgICAgcHJvY2Vzc19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAg ICAgICAgICBUZXN0TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nl c3NfaW5mb19tb2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92 YWx1ZSA9IHAubGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1 ZSkpCisgICAgICAgIGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFz c2VydCAnZGVzYycgaW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NmEzYzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpAQCAtMCww ICsxLDU4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBh cmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQg dGVzdF91dGlscyBhcyB1dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRl c3RfYmFja3VwX3V0aWxzIGFzIGJhY2t1cF91dGlscworCisKK2NsYXNzIEJhY2t1cEpvYlRlc3Qo QmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggdGhl IGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2Iv ezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAn LS1ibG9icyddLAorICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICAg ICApCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg aWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhz IGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJl bnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHVybCA9IHNl bGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFj a3VwIGpvYgorICAgICAgICBqb2JfaWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Io c2VsZi50ZXN0ZXIsIHVybCwgc2VsZi5wYXJhbXMpCisgICAgICAgIGJhY2t1cF91dGlscy5ydW5f YmFja3VwX2pvYihzZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhw ZWN0ZWRfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0 Tm90SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3Bn YWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21h aW50ZW5hbmNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzNkYjgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90 ZXN0X2JhdGNoX3Byb2Nlc3NfbWFpbnRlbmFuY2UucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBn YWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1w cywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sg aW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gK KworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJU ZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAg ICgnV2hlbiBtYWludGFpbmVkIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdz PVsKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAg ImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAg ICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAg ICAgICAgICAgICAgICAgICAgICctLWRibmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9z dGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAg ICAgICAgICAiVkFDVVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAg ICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAn dmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxs JzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZh Y3V1bSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9T RTsnCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5j ZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMu Y3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywg c2VydmVyX21vY2ssIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywg cG9wZW5fbW9jayk6CisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBj dXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3Mg VGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBo b3N0LCBwb3J0KToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAg ICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQK KworICAgICAgICBkZWYgZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9v YmogPSBsb2FkcyhqLmRlc2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2Jq LCBJUHJvY2Vzc0Rlc2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLnF1 ZXJ5LCBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhjbWRfb2JqLm1lc3NhZ2UsIHNlbGYuZXhwZWN0ZWRfbXNnKQorICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMoY21kX29iai5kYXRhLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddKQor CisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ3Vz ZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1sncG9ydCddKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1 ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0 dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVf ZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9 IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddCisgICAgICAgICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAg ICAgICAgICAgZGVzYz1tYWludGVuYW5jZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFz c19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJn cyddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhh cyBiZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQK KworICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFy dChwb3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAg c2VsZi5fY2hlY2tfbGlzdChwLCBtYWludGVuYW5jZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0 YXJ0KHNlbGYsIHBvcGVuX21vY2ssIHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3Nf cGFyYW1zWydjbWQnXQorCisgICAgICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAg ICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAg ICAgICBhc3NlcnQgY21kX3Rlc3QgaW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYn IGluIGt3YXJncworCisgICAgICAgICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAg ICBwYXNzCisKKyAgICAgICAgcG9wZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVF ZmZlY3QKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2Fs bGVkCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nl c3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQ cm9jZXNzLicKKyAgICAgICAgICAgJ3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hl Y2tfbGlzdChzZWxmLCBwLCBtYWludGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9j aywKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVz dE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJn cywgY21kKToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBz ZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAx OC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRf dGltZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAg ICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAg ICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdl ID0gTm9uZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3Zh bHVlID0gWworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAg ICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBb VHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMn IGluIHJldF92YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVh dGVfbWFpbnRlbmFuY2Vfam9iLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVz dHMvdGVzdF9jcmVhdGVfbWFpbnRlbmFuY2Vfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjFlMDFmMWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKQEAgLTAs MCArMSwxNDAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdGltZQoraW1wb3J0 IHJhbmRvbQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBh cmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQg dGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRp bHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRp bHMKKworCitjbGFzcyBNYWludGVuYW5jZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAg ICIiIk1haW50ZW5hbmNlIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAg ICAgICAoJ1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlv bnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0n LAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZD0nVkFDVVVNIFZFUkJPU0UnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQorCisg ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5h cnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAg ICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7 MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgor ICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRi X2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAg dXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAg ICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpz b24uZHVtcHMoc2VsZi5wYXJhbXNbJ2RhdGEnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2Jf aWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAor ICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAg ICBicmVhaworICAgICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAg ICByZXNwb25zZTEgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1h dCgKKyAgICAgICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgICAgIHByb2Nlc3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorCisgICAgICAgICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVj dXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisg ICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAg ICAgYXNzZXJ0ICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFz c2VydCAnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29k ZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4 aXRfY29kZSddIGluIHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgc2VsZi5hc3Nl cnRJbihzZWxmLmV4cGVjdGVkX2NtZCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAg ICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNl bGYudGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAg ICAgam9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg cF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vz cy97MH0vezF9L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFu ZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRh ID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAg IyBSZXRyaWV2ZSB0aGUgYmFja3VwIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgd2hpbGUgMToK KyAgICAgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBNYWludGVuYW5jZUpvYlRlc3QuZ2V0X3Bh cmFtcyhwX2RldGFpbHNfZGF0YSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAg ICAgICBicmVhaworCisgICAgICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoCisg ICAgICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQo MSwgOTk5OTk5OSkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRh ID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAg ICAgIHRpbWUuc2xlZXAoMSkKKworICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUu CisgICAgICAgIGJhY2t1cF9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97 MH0nLmZvcm1hdChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNr LnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2Fkcyhi YWNrdXBfYWNrLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWxzKGJhY2t1cF9hY2tfcmVzWydzdWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisg ICAgZGVmIGdldF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2Rv bmUgPSBGYWxzZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAg ICAgICAgaWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFu ZCBkYXRhWydvdXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291 dCddOgorICAgICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisg ICAgICAgIGlmICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBh bmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydl cnInXToKKyAgICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKwor ICAgICAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNl X2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uv dGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGQwZDFkCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVf am9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDE5OSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZnJvbSBw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9t IHBnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51 dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZl cl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFz ZV91dGlscworCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2Nr IGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBp bXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIE1haW50ZW5hbmNlQ3JlYXRlSm9iVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNs YXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2Jq ZWN0IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg Y2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAg ICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgIG9wPSdWQUNVVU0nLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6 ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAgICAg ICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1 ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3sw fS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnVkFDVVVNIFZFUkJPU0U7 XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdp dGggVkFDVVVNIEZVTEwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgb3A9J1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAor ICAgICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2 YWN1dW1fZnVsbD1UcnVlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAg ICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJ1ZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4nXSwK KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggdGhl IEFOQUxZWkUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3Rf bWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0n cG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9 J0FOQUxZWkUnLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1UcnVlLAorICAgICAg ICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1f ZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAg ICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WydBTkFMWVpFIFZFUkJPU0U7XG4nXSwKKyAgICAgICAg ICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBSRUlO REVYJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50 ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdSRUlO REVYJywKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAg ICAgICAgIHZhY3V1bV9mcmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxs PUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WydSRUlOREVYIERBVEFCQVNFIHBvc3RncmVzO1xuJ10sCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0aCB0 aGUgQ0xVU1RFUicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVz dF9tYWludGVuYW5jZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBv cD0nQ0xVU1RFUicsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAg ICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnQ0xVU1RFUjtcbiddLAorICAgICAgICAgKSkK KyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydk ZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0 KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0 aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsn bmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRv b2xzLm1haW50ZW5hbmNlLk1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWlu dGVuYW5jZS5CYXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIu cHN5Y29wZzIuc2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBv cnRfcGFzc3dvcmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRf ZW52X21vY2ssCisgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLCBtZXNzYWdlX21v Y2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9k aWN0WyJkYXRhYmFzZSJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBh cmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNl bGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgICAgICBjbGFz cyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Qs IHBvcnQsIGlkLCB1c2VybmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAor ICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlk ID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAg ICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5h bWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19y ZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAg IG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmF0 Y2hfcHJvY2Vzc19tb2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAg ICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21v Y2suc3RhcnQgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAg ICAgICApCisgICAgICAgIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBU cnVlCisKKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2Vy dmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImlu Zm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2 ZXJfcmVzcG9uc2VbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0 YSA9IGRhdGFiYXNlX3V0aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2Vs Zi5kYl9uYW1lID0gc2VsZi5kYXRhWyduYW1lJ10KKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFj a3VwIGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1z KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsn am9iX2lkJ10KKworICAgICAgICBhc3NlcnQgbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBh c3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAgICAgIHByaW50KGJhdGNoX3By b2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddKQorICAgICAgICBpZiBzZWxm LmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVk X2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBd WzFdWydhcmdzJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90 ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWlu dGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiODllZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2FnZS5weQpA QCAtMCwwICsxLDEyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBmbGFzayBp bXBvcnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWlu LnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3MgTWFpbnRlbmFuY2VNZXNzYWdl VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgTWFpbnRlbmFuY2UgTWVz c2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50YWlu ZWQgdGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFt cz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVt X2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzog RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAg ICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBWRVJCT1NFOycKKworICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBGVUxMIFZFUkJP U0Ugb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Fu YWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFs c2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBUcnVlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgIGNtZD0iVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAg ICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gRlVMTCBWRVJCT1NFOycKKworICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBBTkFM WVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAg ICAnb3AnOiAnQU5BTFlaRScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg ICAgICBjbWQ9IkFOQUxZWkUgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAg ICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKEFuYWx5emUpIiwKKyAgICAgICAgICAgICBl eHBldGNlZF9kZXRhaWxzX2NtZD0nQU5BTFlaRSBWRVJCT1NFOycKKworICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBSRUlOREVYJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg ICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnUkVJ TkRFWCcsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJi b3NlJzogRmFsc2UKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJS RUlOREVYO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJN YWludGVuYW5jZSAoUmVpbmRleCkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21k PSdSRUlOREVYOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRo ZSBzZXJ2ZXIgd2l0aCBDTFVTVEVSJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgICAgICAnb3AnOiAnQ0xVU1RFUicsCisgICAgICAgICAgICAgICAgICAg ICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1f ZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IkNMVVNURVIgVkVSQk9TRTtcbiIKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKENsdXN0ZXIp IiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQ0xVU1RFUiBWRVJCT1NFOycK KworICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAg IG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAgICkKKworICAgICAgICAjIENo ZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAgIGFzc2VydCBtYWludGVu YW5jZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sg dGhlIGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBtYWludGVuYW5jZV9vYmouZGV0YWls cyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o c2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS9fX2luaXRfXy5weQppbmRleCA0NWQzODE2Li41OGJjMjUxIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3Jlc3RvcmUvX19pbml0X18ucHkKQEAgLTg2LDggKzg2LDcgQEAgY2xhc3MgUmVzdG9yZU1lc3Nh Z2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2Vs Zi5jbWQgKz0gY21kQXJnKGFyZykKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBtZXNzYWdlKHNl bGYpOgorICAgIGRlZiBnZXRfc2VydmVyX2RldGFpbHMoc2VsZik6CiAgICAgICAgICMgRmV0Y2gg dGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwogICAgICAg ICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1 c2VyX2lkPWN1cnJlbnRfdXNlci5pZApAQCAtMTAwLDMwICs5OSwyNSBAQCBjbGFzcyBSZXN0b3Jl TWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5k X2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAogICAgICAgICBwb3J0 ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNl IHMucG9ydAogCisgICAgICAgIHJldHVybiBzLm5hbWUsIGhvc3QsIHBvcnQKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICBuYW1lLCBob3N0LCBwb3J0ID0g c2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQorCiAgICAgICAgIHJldHVybiBfKCJSZXN0b3Jpbmcg YmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCi0gICAgICAgICAgICAiezB9 ICh7MX06ezJ9KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCksCisgICAgICAgICAgICAiezB9 ICh7MX06ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpLAogICAgICAgICApCiAKICAgICBk ZWYgZGV0YWlscyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIg ZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAgICAgICAgcyA9IFNlcnZl ci5xdWVyeS5maWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJy ZW50X3VzZXIuaWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAgZnJvbSBwZ2FkbWluLnV0 aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25f bWFuYWdlcihzZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5kX2hv c3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAotICAgICAgICBwb3J0ID0g bWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMu cG9ydAotCisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWls cygpCiAgICAgICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCiAgICAgICAgIHJlcyArPSBo dG1sLnNhZmVfc3RyKAogICAgICAgICAgICAgXygKICAgICAgICAgICAgICAgICAiUmVzdG9yaW5n IGJhY2t1cCBvbiB0aGUgc2VydmVyICd7MH0nLi4uIgogICAgICAgICAgICAgKS5mb3JtYXQoCi0g ICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChzLm5hbWUsIGhvc3QsIHBvcnQp CisgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChuYW1lLCBob3N0LCBwb3J0 KQogICAgICAgICAgICAgKQogICAgICAgICApCiAKQEAgLTIwNiw2ICsyMDAsNyBAQCBkZWYgY3Jl YXRlX3Jlc3RvcmVfam9iKHNpZCk6CiAKICAgICBpZiBfZmlsZSBpcyBOb25lOgogICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwKICAgICAg ICAgICAgIHN1Y2Nlc3M9MCwKICAgICAgICAgICAgIGVycm9ybXNnPV8oIkZpbGUgY291bGQgbm90 IGJlIGZvdW5kLiIpCiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3Rz L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRjaF9w cm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3By b2Nlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhkNjkyYQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRj aF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTU0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor aW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9y dCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLnJlc3RvcmUg aW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5 cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxz ZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQ cm9jZXNzVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9j ZXNzIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gcmVzdG9yZSBz ZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAg ICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgInJlc3RvcmVf ZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAg ICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAg ICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScs CisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAg ICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICAgICBjbWQ9J3Jlc3RvcmVfc2VydmVyJworICAgICAgICAgICAgICkKKyAgICAgICAg ICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuUmVzdG9yZU1l c3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nl c3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5j dXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9j aywgY3VycmVudF91c2VyLCBkYl9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwX21v Y2ssIHBvcGVuX21vY2ssIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgY3VycmVu dF91c2VyLmlkID0gMQorICAgICAgICBjdXJyZW50X3VzZXJfbW9jay5pZCA9IDEKKyAgICAgICAg Y3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxzZQorCisgICAgICAgIGRlZiBk Yl9zZXNzaW9uX2FkZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29iaiA9IGxvYWRzKGouZGVz YykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQcm9jZXNzRGVzYykK KyAgICAgICAgICAgIHByaW50KGNtZF9vYmopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJyAtLWZpbGUgInJlc3RvcmVfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1w b3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lICJ7 Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7M30iJy5mb3JtYXQoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3Qn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn cG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp KQorCisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJldHVybl92YWx1ZSA9IFwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAorICAgICAgICAgICAgc2VsZi5j bGFzc19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9y dCddCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Np b25fYWRkX21vY2sKKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3RvcmVNZXNzYWdlKAorICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3Mn XQorICAgICAgICApCisKKyAgICAgICAgcCA9IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRl c2M9cmVzdG9yZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAor ICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENo ZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBw KQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlz dChwLCByZXN0b3JlX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9j aywgcCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAg ICAgICAgY2xhc3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVz dCBpbiBjbWQKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAg ICAgICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBw b3Blbl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0 YXJ0KCkKKworICAgICAgICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgn cGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAg ICAndXBkYXRlX3Byb2Nlc3NfaW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIHJl c3RvcmVfb2JqLCB1cGRhdGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAg IHByb2Nlc3NfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAg ICAgc2VsZi5waWQgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAg ICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1 ICswMDAwJworICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAg ICAgICAgc2VsZi5kZXNjID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3Vt ZW50cyA9ICIgIi5qb2luKGFyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21k CisgICAgICAgICAgICAgICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9j ZXNzX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRl c3RNb2NrUHJvY2VzcyhyZXN0b3JlX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9j ZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRf dmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFs dWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAgICAgICBh c3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwYzkwYgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkK QEAgLTAsMCArMSwxOTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCitp bXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQorCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisK K2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhv bl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRp bHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2ltcG9ydCBwZ2FkbWluLnRv b2xzLmJhY2t1cC50ZXN0cy50ZXN0X2JhY2t1cF91dGlscyBhcyBiYWNrdXBfdXRpbHMKKworCitp ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gs IE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBN YWdpY01vY2sKKworCitjbGFzcyBSZXN0b3JlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6Cisg ICAgIiIiQmFja3VwIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAg ICAoJ1doZW4gcmVzdG9yZSB0aGUgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucycsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3Vz dG9tJywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2 ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAg ICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Rlc3RfcmVzdG9yZV9kYXRhYmFzZScKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAg ICAgICAgICAgICBiYWNrdXBfb3B0aW9ucz1kaWN0KAorICAgICAgICAgICAgICAgICBwYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAg ICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAg ICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICAgICAgdGFibGVzPVtd LAorICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Rlc3RfcmVzdG9yZV9kYXRhYmFzZScK KyAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1h dD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRf b3B0cz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZh dWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAor ICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUg c2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFt ZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNyZWF0ZV9i YWNrdXAoc2VsZik6CisgICAgICAgIHVybCA9IHNlbGYuYmFja3VwX29wdGlvbnNbJ3VybCddLmZv cm1hdChzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgam9iX2lkID0gYmFja3VwX3V0aWxzLmNyZWF0 ZV9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydwYXJhbXMnXSkKKyAg ICAgICAgYmFja3VwX3V0aWxzLnJ1bl9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCBqb2JfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydl eHBlY3RlZF9wYXJhbXMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0SW4sIHNlbGYuYXNzZXJ0Tm90SW4pCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToK KyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJl bnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlcnZlcl9y ZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9p ZCkKKyAgICAgICAgZGJfaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNl bGYucGFyYW1zWydkYXRhYmFzZSddKQorCisgICAgICAgIHNlbGYuY3JlYXRlX2JhY2t1cCgpCisg ICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAj IENyZWF0ZSB0aGUgcmVzdG9yZSBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5w b3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5k dW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRz KHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25z ZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGls ZSAxOgorICAgICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEg PSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nl c3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisg ICAgICAgICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScg aW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0 aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0ICdl eGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3RpbWUn IGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vz c19saXN0WzBdCisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGlu IHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRf b3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxz J10pCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAg Zm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBz ZWxmLmFzc2VydE5vdEluKG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAg ICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYu dGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAg am9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9k ZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97 MH0vezF9L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9t LnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0g anNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBS ZXRyaWV2ZSB0aGUgcmVzdG9yZSBqb2IgcHJvY2VzcyBsb2dzCisgICAgICAgIGNudCA9IDAKKyAg ICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBSZXN0b3JlSm9i VGVzdC5nZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRhKQorICAgICAgICAgICAgaWYgc3RhdHVzIG9y IGNudCA+PSAxMDoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBwX2RldGFp bHMgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97 MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgam9iX2lkLCBv dXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICAgICApCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAg ICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIGNudCArPSAxCisgICAgICAgICAgICB0aW1lLnNs ZWVwKDEpCisKKyAgICAgICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICBy ZXN0b3JlX2FjayA9IHNlbGYudGVzdGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0 KGpvYl9pZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3RvcmVfYWNrLnN0YXR1c19j b2RlLCAyMDApCisgICAgICAgIHJlc3RvcmVfYWNrX3JlcyA9IGpzb24ubG9hZHMocmVzdG9yZV9h Y2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVz dG9yZV9hY2tfcmVzWydzdWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGdldF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2RvbmUgPSBG YWxzZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAgICAgICAg aWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRh WydvdXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgor ICAgICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgICAg IGlmICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0 YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydlcnInXToK KyAgICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgICAg ICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCisKKyAgICBkZWYgdGVh ckRvd24oc2VsZik6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlv bigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZl clsncG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICAp CisgICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5wYXJhbXNbJ2Rh dGFiYXNlJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rl c3RfcmVzdG9yZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjljZDgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9jcmVhdGVfam9iX3Vu aXRfdGVzdC5weQpAQCAtMCwwICsxLDMxOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor aW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9v bHMucmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50 X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBh cyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscwor CitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0 Y2gsIE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNo LCBNYWdpY01vY2sKKworCitjbGFzcyBSZXN0b3JlQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVy YXRvcik6CisgICAgIiIiVGVzdCB0aGUgUmVzdG9yZUNyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNj ZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggZGVmYXVsdCBv cHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jl c3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBjdXN0 b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAg ICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAg ICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qg d2l0aCB0aGUgc2VjdGlvbnMgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVz dG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAg ICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBz Y2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRhdGE9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgcHJlX2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcG9zdF9kYXRhPVRy dWUsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBv bmx5X3NjaGVtYT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0 b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgICMgUGxlYXNlIGluY2x1ZGUgc2VjdGlvbnMgZGF0 YSBoZXJlLCByaWdodCBub3cgdGhpcyBpcyBhIGJ1ZworICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tam9icycsICcyJ10sCisgICAgICAgICAgICAgbm90X2V4 cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICMgQmVsb3cgb3B0aW9ucyBzaG91bGQg YmUgZW5hYmxlZCBvbmNlIHdlIGZpeCB0aGUgaXNzdWUgIzMzNjgKKyAgICAgICAgICAgICAjIG5v dF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tZGF0YS1vbmx5JywgJy0tc2NoZW1hLW9ubHknXSwKKyAg ICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiByZXN0b3JlIHRoZSBvYmplY3Qgd2l0aCBUeXBlIG9mIG9iamVjdHMnLAor ICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2 ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9 J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAg ICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIG5vX29mX2pvYnM9JzIn LAorICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1kYXRhLW9ubHknXSwKKyAgICAgICAgICAgICBu b3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgIyBCZWxvdyBvcHRpb25zIHNo b3VsZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBpc3N1ZSAjMzM2OAorICAgICAgICAgICAg ICMgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScsICctLW5vLW93bmVyJ10s CisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAgICAgICAgICkp LAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEbyBub3Qgc2F2 ZScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3Jl X3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAg aG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAg IHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFt cz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAg ICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1U cnVlLAorICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHNj aGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUsCisg ICAgICAgICAgICAgICAgIGRuc19wcml2aWxlZ2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5z X3RhYmxlc3BhY2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9kYXRhPUZhbHNlCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAg ICAgICAgICMgQWRkICctLW5vLXByaXZpbGVnZXMnIHRvIHRoZSBleHBlY3RlZF9jbWQgb25jZSAj MzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1uby1vd25lcics CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXRhYmxlc3BhY2VzJ10sCisg ICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVj dGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVz dG9yZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBRdWVyaWVzJywKKyAgICAgICAgIGRpY3QoCisgICAg ICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAg IHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rl c3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBm aWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20n LAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVt YXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgY2xlYW49VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg c2luZ2xlX3RyYW5zYWN0aW9uPVRydWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1 cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsn LS1jcmVhdGUnLCAnLS1jbGVhbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LXNpbmdsZS10cmFuc2FjdGlvbiddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0 cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAg ICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9uIC0gRGlzYmFs ZScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3Jl X2ZpbGUnLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhv c3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1 c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAg ICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVl LAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9 W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGRpc2FibGVfdHJpZ2dlcj1UcnVlLAorICAgICAgICAgICAgICAgICBub19kYXRhX2ZhaWxf dGFibGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9RmFsc2UKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAg ICAgIyBBZGQgJy0tbm8tZGF0YS1mb3ItZmFpbGVkLXRhYmxlcycgaW50bworICAgICAgICAgICAg ICMgZXhwZWN0ZWRfY21kX29wdHMgb25jZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVj dGVkX2NtZF9vcHRzPVsnLS1kaXNhYmxlLXRyaWdnZXJzJ10sCisgICAgICAgICAgICAgbm90X2V4 cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwg Tm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBv cHRpb24gLSBNaXNjZWxsYW5lb3VzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2Jh Y2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAg ICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1dGg9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgZXhpdF9vbl9lcnJvcj1UcnVlLAorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS11c2Vf c2V0X3Nlc3Npb25fYXV0aCcgaW50bworICAgICAgICAgICAgICMgZXhwZWN0ZWRfY21kX29wdHMg b25jZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1leGl0 LW9uLWVycm9yJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg IF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1 bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisg ICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBz ZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1l J10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMucmVzdG9yZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0 b3JlLmN1cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuUmVz dG9yZU1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLmZpbGVuYW1l X3dpdGhfZmlsZV9tYW5hZ2VyX3BhdGgnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0 b3JlLkJhdGNoUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLnV0aWxzLmRyaXZlci5wc3lj b3BnMi5zZXJ2ZXJfbWFuYWdlci5TZXJ2ZXJNYW5hZ2VyLicKKyAgICAgICAgICAgJ2V4cG9ydF9w YXNzd29yZF9lbnYnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGV4cG9ydF9wYXNzd29yZF9lbnZf bW9jaywgYmF0Y2hfcHJvY2Vzc19tb2NrLAorICAgICAgICAgICAgICAgIGZpbGVuYW1lX21vY2ss IHJlc3RvcmVfbWVzc2FnZV9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfdXNlcl9tb2Nr LCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lKToK KyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5o b3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAg ICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5h bWUKKworICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9 IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKworICAgICAgICBt b2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9y dCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2Vy bmFtZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBtb2Nr X3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAg ICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBm aWxlbmFtZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFyYW1zWydmaWxlJ10KKworICAgICAg ICBiYXRjaF9wcm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJsZXMgPSBNYWdpY01vY2soCisgICAg ICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGJhdGNoX3Byb2Nl c3NfbW9jay5zdGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVl CisgICAgICAgICkKKworICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52X21vY2sucmV0dXJuX3Zh bHVlID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25u ZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVyX3Jlc3Bv bnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIGRiX293bmVy ID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCisgICAgICAgICAgICBz ZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9vd25lcikKKyAgICAgICAg ICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAgICAgICAgdXJsID0gc2Vs Zi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSByZXN0 b3JlIGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1z KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsn am9iX2lkJ10KKworICAgICAgICBhc3NlcnQgcmVzdG9yZV9tZXNzYWdlX21vY2suY2FsbGVkCisg ICAgICAgIGFzc2VydCBiYXRjaF9wcm9jZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2Vs Zi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3Rl ZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAg ICAgICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxs X2FyZ3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBz ZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5u b3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigK KyAgICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9j ZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3Jl X21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9y ZV9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDUyODYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3Rf cmVzdG9yZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsNzYgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj CisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0 b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVy YXRvcgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBv cnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisK K2NsYXNzIFJlc3RvcmVNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVz dCB0aGUgUmVzdG9yZU1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAg ICgnV2hlbiByZXN0b3JlIG9iamVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0 NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9y ZScsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmls ZScsCisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAg ICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywK KyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAg ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAg ICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9z dGdyZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3Rf cGF0aC9wZ19yZXN0b3JlIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRf bXNnPSJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAiJ3Rlc3RfcmVzdG9yZV9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAorICAg ICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX3Jlc3RvcmUgLS1m aWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnInJlc3RvcmVfZmlsZSIg LS1ob3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcg LS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKwor ICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5S ZXN0b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRlZiBydW5UZXN0KHNlbGYs IGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxzX21v Y2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUn XSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3Rv cmVNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFz c19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0 ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgcmVzdG9yZV9vYmoubWVzc2FnZSA9 PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAg ICAgb2JqX2RldGFpbHMgPSByZXN0b3JlX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydj bWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xh c3NfcGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9k ZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9weXRo b25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3Rf dXRpbHMvdGVzdF91dGlscy5weQppbmRleCAzZTUxN2I2Li42ZjU3YzY3IDEwMDY0NAotLS0gYS93 ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CisrKyBiL3dlYi9y ZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKQEAgLTIxLDYgKzIxLDgg QEAgaW1wb3J0IGNvbmZpZwogaW1wb3J0IHJlZ3Jlc3Npb24KIGZyb20gcmVncmVzc2lvbiBpbXBv cnQgdGVzdF9zZXR1cAogCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5jZXMgaW1wb3J0IFBy ZWZlcmVuY2VzCisKIFNFUlZFUl9HUk9VUCA9IHRlc3Rfc2V0dXAuY29uZmlnX2RhdGFbJ3NlcnZl cl9ncm91cCddCiBmaWxlX25hbWUgPSBvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKQogCkBAIC04 Niw3ICs4OCw4IEBAIGRlZiBnZXRfY29uZmlnX2RhdGEoKToKICAgICAgICAgICAgICAgICAiZGJf cGFzc3dvcmQiOiBzcnZbJ2RiX3Bhc3N3b3JkJ10sCiAgICAgICAgICAgICAgICAgInJvbGUiOiAi IiwKICAgICAgICAgICAgICAgICAic3NsbW9kZSI6IHNydlsnc3NsbW9kZSddLAotICAgICAgICAg ICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNwYWNlX3BhdGgnLCBOb25l KQorICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNwYWNl X3BhdGgnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMiOiBz cnYuZ2V0KCdkZWZhdWx0X2JpbmFyeV9wYXRocycsIE5vbmUpCiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBpZiAnZGJfdHlwZScgaW4gc3J2OgogICAgICAgICAgICAgICAgIGRhdGFbJ2RiX3R5 cGUnXSA9IHNydlsnZGJfdHlwZSddCkBAIC00NDUsNiArNDQ4LDEzIEBAIGRlZiBkZWxldGVfc2Vy dmVyX3dpdGhfYXBpKHRlc3Rlciwgc2lkKToKICAgICAgICAgdXJsID0gJy9icm93c2VyL3NlcnZl ci9vYmovJyArIHN0cihTRVJWRVJfR1JPVVApICsgIi8iCiAgICAgICAgICMgQ2FsbCBBUEkgdG8g ZGVsZXRlIHRoZSBzZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKHVybCAr IHN0cihzaWQpKQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgZm9yIHMgaW4gcmVncmVzc2lv bi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXToKKyAgICAgICAgICAgIGlmIHNbJ3NlcnZlcl9p ZCddID09IGludChzaWQpOgorICAgICAgICAgICAgICAgIGRlbCByZWdyZXNzaW9uLnBhcmVudF9u b2RlX2RpY3RbInNlcnZlciJdW2NudF0KKyAgICAgICAgICAgIGNudCArPSAxCisKICAgICBleGNl cHQgRXhjZXB0aW9uOgogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVy cikKIApAQCAtNTk2LDYgKzYwNiw2NCBAQCBkZWYgZ2V0X2RiX3NlcnZlcihzaWQpOgogICAgIHJl dHVybiBjb25uZWN0aW9uCiAKIAorZGVmIHNldF9wcmVmZXJlbmNlKGRlZmF1bHRfYmluYXJ5X3Bh dGgpOgorICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlRFU1RfU1FMSVRFX1BBVEgp CisgICAgY3VyID0gY29ubi5jdXJzb3IoKQorCisgICAgcGVyZiA9IFByZWZlcmVuY2VzLm1vZHVs ZSgncGF0aHMnKQorICAgIHBnX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncGdfYmluX2Rp cicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAgJ1NFTEVDVCBwaWQs IHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlIHBnX3BhdGhfcHJlZi5w aWQKKyAgICApCisgICAgdXNlcl9wcmVmID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlm IHVzZXJfcHJlZjoKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2Vz IFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlkID0gPycsCisgICAgICAgICAgICAgICAgICAgIChkZWZh dWx0X2JpbmFyeV9wYXRoWydwZyddLCBwZ19wYXRoX3ByZWYucGlkKSkKKyAgICBlbHNlOgorICAg ICAgICBwZ19wcmVmX2RldGFpbHMgPSAocGdfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10pCisgICAgICAgIGN1ci5l eGVjdXRlKCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisg ICAgICAgICAgICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBwZ19wcmVmX2RldGFpbHMpCisK KyAgICBwcGFzX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncHBhc19iaW5fZGlyJykKKwor ICAgIHVzZXJfcHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZS T00gdXNlcl9wcmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAgICAgcHBhc19wYXRoX3By ZWYucGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9uZSgpCisKKyAg ICBpZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNlcl9wcmVmZXJl bmNlcyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAgICAgICAgICAgICAgICAg KGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMnXSwgcHBhc19wYXRoX3ByZWYucGlkKSkKKyAgICBl bHNlOgorICAgICAgICBwcGFzX3ByZWZfZGV0YWlscyA9IChwcGFzX3BhdGhfcHJlZi5waWQsIDEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMn XSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJlZmVyZW5jZXMocGlk LCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMgKD8sPyw/KScsIHBw YXNfcHJlZl9kZXRhaWxzKQorCisgICAgZ3BkYl9wYXRoX3ByZWYgPSBwZXJmLnByZWZlcmVuY2Uo J2dwZGJfYmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAg J1NFTEVDVCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlCisg ICAgICAgIGdwZGJfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1c2VyX3By ZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhlY3V0ZSgn VVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ICcsCisg ICAgICAgICAgICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydncGRiJ10sIGdwZGJfcGF0 aF9wcmVmLnBpZCkpCisgICAgZWxzZToKKyAgICAgICAgZ3BkYl9wcmVmX2RldGFpbHMgPSAoZ3Bk Yl9wYXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0 X2JpbmFyeV9wYXRoWydncGRiJ10pCisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyB1 c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAgICAgICAgICAgICAgICAgICcg VkFMVUVTICg/LD8sPyknLCBncGRiX3ByZWZfZGV0YWlscykKKworICAgIGNvbm4uY29tbWl0KCkK KworCiBkZWYgcmVtb3ZlX2RiX2ZpbGUoKToKICAgICAiIiJUaGlzIGZ1bmN0aW9uIHVzZSB0byBy ZW1vdmUgU1FMaXRlIERCIGZpbGUiIiIKICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb25maWcuVEVT VF9TUUxJVEVfUEFUSCk6CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBi L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IGQ3ODY2OTIuLjI2YjI1YzcgMTAwNjQ0 Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL3J1 bnRlc3RzLnB5CkBAIC0xMTQsNiArMTE0LDkgQEAgdGVzdF9jbGllbnQgPSBhcHAudGVzdF9jbGll bnQoKQogZHJpdmVyID0gTm9uZQogYXBwX3N0YXJ0ZXIgPSBOb25lCiBoYW5kbGVfY2xlYW51cCA9 IE5vbmUKK2FwcC5QR0FETUlOX1JVTlRJTUUgPSBUcnVlCitpZiBjb25maWcuU0VSVkVSX01PREUg aXMgVHJ1ZToKKyAgICBhcHAuUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKIAogc2V0YXR0cih1bml0 X3Rlc3QucmVzdWx0LlRlc3RSZXN1bHQsICJwYXNzZWQiLCBbXSkKIApAQCAtMjM0LDcgKzIzNyw2 IEBAIGRlZiBnZXRfdGVzdF9tb2R1bGVzKGFyZ3VtZW50cyk6CiAgICAgIyBTb3J0IG1vZHVsZSBs aXN0IHNvIHRoYXQgdGVzdCBzdWl0ZSBleGVjdXRlcyB0aGUgdGVzdCBjYXNlcyBzZXF1ZW50aWFs bHkKICAgICBtb2R1bGVfbGlzdCA9IFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkucmVnaXN0cnkuaXRl bXMoKQogICAgIG1vZHVsZV9saXN0ID0gc29ydGVkKG1vZHVsZV9saXN0LCBrZXk9bGFtYmRhIG1v ZHVsZV90dXBsZTogbW9kdWxlX3R1cGxlWzBdKQotCiAgICAgcmV0dXJuIG1vZHVsZV9saXN0CiAK IApAQCAtMzkzLDYgKzM5NSw5IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAg ICAgICAjIENyZWF0ZSB0ZXN0IHNlcnZlcgogICAgICAgICAgICAgc2VydmVyX2luZm9ybWF0aW9u ID0gdGVzdF91dGlscy5jcmVhdGVfcGFyZW50X3NlcnZlcl9ub2RlKHNlcnZlcikKIAorICAgICAg ICAgICAgaWYgc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgICAgIHRlc3RfdXRpbHMuc2V0X3ByZWZlcmVuY2Uoc2VydmVyWydkZWZhdWx0X2Jp bmFyeV9wYXRocyddKQorCiAgICAgICAgICAgICBzdWl0ZSA9IGdldF9zdWl0ZSh0ZXN0X21vZHVs ZV9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGVzdF9jbGllbnQsCmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi90ZXN0X2NvbmZpZy5qc29uLmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNv bi5pbgppbmRleCBlYmMxNDY2Li4xNWIxMzNhIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi90 ZXN0X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24u aW4KQEAgLTIzLDcgKzIzLDEyIEBACiAgICAgICAibWFpbnRlbmFuY2VfZGIiOiAicG9zdGdyZXMi LAogICAgICAgInNzbG1vZGUiOiAicHJlZmVyIiwKICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiAi IiwKLSAgICAgICJlbmFibGVkIjogdHJ1ZQorICAgICAgImVuYWJsZWQiOiB0cnVlLAorICAgICAg ImRlZmF1bHRfYmluYXJ5X3BhdGhzIjogeworICAgICAgICAicGciOiAiL29wdC9Qb3N0Z3JlU1FM LzkuNC9iaW4vIiwKKyAgICAgICAgInBwYXMiOiAiL29wdC9lZGIvYXMxMC9iaW4vIiwKKyAgICAg ICAgImdwZGIiOiAiIgorICAgICAgfQogICAgIH0KICAgXSwKICAgInNlcnZlcl91cGRhdGVfZGF0 YSI6IFsK --000000000000d77316056de12594--