<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>190188</bug_id>
          
          <creation_ts>2018-10-01 23:52:24 -0700</creation_ts>
          <short_desc>Add retry for test groups with failed build requests.</short_desc>
          <delta_ts>2018-10-08 11:40:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465406</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-01 23:52:24 -0700</bug_when>
    <thetext>Add retry for test groups with failed build requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465429</commentid>
    <comment_count>1</comment_count>
      <attachid>351353</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-02 00:56:45 -0700</bug_when>
    <thetext>Created attachment 351353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465439</commentid>
    <comment_count>2</comment_count>
      <attachid>351353</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-02 01:34:24 -0700</bug_when>
    <thetext>Comment on attachment 351353
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351353&amp;action=review

&gt; Websites/perf.webkit.org/ChangeLog:18
&gt; +                ADD COLUMN testgroup_expected_successful_build_requests integer DEFAULT NULL,
&gt; +                ADD COLUMN testgroup_may_need_additional_build_requests boolean DEFAULT FALSE;

These names are too long. How about just: testgroup_iteration_count &amp; testgroup_may_need_more_requests.

&gt; Websites/perf.webkit.org/public/api/build-requests.php:77
&gt; +    if (count($test_groups_may_need_additional_build_requests))
&gt; +        $db-&gt;query(&apos;UPDATE analysis_test_groups SET testgroup_may_need_additional_build_requests = TRUE WHERE testgroup_id = ANY($1)&apos;,
&gt; +            array(&apos;{&apos; . implode(&apos;,&apos;, array_keys($test_groups_may_need_additional_build_requests)) . &apos;}&apos;));

I don&apos;t think we need to coerce queries like this.
Just issue a SQL query per build request.
We can certainly have a map which stores the set of test groups we&apos;ve already set this flag.

&gt; Websites/perf.webkit.org/public/api/test-groups.php:25
&gt; -    } elseif ($path[0] == &apos;ready-for-notification&apos;) {
&gt; +    } elseif ($path[0] == &apos;ready-for-further-processing&apos;) {

I think we should just add a new API surface instead of replacing an existing one.

&gt; Websites/perf.webkit.org/public/privileged-api/update-test-group.php:19
&gt; +        if (array_key_exists(&apos;name&apos;, $data) || array_key_exists(&apos;hidden&apos;, $data) || array_key_exists(&apos;mayNeedAdditionalBuildRequests&apos;, $data))
&gt; +            exit_with_error(&apos;TooManyArgumentsProvided&apos;);

Why don&apos;t we add a new dedicated API instead?
I think that&apos;d be cleaner than re-using this API and having restrictions like these.

&gt; Websites/perf.webkit.org/public/privileged-api/update-test-group.php:28
&gt;          $values[&apos;hidden&apos;] = Database::to_database_boolean($data[&apos;hidden&apos;]);
&gt; +        $values[&apos;may_need_additional_build_requests&apos;] = FALSE;

I think we probably want another check at where we create build requests
that we haven&apos;t recently canceled this test group.

&gt; Websites/perf.webkit.org/public/privileged-api/update-test-group.php:58
&gt; +        for ($i = 0; $i &lt; $additional_build_request_count; $i++) {
&gt; +            $processed_commit_set = array();

Why don&apos;t we split the part to find the list of commit sets in this group into a separate helper function?

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:14
&gt; +        this._mayNeedAdditionalBuildRequests = object.mayNeedAdditionalBuildRequests;
&gt; +        this._expectedSuccessfulBuildRequests = object.expectedSuccessfulBuildRequests;

Let&apos;s also shorten these names.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:231
&gt; +    async addBuildRequests(buildRequestCount)

Just call it &quot;count&quot;.

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:239
&gt; +    async clearNeedAdditionalBuildRequestsFlag()

No need to say &quot;flag&quot;.

&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:67
&gt; +    addMockData: function (db, statusList, needs_notification=true)

Use camelCase.

&gt; Websites/perf.webkit.org/server-tests/resources/mock-data.js:82
&gt; +            db.insert(&apos;analysis_test_groups&apos;, {id: 600, task: 500, name: &apos;some test group&apos;, expected_successful_build_requests: 4, needs_notification}),

Ditto here and elsewhere in this test.

&gt; Websites/perf.webkit.org/tools/run-analysis.js:19
&gt; +        {name: &apos;--max-retry-ratio&apos;, type: parseFloat, default: 2.5},

Maybe even 3 might be okay.

&gt; Websites/perf.webkit.org/tools/run-analysis.js:67
&gt; +async function processTestGroupsNeedAdditionalBuildRequests(testGroups, maximumRetryRatio)

I don&apos;t think we want to use vague terms like &quot;processing&quot;.
Let&apos;s just say createAdditionalBuildRequestsForTestGroupsWithFailedRequests or something.
We can use a verbose name here.

&gt; Websites/perf.webkit.org/tools/run-analysis.js:80
&gt; +        let maxMissingSuccessfulBuildRequestCount = 0;
&gt; +        for (const commitSet of this.requestedCommitSet()) {
&gt; +            const buildRequests = testGroup.requestsForCommitSet(commitSet);
&gt; +            maxMissingSuccessfulBuildRequestCount = Math.max(maxMissingSuccessfulBuildRequestCount, buildRequests.filter((buildRequest) =&gt; !buildRequest.hasCompleted()).length);
&gt; +        }

I don&apos;t think this logic is quite right.
buildRequest.hasCompleted() returns false for pending &amp; canceled requests.
r- because of this.

In fact, we probably want to make sure this code handles the case when some request are still pending, scheduled, or canceled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465950</commentid>
    <comment_count>3</comment_count>
      <attachid>351487</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-03 00:49:11 -0700</bug_when>
    <thetext>Created attachment 351487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465962</commentid>
    <comment_count>4</comment_count>
      <attachid>351487</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-03 01:37:56 -0700</bug_when>
    <thetext>Comment on attachment 351487
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351487&amp;action=review

&gt; Websites/perf.webkit.org/public/api/build-requests.php:70
&gt; +            $db-&gt;update_row(&apos;analysis_test_groups&apos;, &apos;testgroup&apos;, array(&apos;id&apos; =&gt; $test_group_id), array(&apos;may_need_more_requests&apos; =&gt; TRUE));
&gt; +            $test_groups_may_need_more_requests[$request_row[&apos;request_group&apos;]] = TRUE;

Let&apos;s move this code out of the if-else to share the code between two cases.

&gt; Websites/perf.webkit.org/public/api/build-requests.php:80
&gt; +            if ($status != &apos;failed&apos; || array_key_exists($test_group_id, $test_groups_may_need_more_requests))
&gt; +                continue;

And keep this continue when $status != &apos;failed&apos;

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:10
&gt; +    $test_group_id = array_get($data, &apos;group&apos;);

We need to bail out if the test group had been marked as &quot;hidden&quot; here.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:19
&gt; +
&gt; +
&gt; +

Extra blank lines.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:23
&gt; +    if ($current_order &lt; 0)
&gt; +        exit_with_error(&apos;NoBuildRequestOfTestType&apos;);

I think we should return NoTestingBuildRequests.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:29
&gt; +    for ($i = 0; $i &lt; $additional_build_request_count; $i++) {
&gt; +        $processed_commit_set = array();
&gt; +        foreach ($existing_build_requests as $build_request) {

I think we need to split this into two separate loops:
The first one which finds an ordered list of commit sets (1),
and the second loop which generates N build requests for each commit set we found in (1).
Otherwise, this algorithm is really O(N^2).

$commit_sets = array();
$processed_commit_set = array();
foreach ($existing_build_requests as $build_request) {
    if ($build_request[&apos;request_order&apos;] &lt; 0)
        continue;
    $requested_commit_set = $build_request[&apos;request_commit_set&apos;];
    if (array_key_exists($requested_commit_set, $processed_commit_set))
        continue;
    $processed_commit_set[$requested_commit_set] = &amp;$build_request;
    array_push($commit_sets, $requested_commit_set);
}
for ($i = 0; $i &lt; $additional_build_request_count; $i++) {
    foreach ($commit_sets as $commit_set) {...}
}

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:231
&gt; +    async addExtraBuildRequests(count)

This should be called addMoreBuildRequests

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:239
&gt; +    async clearNeedAdditionalBuildRequests()

This should be called clearMayNeedMoreBuildRequests

&gt; Websites/perf.webkit.org/public/v3/models/test-group.js:297
&gt; +    static fetchAllMayNeedMoreRequests()

fetchAllThatMayNeedMoreRequests / fetchAllWhichMayNeedMoreRequests?

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:7
&gt; +        if (testGroup.isHidden()) {

This early bail out is useless because we filter the results in API anyway.

Also we need to have an API test for this.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:18
&gt; +            hasCompletedBuildRequestForEachCommitSet &amp;= (completedBuildRequestCount &gt; 0);

I think this logic doesn&apos;t work when one side all failed.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:29
&gt; +        await testGroup.clearNeedAdditionalBuildRequests();

I think it&apos;s not sound to clear the flag in a separate API call when when we&apos;re creating more build requests.
In fact, clearing the flag may is also racy but let&apos;s not worry about that for now.
We should, however, clear the flag automatically in /add-build-requests API.

&gt; Websites/perf.webkit.org/tools/run-analysis.js:20
&gt; +        {name: &apos;--max-retry-ratio&apos;, type: parseFloat, default: 3},

We should probably call this a factor since it&apos;s not really a ratio.

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:144
&gt; +    it(&apos;should add 1 more build request when one failed build request found&apos;, async () =&gt; {

This is rather confusing. Just say &quot;should add one more build request when one of the existing requests failed&quot;.

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:145
&gt; +        const data = sampleTestGroup(false, 3, true, false, [&quot;completed&quot;, &quot;completed&quot;, &quot;completed&quot;, &quot;completed&quot;, &quot;completed&quot;, &quot;failed&quot;]);

Please use a dictionary to pass options to sampleTestGroup.
e.g. sampleTestGroup({needsNotification: true, iterationCount: 3, mayNeedMoreRequests: true, hidden: false}, [~])

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:174
&gt; +    it(&apos;should not schedule more build requests when no completed build request for a commit set&apos;, async () =&gt; {

should read &quot;when all requests for a commit set had failed&quot;.

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:192
&gt; +    it(&apos;should not schedule more build requests when no completed build request is hidden&apos;, async () =&gt; {

&quot;should not schedule more build requests when the test group is hidden&quot;?

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:203
&gt; +    it(&apos;should not schedule more build request while exceeding maximum retry&apos;, async () =&gt; {

when* we&apos;ve already hit the maximum retry count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465963</commentid>
    <comment_count>5</comment_count>
      <attachid>351487</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-03 01:38:28 -0700</bug_when>
    <thetext>Comment on attachment 351487
Patch

r- because there are enough problems with this patch. Let&apos;s go through another iteration but it&apos;s getting close!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465964</commentid>
    <comment_count>6</comment_count>
      <attachid>351487</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-03 01:42:06 -0700</bug_when>
    <thetext>Comment on attachment 351487
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351487&amp;action=review

&gt; Websites/perf.webkit.org/init-database.sql:284
&gt; +    testgroup_iteration_count integer NOT NULL,

We should probably call this testgroup_initial_repetition_count or something
since the actual number of repetitions can be higher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466209</commentid>
    <comment_count>7</comment_count>
      <attachid>351487</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-03 15:59:03 -0700</bug_when>
    <thetext>Comment on attachment 351487
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351487&amp;action=review

&gt;&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:7
&gt;&gt; +        if (testGroup.isHidden()) {
&gt; 
&gt; This early bail out is useless because we filter the results in API anyway.
&gt; 
&gt; Also we need to have an API test for this.

Can we remove if condition that checks testGroup.mayNeedMoreRequests() as well as the API also did that?
More general question, should we make assumptions on the testGroups provided in the argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466301</commentid>
    <comment_count>8</comment_count>
      <attachid>351579</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-03 20:56:45 -0700</bug_when>
    <thetext>Created attachment 351579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466309</commentid>
    <comment_count>9</comment_count>
      <attachid>351579</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-03 21:44:18 -0700</bug_when>
    <thetext>Comment on attachment 351579
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351579&amp;action=review

&gt; Websites/perf.webkit.org/public/api/build-requests.php:64
&gt; +            $test_group_id = $request_row[&apos;request_group&apos;];

Do this outside of if-else.

&gt; Websites/perf.webkit.org/public/api/build-requests.php:79
&gt; +        $test_groups_may_need_more_requests[$request_row[&apos;request_group&apos;]] = TRUE;

Use $test_group_id once you&apos;ve done that.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:10
&gt; +    $additional_build_request_count = array_get($data, &apos;count&apos;);

Maybe we should call this addCount?

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:45
&gt; +        foreach($commit_sets as $commit_set) {

NIt: Need a space between foreach and (.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:51
&gt; +            insert_build_request_for_configuration($db, $configuration, ++$current_order, $build_request[&apos;request_triggerable&apos;],
&gt; +                $build_request[&apos;request_platform&apos;], $build_request[&apos;request_test&apos;], $build_request[&apos;request_group&apos;]);

Just use $db-&gt;insert_row directly here. I don&apos;t think we get any benefit from using this helper function.

&gt; Websites/perf.webkit.org/public/privileged-api/add-build-requests.php:54
&gt; +    $db-&gt;update_row(&apos;analysis_test_groups&apos;, &apos;testgroup&apos;, array(&apos;id&apos; =&gt; $test_group_id), array(&apos;may_need_more_requests&apos; =&gt; FALSE));

Hm... on my second thought maybe it&apos;s better to clear this flag in a separate API call
so that we can allow addition of more build requests without clearing of this flag.

&gt; Websites/perf.webkit.org/server-tests/api-test-groups.js:94
&gt; +            assert.ok(!data[&apos;testGroups&apos;][0].mayNeedMoreRequests);

Maybe use assert.equals to be more explicit about true/false?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:208
&gt; +    it(&apos;should be created with &quot;may_need_more_requests&quot; field defaults to false&apos;, async () =&gt; {

This should read: &quot;should create a test group with&quot;

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:212
&gt; +        let result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,

Use const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:229
&gt; +        let result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,

Use const?

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:252
&gt; +    it(&apos;should clear &quot;may_need_more_requests&quot; while hiding test group&apos;, async () =&gt; {

while -&gt; when, hiding *a* test group.

&gt; Websites/perf.webkit.org/server-tests/privileged-api-update-test-group-tests.js:256
&gt; +        let result = await PrivilegedAPI.sendRequest(&apos;create-test-group&apos;,

Use const?

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:16
&gt; +            const buildRequests = testGroup.requestsForCommitSet(commitSet);

We should probably filter out non-testing build requests here.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:19
&gt; +            hasCompletedBuildRequestForEachCommitSet &amp;= (completedBuildRequestCount &gt; 0);

This math is rather confusing. Just do something like:
if (!completedBuildRequestCount)
    hasCompletedBuildRequestForEachCommitSet = false;

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:21
&gt; +            maxMissingBuildRequestCount = Math.max(maxMissingBuildRequestCount, testGroup.initialRepetitionCount() - completedBuildRequestCount - unfinishedBuildRequestCount);

Let&apos;s add an assertion that: unfinishedBuildRequestCount &lt;= testGroup.initialRepetitionCount()
and declare a local variable like: potentiallySuccessfulCount = completedBuildRequestCount + unfinishedBuildRequestCount;

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:22
&gt; +            hasUnfinishedBuildRequest = hasUnfinishedBuildRequest || (unfinishedBuildRequestCount &gt; 0);

Ditto about using if.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:24
&gt; +        const willExceedMaximumRetry = (testGroup.repetitionCount() + maxMissingBuildRequestCount) &gt; maximumRetryFactor * testGroup.initialRepetitionCount();

No need for parenthesis.

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:27
&gt; +        if (maxMissingBuildRequestCount &amp;&amp; !willExceedMaximumRetry &amp;&amp; hasUnfinishedBuildRequest &amp;&amp; !hasCompletedBuildRequestForEachCommitSet)
&gt; +            continue;

I think a cleaner way to do this might be that:
if (!hasCompletedBuildRequestForEachCommitSet) {
    if (maxMissingBuildRequestCount &amp;&amp; hasUnfinishedBuildRequest)
        await testGroup.clearMayNeedMoreBuildRequests();
    continue;
}

&gt; Websites/perf.webkit.org/tools/js/retry-failed-build-requests.js:29
&gt; +        if (maxMissingBuildRequestCount &amp;&amp; !willExceedMaximumRetry &amp;&amp; hasCompletedBuildRequestForEachCommitSet)

Then we don&apos;t have to check hasCompletedBuildRequestForEachCommitSet here.

&gt; Websites/perf.webkit.org/unit-tests/retry-failed-build-requests-tests.js:150
&gt; +        const testGroupConfig = {needsNotification:false, initialRepetitionCount: 3, mayNeedMoreRequests: true, hidden: false,

Nit: Need a space between : and false, and ditto elsewhere in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466591</commentid>
    <comment_count>10</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-04 18:32:11 -0700</bug_when>
    <thetext>Landed in r236861.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467129</commentid>
    <comment_count>11</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-10-08 11:40:41 -0700</bug_when>
    <thetext>rdar://problem/34471207</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351353</attachid>
            <date>2018-10-02 00:56:45 -0700</date>
            <delta_ts>2018-10-03 00:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190188-20181002005644.patch</filename>
            <type>text/plain</type>
            <size>52483</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzEyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiNzZkZGM3NDZhZjk2OTc0YmEyYzVlN2U2NTA3ZjMyN2E2NzViYWU2Li4yY2IxODMzZmE2
MzQ0ZjMwYWFlMjY4OWY1ZjA3NjU5NGEyNjYwMzAxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxOC0xMC0wMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcmV0cnkgZm9yIHRlc3QgZ3JvdXBzIHdpdGggZmFp
bGVkIGJ1aWxkIHJlcXVlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgcmV0cnkgbG9naWMgaW4gcnVuLWFuYWx5c2lzIHNjcmlwdC4KKyAg
ICAgICAgQ3VycmVudCByZXRyeSBsb2dpYyB3aWxsIG9ubHkgYmUgdHJpZ2dlcmVkIHdoZW4gdGhl
cmUgaXMgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgYnVpbGQgcmVxdWVzdCBmb3IgZWFjaCBjb21t
aXQgc2V0CisgICAgICAgIGluIGEgdGVzdCBncm91cC4KKworICAgICAgICAqIGluaXQtZGF0YWJh
c2Uuc3FsOiBBZGRlZCAndGVzdGdyb3VwX2V4cGVjdGVkX3N1Y2Nlc3NmdWxfYnVpbGRfcmVxdWVz
dHMnIGFuZCAndGVzdGdyb3VwX21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMnLgor
ICAgICAgICBTUUwgdG8gdXBkYXRlIGV4aXN0aW5nIGRhdGFiYXNlOgorICAgICAgICAnJycKKyAg
ICAgICAgQkVHSU47CisgICAgICAgICAgICBBTFRFUiBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3Vw
cworICAgICAgICAgICAgICAgIEFERCBDT0xVTU4gdGVzdGdyb3VwX2V4cGVjdGVkX3N1Y2Nlc3Nm
dWxfYnVpbGRfcmVxdWVzdHMgaW50ZWdlciBERUZBVUxUIE5VTEwsCisgICAgICAgICAgICAgICAg
QUREIENPTFVNTiB0ZXN0Z3JvdXBfbWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cyBi
b29sZWFuIERFRkFVTFQgRkFMU0U7CisgICAgICAgICAgICBVUERBVEUgYW5hbHlzaXNfdGVzdF9n
cm91cHMgU0VUIHRlc3Rncm91cF9leHBlY3RlZF9zdWNjZXNzZnVsX2J1aWxkX3JlcXVlc3RzID0g
KAorICAgICAgICAgICAgICAgIFNFTEVDVCBESVNUSU5DVChDT1VOVCgqKSkgRlJPTSBidWlsZF9y
ZXF1ZXN0cyBXSEVSRSByZXF1ZXN0X2dyb3VwID0gdGVzdGdyb3VwX2lkIEFORCByZXF1ZXN0X29y
ZGVyID49IDAgR1JPVVAgQlkgcmVxdWVzdF9jb21taXRfc2V0CisgICAgICAgICAgICApOworICAg
ICAgICAgICAgQUxURVIgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgQUxURVIgQ09MVU1OIHRl
c3Rncm91cF9leHBlY3RlZF9zdWNjZXNzZnVsX2J1aWxkX3JlcXVlc3RzIERST1AgREVGQVVMVCwg
QUxURVIgQ09MVU1OIHRlc3Rncm91cF9tYXlfbmVlZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3Rz
IFNFVCBOT1QgTlVMTDsKKyAgICAgICAgRU5EOworICAgICAgICAnJycKKyAgICAgICAgJ3Rlc3Rn
cm91cF9leHBlY3RlZF9zdWNjZXNzZnVsX2J1aWxkX3JlcXVlc3RzJyByZXByZXNlbnRzIHRoZSBu
dW1iZXIgb2Ygc3VjY2Vzc2Z1bCBidWlsZCByZXF1ZXN0IGZvciBlYWNoIGNvbW1pdCBzZXQgd2hl
bgorICAgICAgICB0ZXN0IGdyb3VwIGlzIGNyZWF0ZWQuCisgICAgICAgICd0ZXN0Z3JvdXBfbWF5
X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cycgd2lsbCBiZSBzZXQgd2hlbiBhbnkgYnVp
bGQgcmVxdWVzdCBpbiB0ZXN0IGdyb3VwIGlzIHNldCB0byAnZmFpbGVkJy4KKyAgICAgICAgKiBw
dWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocDogQWRkZWQgdGhlIGxvZ2ljIHRvIHNldCAndGVz
dGdyb3VwX21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMnLgorICAgICAgICAqIHB1
YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwOiBVcGRhdGVkICdyZWFkeS1mb3Itbm90aWZpY2F0aW9u
JyB0byAncmVhZHktZm9yLWZ1cnRoZXItcHJvY2Vzc2luZycgc28gdGhhdCBpdCByZXR1cm5zIGZp
bmlzaGVkIHRlc3QKKyAgICAgICAgZ3JvdXBzIHRob3NlIGVpdGhlciBoYXZlICduZWVkc19ub3Rp
ZmljYXRpb24nIG9yICAnbWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cycgc2V0Lgor
ICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwOiBTZXQgJ2V4
cGVjdGVkX3N1Y2Nlc3NmdWxfYnVpbGRfcmVxdWVzdHMnIHRvIHJlcGV0aXRpb24gY291bnQuCisg
ICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocDogQWRk
ZWQgQVBJcyB0byBhZGQgYnVpbGQgcmVxdWVzdCBmb3IgYSB0ZXN0IGdyb3VwIGFuZAorICAgICAg
ICB1cGRhdGUgJ21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMnIGZsYWcuCisgICAg
ICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3Vw
KTogQWRkZWQgJ19tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMnIGFuZCAnX2V4cGVjdGVk
U3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMnIGZpZWxkLgorICAgICAgICBSZWZhY3RvcmVkIGNvZGUg
dGhhdCBpbnRlcmFjdHMgd2l0aCAnL2FwaS91cGRhdGUtdGVzdC1ncm91cCcuCisgICAgICAgIChU
ZXN0R3JvdXAucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChUZXN0R3JvdXAu
cHJvdG90eXBlLm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0
R3JvdXAucHJvdG90eXBlLmV4cGVjdGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMpOgorICAgICAg
ICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYy5fdXBkYXRlQnVpbGRSZXF1ZXN0KToKKyAgICAg
ICAgKFRlc3RHcm91cC5wcm90b3R5cGUudXBkYXRlTmFtZSk6CisgICAgICAgIChUZXN0R3JvdXAu
cHJvdG90eXBlLnVwZGF0ZUhpZGRlbkZsYWcpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5hc3luYy5kaWRTZW5kTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5
cGUuYXN5bmMuYWRkQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBl
LmFzeW5jLmNsZWFyTmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRmxhZyk6IEFkZGVkIEFQSSB0
byBjbGVhciAnbWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cycgZmxhZy4KKyAgICAg
ICAgKFRlc3RHcm91cC5mZXRjaEFsbFJlYWR5Rm9yRnVydGhlclByb2Nlc3NpbmcpOiBSZWZhY3Rv
cmVkICdUZXN0R3JvdXAuZmV0Y2hBbGxXaXRoTm90aWZpY2F0aW9uUmVhZHknIHRvIHJldHVybiB0
ZXN0IGdyb3VwcyBlaXRoZXIKKyAgICAgICAgaGF2ZSAnbmVlZHNfbm90aWZpY2F0aW9uJyBvciAg
J21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMnIHNldC4KKyAgICAgICAgKFRlc3RH
cm91cC5mZXRjaEFsbFdpdGhOb3RpZmljYXRpb25SZWFkeSk6IERlbGV0ZWQuCisgICAgICAgICog
c2VydmVyLXRlc3RzL2FwaS10ZXN0LWdyb3Vwcy5qczogQWRkZWQgdW5pdCB0ZXN0cy4KKyAgICAg
ICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anM6IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9t
b2NrLWRhdGEuanM6CisgICAgICAgIChNb2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgICog
c2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qczoKKyAgICAgICAgKFRlc3RTZXJ2
ZXIucHJvdG90eXBlLl9kZXRlcm1pbmVQZ3NxbERpcmVjdG9yeSk6IEZpeGVkIGEgYnVnIHRoYXQg
J2NoaWxkUHJvY2Vzcy5leGVjRmlsZVN5bmMnIG1heSByZXR1cm4gYSBidWZmZXIuCisgICAgICAg
ICogdG9vbHMvcnVuLWFuYWx5c2lzLmpzOiBBZGRlZCBsb2dpYyB0byBhZGQgZXh0cmEgYnVpbGQg
cmVxdWVzdCBiZWZvcmUgc2VubmRpbmcgbm90aWZpY2F0aW9uLgorICAgICAgICAoYXN5bmMucHJv
Y2Vzc1Rlc3RHcm91cHNOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMpOgorICAgICAgICAqIHVu
aXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAg
IChzYW1wbGVUZXN0R3JvdXApOgorCiAyMDE4LTA5LTIxICBEZXdlaSBaaHUgIDxkZXdlaV96aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFwYWNoZSBjYW4gcmV0dXJuIGEgY29ycnVwdCBtYW5pZmVz
dCBmaWxlIHdoaWxlIE1hbmlmZXN0R2VuZXJhdG9yOjpzdG9yZSBpcyBydW5uaW5nCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKaW5kZXggOTEzMjQwYTgyNjk3OTNk
NmEzYmEwM2YzNDk1ZTEyMmFlMWE5ZmNhYS4uNzdmOWRkOGViODU5YThmMzQ4NzIxMGU4MDFkNTQ5
NmY1ODAwNDQ2YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0
YWJhc2Uuc3FsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNx
bApAQCAtMjgxLDYgKzI4MSw4IEBAIENSRUFURSBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3VwcyAo
CiAgICAgdGVzdGdyb3VwX2hpZGRlbiBib29sZWFuIE5PVCBOVUxMIERFRkFVTFQgRkFMU0UsCiAg
ICAgdGVzdGdyb3VwX25lZWRzX25vdGlmaWNhdGlvbiBib29sZWFuIE5PVCBOVUxMIERFRkFVTFQg
RkFMU0UsCiAgICAgdGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0IHRpbWVzdGFtcCBERUZB
VUxUIE5VTEwsCisgICAgdGVzdGdyb3VwX2V4cGVjdGVkX3N1Y2Nlc3NmdWxfYnVpbGRfcmVxdWVz
dHMgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfbWF5X25lZWRfYWRkaXRpb25hbF9i
dWlsZF9yZXF1ZXN0cyBib29sZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RSQUlOVCB0ZXN0
Z3JvdXBfbmFtZV9tdXN0X2JlX3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFVRSh0ZXN0Z3JvdXBf
dGFzaywgdGVzdGdyb3VwX25hbWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3JvdXBfdGFza19pbmRl
eCBPTiBhbmFseXNpc190ZXN0X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CiAKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocCBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocApp
bmRleCA1Y2FlZWU2NDVhOTE4YTE2ZmJlOWRhYmUyOTFhMTE1NjQzMzFkNjg3Li5kNTg0YzQ4YTg2
M2U1NWM4ODgxNjUxZTQwMWNlOWEyODQ4YTEyZDdkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHAKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhwCkBAIC00MSwxMiAr
NDEsMTMgQEAgZnVuY3Rpb24gbWFpbigkaWQsICRwYXRoLCAkcG9zdF9kYXRhKSB7CiAKIGZ1bmN0
aW9uIHVwZGF0ZV9idWlsZHMoJGRiLCAkdXBkYXRlcykgewogICAgICRkYi0+YmVnaW5fdHJhbnNh
Y3Rpb24oKTsKKyAgICAkdGVzdF9ncm91cHNfbWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1
ZXN0cyA9IGFycmF5KCk7CiAgICAgZm9yZWFjaCAoJHVwZGF0ZXMgYXMgJGlkID0+ICRpbmZvKSB7
CiAgICAgICAgICRpZCA9IGludHZhbCgkaWQpOwogICAgICAgICAkc3RhdHVzID0gJGluZm9bJ3N0
YXR1cyddOwogICAgICAgICAkdXJsID0gYXJyYXlfZ2V0KCRpbmZvLCAndXJsJyk7CisgICAgICAg
ICRyZXF1ZXN0X3JvdyA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAn
cmVxdWVzdCcsIGFycmF5KCdpZCcgPT4gJGlkKSk7CiAgICAgICAgIGlmICgkc3RhdHVzID09ICdm
YWlsZWRJZk5vdENvbXBsZXRlZCcpIHsKLSAgICAgICAgICAgICRyZXF1ZXN0X3JvdyA9ICRkYi0+
c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KCdpZCcg
PT4gJGlkKSk7CiAgICAgICAgICAgICBpZiAoISRyZXF1ZXN0X3JvdykgewogICAgICAgICAgICAg
ICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ZhaWxlZFRvRmluZEJ1aWxkUmVxdWVzdCcsIGFycmF5KCdidWlsZFJlcXVlc3Qn
ID0+ICRpZCkpOwpAQCAtNjAsMTQgKzYxLDIxIEBAIGZ1bmN0aW9uIHVwZGF0ZV9idWlsZHMoJGRi
LCAkdXBkYXRlcykgewogICAgICAgICAgICAgICAgICAgICBhcnJheSgkcmVxdWVzdF9yb3dbJ3Jl
cXVlc3RfZ3JvdXAnXSwgJHJlcXVlc3Rfcm93WydyZXF1ZXN0X29yZGVyJ10pKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICRkYi0+dXBkYXRlX3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVx
dWVzdCcsIGFycmF5KCdpZCcgPT4gJGlkKSwgYXJyYXkoJ3N0YXR1cycgPT4gJ2ZhaWxlZCcsICd1
cmwnID0+ICR1cmwpKTsKKyAgICAgICAgICAgICR0ZXN0X2dyb3Vwc19tYXlfbmVlZF9hZGRpdGlv
bmFsX2J1aWxkX3JlcXVlc3RzWyRyZXF1ZXN0X3Jvd1sncmVxdWVzdF9ncm91cCddXSA9IFRSVUU7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCRzdGF0dXMsIGFy
cmF5KCdwZW5kaW5nJywgJ3NjaGVkdWxlZCcsICdydW5uaW5nJywgJ2ZhaWxlZCcsICdjb21wbGV0
ZWQnLCAnY2FuY2VsZWQnKSkpIHsKICAgICAgICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5z
YWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdVbmtub3duQnVpbGRS
ZXF1ZXN0U3RhdHVzJywgYXJyYXkoJ2J1aWxkUmVxdWVzdCcgPT4gJGlkLCAnc3RhdHVzJyA9PiAk
c3RhdHVzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAkZGItPnVwZGF0ZV9yb3coJ2J1
aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgnaWQnID0+ICRpZCksIGFycmF5KCdzdGF0
dXMnID0+ICRzdGF0dXMsICd1cmwnID0+ICR1cmwpKTsKKyAgICAgICAgICAgIGlmICgkc3RhdHVz
ID09ICdmYWlsZWQnKQorICAgICAgICAgICAgICAgICR0ZXN0X2dyb3Vwc19tYXlfbmVlZF9hZGRp
dGlvbmFsX2J1aWxkX3JlcXVlc3RzWyRyZXF1ZXN0X3Jvd1sncmVxdWVzdF9ncm91cCddXSA9IFRS
VUU7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKGNvdW50KCR0ZXN0X2dyb3Vwc19tYXlfbmVl
ZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RzKSkKKyAgICAgICAgJGRiLT5xdWVyeSgnVVBEQVRF
IGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfbWF5X25lZWRfYWRkaXRpb25hbF9i
dWlsZF9yZXF1ZXN0cyA9IFRSVUUgV0hFUkUgdGVzdGdyb3VwX2lkID0gQU5ZKCQxKScsCisgICAg
ICAgICAgICBhcnJheSgneycgLiBpbXBsb2RlKCcsJywgYXJyYXlfa2V5cygkdGVzdF9ncm91cHNf
bWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cykpIC4gJ30nKSk7CisKICAgICAkZGIt
PmNvbW1pdF90cmFuc2FjdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKaW5kZXggZTc2YTI0YTk3MGViMjQ0OTRm
OWEzYjNkOWE3MDQxMjdjMDhlZmIyNi4uNGE3YzkyY2RmZTJlMjZjOGQ4ZjI5NmNiZTZkM2ZlNDhl
ZTQ3YTRjMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkv
dGVzdC1ncm91cHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBp
L3Rlc3QtZ3JvdXBzLnBocApAQCAtMjIsMTIgKzIyLDEyIEBAIGZ1bmN0aW9uIG1haW4oJHBhdGgp
IHsKICAgICAgICAgaWYgKCFpc19hcnJheSgkdGVzdF9ncm91cHMpKQogICAgICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZldGNoVGVzdEdyb3VwcycpOwogICAgICAgICAkYnVpbGRf
cmVxdWVzdHNfZmV0Y2hlci0+ZmV0Y2hfZm9yX3Rhc2soJHRhc2tfaWQpOwotICAgIH0gZWxzZWlm
ICgkcGF0aFswXSA9PSAncmVhZHktZm9yLW5vdGlmaWNhdGlvbicpIHsKKyAgICB9IGVsc2VpZiAo
JHBhdGhbMF0gPT0gJ3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnKSB7CiAgICAgICAgICR0
ZXN0X2dyb3VwcyA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgiU0VMRUNUICogRlJPTSBhbmFs
eXNpc190ZXN0X2dyb3VwcwogICAgICAgICAgICAgV0hFUkUgRVhJU1RTKFNFTEVDVCAxIEZST00g
YnVpbGRfcmVxdWVzdHMKICAgICAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2dyb3VwID0gdGVz
dGdyb3VwX2lkCiAgICAgICAgICAgICAgICAgICAgIEFORCByZXF1ZXN0X3N0YXR1cyBJTiAoJ3Bl
bmRpbmcnLCAnc2NoZWR1bGVkJywgJ3J1bm5pbmcnLCAnY2FuY2VsZWQnKSkgSVMgRkFMU0UKLSAg
ICAgICAgICAgICAgICAgICAgQU5EIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gSVMgVFJV
RSBBTkQgdGVzdGdyb3VwX2hpZGRlbiBJUyBGQUxTRSIpOworICAgICAgICAgICAgICAgICAgICBB
TkQgKHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gSVMgVFJVRSBPUiB0ZXN0Z3JvdXBfbWF5
X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cyBJUyBUUlVFKSBBTkQgdGVzdGdyb3VwX2hp
ZGRlbiBJUyBGQUxTRSIpOwogCiAgICAgICAgIGlmICghY291bnQoJHRlc3RfZ3JvdXBzKSkgewog
ICAgICAgICAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3Rlc3RHcm91cHMnID0+IGFycmF5
KCksCkBAIC04Miw2ICs4Miw4IEBAIGZ1bmN0aW9uIGZvcm1hdF90ZXN0X2dyb3VwKCRncm91cF9y
b3cpIHsKICAgICAgICAgJ25vdGlmaWNhdGlvblNlbnRBdCcgPT4gRGF0YWJhc2U6OnRvX2pzX3Rp
bWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0J10pLAogICAgICAg
ICAnaGlkZGVuJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfaGlk
ZGVuJ10pLAogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFiYXNlOjppc190cnVl
KCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSksCisgICAgICAgICdt
YXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMnID0+ICBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3Jv
dXBfcm93Wyd0ZXN0Z3JvdXBfbWF5X25lZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cyddKSwK
KyAgICAgICAgJ2V4cGVjdGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMnID0+ICRncm91cF9yb3db
J3Rlc3Rncm91cF9leHBlY3RlZF9zdWNjZXNzZnVsX2J1aWxkX3JlcXVlc3RzJ10sCiAgICAgICAg
ICdidWlsZFJlcXVlc3RzJyA9PiBhcnJheSgpLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gYXJy
YXkoKSwKICAgICApOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCmluZGV4IGJlYzdkNDg2
ZjJiMDdhZWQzNmRkMmUyYmZlMjdiNzEwOTk0M2E2NDMuLjQyYTI4ZTNkOTI5ZmE2ODYxOGJkMmRm
NGJiYWExN2ZhMjFlNjM0YWQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKQEAgLTks
NyArOSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cygk
ZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICRuYW1lCiAgICAgbGlzdCAoJGJ1aWxkX2NvbmZp
Z3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmlndXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21taXRf
c2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3VyYXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0cyk7
CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBz
JywgJ3Rlc3Rncm91cCcsCi0gICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25hbWUn
ID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9PiAk
bmVlZHNfbm90aWZpY2F0aW9uKSk7CisgICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwg
J25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9u
JyA9PiAkbmVlZHNfbm90aWZpY2F0aW9uLCAnZXhwZWN0ZWRfc3VjY2Vzc2Z1bF9idWlsZF9yZXF1
ZXN0cycgPT4gJHJlcGV0aXRpb25fY291bnQpKTsKIAogICAgICRidWlsZF9jb3VudCA9IGNvdW50
KCRidWlsZF9jb25maWd1cmF0aW9uX2xpc3QpOwogICAgICRvcmRlciA9IC0kYnVpbGRfY291bnQ7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCmluZGV4IGFkMTc1NWZlZDI2
MjFhNDY0MmZjMDdkMzMyNDU0MDc5ZTcyZDcxNWUuLmNmMGJhZGJlNjEyYWM4NWU5MDIzOWE3NDY1
NWNlNjYxZmIxMzlhMTEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhw
CkBAIC0xLDIyICsxLDM1IEBACiA8P3BocAogCiByZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvanNv
bi1oZWFkZXIucGhwJyk7CityZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvY29tbWl0LXNldHMtaGVs
cGVycy5waHAnKTsKIAogZnVuY3Rpb24gbWFpbigpIHsKICAgICAkZGIgPSBjb25uZWN0KCk7CiAg
ICAgJGRhdGEgPSBlbnN1cmVfcHJpdmlsZWdlZF9hcGlfZGF0YV9hbmRfdG9rZW5fb3Jfc2xhdmUo
JGRiKTsKIAogICAgICR0ZXN0X2dyb3VwX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAnZ3JvdXAnKTsK
KyAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2NvdW50ID0gTlVMTDsKICAgICBpZiAoISR0
ZXN0X2dyb3VwX2lkKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Rlc3RHcm91cE5vdFNwZWNp
ZmllZCcpOwogCiAgICAgJHZhbHVlcyA9IGFycmF5KCk7CiAKKyAgICBpZiAoYXJyYXlfa2V5X2V4
aXN0cygnYWRkaXRpb25hbEJ1aWxkUmVxdWVzdENvdW50JywgJGRhdGEpKSB7CisgICAgICAgIGlm
IChhcnJheV9rZXlfZXhpc3RzKCduYW1lJywgJGRhdGEpIHx8IGFycmF5X2tleV9leGlzdHMoJ2hp
ZGRlbicsICRkYXRhKSB8fCBhcnJheV9rZXlfZXhpc3RzKCdtYXlOZWVkQWRkaXRpb25hbEJ1aWxk
UmVxdWVzdHMnLCAkZGF0YSkpCisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Rvb01hbnlB
cmd1bWVudHNQcm92aWRlZCcpOworICAgICAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2Nv
dW50ID0gaW50dmFsKCRkYXRhWydhZGRpdGlvbmFsQnVpbGRSZXF1ZXN0Q291bnQnXSk7CisgICAg
fQorCiAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ25hbWUnLCAkZGF0YSkpCiAgICAgICAgICR2
YWx1ZXNbJ25hbWUnXSA9ICRkYXRhWyduYW1lJ107CiAKLSAgICBpZiAoYXJyYXlfa2V5X2V4aXN0
cygnaGlkZGVuJywgJGRhdGEpKQorICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdoaWRkZW4nLCAk
ZGF0YSkpIHsKICAgICAgICAgJHZhbHVlc1snaGlkZGVuJ10gPSBEYXRhYmFzZTo6dG9fZGF0YWJh
c2VfYm9vbGVhbigkZGF0YVsnaGlkZGVuJ10pOworICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9h
ZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RzJ10gPSBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoYXJy
YXlfa2V5X2V4aXN0cygnbWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzJywgJGRhdGEpKQor
ICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RzJ10gPSAk
ZGF0YVsnbWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzJ107CiAKICAgICAkaGFzX25lZWRz
X25vdGlmaWNhdGlvbl9maWVsZCA9IGFycmF5X2tleV9leGlzdHMoJ25lZWRzTm90aWZpY2F0aW9u
JywgJGRhdGEpOwogICAgICRoYXNfbm90aWZpY2F0aW9uX3NlbnRfYXRfZmllbGQgPSBhcnJheV9r
ZXlfZXhpc3RzKCdub3RpZmljYXRpb25TZW50QXQnLCAkZGF0YSk7CkBAIC0zMCwxMSArNDMsMzUg
QEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAgICAgICR2YWx1ZXNbJ25vdGlmaWNhdGlvbl9z
ZW50X2F0J10gPSAkZGF0YVsnbm90aWZpY2F0aW9uU2VudEF0J107CiAgICAgfQogCi0gICAgaWYg
KCEkdmFsdWVzKQorICAgIGlmICghJHZhbHVlcyAmJiAhJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVz
dF9jb3VudCkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb3RoaW5nVG9VcGRhdGUnKTsKICAg
ICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CiAKLSAgICBpZiAoISRkYi0+dXBkYXRlX3Jvdygn
YW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9n
cm91cF9pZCksICR2YWx1ZXMpKSB7CisgICAgaWYgKCRhZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3Rf
Y291bnQpIHsKKyAgICAgICAgJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzID0gJGRiLT5zZWxlY3Rf
cm93cygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KCdncm91cCcgPT4gJHRlc3Rf
Z3JvdXBfaWQpLCAnb3JkZXInKTsKKyAgICAgICAgJGN1cnJlbnRfb3JkZXIgPSAkZXhpc3Rpbmdf
YnVpbGRfcmVxdWVzdHNbY291bnQoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzKSAtIDFdWydyZXF1
ZXN0X29yZGVyJ107CisKKyAgICAgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKKyAgICAgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignTm9CdWlsZFJlcXVlc3RPZlRlc3RUeXBlJyk7CisKKyAgICAg
ICAgZm9yICgkaSA9IDA7ICRpIDwgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9jb3VudDsgJGkr
KykgeworICAgICAgICAgICAgJHByb2Nlc3NlZF9jb21taXRfc2V0ID0gYXJyYXkoKTsKKyAgICAg
ICAgICAgIGZvcmVhY2ggKCRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyBhcyAkYnVpbGRfcmVxdWVz
dCkgeworICAgICAgICAgICAgICAgIGlmICgkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9vcmRlcidd
IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgJHJl
cXVlc3RlZF9jb21taXRfc2V0ID0gJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfY29tbWl0X3NldCdd
OworICAgICAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRyZXF1ZXN0ZWRfY29tbWl0
X3NldCwgJHByb2Nlc3NlZF9jb21taXRfc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgJHByb2Nlc3NlZF9jb21taXRfc2V0WyRyZXF1ZXN0ZWRfY29t
bWl0X3NldF0gPSBUUlVFOworICAgICAgICAgICAgICAgICRjb25maWd1cmF0aW9uID0gYXJyYXko
KTsKKyAgICAgICAgICAgICAgICAkY29uZmlndXJhdGlvblsncmVwb3NpdG9yeV9ncm91cCddID0g
JGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcmVwb3NpdG9yeV9ncm91cCddOworICAgICAgICAgICAg
ICAgICRjb25maWd1cmF0aW9uWydjb21taXRfc2V0J10gPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVz
dF9jb21taXRfc2V0J107CisgICAgICAgICAgICAgICAgaW5zZXJ0X2J1aWxkX3JlcXVlc3RfZm9y
X2NvbmZpZ3VyYXRpb24oJGRiLCAkY29uZmlndXJhdGlvbiwgKyskY3VycmVudF9vcmRlciwgJGJ1
aWxkX3JlcXVlc3RbJ3JlcXVlc3RfdHJpZ2dlcmFibGUnXSwKKyAgICAgICAgICAgICAgICAgICAg
JGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxhdGZvcm0nXSwgJGJ1aWxkX3JlcXVlc3RbJ3JlcXVl
c3RfdGVzdCddLCAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9ncm91cCddKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlaWYgKCEkZGItPnVwZGF0ZV9yb3coJ2FuYWx5
c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJHRlc3RfZ3JvdXBf
aWQpLCAkdmFsdWVzKSkgewogICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CiAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9VcGRhdGVUZXN0R3JvdXAnLCBhcnJheSgn
aWQnID0+ICR0ZXN0X2dyb3VwX2lkLCAndmFsdWVzJyA9PiAkdmFsdWVzKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1n
cm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3Qt
Z3JvdXAuanMKaW5kZXggNGFjNDNiNDI5NzhiY2FjZWUzMzk3OTA0ZWViNmY3N2Q3ZmViOWQ0Zi4u
NTBlN2E0YTI0ZGQwOGQxNmFlMDFlMjg1ZGJhNmJmYzdjNjM1ZDVmYiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpz
CkBAIC0xMCw2ICsxMCw4IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qg
ewogICAgICAgICB0aGlzLl9jcmVhdGVkQXQgPSBuZXcgRGF0ZShvYmplY3QuY3JlYXRlZEF0KTsK
ICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBvYmplY3QuaGlkZGVuOwogICAgICAgICB0aGlzLl9u
ZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlmaWNhdGlvbjsKKyAgICAgICAgdGhp
cy5fbWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzID0gb2JqZWN0Lm1heU5lZWRBZGRpdGlv
bmFsQnVpbGRSZXF1ZXN0czsKKyAgICAgICAgdGhpcy5fZXhwZWN0ZWRTdWNjZXNzZnVsQnVpbGRS
ZXF1ZXN0cyA9IG9iamVjdC5leHBlY3RlZFN1Y2Nlc3NmdWxCdWlsZFJlcXVlc3RzOwogICAgICAg
ICB0aGlzLl9idWlsZFJlcXVlc3RzID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVpbGRSZXF1
ZXN0c0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRSZXF1ZXN0
cykgPT4gewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwgYikgPT4g
YS5vcmRlcigpIC0gYi5vcmRlcigpKTsKQEAgLTMzLDYgKzM1LDggQEAgY2xhc3MgVGVzdEdyb3Vw
IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX2lzSGlkZGVuID0gb2JqZWN0
LmhpZGRlbjsKICAgICAgICAgdGhpcy5fbmVlZHNOb3RpZmljYXRpb24gPSBvYmplY3QubmVlZHNO
b3RpZmljYXRpb247CiAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlbnRBdCA9IG9iamVjdC5u
b3RpZmljYXRpb25TZW50QXQgPyBuZXcgRGF0ZShvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0KSA6
IG51bGw7CisgICAgICAgIHRoaXMuX21heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cyA9IG9i
amVjdC5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHM7CisgICAgICAgIHRoaXMuX2V4cGVj
dGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMgPSBvYmplY3QuZXhwZWN0ZWRTdWNjZXNzZnVsQnVp
bGRSZXF1ZXN0czsKICAgICB9CiAKICAgICB0YXNrKCkgeyByZXR1cm4gQW5hbHlzaXNUYXNrLmZp
bmRCeUlkKHRoaXMuX3Rhc2tJZCk7IH0KQEAgLTQwLDYgKzQ0LDggQEAgY2xhc3MgVGVzdEdyb3Vw
IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgaXNIaWRkZW4oKSB7IHJldHVybiB0aGlzLl9p
c0hpZGRlbjsgfQogICAgIGJ1aWxkUmVxdWVzdHMoKSB7IHJldHVybiB0aGlzLl9idWlsZFJlcXVl
c3RzOyB9CiAgICAgbmVlZHNOb3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlzLl9uZWVkc05vdGlm
aWNhdGlvbjsgfQorICAgIG1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpIHsgcmV0dXJu
IHRoaXMuX21heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0czsgfQorICAgIGV4cGVjdGVkU3Vj
Y2Vzc2Z1bEJ1aWxkUmVxdWVzdHMoKSB7IHJldHVybiB0aGlzLl9leHBlY3RlZFN1Y2Nlc3NmdWxC
dWlsZFJlcXVlc3RzOyB9CiAgICAgbm90aWZpY2F0aW9uU2VudEF0KCkgeyByZXR1cm4gdGhpcy5f
bm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0aG9yKCkgeyByZXR1cm4gdGhpcy5fYXV0aG9y
TmFtZTsgfQogICAgIGFkZEJ1aWxkUmVxdWVzdChyZXF1ZXN0KQpAQCAtMTkwLDQyICsxOTYsNTIg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgYXN5bmMgX3VwZGF0ZUJ1aWxkUmVxdWVzdChjb250ZW50
KQorICAgIHsKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRl
LXRlc3QtZ3JvdXAnLCBjb250ZW50KTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFRlc3RH
cm91cC5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke3RoaXMuaWQoKX1gLCB7fSwgdHJ1
ZSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKTsKKyAgICB9CisKICAgICB1cGRhdGVOYW1lKG5ld05hbWUpCiAgICAgewot
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBpZCA9IHRoaXMuaWQoKTsKLSAg
ICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3Vw
JywgewotICAgICAgICAgICAgZ3JvdXA6IGlkLAorICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRl
QnVpbGRSZXF1ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAg
ICBuYW1lOiBuZXdOYW1lLAotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNhY2hlZEZldGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7
aWR9YCwge30sIHRydWUpCi0gICAgICAgICAgICAgICAgLnRoZW4oVGVzdEdyb3VwLl9jcmVhdGVN
b2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZChUZXN0R3JvdXApKTsKICAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgdXBkYXRlSGlkZGVuRmxhZyhoaWRkZW4pCiAgICAgewotICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBpZCA9IHRoaXMuaWQoKTsKLSAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgewotICAg
ICAgICAgICAgZ3JvdXA6IGlkLAorICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlQnVpbGRSZXF1
ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAgICBoaWRkZW46
ICEhaGlkZGVuLAotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdEdyb3VwLmNhY2hlZEZldGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7aWR9YCwg
e30sIHRydWUpCi0gICAgICAgICAgICAgICAgLnRoZW4oVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNG
cm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZChUZXN0R3JvdXApKTsKICAgICAgICAgfSk7CiAgICAg
fQogCiAgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCiAgICAgewotICAgICAgICBjb25z
dCBpZCA9IHRoaXMuaWQoKTsKLSAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Ci0gICAgICAgICAgICBncm91cDogaWQsCisgICAgICAg
IHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAgICAgICAgZ3Jv
dXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwKICAg
ICAgICAgICAgIG5vdGlmaWNhdGlvblNlbnRBdDogKG5ldyBEYXRlKS50b0lTT1N0cmluZygpCiAg
ICAgICAgIH0pOwotICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgVGVzdEdyb3VwLmNhY2hlZEZl
dGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7aWR9YCwge30sIHRydWUpOwotICAgICAgICByZXR1cm4g
VGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAg
fQorCisgICAgYXN5bmMgYWRkQnVpbGRSZXF1ZXN0cyhidWlsZFJlcXVlc3RDb3VudCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAg
ICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIGFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RDb3VudDogYnVpbGRSZXF1ZXN0Q291bnQKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYXN5
bmMgY2xlYXJOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGbGFnKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAgICAgICAgZ3Jv
dXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIG1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
czogZmFsc2UKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNyZWF0ZVdpdGhUYXNr
KHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKQEAgLTI3Myw5ICsyODksOSBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRoaXMuY2Fj
aGVkRmV0Y2goJy9hcGkvdGVzdC1ncm91cHMnLCB7dGFzazogdGFza0lkfSwgaWdub3JlQ2FjaGUp
LnRoZW4odGhpcy5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzLmJpbmQodGhpcykp
OwogICAgIH0KIAotICAgIHN0YXRpYyBmZXRjaEFsbFdpdGhOb3RpZmljYXRpb25SZWFkeSgpCisg
ICAgc3RhdGljIGZldGNoQWxsUmVhZHlGb3JGdXJ0aGVyUHJvY2Vzc2luZygpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1mb3It
bm90aWZpY2F0aW9uJywgbnVsbCwgdHJ1ZSkudGhlbih0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0
Y2hlZFRlc3RHcm91cHMuYmluZCh0aGlzKSk7CisgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZl
dGNoKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnLCBudWxs
LCB0cnVlKS50aGVuKHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcy5iaW5k
KHRoaXMpKTsKICAgICB9CiAKICAgICBzdGF0aWMgX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktdGVzdC1ncm91cHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL2FwaS10ZXN0LWdyb3Vwcy5qcwppbmRleCBhNmM2NzZhYmNjMWRlNzRjNmVjOWU4
ZGJjNTZmMjc4ODBjYWZlZTYzLi41M2FiN2RkY2Y0N2Y5MzVjYTg5MzgyYzAyNjFiYTljYjljYjVh
Y2IxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS10ZXN0LWdyb3Vwcy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL2FwaS10ZXN0LWdyb3Vwcy5qcwpAQCAtNiwxMiArNiwxMiBAQCBjb25zdCBUZXN0U2VydmVy
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IHByZXBhcmVT
ZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5w
cmVwYXJlU2VydmVyVGVzdDsKIAogZGVzY3JpYmUoJy9hcGkvdGVzdC1ncm91cHMnLCBmdW5jdGlv
biAoKSB7Ci0gICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CisgICAgcHJlcGFyZVNlcnZlclRl
c3QodGhpcywgJ25vZGUnKTsKIAotICAgIGRlc2NyaWJlKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5
LWZvci1ub3RpZmljYXRpb24nLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJy9hcGkvdGVzdC1ncm91
cHMvcmVhZHktZm9yLWZ1cnRoZXItcHJvY2Vzc2luZycsICgpID0+IHsKIAogICAgICAgICBpdCgn
c2hvdWxkIGdpdmUgYW4gZW1wdHkgbGlzdCBpZiB0aGVyZSBpcyBub3QgZXhpc3RpbmcgdGVzdCBn
cm91cCBhdCBhbGwnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBjb250ZW50ID0g
YXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3Jl
YWR5LWZvci1ub3RpZmljYXRpb24nKTsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2Fp
dCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvcmVhZHkt
Zm9yLWZ1cnRoZXItcHJvY2Vzc2luZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRl
bnQuc3RhdHVzLCAnT0snKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC50
ZXN0R3JvdXBzLCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVp
bGRSZXF1ZXN0cywgW10pOwpAQCAtMjIsNyArMjIsNyBAQCBkZXNjcmliZSgnL2FwaS90ZXN0LWdy
b3VwcycsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICBpdCgnc2hvdWxkIG5vdCBpbmNsdWRlIGEg
dGVzdCBncm91cCB3aXRoICJjYW5jZWxlZCIgc3RhdGUgaW4gYXQgbGVhc3Qgb25lIGJ1aWxkIHJl
cXVlc3QnLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdj
b21wbGV0ZWQnLCAnY2FuY2VsZWQnXSk7Ci0gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdh
aXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5
LWZvci1ub3RpZmljYXRpb24nKTsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvcmVhZHktZm9y
LWZ1cnRoZXItcHJvY2Vzc2luZycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQu
c3RhdHVzLCAnT0snKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC50ZXN0
R3JvdXBzLCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVpbGRS
ZXF1ZXN0cywgW10pOwpAQCAtMzMsNyArMzMsNyBAQCBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3Vw
cycsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICBpdCgnc2hvdWxkIGxpc3QgYWxsIHRlc3QgZ3Jv
dXBzIHdpdGggcGVuZGluZyBub3RpZmljYXRpb24nLCBhc3luYyAoKSA9PiB7CiAgICAgICAgICAg
ICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29t
cGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJ10pOwotICAgICAg
ICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNP
TignL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1mb3Itbm90aWZpY2F0aW9uJyk7CisgICAgICAgICAg
ICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50LnRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGNvbnN0IHRlc3RHcm91cCA9IGNvbnRlbnQudGVzdEdyb3Vwc1swXTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuaWQsIDYwMCk7CkBAIC00NywxMSArNDcsNjEgQEAgZGVz
Y3JpYmUoJy9hcGkvdGVzdC1ncm91cHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHRlc3RHcm91cC5jb21taXRTZXRzLCBbJzQwMScsICc0MDInLCAnNDAxJywg
JzQwMiddKTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgaXQoJ3Nob3VsZCBsaXN0IGFsbCB0ZXN0
IGdyb3VwcyBwb3RlbnRpYWxseSBuZWVkIGFkZGl0aW9uYWwgYnVpbGQgcmVxdWVzdHMnLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2Vy
dmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29t
cGxldGVkJ10sIGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KS5xdWVyeSgnVVBEQVRFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfbWF5X25l
ZWRfYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cyA9IFRSVUUgV0hFUkUgdGVzdGdyb3VwX2lkID0g
NjAwJyk7CisgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nl
c3NpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50LnRlc3RHcm91cHMubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IGNvbnRlbnQudGVzdEdyb3Vw
c1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuaWQsIDYwMCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLnRhc2ssIDUwMCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwodGVzdEdyb3VwLm5hbWUsICdzb21lIHRlc3QgZ3JvdXAnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYXV0aG9yLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5vayghdGVzdEdyb3VwLmhpZGRlbik7CisgICAgICAgICAgICBhc3NlcnQub2soIXRlc3RH
cm91cC5uZWVkc05vdGlmaWNhdGlvbik7CisgICAgICAgICAgICBhc3NlcnQub2sodGVzdEdyb3Vw
Lm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodGVzdEdyb3VwLnBsYXRmb3JtLCA2NSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHRlc3RHcm91cC5idWlsZFJlcXVlc3RzLCBbJzcwMCcsJzcwMScsICc3MDInLCAnNzAzJ10pOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0ZXN0R3JvdXAuY29tbWl0U2V0cywgWyc0MDEn
LCAnNDAyJywgJzQwMScsICc0MDInXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgbGlzdCBhbGwgdGVzdCBncm91cHMgbmVlZCBub3RpZmljYXRpb24gb3IgcG90ZW50aWFsbHkg
bmVlZCBhZGRpdGlvbmFsIGJ1aWxkIHJlcXVlc3RzJywgYXN5bmMgKCkgPT4geworICAgICAgICAg
ICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2Nv
bXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCddKTsKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0
ZWQnXSwgJ3dlYmtpdCcpOworICAgICAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5kYXRhYmFzZSgp
LnF1ZXJ5KCdVUERBVEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgU0VUIHRlc3Rncm91cF9tYXlfbmVl
ZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RzID0gVFJVRSBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSA2
MDEnKTsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvcmVhZHktZm9yLWZ1cnRoZXItcHJvY2Vz
c2luZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQudGVzdEdyb3Vwcy5sZW5n
dGgsIDIpOworCisgICAgICAgICAgICBjb25zdCBvbmVUZXN0R3JvdXAgPSBjb250ZW50LnRlc3RH
cm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob25lVGVzdEdyb3VwLmlkLCA2MDAp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC50YXNrLCA1MDApOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5uYW1lLCAnc29tZSB0ZXN0IGdyb3Vw
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob25lVGVzdEdyb3VwLmF1dGhvciwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQub2soIW9uZVRlc3RHcm91cC5oaWRkZW4pOworICAgICAgICAg
ICAgYXNzZXJ0Lm9rKG9uZVRlc3RHcm91cC5uZWVkc05vdGlmaWNhdGlvbik7CisgICAgICAgICAg
ICBhc3NlcnQub2soIW9uZVRlc3RHcm91cC5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5wbGF0Zm9ybSwgNjUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvbmVUZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cywg
Wyc3MDAnLCc3MDEnLCAnNzAyJywgJzcwMyddKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwob25lVGVzdEdyb3VwLmNvbW1pdFNldHMsIFsnNDAxJywgJzQwMicsICc0MDEnLCAnNDAyJ10p
OworCisgICAgICAgICAgICBjb25zdCBhbm90aGVyVGVzdEdyb3VwID0gY29udGVudC50ZXN0R3Jv
dXBzWzFdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3JvdXAuaWQsIDYw
MSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYW5vdGhlclRlc3RHcm91cC50YXNrLCA1MDAp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3JvdXAubmFtZSwgJ2Fub3Ro
ZXIgdGVzdCBncm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3Jv
dXAuYXV0aG9yLCAnd2Via2l0Jyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWFub3RoZXJUZXN0
R3JvdXAuaGlkZGVuKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYW5vdGhlclRlc3RHcm91cC5u
ZWVkc05vdGlmaWNhdGlvbik7CisgICAgICAgICAgICBhc3NlcnQub2soYW5vdGhlclRlc3RHcm91
cC5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGFub3RoZXJUZXN0R3JvdXAucGxhdGZvcm0sIDY1KTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoYW5vdGhlclRlc3RHcm91cC5idWlsZFJlcXVlc3RzLCBbJzcxMCcsJzcxMScsICc3
MTInLCAnNzEzJ10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChhbm90aGVyVGVzdEdy
b3VwLmNvbW1pdFNldHMsIFsnNDAxJywgJzQwMicsICc0MDEnLCAnNDAyJ10pOworICAgICAgICB9
KTsKKwogICAgICAgICBpdCgnc2hvdWxkIG5vdCBsaXN0IGhpZGRlbiB0ZXN0IGdyb3VwJywgYXN5
bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgZGF0YWJhc2UgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7CiAgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYXRhYmFzZSwg
Wydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnXSk7CiAg
ICAgICAgICAgICBhd2FpdCBkYXRhYmFzZS5xdWVyeSgnVVBEQVRFIGFuYWx5c2lzX3Rlc3RfZ3Jv
dXBzIFNFVCB0ZXN0Z3JvdXBfaGlkZGVuID0gVFJVRSBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSA2MDAn
KTsKLSAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvcmVhZHktZm9yLW5vdGlmaWNhdGlvbicpOwor
ICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
Z2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1mb3ItZnVydGhlci1wcm9jZXNzaW5nJyk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudC5zdGF0dXMsICdPSycpOwogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50LnRlc3RHcm91cHMsIFtdKTsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC5idWlsZFJlcXVlc3RzLCBbXSk7CkBAIC02NCw3
ICsxMTQsNyBAQCBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3VwcycsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgIGNvbnN0IGRhdGFiYXNlID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAg
ICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGF0YWJhc2UsIFsnY29tcGxldGVkJywg
J2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJ10pOwogICAgICAgICAgICAgYXdh
aXQgZGF0YWJhc2UucXVlcnkoJ1VQREFURSBhbmFseXNpc190ZXN0X2dyb3VwcyBTRVQgdGVzdGdy
b3VwX25lZWRzX25vdGlmaWNhdGlvbiA9IEZBTFNFIFdIRVJFIHRlc3Rncm91cF9pZCA9IDYwMCcp
OwotICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1mb3Itbm90aWZpY2F0aW9uJyk7Cisg
ICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5n
ZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50LnN0YXR1cywgJ09LJyk7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQudGVzdEdyb3VwcywgW10pOwogICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50LmJ1aWxkUmVxdWVzdHMsIFtdKTsKQEAgLTc2LDcg
KzEyNiw3IEBAIGRlc2NyaWJlKCcvYXBpL3Rlc3QtZ3JvdXBzJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICBpdCgnc2hvdWxkIG5vdCBsaXN0IGEgdGVzdCBncm91cCB0aGF0IGhhcyBzb21lIGluY29t
cGxldGVkIGJ1aWxkIHJlcXVlc3RzJywgYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
ZGF0YWJhc2UgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBhd2FpdCBNb2Nr
RGF0YS5hZGRNb2NrRGF0YShkYXRhYmFzZSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2Nv
bXBsZXRlZCcsICdydW5uaW5nJ10pOwotICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1m
b3Itbm90aWZpY2F0aW9uJyk7CisgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1m
dXJ0aGVyLXByb2Nlc3NpbmcnKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50LnN0
YXR1cywgJ09LJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQudGVzdEdy
b3VwcywgW10pOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50LmJ1aWxkUmVx
dWVzdHMsIFtdKTsKQEAgLTg0LDUgKzEzNCw1MSBAQCBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3Vw
cycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC5j
b21taXRzLCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQudXBsb2Fk
ZWRGaWxlcywgW10pOwogICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNldCAidGVz
dGdyb3VwX21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMiIHdoZW4gYSBidWlsZCBy
ZXF1ZXN0IGlzIHNldCB0byAiZmFpbGVkIiBkdWUgdG8gImZhaWxlZElmTm90Q29tcGxldGVkIics
IGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRhdGFiYXNlID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGF0YWJh
c2UsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAncnVubmluZyddKTsK
KworICAgICAgICAgICAgbGV0IGRhdGEgPSAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5n
ZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFk
YXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKTsKKyAg
ICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvYnVp
bGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jywge3NsYXZlTmFtZTogJ3Rlc3QnLCBzbGF2ZVBhc3N3
b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdFVwZGF0ZXM6IHs3
MDM6IHtzdGF0dXM6ICdmYWlsZWRJZk5vdENvbXBsZXRlZCcsIHVybDogJ2h0dHA6Ly93ZWJraXQu
b3JnL2J1aWxkLzEnfX19KTsKKyAgICAgICAgICAgIGRhdGEgPSAgYXdhaXQgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcpOworICAgICAgICAgICAg
YXNzZXJ0Lm9rKGRhdGFbJ3Rlc3RHcm91cHMnXVswXS5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVx
dWVzdHMpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHNldCAidGVzdGdyb3Vw
X21heV9uZWVkX2FkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdHMiIHdoZW4gYSBidWlsZCByZXF1ZXN0
IGlzIHNldCB0byAiZmFpbGVkIicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRh
dGFiYXNlID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoZGF0YWJhc2UsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21w
bGV0ZWQnLCAncnVubmluZyddKTsKKworICAgICAgICAgICAgbGV0IGRhdGEgPSAgYXdhaXQgVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZEFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkucG9zdEpTT04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jywge3NsYXZlTmFt
ZTogJ3Rlc3QnLCBzbGF2ZVBhc3N3b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgICAgIGJ1
aWxkUmVxdWVzdFVwZGF0ZXM6IHs3MDM6IHtzdGF0dXM6ICdmYWlsZWQnLCB1cmw6ICdodHRwOi8v
d2Via2l0Lm9yZy9idWlsZC8xJ319fSk7CisgICAgICAgICAgICBkYXRhID0gIGF3YWl0IFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDAnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5vayhkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZEFkZGl0aW9uYWxC
dWlsZFJlcXVlc3RzKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBzZXQgInRl
c3Rncm91cF9tYXlfbmVlZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVlc3RzIiB0byBhbGwgdGVzdCBn
cm91cHMgdGhvc2UgaGF2ZSBmYWlsZWQgYnVpbGQgcmVxdWVzdCcsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGRhdGFiYXNlID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAg
ICAgICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGF0YWJhc2UsIFsnY29tcGxldGVkJywg
J2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAncnVubmluZyddKTsKKyAgICAgICAgICAgIGF3YWl0
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRhdGFiYXNlLCBbJ2NvbXBsZXRlZCcs
ICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1bm5pbmcnXSwgJ3dlYmtpdCcpOworCisgICAg
ICAgICAgICBsZXQgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04o
Jy9hcGkvdGVzdC1ncm91cHMvNjAwJyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWRhdGFbJ3Rl
c3RHcm91cHMnXVswXS5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMpOworICAgICAgICAg
ICAgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVz
dC1ncm91cHMvNjAxJyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWRhdGFbJ3Rlc3RHcm91cHMn
XVswXS5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMpOworCisgICAgICAgICAgICBhd2Fp
dCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1
aWxkLXdlYmtpdCcsIHtzbGF2ZU5hbWU6ICd0ZXN0Jywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3b3Jk
JywKKyAgICAgICAgICAgICAgICBidWlsZFJlcXVlc3RVcGRhdGVzOiB7CisgICAgICAgICAgICAg
ICAgICAgIDcwMzoge3N0YXR1czogJ2ZhaWxlZCcsIHVybDogJ2h0dHA6Ly93ZWJraXQub3JnL2J1
aWxkLzEnfSwKKyAgICAgICAgICAgICAgICAgICAgNzEzOiB7c3RhdHVzOiAnZmFpbGVkSWZOb3RD
b21wbGV0ZWQnLCB1cmw6ICdodHRwOi8vd2Via2l0Lm9yZy9idWlsZC8xMSd9LAorICAgICAgICAg
ICAgICAgIH19KTsKKworICAgICAgICAgICAgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvNjAwJyk7CisgICAgICAgICAgICBhc3Nl
cnQub2soZGF0YVsndGVzdEdyb3VwcyddWzBdLm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0
cyk7CisgICAgICAgICAgICBkYXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDEnKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhkYXRh
Wyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwppbmRl
eCBjN2JlNDhhNDM0ZGE0MzE5MmMxOWEzNTZkMGU3NDZjNGQyNjJjYTVkLi5hNDE2OGNhZDY0YTMy
NDIxMDg0MzY5YzY1N2U5ZWE0ZjYwN2EyYzU0IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdyb3VwLXRl
c3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmls
ZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTIwNCw0ICsyMDQsMTA0IEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigp
ewogICAgICAgICBhc3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwc1swXS5uZWVkc05vdGlmaWNhdGlv
bigpLCB0cnVlKTsKICAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQo
KSk7CiAgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCAibWF5X25lZWRf
YWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0cyIgZmllbGQgZGVmYXVsdHMgdG8gZmFsc2UnLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29t
ZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVy
KChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAg
ICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkx
NjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0
LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFz
aycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5z
b21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmV2aXNpb25TZXRzfSk7Cisg
ICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKwor
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhy
ZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAg
ICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKGdyb3VwLm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpLCBmYWxzZSk7
CisgICAgICAgIGFzc2VydC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOworCisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gdXBkYXRlICJtYXlfbmVlZF9hZGRpdGlv
bmFsX2J1aWxkX3JlcXVlc3RzIiBmaWVsZCB0byB0cnVlIGFuZCBmYWxzZScsIGFzeW5jICgpID0+
IHsKKyAgICAgICAgYXdhaXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2sn
KTsKKyAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9z
aXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29u
c3QgcmV2aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0s
IHtbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVz
dWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LAorICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
Y29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2Vy
dC5lcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuZXF1
YWwoZ3JvdXAubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKCksIGZhbHNlKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHM6
IHRydWV9KTsKKworICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVh
bCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVk
R3JvdXBzWzBdLm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpLCB0cnVlKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBtYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHM6
IGZhbHNlfSk7CisKKyAgICAgICAgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRj
aEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1
cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3Jv
dXBzWzBdLm1heU5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAgfSk7
CisKKyAgICBpdCgnc2hvdWxkIGNsZWFyICJtYXlfbmVlZF9hZGRpdGlvbmFsX2J1aWxkX3JlcXVl
c3RzIiB3aGlsZSBoaWRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdh
aXQgYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29u
c3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9z
aXRvcnkubmFtZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRz
ID0gW3tbd2Via2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCld
OiB7cmV2aXNpb246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAg
e25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRh
LnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3Rp
ZmljYXRpb246IGZhbHNlLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRH
cm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUp
OworICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5p
ZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAubWF5TmVl
ZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKCksIGZhbHNlKTsKKworICAgICAgICBhd2FpdCBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBtYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHM6IHRydWV9KTsKKworICAg
ICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBz
Lmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5l
ZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpLCB0cnVlKTsKKworICAgICAgICBhd2FpdCBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBoaWRkZW46IHRydWV9KTsKKworICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdh
aXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAg
ICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0
LmVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKCks
IGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHNbMF0uaXNIaWRkZW4o
KSwgdHJ1ZSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gYWRkIGJ1aWxk
IHJlcXVlc3RzIHRvIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFk
ZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5
Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7
W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jl
dmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1l
OiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21l
UGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0
aW9uOiBmYWxzZSwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAg
Y29uc3QgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAg
IGNvbnN0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsn
dGFza0lkJ10sIHRydWUpOworICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgs
IDEpOworICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2Vy
dC5lcXVhbChncm91cC5pZCgpLCBpbnNlcnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuZXF1
YWwoZ3JvdXAubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKCksIGZhbHNlKTsKKyAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKGdyb3VwLmV4cGVjdGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMoKSwgMik7CisK
KyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3Jv
dXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgYWRkaXRpb25hbEJ1aWxkUmVxdWVzdENvdW50
OiAyfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5m
ZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVh
bCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVk
R3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCA0KTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdy
b3VwLmV4cGVjdGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHMoKSwgMik7CisgICAgICAgIGZvciAo
Y29uc3QgY29tbWl0U2V0IG9mIHVwZGF0ZWRHcm91cHNbMF0ucmVxdWVzdGVkQ29tbWl0U2V0cygp
KSB7CisgICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdXBkYXRlZEdyb3Vwc1swXS5y
ZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgfQorICAgIH0pOwogfSk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDY0NTIw
YTVlZjU1NWRhMzFmNzlhNjUxYmYwMGI1MzhkMjM3YzNiYzQuLmUxNDhlNDc3ODJlOWUyMGYwYjI0
ZDllOTljNzQ0YWUyYzdhYzMzZGQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTY0LDcg
KzY0LDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfcnVucycs
IHtpZDogODAxLCBjb25maWc6IDMwMSwgYnVpbGQ6IDkwMSwgbWVhbl9jYWNoZTogMTAwfSksCiAg
ICAgICAgIF0pOwogICAgIH0sCi0gICAgYWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVz
TGlzdCkKKyAgICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0LCBuZWVkc19u
b3RpZmljYXRpb249dHJ1ZSkKICAgICB7CiAgICAgICAgIGlmICghc3RhdHVzTGlzdCkKICAgICAg
ICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnXTsKQEAgLTc5LDcgKzc5LDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5p
bnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAz
MDAsIG5hbWU6ICdzb21lIHRhc2snLAogICAgICAgICAgICAgICAgIHN0YXJ0X3J1bjogODAxLCBz
dGFydF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonLAogICAgICAgICAgICAgICAg
IGVuZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwK
LSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwg
dGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJywgbmVlZHNfbm90aWZpY2F0aW9uOiB0
cnVlfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA2MDAsIHRhc2s6IDUwMCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCcsIGV4cGVjdGVkX3N1Y2Nl
c3NmdWxfYnVpbGRfcmVxdWVzdHM6IDQsIG5lZWRzX25vdGlmaWNhdGlvbn0pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMF0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9y
bTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0p
LAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0
dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAy
MDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1p
dF9zZXQ6IDQwMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0
b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3Jk
ZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLApAQCAtMTIzLDcgKzEyMyw3IEBAIE1vY2tEYXRhID0g
ewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtpZDogMTQwMn0pLAogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogMTQwMiwgY29tbWl0
OiA4NzgzMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3Nl
dDogMTQwMiwgY29tbWl0OiAxOTYzMzZ9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlz
aXNfdGVzdF9ncm91cHMnLCB7aWQ6IDE2MDAsIHRhc2s6IDUwMCwgbmFtZTogJ3Rlc3QgZ3JvdXAg
d2l0aCBnaXQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBz
Jywge2lkOiAxNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICd0ZXN0IGdyb3VwIHdpdGggZ2l0JywgZXhw
ZWN0ZWRfc3VjY2Vzc2Z1bF9idWlsZF9yZXF1ZXN0czogNH0pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogMTcwMCwgc3RhdHVzOiAncGVuZGluZycsIHRyaWdn
ZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAyLCBwbGF0Zm9ybTogNjUsIHRlc3Q6
IDIwMCwgZ3JvdXA6IDE2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiAxNDAxfSksCiAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiAxNzAxLCBzdGF0dXM6ICdwZW5k
aW5nJywgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDIsIHBsYXRmb3Jt
OiA2NSwgdGVzdDogMjAwLCBncm91cDogMTYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDE0MDJ9
KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDE3MDIsIHN0
YXR1czogJ3BlbmRpbmcnLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAw
MiwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiAxNjAwLCBvcmRlcjogMiwgY29tbWl0
X3NldDogMTQwMX0pLApAQCAtMTM5LDcgKzEzOSw3IEBAIE1vY2tEYXRhID0gewogICAgICAgICBj
b25zdCBwbGF0Zm9ybSA9IDY1OwogICAgICAgICBjb25zdCByZXBvc2l0b3J5X2dyb3VwID0gMjAw
MTsKICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgIGRiLmluc2VydCgn
YW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMSwgdGFzazogNTAwLCBuYW1lOiAnYW5vdGhl
ciB0ZXN0IGdyb3VwJywgYXV0aG9yfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lz
X3Rlc3RfZ3JvdXBzJywge2lkOiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBn
cm91cCcsIGF1dGhvciwgZXhwZWN0ZWRfc3VjY2Vzc2Z1bF9idWlsZF9yZXF1ZXN0czogNH0pLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEzLCBzdGF0dXM6
IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwg
dGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwMn0pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEwLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMF0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3Jv
dXA6IDYwMSwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRy
aWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwg
b3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLApAQCAtMTU3LDcgKzE1Nyw3IEBAIE1vY2tEYXRh
ID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogMTA4MCwg
cGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzayB3aXRoIGNvbXBvbmVu
dCB0ZXN0JywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgwMSwgc3RhcnRfcnVuX3RpbWU6
ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAgICAgICBlbmRfcnVuOiA4MDEs
IGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCi0gICAgICAgICAgICBk
Yi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA5MDAsIHRhc2s6IDEwODAsIG5h
bWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQgdGVzdCd9KSwKKyAgICAgICAgICAg
IGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDkwMCwgdGFzazogMTA4MCwg
bmFtZTogJ3NvbWUgdGVzdCBncm91cCB3aXRoIGNvbXBvbmVudCB0ZXN0JywgZXhwZWN0ZWRfc3Vj
Y2Vzc2Z1bF9idWlsZF9yZXF1ZXN0czogNH0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRfc2V0cycsIHtpZDogNDAzfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRf
aXRlbXMnLCB7c2V0OiA0MDMsIGNvbW1pdDogODc4MzJ9KSwKICAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwMywgY29tbWl0OiA5MzExNn0pLApAQCAtMTgw
LDcgKzE4MCw3IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNp
c190YXNrcycsIHtpZDogMTA4MCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3Nv
bWUgdGFzayB3aXRoIGNvbXBvbmVudCB0ZXN0JywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46
IDgwMSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAg
ICAgICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6Mjcu
MVonfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQg
dGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7
aWQ6IDkwMCwgdGFzazogMTA4MCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCB3aXRoIGNvbXBvbmVu
dCB0ZXN0JywgZXhwZWN0ZWRfc3VjY2Vzc2Z1bF9idWlsZF9yZXF1ZXN0czogNH0pLAogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtpZDogNDA0fSksCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDQsIGNvbW1pdDogODc4MzJ9KSwK
ICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwgY29t
bWl0OiA5NjMzNn0pLApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcwppbmRleCBhOGVjMGVkZjFl
YTVlNWVkNjA5ZDllMjAzMTA0MzNiMWU2MWUzNjFiLi5hZDYwYzQ2ZDdlYjZjYjRiMDI2NThlMmNh
NzY0Yzg5OTUyMzNkM2ExIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2Vy
dmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcwpAQCAtMTU2LDcg
KzE1Niw3IEBAIGNsYXNzIFRlc3RTZXJ2ZXIgewogICAgIF9kZXRlcm1pbmVQZ3NxbERpcmVjdG9y
eSgpCiAgICAgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgbGV0IGluaXRkYkxvY2F0aW9u
ID0gY2hpbGRQcm9jZXNzLmV4ZWNGaWxlU3luYygnd2hpY2gnLCBbJ2luaXRkYiddKTsKKyAgICAg
ICAgICAgIGxldCBpbml0ZGJMb2NhdGlvbiA9IGNoaWxkUHJvY2Vzcy5leGVjRmlsZVN5bmMoJ3do
aWNoJywgWydpbml0ZGInXSkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBwYXRoLmRp
cm5hbWUoaW5pdGRiTG9jYXRpb24pOwogICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAg
ICAgICAgbGV0IHNlcnZlclBnc3FsTG9jYXRpb24gPSAnL0FwcGxpY2F0aW9ucy9TZXJ2ZXIuYXBw
L0NvbnRlbnRzL1NlcnZlclJvb3QvdXNyL2Jpbi8nOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKaW5kZXggMGY3ZDNmMDNjMmU1NGFlYTkxYmQ5NWZm
YmFjYzllOWM3MzM0ZTcyNi4uODlhMGE4YWNiOTliZDUxMjgyMmUwNzc1YmEwOTBlZmU5ZWU3YWQ2
NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3J1bi1hbmFseXNp
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpz
CkBAIC0xNiw2ICsxNiw3IEBAIGZ1bmN0aW9uIG1haW4oYXJndikKICAgICAgICAge25hbWU6ICct
LW5vdGlmaWNhdGlvbi1jb25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKICAgICAgICAge25h
bWU6ICctLWFuYWx5c2lzLXJhbmdlLWluLWRheXMnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0
OiAxMH0sCiAgICAgICAgIHtuYW1lOiAnLS1zZWNvbmRzLXRvLXNsZWVwJywgdHlwZTogcGFyc2VG
bG9hdCwgZGVmYXVsdDogMTIwMH0sCisgICAgICAgIHtuYW1lOiAnLS1tYXgtcmV0cnktcmF0aW8n
LCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiAyLjV9LAogICAgIF0pOwogCiAgICAgaWYgKCFv
cHRpb25zKQpAQCAtMzEsNiArMzIsNyBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0
aW9ucykKICAgICAgICAgY29uc3Qgc2VydmVyQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmls
ZVN5bmMob3B0aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0Zi04JykpOwogICAgICAg
ICBjb25zdCBub3RpZmljYXRpb25Db25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhv
cHRpb25zWyctLW5vdGlmaWNhdGlvbi1jb25maWctanNvbiddLCAndXRmLTgnKSk7CiAgICAgICAg
IGNvbnN0IGFuYWx5c2lzUmFuZ2VJbkRheXMgPSBvcHRpb25zWyctLWFuYWx5c2lzLXJhbmdlLWlu
LWRheXMnXTsKKyAgICAgICAgY29uc3QgbWF4aW11bVJldHJ5UmF0aW9uID0gb3B0aW9uc1snLS1t
YXgtcmV0cnktcmF0aW8nXTsKICAgICAgICAgc2Vjb25kc1RvU2xlZXAgPSBvcHRpb25zWyctLXNl
Y29uZHMtdG8tc2xlZXAnXTsKICAgICAgICAgZ2xvYmFsLlJlbW90ZUFQSSA9IG5ldyBSZW1vdGVB
UEkoc2VydmVyQ29uZmlnLnNlcnZlcik7CiAgICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJl
KHNlcnZlckNvbmZpZy5zbGF2ZS5uYW1lLCBzZXJ2ZXJDb25maWcuc2xhdmUucGFzc3dvcmQpOwpA
QCAtNDUsMTQgKzQ3LDE1IEBAIGFzeW5jIGZ1bmN0aW9uIGFuYWx5c2lzTG9vcChvcHRpb25zKQog
ICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnQgYW5hbHl6aW5nIGxhc3QgJHthbmFseXNpc1Jhbmdl
SW5EYXlzfSBkYXlzIG1lYXN1cmVtZW50IHNldHMuYCk7CiAgICAgICAgIGF3YWl0IGFuYWx5emVy
LmFuYWx5emVPbmNlKCk7CiAKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEFsbFdpdGhOb3RpZmljYXRpb25SZWFkeSgpOworICAgICAgICBjb25zdCB0ZXN0
R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoQWxsUmVhZHlGb3JGdXJ0aGVyUHJvY2Vzc2lu
ZygpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzTmVlZE5vdGlmaWNhdGlvbiA9IGF3YWl0IHBy
b2Nlc3NUZXN0R3JvdXBzTmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKHRlc3RHcm91cHMsIG1h
eGltdW1SZXRyeVJhdGlvbik7CiAKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUmVtb3ZlQVBJ
ID0gbmV3IFJlbW90ZUFQSShub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uU2VydmVyQ29u
ZmlnKTsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZyA9IG5vdGlmaWNh
dGlvbkNvbmZpZy5ub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnOwogICAgICAgICBjb25zdCBub3Rp
ZmllciA9IG5ldyBBbmFseXNpc1Jlc3VsdHNOb3RpZmllcihub3RpZmljYXRpb25NZXNzYWdlQ29u
ZmlnLm1lc3NhZ2VUZW1wbGF0ZSwgbm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZy5maW5hbGl6ZVNj
cmlwdCwKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWcubWVzc2FnZUNvbnN0
cnVjdGlvblJ1bGVzLCBub3RpZmljYXRpb25SZW1vdmVBUEksIG5vdGlmaWNhdGlvbkNvbmZpZy5u
b3RpZmljYXRpb25TZXJ2ZXJDb25maWcucGF0aCwgbmV3IFN1YnByb2Nlc3MpOwogCi0gICAgICAg
IGF3YWl0IG5vdGlmaWVyLnNlbmROb3RpZmljYXRpb25zRm9yVGVzdEdyb3Vwcyh0ZXN0R3JvdXBz
KTsKKyAgICAgICAgYXdhaXQgbm90aWZpZXIuc2VuZE5vdGlmaWNhdGlvbnNGb3JUZXN0R3JvdXBz
KHRlc3RHcm91cHNOZWVkTm90aWZpY2F0aW9uKTsKICAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCBhbmFseXplIG1lYXN1cmVtZW50IHNldHMgZHVlIHRv
ICR7ZXJyb3J9YCk7CiAgICAgfQpAQCAtNjEsNSArNjQsMzAgQEAgYXN5bmMgZnVuY3Rpb24gYW5h
bHlzaXNMb29wKG9wdGlvbnMpCiAgICAgc2V0VGltZW91dCgoKSA9PiBhbmFseXNpc0xvb3Aob3B0
aW9ucyksIHNlY29uZHNUb1NsZWVwICogMTAwMCk7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHByb2Nl
c3NUZXN0R3JvdXBzTmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKHRlc3RHcm91cHMsIG1heGlt
dW1SZXRyeVJhdGlvKQoreworICAgIGNvbnN0IHRlc3RHcm91cHNOZWVkTm90aWZpY2F0aW9uID0g
W107CisgICAgZm9yIChjb25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3VwcykgeworICAgICAgICBp
ZiAoIXRlc3RHcm91cC5tYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMoKSkgeworICAgICAg
ICAgICAgdGVzdEdyb3Vwc05lZWROb3RpZmljYXRpb24ucHVzaCh0ZXN0R3JvdXApOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF4TWlzc2luZ1N1Y2Nl
c3NmdWxCdWlsZFJlcXVlc3RDb3VudCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgY29tbWl0U2V0
IG9mIHRoaXMucmVxdWVzdGVkQ29tbWl0U2V0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGJ1aWxk
UmVxdWVzdHMgPSB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KTsKKyAg
ICAgICAgICAgIG1heE1pc3NpbmdTdWNjZXNzZnVsQnVpbGRSZXF1ZXN0Q291bnQgPSBNYXRoLm1h
eChtYXhNaXNzaW5nU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdENvdW50LCBidWlsZFJlcXVlc3RzLmZp
bHRlcigoYnVpbGRSZXF1ZXN0KSA9PiAhYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5n
dGgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heE1pc3NpbmdTdWNjZXNzZnVsQnVpbGRS
ZXF1ZXN0Q291bnQgPCAgdGhpcy5leHBlY3RlZFN1Y2Nlc3NmdWxCdWlsZFJlcXVlc3RzKCkKKyAg
ICAgICAgICAgICYmIHRlc3RHcm91cC5yZXBldGl0aW9uQ291bnQoKSAvIHRoaXMuZXhwZWN0ZWRT
dWNjZXNzZnVsQnVpbGRSZXF1ZXN0cygpIDwgbWF4aW11bVJldHJ5UmF0aW8pCisgICAgICAgICAg
ICBhd2FpdCB0ZXN0R3JvdXAuYWRkQnVpbGRSZXF1ZXN0cyhtYXhNaXNzaW5nU3VjY2Vzc2Z1bEJ1
aWxkUmVxdWVzdENvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEdyb3Vwc05l
ZWROb3RpZmljYXRpb24ucHVzaCh0ZXN0R3JvdXApOworICAgICAgICBhd2FpdCB0ZXN0R3JvdXAu
Y2xlYXJOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGbGFnKCk7CisgICAgfQorICAgIHJldHVy
biB0ZXN0R3JvdXBzTmVlZE5vdGlmaWNhdGlvbjsKK30KKwogCiBtYWluKHByb2Nlc3MuYXJndik7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdy
b3Vwcy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3Qt
Z3JvdXBzLXRlc3RzLmpzCmluZGV4IGZiODkxNjJlMmE4Yzk3ZmUwZWQyNjQ0NTEzMjE1MmMxMGUw
NjcwYjkuLjgxYmI1NTdjYjZlMDM5YWVlNTk3YTY2ZDJhMmFlYWNkNGVlOGJjYzggMTAwNjQ0Ci0t
LSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3Rz
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBz
LXRlc3RzLmpzCkBAIC03LDcgKzcsNyBAQCBjb25zdCBOb2RlUHJpdmlsZWdlZEFQSSA9IHJlcXVp
cmUoJy4uL3Rvb2xzL2pzL3ByaXZpbGVnZWQtYXBpLmpzJykuUHJpdmlsZWdlZEFQSQogY29uc3Qg
TW9ja01vZGVscyA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJykuTW9j
a01vZGVsczsKIGNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2Nr
LXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3RlQVBJOwogCi1mdW5jdGlvbiBzYW1wbGVUZXN0R3Jv
dXAobmVlZHNOb3RpZmljYXRpb249dHJ1ZSkgeworZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5l
ZWRzTm90aWZpY2F0aW9uPXRydWUsIGV4cGVjdGVkU3VjY2Vzc2Z1bEJ1aWxkUmVxdWVzdHM9NCwg
bWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzPXRydWUpIHsKICAgICByZXR1cm4gewogICAg
ICAgICAidGVzdEdyb3VwcyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMjEyOCIsCkBAIC0yMCw2
ICsyMCw5IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05vdGlmaWNhdGlvbj10cnVl
KSB7CiAgICAgICAgICAgICAibmVlZHNOb3RpZmljYXRpb24iOiBuZWVkc05vdGlmaWNhdGlvbiwK
ICAgICAgICAgICAgICJidWlsZFJlcXVlc3RzIjogWyIxNjk4NSIsICIxNjk4NiIsICIxNjk4NyIs
ICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCIsICIxNjk5MSIsICIxNjk5MiJdLAogICAgICAgICAg
ICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAorICAgICAgICAgICAgIm5vdGlmaWNh
dGlvblNlbnRBdCI6IG51bGwsCisgICAgICAgICAgICBleHBlY3RlZFN1Y2Nlc3NmdWxCdWlsZFJl
cXVlc3RzLAorICAgICAgICAgICAgbWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzCiAgICAg
ICAgIH1dLAogICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAi
MTY5ODUiLApAQCAtMTc0LDYgKzE3Nyw2NiBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGRlc2NyaWJlKCdleHBlY3RlZFN1
Y2Nlc3NmdWxCdWlsZFJlcXVlc3RzJywgKCkgPT4geworICAgICAgICBjb25zdCByZXF1ZXN0cyA9
IE1vY2tSZW1vdGVBUEkuaW5qZWN0KCdodHRwczovL3BlcmYud2Via2l0Lm9yZycsIE5vZGVQcml2
aWxlZ2VkQVBJKTsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBQcml2
aWxlZ2VkQVBJLmNvbmZpZ3VyZSgndGVzdCcsICdwYXNzd29yZCcpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIGNvbnN0cnVjdCBleHBlY3RlZFN1Y2Nlc3NmdWxCdWlsZFJlcXVl
c3RzIGZyb20gZGF0YScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGZldGNoUHJv
bWlzZSA9IFRlc3RHcm91cC5mZXRjaEZvclRhc2soMTM3Nik7CisgICAgICAgICAgICByZXF1ZXN0
c1swXS5yZXNvbHZlKHNhbXBsZVRlc3RHcm91cCgpKTsKKyAgICAgICAgICAgIGxldCB0ZXN0R3Jv
dXBzID0gYXdhaXQgZmV0Y2hQcm9taXNlOworICAgICAgICAgICAgYXNzZXJ0KHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5leHBlY3RlZFN1Y2Nlc3NmdWxCdWls
ZFJlcXVlc3RzKCksIDQpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdt
YXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJl
cXVlc3RzID0gTW9ja1JlbW90ZUFQSS5pbmplY3QoJ2h0dHBzOi8vcGVyZi53ZWJraXQub3JnJywg
Tm9kZVByaXZpbGVnZWRBUEkpOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg
ICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKCd0ZXN0JywgJ3Bhc3N3b3JkJyk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY29uc3RydWN0IG1heU5lZWRBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0cyBmcm9tIGRhdGEnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBm
ZXRjaFByb21pc2UgPSBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKDEzNzYpOworICAgICAgICAgICAg
cmVxdWVzdHNbMF0ucmVzb2x2ZShzYW1wbGVUZXN0R3JvdXAoKSk7CisgICAgICAgICAgICBsZXQg
dGVzdEdyb3VwcyA9IGF3YWl0IGZldGNoUHJvbWlzZTsKKyAgICAgICAgICAgIGFzc2VydCh0ZXN0
R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBsZXQgdGVzdEdyb3VwID0gdGVzdEdyb3Vw
c1swXTsKKyAgICAgICAgICAgIGFzc2VydC5vayh0ZXN0R3JvdXAubWF5TmVlZEFkZGl0aW9uYWxC
dWlsZFJlcXVlc3RzKCkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGJlIGFi
bGUgdG8gY2xlYXIgbWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzIGZsYWcnLCBhc3luYyAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBmZXRjaFByb21pc2UgPSBUZXN0R3JvdXAuZmV0Y2hG
b3JUYXNrKDEzNzYpOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShzYW1wbGVUZXN0
R3JvdXAoKSk7CisgICAgICAgICAgICBsZXQgdGVzdEdyb3VwcyA9IGF3YWl0IGZldGNoUHJvbWlz
ZTsKKyAgICAgICAgICAgIGFzc2VydCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBsZXQgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5vayh0
ZXN0R3JvdXAubWF5TmVlZEFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzKCkpOworCisgICAgICAgICAg
ICBjb25zdCB1cGRhdGVQcm9taXNlID0gdGVzdEdyb3VwLmNsZWFyTmVlZEFkZGl0aW9uYWxCdWls
ZFJlcXVlc3RzRmxhZygpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5tZXRob2QsICdQT1NUJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzFdLmRhdGEsIHtncm91cDogJzIxMjgnLCBtYXlOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHM6
IGZhbHNlLCBzbGF2ZU5hbWU6ICd0ZXN0Jywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3b3JkJ30pOwor
ICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSgpOworCisgICAgICAgICAgICBhd2FpdCBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sy
XS5tZXRob2QsICdHRVQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1syXS51
cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRU
ZXN0R3JvdXAgPSBzYW1wbGVUZXN0R3JvdXAodHJ1ZSwgNCwgZmFsc2UpOworICAgICAgICAgICAg
cmVxdWVzdHNbMl0ucmVzb2x2ZSh1cGRhdGVkVGVzdEdyb3VwKTsKKworICAgICAgICAgICAgdGVz
dEdyb3VwcyA9IGF3YWl0IHVwZGF0ZVByb21pc2U7CisgICAgICAgICAgICB0ZXN0R3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5tYXlOZWVk
QWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9KTsK
KwogICAgIGRlc2NyaWJlKCdfY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSB0ZXN0IGdyb3VwcycsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIHZhciBncm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhzYW1wbGVUZXN0R3JvdXAoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351487</attachid>
            <date>2018-10-03 00:49:11 -0700</date>
            <delta_ts>2018-10-03 20:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190188-20181003004911.patch</filename>
            <type>text/plain</type>
            <size>65172</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzEyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiNzZkZGM3NDZhZjk2OTc0YmEyYzVlN2U2NTA3ZjMyN2E2NzViYWU2Li5iYjM2MDE2Mzk4
MTEzNzViMjlhMzg2NTdhYmE1MGE3Y2U1ZDA2YjMyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxOC0xMC0wMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcmV0cnkgZm9yIHRlc3QgZ3JvdXBzIHdpdGggZmFp
bGVkIGJ1aWxkIHJlcXVlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgcmV0cnkgbG9naWMgaW4gcnVuLWFuYWx5c2lzIHNjcmlwdC4KKyAg
ICAgICAgQ3VycmVudCByZXRyeSBsb2dpYyB3aWxsIG9ubHkgYmUgdHJpZ2dlcmVkIHdoZW4gdGhl
cmUgaXMgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgYnVpbGQgcmVxdWVzdCBmb3IgZWFjaCBjb21t
aXQgc2V0CisgICAgICAgIGluIGEgdGVzdCBncm91cC4KKworICAgICAgICAqIGluaXQtZGF0YWJh
c2Uuc3FsOiBBZGRlZCAndGVzdGdyb3VwX2l0ZXJhdGlvbl9jb3VudCcgYW5kICd0ZXN0Z3JvdXBf
bWF5X25lZWRfbW9yZV9yZXF1ZXN0cycuCisgICAgICAgIFNRTCB0byB1cGRhdGUgZXhpc3Rpbmcg
ZGF0YWJhc2U6CisgICAgICAgICcnJworICAgICAgICBCRUdJTjsKKyAgICAgICAgICAgIEFMVEVS
IFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzCisgICAgICAgICAgICAgICAgQUREIENPTFVNTiB0
ZXN0Z3JvdXBfaXRlcmF0aW9uX2NvdW50IGludGVnZXIgREVGQVVMVCBOVUxMLAorICAgICAgICAg
ICAgICAgIEFERCBDT0xVTU4gdGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMgYm9vbGVh
biBERUZBVUxUIEZBTFNFOworICAgICAgICAgICAgVVBEQVRFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBz
IFNFVCB0ZXN0Z3JvdXBfaXRlcmF0aW9uX2NvdW50ID0gKAorICAgICAgICAgICAgICAgIFNFTEVD
VCBESVNUSU5DVChDT1VOVCgqKSkgRlJPTSBidWlsZF9yZXF1ZXN0cyBXSEVSRSByZXF1ZXN0X2dy
b3VwID0gdGVzdGdyb3VwX2lkIEFORCByZXF1ZXN0X29yZGVyID49IDAgR1JPVVAgQlkgcmVxdWVz
dF9jb21taXRfc2V0CisgICAgICAgICAgICApOworICAgICAgICAgICAgQUxURVIgVEFCTEUgYW5h
bHlzaXNfdGVzdF9ncm91cHMgQUxURVIgQ09MVU1OIHRlc3Rncm91cF9pdGVyYXRpb25fY291bnQg
RFJPUCBERUZBVUxULCBBTFRFUiBDT0xVTU4gdGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVz
dHMgU0VUIE5PVCBOVUxMOworICAgICAgICBFTkQ7CisgICAgICAgICcnJworICAgICAgICAndGVz
dGdyb3VwX2l0ZXJhdGlvbl9jb3VudCcgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3Nm
dWwgYnVpbGQgcmVxdWVzdCBmb3IgZWFjaCBjb21taXQgc2V0IHdoZW4KKyAgICAgICAgdGVzdCBn
cm91cCBpcyBjcmVhdGVkLgorICAgICAgICAndGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVz
dHMnIHdpbGwgYmUgc2V0IHdoZW4gYW55IGJ1aWxkIHJlcXVlc3QgaW4gdGVzdCBncm91cCBpcyBz
ZXQgdG8gJ2ZhaWxlZCcuCisgICAgICAgICogcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHA6
IEFkZGVkIHRoZSBsb2dpYyB0byBzZXQgJ3Rlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3Rz
Jy4KKyAgICAgICAgKiBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocDogVXBkYXRlZCAncmVhZHkt
Zm9yLW5vdGlmaWNhdGlvbicgdG8gJ3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnIHNvIHRo
YXQgaXQgcmV0dXJucyBmaW5pc2hlZCB0ZXN0CisgICAgICAgIGdyb3VwcyB0aG9zZSBlaXRoZXIg
aGF2ZSAnbmVlZHNfbm90aWZpY2F0aW9uJyBvciAgJ21heV9uZWVkX21vcmVfcmVxdWVzdHMnIHNl
dC4KKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocDogU2V0
ICdpdGVyYXRpb25fY291bnQnIHRvIHJlcGV0aXRpb24gY291bnQuCisgICAgICAgICogcHVibGlj
L3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocDogQWRkZWQgQVBJcyB0byBhZGQg
YnVpbGQgcmVxdWVzdCBmb3IgYSB0ZXN0IGdyb3VwIGFuZAorICAgICAgICB1cGRhdGUgJ21heV9u
ZWVkX21vcmVfcmVxdWVzdHMnIGZsYWcuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0
LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKTogQWRkZWQgJ19tYXlOZWVkTW9yZVJlcXVl
c3RzJyBhbmQgJ19pdGVyYXRpb25Db3VudCcgZmllbGQuCisgICAgICAgIFJlZmFjdG9yZWQgY29k
ZSB0aGF0IGludGVyYWN0cyB3aXRoICcvYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJy4KKyAgICAgICAg
KFRlc3RHcm91cC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91
cC5wcm90b3R5cGUubWF5TmVlZE1vcmVSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJv
dG90eXBlLml0ZXJhdGlvbkNvdW50KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYXN5
bmMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnVw
ZGF0ZU5hbWUpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS51cGRhdGVIaWRkZW5GbGFn
KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuYXN5bmMuZGlkU2VuZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jLmFkZEV4dHJhQnVpbGRSZXF1
ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jLmNsZWFyTmVlZEFkZGl0
aW9uYWxCdWlsZFJlcXVlc3RzKTogQWRkZWQgQVBJIHRvIGNsZWFyICdtYXlfbmVlZF9tb3JlX3Jl
cXVlc3RzJyBmbGFnLgorICAgICAgICAoVGVzdEdyb3VwLmZldGNoQWxsUmVhZHlGb3JGdXJ0aGVy
UHJvY2Vzc2luZyk6IFJlZmFjdG9yZWQgJ1Rlc3RHcm91cC5mZXRjaEFsbFdpdGhOb3RpZmljYXRp
b25SZWFkeScgdG8gcmV0dXJuIHRlc3QgZ3JvdXBzIGVpdGhlcgorICAgICAgICBoYXZlICduZWVk
c19ub3RpZmljYXRpb24nIG9yICAnbWF5X25lZWRfbW9yZV9yZXF1ZXN0cycgc2V0LgorICAgICAg
ICAoVGVzdEdyb3VwLmZldGNoQWxsTWF5TmVlZE1vcmVSZXF1ZXN0cyk6IEZldGNoZXMgdGVzdCBn
cm91cHMgdGhvc2UgbWF5IG5lZWQgbW9yZSBidWlsZCByZXF1ZXN0cy4KKyAgICAgICAgKiBzZXJ2
ZXItdGVzdHMvYXBpLXRlc3QtZ3JvdXBzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAq
IHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6
IEFkZGVkIHVuaXQgdGVzdHMgZm9yICdhZGQtYnVpbGQtcmVxdWVzdHMnIEFQSS4KKyAgICAgICAg
KiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanM6
IEFkZGVkIHVuaXQgdGVzdHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2Nr
LWRhdGEuanM6CisgICAgICAgIChNb2NrRGF0YS5hZGRNb2NrRGF0YSk6CisgICAgICAgICogc2Vy
dmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qczoKKyAgICAgICAgKFRlc3RTZXJ2ZXIu
cHJvdG90eXBlLl9kZXRlcm1pbmVQZ3NxbERpcmVjdG9yeSk6IEZpeGVkIGEgYnVnIHRoYXQgJ2No
aWxkUHJvY2Vzcy5leGVjRmlsZVN5bmMnIG1heSByZXR1cm4gYSBidWZmZXIuCisgICAgICAgICog
dG9vbHMvcnVuLWFuYWx5c2lzLmpzOiBBZGRlZCBsb2dpYyB0byBhZGQgZXh0cmEgYnVpbGQgcmVx
dWVzdCBiZWZvcmUgc2VubmRpbmcgbm90aWZpY2F0aW9uLgorICAgICAgICAqIHRvb2xzL2pzL3Jl
dHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qczoKKyAgICAgICAgKGFzeW5jLmNyZWF0ZUFkZGl0
aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyk6IE1vZHVs
ZSB0aGF0IGFkZCBleHRyYSBidWlsZCByZXF1ZXN0cy4KKyAgICAgICAgKiB1bml0LXRlc3RzL3Jl
dHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qczogQWRkZWQuCisgICAgICAgICogdW5p
dC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0cy4KKwogMjAxOC0w
OS0yMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBBcGFjaGUg
Y2FuIHJldHVybiBhIGNvcnJ1cHQgbWFuaWZlc3QgZmlsZSB3aGlsZSBNYW5pZmVzdEdlbmVyYXRv
cjo6c3RvcmUgaXMgcnVubmluZwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJh
c2Uuc3FsCmluZGV4IDkxMzI0MGE4MjY5NzkzZDZhM2JhMDNmMzQ5NWUxMjJhZTFhOWZjYWEuLjdj
YzI0NjdjYTk5NTlhM2QwMzllMTU1OGFkODUwOTdkMzkyMWFhMGQgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTI4MSw2ICsyODEsOCBAQCBDUkVBVEUg
VEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgKAogICAgIHRlc3Rncm91cF9oaWRkZW4gYm9vbGVh
biBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRp
b24gYm9vbGVhbiBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9ub3RpZmlj
YXRpb25fc2VudF9hdCB0aW1lc3RhbXAgREVGQVVMVCBOVUxMLAorICAgIHRlc3Rncm91cF9pdGVy
YXRpb25fY291bnQgaW50ZWdlciBOT1QgTlVMTCwKKyAgICB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9y
ZV9yZXF1ZXN0cyBib29sZWFuIERFRkFVTFQgRkFMU0UsCiAgICAgQ09OU1RSQUlOVCB0ZXN0Z3Jv
dXBfbmFtZV9tdXN0X2JlX3VuaXF1ZV9mb3JfZWFjaF90YXNrIFVOSVFVRSh0ZXN0Z3JvdXBfdGFz
aywgdGVzdGdyb3VwX25hbWUpKTsKIENSRUFURSBJTkRFWCB0ZXN0Z3JvdXBfdGFza19pbmRleCBP
TiBhbmFseXNpc190ZXN0X2dyb3Vwcyh0ZXN0Z3JvdXBfdGFzayk7CiAKZGlmZiAtLWdpdCBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocCBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocAppbmRl
eCA1Y2FlZWU2NDVhOTE4YTE2ZmJlOWRhYmUyOTFhMTE1NjQzMzFkNjg3Li5mM2YyYjI0NDk3M2Uw
NGExZDUyODdkYjliZDRlMmFkNDcwYTNiZGRiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhwCkBAIC00MSwxMiArNDEs
MTMgQEAgZnVuY3Rpb24gbWFpbigkaWQsICRwYXRoLCAkcG9zdF9kYXRhKSB7CiAKIGZ1bmN0aW9u
IHVwZGF0ZV9idWlsZHMoJGRiLCAkdXBkYXRlcykgewogICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rp
b24oKTsKKyAgICAkdGVzdF9ncm91cHNfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IGFycmF5KCk7
CiAgICAgZm9yZWFjaCAoJHVwZGF0ZXMgYXMgJGlkID0+ICRpbmZvKSB7CiAgICAgICAgICRpZCA9
IGludHZhbCgkaWQpOwogICAgICAgICAkc3RhdHVzID0gJGluZm9bJ3N0YXR1cyddOwogICAgICAg
ICAkdXJsID0gYXJyYXlfZ2V0KCRpbmZvLCAndXJsJyk7CisgICAgICAgICRyZXF1ZXN0X3JvdyA9
ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5
KCdpZCcgPT4gJGlkKSk7CiAgICAgICAgIGlmICgkc3RhdHVzID09ICdmYWlsZWRJZk5vdENvbXBs
ZXRlZCcpIHsKLSAgICAgICAgICAgICRyZXF1ZXN0X3JvdyA9ICRkYi0+c2VsZWN0X2ZpcnN0X3Jv
dygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KCdpZCcgPT4gJGlkKSk7CiAgICAg
ICAgICAgICBpZiAoISRyZXF1ZXN0X3JvdykgewogICAgICAgICAgICAgICAgICRkYi0+cm9sbGJh
Y2tfdHJhbnNhY3Rpb24oKTsKICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxl
ZFRvRmluZEJ1aWxkUmVxdWVzdCcsIGFycmF5KCdidWlsZFJlcXVlc3QnID0+ICRpZCkpOwpAQCAt
NjAsMTIgKzYxLDI2IEBAIGZ1bmN0aW9uIHVwZGF0ZV9idWlsZHMoJGRiLCAkdXBkYXRlcykgewog
ICAgICAgICAgICAgICAgICAgICBhcnJheSgkcmVxdWVzdF9yb3dbJ3JlcXVlc3RfZ3JvdXAnXSwg
JHJlcXVlc3Rfcm93WydyZXF1ZXN0X29yZGVyJ10pKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICRkYi0+dXBkYXRlX3JvdygnYnVpbGRfcmVxdWVzdHMnLCAncmVxdWVzdCcsIGFycmF5KCdp
ZCcgPT4gJGlkKSwgYXJyYXkoJ3N0YXR1cycgPT4gJ2ZhaWxlZCcsICd1cmwnID0+ICR1cmwpKTsK
KworICAgICAgICAgICAgJHRlc3RfZ3JvdXBfaWQgPSAkcmVxdWVzdF9yb3dbJ3JlcXVlc3RfZ3Jv
dXAnXTsKKyAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCR0ZXN0X2dyb3VwX2lkLCAk
dGVzdF9ncm91cHNfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cykpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICRkYi0+dXBkYXRlX3JvdygnYW5hbHlzaXNfdGVzdF9ncm91
cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCksIGFycmF5KCdt
YXlfbmVlZF9tb3JlX3JlcXVlc3RzJyA9PiBUUlVFKSk7CisgICAgICAgICAgICAkdGVzdF9ncm91
cHNfbWF5X25lZWRfbW9yZV9yZXF1ZXN0c1skcmVxdWVzdF9yb3dbJ3JlcXVlc3RfZ3JvdXAnXV0g
PSBUUlVFOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkc3Rh
dHVzLCBhcnJheSgncGVuZGluZycsICdzY2hlZHVsZWQnLCAncnVubmluZycsICdmYWlsZWQnLCAn
Y29tcGxldGVkJywgJ2NhbmNlbGVkJykpKSB7CiAgICAgICAgICAgICAgICAgJGRiLT5yb2xsYmFj
a190cmFuc2FjdGlvbigpOwogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignVW5rbm93
bkJ1aWxkUmVxdWVzdFN0YXR1cycsIGFycmF5KCdidWlsZFJlcXVlc3QnID0+ICRpZCwgJ3N0YXR1
cycgPT4gJHN0YXR1cykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJGRiLT51cGRhdGVf
cm93KCdidWlsZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJyYXkoJ2lkJyA9PiAkaWQpLCBhcnJh
eSgnc3RhdHVzJyA9PiAkc3RhdHVzLCAndXJsJyA9PiAkdXJsKSk7CisKKyAgICAgICAgICAgICR0
ZXN0X2dyb3VwX2lkID0gJHJlcXVlc3Rfcm93WydyZXF1ZXN0X2dyb3VwJ107CisgICAgICAgICAg
ICBpZiAoJHN0YXR1cyAhPSAnZmFpbGVkJyB8fCBhcnJheV9rZXlfZXhpc3RzKCR0ZXN0X2dyb3Vw
X2lkLCAkdGVzdF9ncm91cHNfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cykpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICRkYi0+dXBkYXRlX3JvdygnYW5hbHlzaXNfdGVz
dF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCksIGFy
cmF5KCdtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJyA9PiBUUlVFKSk7CisgICAgICAgICAgICAkdGVz
dF9ncm91cHNfbWF5X25lZWRfbW9yZV9yZXF1ZXN0c1skcmVxdWVzdF9yb3dbJ3JlcXVlc3RfZ3Jv
dXAnXV0gPSBUUlVFOwogICAgICAgICB9CiAgICAgfQogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90
ZXN0LWdyb3Vwcy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0
LWdyb3Vwcy5waHAKaW5kZXggZTc2YTI0YTk3MGViMjQ0OTRmOWEzYjNkOWE3MDQxMjdjMDhlZmIy
Ni4uMTlhMWU3MDNkNzc4N2Q4ODg1NDk0ODRjZGJiMGJjNjQyMjc2Y2E3NyAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocApAQCAt
MjksNiArMjksMTYgQEAgZnVuY3Rpb24gbWFpbigkcGF0aCkgewogICAgICAgICAgICAgICAgICAg
ICBBTkQgcmVxdWVzdF9zdGF0dXMgSU4gKCdwZW5kaW5nJywgJ3NjaGVkdWxlZCcsICdydW5uaW5n
JywgJ2NhbmNlbGVkJykpIElTIEZBTFNFCiAgICAgICAgICAgICAgICAgICAgIEFORCB0ZXN0Z3Jv
dXBfbmVlZHNfbm90aWZpY2F0aW9uIElTIFRSVUUgQU5EIHRlc3Rncm91cF9oaWRkZW4gSVMgRkFM
U0UiKTsKIAorICAgICAgICBpZiAoIWNvdW50KCR0ZXN0X2dyb3VwcykpIHsKKyAgICAgICAgICAg
IGV4aXRfd2l0aF9zdWNjZXNzKGFycmF5KCd0ZXN0R3JvdXBzJyA9PiBhcnJheSgpLAorICAgICAg
ICAgICAgICAgICdidWlsZFJlcXVlc3RzJyA9PiBhcnJheSgpLAorICAgICAgICAgICAgICAgICdj
b21taXRTZXRzJyA9PiBhcnJheSgpLAorICAgICAgICAgICAgICAgICdjb21taXRzJyA9PiBhcnJh
eSgpLAorICAgICAgICAgICAgICAgICd1cGxvYWRlZEZpbGVzJyA9PiBhcnJheSgpKSk7CisgICAg
ICAgIH0KKyAgICAgICAgJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPmZldGNoX3JlcXVlc3RzX2Zv
cl9ncm91cHMoJHRlc3RfZ3JvdXBzKTsKKyAgICB9IGVsc2VpZiAoJHBhdGhbMF0gPT0gJ25lZWQt
bW9yZS1yZXF1ZXN0cycpIHsKKyAgICAgICAgJHRlc3RfZ3JvdXBzID0gJGRiLT5zZWxlY3Rfcm93
cygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoImhpZGRlbiIgPT4g
RkFMU0UsICJtYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiA9PiBUUlVFKSk7CiAgICAgICAgIGlmICgh
Y291bnQoJHRlc3RfZ3JvdXBzKSkgewogICAgICAgICAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJy
YXkoJ3Rlc3RHcm91cHMnID0+IGFycmF5KCksCiAgICAgICAgICAgICAgICAgJ2J1aWxkUmVxdWVz
dHMnID0+IGFycmF5KCksCkBAIC04Miw2ICs5Miw4IEBAIGZ1bmN0aW9uIGZvcm1hdF90ZXN0X2dy
b3VwKCRncm91cF9yb3cpIHsKICAgICAgICAgJ25vdGlmaWNhdGlvblNlbnRBdCcgPT4gRGF0YWJh
c2U6OnRvX2pzX3RpbWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0
J10pLAogICAgICAgICAnaGlkZGVuJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0
ZXN0Z3JvdXBfaGlkZGVuJ10pLAogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFi
YXNlOjppc190cnVlKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSks
CisgICAgICAgICdtYXlOZWVkTW9yZVJlcXVlc3RzJyA9PiAgRGF0YWJhc2U6OmlzX3RydWUoJGdy
b3VwX3Jvd1sndGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMnXSksCisgICAgICAgICdp
dGVyYXRpb25Db3VudCcgPT4gJGdyb3VwX3Jvd1sndGVzdGdyb3VwX2l0ZXJhdGlvbl9jb3VudCdd
LAogICAgICAgICAnYnVpbGRSZXF1ZXN0cycgPT4gYXJyYXkoKSwKICAgICAgICAgJ2NvbW1pdFNl
dHMnID0+IGFycmF5KCksCiAgICAgKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocAppbmRl
eCBiZWM3ZDQ4NmYyYjA3YWVkMzZkZDJlMmJmZTI3YjcxMDk5NDNhNjQzLi5mOTA0YjgyYTYzZjMw
YWY0NzM1YmE1MmVjZTk0YjE2Y2NmNDBhZGUyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMu
cGhwCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRf
cmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZQogICAgIGxpc3QgKCRi
dWlsZF9jb25maWd1cmF0aW9uX2xpc3QsICR0ZXN0X2NvbmZpZ3VyYXRpb25fbGlzdCkgPSBpbnNl
cnRfY29tbWl0X3NldHNfYW5kX2NvbnN0cnVjdF9jb25maWd1cmF0aW9uX2xpc3QoJGRiLCAkY29t
bWl0X3NldHMpOwogCiAgICAgJGdyb3VwX2lkID0gJGRiLT5pbnNlcnRfcm93KCdhbmFseXNpc190
ZXN0X2dyb3VwcycsICd0ZXN0Z3JvdXAnLAotICAgICAgICBhcnJheSgndGFzaycgPT4gJHRhc2tf
aWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvciwgJ25lZWRzX25vdGlmaWNh
dGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbikpOworICAgICAgICBhcnJheSgndGFzaycgPT4g
JHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvciwgJ25lZWRzX25v
dGlmaWNhdGlvbicgPT4gJG5lZWRzX25vdGlmaWNhdGlvbiwgJ2l0ZXJhdGlvbl9jb3VudCcgPT4g
JHJlcGV0aXRpb25fY291bnQpKTsKIAogICAgICRidWlsZF9jb3VudCA9IGNvdW50KCRidWlsZF9j
b25maWd1cmF0aW9uX2xpc3QpOwogICAgICRvcmRlciA9IC0kYnVpbGRfY291bnQ7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1i
dWlsZC1yZXF1ZXN0cy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZp
bGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1ZXN0cy5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU5NDIyODBkNTg3
YmJiMDFjMjAwY2E3NDI2OGFiNzIyMzJjNWRkMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvYWRkLWJ1aWxkLXJlcXVlc3Rz
LnBocApAQCAtMCwwICsxLDUxIEBACis8P3BocAorCityZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUv
anNvbi1oZWFkZXIucGhwJyk7CityZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvY29tbWl0LXNldHMt
aGVscGVycy5waHAnKTsKKworZnVuY3Rpb24gbWFpbigpIHsKKyAgICAkZGIgPSBjb25uZWN0KCk7
CisgICAgJGRhdGEgPSBlbnN1cmVfcHJpdmlsZWdlZF9hcGlfZGF0YV9hbmRfdG9rZW5fb3Jfc2xh
dmUoJGRiKTsKKworICAgICR0ZXN0X2dyb3VwX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAnZ3JvdXAn
KTsKKyAgICBpZiAoISR0ZXN0X2dyb3VwX2lkKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Rl
c3RHcm91cE5vdFNwZWNpZmllZCcpOworCisgICAgJGFkZGl0aW9uYWxfYnVpbGRfcmVxdWVzdF9j
b3VudCA9IGFycmF5X2dldCgkZGF0YSwgJ2NvdW50Jyk7CisgICAgaWYgKCEkYWRkaXRpb25hbF9i
dWlsZF9yZXF1ZXN0X2NvdW50KQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1JlcXVlc3RDb3Vu
dE5vdFNwZWNpZmllZCcpOworCisKKworICAgICRleGlzdGluZ19idWlsZF9yZXF1ZXN0cyA9ICRk
Yi0+c2VsZWN0X3Jvd3MoJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJheSgnZ3JvdXAn
ID0+ICR0ZXN0X2dyb3VwX2lkKSwgJ29yZGVyJyk7CisgICAgJGN1cnJlbnRfb3JkZXIgPSAkZXhp
c3RpbmdfYnVpbGRfcmVxdWVzdHNbY291bnQoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3RzKSAtIDFd
WydyZXF1ZXN0X29yZGVyJ107CisgICAgaWYgKCRjdXJyZW50X29yZGVyIDwgMCkKKyAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdOb0J1aWxkUmVxdWVzdE9mVGVzdFR5cGUnKTsKKworICAgICRkYi0+
YmVnaW5fdHJhbnNhY3Rpb24oKTsKKworICAgIGZvciAoJGkgPSAwOyAkaSA8ICRhZGRpdGlvbmFs
X2J1aWxkX3JlcXVlc3RfY291bnQ7ICRpKyspIHsKKyAgICAgICAgJHByb2Nlc3NlZF9jb21taXRf
c2V0ID0gYXJyYXkoKTsKKyAgICAgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1aWxkX3JlcXVlc3Rz
IGFzICRidWlsZF9yZXF1ZXN0KSB7CisgICAgICAgICAgICBpZiAoJGJ1aWxkX3JlcXVlc3RbJ3Jl
cXVlc3Rfb3JkZXInXSA8IDApCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J107CisgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkcmVxdWVzdGVkX2NvbW1p
dF9zZXQsICRwcm9jZXNzZWRfY29tbWl0X3NldCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAkcHJvY2Vzc2VkX2NvbW1pdF9zZXRbJHJlcXVlc3RlZF9jb21taXRfc2V0
XSA9IFRSVUU7CisgICAgICAgICAgICAkY29uZmlndXJhdGlvbiA9IGFycmF5KCk7CisgICAgICAg
ICAgICAkY29uZmlndXJhdGlvblsncmVwb3NpdG9yeV9ncm91cCddID0gJGJ1aWxkX3JlcXVlc3Rb
J3JlcXVlc3RfcmVwb3NpdG9yeV9ncm91cCddOworICAgICAgICAgICAgJGNvbmZpZ3VyYXRpb25b
J2NvbW1pdF9zZXQnXSA9ICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X2NvbW1pdF9zZXQnXTsKKyAg
ICAgICAgICAgIGluc2VydF9idWlsZF9yZXF1ZXN0X2Zvcl9jb25maWd1cmF0aW9uKCRkYiwgJGNv
bmZpZ3VyYXRpb24sICsrJGN1cnJlbnRfb3JkZXIsICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Ry
aWdnZXJhYmxlJ10sCisgICAgICAgICAgICAgICAgJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfcGxh
dGZvcm0nXSwgJGJ1aWxkX3JlcXVlc3RbJ3JlcXVlc3RfdGVzdCddLCAkYnVpbGRfcmVxdWVzdFsn
cmVxdWVzdF9ncm91cCddKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICRkYi0+Y29tbWl0X3Ry
YW5zYWN0aW9uKCk7CisKKyAgICBleGl0X3dpdGhfc3VjY2VzcygpOworfQorCittYWluKCk7CisK
Kz8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cC5waHAg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10
ZXN0LWdyb3VwLnBocAppbmRleCBhZDE3NTVmZWQyNjIxYTQ2NDJmYzA3ZDMzMjQ1NDA3OWU3MmQ3
MTVlLi41OTE1YTMwMTk4ZGEyYjZmNzFjY2Y0NjliYmI0ZTM2YjQ0MDAwYmVlIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10
ZXN0LWdyb3VwLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZp
bGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocApAQCAtMTUsOCArMTUsMTMgQEAgZnVuY3Rp
b24gbWFpbigpIHsKICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnbmFtZScsICRkYXRhKSkKICAg
ICAgICAgJHZhbHVlc1snbmFtZSddID0gJGRhdGFbJ25hbWUnXTsKIAotICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCdoaWRkZW4nLCAkZGF0YSkpCisgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hp
ZGRlbicsICRkYXRhKSkgewogICAgICAgICAkdmFsdWVzWydoaWRkZW4nXSA9IERhdGFiYXNlOjp0
b19kYXRhYmFzZV9ib29sZWFuKCRkYXRhWydoaWRkZW4nXSk7CisgICAgICAgICR2YWx1ZXNbJ21h
eV9uZWVkX21vcmVfcmVxdWVzdHMnXSA9IEZBTFNFOworICAgIH0KKworICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgJGRhdGEpKQorICAgICAgICAgJHZhbHVl
c1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gJGRhdGFbJ21heU5lZWRNb3JlUmVxdWVzdHMn
XTsKIAogICAgICRoYXNfbmVlZHNfbm90aWZpY2F0aW9uX2ZpZWxkID0gYXJyYXlfa2V5X2V4aXN0
cygnbmVlZHNOb3RpZmljYXRpb24nLCAkZGF0YSk7CiAgICAgJGhhc19ub3RpZmljYXRpb25fc2Vu
dF9hdF9maWVsZCA9IGFycmF5X2tleV9leGlzdHMoJ25vdGlmaWNhdGlvblNlbnRBdCcsICRkYXRh
KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2J1aWxkLXJlcXVlc3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9idWlsZC1yZXF1ZXN0LmpzCmluZGV4IGNjODYwOWI2NjI1ZTNkOTk0NzhhODQxNmU5ZDZh
ZWZkODI3ZTBjNWIuLjA3MDU0YWU4MzZhZTBhMGI2NjQyZmUwYjg5OTAzODg4NjNkZjU5OWQgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxk
LXJlcXVlc3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvYnVpbGQtcmVxdWVzdC5qcwpAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3Qg
ZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgc3RhdHVzKCkgeyByZXR1cm4gdGhpcy5f
c3RhdHVzOyB9CiAgICAgaGFzRmluaXNoZWQoKSB7IHJldHVybiB0aGlzLl9zdGF0dXMgPT0gJ2Zh
aWxlZCcgfHwgdGhpcy5fc3RhdHVzID09ICdjb21wbGV0ZWQnIHx8IHRoaXMuX3N0YXR1cyA9PSAn
Y2FuY2VsZWQnOyB9CisgICAgaGFzRmFpbGVkKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdm
YWlsZWQnOyB9CiAgICAgaGFzQ29tcGxldGVkKCkgeyByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdj
b21wbGV0ZWQnOyB9CiAgICAgaGFzU3RhcnRlZCgpIHsgcmV0dXJuIHRoaXMuX3N0YXR1cyAhPSAn
cGVuZGluZyc7IH0KICAgICBpc1NjaGVkdWxlZCgpIHsgcmV0dXJuIHRoaXMuX3N0YXR1cyA9PSAn
c2NoZWR1bGVkJzsgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvdGVzdC1ncm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKaW5kZXggNGFjNDNiNDI5NzhiY2FjZWUzMzk3OTA0
ZWViNmY3N2Q3ZmViOWQ0Zi4uOWNiNWU5MDBlZDE0YzY1ODViN2ZhYjIyNjI5YmJjMDEwOWE2YWE0
MyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
dGVzdC1ncm91cC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy90ZXN0LWdyb3VwLmpzCkBAIC0xMCw2ICsxMCw4IEBAIGNsYXNzIFRlc3RHcm91cCBleHRl
bmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9jcmVhdGVkQXQgPSBuZXcgRGF0ZShv
YmplY3QuY3JlYXRlZEF0KTsKICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBvYmplY3QuaGlkZGVu
OwogICAgICAgICB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbiA9IG9iamVjdC5uZWVkc05vdGlmaWNh
dGlvbjsKKyAgICAgICAgdGhpcy5fbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IG9iamVjdC5tYXlOZWVk
TW9yZVJlcXVlc3RzOworICAgICAgICB0aGlzLl9pdGVyYXRpb25Db3VudCA9IG9iamVjdC5pdGVy
YXRpb25Db3VudDsKICAgICAgICAgdGhpcy5fYnVpbGRSZXF1ZXN0cyA9IFtdOwogICAgICAgICB0
aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rp
b24oKC4uLmJ1aWxkUmVxdWVzdHMpID0+IHsKICAgICAgICAgICAgIHJldHVybiBidWlsZFJlcXVl
c3RzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIoKSAtIGIub3JkZXIoKSk7CkBAIC0zMyw2ICszNSw4
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlz
Ll9pc0hpZGRlbiA9IG9iamVjdC5oaWRkZW47CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0
aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmljYXRp
b25TZW50QXQgPSBvYmplY3Qubm90aWZpY2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0Lm5v
dGlmaWNhdGlvblNlbnRBdCkgOiBudWxsOworICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVl
c3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlv
bkNvdW50ID0gb2JqZWN0Lml0ZXJhdGlvbkNvdW50OwogICAgIH0KIAogICAgIHRhc2soKSB7IHJl
dHVybiBBbmFseXNpc1Rhc2suZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtNDAsNiArNDQs
OCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICBpc0hpZGRl
bigpIHsgcmV0dXJuIHRoaXMuX2lzSGlkZGVuOyB9CiAgICAgYnVpbGRSZXF1ZXN0cygpIHsgcmV0
dXJuIHRoaXMuX2J1aWxkUmVxdWVzdHM7IH0KICAgICBuZWVkc05vdGlmaWNhdGlvbigpIHsgcmV0
dXJuIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uOyB9CisgICAgbWF5TmVlZE1vcmVSZXF1ZXN0cygp
IHsgcmV0dXJuIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHM7IH0KKyAgICBpdGVyYXRpb25Db3Vu
dCgpIHsgcmV0dXJuIHRoaXMuX2l0ZXJhdGlvbkNvdW50OyB9CiAgICAgbm90aWZpY2F0aW9uU2Vu
dEF0KCkgeyByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0aG9yKCkg
eyByZXR1cm4gdGhpcy5fYXV0aG9yTmFtZTsgfQogICAgIGFkZEJ1aWxkUmVxdWVzdChyZXF1ZXN0
KQpAQCAtMTkwLDQyICsxOTYsNTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9i
amVjdCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgYXN5bmMgX3VwZGF0
ZUJ1aWxkUmVxdWVzdChjb250ZW50LCBlbmRQb2ludD0ndXBkYXRlLXRlc3QtZ3JvdXAnKQorICAg
IHsKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdChlbmRQb2ludCwgY29u
dGVudCk7CisgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBUZXN0R3JvdXAuY2FjaGVkRmV0Y2go
YC9hcGkvdGVzdC1ncm91cHMvJHt0aGlzLmlkKCl9YCwge30sIHRydWUpOworICAgICAgICByZXR1
cm4gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7Cisg
ICAgfQorCiAgICAgdXBkYXRlTmFtZShuZXdOYW1lKQogICAgIHsKLSAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOwotICAgICAgICB2YXIgaWQgPSB0aGlzLmlkKCk7Ci0gICAgICAgIHJldHVybiBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAg
IGdyb3VwOiBpZCwKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7Cisg
ICAgICAgICAgICBncm91cDogdGhpcy5pZCgpLAogICAgICAgICAgICAgbmFtZTogbmV3TmFtZSwK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICAgICAgcmV0dXJuIFRl
c3RHcm91cC5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke2lkfWAsIHt9LCB0cnVlKQot
ICAgICAgICAgICAgICAgIC50aGVuKFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzLmJpbmQoVGVzdEdyb3VwKSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIHVw
ZGF0ZUhpZGRlbkZsYWcoaGlkZGVuKQogICAgIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICB2YXIgaWQgPSB0aGlzLmlkKCk7Ci0gICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJ
LnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHsKLSAgICAgICAgICAgIGdyb3VwOiBp
ZCwKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAgICAgICAg
ICBncm91cDogdGhpcy5pZCgpLAogICAgICAgICAgICAgaGlkZGVuOiAhIWhpZGRlbiwKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke2lkfWAsIHt9LCB0cnVlKQotICAgICAg
ICAgICAgICAgIC50aGVuKFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3Jv
dXBzLmJpbmQoVGVzdEdyb3VwKSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGFzeW5jIGRp
ZFNlbmROb3RpZmljYXRpb24oKQogICAgIHsKLSAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlkKCk7
Ci0gICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdy
b3VwJywgewotICAgICAgICAgICAgZ3JvdXA6IGlkLAorICAgICAgICByZXR1cm4gYXdhaXQgdGhp
cy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAg
ICAgICAgICAgICBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsCiAgICAgICAgICAgICBub3RpZmlj
YXRpb25TZW50QXQ6IChuZXcgRGF0ZSkudG9JU09TdHJpbmcoKQogICAgICAgICB9KTsKLSAgICAg
ICAgY29uc3QgZGF0YSA9IGF3YWl0IFRlc3RHcm91cC5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdy
b3Vwcy8ke2lkfWAsIHt9LCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5fY3JlYXRl
TW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgIH0KKworICAgIGFzeW5jIGFk
ZEV4dHJhQnVpbGRSZXF1ZXN0cyhjb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhd2FpdCB0
aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwK
KyAgICAgICAgICAgIGNvdW50LAorICAgICAgICB9LCAnYWRkLWJ1aWxkLXJlcXVlc3RzJyk7Cisg
ICAgfQorCisgICAgYXN5bmMgY2xlYXJOZWVkQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3VwZGF0ZUJ1aWxkUmVxdWVzdCh7CisgICAg
ICAgICAgICBncm91cDogdGhpcy5pZCgpLAorICAgICAgICAgICAgbWF5TmVlZE1vcmVSZXF1ZXN0
czogZmFsc2UKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNyZWF0ZVdpdGhUYXNr
KHRhc2tOYW1lLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldHMsIG5vdGlmeU9uQ29tcGxldGlvbikKQEAgLTI3OCw2ICsyOTQsMTEgQEAgY2xhc3Mg
VGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHJldHVybiB0aGlzLmNh
Y2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1ub3RpZmljYXRpb24nLCBudWxs
LCB0cnVlKS50aGVuKHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vwcy5iaW5k
KHRoaXMpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgZmV0Y2hBbGxNYXlOZWVkTW9yZVJlcXVlc3Rz
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3Jv
dXBzL25lZWQtbW9yZS1yZXF1ZXN0cycsIG51bGwsIHRydWUpLnRoZW4odGhpcy5fY3JlYXRlTW9k
ZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzLmJpbmQodGhpcykpOworICAgIH0KKwogICAgIHN0YXRp
YyBfY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpCiAgICAgewogICAgICAg
ICB2YXIgdGVzdEdyb3VwcyA9IGRhdGFbJ3Rlc3RHcm91cHMnXS5tYXAoZnVuY3Rpb24gKHJvdykg
ewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
dGVzdC1ncm91cHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS10ZXN0LWdyb3Vwcy5qcwppbmRleCBhNmM2NzZhYmNjMWRlNzRjNmVjOWU4ZGJjNTZmMjc4ODBj
YWZlZTYzLi5jMDE5YTQyZGIxNzI0MTIxOTMyNTg4MjUwZWI5MzU5MDExMWQ5NGY5IDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS10ZXN0LWdyb3Vw
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS10ZXN0
LWdyb3Vwcy5qcwpAQCAtNiwxMCArNiw5IEBAIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwogY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJU
ZXN0OwogCiBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3VwcycsIGZ1bmN0aW9uICgpIHsKLSAgICBw
cmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzLCAnbm9k
ZScpOwogCiAgICAgZGVzY3JpYmUoJy9hcGkvdGVzdC1ncm91cHMvcmVhZHktZm9yLW5vdGlmaWNh
dGlvbicsICgpID0+IHsKLQogICAgICAgICBpdCgnc2hvdWxkIGdpdmUgYW4gZW1wdHkgbGlzdCBp
ZiB0aGVyZSBpcyBub3QgZXhpc3RpbmcgdGVzdCBncm91cCBhdCBhbGwnLCBhc3luYyAoKSA9PiB7
CiAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL3JlYWR5LWZvci1ub3RpZmljYXRpb24nKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50LnN0YXR1cywgJ09LJyk7CkBAIC04NSw0ICs4
NCwxMDUgQEAgZGVzY3JpYmUoJy9hcGkvdGVzdC1ncm91cHMnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQudXBsb2FkZWRGaWxlcywgW10pOwogICAg
ICAgICB9KTsKICAgICB9KTsKKworICAgIGRlc2NyaWJlKCcvYXBpL3Rlc3QtZ3JvdXBzLzx0cmln
Z2VyYWJsZXM+JywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIHNldCAidGVzdGdyb3VwX21h
eV9uZWVkX21vcmVfcmVxdWVzdHMiIHdoZW4gYSBidWlsZCByZXF1ZXN0IGlzIHNldCB0byAiZmFp
bGVkIiBkdWUgdG8gImZhaWxlZElmTm90Q29tcGxldGVkIicsIGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgIGNvbnN0IGRhdGFiYXNlID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAg
ICAgYXdhaXQgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGF0YWJhc2UsIFsnY29tcGxldGVkJywgJ2Nv
bXBsZXRlZCcsICdjb21wbGV0ZWQnLCAncnVubmluZyddKTsKKworICAgICAgICAgICAgbGV0IGRh
dGEgPSAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3Jv
dXBzLzYwMCcpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKCFkYXRhWyd0ZXN0R3JvdXBzJ11bMF0u
bWF5TmVlZE1vcmVSZXF1ZXN0cyk7CisgICAgICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcsIHtzbGF2
ZU5hbWU6ICd0ZXN0Jywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3b3JkJywKKyAgICAgICAgICAgICAg
ICBidWlsZFJlcXVlc3RVcGRhdGVzOiB7NzAzOiB7c3RhdHVzOiAnZmFpbGVkSWZOb3RDb21wbGV0
ZWQnLCB1cmw6ICdodHRwOi8vd2Via2l0Lm9yZy9idWlsZC8xJ319fSk7CisgICAgICAgICAgICBk
YXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdy
b3Vwcy82MDAnKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhkYXRhWyd0ZXN0R3JvdXBzJ11bMF0u
bWF5TmVlZE1vcmVSZXF1ZXN0cyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
c2V0ICJ0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgd2hlbiBhIGJ1aWxkIHJlcXVl
c3QgaXMgc2V0IHRvICJmYWlsZWQiJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3Qg
ZGF0YWJhc2UgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2Nr
RGF0YS5hZGRNb2NrRGF0YShkYXRhYmFzZSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2Nv
bXBsZXRlZCcsICdydW5uaW5nJ10pOworCisgICAgICAgICAgICBsZXQgZGF0YSA9ICBhd2FpdCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvNjAwJyk7Cisg
ICAgICAgICAgICBhc3NlcnQub2soIWRhdGFbJ3Rlc3RHcm91cHMnXVswXS5tYXlOZWVkTW9yZVJl
cXVlc3RzKTsKKyAgICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jywge3NsYXZlTmFtZTogJ3Rlc3Qn
LCBzbGF2ZVBhc3N3b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgICAgIGJ1aWxkUmVxdWVz
dFVwZGF0ZXM6IHs3MDM6IHtzdGF0dXM6ICdmYWlsZWQnLCB1cmw6ICdodHRwOi8vd2Via2l0Lm9y
Zy9idWlsZC8xJ319fSk7CisgICAgICAgICAgICBkYXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDAnKTsKKyAgICAgICAgICAgIGFz
c2VydC5vayhkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgc2V0ICJ0ZXN0Z3JvdXBfbWF5X25lZWRfbW9y
ZV9yZXF1ZXN0cyIgdG8gYWxsIHRlc3QgZ3JvdXBzIHRob3NlIGhhdmUgZmFpbGVkIGJ1aWxkIHJl
cXVlc3QnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYXRhYmFzZSA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRh
KGRhdGFiYXNlLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1bm5p
bmcnXSk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91
cChkYXRhYmFzZSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdydW5u
aW5nJ10sICd3ZWJraXQnKTsKKworICAgICAgICAgICAgbGV0IGRhdGEgPSAgYXdhaXQgVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcpOworICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZE1vcmVSZXF1ZXN0
cyk7CisgICAgICAgICAgICBkYXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDEnKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghZGF0
YVsndGVzdEdyb3VwcyddWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMpOworCisgICAgICAgICAgICBh
d2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
L2J1aWxkLXdlYmtpdCcsIHtzbGF2ZU5hbWU6ICd0ZXN0Jywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3
b3JkJywKKyAgICAgICAgICAgICAgICBidWlsZFJlcXVlc3RVcGRhdGVzOiB7CisgICAgICAgICAg
ICAgICAgICAgIDcwMzoge3N0YXR1czogJ2ZhaWxlZCcsIHVybDogJ2h0dHA6Ly93ZWJraXQub3Jn
L2J1aWxkLzEnfSwKKyAgICAgICAgICAgICAgICAgICAgNzEzOiB7c3RhdHVzOiAnZmFpbGVkSWZO
b3RDb21wbGV0ZWQnLCB1cmw6ICdodHRwOi8vd2Via2l0Lm9yZy9idWlsZC8xMSd9LAorICAgICAg
ICAgICAgICAgIH19KTsKKworICAgICAgICAgICAgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvNjAwJyk7CisgICAgICAgICAgICBh
c3NlcnQub2soZGF0YVsndGVzdEdyb3VwcyddWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMpOworICAg
ICAgICAgICAgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9h
cGkvdGVzdC1ncm91cHMvNjAxJyk7CisgICAgICAgICAgICBhc3NlcnQub2soZGF0YVsndGVzdEdy
b3VwcyddWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGRlc2NyaWJlKCcvYXBpL3Rlc3QtZ3JvdXBzL25lZWQtbW9yZS1yZXF1ZXN0cycsICgpID0+
IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBsaXN0IGFsbCB0ZXN0IGdyb3VwcyBwb3RlbnRpYWxseSBu
ZWVkIGFkZGl0aW9uYWwgYnVpbGQgcmVxdWVzdHMnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29t
cGxldGVkJywgJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29tcGxldGVkJ10sIGZhbHNlKTsKKyAg
ICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5xdWVyeSgnVVBEQVRFIGFuYWx5
c2lzX3Rlc3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IFRS
VUUgV0hFUkUgdGVzdGdyb3VwX2lkID0gNjAwJyk7CisgICAgICAgICAgICBjb25zdCBjb250ZW50
ID0gYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBz
L25lZWQtbW9yZS1yZXF1ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQu
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gY29u
dGVudC50ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5p
ZCwgNjAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAudGFzaywgNTAwKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAubmFtZSwgJ3NvbWUgdGVzdCBncm91
cCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5hdXRob3IsIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0Lm9rKCF0ZXN0R3JvdXAuaGlkZGVuKTsKKyAgICAgICAgICAgIGFz
c2VydC5vayghdGVzdEdyb3VwLm5lZWRzTm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5vayh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdEdyb3VwLnBsYXRmb3JtLCA2NSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3RzLCBbJzcwMCcsJzcwMScsICc3MDInLCAnNzAzJ10p
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0ZXN0R3JvdXAuY29tbWl0U2V0cywgWyc0
MDEnLCAnNDAyJywgJzQwMScsICc0MDInXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz
aG91bGQgbGlzdCBhbGwgdGVzdCBncm91cHMgbWF5IG5lZWQgYWRkaXRpb25hbCBidWlsZCByZXF1
ZXN0cycsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tE
YXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2Nv
bXBsZXRlZCcsICdjb21wbGV0ZWQnXSk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRB
bm90aGVyTW9ja1Rlc3RHcm91cChUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywg
J2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY29tcGxldGVkJ10sICd3ZWJraXQnKTsKKyAgICAgICAg
ICAgIGF3YWl0IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5xdWVyeSgnVVBEQVRFIGFuYWx5c2lzX3Rl
c3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IFRSVUUgV0hF
UkUgdGVzdGdyb3VwX2lkID0gNjAwJyk7CisgICAgICAgICAgICBhd2FpdCBUZXN0U2VydmVyLmRh
dGFiYXNlKCkucXVlcnkoJ1VQREFURSBhbmFseXNpc190ZXN0X2dyb3VwcyBTRVQgdGVzdGdyb3Vw
X21heV9uZWVkX21vcmVfcmVxdWVzdHMgPSBUUlVFIFdIRVJFIHRlc3Rncm91cF9pZCA9IDYwMScp
OworICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy9uZWVkLW1vcmUtcmVxdWVzdHMnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50LnRlc3RHcm91cHMubGVuZ3RoLCAyKTsKKworICAg
ICAgICAgICAgY29uc3Qgb25lVGVzdEdyb3VwID0gY29udGVudC50ZXN0R3JvdXBzWzBdOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5pZCwgNjAwKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChvbmVUZXN0R3JvdXAudGFzaywgNTAwKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChvbmVUZXN0R3JvdXAubmFtZSwgJ3NvbWUgdGVzdCBncm91cCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5hdXRob3IsIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFvbmVUZXN0R3JvdXAuaGlkZGVuKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhv
bmVUZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24pOworICAgICAgICAgICAgYXNzZXJ0Lm9rKG9u
ZVRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvbmVUZXN0R3JvdXAucGxhdGZvcm0sIDY1KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwob25lVGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMsIFsnNzAwJywnNzAxJywgJzcwMicsICc3MDMn
XSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG9uZVRlc3RHcm91cC5jb21taXRTZXRz
LCBbJzQwMScsICc0MDInLCAnNDAxJywgJzQwMiddKTsKKworICAgICAgICAgICAgY29uc3QgYW5v
dGhlclRlc3RHcm91cCA9IGNvbnRlbnQudGVzdEdyb3Vwc1sxXTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChhbm90aGVyVGVzdEdyb3VwLmlkLCA2MDEpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGFub3RoZXJUZXN0R3JvdXAudGFzaywgNTAwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChhbm90aGVyVGVzdEdyb3VwLm5hbWUsICdhbm90aGVyIHRlc3QgZ3JvdXAnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChhbm90aGVyVGVzdEdyb3VwLmF1dGhvciwgJ3dlYmtpdCcpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFhbm90aGVyVGVzdEdyb3VwLmhpZGRlbik7CisgICAgICAgICAg
ICBhc3NlcnQub2soIWFub3RoZXJUZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24pOworICAgICAg
ICAgICAgYXNzZXJ0Lm9rKGFub3RoZXJUZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYW5vdGhlclRlc3RHcm91cC5wbGF0Zm9ybSwgNjUpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChhbm90aGVyVGVzdEdyb3VwLmJ1aWxkUmVxdWVz
dHMsIFsnNzEwJywnNzExJywgJzcxMicsICc3MTMnXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGFub3RoZXJUZXN0R3JvdXAuY29tbWl0U2V0cywgWyc0MDEnLCAnNDAyJywgJzQwMScs
ICc0MDInXSk7CisgICAgICAgIH0pOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1
ZXN0cy10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTMxNTgxN2JlZGRlYmUxMTkwNTJiZjQ2YzU3NjE1
OWUxYTdlNjYwCi0tLSAvZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1hZGQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAg
LTAsMCArMSwxNTggQEAKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgn
YXNzZXJ0Jyk7CisKK2NvbnN0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1k
YXRhLmpzJyk7Citjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1z
ZXJ2ZXIuanMnKTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsKK2NvbnN0IHByZXBh
cmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMn
KS5wcmVwYXJlU2VydmVyVGVzdDsKKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNr
KG5hbWUsIHdlYmtpdFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQoreworICAgIGNv
bnN0IHJlcG9ydFdpdGhSZXZpc2lvbiA9IFt7CisgICAgICAgICJidWlsZE51bWJlciI6ICIxMjQi
LAorICAgICAgICAiYnVpbGRUaW1lIjogIjIwMTUtMTAtMjdUMTU6MzQ6NTEiLAorICAgICAgICAi
cmV2aXNpb25zIjogeworICAgICAgICAgICAgIldlYktpdCI6IHsKKyAgICAgICAgICAgICAgICAi
cmV2aXNpb24iOiB3ZWJraXRSZXZpc2lvbnNbMF0sCisgICAgICAgICAgICAgICAgInRpbWVzdGFt
cCI6ICcyMDE1LTEwLTI3VDExOjM2OjU2Ljg3ODQ3M1onLAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJtYWNPUyI6IHsKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTVBMjg0IiwK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJ1aWxkZXJOYW1lIjogInNvbWVC
dWlsZGVyIiwKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xhdmUiLAorICAgICAgICAic2xh
dmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAicGxhdGZvcm0iOiAic29tZSBw
bGF0Zm9ybSIsCisgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICJzb21lIHRlc3QiOiB7
CisgICAgICAgICAgICAgICAgIm1ldHJpY3MiOiB7CisgICAgICAgICAgICAgICAgICAgICJUaW1l
IjogWyJBcml0aG1ldGljIl0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAi
dGVzdHMiOiB7CisgICAgICAgICAgICAgICAgICAgICJ0ZXN0MSI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJtZXRyaWNzIjogeyJUaW1lIjogeyAiY3VycmVudCI6IFsxMV0gfX0sCisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAg
ICAgICB9fV07CisKKyAgICBjb25zdCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uID0gW3sKKyAg
ICAgICAgImJ1aWxkTnVtYmVyIjogIjEyNSIsCisgICAgICAgICJidWlsZFRpbWUiOiAiMjAxNS0x
MC0yN1QxNzoyNzo0MSIsCisgICAgICAgICJyZXZpc2lvbnMiOiB7CisgICAgICAgICAgICAiV2Vi
S2l0IjogeworICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IHdlYmtpdFJldmlzaW9uc1sxXSwK
KyAgICAgICAgICAgICAgICAidGltZXN0YW1wIjogJzIwMTUtMTAtMjdUMTY6Mzg6MTAuNzY4OTk1
WicsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIm1hY09TIjogeworICAgICAgICAgICAg
ICAgICJyZXZpc2lvbiI6ICIxNUEyODQiLAorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAic2xhdmVOYW1lIjog
InNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisg
ICAgICAgICJwbGF0Zm9ybSI6ICJzb21lIHBsYXRmb3JtIiwKKyAgICAgICAgInRlc3RzIjogewor
ICAgICAgICAgICAgInNvbWUgdGVzdCI6IHsKKyAgICAgICAgICAgICAgICAibWV0cmljcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgIlRpbWUiOiBbIkFyaXRobWV0aWMiXSwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAgICAg
InRlc3QxIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIm1ldHJpY3MiOiB7IlRpbWUiOiB7
ICJjdXJyZW50IjogWzEyXSB9fSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH19XTsKKworICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7CisgICAgYXdhaXQgYWRkU2xhdmVGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBd
KTsKKyAgICBhd2FpdCByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhS
ZXZpc2lvbik7CisgICAgYXdhaXQgcmVtb3RlLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90
aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworICAg
IGNvbnN0IHRlc3QgPSBUZXN0LmZpbmRCeVBhdGgoWydzb21lIHRlc3QnLCAndGVzdDEnXSk7Cisg
ICAgY29uc3QgcGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlOYW1lKCdzb21lIHBsYXRmb3JtJyk7
CisgICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29u
ZmlndXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTog
cGxhdGZvcm0uaWQoKX0pOworICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93
cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisKKyAgICBhc3NlcnQu
ZXF1YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKyAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7CisgICAgICAg
IG5hbWU6IG5hbWUsCisgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwKKyAgICAg
ICAgZW5kUnVuOiB0ZXN0UnVuc1sxXVsnaWQnXSwKKyAgICAgICAgbmVlZHNOb3RpZmljYXRpb246
IHRydWUsCisgICAgfSk7CisgICAgcmV0dXJuIGNvbnRlbnRbJ3Rhc2tJZCddOworfQorCithc3lu
YyBmdW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2sobmFtZSwgd2Via2l0UmV2aXNp
b25zKQoreworICAgIGNvbnN0IHJlcG9ydCA9IHsKKyAgICAgICAgJ3NsYXZlTmFtZSc6ICdhbm90
aGVyU2xhdmUnLAorICAgICAgICAnc2xhdmVQYXNzd29yZCc6ICdhbm90aGVyUGFzc3dvcmQnLAor
ICAgICAgICAndHJpZ2dlcmFibGUnOiAnYnVpbGQtd2Via2l0JywKKyAgICAgICAgJ2NvbmZpZ3Vy
YXRpb25zJzogWworICAgICAgICAgICAge3Rlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgcGxh
dGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9LAorICAgICAgICAgICAge3Rlc3Q6IE1v
Y2tEYXRhLnNvbWVUZXN0SWQoKSwgcGxhdGZvcm06IE1vY2tEYXRhLm90aGVyUGxhdGZvcm1JZCgp
fSwKKyAgICAgICAgXSwKKyAgICAgICAgJ3JlcG9zaXRvcnlHcm91cHMnOiBbCisgICAgICAgICAg
ICB7bmFtZTogJ29zLW9ubHknLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVwb3NpdG9yaWVzOiBbCisg
ICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJ
ZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAgICAgICAgICAgICBdfSwKKyAgICAgICAg
ICAgIHtuYW1lOiAnd2Via2l0LW9ubHknLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVwb3NpdG9yaWVz
OiBbCisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBv
c2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfSwKKyAgICAgICAgICAgICAgICBdfSwKKyAg
ICAgICAgICAgIHtuYW1lOiAnc3lzdGVtLWFuZC13ZWJraXQnLCBhY2NlcHRzUm9vdDogdHJ1ZSwg
cmVwb3NpdG9yaWVzOiBbCisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0
YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAgICAgICAg
ICAgICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBhY2Nl
cHRzUGF0Y2g6IHRydWV9CisgICAgICAgICAgICAgICAgXX0sCisgICAgICAgICAgICB7bmFtZTog
J3N5c3RlbS13ZWJraXQtc2pjJywgYWNjZXB0c1Jvb3Q6IHRydWUsIHJlcG9zaXRvcmllczogWwor
ICAgICAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5
SWQoKSwgYWNjZXB0c1BhdGNoOiBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0
b3J5OiBNb2NrRGF0YS5qc2NSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiBmYWxzZX0sCisg
ICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5
SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAgICAgICAgICAgICAgIF19LAorICAgICAgICBd
CisgICAgfTsKKyAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFi
YXNlKCkpOworICAgIGF3YWl0IGFkZFNsYXZlRm9yUmVwb3J0KHJlcG9ydCk7CisgICAgYXdhaXQg
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUv
JywgcmVwb3J0KTsKKyAgICBhd2FpdCBjcmVhdGVBbmFseXNpc1Rhc2sobmFtZSwgd2Via2l0UmV2
aXNpb25zKTsKK30KKworZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbigpIHsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOwor
ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgn
dGVzdCcsICdwYXNzd29yZCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRv
IGFkZCBidWlsZCByZXF1ZXN0cyB0byB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAg
ICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAg
ICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4g
cmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lv
blNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQu
aWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2Fp
dCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAg
ICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVk
c05vdGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7
CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsK
KworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFz
ayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAg
ICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAg
ICBhc3NlcnQuZXF1YWwoZ3JvdXAucmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JvdXAuaXRlcmF0aW9uQ291bnQoKSwgMik7CisKKyAgICAgICAgYXdhaXQgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnYWRkLWJ1aWxkLXJlcXVlc3RzJywge2dyb3VwOiBpbnNl
cnRlZEdyb3VwSWQsIGNvdW50OiAyfSk7CisKKyAgICAgICAgY29uc3QgdXBkYXRlZEdyb3VwcyA9
IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7Cisg
ICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFz
c2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLnJlcGV0aXRpb25Db3VudCgpLCA0KTsKKyAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLml0ZXJhdGlvbkNvdW50KCksIDIpOworICAgICAgICBmb3Ig
KGNvbnN0IGNvbW1pdFNldCBvZiB1cGRhdGVkR3JvdXBzWzBdLnJlcXVlc3RlZENvbW1pdFNldHMo
KSkgeworICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0cyA9IHVwZGF0ZWRHcm91cHNbMF0u
cmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CisgICAgICAgIH0KKyAgICB9KTsKK30pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBp
LXVwZGF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCmluZGV4IGM3YmU0OGE0MzRkYTQzMTkyYzE5YTM1
NmQwZTc0NmM0ZDI2MmNhNWQuLjlmMTU3ODc0Nzg2NWU3NTIyZGJkYTJiNGRkOTBmN2UxYjA0YTUx
YjYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJp
dmlsZWdlZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91
cC10ZXN0cy5qcwpAQCAtMjA0LDQgKzIwNCw3NiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBp
L3VwZGF0ZS10ZXN0LWdyb3VwJywgZnVuY3Rpb24oKXsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHVw
ZGF0ZWRHcm91cHNbMF0ubmVlZHNOb3RpZmljYXRpb24oKSwgdHJ1ZSk7CiAgICAgICAgIGFzc2Vy
dC5vayghZ3JvdXAubm90aWZpY2F0aW9uU2VudEF0KCkpOwogICAgIH0pOworCisgICAgaXQoJ3No
b3VsZCBiZSBjcmVhdGVkIHdpdGggIm1heV9uZWVkX21vcmVfcmVxdWVzdHMiIGZpZWxkIGRlZmF1
bHRzIHRvIGZhbHNlJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJs
ZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBv
c2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0g
J1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5
MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0
YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQo
KSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2Us
IHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRb
J3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVz
dEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3Jv
dXBJZCk7CisgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCks
IGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7
CisKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byB1cGRhdGUgIm1heV9uZWVk
X21vcmVfcmVxdWVzdHMiIGZpZWxkIHRvIHRydWUgYW5kIGZhbHNlJywgYXN5bmMgKCkgPT4gewor
ICAgICAgICBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOwor
ICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9y
eSkgPT4gcmVwb3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCBy
ZXZpc2lvblNldHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQg
PSBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisg
ICAgICAgICAgICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9y
bTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgp
LCBuZWVkc05vdGlmaWNhdGlvbjogZmFsc2UsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25z
dCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29u
c3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNr
SWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7
CisgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5lcXVhbChn
cm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCksIGZhbHNlKTsKKworICAgICAgICBhd2FpdCBQcml2
aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcsIHtncm91cDogaW5zZXJ0
ZWRHcm91cElkLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlfSk7CisKKyAgICAgICAgbGV0IHVw
ZGF0ZWRHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lk
J10sIHRydWUpOworICAgICAgICBhc3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEp
OworICAgICAgICBhc3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwc1swXS5tYXlOZWVkTW9yZVJlcXVl
c3RzKCksIHRydWUpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3Jl
UmVxdWVzdHM6IGZhbHNlfSk7CisKKyAgICAgICAgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1
cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgIH0pOwor
CisgICAgaXQoJ3Nob3VsZCBjbGVhciAibWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgd2hpbGUgaGlk
aW5nIHRlc3QgZ3JvdXAnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJh
YmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJl
cG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9
PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5p
ZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAn
MTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2Vu
ZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcs
IHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxz
ZSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3Vs
dFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVz
dEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNz
ZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0
ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRH
cm91cElkKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMo
KSwgZmFsc2UpOworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Vw
ZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWV9KTsKKworICAgICAgICBsZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RH
cm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1
cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgdHJ1ZSk7CisKKyAgICAgICAg
YXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3Jv
dXA6IGluc2VydGVkR3JvdXBJZCwgaGlkZGVuOiB0cnVlfSk7CisKKyAgICAgICAgdXBkYXRlZEdy
b3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0aCwgMSk7CisgICAg
ICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwg
ZmFsc2UpOworICAgICAgICBhc3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwc1swXS5pc0hpZGRlbigp
LCB0cnVlKTsKKyAgICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21v
Y2stZGF0YS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3Vy
Y2VzL21vY2stZGF0YS5qcwppbmRleCA2NDUyMGE1ZWY1NTVkYTMxZjc5YTY1MWJmMDBiNTM4ZDIz
N2MzYmM0Li40NDZlN2MxNzU4ODY5ZDAyYWQ0YWI3MGUzOWRlNzk3NzViOGZjZWM3IDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2Nr
LWRhdGEuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNv
dXJjZXMvbW9jay1kYXRhLmpzCkBAIC02NCw3ICs2NCw3IEBAIE1vY2tEYXRhID0gewogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCd0ZXN0X3J1bnMnLCB7aWQ6IDgwMSwgY29uZmlnOiAzMDEsIGJ1aWxk
OiA5MDEsIG1lYW5fY2FjaGU6IDEwMH0pLAogICAgICAgICBdKTsKICAgICB9LAotICAgIGFkZE1v
Y2tEYXRhOiBmdW5jdGlvbiAoZGIsIHN0YXR1c0xpc3QpCisgICAgYWRkTW9ja0RhdGE6IGZ1bmN0
aW9uIChkYiwgc3RhdHVzTGlzdCwgbmVlZHNOb3RpZmljYXRpb249dHJ1ZSkKICAgICB7CiAgICAg
ICAgIGlmICghc3RhdHVzTGlzdCkKICAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcn
LCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXTsKQEAgLTc5LDcgKzc5LDcgQEAgTW9j
a0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1
MDAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2snLAogICAgICAg
ICAgICAgICAgIHN0YXJ0X3J1bjogODAxLCBzdGFydF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6
MDU6MjcuMVonLAogICAgICAgICAgICAgICAgIGVuZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAn
MjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlz
aXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdy
b3VwJywgbmVlZHNfbm90aWZpY2F0aW9uOiB0cnVlfSksCisgICAgICAgICAgICBkYi5pbnNlcnQo
J2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDAsIHRhc2s6IDUwMCwgbmFtZTogJ3NvbWUg
dGVzdCBncm91cCcsIGl0ZXJhdGlvbl9jb3VudDogNCwgbmVlZHNfbm90aWZpY2F0aW9uOiBuZWVk
c05vdGlmaWNhdGlvbn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycs
IHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBv
c2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwg
b3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxl
OiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwg
Z3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAogICAgICAgICAgICAgZGIu
aW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0s
IHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUs
IHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLApAQCAt
MTIzLDcgKzEyMyw3IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRfc2V0cycsIHtpZDogMTQwMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0
X2l0ZW1zJywge3NldDogMTQwMiwgY29tbWl0OiA4NzgzMn0pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogMTQwMiwgY29tbWl0OiAxOTYzMzZ9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDE2MDAsIHRh
c2s6IDUwMCwgbmFtZTogJ3Rlc3QgZ3JvdXAgd2l0aCBnaXQnfSksCisgICAgICAgICAgICBkYi5p
bnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiAxNjAwLCB0YXNrOiA1MDAsIG5hbWU6
ICd0ZXN0IGdyb3VwIHdpdGggZ2l0JywgaXRlcmF0aW9uX2NvdW50OiA0fSksCiAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiAxNzAwLCBzdGF0dXM6ICdwZW5kaW5n
JywgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDIsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogMTYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDE0MDF9KSwK
ICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDE3MDEsIHN0YXR1
czogJ3BlbmRpbmcnLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9ncm91cDogMjAwMiwg
cGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiAxNjAwLCBvcmRlcjogMSwgY29tbWl0X3Nl
dDogMTQwMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDog
MTcwMiwgc3RhdHVzOiAncGVuZGluZycsIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dy
b3VwOiAyMDAyLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDE2MDAsIG9yZGVyOiAy
LCBjb21taXRfc2V0OiAxNDAxfSksCkBAIC0xMzksNyArMTM5LDcgQEAgTW9ja0RhdGEgPSB7CiAg
ICAgICAgIGNvbnN0IHBsYXRmb3JtID0gNjU7CiAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnlfZ3Jv
dXAgPSAyMDAxOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgZGIu
aW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAxLCB0YXNrOiA1MDAsIG5hbWU6
ICdhbm90aGVyIHRlc3QgZ3JvdXAnLCBhdXRob3J9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgn
YW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMSwgdGFzazogNTAwLCBuYW1lOiAnYW5vdGhl
ciB0ZXN0IGdyb3VwJywgYXV0aG9yLCBpdGVyYXRpb25fY291bnQ6IDR9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBzdGF0dXNMaXN0
WzNdLCB0cmlnZ2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3Vw
OiA2MDEsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMCwgc3RhdHVzOiBzdGF0dXNMaXN0WzBdLCB0cmln
Z2VyYWJsZSwgcmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9y
ZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRf
cmVxdWVzdHMnLCB7aWQ6IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZSwg
cmVwb3NpdG9yeV9ncm91cCwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwOiA2MDEsIG9yZGVyOiAyLCBj
b21taXRfc2V0OiA0MDF9KSwKQEAgLTE1Nyw3ICsxNTcsNyBAQCBNb2NrRGF0YSA9IHsKICAgICAg
ICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDEwODAsIHBsYXRmb3JtOiA2
NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2sgd2l0aCBjb21wb25lbnQgdGVzdCcsCiAg
ICAgICAgICAgICAgICAgc3RhcnRfcnVuOiA4MDEsIHN0YXJ0X3J1bl90aW1lOiAnMjAxNS0xMC0y
N1QxMjowNToyNy4xWicsCiAgICAgICAgICAgICAgICAgZW5kX3J1bjogODAxLCBlbmRfcnVuX3Rp
bWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdh
bmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogOTAwLCB0YXNrOiAxMDgwLCBuYW1lOiAnc29tZSB0
ZXN0IGdyb3VwIHdpdGggY29tcG9uZW50IHRlc3QnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQo
J2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21l
IHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQgdGVzdCcsIGl0ZXJhdGlvbl9jb3VudDogNH0pLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtpZDogNDAzfSksCiAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDMsIGNvbW1pdDogODc4
MzJ9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQw
MywgY29tbWl0OiA5MzExNn0pLApAQCAtMTgwLDcgKzE4MCw3IEBAIE1vY2tEYXRhID0gewogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogMTA4MCwgcGxhdGZvcm06
IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzayB3aXRoIGNvbXBvbmVudCB0ZXN0JywK
ICAgICAgICAgICAgICAgICBzdGFydF9ydW46IDgwMSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEw
LTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAgICAgICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5f
dGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21l
IHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQgdGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDkwMCwgdGFzazogMTA4MCwgbmFtZTogJ3Nv
bWUgdGVzdCBncm91cCB3aXRoIGNvbXBvbmVudCB0ZXN0JywgaXRlcmF0aW9uX2NvdW50OiA0fSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDR9KSwKICAgICAg
ICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwNCwgY29tbWl0OiA4
NzgzMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDog
NDA0LCBjb21taXQ6IDk2MzM2fSksCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzCmluZGV4IGE4
ZWMwZWRmMWVhNWU1ZWQ2MDlkOWUyMDMxMDQzM2IxZTYxZTM2MWIuLmFkNjBjNDZkN2ViNmNiNGIw
MjY1OGUyY2E3NjRjODk5NTIzM2QzYTEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzCkBA
IC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgVGVzdFNlcnZlciB7CiAgICAgX2RldGVybWluZVBnc3Fs
RGlyZWN0b3J5KCkKICAgICB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBsZXQgaW5pdGRi
TG9jYXRpb24gPSBjaGlsZFByb2Nlc3MuZXhlY0ZpbGVTeW5jKCd3aGljaCcsIFsnaW5pdGRiJ10p
OworICAgICAgICAgICAgbGV0IGluaXRkYkxvY2F0aW9uID0gY2hpbGRQcm9jZXNzLmV4ZWNGaWxl
U3luYygnd2hpY2gnLCBbJ2luaXRkYiddKS50b1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJu
IHBhdGguZGlybmFtZShpbml0ZGJMb2NhdGlvbik7CiAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7
CiAgICAgICAgICAgICBsZXQgc2VydmVyUGdzcWxMb2NhdGlvbiA9ICcvQXBwbGljYXRpb25zL1Nl
cnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluLyc7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JldHJ5LWZhaWxlZC1idWls
ZC1yZXF1ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDkxZjk3ZDBlOTY3YjFiYWI1MzgyMTliMDcwYmIy
ODQzZGE3OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy5qcwpAQCAtMCwwICsxLDM0IEBACith
c3luYyBmdW5jdGlvbiBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNX
aXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgbWF4aW11bVJldHJ5UmF0aW8pCit7CisgICAg
Zm9yIChjb25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3VwcykgeworICAgICAgICBpZiAoIXRlc3RH
cm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAodGVzdEdyb3VwLmlzSGlkZGVuKCkpIHsKKyAgICAgICAgICAgIGF3YWl0IHRlc3RH
cm91cC5jbGVhck5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENv
dW50ID0gMDsKKyAgICAgICAgbGV0IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21t
aXRTZXQgPSB0cnVlOworICAgICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAu
cmVxdWVzdGVkQ29tbWl0U2V0cygpKSB7CisgICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3Rz
ID0gdGVzdEdyb3VwLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7CisKKyAgICAgICAg
ICAgIGNvbnN0IGNvbXBsZXRlZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0
ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7
CisgICAgICAgICAgICBoYXNDb21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ICY9
IChjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCA+IDApOworICAgICAgICAgICAgaWYgKCFoYXND
b21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjb25zdCB1bmZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQgPSBi
dWlsZFJlcXVlc3RzLmZpbHRlcigoYnVpbGRSZXF1ZXN0KSA9PiAhYnVpbGRSZXF1ZXN0Lmhhc0Zp
bmlzaGVkKCkpLmxlbmd0aDsKKyAgICAgICAgICAgIG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3Vu
dCA9IE1hdGgubWF4KG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCwgdGVzdEdyb3VwLml0ZXJh
dGlvbkNvdW50KCkgLSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3VudCAtIHVuZmluaXNoZWRCdWls
ZFJlcXVlc3RDb3VudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzQ29tcGxldGVkQnVp
bGRSZXF1ZXN0Rm9yRWFjaENvbW1pdFNldCAmJiBtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQg
JiYKKyAgICAgICAgICAgICh0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNzaW5n
QnVpbGRSZXF1ZXN0Q291bnQpIC8gdGVzdEdyb3VwLml0ZXJhdGlvbkNvdW50KCkgPD0gbWF4aW11
bVJldHJ5UmF0aW8pCisgICAgICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRkRXh0cmFCdWlsZFJl
cXVlc3RzKG1heE1pc3NpbmdCdWlsZFJlcXVlc3RDb3VudCk7CisgICAgICAgIGF3YWl0IHRlc3RH
cm91cC5jbGVhck5lZWRBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0cygpOworICAgIH0KK30KKworaWYg
KHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLmNyZWF0
ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9
IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1
ZXN0czsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcwppbmRleCAwZjdkM2YwM2MyZTU0YWVhOTFiZDk1
ZmZiYWNjOWU5YzczMzRlNzI2Li41NjUzOTJiMTRmOGRkMzdjZmJmODcwYzZmMDE0OTgzMTNmYWZj
NmZhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5
c2lzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMu
anMKQEAgLTYsNiArNiw3IEBAIGNvbnN0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3Rl
LmpzJykuUmVtb3RlQVBJOwogY29uc3QgTWVhc3VyZW1lbnRTZXRBbmFseXplciA9IHJlcXVpcmUo
Jy4vanMvbWVhc3VyZW1lbnQtc2V0LWFuYWx5emVyLmpzJykuTWVhc3VyZW1lbnRTZXRBbmFseXpl
cjsKIGNvbnN0IEFuYWx5c2lzUmVzdWx0c05vdGlmaWVyID0gcmVxdWlyZSgnLi9qcy9hbmFseXNp
cy1yZXN1bHRzLW5vdGlmaWVyLmpzJykuQW5hbHlzaXNSZXN1bHRzTm90aWZpZXI7CiBjb25zdCBT
dWJwcm9jZXNzID0gcmVxdWlyZSgnLi9qcy9zdWJwcm9jZXNzLmpzJykuU3VicHJvY2VzczsKK2Nv
bnN0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRS
ZXF1ZXN0cyA9IHJlcXVpcmUoJy4vanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzJykuY3Jl
YXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3Rz
OwogcmVxdWlyZSgnLi9qcy92My1tb2RlbHMuanMnKTsKIGdsb2JhbC5Qcml2aWxlZ2VkQVBJID0g
cmVxdWlyZSgnLi9qcy9wcml2aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEk7CiAKQEAgLTE2
LDYgKzE3LDcgQEAgZnVuY3Rpb24gbWFpbihhcmd2KQogICAgICAgICB7bmFtZTogJy0tbm90aWZp
Y2F0aW9uLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9LAogICAgICAgICB7bmFtZTogJy0t
YW5hbHlzaXMtcmFuZ2UtaW4tZGF5cycsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDEwfSwK
ICAgICAgICAge25hbWU6ICctLXNlY29uZHMtdG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBk
ZWZhdWx0OiAxMjAwfSwKKyAgICAgICAge25hbWU6ICctLW1heC1yZXRyeS1yYXRpbycsIHR5cGU6
IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDN9LAogICAgIF0pOwogCiAgICAgaWYgKCFvcHRpb25zKQpA
QCAtMzEsNiArMzMsNyBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNpc0xvb3Aob3B0aW9ucykKICAg
ICAgICAgY29uc3Qgc2VydmVyQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0
aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0Zi04JykpOwogICAgICAgICBjb25zdCBu
b3RpZmljYXRpb25Db25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyct
LW5vdGlmaWNhdGlvbi1jb25maWctanNvbiddLCAndXRmLTgnKSk7CiAgICAgICAgIGNvbnN0IGFu
YWx5c2lzUmFuZ2VJbkRheXMgPSBvcHRpb25zWyctLWFuYWx5c2lzLXJhbmdlLWluLWRheXMnXTsK
KyAgICAgICAgY29uc3QgbWF4aW11bVJldHJ5UmF0aW9uID0gb3B0aW9uc1snLS1tYXgtcmV0cnkt
cmF0aW8nXTsKICAgICAgICAgc2Vjb25kc1RvU2xlZXAgPSBvcHRpb25zWyctLXNlY29uZHMtdG8t
c2xlZXAnXTsKICAgICAgICAgZ2xvYmFsLlJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkoc2VydmVy
Q29uZmlnLnNlcnZlcik7CiAgICAgICAgIFByaXZpbGVnZWRBUEkuY29uZmlndXJlKHNlcnZlckNv
bmZpZy5zbGF2ZS5uYW1lLCBzZXJ2ZXJDb25maWcuc2xhdmUucGFzc3dvcmQpOwpAQCAtNDUsMTQg
KzQ4LDE2IEBAIGFzeW5jIGZ1bmN0aW9uIGFuYWx5c2lzTG9vcChvcHRpb25zKQogICAgICAgICBj
b25zb2xlLmxvZyhgU3RhcnQgYW5hbHl6aW5nIGxhc3QgJHthbmFseXNpc1JhbmdlSW5EYXlzfSBk
YXlzIG1lYXN1cmVtZW50IHNldHMuYCk7CiAgICAgICAgIGF3YWl0IGFuYWx5emVyLmFuYWx5emVP
bmNlKCk7CiAKLSAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRj
aEFsbFdpdGhOb3RpZmljYXRpb25SZWFkeSgpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzTWF5
TmVlZE1vcmVSZXF1ZXN0cyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEFsbE1heU5lZWRNb3JlUmVx
dWVzdHMoKTsKKyAgICAgICAgYXdhaXQgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JU
ZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHNNYXlOZWVkTW9yZVJlcXVlc3Rz
LCBtYXhpbXVtUmV0cnlSYXRpb24pOwogCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHNOZWVkTm90
aWZpY2F0aW9uID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoQWxsV2l0aE5vdGlmaWNhdGlvblJlYWR5
KCk7CiAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblJlbW92ZUFQSSA9IG5ldyBSZW1vdGVBUEko
bm90aWZpY2F0aW9uQ29uZmlnLm5vdGlmaWNhdGlvblNlcnZlckNvbmZpZyk7CiAgICAgICAgIGNv
bnN0IG5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWcgPSBub3RpZmljYXRpb25Db25maWcubm90aWZp
Y2F0aW9uTWVzc2FnZUNvbmZpZzsKICAgICAgICAgY29uc3Qgbm90aWZpZXIgPSBuZXcgQW5hbHlz
aXNSZXN1bHRzTm90aWZpZXIobm90aWZpY2F0aW9uTWVzc2FnZUNvbmZpZy5tZXNzYWdlVGVtcGxh
dGUsIG5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWcuZmluYWxpemVTY3JpcHQsCiAgICAgICAgICAg
ICBub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnLm1lc3NhZ2VDb25zdHJ1Y3Rpb25SdWxlcywgbm90
aWZpY2F0aW9uUmVtb3ZlQVBJLCBub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0aW9uU2VydmVy
Q29uZmlnLnBhdGgsIG5ldyBTdWJwcm9jZXNzKTsKIAotICAgICAgICBhd2FpdCBub3RpZmllci5z
ZW5kTm90aWZpY2F0aW9uc0ZvclRlc3RHcm91cHModGVzdEdyb3Vwcyk7CisgICAgICAgIGF3YWl0
IG5vdGlmaWVyLnNlbmROb3RpZmljYXRpb25zRm9yVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzTmVlZE5v
dGlmaWNhdGlvbik7CiAgICAgfSBjYXRjaChlcnJvcikgewogICAgICAgICBjb25zb2xlLmVycm9y
KGBGYWlsZWQgYW5hbHl6ZSBtZWFzdXJlbWVudCBzZXRzIGR1ZSB0byAke2Vycm9yfWApOwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3JldHJ5
LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWIwY2UwY2JjOTIyMWY3NzE0YWM2ZWQxNWZhNzc2MjA2NWQ3N2M3Ci0tLSAvZGV2L251
bGwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVk
LWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCkBAIC0wLDAgKzEsMjI0IEBACisndXNlIHN0cmljdCc7
CisKK2NvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworcmVxdWlyZSgnLi4vdG9vbHMv
anMvdjMtbW9kZWxzLmpzJyk7Citjb25zdCBNb2NrTW9kZWxzID0gcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvbW9jay12My1tb2RlbHMuanMnKS5Nb2NrTW9kZWxzOworY29uc3QgTW9ja1JlbW90ZUFQSSA9
IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpLk1vY2tSZW1vdGVBUEk7
Citjb25zdCBOb2RlUHJpdmlsZWdlZEFQSSA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL3ByaXZpbGVn
ZWQtYXBpJykuUHJpdmlsZWdlZEFQSTsKK2NvbnN0IGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pz
L3JldHJ5LWZhaWxlZC1idWlsZC1yZXF1ZXN0cycpLmNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0czsKKworCitmdW5jdGlvbiBzYW1wbGVU
ZXN0R3JvdXAobmVlZHNOb3RpZmljYXRpb249dHJ1ZSwgaXRlcmF0aW9uQ291bnQ9MywgbWF5TmVl
ZE1vcmVSZXF1ZXN0cz10cnVlLCBoaWRkZW49ZmFsc2UsCisgICAgc3RhdHVzTGlzdD1bInBlbmRp
bmciLCAicGVuZGluZyIsICJwZW5kaW5nIiwgInBlbmRpbmciLCAicGVuZGluZyIsICJwZW5kaW5n
Il0pIHsKKyAgICByZXR1cm4geworICAgICAgICAidGVzdEdyb3VwcyI6IFt7CisgICAgICAgICAg
ICAiaWQiOiAiMjEyOCIsCisgICAgICAgICAgICAidGFzayI6ICIxMzc2IiwKKyAgICAgICAgICAg
ICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAibmFtZSI6ICJDb25maXJtIiwKKyAgICAg
ICAgICAgICJhdXRob3IiOiAicm5pd2EiLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2
ODg1MTQwMDAsCisgICAgICAgICAgICBoaWRkZW4sCisgICAgICAgICAgICAibmVlZHNOb3RpZmlj
YXRpb24iOiBuZWVkc05vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICJidWlsZFJlcXVlc3RzIjog
WyIxNjk4NSIsICIxNjk4NiIsICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCJdLAor
ICAgICAgICAgICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAorICAgICAgICAgICAg
Im5vdGlmaWNhdGlvblNlbnRBdCI6IG51bGwsCisgICAgICAgICAgICBpdGVyYXRpb25Db3VudCwK
KyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKKyAgICAgICAgfV0sCisgICAgICAgICJi
dWlsZFJlcXVlc3RzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICIxNjk4NSIsCisgICAgICAgICAg
ICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAg
ICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIs
CisgICAgICAgICAgICAib3JkZXIiOiAiMCIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTUiLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMF0sCisgICAgICAgICAgICAi
dXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3Jl
YXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAi
MTY5ODYiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRl
c3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAi
dGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjEiLAorICAgICAgICAg
ICAgImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0
WzFdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgewor
ICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIz
IiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAi
MzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRl
ciI6ICIyIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCisgICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0
MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk4OCIsCisgICAgICAgICAg
ICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQiLAorICAgICAg
ICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIs
CisgICAgICAgICAgICAib3JkZXIiOiAiMyIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTYiLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCisgICAgICAgICAgICAi
dXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAgICAgICAiY3Jl
YXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAi
MTY5ODkiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAgICAgICAgInRl
c3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAgICAgICAgICAi
dGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjMiLAorICAgICAgICAg
ICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAgICAgICAgICJzdGF0dXMiOiBzdGF0dXNMaXN0
WzRdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAgICAgfSwgewor
ICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKKyAgICAgICAgICAgICJ0cmlnZ2VyYWJsZSI6ICIz
IiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAi
MzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAgICAgICJvcmRl
ciI6ICIzIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCisgICAgICAgICAgICAi
c3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxsLAorICAgICAg
ICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0
MDAwCisgICAgICAgIH1dLAorICAgICAgICAiY29tbWl0U2V0cyI6IFt7CisgICAgICAgICAgICAi
aWQiOiAiNDI1NSIsCisgICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4
NzgzMiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6
IFtdLAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiNDI1NiIsCisgICAgICAgICAg
ICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5NjMz
NiJ9XSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAorICAgICAgICB9XSwKKyAgICAg
ICAgImNvbW1pdHMiOiBbeworICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKKyAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIjkiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4
NCIsCisgICAgICAgICAgICAidGltZSI6IDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImlk
IjogIjkzMTE2IiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKKyAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICIxOTE2MjIiLAorICAgICAgICAgICAgInRpbWUiOiAxNDQ1OTQ1ODE2ODc4
CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCisgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICI5IiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQi
LAorICAgICAgICAgICAgInRpbWUiOiAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6
ICI5NjMzNiIsCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCisgICAgICAgICAgICAi
cmV2aXNpb24iOiAiMTkyNzM2IiwKKyAgICAgICAgICAgICJ0aW1lIjogMTQ0ODIyNTMyNTY1MAor
ICAgICAgICB9XSwKKyAgICAgICAgInVwbG9hZGVkRmlsZXMiOiBbXSwKKyAgICAgICAgInN0YXR1
cyI6ICJPSyIKKyAgICB9OworfQorCitkZXNjcmliZSgnY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVx
dWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4geworICAgIGxldCBy
ZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51bGwsIE5vZGVQcml2aWxlZ2VkQVBJKTsK
KyAgICBNb2NrTW9kZWxzLmluamVjdCgpOworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg
ICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnc2xhdmVfbmFtZScsICdwYXNzd29yZCcpOworICAg
IH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgMSBtb3JlIGJ1aWxkIHJlcXVlc3Qgd2hlbiBvbmUg
ZmFpbGVkIGJ1aWxkIHJlcXVlc3QgZm91bmQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0
IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAoZmFsc2UsIDMsIHRydWUsIGZhbHNlLCBbImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAi
ZmFpbGVkIl0pOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVN
b2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9u
YWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBz
LCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVp
bGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRh
LCB7c2xhdmVOYW1lOiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdy
b3VwOiAnMjEyOCcsIGNvdW50OiAxfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsK
KworICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisKKyAg
ICBpdCgnc2hvdWxkIGFkZCAyIG1vcmUgYnVpbGQgcmVxdWVzdHMgd2hlbiAyIGZhaWxlZCBidWls
ZCByZXF1ZXN0IGZvdW5kIGZvciBhIGNvbW1pdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAg
IGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAoZmFsc2UsIDMsIHRydWUsIGZhbHNlLCBbImNv
bXBsZXRlZCIsICJmYWlsZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQi
LCAiZmFpbGVkIl0pOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVh
dGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0
aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3Jv
dXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQt
YnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5k
YXRhLCB7c2xhdmVOYW1lOiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcs
IGdyb3VwOiAnMjEyOCcsIGNvdW50OiAyfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
KTsKKworICAgICAgICBhd2FpdCBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisK
KyAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gbm8g
Y29tcGxldGVkIGJ1aWxkIHJlcXVlc3QgZm9yIGEgY29tbWl0IHNldCcsIGFzeW5jICgpID0+IHsK
KyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cChmYWxzZSwgMywgdHJ1ZSwgZmFs
c2UsIFsiY29tcGxldGVkIiwgImZhaWxlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBs
ZXRlZCIsICJmYWlsZWQiXSk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRl
QWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRl
c3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsK
KworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBp
L3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNb
MF0uZGF0YSwge3NsYXZlTmFtZTogJ3NsYXZlX25hbWUnLCBzbGF2ZVBhc3N3b3JkOiAncGFzc3dv
cmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZX0pOworICAgICAg
ICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBz
Y2hlZHVsZSBtb3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gIm1heV9uZWVkX21vcmVfcmVxdWVzdHMi
IGlzIG5vdCBzZXQnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVU
ZXN0R3JvdXAoZmFsc2UsIDMsIGZhbHNlLCBmYWxzZSwgWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwg
ImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdKTsKKyAgICAg
ICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRU
ZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0Zv
clRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CisgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOworICAgIH0pOworCisgICAgaXQoJ3Nob3Vs
ZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIG5vIGNvbXBsZXRlZCBidWls
ZCByZXF1ZXN0IGlzIGhpZGRlbicsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgZGF0YSA9
IHNhbXBsZVRlc3RHcm91cChmYWxzZSwgMywgdHJ1ZSwgdHJ1ZSwgWyJjb21wbGV0ZWQiLCAiZmFp
bGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdKTsK
KyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZl
dGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1
ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7CisgICAg
ICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAn
KTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7c2xhdmVOYW1l
OiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJlcXVlc3RzWzBdLnJlc29s
dmUoKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1vcmUgYnVpbGQg
cmVxdWVzdCB3aGlsZSBleGNlZWRpbmcgbWF4aW11bSByZXRyeScsIGFzeW5jICgpID0+IHsKKyAg
ICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cChmYWxzZSwgMiwgdHJ1ZSwgZmFsc2Us
IFsiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIs
ICJmYWlsZWQiXSk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0
ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRkaXRp
b25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91
cHMsIDEuNSk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBk
YXRlLXRlc3QtZ3JvdXAnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5k
YXRhLCB7c2xhdmVOYW1lOiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcs
IGdyb3VwOiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJl
cXVlc3RzWzBdLnJlc29sdmUoKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IHNjaGVk
dWxlIG1vcmUgd2hlbiBhZGR0aW9uYWwgYnVpbGQgcmVxdWVzdHMgYXJlIHN0aWxsIHBlbmRpbmcn
LCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAoZmFs
c2UsIDIsIHRydWUsIGZhbHNlLCBbImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwg
ImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRpbmciXSk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsK
KyAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZh
aWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAxKTsKKworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAn
L3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVxdWVzdHNbMF0uZGF0YSwge3NsYXZlTmFtZTogJ3NsYXZlX25hbWUnLCBzbGF2ZVBh
c3N3b3JkOiAncGFzc3dvcmQnLCBncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBm
YWxzZX0pOworICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKCk7CisgICAgfSkKK30pOwpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMt
dGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vw
cy10ZXN0cy5qcwppbmRleCBmYjg5MTYyZTJhOGM5N2ZlMGVkMjY0NDUxMzIxNTJjMTBlMDY3MGI5
Li5iOTlkYTJkNjBkM2NkMmNiMGU2MzZhNzgyMzM3NTk4ZjRjOWFlZWQyIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0
cy5qcwpAQCAtNyw3ICs3LDcgQEAgY29uc3QgTm9kZVByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcu
Li90b29scy9qcy9wcml2aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEkKIGNvbnN0IE1vY2tN
b2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tNb2Rl
bHM7CiBjb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1v
dGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsKIAotZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5l
ZWRzTm90aWZpY2F0aW9uPXRydWUpIHsKK2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05v
dGlmaWNhdGlvbj10cnVlLCBpdGVyYXRpb25Db3VudD0yLCBtYXlOZWVkTW9yZVJlcXVlc3RzPXRy
dWUpIHsKICAgICByZXR1cm4gewogICAgICAgICAidGVzdEdyb3VwcyI6IFt7CiAgICAgICAgICAg
ICAiaWQiOiAiMjEyOCIsCkBAIC0yMCw2ICsyMCw5IEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91
cChuZWVkc05vdGlmaWNhdGlvbj10cnVlKSB7CiAgICAgICAgICAgICAibmVlZHNOb3RpZmljYXRp
b24iOiBuZWVkc05vdGlmaWNhdGlvbiwKICAgICAgICAgICAgICJidWlsZFJlcXVlc3RzIjogWyIx
Njk4NSIsICIxNjk4NiIsICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCIsICIxNjk5
MSIsICIxNjk5MiJdLAogICAgICAgICAgICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJd
LAorICAgICAgICAgICAgIm5vdGlmaWNhdGlvblNlbnRBdCI6IG51bGwsCisgICAgICAgICAgICBp
dGVyYXRpb25Db3VudCwKKyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKICAgICAgICAg
fV0sCiAgICAgICAgICJidWlsZFJlcXVlc3RzIjogW3sKICAgICAgICAgICAgICJpZCI6ICIxNjk4
NSIsCkBAIC0xNzQsNiArMTc3LDY2IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisgICAgZGVzY3JpYmUoJ2l0ZXJhdGlvbkNvdW50
JywgKCkgPT4geworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0
KCdodHRwczovL3BlcmYud2Via2l0Lm9yZycsIE5vZGVQcml2aWxlZ2VkQVBJKTsKKyAgICAgICAg
YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgn
dGVzdCcsICdwYXNzd29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNv
bnN0cnVjdCBpdGVyYXRpb25Db3VudCBmcm9tIGRhdGEnLCBhc3luYyAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCBmZXRjaFByb21pc2UgPSBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKDEzNzYpOwor
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShzYW1wbGVUZXN0R3JvdXAoKSk7CisgICAg
ICAgICAgICBsZXQgdGVzdEdyb3VwcyA9IGF3YWl0IGZldGNoUHJvbWlzZTsKKyAgICAgICAgICAg
IGFzc2VydCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBsZXQgdGVzdEdyb3Vw
ID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuaXRl
cmF0aW9uQ291bnQoKSwgMik7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUo
J21heU5lZWRNb3JlUmVxdWVzdHMnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0g
TW9ja1JlbW90ZUFQSS5pbmplY3QoJ2h0dHBzOi8vcGVyZi53ZWJraXQub3JnJywgTm9kZVByaXZp
bGVnZWRBUEkpOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIFByaXZp
bGVnZWRBUEkuY29uZmlndXJlKCd0ZXN0JywgJ3Bhc3N3b3JkJyk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCdzaG91bGQgY29uc3RydWN0IG1heU5lZWRNb3JlUmVxdWVzdHMgZnJvbSBkYXRh
JywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZmV0Y2hQcm9taXNlID0gVGVzdEdy
b3VwLmZldGNoRm9yVGFzaygxMzc2KTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUo
c2FtcGxlVGVzdEdyb3VwKCkpOworICAgICAgICAgICAgbGV0IHRlc3RHcm91cHMgPSBhd2FpdCBm
ZXRjaFByb21pc2U7CisgICAgICAgICAgICBhc3NlcnQodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgbGV0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBh
c3NlcnQub2sodGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbGVhciBtYXlOZWVkTW9yZVJlcXVlc3Rz
IGZsYWcnLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBmZXRjaFByb21pc2UgPSBU
ZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKDEzNzYpOworICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZShzYW1wbGVUZXN0R3JvdXAoKSk7CisgICAgICAgICAgICBsZXQgdGVzdEdyb3VwcyA9IGF3
YWl0IGZldGNoUHJvbWlzZTsKKyAgICAgICAgICAgIGFzc2VydCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBsZXQgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAg
ICAgIGFzc2VydC5vayh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpKTsKKworICAgICAg
ICAgICAgY29uc3QgdXBkYXRlUHJvbWlzZSA9IHRlc3RHcm91cC5jbGVhck5lZWRBZGRpdGlvbmFs
QnVpbGRSZXF1ZXN0cygpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5tZXRob2QsICdQT1NUJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Vw
ZGF0ZS10ZXN0LWdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzFdLmRhdGEsIHtncm91cDogJzIxMjgnLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiBmYWxzZSwgc2xh
dmVOYW1lOiAndGVzdCcsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCd9KTsKKyAgICAgICAgICAg
IHJlcXVlc3RzWzFdLnJlc29sdmUoKTsKKworICAgICAgICAgICAgYXdhaXQgTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0ubWV0aG9kLCAn
R0VUJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL2FwaS90
ZXN0LWdyb3Vwcy8yMTI4Jyk7CisgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdEdyb3VwID0g
c2FtcGxlVGVzdEdyb3VwKHRydWUsIDQsIGZhbHNlKTsKKyAgICAgICAgICAgIHJlcXVlc3RzWzJd
LnJlc29sdmUodXBkYXRlZFRlc3RHcm91cCk7CisKKyAgICAgICAgICAgIHRlc3RHcm91cHMgPSBh
d2FpdCB1cGRhdGVQcm9taXNlOworICAgICAgICAgICAgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1sw
XTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0
cygpLCBmYWxzZSk7CisgICAgICAgIH0pOworICAgIH0pOworCiAgICAgZGVzY3JpYmUoJ19jcmVh
dGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGl0
KCdzaG91bGQgY3JlYXRlIHRlc3QgZ3JvdXBzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
dmFyIGdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBz
KHNhbXBsZVRlc3RHcm91cCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351579</attachid>
            <date>2018-10-03 20:56:45 -0700</date>
            <delta_ts>2018-10-03 21:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190188-20181003205644.patch</filename>
            <type>text/plain</type>
            <size>69412</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzEyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiNzZkZGM3NDZhZjk2OTc0YmEyYzVlN2U2NTA3ZjMyN2E2NzViYWU2Li41NjY2N2ZmYjdl
OWJmN2NjODQ5NGJmMmViYjFkMjY4YjhjNDBiNzc5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxOC0xMC0wMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcmV0cnkgZm9yIHRlc3QgZ3JvdXBzIHdpdGggZmFp
bGVkIGJ1aWxkIHJlcXVlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgcmV0cnkgbG9naWMgaW4gcnVuLWFuYWx5c2lzIHNjcmlwdC4KKyAg
ICAgICAgQ3VycmVudCByZXRyeSBsb2dpYyB3aWxsIG9ubHkgYmUgdHJpZ2dlcmVkIHdoZW4gdGhl
cmUgaXMgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgYnVpbGQgcmVxdWVzdCBmb3IgZWFjaCBjb21t
aXQgc2V0CisgICAgICAgIGluIGEgdGVzdCBncm91cC4KKworICAgICAgICAqIGluaXQtZGF0YWJh
c2Uuc3FsOiBBZGRlZCAndGVzdGdyb3VwX2luaXRpYWxfcmVwZXRpdGlvbl9jb3VudCcgYW5kICd0
ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cycuCisgICAgICAgIFNRTCB0byB1cGRhdGUg
ZXhpc3RpbmcgZGF0YWJhc2U6CisgICAgICAgICcnJworICAgICAgICBCRUdJTjsKKyAgICAgICAg
ICAgIEFMVEVSIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzCisgICAgICAgICAgICAgICAgQURE
IENPTFVNTiB0ZXN0Z3JvdXBfaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50IGludGVnZXIgREVGQVVM
VCBOVUxMLAorICAgICAgICAgICAgICAgIEFERCBDT0xVTU4gdGVzdGdyb3VwX21heV9uZWVkX21v
cmVfcmVxdWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFOworICAgICAgICAgICAgVVBEQVRFIGFu
YWx5c2lzX3Rlc3RfZ3JvdXBzIFNFVCB0ZXN0Z3JvdXBfaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50
ID0gKAorICAgICAgICAgICAgICAgIFNFTEVDVCBESVNUSU5DVChDT1VOVCgqKSkgRlJPTSBidWls
ZF9yZXF1ZXN0cyBXSEVSRSByZXF1ZXN0X2dyb3VwID0gdGVzdGdyb3VwX2lkIEFORCByZXF1ZXN0
X29yZGVyID49IDAgR1JPVVAgQlkgcmVxdWVzdF9jb21taXRfc2V0CisgICAgICAgICAgICApOwor
ICAgICAgICAgICAgQUxURVIgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgQUxURVIgQ09MVU1O
IHRlc3Rncm91cF9pbml0aWFsX3JlcGV0aXRpb25fY291bnQgRFJPUCBERUZBVUxULCBBTFRFUiBD
T0xVTU4gdGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMgU0VUIE5PVCBOVUxMOworICAg
ICAgICBFTkQ7CisgICAgICAgICcnJworICAgICAgICAndGVzdGdyb3VwX2luaXRpYWxfcmVwZXRp
dGlvbl9jb3VudCcgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgYnVpbGQgcmVx
dWVzdCBmb3IgZWFjaCBjb21taXQgc2V0IHdoZW4KKyAgICAgICAgdGVzdCBncm91cCBpcyBjcmVh
dGVkLgorICAgICAgICAndGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMnIHdpbGwgYmUg
c2V0IHdoZW4gYW55IGJ1aWxkIHJlcXVlc3QgaW4gdGVzdCBncm91cCBpcyBzZXQgdG8gJ2ZhaWxl
ZCcuCisgICAgICAgICogcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHA6IEFkZGVkIHRoZSBs
b2dpYyB0byBzZXQgJ3Rlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzJy4KKyAgICAgICAg
KiBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocDogVXBkYXRlZCAncmVhZHktZm9yLW5vdGlmaWNh
dGlvbicgdG8gJ3JlYWR5LWZvci1mdXJ0aGVyLXByb2Nlc3NpbmcnIHNvIHRoYXQgaXQgcmV0dXJu
cyBmaW5pc2hlZCB0ZXN0CisgICAgICAgIGdyb3VwcyB0aG9zZSBlaXRoZXIgaGF2ZSAnbmVlZHNf
bm90aWZpY2F0aW9uJyBvciAgJ21heV9uZWVkX21vcmVfcmVxdWVzdHMnIHNldC4KKyAgICAgICAg
KiBwdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBocDogU2V0ICdpbml0aWFsX3Jl
cGV0aXRpb25fY291bnQnIHRvIHJlcGV0aXRpb24gY291bnQuCisgICAgICAgICogcHVibGljL3By
aXZpbGVnZWQtYXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocDogQWRkZWQgQVBJcyB0byBhZGQgYnVp
bGQgcmVxdWVzdCBmb3IgYSB0ZXN0IGdyb3VwIGFuZAorICAgICAgICB1cGRhdGUgJ21heV9uZWVk
X21vcmVfcmVxdWVzdHMnIGZsYWcuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LWdy
b3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKTogQWRkZWQgJ19tYXlOZWVkTW9yZVJlcXVlc3Rz
JyBhbmQgJ19pbml0aWFsUmVwZXRpdGlvbkNvdW50JyBmaWVsZC4KKyAgICAgICAgUmVmYWN0b3Jl
ZCBjb2RlIHRoYXQgaW50ZXJhY3RzIHdpdGggJy9hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLgorICAg
ICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS51cGRhdGVTaW5nbGV0b24pOgorICAgICAgICAoVGVz
dEdyb3VwLnByb3RvdHlwZS5tYXlOZWVkTW9yZVJlcXVlc3RzKToKKyAgICAgICAgKFRlc3RHcm91
cC5wcm90b3R5cGUuaW5pdGlhbFJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChUZXN0R3JvdXAu
cHJvdG90eXBlLmFzeW5jLl91cGRhdGVCdWlsZFJlcXVlc3QpOgorICAgICAgICAoVGVzdEdyb3Vw
LnByb3RvdHlwZS51cGRhdGVOYW1lKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUudXBk
YXRlSGlkZGVuRmxhZyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jLmRpZFNl
bmROb3RpZmljYXRpb24pOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5hc3luYy5hZGRN
b3JlQnVpbGRSZXF1ZXN0cyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmFzeW5jLmNs
ZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVlc3RzKTogQWRkZWQgQVBJIHRvIGNsZWFyICdtYXlfbmVl
ZF9tb3JlX3JlcXVlc3RzJyBmbGFnLgorICAgICAgICAoVGVzdEdyb3VwLmZldGNoQWxsUmVhZHlG
b3JGdXJ0aGVyUHJvY2Vzc2luZyk6IFJlZmFjdG9yZWQgJ1Rlc3RHcm91cC5mZXRjaEFsbFdpdGhO
b3RpZmljYXRpb25SZWFkeScgdG8gcmV0dXJuIHRlc3QgZ3JvdXBzIGVpdGhlcgorICAgICAgICBo
YXZlICduZWVkc19ub3RpZmljYXRpb24nIG9yICAnbWF5X25lZWRfbW9yZV9yZXF1ZXN0cycgc2V0
LgorICAgICAgICAoVGVzdEdyb3VwLmZldGNoQWxsVGhhdE1heU5lZWRNb3JlUmVxdWVzdHMpOiBG
ZXRjaGVzIHRlc3QgZ3JvdXBzIHRob3NlIG1heSBuZWVkIG1vcmUgYnVpbGQgcmVxdWVzdHMuCisg
ICAgICAgICogc2VydmVyLXRlc3RzL2FwaS10ZXN0LWdyb3Vwcy5qczogQWRkZWQgdW5pdCB0ZXN0
cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktYWRkLWJ1aWxkLXJlcXVl
c3RzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzIGZvciAnYWRkLWJ1aWxkLXJlcXVlc3RzJyBB
UEkuCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0LWdy
b3VwLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvbW9jay1kYXRhLmpzOgorICAgICAgICAoTW9ja0RhdGEuYWRkTW9ja0RhdGEpOgor
ICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanM6CisgICAgICAg
IChUZXN0U2VydmVyLnByb3RvdHlwZS5fZGV0ZXJtaW5lUGdzcWxEaXJlY3RvcnkpOiBGaXhlZCBh
IGJ1ZyB0aGF0ICdjaGlsZFByb2Nlc3MuZXhlY0ZpbGVTeW5jJyBtYXkgcmV0dXJuIGEgYnVmZmVy
LgorICAgICAgICAqIHRvb2xzL3J1bi1hbmFseXNpcy5qczogQWRkZWQgbG9naWMgdG8gYWRkIGV4
dHJhIGJ1aWxkIHJlcXVlc3QgYmVmb3JlIHNlbm5kaW5nIG5vdGlmaWNhdGlvbi4KKyAgICAgICAg
KiB0b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanM6CisgICAgICAgIChhc3lu
Yy5jcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVx
dWVzdHMpOiBNb2R1bGUgdGhhdCBhZGQgZXh0cmEgYnVpbGQgcmVxdWVzdHMuCisgICAgICAgICog
dW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6IEFkZGVkLgor
ICAgICAgICAqIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVz
dHMuCisKIDIwMTgtMDktMjEgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBhY2hlIGNhbiByZXR1cm4gYSBjb3JydXB0IG1hbmlmZXN0IGZpbGUgd2hpbGUgTWFu
aWZlc3RHZW5lcmF0b3I6OnN0b3JlIGlzIHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9pbml0LWRhdGFiYXNlLnNxbAppbmRleCA5MTMyNDBhODI2OTc5M2Q2YTNiYTAzZjM0OTVlMTIy
YWUxYTlmY2FhLi44MTYxZWZlM2UyODFlMzRhMGRjNDRlZGI4MGNhYjZjM2JiYzM3YmE2IDEwMDY0
NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCkBAIC0yODEsNiArMjgx
LDggQEAgQ1JFQVRFIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICB0ZXN0Z3JvdXBf
aGlkZGVuIGJvb2xlYW4gTk9UIE5VTEwgREVGQVVMVCBGQUxTRSwKICAgICB0ZXN0Z3JvdXBfbmVl
ZHNfbm90aWZpY2F0aW9uIGJvb2xlYW4gTk9UIE5VTEwgREVGQVVMVCBGQUxTRSwKICAgICB0ZXN0
Z3JvdXBfbm90aWZpY2F0aW9uX3NlbnRfYXQgdGltZXN0YW1wIERFRkFVTFQgTlVMTCwKKyAgICB0
ZXN0Z3JvdXBfaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50IGludGVnZXIgTk9UIE5VTEwsCisgICAg
dGVzdGdyb3VwX21heV9uZWVkX21vcmVfcmVxdWVzdHMgYm9vbGVhbiBERUZBVUxUIEZBTFNFLAog
ICAgIENPTlNUUkFJTlQgdGVzdGdyb3VwX25hbWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFz
ayBVTklRVUUodGVzdGdyb3VwX3Rhc2ssIHRlc3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVgg
dGVzdGdyb3VwX3Rhc2tfaW5kZXggT04gYW5hbHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rh
c2spOwogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9i
dWlsZC1yZXF1ZXN0cy5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9i
dWlsZC1yZXF1ZXN0cy5waHAKaW5kZXggNWNhZWVlNjQ1YTkxOGExNmZiZTlkYWJlMjkxYTExNTY0
MzMxZDY4Ny4uNWE0ZTA5MDkwYzVjOGQxNzUyNGI0MTZkODNjNzM2MWFhMTc0MjRjMiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMu
cGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2J1aWxkLXJlcXVl
c3RzLnBocApAQCAtNDEsMTIgKzQxLDEzIEBAIGZ1bmN0aW9uIG1haW4oJGlkLCAkcGF0aCwgJHBv
c3RfZGF0YSkgewogCiBmdW5jdGlvbiB1cGRhdGVfYnVpbGRzKCRkYiwgJHVwZGF0ZXMpIHsKICAg
ICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CisgICAgJHRlc3RfZ3JvdXBzX21heV9uZWVkX21v
cmVfcmVxdWVzdHMgPSBhcnJheSgpOwogICAgIGZvcmVhY2ggKCR1cGRhdGVzIGFzICRpZCA9PiAk
aW5mbykgewogICAgICAgICAkaWQgPSBpbnR2YWwoJGlkKTsKICAgICAgICAgJHN0YXR1cyA9ICRp
bmZvWydzdGF0dXMnXTsKICAgICAgICAgJHVybCA9IGFycmF5X2dldCgkaW5mbywgJ3VybCcpOwor
ICAgICAgICAkcmVxdWVzdF9yb3cgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1aWxkX3JlcXVl
c3RzJywgJ3JlcXVlc3QnLCBhcnJheSgnaWQnID0+ICRpZCkpOwogICAgICAgICBpZiAoJHN0YXR1
cyA9PSAnZmFpbGVkSWZOb3RDb21wbGV0ZWQnKSB7Ci0gICAgICAgICAgICAkcmVxdWVzdF9yb3cg
PSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJh
eSgnaWQnID0+ICRpZCkpOwogICAgICAgICAgICAgaWYgKCEkcmVxdWVzdF9yb3cpIHsKICAgICAg
ICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CiAgICAgICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZpbmRCdWlsZFJlcXVlc3QnLCBhcnJheSgnYnVpbGRS
ZXF1ZXN0JyA9PiAkaWQpKTsKQEAgLTYwLDEzICs2MSwyMiBAQCBmdW5jdGlvbiB1cGRhdGVfYnVp
bGRzKCRkYiwgJHVwZGF0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJHJlcXVlc3Rf
cm93WydyZXF1ZXN0X2dyb3VwJ10sICRyZXF1ZXN0X3Jvd1sncmVxdWVzdF9vcmRlciddKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAkZGItPnVwZGF0ZV9yb3coJ2J1aWxkX3JlcXVlc3Rz
JywgJ3JlcXVlc3QnLCBhcnJheSgnaWQnID0+ICRpZCksIGFycmF5KCdzdGF0dXMnID0+ICdmYWls
ZWQnLCAndXJsJyA9PiAkdXJsKSk7CisgICAgICAgICAgICAkdGVzdF9ncm91cF9pZCA9ICRyZXF1
ZXN0X3Jvd1sncmVxdWVzdF9ncm91cCddOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKCFpbl9hcnJheSgkc3RhdHVzLCBhcnJheSgncGVuZGluZycsICdzY2hlZHVsZWQnLCAncnVu
bmluZycsICdmYWlsZWQnLCAnY29tcGxldGVkJywgJ2NhbmNlbGVkJykpKSB7CiAgICAgICAgICAg
ICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigpOwogICAgICAgICAgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignVW5rbm93bkJ1aWxkUmVxdWVzdFN0YXR1cycsIGFycmF5KCdidWlsZFJlcXVl
c3QnID0+ICRpZCwgJ3N0YXR1cycgPT4gJHN0YXR1cykpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgJGRiLT51cGRhdGVfcm93KCdidWlsZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJyYXko
J2lkJyA9PiAkaWQpLCBhcnJheSgnc3RhdHVzJyA9PiAkc3RhdHVzLCAndXJsJyA9PiAkdXJsKSk7
CisgICAgICAgICAgICAkdGVzdF9ncm91cF9pZCA9ICRyZXF1ZXN0X3Jvd1sncmVxdWVzdF9ncm91
cCddOworICAgICAgICAgICAgaWYgKCRzdGF0dXMgIT0gJ2ZhaWxlZCcpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHRl
c3RfZ3JvdXBfaWQsICR0ZXN0X2dyb3Vwc19tYXlfbmVlZF9tb3JlX3JlcXVlc3RzKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICRkYi0+dXBkYXRlX3JvdygnYW5hbHlzaXNfdGVz
dF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkdGVzdF9ncm91cF9pZCksIGFy
cmF5KCdtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJyA9PiBUUlVFKSk7CisgICAgICAgICR0ZXN0X2dy
b3Vwc19tYXlfbmVlZF9tb3JlX3JlcXVlc3RzWyRyZXF1ZXN0X3Jvd1sncmVxdWVzdF9ncm91cCdd
XSA9IFRSVUU7CiAgICAgfQogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5w
aHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAK
aW5kZXggZTc2YTI0YTk3MGViMjQ0OTRmOWEzYjNkOWE3MDQxMjdjMDhlZmIyNi4uMDMxYTVjNGFi
OTg3Yjc5MzI2YzgxMjIwMzBmZGRlOWRjYjQ5NzYyMCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocApAQCAtMjksNiArMjksMTYg
QEAgZnVuY3Rpb24gbWFpbigkcGF0aCkgewogICAgICAgICAgICAgICAgICAgICBBTkQgcmVxdWVz
dF9zdGF0dXMgSU4gKCdwZW5kaW5nJywgJ3NjaGVkdWxlZCcsICdydW5uaW5nJywgJ2NhbmNlbGVk
JykpIElTIEZBTFNFCiAgICAgICAgICAgICAgICAgICAgIEFORCB0ZXN0Z3JvdXBfbmVlZHNfbm90
aWZpY2F0aW9uIElTIFRSVUUgQU5EIHRlc3Rncm91cF9oaWRkZW4gSVMgRkFMU0UiKTsKIAorICAg
ICAgICBpZiAoIWNvdW50KCR0ZXN0X2dyb3VwcykpIHsKKyAgICAgICAgICAgIGV4aXRfd2l0aF9z
dWNjZXNzKGFycmF5KCd0ZXN0R3JvdXBzJyA9PiBhcnJheSgpLAorICAgICAgICAgICAgICAgICdi
dWlsZFJlcXVlc3RzJyA9PiBhcnJheSgpLAorICAgICAgICAgICAgICAgICdjb21taXRTZXRzJyA9
PiBhcnJheSgpLAorICAgICAgICAgICAgICAgICdjb21taXRzJyA9PiBhcnJheSgpLAorICAgICAg
ICAgICAgICAgICd1cGxvYWRlZEZpbGVzJyA9PiBhcnJheSgpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPmZldGNoX3JlcXVlc3RzX2Zvcl9ncm91cHMoJHRl
c3RfZ3JvdXBzKTsKKyAgICB9IGVsc2VpZiAoJHBhdGhbMF0gPT0gJ25lZWQtbW9yZS1yZXF1ZXN0
cycpIHsKKyAgICAgICAgJHRlc3RfZ3JvdXBzID0gJGRiLT5zZWxlY3Rfcm93cygnYW5hbHlzaXNf
dGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoImhpZGRlbiIgPT4gRkFMU0UsICJtYXlf
bmVlZF9tb3JlX3JlcXVlc3RzIiA9PiBUUlVFKSk7CiAgICAgICAgIGlmICghY291bnQoJHRlc3Rf
Z3JvdXBzKSkgewogICAgICAgICAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3Rlc3RHcm91
cHMnID0+IGFycmF5KCksCiAgICAgICAgICAgICAgICAgJ2J1aWxkUmVxdWVzdHMnID0+IGFycmF5
KCksCkBAIC04Miw2ICs5Miw4IEBAIGZ1bmN0aW9uIGZvcm1hdF90ZXN0X2dyb3VwKCRncm91cF9y
b3cpIHsKICAgICAgICAgJ25vdGlmaWNhdGlvblNlbnRBdCcgPT4gRGF0YWJhc2U6OnRvX2pzX3Rp
bWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX25vdGlmaWNhdGlvbl9zZW50X2F0J10pLAogICAgICAg
ICAnaGlkZGVuJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfaGlk
ZGVuJ10pLAogICAgICAgICAnbmVlZHNOb3RpZmljYXRpb24nID0+IERhdGFiYXNlOjppc190cnVl
KCRncm91cF9yb3dbJ3Rlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24nXSksCisgICAgICAgICdt
YXlOZWVkTW9yZVJlcXVlc3RzJyA9PiBEYXRhYmFzZTo6aXNfdHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0
Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddKSwKKyAgICAgICAgJ2luaXRpYWxSZXBldGl0
aW9uQ291bnQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9pbml0aWFsX3JlcGV0aXRpb25fY291
bnQnXSwKICAgICAgICAgJ2J1aWxkUmVxdWVzdHMnID0+IGFycmF5KCksCiAgICAgICAgICdjb21t
aXRTZXRzJyA9PiBhcnJheSgpLAogICAgICk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVycy5waHAK
aW5kZXggYmVjN2Q0ODZmMmIwN2FlZDM2ZGQyZTJiZmUyN2I3MTA5OTQzYTY0My4uZTg1MzBhNmJi
NzFlNDJjZmYyOGNlMzE5YzhiNTg1ZTYyZGQyM2YxYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxw
ZXJzLnBocApAQCAtOSw3ICs5LDcgQEAgZnVuY3Rpb24gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1
aWxkX3JlcXVlc3RzKCRkYiwgJGNvbW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUKICAgICBsaXN0
ICgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0LCAkdGVzdF9jb25maWd1cmF0aW9uX2xpc3QpID0g
aW5zZXJ0X2NvbW1pdF9zZXRzX2FuZF9jb25zdHJ1Y3RfY29uZmlndXJhdGlvbl9saXN0KCRkYiwg
JGNvbW1pdF9zZXRzKTsKIAogICAgICRncm91cF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlz
aXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywKLSAgICAgICAgYXJyYXkoJ3Rhc2snID0+ICR0
YXNrX2lkLCAnbmFtZScgPT4gJG5hbWUsICdhdXRob3InID0+ICRhdXRob3IsICduZWVkc19ub3Rp
ZmljYXRpb24nID0+ICRuZWVkc19ub3RpZmljYXRpb24pKTsKKyAgICAgICAgYXJyYXkoJ3Rhc2sn
ID0+ICR0YXNrX2lkLCAnbmFtZScgPT4gJG5hbWUsICdhdXRob3InID0+ICRhdXRob3IsICduZWVk
c19ub3RpZmljYXRpb24nID0+ICRuZWVkc19ub3RpZmljYXRpb24sICdpbml0aWFsX3JlcGV0aXRp
b25fY291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKICAgICAkYnVpbGRfY291bnQgPSBj
b3VudCgkYnVpbGRfY29uZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxkX2Nv
dW50OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNkYWQyZTU4OGQ4NzYxOWE3ZjJhMDlmZGRiYWY0YWYyMTZiNTc0ZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2FkZC1i
dWlsZC1yZXF1ZXN0cy5waHAKQEAgLTAsMCArMSw2MiBAQAorPD9waHAKKworcmVxdWlyZV9vbmNl
KCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBocCcpOworcmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRl
L2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwJyk7CisKK2Z1bmN0aW9uIG1haW4oKSB7CisgICAgJGRi
ID0gY29ubmVjdCgpOworICAgICRkYXRhID0gZW5zdXJlX3ByaXZpbGVnZWRfYXBpX2RhdGFfYW5k
X3Rva2VuX29yX3NsYXZlKCRkYik7CisKKyAgICAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2Nv
dW50ID0gYXJyYXlfZ2V0KCRkYXRhLCAnY291bnQnKTsKKyAgICBpZiAoISRhZGRpdGlvbmFsX2J1
aWxkX3JlcXVlc3RfY291bnQpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmVxdWVzdENvdW50
Tm90U3BlY2lmaWVkJyk7CisKKyAgICAkdGVzdF9ncm91cF9pZCA9IGFycmF5X2dldCgkZGF0YSwg
J2dyb3VwJyk7CisgICAgaWYgKCEkdGVzdF9ncm91cF9pZCkKKyAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdUZXN0R3JvdXBOb3RTcGVjaWZpZWQnKTsKKworICAgICR0ZXN0X2dyb3VwID0gJGRiLT5z
ZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190ZXN0X2dyb3VwcycsICd0ZXN0Z3JvdXAnLCBhcnJh
eSgnaWQnID0+ICR0ZXN0X2dyb3VwX2lkKSk7CisgICAgaWYgKCEkdGVzdF9ncm91cCkKKyAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkVGVzdEdyb3VwJyk7CisKKyAgICBpZiAoRGF0YWJh
c2U6OmlzX3RydWUoJHRlc3RfZ3JvdXBbJ3Rlc3Rncm91cF9oaWRkZW4nXSkpCisgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignQ2Fubm90QWRkVG9IaWRkZW5UZXN0R3JvdXAnKTsKKworICAgICRleGlz
dGluZ19idWlsZF9yZXF1ZXN0cyA9ICRkYi0+c2VsZWN0X3Jvd3MoJ2J1aWxkX3JlcXVlc3RzJywg
J3JlcXVlc3QnLCBhcnJheSgnZ3JvdXAnID0+ICR0ZXN0X2dyb3VwX2lkKSwgJ29yZGVyJyk7CisK
KyAgICAkY3VycmVudF9vcmRlciA9ICRleGlzdGluZ19idWlsZF9yZXF1ZXN0c1tjb3VudCgkZXhp
c3RpbmdfYnVpbGRfcmVxdWVzdHMpIC0gMV1bJ3JlcXVlc3Rfb3JkZXInXTsKKyAgICBpZiAoJGN1
cnJlbnRfb3JkZXIgPCAwKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ05vVGVzdGluZ0J1aWxk
UmVxdWVzdHMnKTsKKworICAgICRjb21taXRfc2V0cyA9IGFycmF5KCk7CisgICAgJGJ1aWxkX3Jl
cXVlc3RfYnlfY29tbWl0X3NldCA9IGFycmF5KCk7CisgICAgZm9yZWFjaCAoJGV4aXN0aW5nX2J1
aWxkX3JlcXVlc3RzIGFzICRidWlsZF9yZXF1ZXN0KSB7CisgICAgICAgIGlmICgkYnVpbGRfcmVx
dWVzdFsncmVxdWVzdF9vcmRlciddIDwgMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAkcmVxdWVzdGVkX2NvbW1pdF9zZXQgPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J107CisgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRyZXF1ZXN0ZWRfY29tbWl0X3Nl
dCwgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgJGJ1aWxkX3JlcXVlc3RfYnlfY29tbWl0X3NldFskcmVxdWVzdGVkX2NvbW1pdF9z
ZXRdID0gJGJ1aWxkX3JlcXVlc3Q7CisgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRzLCAk
cmVxdWVzdGVkX2NvbW1pdF9zZXQpOworICAgIH0KKworICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rp
b24oKTsKKyAgICBmb3IgKCRpID0gMDsgJGkgPCAkYWRkaXRpb25hbF9idWlsZF9yZXF1ZXN0X2Nv
dW50OyAkaSsrKSB7CisgICAgICAgIGZvcmVhY2goJGNvbW1pdF9zZXRzIGFzICRjb21taXRfc2V0
KSB7CisgICAgICAgICAgICAkYnVpbGRfcmVxdWVzdCA9ICRidWlsZF9yZXF1ZXN0X2J5X2NvbW1p
dF9zZXRbJGNvbW1pdF9zZXRdOworICAgICAgICAgICAgJGNvbmZpZ3VyYXRpb24gPSBhcnJheSgp
OworICAgICAgICAgICAgJGNvbmZpZ3VyYXRpb25bJ3JlcG9zaXRvcnlfZ3JvdXAnXSA9ICRidWls
ZF9yZXF1ZXN0WydyZXF1ZXN0X3JlcG9zaXRvcnlfZ3JvdXAnXTsKKyAgICAgICAgICAgICRjb25m
aWd1cmF0aW9uWydjb21taXRfc2V0J10gPSAkYnVpbGRfcmVxdWVzdFsncmVxdWVzdF9jb21taXRf
c2V0J107CisgICAgICAgICAgICBpbnNlcnRfYnVpbGRfcmVxdWVzdF9mb3JfY29uZmlndXJhdGlv
bigkZGIsICRjb25maWd1cmF0aW9uLCArKyRjdXJyZW50X29yZGVyLCAkYnVpbGRfcmVxdWVzdFsn
cmVxdWVzdF90cmlnZ2VyYWJsZSddLAorICAgICAgICAgICAgICAgICRidWlsZF9yZXF1ZXN0Wydy
ZXF1ZXN0X3BsYXRmb3JtJ10sICRidWlsZF9yZXF1ZXN0WydyZXF1ZXN0X3Rlc3QnXSwgJGJ1aWxk
X3JlcXVlc3RbJ3JlcXVlc3RfZ3JvdXAnXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgJGRiLT51
cGRhdGVfcm93KCdhbmFseXNpc190ZXN0X2dyb3VwcycsICd0ZXN0Z3JvdXAnLCBhcnJheSgnaWQn
ID0+ICR0ZXN0X2dyb3VwX2lkKSwgYXJyYXkoJ21heV9uZWVkX21vcmVfcmVxdWVzdHMnID0+IEZB
TFNFKSk7CisgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKKworICAgIGV4aXRfd2l0aF9z
dWNjZXNzKCk7Cit9CisKK21haW4oKTsKKworPz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQt
YXBpL3VwZGF0ZS10ZXN0LWdyb3VwLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCmluZGV4IGFkMTc1NWZlZDI2
MjFhNDY0MmZjMDdkMzMyNDU0MDc5ZTcyZDcxNWUuLjU5MTVhMzAxOThkYTJiNmY3MWNjZjQ2OWJi
YjRlMzZiNDQwMDBiZWUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhwCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAucGhw
CkBAIC0xNSw4ICsxNSwxMyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgIGlmIChhcnJheV9rZXlf
ZXhpc3RzKCduYW1lJywgJGRhdGEpKQogICAgICAgICAkdmFsdWVzWyduYW1lJ10gPSAkZGF0YVsn
bmFtZSddOwogCi0gICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hpZGRlbicsICRkYXRhKSkKKyAg
ICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnaGlkZGVuJywgJGRhdGEpKSB7CiAgICAgICAgICR2YWx1
ZXNbJ2hpZGRlbiddID0gRGF0YWJhc2U6OnRvX2RhdGFiYXNlX2Jvb2xlYW4oJGRhdGFbJ2hpZGRl
biddKTsKKyAgICAgICAgJHZhbHVlc1snbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyddID0gRkFMU0U7
CisgICAgfQorCisgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ21heU5lZWRNb3JlUmVxdWVzdHMn
LCAkZGF0YSkpCisgICAgICAgICAkdmFsdWVzWydtYXlfbmVlZF9tb3JlX3JlcXVlc3RzJ10gPSAk
ZGF0YVsnbWF5TmVlZE1vcmVSZXF1ZXN0cyddOwogCiAgICAgJGhhc19uZWVkc19ub3RpZmljYXRp
b25fZmllbGQgPSBhcnJheV9rZXlfZXhpc3RzKCduZWVkc05vdGlmaWNhdGlvbicsICRkYXRhKTsK
ICAgICAkaGFzX25vdGlmaWNhdGlvbl9zZW50X2F0X2ZpZWxkID0gYXJyYXlfa2V5X2V4aXN0cygn
bm90aWZpY2F0aW9uU2VudEF0JywgJGRhdGEpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMKaW5kZXggY2M4
NjA5YjY2MjVlM2Q5OTQ3OGE4NDE2ZTlkNmFlZmQ4MjdlMGM1Yi4uMDcwNTRhZTgzNmFlMGEwYjY2
NDJmZTBiODk5MDM4ODg2M2RmNTk5ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCkBAIC01OCw2ICs1
OCw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAKICAg
ICBzdGF0dXMoKSB7IHJldHVybiB0aGlzLl9zdGF0dXM7IH0KICAgICBoYXNGaW5pc2hlZCgpIHsg
cmV0dXJuIHRoaXMuX3N0YXR1cyA9PSAnZmFpbGVkJyB8fCB0aGlzLl9zdGF0dXMgPT0gJ2NvbXBs
ZXRlZCcgfHwgdGhpcy5fc3RhdHVzID09ICdjYW5jZWxlZCc7IH0KKyAgICBoYXNGYWlsZWQoKSB7
IHJldHVybiB0aGlzLl9zdGF0dXMgPT0gJ2ZhaWxlZCc7IH0KICAgICBoYXNDb21wbGV0ZWQoKSB7
IHJldHVybiB0aGlzLl9zdGF0dXMgPT0gJ2NvbXBsZXRlZCc7IH0KICAgICBoYXNTdGFydGVkKCkg
eyByZXR1cm4gdGhpcy5fc3RhdHVzICE9ICdwZW5kaW5nJzsgfQogICAgIGlzU2NoZWR1bGVkKCkg
eyByZXR1cm4gdGhpcy5fc3RhdHVzID09ICdzY2hlZHVsZWQnOyB9CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwppbmRl
eCA0YWM0M2I0Mjk3OGJjYWNlZTMzOTc5MDRlZWI2Zjc3ZDdmZWI5ZDRmLi4yNmFhYWU4Yzg2ZTNm
OTZjY2IzYzUwNTE1OGVkNGEwN2Q4MmU4MzNjIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKQEAgLTEwLDYgKzEw
LDggQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRo
aXMuX2NyZWF0ZWRBdCA9IG5ldyBEYXRlKG9iamVjdC5jcmVhdGVkQXQpOwogICAgICAgICB0aGlz
Ll9pc0hpZGRlbiA9IG9iamVjdC5oaWRkZW47CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0
aW9uID0gb2JqZWN0Lm5lZWRzTm90aWZpY2F0aW9uOworICAgICAgICB0aGlzLl9tYXlOZWVkTW9y
ZVJlcXVlc3RzID0gb2JqZWN0Lm1heU5lZWRNb3JlUmVxdWVzdHM7CisgICAgICAgIHRoaXMuX2lu
aXRpYWxSZXBldGl0aW9uQ291bnQgPSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKICAg
ICAgICAgdGhpcy5fYnVpbGRSZXF1ZXN0cyA9IFtdOwogICAgICAgICB0aGlzLl9vcmRlckJ1aWxk
UmVxdWVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmJ1aWxkUmVx
dWVzdHMpID0+IHsKICAgICAgICAgICAgIHJldHVybiBidWlsZFJlcXVlc3RzLnNvcnQoKGEsIGIp
ID0+IGEub3JkZXIoKSAtIGIub3JkZXIoKSk7CkBAIC0zMyw2ICszNSw4IEBAIGNsYXNzIFRlc3RH
cm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICB0aGlzLl9pc0hpZGRlbiA9IG9i
amVjdC5oaWRkZW47CiAgICAgICAgIHRoaXMuX25lZWRzTm90aWZpY2F0aW9uID0gb2JqZWN0Lm5l
ZWRzTm90aWZpY2F0aW9uOwogICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZW50QXQgPSBvYmpl
Y3Qubm90aWZpY2F0aW9uU2VudEF0ID8gbmV3IERhdGUob2JqZWN0Lm5vdGlmaWNhdGlvblNlbnRB
dCkgOiBudWxsOworICAgICAgICB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzID0gb2JqZWN0Lm1h
eU5lZWRNb3JlUmVxdWVzdHM7CisgICAgICAgIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQg
PSBvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKICAgICB9CiAKICAgICB0YXNrKCkgeyBy
ZXR1cm4gQW5hbHlzaXNUYXNrLmZpbmRCeUlkKHRoaXMuX3Rhc2tJZCk7IH0KQEAgLTQwLDYgKzQ0
LDggQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgaXNIaWRk
ZW4oKSB7IHJldHVybiB0aGlzLl9pc0hpZGRlbjsgfQogICAgIGJ1aWxkUmVxdWVzdHMoKSB7IHJl
dHVybiB0aGlzLl9idWlsZFJlcXVlc3RzOyB9CiAgICAgbmVlZHNOb3RpZmljYXRpb24oKSB7IHJl
dHVybiB0aGlzLl9uZWVkc05vdGlmaWNhdGlvbjsgfQorICAgIG1heU5lZWRNb3JlUmVxdWVzdHMo
KSB7IHJldHVybiB0aGlzLl9tYXlOZWVkTW9yZVJlcXVlc3RzOyB9CisgICAgaW5pdGlhbFJlcGV0
aXRpb25Db3VudCgpIHsgcmV0dXJuIHRoaXMuX2luaXRpYWxSZXBldGl0aW9uQ291bnQ7IH0KICAg
ICBub3RpZmljYXRpb25TZW50QXQoKSB7IHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25TZW50QXQ7
IH0KICAgICBhdXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRob3JOYW1lOyB9CiAgICAgYWRkQnVp
bGRSZXF1ZXN0KHJlcXVlc3QpCkBAIC0xOTAsNDIgKzE5Niw1MiBAQCBjbGFzcyBUZXN0R3JvdXAg
ZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
KyAgICBhc3luYyBfdXBkYXRlQnVpbGRSZXF1ZXN0KGNvbnRlbnQsIGVuZFBvaW50PSd1cGRhdGUt
dGVzdC1ncm91cCcpCisgICAgeworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KGVuZFBvaW50LCBjb250ZW50KTsKKyAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFRlc3RH
cm91cC5jYWNoZWRGZXRjaChgL2FwaS90ZXN0LWdyb3Vwcy8ke3RoaXMuaWQoKX1gLCB7fSwgdHJ1
ZSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVz
dEdyb3VwcyhkYXRhKTsKKyAgICB9CisKICAgICB1cGRhdGVOYW1lKG5ld05hbWUpCiAgICAgewot
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBpZCA9IHRoaXMuaWQoKTsKLSAg
ICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3Vw
JywgewotICAgICAgICAgICAgZ3JvdXA6IGlkLAorICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRl
QnVpbGRSZXF1ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAg
ICBuYW1lOiBuZXdOYW1lLAotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNhY2hlZEZldGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7
aWR9YCwge30sIHRydWUpCi0gICAgICAgICAgICAgICAgLnRoZW4oVGVzdEdyb3VwLl9jcmVhdGVN
b2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZChUZXN0R3JvdXApKTsKICAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgdXBkYXRlSGlkZGVuRmxhZyhoaWRkZW4pCiAgICAgewotICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBpZCA9IHRoaXMuaWQoKTsKLSAgICAgICAgcmV0
dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywgewotICAg
ICAgICAgICAgZ3JvdXA6IGlkLAorICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlQnVpbGRSZXF1
ZXN0KHsKKyAgICAgICAgICAgIGdyb3VwOiB0aGlzLmlkKCksCiAgICAgICAgICAgICBoaWRkZW46
ICEhaGlkZGVuLAotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdEdyb3VwLmNhY2hlZEZldGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7aWR9YCwg
e30sIHRydWUpCi0gICAgICAgICAgICAgICAgLnRoZW4oVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNG
cm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZChUZXN0R3JvdXApKTsKICAgICAgICAgfSk7CiAgICAg
fQogCiAgICAgYXN5bmMgZGlkU2VuZE5vdGlmaWNhdGlvbigpCiAgICAgewotICAgICAgICBjb25z
dCBpZCA9IHRoaXMuaWQoKTsKLSAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Ci0gICAgICAgICAgICBncm91cDogaWQsCisgICAgICAg
IHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJlcXVlc3QoeworICAgICAgICAgICAgZ3Jv
dXA6IHRoaXMuaWQoKSwKICAgICAgICAgICAgIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwKICAg
ICAgICAgICAgIG5vdGlmaWNhdGlvblNlbnRBdDogKG5ldyBEYXRlKS50b0lTT1N0cmluZygpCiAg
ICAgICAgIH0pOwotICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgVGVzdEdyb3VwLmNhY2hlZEZl
dGNoKGAvYXBpL3Rlc3QtZ3JvdXBzLyR7aWR9YCwge30sIHRydWUpOwotICAgICAgICByZXR1cm4g
VGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAg
fQorCisgICAgYXN5bmMgYWRkTW9yZUJ1aWxkUmVxdWVzdHMoY291bnQpCisgICAgeworICAgICAg
ICByZXR1cm4gYXdhaXQgdGhpcy5fdXBkYXRlQnVpbGRSZXF1ZXN0KHsKKyAgICAgICAgICAgIGdy
b3VwOiB0aGlzLmlkKCksCisgICAgICAgICAgICBjb3VudCwKKyAgICAgICAgfSwgJ2FkZC1idWls
ZC1yZXF1ZXN0cycpOworICAgIH0KKworICAgIGFzeW5jIGNsZWFyTWF5TmVlZE1vcmVCdWlsZFJl
cXVlc3RzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl91cGRhdGVCdWlsZFJl
cXVlc3QoeworICAgICAgICAgICAgZ3JvdXA6IHRoaXMuaWQoKSwKKyAgICAgICAgICAgIG1heU5l
ZWRNb3JlUmVxdWVzdHM6IGZhbHNlCisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBj
cmVhdGVXaXRoVGFzayh0YXNrTmFtZSwgcGxhdGZvcm0sIHRlc3QsIGdyb3VwTmFtZSwgcmVwZXRp
dGlvbkNvdW50LCBjb21taXRTZXRzLCBub3RpZnlPbkNvbXBsZXRpb24pCkBAIC0yNzgsNiArMjk0
LDExIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICBy
ZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90ZXN0LWdyb3Vwcy9yZWFkeS1mb3Itbm90aWZp
Y2F0aW9uJywgbnVsbCwgdHJ1ZSkudGhlbih0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRl
c3RHcm91cHMuYmluZCh0aGlzKSk7CiAgICAgfQogCisgICAgc3RhdGljIGZldGNoQWxsVGhhdE1h
eU5lZWRNb3JlUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0
Y2goJy9hcGkvdGVzdC1ncm91cHMvbmVlZC1tb3JlLXJlcXVlc3RzJywgbnVsbCwgdHJ1ZSkudGhl
bih0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZCh0aGlzKSk7Cisg
ICAgfQorCiAgICAgc3RhdGljIF9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0
YSkKICAgICB7CiAgICAgICAgIHZhciB0ZXN0R3JvdXBzID0gZGF0YVsndGVzdEdyb3VwcyddLm1h
cChmdW5jdGlvbiAocm93KSB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FwaS10ZXN0LWdyb3Vwcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvYXBpLXRlc3QtZ3JvdXBzLmpzCmluZGV4IGE2YzY3NmFiY2MxZGU3NGM2
ZWM5ZThkYmM1NmYyNzg4MGNhZmVlNjMuLmMwMTlhNDJkYjE3MjQxMjE5MzI1ODgyNTBlYjkzNTkw
MTExZDk0ZjkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvYXBpLXRlc3QtZ3JvdXBzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvYXBpLXRlc3QtZ3JvdXBzLmpzCkBAIC02LDEwICs2LDkgQEAgY29uc3QgVGVzdFNl
cnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzJyk7CiBjb25zdCBwcmVw
YXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpz
JykucHJlcGFyZVNlcnZlclRlc3Q7CiAKIGRlc2NyaWJlKCcvYXBpL3Rlc3QtZ3JvdXBzJywgZnVu
Y3Rpb24gKCkgewotICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOworICAgIHByZXBhcmVTZXJ2
ZXJUZXN0KHRoaXMsICdub2RlJyk7CiAKICAgICBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3Vwcy9y
ZWFkeS1mb3Itbm90aWZpY2F0aW9uJywgKCkgPT4gewotCiAgICAgICAgIGl0KCdzaG91bGQgZ2l2
ZSBhbiBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vdCBleGlzdGluZyB0ZXN0IGdyb3VwIGF0IGFs
bCcsIGFzeW5jICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91cHMvcmVhZHktZm9yLW5v
dGlmaWNhdGlvbicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQuc3RhdHVzLCAn
T0snKTsKQEAgLTg1LDQgKzg0LDEwNSBAQCBkZXNjcmliZSgnL2FwaS90ZXN0LWdyb3VwcycsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudC51cGxvYWRl
ZEZpbGVzLCBbXSk7CiAgICAgICAgIH0pOwogICAgIH0pOworCisgICAgZGVzY3JpYmUoJy9hcGkv
dGVzdC1ncm91cHMvPHRyaWdnZXJhYmxlcz4nLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQg
c2V0ICJ0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgd2hlbiBhIGJ1aWxkIHJlcXVl
c3QgaXMgc2V0IHRvICJmYWlsZWQiIGR1ZSB0byAiZmFpbGVkSWZOb3RDb21wbGV0ZWQiJywgYXN5
bmMgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGF0YWJhc2UgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7CisgICAgICAgICAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYXRhYmFzZSwg
Wydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdydW5uaW5nJ10pOworCisg
ICAgICAgICAgICBsZXQgZGF0YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvdGVzdC1ncm91cHMvNjAwJyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWRhdGFb
J3Rlc3RHcm91cHMnXVswXS5tYXlOZWVkTW9yZVJlcXVlc3RzKTsKKyAgICAgICAgICAgIGF3YWl0
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVp
bGQtd2Via2l0Jywge3NsYXZlTmFtZTogJ3Rlc3QnLCBzbGF2ZVBhc3N3b3JkOiAncGFzc3dvcmQn
LAorICAgICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdFVwZGF0ZXM6IHs3MDM6IHtzdGF0dXM6ICdm
YWlsZWRJZk5vdENvbXBsZXRlZCcsIHVybDogJ2h0dHA6Ly93ZWJraXQub3JnL2J1aWxkLzEnfX19
KTsKKyAgICAgICAgICAgIGRhdGEgPSAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRK
U09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGRhdGFb
J3Rlc3RHcm91cHMnXVswXS5tYXlOZWVkTW9yZVJlcXVlc3RzKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBzZXQgInRlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiB3
aGVuIGEgYnVpbGQgcmVxdWVzdCBpcyBzZXQgdG8gImZhaWxlZCInLCBhc3luYyAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYXRhYmFzZSA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAg
ICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRhdGFiYXNlLCBbJ2NvbXBsZXRlZCcs
ICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1bm5pbmcnXSk7CisKKyAgICAgICAgICAgIGxl
dCBkYXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0
LWdyb3Vwcy82MDAnKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghZGF0YVsndGVzdEdyb3Vwcydd
WzBdLm1heU5lZWRNb3JlUmVxdWVzdHMpOworICAgICAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnLCB7
c2xhdmVOYW1lOiAndGVzdCcsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsCisgICAgICAgICAg
ICAgICAgYnVpbGRSZXF1ZXN0VXBkYXRlczogezcwMzoge3N0YXR1czogJ2ZhaWxlZCcsIHVybDog
J2h0dHA6Ly93ZWJraXQub3JnL2J1aWxkLzEnfX19KTsKKyAgICAgICAgICAgIGRhdGEgPSAgYXdh
aXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMCcp
OworICAgICAgICAgICAgYXNzZXJ0Lm9rKGRhdGFbJ3Rlc3RHcm91cHMnXVswXS5tYXlOZWVkTW9y
ZVJlcXVlc3RzKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBzZXQgInRlc3Rn
cm91cF9tYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiB0byBhbGwgdGVzdCBncm91cHMgdGhvc2UgaGF2
ZSBmYWlsZWQgYnVpbGQgcmVxdWVzdCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRhdGFiYXNlID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgYXdhaXQgTW9j
a0RhdGEuYWRkTW9ja0RhdGEoZGF0YWJhc2UsIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdj
b21wbGV0ZWQnLCAncnVubmluZyddKTsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZEFu
b3RoZXJNb2NrVGVzdEdyb3VwKGRhdGFiYXNlLCBbJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAn
Y29tcGxldGVkJywgJ3J1bm5pbmcnXSwgJ3dlYmtpdCcpOworCisgICAgICAgICAgICBsZXQgZGF0
YSA9ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvdGVzdC1ncm91
cHMvNjAwJyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWRhdGFbJ3Rlc3RHcm91cHMnXVswXS5t
YXlOZWVkTW9yZVJlcXVlc3RzKTsKKyAgICAgICAgICAgIGRhdGEgPSAgYXdhaXQgVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzLzYwMScpOworICAgICAgICAg
ICAgYXNzZXJ0Lm9rKCFkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cyk7
CisKKyAgICAgICAgICAgIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9h
cGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jywge3NsYXZlTmFtZTogJ3Rlc3QnLCBzbGF2
ZVBhc3N3b3JkOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdFVwZGF0
ZXM6IHsKKyAgICAgICAgICAgICAgICAgICAgNzAzOiB7c3RhdHVzOiAnZmFpbGVkJywgdXJsOiAn
aHR0cDovL3dlYmtpdC5vcmcvYnVpbGQvMSd9LAorICAgICAgICAgICAgICAgICAgICA3MTM6IHtz
dGF0dXM6ICdmYWlsZWRJZk5vdENvbXBsZXRlZCcsIHVybDogJ2h0dHA6Ly93ZWJraXQub3JnL2J1
aWxkLzExJ30sCisgICAgICAgICAgICAgICAgfX0pOworCisgICAgICAgICAgICBkYXRhID0gIGF3
YWl0IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDAn
KTsKKyAgICAgICAgICAgIGFzc2VydC5vayhkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZE1v
cmVSZXF1ZXN0cyk7CisgICAgICAgICAgICBkYXRhID0gIGF3YWl0IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS90ZXN0LWdyb3Vwcy82MDEnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5vayhkYXRhWyd0ZXN0R3JvdXBzJ11bMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cyk7CisgICAgICAg
IH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJy9hcGkvdGVzdC1ncm91cHMvbmVlZC1tb3Jl
LXJlcXVlc3RzJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIGxpc3QgYWxsIHRlc3QgZ3Jv
dXBzIHBvdGVudGlhbGx5IG5lZWQgYWRkaXRpb25hbCBidWlsZCByZXF1ZXN0cycsIGFzeW5jICgp
ID0+IHsKKyAgICAgICAgICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0
ZWQnXSwgZmFsc2UpOworICAgICAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5kYXRhYmFzZSgpLnF1
ZXJ5KCdVUERBVEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgU0VUIHRlc3Rncm91cF9tYXlfbmVlZF9t
b3JlX3JlcXVlc3RzID0gVFJVRSBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSA2MDAnKTsKKyAgICAgICAg
ICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04o
Jy9hcGkvdGVzdC1ncm91cHMvbmVlZC1tb3JlLXJlcXVlc3RzJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudC50ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25z
dCB0ZXN0R3JvdXAgPSBjb250ZW50LnRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdEdyb3VwLmlkLCA2MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RH
cm91cC50YXNrLCA1MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5uYW1l
LCAnc29tZSB0ZXN0IGdyb3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vw
LmF1dGhvciwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQub2soIXRlc3RHcm91cC5oaWRkZW4p
OworICAgICAgICAgICAgYXNzZXJ0Lm9rKCF0ZXN0R3JvdXAubmVlZHNOb3RpZmljYXRpb24pOwor
ICAgICAgICAgICAgYXNzZXJ0Lm9rKHRlc3RHcm91cC5tYXlOZWVkTW9yZVJlcXVlc3RzKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAucGxhdGZvcm0sIDY1KTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMsIFsnNzAwJywnNzAx
JywgJzcwMicsICc3MDMnXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRlc3RHcm91
cC5jb21taXRTZXRzLCBbJzQwMScsICc0MDInLCAnNDAxJywgJzQwMiddKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBsaXN0IGFsbCB0ZXN0IGdyb3VwcyBtYXkgbmVlZCBhZGRp
dGlvbmFsIGJ1aWxkIHJlcXVlc3RzJywgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgYXdhaXQg
TW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2NvbXBsZXRlZCcs
ICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCddKTsKKyAgICAgICAgICAgIGF3
YWl0IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KSwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjb21wbGV0ZWQnXSwgJ3dl
YmtpdCcpOworICAgICAgICAgICAgYXdhaXQgVGVzdFNlcnZlci5kYXRhYmFzZSgpLnF1ZXJ5KCdV
UERBVEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgU0VUIHRlc3Rncm91cF9tYXlfbmVlZF9tb3JlX3Jl
cXVlc3RzID0gVFJVRSBXSEVSRSB0ZXN0Z3JvdXBfaWQgPSA2MDAnKTsKKyAgICAgICAgICAgIGF3
YWl0IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5xdWVyeSgnVVBEQVRFIGFuYWx5c2lzX3Rlc3RfZ3Jv
dXBzIFNFVCB0ZXN0Z3JvdXBfbWF5X25lZWRfbW9yZV9yZXF1ZXN0cyA9IFRSVUUgV0hFUkUgdGVz
dGdyb3VwX2lkID0gNjAxJyk7CisgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL3Rlc3QtZ3JvdXBzL25lZWQtbW9yZS1y
ZXF1ZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnQudGVzdEdyb3Vwcy5s
ZW5ndGgsIDIpOworCisgICAgICAgICAgICBjb25zdCBvbmVUZXN0R3JvdXAgPSBjb250ZW50LnRl
c3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob25lVGVzdEdyb3VwLmlkLCA2
MDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC50YXNrLCA1MDApOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5uYW1lLCAnc29tZSB0ZXN0IGdy
b3VwJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob25lVGVzdEdyb3VwLmF1dGhvciwgbnVs
bCk7CisgICAgICAgICAgICBhc3NlcnQub2soIW9uZVRlc3RHcm91cC5oaWRkZW4pOworICAgICAg
ICAgICAgYXNzZXJ0Lm9rKG9uZVRlc3RHcm91cC5uZWVkc05vdGlmaWNhdGlvbik7CisgICAgICAg
ICAgICBhc3NlcnQub2sob25lVGVzdEdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG9uZVRlc3RHcm91cC5wbGF0Zm9ybSwgNjUpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChvbmVUZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cywgWyc3MDAnLCc3
MDEnLCAnNzAyJywgJzcwMyddKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob25lVGVz
dEdyb3VwLmNvbW1pdFNldHMsIFsnNDAxJywgJzQwMicsICc0MDEnLCAnNDAyJ10pOworCisgICAg
ICAgICAgICBjb25zdCBhbm90aGVyVGVzdEdyb3VwID0gY29udGVudC50ZXN0R3JvdXBzWzFdOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3JvdXAuaWQsIDYwMSk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoYW5vdGhlclRlc3RHcm91cC50YXNrLCA1MDApOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3JvdXAubmFtZSwgJ2Fub3RoZXIgdGVzdCBn
cm91cCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFub3RoZXJUZXN0R3JvdXAuYXV0aG9y
LCAnd2Via2l0Jyk7CisgICAgICAgICAgICBhc3NlcnQub2soIWFub3RoZXJUZXN0R3JvdXAuaGlk
ZGVuKTsKKyAgICAgICAgICAgIGFzc2VydC5vayghYW5vdGhlclRlc3RHcm91cC5uZWVkc05vdGlm
aWNhdGlvbik7CisgICAgICAgICAgICBhc3NlcnQub2soYW5vdGhlclRlc3RHcm91cC5tYXlOZWVk
TW9yZVJlcXVlc3RzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChhbm90aGVyVGVzdEdyb3Vw
LnBsYXRmb3JtLCA2NSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGFub3RoZXJUZXN0
R3JvdXAuYnVpbGRSZXF1ZXN0cywgWyc3MTAnLCc3MTEnLCAnNzEyJywgJzcxMyddKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoYW5vdGhlclRlc3RHcm91cC5jb21taXRTZXRzLCBbJzQw
MScsICc0MDInLCAnNDAxJywgJzQwMiddKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9KTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1h
cGktYWRkLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZGM1ODc3ODZiNDNh
NDUwNWY4MWQ0NDU3YWExN2NkM2VhMzg0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWFkZC1idWlsZC1yZXF1
ZXN0cy10ZXN0cy5qcwpAQCAtMCwwICsxLDE4MyBAQAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBh
c3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKKworY29uc3QgTW9ja0RhdGEgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKK2NvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOworY29uc3QgYWRkU2xhdmVGb3JSZXBvcnQgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNsYXZlRm9yUmVw
b3J0OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21t
b24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OworY29uc3QgYXNzZXJ0VGhyb3dz
ID0gcmVxdWlyZSgnLi4vc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5q
cycpLmFzc2VydFRocm93czsKKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNrKG5h
bWUsIHdlYmtpdFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQoreworICAgIGNvbnN0
IHJlcG9ydFdpdGhSZXZpc2lvbiA9IFt7CisgICAgICAgICJidWlsZE51bWJlciI6ICIxMjQiLAor
ICAgICAgICAiYnVpbGRUaW1lIjogIjIwMTUtMTAtMjdUMTU6MzQ6NTEiLAorICAgICAgICAicmV2
aXNpb25zIjogeworICAgICAgICAgICAgIldlYktpdCI6IHsKKyAgICAgICAgICAgICAgICAicmV2
aXNpb24iOiB3ZWJraXRSZXZpc2lvbnNbMF0sCisgICAgICAgICAgICAgICAgInRpbWVzdGFtcCI6
ICcyMDE1LTEwLTI3VDExOjM2OjU2Ljg3ODQ3M1onLAorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICJtYWNPUyI6IHsKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTVBMjg0IiwKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJ1aWxkZXJOYW1lIjogInNvbWVCdWls
ZGVyIiwKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xhdmUiLAorICAgICAgICAic2xhdmVQ
YXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAicGxhdGZvcm0iOiAic29tZSBwbGF0
Zm9ybSIsCisgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICJzb21lIHRlc3QiOiB7Cisg
ICAgICAgICAgICAgICAgIm1ldHJpY3MiOiB7CisgICAgICAgICAgICAgICAgICAgICJUaW1lIjog
WyJBcml0aG1ldGljIl0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidGVz
dHMiOiB7CisgICAgICAgICAgICAgICAgICAgICJ0ZXN0MSI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJtZXRyaWNzIjogeyJUaW1lIjogeyAiY3VycmVudCI6IFsxMV0gfX0sCisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg
ICB9fV07CisKKyAgICBjb25zdCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uID0gW3sKKyAgICAg
ICAgImJ1aWxkTnVtYmVyIjogIjEyNSIsCisgICAgICAgICJidWlsZFRpbWUiOiAiMjAxNS0xMC0y
N1QxNzoyNzo0MSIsCisgICAgICAgICJyZXZpc2lvbnMiOiB7CisgICAgICAgICAgICAiV2ViS2l0
IjogeworICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IHdlYmtpdFJldmlzaW9uc1sxXSwKKyAg
ICAgICAgICAgICAgICAidGltZXN0YW1wIjogJzIwMTUtMTAtMjdUMTY6Mzg6MTAuNzY4OTk1Wics
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIm1hY09TIjogeworICAgICAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICIxNUEyODQiLAorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAic2xhdmVOYW1lIjogInNv
bWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisgICAg
ICAgICJwbGF0Zm9ybSI6ICJzb21lIHBsYXRmb3JtIiwKKyAgICAgICAgInRlc3RzIjogeworICAg
ICAgICAgICAgInNvbWUgdGVzdCI6IHsKKyAgICAgICAgICAgICAgICAibWV0cmljcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgIlRpbWUiOiBbIkFyaXRobWV0aWMiXSwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgInRl
c3QxIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIm1ldHJpY3MiOiB7IlRpbWUiOiB7ICJj
dXJyZW50IjogWzEyXSB9fSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH19XTsKKworICAgIGNvbnN0IGRiID0gVGVzdFNl
cnZlci5kYXRhYmFzZSgpOworICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCk7CisgICAgYXdhaXQgYWRkU2xhdmVGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKTsK
KyAgICBhd2FpdCByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZp
c2lvbik7CisgICAgYXdhaXQgcmVtb3RlLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVy
UmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworICAgIGNv
bnN0IHRlc3QgPSBUZXN0LmZpbmRCeVBhdGgoWydzb21lIHRlc3QnLCAndGVzdDEnXSk7CisgICAg
Y29uc3QgcGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlOYW1lKCdzb21lIHBsYXRmb3JtJyk7Cisg
ICAgY29uc3QgY29uZmlnUm93ID0gYXdhaXQgZGIuc2VsZWN0Rmlyc3RSb3coJ3Rlc3RfY29uZmln
dXJhdGlvbnMnLCB7bWV0cmljOiB0ZXN0Lm1ldHJpY3MoKVswXS5pZCgpLCBwbGF0Zm9ybTogcGxh
dGZvcm0uaWQoKX0pOworICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93cygn
dGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisKKyAgICBhc3NlcnQuZXF1
YWwodGVzdFJ1bnMubGVuZ3RoLCAyKTsKKyAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgUHJpdmls
ZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7CisgICAgICAgIG5h
bWU6IG5hbWUsCisgICAgICAgIHN0YXJ0UnVuOiB0ZXN0UnVuc1swXVsnaWQnXSwKKyAgICAgICAg
ZW5kUnVuOiB0ZXN0UnVuc1sxXVsnaWQnXSwKKyAgICAgICAgbmVlZHNOb3RpZmljYXRpb246IHRy
dWUsCisgICAgfSk7CisgICAgcmV0dXJuIGNvbnRlbnRbJ3Rhc2tJZCddOworfQorCithc3luYyBm
dW5jdGlvbiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2sobmFtZSwgd2Via2l0UmV2aXNpb25z
KQoreworICAgIGNvbnN0IHJlcG9ydCA9IHsKKyAgICAgICAgJ3NsYXZlTmFtZSc6ICdhbm90aGVy
U2xhdmUnLAorICAgICAgICAnc2xhdmVQYXNzd29yZCc6ICdhbm90aGVyUGFzc3dvcmQnLAorICAg
ICAgICAndHJpZ2dlcmFibGUnOiAnYnVpbGQtd2Via2l0JywKKyAgICAgICAgJ2NvbmZpZ3VyYXRp
b25zJzogWworICAgICAgICAgICAge3Rlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgcGxhdGZv
cm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9LAorICAgICAgICAgICAge3Rlc3Q6IE1vY2tE
YXRhLnNvbWVUZXN0SWQoKSwgcGxhdGZvcm06IE1vY2tEYXRhLm90aGVyUGxhdGZvcm1JZCgpfSwK
KyAgICAgICAgXSwKKyAgICAgICAgJ3JlcG9zaXRvcnlHcm91cHMnOiBbCisgICAgICAgICAgICB7
bmFtZTogJ29zLW9ubHknLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVwb3NpdG9yaWVzOiBbCisgICAg
ICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgp
LCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAgICAgICAgICAgICBdfSwKKyAgICAgICAgICAg
IHtuYW1lOiAnd2Via2l0LW9ubHknLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVwb3NpdG9yaWVzOiBb
CisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0
b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfSwKKyAgICAgICAgICAgICAgICBdfSwKKyAgICAg
ICAgICAgIHtuYW1lOiAnc3lzdGVtLWFuZC13ZWJraXQnLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVw
b3NpdG9yaWVzOiBbCisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5t
YWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAgICAgICAgICAg
ICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBhY2NlcHRz
UGF0Y2g6IHRydWV9CisgICAgICAgICAgICAgICAgXX0sCisgICAgICAgICAgICB7bmFtZTogJ3N5
c3RlbS13ZWJraXQtc2pjJywgYWNjZXB0c1Jvb3Q6IHRydWUsIHJlcG9zaXRvcmllczogWworICAg
ICAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQo
KSwgYWNjZXB0c1BhdGNoOiBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5
OiBNb2NrRGF0YS5qc2NSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiBmYWxzZX0sCisgICAg
ICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQo
KSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAgICAgICAgICAgICAgIF19LAorICAgICAgICBdCisg
ICAgfTsKKyAgICBhd2FpdCBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNl
KCkpOworICAgIGF3YWl0IGFkZFNsYXZlRm9yUmVwb3J0KHJlcG9ydCk7CisgICAgYXdhaXQgVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywg
cmVwb3J0KTsKKyAgICBhd2FpdCBjcmVhdGVBbmFseXNpc1Rhc2sobmFtZSwgd2Via2l0UmV2aXNp
b25zKTsKK30KKworZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMn
LCBmdW5jdGlvbigpIHsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzLCAnbm9kZScpOworICAg
IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgndGVz
dCcsICdwYXNzd29yZCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFk
ZCBidWlsZCByZXF1ZXN0cyB0byB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBh
d2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBj
b25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNl
dHMgPSBbe1t3ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAg
ICB7bmFtZTogJ3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuZWVkc05v
dGlmaWNhdGlvbjogZmFsc2UsIHJlcGV0aXRpb25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7Cisg
ICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKwor
ICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91
cCcsIHsnZ3JvdXAnOiBpbnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9
KTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9y
VGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwor
ICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAg
ICAgYXNzZXJ0Lm9rKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbChncm91cC5yZXBldGl0aW9uQ291bnQoKSwgMik7CisgICAgICAgIGFzc2VydC5lcXVh
bChncm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworCisgICAgICAgIGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1ZXN0cycsIHtncm91cDogaW5z
ZXJ0ZWRHcm91cElkLCBjb3VudDogMn0pOworCisgICAgICAgIGNvbnN0IHVwZGF0ZWRHcm91cHMg
PSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOwor
ICAgICAgICBhc3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBh
c3NlcnQuZXF1YWwodXBkYXRlZEdyb3Vwc1swXS5yZXBldGl0aW9uQ291bnQoKSwgNCk7CisgICAg
ICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgIGFzc2VydC5vayghZ3JvdXAubWF5TmVlZE1vcmVSZXF1ZXN0cygpKTsK
KyAgICAgICAgZm9yIChjb25zdCBjb21taXRTZXQgb2YgdXBkYXRlZEdyb3Vwc1swXS5yZXF1ZXN0
ZWRDb21taXRTZXRzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdHMgPSB1cGRh
dGVkR3JvdXBzWzBdLnJlcXVlc3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFkZCBidWlsZCByZXF1ZXN0cyB0
byBhIGhpZGRlbiB0ZXN0IGdyb3VwJywgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBhZGRU
cmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmFsbCgpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4gcmVwb3NpdG9yeS5u
YW1lKCkgPT0gJ1dlYktpdCcpWzBdOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSBbe1t3
ZWJraXQuaWQoKV06IHtyZXZpc2lvbjogJzE5MTYyMid9fSwge1t3ZWJraXQuaWQoKV06IHtyZXZp
c2lvbjogJzE5MTYyMyd9fV07CisgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTog
J3Rlc3QnLCB0YXNrTmFtZTogJ290aGVyIHRhc2snLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBs
YXRmb3JtSWQoKSwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLAorICAgICAgICAgICAgICAg
IGhpZGRlbjogdHJ1ZSwgbmVlZHNOb3RpZmljYXRpb246IGZhbHNlLCByZXBldGl0aW9uQ291bnQ6
IDIsIHJldmlzaW9uU2V0c30pOworICAgICAgICBjb25zdCBpbnNlcnRlZEdyb3VwSWQgPSByZXN1
bHRbJ3Rlc3RHcm91cElkJ107CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IGF3YWl0IFRl
c3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgIGNvbnN0IGdyb3VwID0g
dGVzdEdyb3Vwc1swXTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVk
R3JvdXBJZCk7CisgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5tYXlOZWVkTW9yZVJlcXVlc3Rz
KCksIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgp
LCAyKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLmluaXRpYWxSZXBldGl0aW9uQ291bnQo
KSwgMik7CisgICAgICAgIGF3YWl0IGdyb3VwLnVwZGF0ZUhpZGRlbkZsYWcodHJ1ZSk7CisKKyAg
ICAgICAgYXdhaXQgYXNzZXJ0VGhyb3dzKCdDYW5ub3RBZGRUb0hpZGRlblRlc3RHcm91cCcsIGFz
eW5jICgpID0+IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2FkZC1idWlsZC1yZXF1
ZXN0cycsIHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBjb3VudDogMn0pKQorICAgIH0pOworfSk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10
ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktdXBkYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKaW5kZXggYzdiZTQ4YTQzNGRhNDMxOTJj
MTlhMzU2ZDBlNzQ2YzRkMjYyY2E1ZC4uOWYxNTc4NzQ3ODY1ZTc1MjJkYmRhMmI0ZGQ5MGY3ZTFi
MDRhNTFiNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9wcml2aWxlZ2VkLWFwaS11cGRhdGUtdGVzdC1ncm91cC10ZXN0cy5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwZGF0ZS10ZXN0
LWdyb3VwLXRlc3RzLmpzCkBAIC0yMDQsNCArMjA0LDc2IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdl
ZC1hcGkvdXBkYXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbigpewogICAgICAgICBhc3NlcnQuZXF1
YWwodXBkYXRlZEdyb3Vwc1swXS5uZWVkc05vdGlmaWNhdGlvbigpLCB0cnVlKTsKICAgICAgICAg
YXNzZXJ0Lm9rKCFncm91cC5ub3RpZmljYXRpb25TZW50QXQoKSk7CiAgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCAibWF5X25lZWRfbW9yZV9yZXF1ZXN0cyIgZmllbGQg
ZGVmYXVsdHMgdG8gZmFsc2UnLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdn
ZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNrJyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUo
KSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtp
dC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9u
OiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAndGVz
dCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZv
cm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBm
YWxzZSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJl
c3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQg
VGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAg
YXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0
ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVz
dHMoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQub2soIWdyb3VwLm5vdGlmaWNhdGlvblNlbnRB
dCgpKTsKKworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIHVwZGF0ZSAibWF5
X25lZWRfbW9yZV9yZXF1ZXN0cyIgZmllbGQgdG8gdHJ1ZSBhbmQgZmFsc2UnLCBhc3luYyAoKSA9
PiB7CisgICAgICAgIGF3YWl0IGFkZFRyaWdnZXJhYmxlQW5kQ3JlYXRlVGFzaygnc29tZSB0YXNr
Jyk7CisgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNv
bnN0IHJldmlzaW9uU2V0cyA9IFt7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319
LCB7W3dlYmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3Vw
JywKKyAgICAgICAgICAgIHtuYW1lOiAndGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBs
YXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVz
dElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiBmYWxzZSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAg
IGNvbnN0IGluc2VydGVkR3JvdXBJZCA9IHJlc3VsdFsndGVzdEdyb3VwSWQnXTsKKworICAgICAg
ICBjb25zdCB0ZXN0R3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRb
J3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JvdXAuaWQoKSwgaW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKGdyb3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworCisgICAgICAgIGF3YWl0
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS10ZXN0LWdyb3VwJywge2dyb3VwOiBp
bnNlcnRlZEdyb3VwSWQsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWV9KTsKKworICAgICAgICBs
ZXQgdXBkYXRlZEdyb3VwcyA9IGF3YWl0IFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVzdWx0Wyd0
YXNrSWQnXSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzLmxlbmd0
aCwgMSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLm1heU5lZWRNb3Jl
UmVxdWVzdHMoKSwgdHJ1ZSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVl
ZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKworICAgICAgICB1cGRhdGVkR3JvdXBzID0gYXdhaXQg
VGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAg
YXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCBmYWxzZSk7CisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIGNsZWFyICJtYXlfbmVlZF9tb3JlX3JlcXVlc3RzIiB3aGls
ZSBoaWRpbmcgdGVzdCBncm91cCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLAorICAgICAgICAgICAge25hbWU6ICd0
ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0
Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmVlZHNOb3RpZmljYXRpb246
IGZhbHNlLCByZXZpc2lvblNldHN9KTsKKyAgICAgICAgY29uc3QgaW5zZXJ0ZWRHcm91cElkID0g
cmVzdWx0Wyd0ZXN0R3JvdXBJZCddOworCisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBhd2Fp
dCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHJlc3VsdFsndGFza0lkJ10sIHRydWUpOworICAgICAg
ICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5pZCgpLCBpbnNl
cnRlZEdyb3VwSWQpOworICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAubWF5TmVlZE1vcmVSZXF1
ZXN0cygpLCBmYWxzZSk7CisKKyAgICAgICAgYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXRlc3QtZ3JvdXAnLCB7Z3JvdXA6IGluc2VydGVkR3JvdXBJZCwgbWF5TmVlZE1v
cmVSZXF1ZXN0czogdHJ1ZX0pOworCisgICAgICAgIGxldCB1cGRhdGVkR3JvdXBzID0gYXdhaXQg
VGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAg
YXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1ZXN0cygpLCB0cnVlKTsKKworICAg
ICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtdGVzdC1ncm91cCcs
IHtncm91cDogaW5zZXJ0ZWRHcm91cElkLCBoaWRkZW46IHRydWV9KTsKKworICAgICAgICB1cGRh
dGVkR3JvdXBzID0gYXdhaXQgVGVzdEdyb3VwLmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCdd
LCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRHcm91cHNbMF0ubWF5TmVlZE1vcmVSZXF1ZXN0
cygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh1cGRhdGVkR3JvdXBzWzBdLmlzSGlk
ZGVuKCksIHRydWUpOworICAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJj
ZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDY0NTIwYTVlZjU1NWRhMzFmNzlhNjUxYmYwMGI1
MzhkMjM3YzNiYzQuLjYwOTE0NTk2ZGE1Njk0NzJjNGRiZmJhZWUyYmIxM2YwZmU4YjhhNTUgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2Vz
L21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTY0LDcgKzY0LDcgQEAgTW9ja0RhdGEgPSB7CiAg
ICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfcnVucycsIHtpZDogODAxLCBjb25maWc6IDMwMSwg
YnVpbGQ6IDkwMSwgbWVhbl9jYWNoZTogMTAwfSksCiAgICAgICAgIF0pOwogICAgIH0sCi0gICAg
YWRkTW9ja0RhdGE6IGZ1bmN0aW9uIChkYiwgc3RhdHVzTGlzdCkKKyAgICBhZGRNb2NrRGF0YTog
ZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0LCBuZWVkc05vdGlmaWNhdGlvbj10cnVlKQogICAgIHsK
ICAgICAgICAgaWYgKCFzdGF0dXNMaXN0KQogICAgICAgICAgICAgc3RhdHVzTGlzdCA9IFsncGVu
ZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddOwpAQCAtNzksNyArNzksNyBA
QCBNb2NrRGF0YSA9IHsKICAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7
aWQ6IDUwMCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzaycsCiAg
ICAgICAgICAgICAgICAgc3RhcnRfcnVuOiA4MDEsIHN0YXJ0X3J1bl90aW1lOiAnMjAxNS0xMC0y
N1QxMjowNToyNy4xWicsCiAgICAgICAgICAgICAgICAgZW5kX3J1bjogODAxLCBlbmRfcnVuX3Rp
bWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdh
bmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRl
c3QgZ3JvdXAnLCBuZWVkc19ub3RpZmljYXRpb246IHRydWV9KSwKKyAgICAgICAgICAgIGRiLmlu
c2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAn
c29tZSB0ZXN0IGdyb3VwJywgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0LCBuZWVkc19ub3Rp
ZmljYXRpb246IG5lZWRzTm90aWZpY2F0aW9ufSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
aWxkX3JlcXVlc3RzJywge2lkOiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFi
bGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAw
LCBncm91cDogNjAwLCBvcmRlcjogMCwgY29tbWl0X3NldDogNDAxfSksCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDEsIHN0YXR1czogc3RhdHVzTGlzdFsx
XSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMSwgY29tbWl0X3NldDogNDAyfSksCiAg
ICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czog
c3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDEs
IHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMiwgY29tbWl0X3Nl
dDogNDAxfSksCkBAIC0xMjMsNyArMTIzLDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiAxNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiAxNDAyLCBjb21taXQ6IDg3ODMyfSksCiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiAxNDAyLCBjb21taXQ6
IDE5NjMzNn0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3Vwcycs
IHtpZDogMTYwMCwgdGFzazogNTAwLCBuYW1lOiAndGVzdCBncm91cCB3aXRoIGdpdCd9KSwKKyAg
ICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDE2MDAsIHRh
c2s6IDUwMCwgbmFtZTogJ3Rlc3QgZ3JvdXAgd2l0aCBnaXQnLCBpbml0aWFsX3JlcGV0aXRpb25f
Y291bnQ6IDR9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDE3MDAsIHN0YXR1czogJ3BlbmRpbmcnLCB0cmlnZ2VyYWJsZTogMTAwMCwgcmVwb3NpdG9yeV9n
cm91cDogMjAwMiwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiAxNjAwLCBvcmRlcjog
MCwgY29tbWl0X3NldDogMTQwMX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1
ZXN0cycsIHtpZDogMTcwMSwgc3RhdHVzOiAncGVuZGluZycsIHRyaWdnZXJhYmxlOiAxMDAwLCBy
ZXBvc2l0b3J5X2dyb3VwOiAyMDAyLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDE2
MDAsIG9yZGVyOiAxLCBjb21taXRfc2V0OiAxNDAyfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiAxNzAyLCBzdGF0dXM6ICdwZW5kaW5nJywgdHJpZ2dlcmFi
bGU6IDEwMDAsIHJlcG9zaXRvcnlfZ3JvdXA6IDIwMDIsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAw
LCBncm91cDogMTYwMCwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDE0MDF9KSwKQEAgLTEzOSw3ICsx
MzksNyBAQCBNb2NrRGF0YSA9IHsKICAgICAgICAgY29uc3QgcGxhdGZvcm0gPSA2NTsKICAgICAg
ICAgY29uc3QgcmVwb3NpdG9yeV9ncm91cCA9IDIwMDE7CiAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA2MDEsIHRhc2s6IDUwMCwgbmFtZTogJ2Fub3RoZXIgdGVzdCBncm91cCcsIGF1dGhvcn0pLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAxLCB0
YXNrOiA1MDAsIG5hbWU6ICdhbm90aGVyIHRlc3QgZ3JvdXAnLCBhdXRob3IsIGluaXRpYWxfcmVw
ZXRpdGlvbl9jb3VudDogNH0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0
cycsIHtpZDogNzEzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlLCByZXBvc2l0
b3J5X2dyb3VwLCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMsIGNvbW1pdF9z
ZXQ6IDQwMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDog
NzEwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3Vw
LCBwbGF0Zm9ybSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0p
LAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBzdGF0
dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlLCByZXBvc2l0b3J5X2dyb3VwLCBwbGF0Zm9y
bSwgdGVzdCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLApAQCAtMTU3
LDcgKzE1Nyw3IEBAIE1vY2tEYXRhID0gewogICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNp
c190YXNrcycsIHtpZDogMTA4MCwgcGxhdGZvcm06IDY1LCBtZXRyaWM6IDMwMCwgbmFtZTogJ3Nv
bWUgdGFzayB3aXRoIGNvbXBvbmVudCB0ZXN0JywKICAgICAgICAgICAgICAgICBzdGFydF9ydW46
IDgwMSwgc3RhcnRfcnVuX3RpbWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJywKICAgICAgICAg
ICAgICAgICBlbmRfcnVuOiA4MDEsIGVuZF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6Mjcu
MVonfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lk
OiA5MDAsIHRhc2s6IDEwODAsIG5hbWU6ICdzb21lIHRlc3QgZ3JvdXAgd2l0aCBjb21wb25lbnQg
dGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7
aWQ6IDkwMCwgdGFzazogMTA4MCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCB3aXRoIGNvbXBvbmVu
dCB0ZXN0JywgaW5pdGlhbF9yZXBldGl0aW9uX2NvdW50OiA0fSksCiAgICAgICAgICAgICBkYi5p
bnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDN9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgn
Y29tbWl0X3NldF9pdGVtcycsIHtzZXQ6IDQwMywgY29tbWl0OiA4NzgzMn0pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDAzLCBjb21taXQ6IDkzMTE2
fSksCkBAIC0xODAsNyArMTgwLDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiAxMDgwLCBwbGF0Zm9ybTogNjUsIG1ldHJpYzogMzAw
LCBuYW1lOiAnc29tZSB0YXNrIHdpdGggY29tcG9uZW50IHRlc3QnLAogICAgICAgICAgICAgICAg
IHN0YXJ0X3J1bjogODAxLCBzdGFydF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVon
LAogICAgICAgICAgICAgICAgIGVuZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0y
N1QxMjowNToyNy4xWid9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9n
cm91cHMnLCB7aWQ6IDkwMCwgdGFzazogMTA4MCwgbmFtZTogJ3NvbWUgdGVzdCBncm91cCB3aXRo
IGNvbXBvbmVudCB0ZXN0J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdhbmFseXNpc190ZXN0
X2dyb3VwcycsIHtpZDogOTAwLCB0YXNrOiAxMDgwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwIHdp
dGggY29tcG9uZW50IHRlc3QnLCBpbml0aWFsX3JlcGV0aXRpb25fY291bnQ6IDR9KSwKICAgICAg
ICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6IDQwNH0pLAogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRfc2V0X2l0ZW1zJywge3NldDogNDA0LCBjb21taXQ6IDg3ODMyfSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfaXRlbXMnLCB7c2V0OiA0MDQsIGNv
bW1pdDogOTYzMzZ9KSwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMKaW5kZXggYThlYzBlZGYx
ZWE1ZTVlZDYwOWQ5ZTIwMzEwNDMzYjFlNjFlMzYxYi4uYWQ2MGM0NmQ3ZWI2Y2I0YjAyNjU4ZTJj
YTc2NGM4OTk1MjMzZDNhMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMKQEAgLTE1Niw3
ICsxNTYsNyBAQCBjbGFzcyBUZXN0U2VydmVyIHsKICAgICBfZGV0ZXJtaW5lUGdzcWxEaXJlY3Rv
cnkoKQogICAgIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGxldCBpbml0ZGJMb2NhdGlv
biA9IGNoaWxkUHJvY2Vzcy5leGVjRmlsZVN5bmMoJ3doaWNoJywgWydpbml0ZGInXSk7CisgICAg
ICAgICAgICBsZXQgaW5pdGRiTG9jYXRpb24gPSBjaGlsZFByb2Nlc3MuZXhlY0ZpbGVTeW5jKCd3
aGljaCcsIFsnaW5pdGRiJ10pLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gcGF0aC5k
aXJuYW1lKGluaXRkYkxvY2F0aW9uKTsKICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAg
ICAgICAgIGxldCBzZXJ2ZXJQZ3NxbExvY2F0aW9uID0gJy9BcHBsaWNhdGlvbnMvU2VydmVyLmFw
cC9Db250ZW50cy9TZXJ2ZXJSb290L3Vzci9iaW4vJzsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy90b29scy9qcy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVl
c3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMyNDMwYTlmYjBjOTc4ZjdlNDkwYTNlYTVlOTQwM2QyZDg0MzUx
OTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMv
cmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2FzeW5jIGZ1
bmN0aW9uIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWls
ZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCBtYXhpbXVtUmV0cnlGYWN0b3IpCit7CisgICAgZm9yIChj
b25zdCB0ZXN0R3JvdXAgb2YgdGVzdEdyb3VwcykgeworICAgICAgICBpZiAoIXRlc3RHcm91cC5t
YXlOZWVkTW9yZVJlcXVlc3RzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAodGVzdEdyb3VwLmlzSGlkZGVuKCkpIHsKKyAgICAgICAgICAgIGF3YWl0IHRlc3RHcm91cC5j
bGVhck1heU5lZWRNb3JlQnVpbGRSZXF1ZXN0cygpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBsZXQgbWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50ID0gMDsK
KyAgICAgICAgbGV0IGhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQgPSB0
cnVlOworICAgICAgICBsZXQgaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCA9IGZhbHNlOworICAg
ICAgICBmb3IgKGNvbnN0IGNvbW1pdFNldCBvZiB0ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0
cygpKSB7CisgICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3RzID0gdGVzdEdyb3VwLnJlcXVl
c3RzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRl
ZEJ1aWxkUmVxdWVzdENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkg
PT4gYnVpbGRSZXF1ZXN0Lmhhc0NvbXBsZXRlZCgpKS5sZW5ndGg7CisgICAgICAgICAgICBoYXND
b21wbGV0ZWRCdWlsZFJlcXVlc3RGb3JFYWNoQ29tbWl0U2V0ICY9IChjb21wbGV0ZWRCdWlsZFJl
cXVlc3RDb3VudCA+IDApOworICAgICAgICAgICAgY29uc3QgdW5maW5pc2hlZEJ1aWxkUmVxdWVz
dENvdW50ID0gYnVpbGRSZXF1ZXN0cy5maWx0ZXIoKGJ1aWxkUmVxdWVzdCkgPT4gIWJ1aWxkUmVx
dWVzdC5oYXNGaW5pc2hlZCgpKS5sZW5ndGg7CisgICAgICAgICAgICBtYXhNaXNzaW5nQnVpbGRS
ZXF1ZXN0Q291bnQgPSBNYXRoLm1heChtYXhNaXNzaW5nQnVpbGRSZXF1ZXN0Q291bnQsIHRlc3RH
cm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCkgLSBjb21wbGV0ZWRCdWlsZFJlcXVlc3RDb3Vu
dCAtIHVuZmluaXNoZWRCdWlsZFJlcXVlc3RDb3VudCk7CisgICAgICAgICAgICBoYXNVbmZpbmlz
aGVkQnVpbGRSZXF1ZXN0ID0gaGFzVW5maW5pc2hlZEJ1aWxkUmVxdWVzdCB8fCAodW5maW5pc2hl
ZEJ1aWxkUmVxdWVzdENvdW50ID4gMCk7CisgICAgICAgIH0KKyAgICAgICAgY29uc3Qgd2lsbEV4
Y2VlZE1heGltdW1SZXRyeSA9ICh0ZXN0R3JvdXAucmVwZXRpdGlvbkNvdW50KCkgKyBtYXhNaXNz
aW5nQnVpbGRSZXF1ZXN0Q291bnQpID4gbWF4aW11bVJldHJ5RmFjdG9yICogdGVzdEdyb3VwLmlu
aXRpYWxSZXBldGl0aW9uQ291bnQoKTsKKworICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVx
dWVzdENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc1VuZmluaXNoZWRCdWls
ZFJlcXVlc3QgJiYgIWhhc0NvbXBsZXRlZEJ1aWxkUmVxdWVzdEZvckVhY2hDb21taXRTZXQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobWF4TWlzc2luZ0J1aWxkUmVxdWVz
dENvdW50ICYmICF3aWxsRXhjZWVkTWF4aW11bVJldHJ5ICYmIGhhc0NvbXBsZXRlZEJ1aWxkUmVx
dWVzdEZvckVhY2hDb21taXRTZXQpCisgICAgICAgICAgICBhd2FpdCB0ZXN0R3JvdXAuYWRkTW9y
ZUJ1aWxkUmVxdWVzdHMobWF4TWlzc2luZ0J1aWxkUmVxdWVzdENvdW50KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYXdhaXQgdGVzdEdyb3VwLmNsZWFyTWF5TmVlZE1vcmVCdWlsZFJlcXVl
c3RzKCk7CisgICAgfQorfQorCitpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpCisg
ICAgbW9kdWxlLmV4cG9ydHMuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3Jv
dXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JU
ZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMu
anMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcnVuLWFuYWx5c2lzLmpzCmluZGV4
IDBmN2QzZjAzYzJlNTRhZWE5MWJkOTVmZmJhY2M5ZTljNzMzNGU3MjYuLjg1YjVlMmE1YWYzZWMz
M2U0ZDdlZjllNjNiYmE4MTcwNzNhNGFlZGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9ydW4tYW5hbHlzaXMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL3J1bi1hbmFseXNpcy5qcwpAQCAtNiw2ICs2LDcgQEAgY29uc3QgUmVtb3RlQVBJ
ID0gcmVxdWlyZSgnLi9qcy9yZW1vdGUuanMnKS5SZW1vdGVBUEk7CiBjb25zdCBNZWFzdXJlbWVu
dFNldEFuYWx5emVyID0gcmVxdWlyZSgnLi9qcy9tZWFzdXJlbWVudC1zZXQtYW5hbHl6ZXIuanMn
KS5NZWFzdXJlbWVudFNldEFuYWx5emVyOwogY29uc3QgQW5hbHlzaXNSZXN1bHRzTm90aWZpZXIg
PSByZXF1aXJlKCcuL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZpZXIuanMnKS5BbmFseXNpc1Jl
c3VsdHNOb3RpZmllcjsKIGNvbnN0IFN1YnByb2Nlc3MgPSByZXF1aXJlKCcuL2pzL3N1YnByb2Nl
c3MuanMnKS5TdWJwcm9jZXNzOworY29uc3QgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNG
b3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzID0gcmVxdWlyZSgnLi9qcy9yZXRyeS1mYWls
ZWQtYnVpbGQtcmVxdWVzdHMnKS5jcmVhdGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RH
cm91cHNXaXRoRmFpbGVkUmVxdWVzdHM7CiByZXF1aXJlKCcuL2pzL3YzLW1vZGVscy5qcycpOwog
Z2xvYmFsLlByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuL2pzL3ByaXZpbGVnZWQtYXBpLmpzJyku
UHJpdmlsZWdlZEFQSTsKIApAQCAtMTYsNiArMTcsNyBAQCBmdW5jdGlvbiBtYWluKGFyZ3YpCiAg
ICAgICAgIHtuYW1lOiAnLS1ub3RpZmljYXRpb24tY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1
ZX0sCiAgICAgICAgIHtuYW1lOiAnLS1hbmFseXNpcy1yYW5nZS1pbi1kYXlzJywgdHlwZTogcGFy
c2VGbG9hdCwgZGVmYXVsdDogMTB9LAogICAgICAgICB7bmFtZTogJy0tc2Vjb25kcy10by1zbGVl
cCcsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDEyMDB9LAorICAgICAgICB7bmFtZTogJy0t
bWF4LXJldHJ5LWZhY3RvcicsIHR5cGU6IHBhcnNlRmxvYXQsIGRlZmF1bHQ6IDN9LAogICAgIF0p
OwogCiAgICAgaWYgKCFvcHRpb25zKQpAQCAtMzEsNiArMzMsNyBAQCBhc3luYyBmdW5jdGlvbiBh
bmFseXNpc0xvb3Aob3B0aW9ucykKICAgICAgICAgY29uc3Qgc2VydmVyQ29uZmlnID0gSlNPTi5w
YXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0
Zi04JykpOwogICAgICAgICBjb25zdCBub3RpZmljYXRpb25Db25maWcgPSBKU09OLnBhcnNlKGZz
LnJlYWRGaWxlU3luYyhvcHRpb25zWyctLW5vdGlmaWNhdGlvbi1jb25maWctanNvbiddLCAndXRm
LTgnKSk7CiAgICAgICAgIGNvbnN0IGFuYWx5c2lzUmFuZ2VJbkRheXMgPSBvcHRpb25zWyctLWFu
YWx5c2lzLXJhbmdlLWluLWRheXMnXTsKKyAgICAgICAgY29uc3QgbWF4aW11bVJldHJ5RmFjdG9y
ID0gb3B0aW9uc1snLS1tYXgtcmV0cnktZmFjdG9yJ107CiAgICAgICAgIHNlY29uZHNUb1NsZWVw
ID0gb3B0aW9uc1snLS1zZWNvbmRzLXRvLXNsZWVwJ107CiAgICAgICAgIGdsb2JhbC5SZW1vdGVB
UEkgPSBuZXcgUmVtb3RlQVBJKHNlcnZlckNvbmZpZy5zZXJ2ZXIpOwogICAgICAgICBQcml2aWxl
Z2VkQVBJLmNvbmZpZ3VyZShzZXJ2ZXJDb25maWcuc2xhdmUubmFtZSwgc2VydmVyQ29uZmlnLnNs
YXZlLnBhc3N3b3JkKTsKQEAgLTQ1LDE0ICs0OCwxNiBAQCBhc3luYyBmdW5jdGlvbiBhbmFseXNp
c0xvb3Aob3B0aW9ucykKICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0IGFuYWx5emluZyBsYXN0
ICR7YW5hbHlzaXNSYW5nZUluRGF5c30gZGF5cyBtZWFzdXJlbWVudCBzZXRzLmApOwogICAgICAg
ICBhd2FpdCBhbmFseXplci5hbmFseXplT25jZSgpOwogCi0gICAgICAgIGNvbnN0IHRlc3RHcm91
cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hBbGxXaXRoTm90aWZpY2F0aW9uUmVhZHkoKTsKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMgPSBhd2FpdCBUZXN0R3Jv
dXAuZmV0Y2hBbGxUaGF0TWF5TmVlZE1vcmVSZXF1ZXN0cygpOworICAgICAgICBhd2FpdCBjcmVh
dGVBZGRpdGlvbmFsQnVpbGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHMo
dGVzdEdyb3Vwc01heU5lZWRNb3JlUmVxdWVzdHMsIG1heGltdW1SZXRyeUZhY3Rvcik7CiAKKyAg
ICAgICAgY29uc3QgdGVzdEdyb3Vwc05lZWROb3RpZmljYXRpb24gPSBhd2FpdCBUZXN0R3JvdXAu
ZmV0Y2hBbGxXaXRoTm90aWZpY2F0aW9uUmVhZHkoKTsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0
aW9uUmVtb3ZlQVBJID0gbmV3IFJlbW90ZUFQSShub3RpZmljYXRpb25Db25maWcubm90aWZpY2F0
aW9uU2VydmVyQ29uZmlnKTsKICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTWVzc2FnZUNvbmZp
ZyA9IG5vdGlmaWNhdGlvbkNvbmZpZy5ub3RpZmljYXRpb25NZXNzYWdlQ29uZmlnOwogICAgICAg
ICBjb25zdCBub3RpZmllciA9IG5ldyBBbmFseXNpc1Jlc3VsdHNOb3RpZmllcihub3RpZmljYXRp
b25NZXNzYWdlQ29uZmlnLm1lc3NhZ2VUZW1wbGF0ZSwgbm90aWZpY2F0aW9uTWVzc2FnZUNvbmZp
Zy5maW5hbGl6ZVNjcmlwdCwKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk1lc3NhZ2VDb25maWcu
bWVzc2FnZUNvbnN0cnVjdGlvblJ1bGVzLCBub3RpZmljYXRpb25SZW1vdmVBUEksIG5vdGlmaWNh
dGlvbkNvbmZpZy5ub3RpZmljYXRpb25TZXJ2ZXJDb25maWcucGF0aCwgbmV3IFN1YnByb2Nlc3Mp
OwogCi0gICAgICAgIGF3YWl0IG5vdGlmaWVyLnNlbmROb3RpZmljYXRpb25zRm9yVGVzdEdyb3Vw
cyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgYXdhaXQgbm90aWZpZXIuc2VuZE5vdGlmaWNhdGlvbnNG
b3JUZXN0R3JvdXBzKHRlc3RHcm91cHNOZWVkTm90aWZpY2F0aW9uKTsKICAgICB9IGNhdGNoKGVy
cm9yKSB7CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCBhbmFseXplIG1lYXN1cmVtZW50
IHNldHMgZHVlIHRvICR7ZXJyb3J9YCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3RzLXRlc3Rz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmV0cnktZmFpbGVkLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkODBkYzRkMDg3MmUzNjU1Zjg5OTk4
MjY2OWYwZjY0NWQxMTAwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9yZXRyeS1mYWlsZWQtYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKQEAg
LTAsMCArMSwyNTIgQEAKKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgn
YXNzZXJ0Jyk7CityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKK2NvbnN0IE1v
Y2tNb2RlbHMgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tN
b2RlbHM7Citjb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1y
ZW1vdGUtYXBpLmpzJykuTW9ja1JlbW90ZUFQSTsKK2NvbnN0IE5vZGVQcml2aWxlZ2VkQVBJID0g
cmVxdWlyZSgnLi4vdG9vbHMvanMvcHJpdmlsZWdlZC1hcGknKS5Qcml2aWxlZ2VkQVBJOworY29u
c3QgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJl
cXVlc3RzID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvcmV0cnktZmFpbGVkLWJ1aWxkLXJlcXVlc3Rz
JykuY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJl
cXVlc3RzOworCisKK2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChjb25maWcpIHsKKyAgICBjb25z
dCBuZWVkc05vdGlmaWNhdGlvbiA9IGNvbmZpZy5uZWVkc05vdGlmaWNhdGlvbjsKKyAgICBjb25z
dCBpbml0aWFsUmVwZXRpdGlvbkNvdW50ID0gY29uZmlnLmluaXRpYWxSZXBldGl0aW9uQ291bnQ7
CisgICAgY29uc3QgbWF5TmVlZE1vcmVSZXF1ZXN0cyA9IGNvbmZpZy5tYXlOZWVkTW9yZVJlcXVl
c3RzOworICAgIGNvbnN0IGhpZGRlbiA9IGNvbmZpZy5oaWRkZW47CisgICAgY29uc3Qgc3RhdHVz
TGlzdCA9IGNvbmZpZy5zdGF0dXNMaXN0OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRlc3RH
cm91cHMiOiBbeworICAgICAgICAgICAgImlkIjogIjIxMjgiLAorICAgICAgICAgICAgInRhc2si
OiAiMTM3NiIsCisgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgIm5h
bWUiOiAiQ29uZmlybSIsCisgICAgICAgICAgICAiYXV0aG9yIjogInJuaXdhIiwKKyAgICAgICAg
ICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwLAorICAgICAgICAgICAgaGlkZGVuLAorICAg
ICAgICAgICAgbmVlZHNOb3RpZmljYXRpb24sCisgICAgICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6
IFsiMTY5ODUiLCAiMTY5ODYiLCAiMTY5ODciLCAiMTY5ODgiLCAiMTY5ODkiLCAiMTY5OTAiXSwK
KyAgICAgICAgICAgICJjb21taXRTZXRzIjogWyI0MjU1IiwgIjQyNTYiXSwKKyAgICAgICAgICAg
ICJub3RpZmljYXRpb25TZW50QXQiOiBudWxsLAorICAgICAgICAgICAgaW5pdGlhbFJlcGV0aXRp
b25Db3VudCwKKyAgICAgICAgICAgIG1heU5lZWRNb3JlUmVxdWVzdHMKKyAgICAgICAgfV0sCisg
ICAgICAgICJidWlsZFJlcXVlc3RzIjogW3sKKyAgICAgICAgICAgICJpZCI6ICIxNjk4NSIsCisg
ICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQi
LAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAi
OiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiMCIsCisgICAgICAgICAgICAiY29tbWl0
U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbMF0sCisgICAg
ICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAg
ICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICAiaWQiOiAiMTY5ODYiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAg
ICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAg
ICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjEiLAor
ICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJzdGF0dXMiOiBz
dGF0dXNMaXN0WzFdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVp
bGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAg
ICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTg3IiwKKyAgICAgICAgICAgICJ0cmlnZ2Vy
YWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAg
ICAgICJvcmRlciI6ICIyIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCisgICAg
ICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFsyXSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxs
LAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAx
NDU4Njg4NTE0MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICIxNjk4OCIsCisg
ICAgICAgICAgICAidHJpZ2dlcmFibGUiOiAiMyIsCisgICAgICAgICAgICAidGVzdCI6ICI4NDQi
LAorICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwKKyAgICAgICAgICAgICJ0ZXN0R3JvdXAi
OiAiMjEyOCIsCisgICAgICAgICAgICAib3JkZXIiOiAiMyIsCisgICAgICAgICAgICAiY29tbWl0
U2V0IjogIjQyNTYiLAorICAgICAgICAgICAgInN0YXR1cyI6IHN0YXR1c0xpc3RbM10sCisgICAg
ICAgICAgICAidXJsIjogbnVsbCwKKyAgICAgICAgICAgICJidWlsZCI6IG51bGwsCisgICAgICAg
ICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICAiaWQiOiAiMTY5ODkiLAorICAgICAgICAgICAgInRyaWdnZXJhYmxlIjogIjMiLAorICAgICAg
ICAgICAgInRlc3QiOiAiODQ0IiwKKyAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCisgICAg
ICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAorICAgICAgICAgICAgIm9yZGVyIjogIjMiLAor
ICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1IiwKKyAgICAgICAgICAgICJzdGF0dXMiOiBz
dGF0dXNMaXN0WzRdLAorICAgICAgICAgICAgInVybCI6IG51bGwsCisgICAgICAgICAgICAiYnVp
bGQiOiBudWxsLAorICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKKyAgICAg
ICAgfSwgeworICAgICAgICAgICAgImlkIjogIjE2OTkwIiwKKyAgICAgICAgICAgICJ0cmlnZ2Vy
YWJsZSI6ICIzIiwKKyAgICAgICAgICAgICJ0ZXN0IjogIjg0NCIsCisgICAgICAgICAgICAicGxh
dGZvcm0iOiAiMzEiLAorICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKKyAgICAgICAg
ICAgICJvcmRlciI6ICIzIiwKKyAgICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCisgICAg
ICAgICAgICAic3RhdHVzIjogc3RhdHVzTGlzdFs1XSwKKyAgICAgICAgICAgICJ1cmwiOiBudWxs
LAorICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKKyAgICAgICAgICAgICJjcmVhdGVkQXQiOiAx
NDU4Njg4NTE0MDAwCisgICAgICAgIH1dLAorICAgICAgICAiY29tbWl0U2V0cyI6IFt7CisgICAg
ICAgICAgICAiaWQiOiAiNDI1NSIsCisgICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNv
bW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1pdCI6ICI5MzExNiJ9XSwKKyAgICAgICAgICAgICJjdXN0
b21Sb290cyI6IFtdLAorICAgICAgICB9LCB7CisgICAgICAgICAgICAiaWQiOiAiNDI1NiIsCisg
ICAgICAgICAgICAicmV2aXNpb25JdGVtcyI6IFt7ImNvbW1pdCI6ICI4NzgzMiJ9LCB7ImNvbW1p
dCI6ICI5NjMzNiJ9XSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAorICAgICAgICB9
XSwKKyAgICAgICAgImNvbW1pdHMiOiBbeworICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKKyAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIjkiLAorICAgICAgICAgICAgInJldmlzaW9uIjogIjEw
LjExIDE1QTI4NCIsCisgICAgICAgICAgICAidGltZSI6IDAKKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgImlkIjogIjkzMTE2IiwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjExIiwKKyAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTE2MjIiLAorICAgICAgICAgICAgInRpbWUiOiAxNDQ1
OTQ1ODE2ODc4CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJpZCI6ICI4NzgzMiIsCisgICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICI5IiwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4x
MSAxNUEyODQiLAorICAgICAgICAgICAgInRpbWUiOiAwCisgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICJpZCI6ICI5NjMzNiIsCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCisgICAg
ICAgICAgICAicmV2aXNpb24iOiAiMTkyNzM2IiwKKyAgICAgICAgICAgICJ0aW1lIjogMTQ0ODIy
NTMyNTY1MAorICAgICAgICB9XSwKKyAgICAgICAgInVwbG9hZGVkRmlsZXMiOiBbXSwKKyAgICAg
ICAgInN0YXR1cyI6ICJPSyIKKyAgICB9OworfQorCitkZXNjcmliZSgnY3JlYXRlQWRkaXRpb25h
bEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzJywgKCkgPT4gewor
ICAgIGxldCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KG51bGwsIE5vZGVQcml2aWxl
Z2VkQVBJKTsKKyAgICBNb2NrTW9kZWxzLmluamVjdCgpOworICAgIGJlZm9yZUVhY2goKCkgPT4g
eworICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgnc2xhdmVfbmFtZScsICdwYXNzd29y
ZCcpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhZGQgb25lIG1vcmUgYnVpbGQgcmVxdWVz
dCB3aGVuIG9uZSBvZiB0aGUgZXhpc3RpbmcgcmVxdWVzdHMgZmFpbGVkJywgYXN5bmMgKCkgPT4g
eworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmljYXRpb246ZmFs
c2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVxdWVzdHM6IHRydWUs
IGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBsZXRlZCIsICJj
b21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVk
Il19OworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZp
Zyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zy
b21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxk
UmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOwor
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKKworICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2FkZC1idWlsZC1yZXF1
ZXN0cycpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHtzbGF2
ZU5hbWU6ICdzbGF2ZV9uYW1lJywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcy
MTI4JywgY291bnQ6IDF9KTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworCisgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
c1sxXS51cmwsICcvYXBpL3Rlc3QtZ3JvdXBzLzIxMjgnKTsKKyAgICB9KTsKKworICAgIGl0KCdz
aG91bGQgYWRkIDIgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuIDIgZmFpbGVkIGJ1aWxkIHJlcXVl
c3QgZm91bmQgZm9yIGEgY29tbWl0IHNldCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3Qg
dGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOmZhbHNlLCBpbml0aWFsUmVwZXRp
dGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAor
ICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRl
ZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgY29uc3Qg
ZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0
ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMo
ZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vw
c1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBd
LnVybCwgJy9wcml2aWxlZ2VkLWFwaS9hZGQtYnVpbGQtcmVxdWVzdHMnKTsKKyAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7c2xhdmVOYW1lOiAnc2xhdmVfbmFtZScs
IHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAnMjEyOCcsIGNvdW50OiAyfSk7Cisg
ICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoKTsKKworICAgICAgICBhd2FpdCBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDIpOworICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2FwaS90ZXN0
LWdyb3Vwcy8yMTI4Jyk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBt
b3JlIGJ1aWxkIHJlcXVlc3RzIHdoZW4gYWxsIHJlcXVlc3RzIGZvciBhIGNvbW1pdCBzZXQgaGFk
IGZhaWxlZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwQ29uZmlnID0g
e25lZWRzTm90aWZpY2F0aW9uOmZhbHNlLCBpbml0aWFsUmVwZXRpdGlvbkNvdW50OiAzLCBtYXlO
ZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAgc3RhdHVz
TGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJmYWlsZWQiLCAiY29t
cGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91
cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3Vw
Ll9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0
ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0
ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CisKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzBdLmRhdGEsIHtzbGF2ZU5hbWU6ICdzbGF2ZV9uYW1lJywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3
b3JkJywgZ3JvdXA6ICcyMTI4JywgbWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSgpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBub3Qg
c2NoZWR1bGUgbW9yZSBidWlsZCByZXF1ZXN0cyB3aGVuICJtYXlfbmVlZF9tb3JlX3JlcXVlc3Rz
IiBpcyBub3Qgc2V0JywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25m
aWcgPSB7bmVlZHNOb3RpZmljYXRpb246ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMs
IG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlLCBoaWRkZW46IGZhbHNlLAorICAgICAgICAgICAg
c3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0
ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsKKyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBs
ZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOworICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0g
VGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAg
ICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVlc3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRS
ZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMCk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBtb3JlIGJ1
aWxkIHJlcXVlc3RzIHdoZW4gYnVpbGQgcmVxdWVzdCBpcyBoaWRkZW4nLCBhc3luYyAoKSA9PiB7
CisgICAgICAgIGNvbnN0IHRlc3RHcm91cENvbmZpZyA9IHtuZWVkc05vdGlmaWNhdGlvbjpmYWxz
ZSwgaW5pdGlhbFJlcGV0aXRpb25Db3VudDogMywgbWF5TmVlZE1vcmVSZXF1ZXN0czogdHJ1ZSwg
aGlkZGVuOiB0cnVlLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFp
bGVkIiwgImNvbXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiY29tcGxldGVkIiwgImZhaWxlZCJdfTsK
KyAgICAgICAgY29uc3QgZGF0YSA9IHNhbXBsZVRlc3RHcm91cCh0ZXN0R3JvdXBDb25maWcpOwor
ICAgICAgICBjb25zdCB0ZXN0R3JvdXBzID0gVGVzdEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0
Y2hlZFRlc3RHcm91cHMoZGF0YSk7CisgICAgICAgIGNyZWF0ZUFkZGl0aW9uYWxCdWlsZFJlcXVl
c3RzRm9yVGVzdEdyb3Vwc1dpdGhGYWlsZWRSZXF1ZXN0cyh0ZXN0R3JvdXBzLCAzKTsKKyAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CisKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcp
OworICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzBdLmRhdGEsIHtzbGF2ZU5hbWU6
ICdzbGF2ZV9uYW1lJywgc2xhdmVQYXNzd29yZDogJ3Bhc3N3b3JkJywgZ3JvdXA6ICcyMTI4Jywg
bWF5TmVlZE1vcmVSZXF1ZXN0czogZmFsc2V9KTsKKyAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2
ZSgpOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgbW9yZSBidWlsZCBy
ZXF1ZXN0IHdoZW4gd2VcJ3ZlIGFscmVhZHkgaGl0IHRoZSBtYXhpbXVtIHJldHJ5IGNvdW50Jywg
YXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3Rp
ZmljYXRpb246ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDMsIG1heU5lZWRNb3JlUmVx
dWVzdHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNv
bXBsZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJmYWlsZWQiLCAiZmFp
bGVkIl19OworICAgICAgICBjb25zdCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENv
bmZpZyk7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1
aWxkUmVxdWVzdHNGb3JUZXN0R3JvdXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDEu
NSk7CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRl
c3QtZ3JvdXAnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7
c2xhdmVOYW1lOiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3Vw
OiAnMjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJlcXVlc3Rz
WzBdLnJlc29sdmUoKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIG1v
cmUgd2hlbiBhZGRpdGlvbmFsIGJ1aWxkIHJlcXVlc3RzIGFyZSBzdGlsbCBwZW5kaW5nJywgYXN5
bmMgKCkgPT4geworICAgICAgICBjb25zdCB0ZXN0R3JvdXBDb25maWcgPSB7bmVlZHNOb3RpZmlj
YXRpb246ZmFsc2UsIGluaXRpYWxSZXBldGl0aW9uQ291bnQ6IDIsIG1heU5lZWRNb3JlUmVxdWVz
dHM6IHRydWUsIGhpZGRlbjogZmFsc2UsCisgICAgICAgICAgICBzdGF0dXNMaXN0OiBbImNvbXBs
ZXRlZCIsICJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImZhaWxlZCIsICJwZW5kaW5nIiwgInBlbmRp
bmciXX07CisgICAgICAgIGNvbnN0IGRhdGEgPSBzYW1wbGVUZXN0R3JvdXAodGVzdEdyb3VwQ29u
ZmlnKTsKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwcyA9IFRlc3RHcm91cC5fY3JlYXRlTW9kZWxz
RnJvbUZldGNoZWRUZXN0R3JvdXBzKGRhdGEpOworICAgICAgICBjcmVhdGVBZGRpdGlvbmFsQnVp
bGRSZXF1ZXN0c0ZvclRlc3RHcm91cHNXaXRoRmFpbGVkUmVxdWVzdHModGVzdEdyb3VwcywgMyk7
CisgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOworCisgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXRlc3Qt
Z3JvdXAnKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5kYXRhLCB7c2xh
dmVOYW1lOiAnc2xhdmVfbmFtZScsIHNsYXZlUGFzc3dvcmQ6ICdwYXNzd29yZCcsIGdyb3VwOiAn
MjEyOCcsIG1heU5lZWRNb3JlUmVxdWVzdHM6IGZhbHNlfSk7CisgICAgICAgIHJlcXVlc3RzWzBd
LnJlc29sdmUoKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgbm90IGNsZWFyIG1heU5lZWRN
b3JlUmVxdWVzdCBmbGFnIHdoZW4gb25lIGNvbW1pdCBzZXQgaGFzIG5vdCBnb3QgYSBzdWNjZXNz
ZnVsIHJ1biBidXQgaGF2ZSBwZW5kaW5nIGJ1aWxkcycsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
Y29uc3QgdGVzdEdyb3VwQ29uZmlnID0ge25lZWRzTm90aWZpY2F0aW9uOmZhbHNlLCBpbml0aWFs
UmVwZXRpdGlvbkNvdW50OiAzLCBtYXlOZWVkTW9yZVJlcXVlc3RzOiB0cnVlLCBoaWRkZW46IGZh
bHNlLAorICAgICAgICAgICAgc3RhdHVzTGlzdDogWyJjb21wbGV0ZWQiLCAiZmFpbGVkIiwgImNv
bXBsZXRlZCIsICJmYWlsZWQiLCAicGVuZGluZyIsICJwZW5kaW5nIl19OworICAgICAgICBjb25z
dCBkYXRhID0gc2FtcGxlVGVzdEdyb3VwKHRlc3RHcm91cENvbmZpZyk7CisgICAgICAgIGNvbnN0
IHRlc3RHcm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3Vw
cyhkYXRhKTsKKyAgICAgICAgY3JlYXRlQWRkaXRpb25hbEJ1aWxkUmVxdWVzdHNGb3JUZXN0R3Jv
dXBzV2l0aEZhaWxlZFJlcXVlc3RzKHRlc3RHcm91cHMsIDMpOworICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwppbmRl
eCBmYjg5MTYyZTJhOGM5N2ZlMGVkMjY0NDUxMzIxNTJjMTBlMDY3MGI5Li5hYTQzNTU0YmU4Zjk2
YWIzMzAwZDUzNzNhMTQ4OTA0NmE2OTE3ODc5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwpAQCAtNyw3ICs3
LDcgQEAgY29uc3QgTm9kZVByaXZpbGVnZWRBUEkgPSByZXF1aXJlKCcuLi90b29scy9qcy9wcml2
aWxlZ2VkLWFwaS5qcycpLlByaXZpbGVnZWRBUEkKIGNvbnN0IE1vY2tNb2RlbHMgPSByZXF1aXJl
KCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcycpLk1vY2tNb2RlbHM7CiBjb25zdCBNb2Nr
UmVtb3RlQVBJID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJykuTW9j
a1JlbW90ZUFQSTsKIAotZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5lZWRzTm90aWZpY2F0aW9u
PXRydWUpIHsKK2Z1bmN0aW9uIHNhbXBsZVRlc3RHcm91cChuZWVkc05vdGlmaWNhdGlvbj10cnVl
LCBpbml0aWFsUmVwZXRpdGlvbkNvdW50PTIsIG1heU5lZWRNb3JlUmVxdWVzdHM9dHJ1ZSkgewog
ICAgIHJldHVybiB7CiAgICAgICAgICJ0ZXN0R3JvdXBzIjogW3sKICAgICAgICAgICAgICJpZCI6
ICIyMTI4IiwKQEAgLTIwLDYgKzIwLDkgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKG5lZWRz
Tm90aWZpY2F0aW9uPXRydWUpIHsKICAgICAgICAgICAgICJuZWVkc05vdGlmaWNhdGlvbiI6IG5l
ZWRzTm90aWZpY2F0aW9uLAogICAgICAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbIjE2OTg1Iiwg
IjE2OTg2IiwgIjE2OTg3IiwgIjE2OTg4IiwgIjE2OTg5IiwgIjE2OTkwIiwgIjE2OTkxIiwgIjE2
OTkyIl0sCiAgICAgICAgICAgICAiY29tbWl0U2V0cyI6IFsiNDI1NSIsICI0MjU2Il0sCisgICAg
ICAgICAgICAibm90aWZpY2F0aW9uU2VudEF0IjogbnVsbCwKKyAgICAgICAgICAgIGluaXRpYWxS
ZXBldGl0aW9uQ291bnQsCisgICAgICAgICAgICBtYXlOZWVkTW9yZVJlcXVlc3RzCiAgICAgICAg
IH1dLAogICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiMTY5
ODUiLApAQCAtMTc0LDYgKzE3Nyw2NiBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24g
KCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGRlc2NyaWJlKCdpbml0aWFsUmVwZXRp
dGlvbkNvdW50JywgKCkgPT4geworICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVB
UEkuaW5qZWN0KCdodHRwczovL3BlcmYud2Via2l0Lm9yZycsIE5vZGVQcml2aWxlZ2VkQVBJKTsK
KyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLmNv
bmZpZ3VyZSgndGVzdCcsICdwYXNzd29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIGNvbnN0cnVjdCBpbml0aWFsUmVwZXRpdGlvbkNvdW50IGZyb20gZGF0YScsIGFzeW5j
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IFRlc3RHcm91cC5mZXRj
aEZvclRhc2soMTM3Nik7CisgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHNhbXBsZVRl
c3RHcm91cCgpKTsKKyAgICAgICAgICAgIGxldCB0ZXN0R3JvdXBzID0gYXdhaXQgZmV0Y2hQcm9t
aXNlOworICAgICAgICAgICAgYXNzZXJ0KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGxldCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHRlc3RHcm91cC5pbml0aWFsUmVwZXRpdGlvbkNvdW50KCksIDIpOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdtYXlOZWVkTW9yZVJlcXVlc3RzJywgKCkgPT4gewor
ICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE1vY2tSZW1vdGVBUEkuaW5qZWN0KCdodHRwczovL3Bl
cmYud2Via2l0Lm9yZycsIE5vZGVQcml2aWxlZ2VkQVBJKTsKKyAgICAgICAgYmVmb3JlRWFjaCgo
KSA9PiB7CisgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLmNvbmZpZ3VyZSgndGVzdCcsICdwYXNz
d29yZCcpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNvbnN0cnVjdCBtYXlO
ZWVkTW9yZVJlcXVlc3RzIGZyb20gZGF0YScsIGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IGZldGNoUHJvbWlzZSA9IFRlc3RHcm91cC5mZXRjaEZvclRhc2soMTM3Nik7CisgICAgICAg
ICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHNhbXBsZVRlc3RHcm91cCgpKTsKKyAgICAgICAgICAg
IGxldCB0ZXN0R3JvdXBzID0gYXdhaXQgZmV0Y2hQcm9taXNlOworICAgICAgICAgICAgYXNzZXJ0
KHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGxldCB0ZXN0R3JvdXAgPSB0ZXN0
R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0Lm9rKHRlc3RHcm91cC5tYXlOZWVkTW9yZVJl
cXVlc3RzKCkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8g
Y2xlYXIgbWF5TmVlZE1vcmVSZXF1ZXN0cyBmbGFnJywgYXN5bmMgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgZmV0Y2hQcm9taXNlID0gVGVzdEdyb3VwLmZldGNoRm9yVGFzaygxMzc2KTsKKyAg
ICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoc2FtcGxlVGVzdEdyb3VwKCkpOworICAgICAg
ICAgICAgbGV0IHRlc3RHcm91cHMgPSBhd2FpdCBmZXRjaFByb21pc2U7CisgICAgICAgICAgICBh
c3NlcnQodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgbGV0IHRlc3RHcm91cCA9
IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQub2sodGVzdEdyb3VwLm1heU5lZWRN
b3JlUmVxdWVzdHMoKSk7CisKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZVByb21pc2UgPSB0ZXN0
R3JvdXAuY2xlYXJNYXlOZWVkTW9yZUJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMV0u
bWV0aG9kLCAnUE9TVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVy
bCwgJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtdGVzdC1ncm91cCcpOworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1sxXS5kYXRhLCB7Z3JvdXA6ICcyMTI4JywgbWF5TmVlZE1v
cmVSZXF1ZXN0czogZmFsc2UsIHNsYXZlTmFtZTogJ3Rlc3QnLCBzbGF2ZVBhc3N3b3JkOiAncGFz
c3dvcmQnfSk7CisgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKCk7CisKKyAgICAgICAg
ICAgIGF3YWl0IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzJdLnVybCwgJy9hcGkvdGVzdC1ncm91cHMvMjEyOCcpOworICAgICAgICAgICAgY29u
c3QgdXBkYXRlZFRlc3RHcm91cCA9IHNhbXBsZVRlc3RHcm91cCh0cnVlLCA0LCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHVwZGF0ZWRUZXN0R3JvdXApOworCisgICAg
ICAgICAgICB0ZXN0R3JvdXBzID0gYXdhaXQgdXBkYXRlUHJvbWlzZTsKKyAgICAgICAgICAgIHRl
c3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdy
b3VwLm1heU5lZWRNb3JlUmVxdWVzdHMoKSwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9KTsK
KwogICAgIGRlc2NyaWJlKCdfY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSB0ZXN0IGdyb3VwcycsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIHZhciBncm91cHMgPSBUZXN0R3JvdXAuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhzYW1wbGVUZXN0R3JvdXAoKSk7Cg==
</data>
<flag name="review"
          id="368937"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>