<?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>177225</bug_id>
          
          <creation_ts>2017-09-20 03:50:44 -0700</creation_ts>
          <short_desc>Update syncing script to be able to build binary for commit set with owned commits.</short_desc>
          <delta_ts>2017-09-28 20:52:29 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>1350709</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-20 03:50:44 -0700</bug_when>
    <thetext>Update syncing script to be able to build binary for commit set with owned commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350710</commentid>
    <comment_count>1</comment_count>
      <attachid>321309</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-20 03:51:35 -0700</bug_when>
    <thetext>Created attachment 321309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350711</commentid>
    <comment_count>2</comment_count>
      <attachid>321309</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-20 03:57:09 -0700</bug_when>
    <thetext>Comment on attachment 321309
Patch

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

&gt; Websites/perf.webkit.org/server-tests/tools-sync-buildbot-integration-tests.js:678
&gt; +
&gt; +

I&apos;ll cleanup those unnecessary blank lines.

&gt; Websites/perf.webkit.org/server-tests/tools-sync-buildbot-integration-tests.js:961
&gt; +

Probably should remove this blank line as welll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352092</commentid>
    <comment_count>3</comment_count>
      <attachid>321309</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-24 16:59:50 -0700</bug_when>
    <thetext>Comment on attachment 321309
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:10
&gt; +        &apos;requiresBuild&apos; should be true whenever commit set item, the repository of which is in the list specified by &apos;requireBuild&apos;, has &apos;requiresBuild&apos; set to true.

This line is too long. Please wrap it earlier.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:55
&gt; +            if (item.commitOwner)
&gt; +                this._ownedRepositories.push(commit.repository());

I don&apos;t think we need to build this map separately.
We can just traverse through keys of _repositoryToCommitOwnerMap.
In fact, I&apos;d suggest we don&apos;t store a value into _repositoryToCommitOwnerMap when item.commitOwner is null/undefined.

In general, it&apos;s a bad idea to have multiple data structures that need to be kept in sync.
That can lead to bugs if we ever mutate CommitSet for example.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:194
&gt; +        if (ownerRevision)
&gt; +            this._ownedRepositories.push(repository);

Ditto. We should be able to filter keys of _revisionListByRepository by its value not having ownerRevision.

&gt; Websites/perf.webkit.org/public/v3/models/triggerable.js:68
&gt;          // FIXME: Add a check for patch.

Looks like this FIXME is obsolete. Remove?

&gt; Websites/perf.webkit.org/public/v3/models/triggerable.js:70
&gt; +        const ownedRepositorySet = new Set(commitSet.ownedRepositories());
&gt; +        const commitSetRepositories = Repository.sortByNamePreferringOnesWithURL(commitSet.repositories().filter((repository) =&gt; { return !ownedRepositorySet.has(repository); }));

Instead of all this work here, we should simply add a method which returns a sorted list of repositories that don&apos;t have an owner.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:263
&gt; +            case &apos;pairs&apos;:

This is such a vague/generic name. It doesn&apos;t tell me anything about what kind of pair this is.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:267
&gt; +                value = JSON.stringify(ownedRepositories.map((ownedRepository) =&gt; {

So this is not a pair at all. It&apos;s an array of dictionaries!
It&apos;s a shortsighted design to put all owned repositories into one JSON.
I think we should just get a list of all owned revisions for a given owner repository instead.
After making that change, this option can be called &quot;ownedRevisions&quot; so that we can specify:
e.g. {&quot;ownedRevisions&quot;: &quot;iOS&quot;}.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:273
&gt; +                        &apos;owner-revision&apos;: commitSet.ownerRevisionForRepository(ownedRepository),
&gt; +                        &apos;owner-repository&apos;: commitSet.ownerCommitForRepository(ownedRepository).repository().name()

We should use camelCase instead.
If we&apos;ve made the change to only specify the owned revisions for a given owner repository,
then ownerRepository can be removed.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:279
&gt; +            case &quot;requiresBuild&quot;:
&gt; +                value = value.repositoriesToCheck.map(commitSet.requiresBuildForRepository.bind(commitSet)).some((requiresBuild) =&gt; requiresBuild);
&gt; +                break;

This is wrong. When WebKit doesn&apos;t need to be built, the property must not be set.
Also, this needs to be folded into &apos;conditional&apos; type below. r- because of this.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:471
&gt; +                case &apos;pairs&apos;:

We shouldn&apos;t be using such a vague term for the option name.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:474
&gt; +                    return {type, repositoriesToCheck: value.map(resolveRepository)};

I don&apos;t think it makes sense to call this option &quot;requiresBuild&quot; since what the user of this feature is doing is specifying a list of repositories, if set, should trigger a build.
How about something like &quot;ifRepositoriesSet&quot;.
Also, this should be returning a conditional type property instead of its own type. See what we have for &quot;ifBuilt&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352626</commentid>
    <comment_count>4</comment_count>
      <attachid>321808</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-26 03:07:02 -0700</bug_when>
    <thetext>Created attachment 321808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353041</commentid>
    <comment_count>5</comment_count>
      <attachid>321808</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-27 00:58:30 -0700</bug_when>
    <thetext>Comment on attachment 321808
Patch

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

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:72
&gt; +    topLevelRepositoriesSortedByNamePreferringOnesWithURL() {

We can just call this topLevelRepositories() instead.
Nit: { should be on the next line.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:223
&gt; +    topLevelRepositoriesSortedByNamePreferringOnesWithURL() {

Ditto.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:476
&gt; +                case &apos;ownedRevisions&apos;:
&gt; +                    return {type, ownerRepositories: value.map(resolveRepository)};

I don&apos;t think we need or should have a list of owner repositories.
For simplicity, just support a single owner instead.
e.g. we&apos;d just specify iOS or macOS in our internal dashboard.

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:1007
&gt; +                    &apos;checkbox&apos;: {&apos;ifRepositorySet&apos;: {&apos;value&apos;: &apos;build-webkit&apos;, &apos;repositoriesToCheck&apos;: [&apos;WebKit&apos;]}},

There&apos;s no need to have two nested dictionaries like this.
We should relax the restriction in _parseRepositoryGroupPropertyTemplate that option&apos;s dictionary can only contain a single key,
and specify value &amp; repositoriesToCheck in the outer dictionary as in:
{&apos;fRepositorySet&apos;: [&apos;WebKit&apos;], &apos;value&apos;: &apos;build-webkit&apos;}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354059</commentid>
    <comment_count>6</comment_count>
      <attachid>321808</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-28 01:11:04 -0700</bug_when>
    <thetext>Comment on attachment 321808
Patch

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

&gt;&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:1007
&gt;&gt; +                    &apos;checkbox&apos;: {&apos;ifRepositorySet&apos;: {&apos;value&apos;: &apos;build-webkit&apos;, &apos;repositoriesToCheck&apos;: [&apos;WebKit&apos;]}},
&gt; 
&gt; There&apos;s no need to have two nested dictionaries like this.
&gt; We should relax the restriction in _parseRepositoryGroupPropertyTemplate that option&apos;s dictionary can only contain a single key,
&gt; and specify value &amp; repositoriesToCheck in the outer dictionary as in:
&gt; {&apos;fRepositorySet&apos;: [&apos;WebKit&apos;], &apos;value&apos;: &apos;build-webkit&apos;}

How do we determine which key of this dictionary should be used as first argument of makeOption?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354429</commentid>
    <comment_count>7</comment_count>
      <attachid>322162</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-09-28 20:38:43 -0700</bug_when>
    <thetext>Created attachment 322162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354432</commentid>
    <comment_count>8</comment_count>
      <attachid>322162</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-28 20:52:29 -0700</bug_when>
    <thetext>Comment on attachment 322162
Patch

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

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:72
&gt; +    topLevelRepositories() { return Repository.sortByNamePreferringOnesWithURL(this._repositories.filter((repository) =&gt; { return !this.ownerRevisionForRepository(repository); })); }

This is pretty long.
Could you split into multiple lines.
Also, you don&apos;t need { return ~ }. You can just do this._repositories.filter((repository) =&gt; !this.ownerRevisionForRepository(repository))

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:220
&gt; +    topLevelRepositories() { return Repository.sortByNamePreferringOnesWithURL(this.repositories().filter((repository) =&gt; { return !this.ownerRevisionForRepository(repository); })); }

Ditto.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:285
&gt; +                    const requiresBuild = value.repositoriesToCheck.map(commitSet.requiresBuildForRepository.bind(commitSet)).some((requiresBuild) =&gt; requiresBuild);

Just do repositoriesToCheck.some((commitSet) =&gt; commitSet.requiresBuildForRepository()) instead.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321309</attachid>
            <date>2017-09-20 03:51:35 -0700</date>
            <delta_ts>2017-09-26 03:07:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177225-20170920035134.patch</filename>
            <type>text/plain</type>
            <size>44470</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjI4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlZjYwMjhhNDI2MGNlYTkzYmEyMjU1MmZkYTRlZjQyYzJlODc0NGMwLi5mYWFhZjgyYzBm
MTYwNjcxY2Q5ZjJmMGU3YjE0NGVmZTcxMDc4ZDQzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNy0wOS0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0
byBidWlsZCBiaW5hcnkgZm9yIGNvbW1pdCBzZXQgd2l0aCBvd25lZCBjb21taXRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBm
b3Igc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0byBzY2hlZHVsZSBidWlsZHMgdG8gYnVpbGQg
YmluYXJ5IGZvciBvd25lZCBjb21taXRzLgorICAgICAgICBJbnRyb2R1Y2VzICdyZXF1aXJlc0J1
aWxkJyBhbmQgJ3BhaXJzJyBpbiAnYnVpbGRQcm9wZXJ0aWVzJy4KKyAgICAgICAgJ3JlcXVpcmVz
QnVpbGQnIHNob3VsZCBiZSB0cnVlIHdoZW5ldmVyIGNvbW1pdCBzZXQgaXRlbSwgdGhlIHJlcG9z
aXRvcnkgb2Ygd2hpY2ggaXMgaW4gdGhlIGxpc3Qgc3BlY2lmaWVkIGJ5ICdyZXF1aXJlQnVpbGQn
LCBoYXMgJ3JlcXVpcmVzQnVpbGQnIHNldCB0byB0cnVlLgorICAgICAgICAncGFpcnMnIHNwZWNp
ZmllcyBvd25lZCBjb21taXRzIHJldmlzaW9uIGluZm9ybWF0aW9ucy4KKworICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qczoKKyAgICAgICAgKENvbW1pdFNldCk6IEFkZGVk
ICdfb3duZWRSZXBvc2l0b3JpZXMnIGxpc3QuCisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBl
LnVwZGF0ZVNpbmdsZXRvbik6IFJlc2V0ICdfb3duZWRSZXBvc2l0b3JpZXMnIHRvIGJlIGVtcHR5
IGxpc3QuCisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLl91cGRhdGVGcm9tT2JqZWN0KTog
U2hvdWxkIGFkZCByZXBvc2l0b3J5IHRvICdfb3duZWRSZXBvc2l0b3JpZXMnIHdoZW4gY29tbWl0
T3duZXIgaXMgc2V0LiAKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUub3duZWRSZXBvc2l0
b3JpZXMpOiBSZXR1cm5zICdfb3duZWRSZXBvc2l0b3JpZXMnLgorICAgICAgICAoQ29tbWl0U2V0
LnByb3RvdHlwZS5vd25lckNvbW1pdEZvclJlcG9zaXRvcnkpOiBSZXR1cm5zIG93bmVyIGNvbW1p
dCBnaXZlbiBhbiBvd25lZCByZXBvc2l0b3J5LgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0KTog
QWRkZWQgJ19vd25lZFJlcG9zaXRvcmllcycgbGlzdC4KKyAgICAgICAgKEN1c3RvbUNvbW1pdFNl
dC5wcm90b3R5cGUuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KTogU2hvdWxkIGFkZCByZXBvc2l0
b3J5IHRvICdfb3duZWRSZXBvc2l0b3JpZXMnIHdoZW4gb3duZXJSZXZpc2lvbiBpcyBzZXQuCisg
ICAgICAgIChDdXN0b21Db21taXRTZXQucHJvdG90eXBlLm93bmVkUmVwb3NpdG9yaWVzKTogUmV0
dXJucyBvd25lZCByZXBvc2l0b3JpZXMuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy90cmln
Z2VyYWJsZS5qczoKKyAgICAgICAgKHByb3RvdHlwZS5hY2NlcHRzKTogSXQgc2hvdWxkIG9ubHkg
Y2hlY2tzIGFnYWluc3QgdG9wLWxldmVsIHJlcG9zaXRvcmllcy4KKyAgICAgICAgKiBzZXJ2ZXIt
dGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogQWRkZWQgdW5p
dCB0ZXN0IGZvciBidWlsZGluZyBvd25lZCBjb21taXRzIGJpbmFyeS4KKyAgICAgICAgKGNyZWF0
ZVRyaWdnZXJhYmxlKTogQWRkZWQgJ3JlcXVpcmVzQnVpbGQnIGFuZCAncGFpcnMnIGluIHRoZSBy
ZXBvc2l0b3J5IGdyb3Vwcy4KKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanM6
CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUuX3Byb3BlcnRpZXNGb3JCdWlsZFJl
cXVlc3QpOiBBZGRlZCBsb2dpYyB0byBjcmVhdGUgJ3JlcXVpcmVzQnVpbGQnIGFuZCAncGFpcnMn
IGJ1aWxkIHByb3BlcnRpZXMuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5fcGFyc2VSZXBvc2l0
b3J5R3JvdXApOiBCdWlsZCBwcm9wZXJ0eSB0ZW1wbGF0ZSBzaG91bGQgYmUgYWJsZSB0byBoYW5k
bGUgJ3JlcXVpcmVzQnVpbGQnIGFuZCAncGFpcnMnLgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVp
bGRib3Qtc3luY2VyLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzIGZvciAncmVxdWlyZXNCdWls
ZCcgYW5kICdwYWlycycuCisgICAgICAgICogdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpz
OiBBZGRlZCB1bml0IHRlc3RzIGZvciAnb3duZWRSZXBvc2l0b3JpZXMnLgorICAgICAgICAqIHVu
aXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzOiBBZGRlZCBhIHJlcG9zaXRvcnkg
Z3JvdXAgY29udGFpbnMgJ2lvcycsICd3ZWJraXQnIGFuZCAnb3duZXJSZXBvc2l0b3J5Jy4KKwog
MjAxNy0wOS0xOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgJ293bmVkIGNvbW1pdCcgaW5zdGVhZCBvZiAnc3ViIGNvbW1pdCcgd2hlbmV2ZXIgcmVmZXJz
IHRvIGEgY29tbWl0IG93bmVkIGJ5IGFub3RoZXIgY29tbWl0LgpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKaW5kZXgg
Y2I4ZTZmMjA1YTI3MTUwOTYxMjM5NjFiMjU5Yjk3NzJkMTFkNmQ2Ni4uM2FlYmUwZTVhNzQwMjFl
NDJiMmU0NGNmNGIwYWFiYzEzYjkyZWRiMSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCkBAIC02LDYgKzYsNyBA
QCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIHsKICAgICAg
ICAgc3VwZXIoaWQpOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMgPSBbXTsKKyAgICAgICAg
dGhpcy5fb3duZWRSZXBvc2l0b3JpZXMgPSBbXTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRv
Q29tbWl0TWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAg
PSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwID0gbmV3IE1hcDsK
QEAgLTI5LDYgKzMwLDcgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0
IHsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuY2xlYXIoKTsKICAg
ICAgICAgdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuY2xlYXIoKTsKICAgICAgICAg
dGhpcy5fcmVwb3NpdG9yaWVzID0gW107CisgICAgICAgIHRoaXMuX293bmVkUmVwb3NpdG9yaWVz
ID0gW107CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZyb21PYmplY3Qob2JqZWN0KTsKICAgICB9CiAK
QEAgLTQ5LDYgKzUxLDggQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0
IHsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuc2V0KHJlcG9zaXRvcnks
IGl0ZW0ucm9vdEZpbGUpOwogICAgICAgICAgICAgaWYgKGl0ZW0ucm9vdEZpbGUpCiAgICAgICAg
ICAgICAgICAgcm9vdEZpbGVzLmFkZChpdGVtLnJvb3RGaWxlKTsKKyAgICAgICAgICAgIGlmIChp
dGVtLmNvbW1pdE93bmVyKQorICAgICAgICAgICAgICAgIHRoaXMuX293bmVkUmVwb3NpdG9yaWVz
LnB1c2goY29tbWl0LnJlcG9zaXRvcnkoKSk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3Jp
ZXMucHVzaChjb21taXQucmVwb3NpdG9yeSgpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9j
dXN0b21Sb290cyA9IG9iamVjdC5jdXN0b21Sb290czsKQEAgLTU2LDkgKzYwLDExIEBAIGNsYXNz
IENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgfQogCiAgICAgcmVwb3Np
dG9yaWVzKCkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yaWVzOyB9CisgICAgb3duZWRSZXBvc2l0
b3JpZXMoKSB7IHJldHVybiB0aGlzLl9vd25lZFJlcG9zaXRvcmllczsgfQogICAgIGN1c3RvbVJv
b3RzKCkgeyByZXR1cm4gdGhpcy5fY3VzdG9tUm9vdHM7IH0KICAgICBhbGxSb290RmlsZXMoKSB7
IHJldHVybiB0aGlzLl9hbGxSb290RmlsZXM7IH0KICAgICBjb21taXRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3Np
dG9yeSk7IH0KKyAgICBvd25lckNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1
cm4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CiAK
ICAgICByZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkKICAgICB7CkBAIC0xNzUsNiAr
MTgxLDcgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkgPSBuZXcgTWFwOworICAg
ICAgICB0aGlzLl9vd25lZFJlcG9zaXRvcmllcyA9IFtdOwogICAgICAgICB0aGlzLl9jdXN0b21S
b290cyA9IFtdOwogICAgIH0KIApAQCAtMTgzLDYgKzE5MCw4IEBAIGNsYXNzIEN1c3RvbUNvbW1p
dFNldCB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBv
c2l0b3J5KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXBhdGNoIHx8IHBhdGNoIGluc3RhbmNl
b2YgVXBsb2FkZWRGaWxlKTsKICAgICAgICAgdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5
LnNldChyZXBvc2l0b3J5LCB7cmV2aXNpb24sIHBhdGNoLCBvd25lclJldmlzaW9ufSk7CisgICAg
ICAgIGlmIChvd25lclJldmlzaW9uKQorICAgICAgICAgICAgdGhpcy5fb3duZWRSZXBvc2l0b3Jp
ZXMucHVzaChyZXBvc2l0b3J5KTsKICAgICB9CiAKICAgICBlcXVhbHMob3RoZXIpCkBAIC0yMDQs
NiArMjEzLDcgQEAgY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKICAgICB9CiAKICAgICByZXBvc2l0
b3JpZXMoKSB7IHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9y
eS5rZXlzKCkpOyB9CisgICAgb3duZWRSZXBvc2l0b3JpZXMoKSB7IHJldHVybiB0aGlzLl9vd25l
ZFJlcG9zaXRvcmllczsgfQogICAgIHJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KQog
ICAgIHsKICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRv
cnkuZ2V0KHJlcG9zaXRvcnkpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvdHJpZ2dlcmFibGUuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy90cmlnZ2VyYWJsZS5qcwppbmRleCAzZWE4ZTIxNDVmY2EwZDFi
NmZiZjQwYTY0NDdlZDBiNjcyNTRlMjE3Li42NGUzYjEzMWVmNGM5OTEyZDIwN2FkZTViOTU1NGEx
ODYxYzNkNWM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy90cmlnZ2VyYWJsZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy90cmlnZ2VyYWJsZS5qcwpAQCAtNjYsNyArNjYsOCBAQCBjbGFzcyBUcmln
Z2VyYWJsZVJlcG9zaXRvcnlHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgIGFjY2Vw
dHMoY29tbWl0U2V0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNoZWNrIGZvciBw
YXRjaC4KLSAgICAgICAgY29uc3QgY29tbWl0U2V0UmVwb3NpdG9yaWVzID0gUmVwb3NpdG9yeS5z
b3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSk7
CisgICAgICAgIGNvbnN0IG93bmVkUmVwb3NpdG9yeVNldCA9IG5ldyBTZXQoY29tbWl0U2V0Lm93
bmVkUmVwb3NpdG9yaWVzKCkpOworICAgICAgICBjb25zdCBjb21taXRTZXRSZXBvc2l0b3JpZXMg
PSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoY29tbWl0U2V0LnJl
cG9zaXRvcmllcygpLmZpbHRlcigocmVwb3NpdG9yeSkgPT4geyByZXR1cm4gIW93bmVkUmVwb3Np
dG9yeVNldC5oYXMocmVwb3NpdG9yeSk7IH0pKTsKICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRv
cmllcy5sZW5ndGggIT0gY29tbWl0U2V0UmVwb3NpdG9yaWVzLmxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9yZXBvc2l0
b3JpZXMubGVuZ3RoOyBpKyspIHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJv
dC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwppbmRleCBiYWRhNTdhMWI2NTRmNzBlZTI2NGRmMDFiMDQw
ZTI1NWJiN2Y5ZmI1Li5jNGFhMDQ3ZWRkMWY5ZmM2OGQ4ODdmZjcwOWYxN2ZiZjMyNzE4N2E0IDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5
bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3Rz
LmpzCkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVRyaWdnZXJhYmxlKCkKICAgICAg
ICAgICAgICAgICAnd2Via2l0JzogewogICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXM6
IHsnV2ViS2l0Jzoge2FjY2VwdHNQYXRjaDogdHJ1ZX19LAogICAgICAgICAgICAgICAgICAgICB0
ZXN0UHJvcGVydGllczogeyd3ayc6IHsncmV2aXNpb24nOiAnV2ViS2l0J30sICdyb290cyc6IHsn
cm9vdHMnOiB7fX19LAotICAgICAgICAgICAgICAgICAgICBidWlsZFByb3BlcnRpZXM6IHsnd2sn
OiB7J3JldmlzaW9uJzogJ1dlYktpdCd9LCAnd2stcGF0Y2gnOiB7J3BhdGNoJzogJ1dlYktpdCd9
fSwKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRQcm9wZXJ0aWVzOiB7J3drJzogeydyZXZpc2lv
bic6ICdXZWJLaXQnfSwgJ3drLXBhdGNoJzogeydwYXRjaCc6ICdXZWJLaXQnfSwgImJ1aWxkLXdr
IjogeydyZXF1aXJlc0J1aWxkJzogWydXZWJLaXQnXX0sICdvd25lZC1jb21taXRzJzogeydwYWly
cyc6IG51bGx9fSwKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0c1Jvb3RzOiB0cnVlLAogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCkBAIC04NCw2ICs4NCwyMiBAQCBmdW5jdGlv
biBjcmVhdGVUZXN0R3JvdXBXaWhQYXRjaCgpCiAgICAgfSkKIH0KIAorZnVuY3Rpb24gY3JlYXRl
VGVzdEdyb3VwV2loT3duZWRDb21taXQoKQoreworICAgIGNvbnN0IHNvbWVUZXN0ID0gVGVzdC5m
aW5kQnlJZChNb2NrRGF0YS5zb21lVGVzdElkKCkpOworICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9z
aXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAgIGNvbnN0
IG93bmVkU0pDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRv
cnlJZCgpKTsKKyAgICBjb25zdCBzZXQxID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKKyAgICBzZXQx
LnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQsICcxOTE2MjInKTsKKyAgICBzZXQxLnNl
dFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNKQywgJ293bmVkLWpzYy02MTYxJywgbnVsbCwg
JzE5MTYyMicpOworICAgIGNvbnN0IHNldDIgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OworICAgIHNl
dDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCwgJzE5MjczNicpOworICAgIHNldDIu
c2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkU0pDLCAnb3duZWQtanNjLTkxOTEnLCBudWxs
LCAnMTkyNzM2Jyk7CisgICAgcmV0dXJuIFRlc3RHcm91cC5jcmVhdGVXaXRoVGFzaygnY3VzdG9t
IHRhc2snLCBQbGF0Zm9ybS5maW5kQnlJZChNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpKSwgc29t
ZVRlc3QsICdzb21lIGdyb3VwJywgMiwgW3NldDEsIHNldDJdKS50aGVuKCh0YXNrKSA9PiB7Cisg
ICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmluZEFsbEJ5VGFzayh0YXNrLmlkKCkpWzBdOworICAg
IH0pOworfQorCiBmdW5jdGlvbiB1cGxvYWRSb290KGJ1aWxkUmVxdWVzdElkLCBidWlsZE51bWJl
cikKIHsKICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZShgcm9vdCR7
YnVpbGROdW1iZXJ9LmRhdGAsIGByb290IGZvciBidWlsZCAke2J1aWxkTnVtYmVyfWApLnRoZW4o
KHJvb3RGaWxlKSA9PiB7CkBAIC0xNzQsNyArMTkwLDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRi
b3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVu
Z3RoLCA3KTsKICAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzZd
LCAnUE9TVCcsICcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvZm9yY2UnLCAnT0snKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbNl0uZGF0YSwgeyd3ayc6ICcxOTE2MjIn
LCAnd2stcGF0Y2gnOiBSZW1vdGVBUEkudXJsKCcvYXBpL3VwbG9hZGVkLWZpbGUvMS5kYXQnKSwK
LSAgICAgICAgICAgICAgICAnYnVpbGQtcmVxdWVzdC1pZCc6ICcxJywgJ2ZvcmNlc2NoZWR1bGVy
JzogJ2ZvcmNlLWFiLWJ1aWxkcyd9KTsKKyAgICAgICAgICAgICAgICAnYnVpbGQtcmVxdWVzdC1p
ZCc6ICcxJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLWFiLWJ1aWxkcycsICdidWlsZC13ayc6
IHRydWUsICdvd25lZC1jb21taXRzJzogIltdIn0pOwogICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxMCk7CkBAIC0yODYsNyArMzAy
LDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Nyk7CiAgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s2XSwgJ1BP
U1QnLCAnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2ZvcmNlJywgJ09LJyk7Ci0gICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzZdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ2J1
aWxkLXJlcXVlc3QtaWQnOiAnMicsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1hYi1idWlsZHMn
fSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzZdLmRhdGEsIHsnd2sn
OiAnMTkxNjIyJywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnMicsICdmb3JjZXNjaGVkdWxlcic6ICdm
b3JjZS1hYi1idWlsZHMnLCAnYnVpbGQtd2snOiB0cnVlLCAnb3duZWQtY29tbWl0cyc6ICJbXSJ9
KTsKICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgMTApOwpAQCAtNjU4LDQgKzY3NCwyODkgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRi
b3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0pOwogICAgIH0pOwogCisKKworICAgIGl0KCdz
aG91bGQgc2NoZWR1bGUgYSBidWlsZCB0byBidWlsZCBiaW5hcnkgZm9yIG93bmVkIGNvbW1pdHMn
LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
czsKKyAgICAgICAgbGV0IHRyaWdnZXJhYmxlOworICAgICAgICBsZXQgdGFza0lkID0gbnVsbDsK
KyAgICAgICAgbGV0IHN5bmNQcm9taXNlOworICAgICAgICByZXR1cm4gY3JlYXRlVHJpZ2dlcmFi
bGUoKS50aGVuKChuZXdUcmlnZ2VyYWJsZSkgPT4geworICAgICAgICAgICAgdHJpZ2dlcmFibGUg
PSBuZXdUcmlnZ2VyYWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBXaWhP
d25lZENvbW1pdCgpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXApID0+IHsKKyAgICAgICAg
ICAgIHRhc2tJZCA9IHRlc3RHcm91cC50YXNrKCkuaWQoKTsKKyAgICAgICAgICAgIGNvbnN0IHdl
YmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkp
OworICAgICAgICAgICAgY29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tE
YXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRl
c3RHcm91cC5idWlsZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3Qg
YnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAg
IGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVp
bGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChi
dWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21t
aXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJl
cG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25l
ZEpTQyksIGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisg
ICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVl
c3RzKClbMV07CisgICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgp
KTsKKyAgICAgICAgICAgIGFzc2VydCghb3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdX
YWl0aW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3Rh
dHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1
ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0
ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9z
aXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21t
aXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJS
ZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVy
Q29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIHN5bmNQcm9taXNl
ID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNP
bmNlKCkpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJl
cXVlc3RzWzBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1
aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3Rz
WzFdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMn
LCBbXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1syXSwg
J0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtd
KTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Cisg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
Lmxlbmd0aCwgNik7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0
c1szXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0
PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0
KHJlcXVlc3RzWzRdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxk
cy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29s
dmVSZXF1ZXN0KHJlcXVlc3RzWzVdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVp
bGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOworICAgICAg
ICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWls
ZGVycy9zb21lJTIwYnVpbGRlci9mb3JjZScsICdPSycpOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdidWlsZC1yZXF1ZXN0
LWlkJzogJzEnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJywgJ2J1aWxkLXdr
JzogZmFsc2UsICdvd25lZC1jb21taXRzJzogYFt7InJldmlzaW9uIjoib3duZWQtanNjLTYxNjEi
LCJyZXBvc2l0b3J5IjoiSmF2YVNjcmlwdENvcmUiLCJvd25lci1yZXZpc2lvbiI6IjE5MTYyMiIs
Im93bmVyLXJlcG9zaXRvcnkiOiJXZWJLaXQifV1gfSk7CisgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEwKTsKKyAgICAgICAgICAg
IGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzddLCAnR0VUJywgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2Vy
dEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzhdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3Nv
bWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLAorICAgICAgICAgICAgICAgIFtNb2NrRGF0YS5w
ZW5kaW5nQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXInLCBidWlsZFJlcXVlc3RJZDogMX0p
XSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s5XSwgJ0dF
VCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsK
KyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMTMpOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNb
MTBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvYnVpbGRzLz9zZWxlY3Q9
LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3Qo
cmVxdWVzdHNbMTFdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxk
cy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHsKKyAgICAgICAgICAgICAgICBbLTFdOiBNb2NrRGF0
YS5ydW5uaW5nQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXInLCBidWlsZFJlcXVlc3RJZDog
MX0pCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0
KHJlcXVlc3RzWzEyXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvYnVp
bGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgcmV0dXJuIHN5bmNQ
cm9taXNlOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RH
cm91cHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRS
ZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnku
ZmluZEJ5SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAg
ICAgICAgICBjb25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBd
OworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAg
ICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnUnVubmluZycpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJr
aXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAg
ICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
JzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJl
cG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJl
cG9zaXRvcnkob3duZWRKU0MpLCBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtp
dCkpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZpbGVz
KCksIFtdKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3Jv
dXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAgICAgYXNzZXJ0KG90aGVyQnVpbGRSZXF1
ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIW90aGVyQnVpbGRSZXF1ZXN0Lmlz
VGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0
dXNMYWJlbCgpLCAnV2FpdGluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVp
bGRSZXF1ZXN0LnN0YXR1c1VybCgpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
dGhlckJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBv
dGhlckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
cGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29t
bWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgb3RoZXJDb21taXRT
ZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChvdGhlckNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAg
ICByZXR1cm4gdXBsb2FkUm9vdChidWlsZFJlcXVlc3QuaWQoKSwgMTIzKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0
YXNrSWQsIHRydWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29u
c3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAg
ICAgICAgICAgY29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93
bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91
cC5idWlsZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2Vy
dChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1
ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3Rh
dHVzTGFiZWwoKSwgJ0NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3Nv
bWUlMjBidWlsZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChi
dWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0
U2V0ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBjb25zdCB3ZWJr
aXRSb290ID0gY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAg
ICBhc3NlcnQod2Via2l0Um9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwod2Via2l0Um9vdC5maWxlbmFtZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbd2Vi
a2l0Um9vdF0pOworCisgICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RH
cm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJl
cXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghb3RoZXJCdWlsZFJlcXVlc3Qu
aXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0
YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJC
dWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0
IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdl
YmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJD
b21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNvbW1p
dFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKyAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJp
Z2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkp
OworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3Rz
WzBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycs
IFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzFdLCAn
R0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7
CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1syXSwgJ0dFVCcs
ICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNik7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1szXSwg
J0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNl
bGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVl
c3RzWzRdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8/c2Vs
ZWN0PS0xJnNlbGVjdD0tMicsIHsKKyAgICAgICAgICAgICAgICBbLTFdOiBNb2NrRGF0YS5maW5p
c2hlZEJ1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6IDF9KQor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1
ZXN0c1s1XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvYnVpbGRzLz9z
ZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA3KTsKKyAgICAgICAgICAgIGFzc2VydEFu
ZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzZdLCAnUE9TVCcsICcvYnVpbGRlcnMvc29tZSUyMGJ1
aWxkZXIvZm9yY2UnLCAnT0snKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVxdWVz
dHNbNl0uZGF0YSwgeyd3ayc6ICcxOTI3MzYnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICcyJywgJ2Zv
cmNlc2NoZWR1bGVyJzogJ2ZvcmNlLWFiLWJ1aWxkcycsICdidWlsZC13ayc6IGZhbHNlLCAnb3du
ZWQtY29tbWl0cyc6IGBbeyJyZXZpc2lvbiI6Im93bmVkLWpzYy05MTkxIiwicmVwb3NpdG9yeSI6
IkphdmFTY3JpcHRDb3JlIiwib3duZXItcmV2aXNpb24iOiIxOTI3MzYiLCJvd25lci1yZXBvc2l0
b3J5IjoiV2ViS2l0In1dYH0pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2Fp
dEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNv
bHZlUmVxdWVzdChyZXF1ZXN0c1s3XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVz
dGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVx
dWVzdChyZXF1ZXN0c1s4XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlci9w
ZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3Qo
cmVxdWVzdHNbOV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvb3RoZXIlMjBidWlsZGVyL3BlbmRp
bmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEzKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVS
ZXF1ZXN0KHJlcXVlc3RzWzEwXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVy
L2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFu
ZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzExXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21l
JTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7CisgICAgICAgICAgICAg
ICAgWy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyJywg
YnVpbGRSZXF1ZXN0SWQ6IDJ9KSwKKyAgICAgICAgICAgICAgICBbLTJdOiBNb2NrRGF0YS5maW5p
c2hlZEJ1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6IDF9KSwK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVx
dWVzdHNbMTJdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9idWlsZHMv
P3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1cm4gc3luY1Byb21p
c2U7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91
cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3Vw
cykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAg
ICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9z
aXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5k
QnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAg
ICAgIGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07Cisg
ICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBh
c3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
YnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBh
c3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCks
ICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JS
ZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1p
dFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3du
ZWRKU0MpLCBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAg
ICAgICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOworICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZp
bGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jv
b3QxMjMuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxS
b290RmlsZXMoKSwgW3dlYmtpdFJvb3RdKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWls
ZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAgICAgYXNz
ZXJ0KG90aGVyQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIW90
aGVyQnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhl
ckJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnUnVubmluZycpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAg
ICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0
U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Vi
a2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3du
ZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRK
U0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBb
XSk7CisKKyAgICAgICAgICAgIHJldHVybiB1cGxvYWRSb290KG90aGVyQnVpbGRSZXF1ZXN0Lmlk
KCksIDEyNCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRl
c3RHcm91cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVz
dEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAg
ICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtp
dFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9y
eS5maW5kQnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAg
ICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClb
MF07CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAg
ICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQu
d2Via2l0Lm9yZy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAg
ICAgICBhc3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAg
ICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdl
YmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0
Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRv
cnkob3duZWRKU0MpLCBjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOwor
ICAgICAgICAgICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9y
eSh3ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxv
YWRlZEZpbGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUo
KSwgJ3Jvb3QxMjMuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNl
dC5hbGxSb290RmlsZXMoKSwgW3dlYmtpdFJvb3RdKTsKKworICAgICAgICAgICAgY29uc3Qgb3Ro
ZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAg
ICAgYXNzZXJ0KG90aGVyQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3Nl
cnQoIW90aGVyQnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8v
YnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7Cisg
ICAgICAgICAgICBhc3NlcnQubm90RXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBu
dWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxkUmVx
dWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90
aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAg
IGNvbnN0IG90aGVyV2Via2l0Um9vdCA9IG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5
KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQob3RoZXJXZWJraXRSb290IGluc3RhbmNlb2Yg
VXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlcldlYmtpdFJvb3Qu
ZmlsZW5hbWUoKSwgJ3Jvb3QxMjQuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbb3RoZXJXZWJraXRSb290XSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCiB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCmluZGV4IDU4OGFmOTA2OTIxZTEwYmUxOWFl
YmQxYjc4MmNmMjBhOWFiYmMxNmYuLmQxNzJkODBkNzZhZWQyY2NiZTRlNmMxOTA1M2I2NjBiY2Fk
NGYwNjkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWls
ZGJvdC1zeW5jZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1
aWxkYm90LXN5bmNlci5qcwpAQCAtMjYwLDYgKzI2MCwyMyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNl
ciB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHZhbHVl
ID0gSlNPTi5zdHJpbmdpZnkocm9vdEZpbGVzLm1hcCgoZmlsZSkgPT4gKHt1cmw6IGZpbGUudXJs
KCl9KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncGFpcnMn
OgorICAgICAgICAgICAgICAgIGNvbnN0IG93bmVkUmVwb3NpdG9yaWVzID0gY29tbWl0U2V0Lm93
bmVkUmVwb3NpdG9yaWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFvd25lZFJlcG9zaXRvcmll
cykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBKU09OLnN0cmluZ2lmeShvd25lZFJlcG9zaXRvcmllcy5tYXAoKG93bmVkUmVwb3NpdG9yeSkg
PT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29tbWl0U2V0LnJlcXVpcmVzQnVpbGRG
b3JSZXBvc2l0b3J5KG93bmVkUmVwb3NpdG9yeSksIGBDb21taXRTZXQgJHtjb21taXRTZXQuaWQo
KX0gaGFzIGFuIG93bmVkIHJlcG9zaXRvcnkgJHtvd25lZFJlcG9zaXRvcnkuaWQoKX0gdGhhdCBk
b2VzIG5vdCByZXF1aXJlIGJ1aWxkYCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAncmV2aXNpb24nOiBjb21taXRTZXQucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KG93bmVkUmVwb3NpdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAncmVw
b3NpdG9yeSc6IG93bmVkUmVwb3NpdG9yeS5uYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAnb3duZXItcmV2aXNpb24nOiBjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnko
b3duZWRSZXBvc2l0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdvd25lci1yZXBvc2l0
b3J5JzogY29tbWl0U2V0Lm93bmVyQ29tbWl0Rm9yUmVwb3NpdG9yeShvd25lZFJlcG9zaXRvcnkp
LnJlcG9zaXRvcnkoKS5uYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICB9KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJyZXF1
aXJlc0J1aWxkIjoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcG9zaXRvcmllc1Rv
Q2hlY2subWFwKGNvbW1pdFNldC5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeS5iaW5kKGNvbW1p
dFNldCkpLnNvbWUoKHJlcXVpcmVzQnVpbGQpID0+IHJlcXVpcmVzQnVpbGQpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnY29uZGl0aW9uYWwnOgogICAgICAgICAg
ICAgICAgIHN3aXRjaCAodmFsdWUuY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAn
YnVpbHQnOgpAQCAtNDQwLDE1ICs0NTcsMjEgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAg
ICAgICAgICAgY29uc3QgcGF0Y2hSZXBvc2l0b3JpZXMgPSBuZXcgU2V0OwogICAgICAgICAgICAg
YnVpbGRQcm9wZXJ0aWVzVGVtcGxhdGUgPSB0aGlzLl9wYXJzZVJlcG9zaXRvcnlHcm91cFByb3Bl
cnR5VGVtcGxhdGUoJ2J1aWxkJywgbmFtZSwgZ3JvdXAuYnVpbGRQcm9wZXJ0aWVzLCAodHlwZSwg
dmFsdWUpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQodHlwZSAhPSAncm9vdHMnLCBgUmVw
b3NpdG9yeSBncm91cCAiJHtuYW1lfSIgc3BlY2lmaWVzIHJvb3RzIGluIHRoZSBwcm9wZXJ0aWVz
IGZvciBidWlsZGluZ2ApOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSByZXNv
bHZlUmVwb3NpdG9yeSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbGV0IHJlcG9zaXRvcnkgPSBu
dWxsOwogICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgIGNh
c2UgJ3BhdGNoJzoKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlc29sdmVSZXBv
c2l0b3J5KHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBhdGNoQWNjZXB0aW5n
UmVwb3NpdG9yeUxpc3QuaGFzKHJlcG9zaXRvcnkpLCBgUmVwb3NpdG9yeSBncm91cCAiJHtuYW1l
fSIgc3BlY2lmaWVzIGEgcGF0Y2ggZm9yICIke3ZhbHVlfSIgYnV0IGl0IGRvZXMgbm90IGFjY2Vw
dCBhIHBhdGNoYCk7CiAgICAgICAgICAgICAgICAgICAgIHBhdGNoUmVwb3NpdG9yaWVzLmFkZChy
ZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0eXBlLCByZXBvc2l0b3J5
fTsKICAgICAgICAgICAgICAgICBjYXNlICdyZXZpc2lvbic6CisgICAgICAgICAgICAgICAgICAg
IHJlcG9zaXRvcnkgPSByZXNvbHZlUmVwb3NpdG9yeSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uUmVwb3NpdG9yaWVzLmFkZChyZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHt0eXBlLCByZXBvc2l0b3J5fTsKKyAgICAgICAgICAgICAgICBjYXNlICdw
YWlycyc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dHlwZX07CisgICAgICAgICAgICAg
ICAgY2FzZSAncmVxdWlyZXNCdWlsZCc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dHlw
ZSwgcmVwb3NpdG9yaWVzVG9DaGVjazogdmFsdWUubWFwKHJlc29sdmVSZXBvc2l0b3J5KX07CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9i
dWlsZGJvdC1zeW5jZXItdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKaW5kZXggZjBkMTI1ZTUwNWZhMWM5Y2EzNDY1
MjBmNjI2OGZlNTFlZDYzZDQzZi4uMTNmOTZjOTgyZmEwNzU4YjU5NGUwNDg1NWJhY2UxODY0ZTMx
ODYzYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVp
bGRib3Qtc3luY2VyLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwpAQCAtMjM1LDEzICsyMzUsNTAgQEAgZnVu
Y3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBv
cmRlcikKICAgICBjb25zdCByb290ID0gbmV3IFVwbG9hZGVkRmlsZSg0NTYsIHsnY3JlYXRlZEF0
JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRh
dCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAg
c2l6ZTogMTY0NTIyMzQsIHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0
OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4ZjY1NmQ1OGQnfSk7CiAKLSAgICBjb25zdCBjb21taXRT
ZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKCc1MzI0NjQ1NicsIHtjdXN0b21Sb290czog
W3Jvb3RdLCByZXZpc2lvbkl0ZW1zOiBbe2NvbW1pdDogd2Via2l0MTk3NDYzLCBwYXRjaH0sIHtj
b21taXQ6IHNoYXJlZDExMTIzN30sIHtjb21taXQ6IGlvczEzQTQ1Mn1dfSk7CisgICAgY29uc3Qg
Y29tbWl0U2V0ID0gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbignNTMyNDY0NTYnLCB7Y3VzdG9t
Um9vdHM6IFtyb290XSwgcmV2aXNpb25JdGVtczogW3tjb21taXQ6IHdlYmtpdDE5NzQ2MywgcGF0
Y2gsIHJlcXVpcmVzQnVpbGQ6IHRydWV9LCB7Y29tbWl0OiBzaGFyZWQxMTEyMzd9LCB7Y29tbWl0
OiBpb3MxM0E0NTJ9XX0pOwogCiAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5lbnN1cmVTaW5nbGV0
b24oYDYzNDU2NDUzNzYtJHtvcmRlcn1gLCB7J3RyaWdnZXJhYmxlJzogTW9ja01vZGVscy50cmln
Z2VyYWJsZSwKICAgICAgICAgcmVwb3NpdG9yeUdyb3VwOiBNb2NrTW9kZWxzLnN2blJlcG9zaXRv
cnlHcm91cCwKICAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5k
aW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgJ29yZGVyJzogb3JkZXJ9
KTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aE93bmVkQ29tbWl0
KHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKK3sKKyAgICBhc3NlcnQocGxhdGZvcm0gaW5zdGFuY2Vv
ZiBQbGF0Zm9ybSk7CisgICAgYXNzZXJ0KCF0ZXN0IHx8IHRlc3QgaW5zdGFuY2VvZiBUZXN0KTsK
KworICAgIGNvbnN0IHdlYmtpdDE5NzQ2MyA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oJzEx
MTEyNycsIHsnaWQnOiAnMTExMTI3JywgJ3RpbWUnOiAxNDU2OTU1ODA3MzM0LCAncmVwb3NpdG9y
eSc6IE1vY2tNb2RlbHMud2Via2l0LCAncmV2aXNpb24nOiAnMTk3NDYzJ30pOworICAgIGNvbnN0
IG93bmVyMTExMjg5ID0gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbignMTExMjg5JywgeydpZCc6
ICcxMTEyODknLCAndGltZSc6IDE0NTY5MzE4NzQwMDAsICdyZXBvc2l0b3J5JzogTW9ja01vZGVs
cy5vd25lclJlcG9zaXRvcnksICdyZXZpc2lvbic6ICdvd25lci0wMDEnfSk7CisgICAgY29uc3Qg
b3duZWQxMTEyMjIgPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKCcxMTEyMjInLCB7J2lkJzog
JzExMTIyMicsICd0aW1lJzogMTQ1NjkzMjc3NDAwMCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxz
Lm93bmVkUmVwb3NpdG9yeSwgJ3JldmlzaW9uJzogJ293bmVkLTAwMid9KTsKKyAgICBjb25zdCBp
b3MxM0E0NTIgPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKCc4ODkzMCcsIHsnaWQnOiAnODg5
MzAnLCAndGltZSc6IDAsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy5pb3MsICdyZXZpc2lvbic6
ICcxM0E0NTInfSk7CisKKyAgICBjb25zdCBjb21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2lu
Z2xldG9uKCc1MzI0NjQ4NicsIHtjdXN0b21Sb290czogW10sIHJldmlzaW9uSXRlbXM6IFt7Y29t
bWl0OiB3ZWJraXQxOTc0NjN9LCB7Y29tbWl0OiBvd25lcjExMTI4OX0sIHtjb21taXQ6IG93bmVk
MTExMjIyLCBjb21taXRPd25lcjogb3duZXIxMTEyODksIHJlcXVpcmVzQnVpbGQ6IHRydWV9LCB7
Y29tbWl0OiBpb3MxM0E0NTJ9XX0pOworCisgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5lbnN1cmVT
aW5nbGV0b24oYDYzNDU2NDUzNzAtJHtvcmRlcn1gLCB7J3RyaWdnZXJhYmxlJzogTW9ja01vZGVs
cy50cmlnZ2VyYWJsZSwKKyAgICAgICAgcmVwb3NpdG9yeUdyb3VwOiBNb2NrTW9kZWxzLnN2blJl
cG9zaXRvcnlXaXRoT3duZWRSZXBvc2l0b3J5R3JvdXAsCisgICAgICAgICdjb21taXRTZXQnOiBj
b21taXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVz
dCc6IHRlc3QsICdvcmRlcic6IG9yZGVyfSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1
aWxkUmVxdWVzdFdpdGhPd25lZENvbW1pdEFuZFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikK
K3sKKyAgICBhc3NlcnQocGxhdGZvcm0gaW5zdGFuY2VvZiBQbGF0Zm9ybSk7CisgICAgYXNzZXJ0
KCF0ZXN0IHx8IHRlc3QgaW5zdGFuY2VvZiBUZXN0KTsKKworICAgIGNvbnN0IHdlYmtpdDE5NzQ2
MyA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oJzExMTEyNycsIHsnaWQnOiAnMTExMTI3Jywg
J3RpbWUnOiAxNDU2OTU1ODA3MzM0LCAncmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMud2Via2l0LCAn
cmV2aXNpb24nOiAnMTk3NDYzJ30pOworICAgIGNvbnN0IG93bmVyMTExMjg5ID0gQ29tbWl0TG9n
LmVuc3VyZVNpbmdsZXRvbignMTExMjg5JywgeydpZCc6ICcxMTEyODknLCAndGltZSc6IDE0NTY5
MzE4NzQwMDAsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnksICdyZXZp
c2lvbic6ICdvd25lci0wMDEnfSk7CisgICAgY29uc3Qgb3duZWQxMTEyMjIgPSBDb21taXRMb2cu
ZW5zdXJlU2luZ2xldG9uKCcxMTEyMjInLCB7J2lkJzogJzExMTIyMicsICd0aW1lJzogMTQ1Njkz
Mjc3NDAwMCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxzLm93bmVkUmVwb3NpdG9yeSwgJ3Jldmlz
aW9uJzogJ293bmVkLTAwMid9KTsKKyAgICBjb25zdCBpb3MxM0E0NTIgPSBDb21taXRMb2cuZW5z
dXJlU2luZ2xldG9uKCc4ODkzMCcsIHsnaWQnOiAnODg5MzAnLCAndGltZSc6IDAsICdyZXBvc2l0
b3J5JzogTW9ja01vZGVscy5pb3MsICdyZXZpc2lvbic6ICcxM0E0NTInfSk7CisKKyAgICBjb25z
dCBwYXRjaCA9IG5ldyBVcGxvYWRlZEZpbGUoNDUzLCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcy
MDE3LTA1LTAxVDE5OjE2OjUzWicpLCAnZmlsZW5hbWUnOiAncGF0Y2guZGF0JywgJ2V4dGVuc2lv
bic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgICAgICBzaXplOiA1MzQ2Mzcs
IHNoYTI1NjogJzE2OTQ2M2M4MTI1ZTA3YzU3NzExMGZlMTQ0ZWNkNjM5NDJlYjk0NzJkNDM4ZmMw
MDE0ZjQ3NDI0NWU1ZGY4YTEnfSk7CisKKyAgICBjb25zdCBjb21taXRTZXQgPSBDb21taXRTZXQu
ZW5zdXJlU2luZ2xldG9uKCc1MzI0NjQ4NicsIHtjdXN0b21Sb290czogW10sIHJldmlzaW9uSXRl
bXM6IFt7Y29tbWl0OiB3ZWJraXQxOTc0NjMsIHBhdGNoLCByZXF1aXJlc0J1aWxkOiB0cnVlfSwg
e2NvbW1pdDogb3duZXIxMTEyODl9LCB7Y29tbWl0OiBvd25lZDExMTIyMiwgY29tbWl0T3duZXI6
IG93bmVyMTExMjg5LCByZXF1aXJlc0J1aWxkOiB0cnVlfSwge2NvbW1pdDogaW9zMTNBNDUyfV19
KTsKKworICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZW5zdXJlU2luZ2xldG9uKGA2MzQ1NjQ1Mzcw
LSR7b3JkZXJ9YCwgeyd0cmlnZ2VyYWJsZSc6IE1vY2tNb2RlbHMudHJpZ2dlcmFibGUsCisgICAg
ICAgIHJlcG9zaXRvcnlHcm91cDogTW9ja01vZGVscy5zdm5SZXBvc2l0b3J5V2l0aE93bmVkUmVw
b3NpdG9yeUdyb3VwLAorICAgICAgICAnY29tbWl0U2V0JzogY29tbWl0U2V0LCAnc3RhdHVzJzog
J3BlbmRpbmcnLCAncGxhdGZvcm0nOiBwbGF0Zm9ybSwgJ3Rlc3QnOiB0ZXN0LCAnb3JkZXInOiBv
cmRlcn0pOworfQorCiBmdW5jdGlvbiBzYW1wbGVQZW5kaW5nQnVpbGQoYnVpbGRSZXF1ZXN0SWQs
IGJ1aWxkVGltZSwgc2xhdmVOYW1lKQogewogICAgIHJldHVybiB7CkBAIC05NjcsNiArMTAwNCw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsICgpID0+IHsKICAgICAgICAgICAgICAgICAn
YnVpbGRQcm9wZXJ0aWVzJzogewogICAgICAgICAgICAgICAgICAgICAnd2Via2l0JzogeydyZXZp
c2lvbic6ICdXZWJLaXQnfSwKICAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdC1wYXRjaCc6IHsn
cGF0Y2gnOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICdidWlsZC13ZWJraXQnOiB7
InJlcXVpcmVzQnVpbGQiOiBbJ1dlYktpdCddfSwKICAgICAgICAgICAgICAgICAgICAgJ3NoYXJl
ZCc6IHsncmV2aXNpb24nOiAnU2hhcmVkJ30sCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICAgICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKQEAgLTk3Niw2ICsxMDE0LDcgQEAgZGVzY3Jp
YmUoJ0J1aWxkYm90U3luY2VyJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgcHJvcGVydGll
cyA9IHN5bmNlcnNbMl0uX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QocmVxdWVzdCwgW3JlcXVl
c3RdKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWyd3ZWJraXQnXSwgJzE5
NzQ2MycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3dlYmtpdC1wYXRj
aCddLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYXBpL3VwbG9hZGVkLWZpbGUvNDUzLmRhdCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ2J1aWxkLXdlYmtpdCddLCB0
cnVlKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaXQoJ3Nob3VsZCByZXNvbHZlICJpZkJ1aWx0
IicsICgpID0+IHsKQEAgLTEwMTcsNiArMTA1Niw2NCBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5j
ZXInLCAoKSA9PiB7CiAKICAgICAgICAgfSk7CiAKKyAgICAgICAgaXQoJ3Nob3VsZCByZXNvbHZl
ICJwYWlycyIgYW5kICJyZXF1aXJlc0J1aWxkIicsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGNvbmZpZyA9IHNhbXBsZWlPU0NvbmZpZygpOworICAgICAgICAgICAgY29uZmlnLnJlcG9zaXRv
cnlHcm91cHNbJ2lvcy1zdm4td2Via2l0LXdpdGgtb3duZWQtY29tbWl0J10gPSB7CisgICAgICAg
ICAgICAgICAgJ3JlcG9zaXRvcmllcyc6IHsnV2ViS2l0JzogeydhY2NlcHRzUGF0Y2gnOiB0cnVl
fSwgJ093bmVyIFJlcG9zaXRvcnknOiB7fSwgJ2lPUyc6IHt9fSwKKyAgICAgICAgICAgICAgICAn
dGVzdFByb3BlcnRpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICdvcyc6IHsncmV2aXNpb24n
OiAnaU9TJ30sCisgICAgICAgICAgICAgICAgICAgICd3ZWJraXQnOiB7J3JldmlzaW9uJzogJ1dl
YktpdCd9LAorICAgICAgICAgICAgICAgICAgICAnb3duZXItcmVwbyc6IHsncmV2aXNpb24nOiAn
T3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAgICAgICAgICAgICAncm9vdHMnOiB7J3Jvb3Rz
Jzoge319LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2J1aWxkUHJvcGVy
dGllcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdCc6IHsncmV2aXNpb24nOiAnV2Vi
S2l0J30sCisgICAgICAgICAgICAgICAgICAgICd3ZWJraXQtcGF0Y2gnOiB7J3BhdGNoJzogJ1dl
YktpdCd9LAorICAgICAgICAgICAgICAgICAgICAnb3duZXItcmVwbyc6IHsncmV2aXNpb24nOiAn
T3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAgICAgICAgICAgICAnYnVpbGQtd2Via2l0Jzog
eyJyZXF1aXJlc0J1aWxkIjogWydXZWJLaXQnXX0sCisgICAgICAgICAgICAgICAgICAgICdvd25l
ZC1jb21taXRzJzogeydwYWlycyc6IG51bGx9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBjb25zdCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBj
b25maWcpOworICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVNhbXBsZUJ1aWxkUmVx
dWVzdFdpdGhPd25lZENvbW1pdChNb2NrTW9kZWxzLmlwaG9uZSwgbnVsbCwgLTEpOworICAgICAg
ICAgICAgY29uc3QgcHJvcGVydGllcyA9IHN5bmNlcnNbMl0uX3Byb3BlcnRpZXNGb3JCdWlsZFJl
cXVlc3QocmVxdWVzdCwgW3JlcXVlc3RdKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9w
ZXJ0aWVzWyd3ZWJraXQnXSwgJzE5NzQ2MycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBy
b3BlcnRpZXNbJ293bmVyLXJlcG8nXSwgJ293bmVyLTAwMScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHByb3BlcnRpZXNbJ2J1aWxkLXdlYmtpdCddLCBmYWxzZSkKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoSlNPTi5wYXJzZShwcm9wZXJ0aWVzWydvd25lZC1jb21taXRzJ10pLCBb
eyJyZXZpc2lvbiI6Im93bmVkLTAwMiIsInJlcG9zaXRvcnkiOiJPd25lZCBSZXBvc2l0b3J5Iiwi
b3duZXItcmV2aXNpb24iOiJvd25lci0wMDEiLCJvd25lci1yZXBvc2l0b3J5IjoiT3duZXIgUmVw
b3NpdG9yeSJ9XSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAi
cGF0Y2giLCAicGFpcnMiIGFuZCAicmVxdWlyZXNCdWlsZCInLCAoKSA9PiB7CisKKyAgICAgICAg
ICAgIGNvbnN0IGNvbmZpZyA9IHNhbXBsZWlPU0NvbmZpZygpOworICAgICAgICAgICAgY29uZmln
LnJlcG9zaXRvcnlHcm91cHNbJ2lvcy1zdm4td2Via2l0LXdpdGgtb3duZWQtY29tbWl0J10gPSB7
CisgICAgICAgICAgICAgICAgJ3JlcG9zaXRvcmllcyc6IHsnV2ViS2l0JzogeydhY2NlcHRzUGF0
Y2gnOiB0cnVlfSwgJ093bmVyIFJlcG9zaXRvcnknOiB7fSwgJ2lPUyc6IHt9fSwKKyAgICAgICAg
ICAgICAgICAndGVzdFByb3BlcnRpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICdvcyc6IHsn
cmV2aXNpb24nOiAnaU9TJ30sCisgICAgICAgICAgICAgICAgICAgICd3ZWJraXQnOiB7J3Jldmlz
aW9uJzogJ1dlYktpdCd9LAorICAgICAgICAgICAgICAgICAgICAnb3duZXItcmVwbyc6IHsncmV2
aXNpb24nOiAnT3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAgICAgICAgICAgICAncm9vdHMn
OiB7J3Jvb3RzJzoge319LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2J1
aWxkUHJvcGVydGllcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdCc6IHsncmV2aXNp
b24nOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICd3ZWJraXQtcGF0Y2gnOiB7J3Bh
dGNoJzogJ1dlYktpdCd9LAorICAgICAgICAgICAgICAgICAgICAnb3duZXItcmVwbyc6IHsncmV2
aXNpb24nOiAnT3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAgICAgICAgICAgICAnYnVpbGQt
d2Via2l0JzogeyJyZXF1aXJlc0J1aWxkIjogWydXZWJLaXQnXX0sCisgICAgICAgICAgICAgICAg
ICAgICdvd25lZC1jb21taXRzJzogeydwYWlycyc6IG51bGx9CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBjb25zdCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVt
b3RlQVBJLCBjb25maWcpOworICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVNhbXBs
ZUJ1aWxkUmVxdWVzdFdpdGhPd25lZENvbW1pdEFuZFBhdGNoKE1vY2tNb2RlbHMuaXBob25lLCBu
dWxsLCAtMSk7CisgICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gc3luY2Vyc1syXS5fcHJv
cGVydGllc0ZvckJ1aWxkUmVxdWVzdChyZXF1ZXN0LCBbcmVxdWVzdF0pOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3dlYmtpdCddLCAnMTk3NDYzJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1snb3duZXItcmVwbyddLCAnb3duZXItMDAxJyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1snYnVpbGQtd2Via2l0J10sIHRydWUp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3dlYmtpdC1wYXRjaCddLCAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYXBpL3VwbG9hZGVkLWZpbGUvNDUzLmRhdCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChKU09OLnBhcnNlKHByb3BlcnRpZXNbJ293bmVkLWNv
bW1pdHMnXSksIFt7InJldmlzaW9uIjoib3duZWQtMDAyIiwicmVwb3NpdG9yeSI6Ik93bmVkIFJl
cG9zaXRvcnkiLCJvd25lci1yZXZpc2lvbiI6Im93bmVyLTAwMSIsIm93bmVyLXJlcG9zaXRvcnki
OiJPd25lciBSZXBvc2l0b3J5In1dKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgaXQoJ3Nob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IGZvciB0aGUgYnVpbGQgcmVxdWVzdCBpZCcsICgpID0+IHsKICAg
ICAgICAgICAgIGNvbnN0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1v
dGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBj
cmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1vY2tNb2RlbHMuc3Bl
ZWRvbWV0ZXIpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVz
dHMvY29tbWl0LXNldC10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKaW5kZXggMjdjMmQ5ZTFlZTE4NzU0MjZkZTY5MWQ2M2Fk
NzRhNjY5ZTAwYzQ1Ni4uYzY4OTE0YzYxMzI2MGUxZDk1NzBlZWMxN2JlMGNkYWI3MmNiYzQ1MSAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNl
dC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21t
aXQtc2V0LXRlc3RzLmpzCkBAIC03Nyw2ICs3NywxMSBAQCBkZXNjcmliZSgnQ3VzdG9tQ29tbWl0
U2V0JywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0
U2V0V2l0aG91dE93bmVkQ29tbWl0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtp
dF0pOwogICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiByaWdodCBvd25l
ZCByZXBvc2l0b3JpZXMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBj
dXN0b21Db21taXRTZXRXaXRob3V0T3duZWRDb21taXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29tbWl0U2V0Lm93bmVkUmVwb3NpdG9yaWVzKCksIFtdKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiAKICAgICBkZXNjcmliZSgnVGVzdCBjdXN0b20gY29tbWl0IHNldCB3aXRoIG93
bmVkIGNvbW1pdCcsICgpID0+IHsKQEAgLTEwNSw2ICsxMTAsMTEgQEAgZGVzY3JpYmUoJ0N1c3Rv
bUNvbW1pdFNldCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3Rv
bUNvbW1pdFNldFdpdGhPd25lZENvbW1pdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb21taXRTZXQucmVwb3NpdG9yaWVzKCksIFtNb2NrTW9kZWxzLm9zeCwgTW9ja01vZGVscy5v
d25lclJlcG9zaXRvcnksIE1vY2tNb2RlbHMub3duZWRSZXBvc2l0b3J5XSk7CiAgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHJpZ2h0IG93bmVkIHJlcG9zaXRvcmllcycs
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdp
dGhPd25lZENvbW1pdCgpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQu
b3duZWRSZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3duZWRSZXBvc2l0b3J5XSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogCiAgICAgZGVzY3JpYmUoJ1Rlc3QgY3VzdG9tIGNvbW1pdCBzZXQg
d2l0aCBwYXRjaCcsICgpID0+IHsKQEAgLTEzMCw2ICsxNDAsMTEgQEAgZGVzY3JpYmUoJ0N1c3Rv
bUNvbW1pdFNldCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3Rv
bUNvbW1pdFNldFdpdGhQYXRjaCgpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21t
aXRTZXQucmVwb3NpdG9yaWVzKCksIFtNb2NrTW9kZWxzLm9zeCwgTW9ja01vZGVscy53ZWJraXRd
KTsKICAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gcmlnaHQgb3duZWQg
cmVwb3NpdG9yaWVzJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3Vz
dG9tQ29tbWl0U2V0V2l0aFBhdGNoKCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bW1pdFNldC5vd25lZFJlcG9zaXRvcmllcygpLCBbXSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
CiAgICAgZGVzY3JpYmUoJ1Rlc3QgY3VzdG9tIGNvbW1pdCBzZXQgd2l0aCBvd25lZCByZXBvc2l0
b3J5IGhhcyBzYW1lIG5hbWUgYXMgbm9uLW93bmVkIHJlcG9zaXRvcnknLCAgKCkgPT4gewpAQCAt
MTU4LDYgKzE3MywxMSBAQCBkZXNjcmliZSgnQ3VzdG9tQ29tbWl0U2V0JywgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkUmVwb3Np
dG9yeUhhc1NhbWVOYW1lQXNOb3RPd25lZFJlcG9zaXRvcnkoKTsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29tbWl0U2V0LnJlcG9zaXRvcmllcygpLCBbTW9ja01vZGVscy5vc3gsIE1v
Y2tNb2RlbHMud2Via2l0LCBNb2NrTW9kZWxzLm93bmVkV2Via2l0XSk7CiAgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHJpZ2h0IG93bmVkIHJlcG9zaXRvcmllcycsICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhP
d25lZFJlcG9zaXRvcnlIYXNTYW1lTmFtZUFzTm90T3duZWRSZXBvc2l0b3J5KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5vd25lZFJlcG9zaXRvcmllcygpLCBbTW9j
a01vZGVscy5vd25lZFdlYmtpdF0pOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGRlc2Ny
aWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IGVxdWFsaXR5IGZ1bmN0aW9uJywgKCkgPT4gewpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2Vz
L21vY2stdjMtbW9kZWxzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
cmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCmluZGV4IDk2YWVjMmI3MTYwYmVjYjIxMzYxYzc3
OGQ0YTRiMzdlZmM5ZDI5YmIuLmM0Mjc3YjA4MTNiMDRmN2ZlNmIyNGQxOWU0MzE3OGYyYWJiNDY3
NmEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291
cmNlcy9tb2NrLXYzLW1vZGVscy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMKQEAgLTU3LDggKzU3LDEzIEBAIHZh
ciBNb2NrTW9kZWxzID0gewogICAgICAgICAgICAgICAgIG5hbWU6ICdpb3MtZ2l0LXdlYmtpdCcs
CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiBbe3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMu
aW9zfSwge3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0R2l0fSwge3JlcG9zaXRvcnk6IE1v
Y2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeX1dCiAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeVdpdGhPd25lZFJlcG9zaXRvcnlHcm91cCA9IG5ldyBU
cmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCgzNCwgeworICAgICAgICAgICAgICAgIG5hbWU6ICdp
b3Mtc3ZuLXdlYmtpdC13aXRoLW93bmVkLWNvbW1pdCcsCisgICAgICAgICAgICAgICAgcmVwb3Np
dG9yaWVzOiBbe3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMuaW9zfSwge3JlcG9zaXRvcnk6IE1vY2tN
b2RlbHMud2Via2l0LCBhY2NlcHRzUGF0Y2g6IHRydWV9LCB7cmVwb3NpdG9yeTogTW9ja01vZGVs
cy5vd25lclJlcG9zaXRvcnl9XSwKKyAgICAgICAgICAgICAgICBhY2NlcHRzQ3VzdG9tUm9vdHM6
IHRydWUsCisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIE1vY2tNb2RlbHMudHJpZ2dlcmFi
bGUgPSBuZXcgVHJpZ2dlcmFibGUoMywge25hbWU6ICdidWlsZC13ZWJraXQnLAotICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlHcm91cHM6IFtNb2NrTW9kZWxzLm9zUmVwb3NpdG9yeUdyb3VwLCBN
b2NrTW9kZWxzLnN2blJlcG9zaXRvcnlHcm91cCwgTW9ja01vZGVscy5naXRSZXBvc2l0b3J5R3Jv
dXBdLAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlHcm91cHM6IFtNb2NrTW9kZWxzLm9zUmVw
b3NpdG9yeUdyb3VwLCBNb2NrTW9kZWxzLnN2blJlcG9zaXRvcnlHcm91cCwgTW9ja01vZGVscy5n
aXRSZXBvc2l0b3J5R3JvdXAsIE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeVdpdGhPd25lZFJlcG9z
aXRvcnlHcm91cF0sCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM6IFt7dGVzdDogTW9j
a01vZGVscy5pUGhvbmVQTFQsIHBsYXRmb3JtOiBNb2NrTW9kZWxzLmlwaG9uZX1dfSk7CiAKICAg
ICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321808</attachid>
            <date>2017-09-26 03:07:02 -0700</date>
            <delta_ts>2017-09-28 20:38:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177225-20170926030701.patch</filename>
            <type>text/plain</type>
            <size>46698</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjI4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlZjYwMjhhNDI2MGNlYTkzYmEyMjU1MmZkYTRlZjQyYzJlODc0NGMwLi45Mjk3MjYzN2M3
MzEwZWMxOWM3MTQyNGJiNGFhMmE1N2ZmZmQ1ODYxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNy0wOS0yNiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0
byBidWlsZCBiaW5hcnkgZm9yIGNvbW1pdCBzZXQgd2l0aCBvd25lZCBjb21taXRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBm
b3Igc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0byBzY2hlZHVsZSBidWlsZHMgdG8gYnVpbGQg
YmluYXJ5IGZvciBvd25lZCBjb21taXRzLgorICAgICAgICBJbnRyb2R1Y2VzICdpZlJlcG9zaXRv
cnlTZXQnIGFuZCAnb3duZWRSZXZpc2lvbnMnIGluICdidWlsZFByb3BlcnRpZXMnLgorICAgICAg
ICAnaWZSZXBvc2l0b3J5U2V0JyB3aWxsIGNvbmRpdGlvbmFseSBzZXQgYSBidWlsZCBwcm9wZXJ0
eSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHJlcG9zaXRvcmllcyBpdCBzcGVjaWZpZWQgcmVxdWly
ZXMgYnVpbGQuCisgICAgICAgICdvd25lZFJldmlzaW9ucycgc3BlY2lmaWVzIG93bmVkIGNvbW1p
dHMgcmV2aXNpb24gaW5mb3JtYXRpb25zLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0KTogQWRkZWQgJ19vd25lclJlcG9zaXRv
cnlUb093bmVkUmVwb3NpdG9yaWVzTWFwJy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUu
dXBkYXRlU2luZ2xldG9uKTogUmVzZXQgJ19vd25lclJlcG9zaXRvcnlUb093bmVkUmVwb3NpdG9y
aWVzTWFwJy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuX3VwZGF0ZUZyb21PYmplY3Qp
OiBPbmx5IHVwZGF0ZSAnX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwJyBhbmQgJ19vd25lclJl
cG9zaXRvcnlUb093bmVkUmVwb3NpdG9yaWVzTWFwJyB3aGVuICdjb21taXRPd25lcicgZXhpc3Rz
LgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS50b3BMZXZlbFJlcG9zaXRvcmllc1NvcnRl
ZEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTCk6IFJldHVybnMgYSBzb3J0ZWQgbGlzdCBvZiB0
b3AgbGV2ZWwgcmVwb3NpdG9yaWVzLgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5vd25l
ZFJlcG9zaXRvcmllc0Zvck93bmVyUmVwb3NpdG9yeSk6IFJldHVybnMgb3duZWQgcmVwb3NpdG9y
aWVzIGdpdmVuIGEgb3duZXIgcmVwb3NpdG9yeS4KKyAgICAgICAgKEN1c3RvbUNvbW1pdFNldC5w
cm90b3R5cGUudG9wTGV2ZWxSZXBvc2l0b3JpZXNTb3J0ZWRCeU5hbWVQcmVmZXJyaW5nT25lc1dp
dGhVUkwpOiBSZXR1cm5zIGEgc29ydGVkIGxpc3Qgb2YgdG9wIGxldmVsIHJlcG9zaXRvcmllcy4K
KyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJhYmxlLmpzOgorICAgICAgICAocHJv
dG90eXBlLmFjY2VwdHMpOiBJdCBzaG91bGQgb25seSBjaGVja3MgYWdhaW5zdCB0b3AtbGV2ZWwg
cmVwb3NpdG9yaWVzLiBSZW1vdmVkIGEgZGVwcmVjYXRlZCAnRklYTUUnLgorICAgICAgICAqIHNl
cnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzOiBBZGRl
ZCB1bml0IHRlc3QgZm9yIGJ1aWxkaW5nIG93bmVkIGNvbW1pdHMgYmluYXJ5LgorICAgICAgICAo
Y3JlYXRlVHJpZ2dlcmFibGUpOiBBZGRlZCBjb25kaXRpb25hbCAnaWZSZXBvc2l0b3J5U2V0JyBh
bmQgJ293bmVkUmV2aXNpb25zJyBpbiB0aGUgcmVwb3NpdG9yeSBncm91cHMuCisgICAgICAgICog
dG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzOgorICAgICAgICAoQnVpbGRib3RTeW5jZXIucHJv
dG90eXBlLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KToKKyAgICAgICAgICAgIEFkZGVkIGxv
Z2ljIHRvIGNvbmRpdGlvbmFseSBjcmVhdGUgYnVpbGQgcHJvcGVydHkgZm9yICdpZlJlcG9zaXRv
cnlTZXQnLgorICAgICAgICAgICAgQWRkZWQgbG9naWMgdG8gY3JlYXRlICdvd25lZFJldmlzaW9u
cycgYmFzZWQgb24gdGhlIG93bmVyIHJlcG9zaXRvcmllcyBpdCBzcGVjaWZpZWQuCisgICAgICAg
IChCdWlsZGJvdFN5bmNlci5fcGFyc2VSZXBvc2l0b3J5R3JvdXApOiBCdWlsZCBwcm9wZXJ0eSB0
ZW1wbGF0ZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgJ2lmUmVwb3NpdG9yeVNldCcgYW5kICdv
d25lZFJldmlzaW9ucycuCisgICAgICAgICogdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVz
dHMuanM6IEFkZGVkIHVuaXQgdGVzdHMgZm9yICdpZlJlcG9zaXRvcnlTZXQnIGFuZCAnb3duZWRS
ZXZpc2lvbnMnLgorICAgICAgICAqIHVuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qczogQWRk
ZWQgdW5pdCB0ZXN0cyBmb3IgJ3RvcExldmVsUmVwb3NpdG9yaWVzU29ydGVkQnlOYW1lUHJlZmVy
cmluZ09uZXNXaXRoVVJMJy4KKyAgICAgICAgKiB1bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYz
LW1vZGVscy5qczogQWRkZWQgYSByZXBvc2l0b3J5IGdyb3VwIGNvbnRhaW5zICdpb3MnLCAnd2Vi
a2l0JyBhbmQgJ293bmVyUmVwb3NpdG9yeScuCisKIDIwMTctMDktMTkgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlICdvd25lZCBjb21taXQnIGluc3RlYWQg
b2YgJ3N1YiBjb21taXQnIHdoZW5ldmVyIHJlZmVycyB0byBhIGNvbW1pdCBvd25lZCBieSBhbm90
aGVyIGNvbW1pdC4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2NvbW1pdC1zZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy9jb21taXQtc2V0LmpzCmluZGV4IGNiOGU2ZjIwNWEyNzE1MDk2MTIzOTYxYjI1
OWI5NzcyZDExZDZkNjYuLmY2Y2RjMWM5NDRjODVkNWExMDM5MzA5ZTE1MDU3MDEwYzlmZDUxZDAg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Nv
bW1pdC1zZXQuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvY29tbWl0LXNldC5qcwpAQCAtMTEsNiArMTEsNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5k
cyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAgPSBuZXcg
TWFwOwogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5UmVxdWlyZXNCdWlsZE1hcCA9IG5ldyBNYXA7
CisgICAgICAgIHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAgPSBu
ZXcgTWFwOwogICAgICAgICB0aGlzLl9sYXRlc3RDb21taXRUaW1lID0gbnVsbDsKICAgICAgICAg
dGhpcy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICAgICAgdGhpcy5fYWxsUm9vdEZpbGVzID0gW107
CkBAIC0yOCw2ICsyOSw3IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVj
dCB7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuY2xlYXIoKTsKICAgICAgICAg
dGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5f
cmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fX293bmVy
UmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5f
cmVwb3NpdG9yaWVzID0gW107CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZyb21PYmplY3Qob2JqZWN0
KTsKICAgICB9CkBAIC00NCw3ICs0NiwxNCBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRh
TW9kZWxPYmplY3QgewogICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvbW1pdC5yZXBv
c2l0b3J5KCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuc2V0KHJl
cG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1h
cC5zZXQocmVwb3NpdG9yeSwgaXRlbS5wYXRjaCk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0
b3J5VG9Db21taXRPd25lck1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5jb21taXRPd25lcik7Cisg
ICAgICAgICAgICBpZiAoaXRlbS5jb21taXRPd25lcikgeworICAgICAgICAgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLmNvbW1pdE93
bmVyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBvd25lclJlcG9zaXRvcnkgPSBpdGVtLmNvbW1p
dE93bmVyLnJlcG9zaXRvcnkoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX293bmVyUmVw
b3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAuZ2V0KG93bmVyUmVwb3NpdG9yeSkpCisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNN
YXAuc2V0KG93bmVyUmVwb3NpdG9yeSwgW3JlcG9zaXRvcnldKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBv
c2l0b3JpZXNNYXAuZ2V0KG93bmVyUmVwb3NpdG9yeSkucHVzaChyZXBvc2l0b3J5KTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLnNl
dChyZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwogICAgICAgICAgICAgdGhpcy5fcmVw
b3NpdG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5yb290RmlsZSk7CiAgICAgICAg
ICAgICBpZiAoaXRlbS5yb290RmlsZSkKQEAgLTU5LDYgKzY4LDEzIEBAIGNsYXNzIENvbW1pdFNl
dCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgY3VzdG9tUm9vdHMoKSB7IHJldHVybiB0
aGlzLl9jdXN0b21Sb290czsgfQogICAgIGFsbFJvb3RGaWxlcygpIHsgcmV0dXJuIHRoaXMuX2Fs
bFJvb3RGaWxlczsgfQogICAgIGNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1
cm4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIG93
bmVyQ29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0
b3J5VG9Db21taXRPd25lck1hcC5nZXQocmVwb3NpdG9yeSk7IH0KKyAgICB0b3BMZXZlbFJlcG9z
aXRvcmllc1NvcnRlZEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTCgpIHsKKyAgICAgICAgY29u
c3QgdG9wTGV2ZWxSZXBvc2l0b3JpZXMgPSB0aGlzLl9yZXBvc2l0b3JpZXMuZmlsdGVyKChyZXBv
c2l0b3J5KSA9PiB7IHJldHVybiAhdGhpcy5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBv
c2l0b3J5KTsgfSk7CisgICAgICAgIHJldHVybiBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJy
aW5nT25lc1dpdGhVUkwodG9wTGV2ZWxSZXBvc2l0b3JpZXMpOworICAgIH0KKworICAgIG93bmVk
UmVwb3NpdG9yaWVzRm9yT3duZXJSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMu
X293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9
CiAKICAgICByZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkKICAgICB7CkBAIC0yMDQs
NiArMjIwLDEwIEBAIGNsYXNzIEN1c3RvbUNvbW1pdFNldCB7CiAgICAgfQogCiAgICAgcmVwb3Np
dG9yaWVzKCkgeyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRv
cnkua2V5cygpKTsgfQorICAgIHRvcExldmVsUmVwb3NpdG9yaWVzU29ydGVkQnlOYW1lUHJlZmVy
cmluZ09uZXNXaXRoVVJMKCkgeworICAgICAgICBjb25zdCB0b3BMZXZlbFJlcG9zaXRvcmllcyA9
IHRoaXMucmVwb3NpdG9yaWVzKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiB7IHJldHVybiAhdGhp
cy5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsgfSk7CisgICAgICAgIHJl
dHVybiBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwodG9wTGV2ZWxS
ZXBvc2l0b3JpZXMpOworICAgIH0KICAgICByZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSkKICAgICB7CiAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBv
c2l0b3J5LmdldChyZXBvc2l0b3J5KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJhYmxlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvdHJpZ2dlcmFibGUuanMKaW5kZXggM2VhOGUyMTQ1ZmNh
MGQxYjZmYmY0MGE2NDQ3ZWQwYjY3MjU0ZTIxNy4uMmRhNzU1Y2EyZDk3NmM0YmVkMTZlYTMwNzky
MWUwODkzMzIyOWIxYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvdHJpZ2dlcmFibGUuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvdHJpZ2dlcmFibGUuanMKQEAgLTY1LDggKzY1LDcgQEAgY2xhc3Mg
VHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKIAogICAg
IGFjY2VwdHMoY29tbWl0U2V0KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNoZWNr
IGZvciBwYXRjaC4KLSAgICAgICAgY29uc3QgY29tbWl0U2V0UmVwb3NpdG9yaWVzID0gUmVwb3Np
dG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKGNvbW1pdFNldC5yZXBvc2l0b3Jp
ZXMoKSk7CisgICAgICAgIGNvbnN0IGNvbW1pdFNldFJlcG9zaXRvcmllcyA9IGNvbW1pdFNldC50
b3BMZXZlbFJlcG9zaXRvcmllc1NvcnRlZEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTCgpOwog
ICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLmxlbmd0aCAhPSBjb21taXRTZXRSZXBvc2l0
b3JpZXMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHRoaXMuX3JlcG9zaXRvcmllcy5sZW5ndGg7IGkrKykgewpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxk
Ym90LWludGVncmF0aW9uLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRlc3RzLmpzCmluZGV4IGJh
ZGE1N2ExYjY1NGY3MGVlMjY0ZGYwMWIwNDBlMjU1YmI3ZjlmYjUuLmQ1NGJhZWQ1MjI1MTNhODg4
N2ZhZjRmMzc3MzU5YWU3MmUwNjI0NzkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLXN5bmMt
YnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKQEAgLTI2LDcgKzI2LDkgQEAgZnVuY3Rpb24g
Y3JlYXRlVHJpZ2dlcmFibGUoKQogICAgICAgICAgICAgICAgICd3ZWJraXQnOiB7CiAgICAgICAg
ICAgICAgICAgICAgIHJlcG9zaXRvcmllczogeydXZWJLaXQnOiB7YWNjZXB0c1BhdGNoOiB0cnVl
fX0sCiAgICAgICAgICAgICAgICAgICAgIHRlc3RQcm9wZXJ0aWVzOiB7J3drJzogeydyZXZpc2lv
bic6ICdXZWJLaXQnfSwgJ3Jvb3RzJzogeydyb290cyc6IHt9fX0sCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWxkUHJvcGVydGllczogeyd3ayc6IHsncmV2aXNpb24nOiAnV2ViS2l0J30sICd3ay1w
YXRjaCc6IHsncGF0Y2gnOiAnV2ViS2l0J319LAorICAgICAgICAgICAgICAgICAgICBidWlsZFBy
b3BlcnRpZXM6IHsnd2snOiB7J3JldmlzaW9uJzogJ1dlYktpdCd9LCAnd2stcGF0Y2gnOiB7J3Bh
dGNoJzogJ1dlYktpdCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrYm94Jzogeydp
ZlJlcG9zaXRvcnlTZXQnOiB7J3ZhbHVlJzogJ2J1aWxkLXdrJywgJ3JlcG9zaXRvcmllc1RvQ2hl
Y2snOiBbJ1dlYktpdCddfX0sCisgICAgICAgICAgICAgICAgICAgICAgICAnb3duZWQtY29tbWl0
cyc6IHsnb3duZWRSZXZpc2lvbnMnOiBbJ1dlYktpdCddfX0sCiAgICAgICAgICAgICAgICAgICAg
IGFjY2VwdHNSb290czogdHJ1ZSwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LApA
QCAtODQsNiArODYsMjIgQEAgZnVuY3Rpb24gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKQogICAg
IH0pCiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpaE93bmVkQ29tbWl0KCkKK3sKKyAg
ICBjb25zdCBzb21lVGVzdCA9IFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKTsK
KyAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJl
cG9zaXRvcnlJZCgpKTsKKyAgICBjb25zdCBvd25lZFNKQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQo
TW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgY29uc3Qgc2V0MSA9IG5ldyBD
dXN0b21Db21taXRTZXQ7CisgICAgc2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
LCAnMTkxNjIyJyk7CisgICAgc2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRTSkMs
ICdvd25lZC1qc2MtNjE2MScsIG51bGwsICcxOTE2MjInKTsKKyAgICBjb25zdCBzZXQyID0gbmV3
IEN1c3RvbUNvbW1pdFNldDsKKyAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJr
aXQsICcxOTI3MzYnKTsKKyAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFNK
QywgJ293bmVkLWpzYy05MTkxJywgbnVsbCwgJzE5MjczNicpOworICAgIHJldHVybiBUZXN0R3Jv
dXAuY3JlYXRlV2l0aFRhc2soJ2N1c3RvbSB0YXNrJywgUGxhdGZvcm0uZmluZEJ5SWQoTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSksIHNvbWVUZXN0LCAnc29tZSBncm91cCcsIDIsIFtzZXQxLCBz
ZXQyXSkudGhlbigodGFzaykgPT4geworICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZpbmRBbGxC
eVRhc2sodGFzay5pZCgpKVswXTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gdXBsb2FkUm9vdChi
dWlsZFJlcXVlc3RJZCwgYnVpbGROdW1iZXIpCiB7CiAgICAgcmV0dXJuIFRlbXBvcmFyeUZpbGUu
bWFrZVRlbXBvcmFyeUZpbGUoYHJvb3Qke2J1aWxkTnVtYmVyfS5kYXRgLCBgcm9vdCBmb3IgYnVp
bGQgJHtidWlsZE51bWJlcn1gKS50aGVuKChyb290RmlsZSkgPT4gewpAQCAtMTc0LDcgKzE5Miw3
IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNyk7CiAgICAgICAgICAgICBhc3NlcnRBbmRS
ZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s2XSwgJ1BPU1QnLCAnL2J1aWxkZXJzL3NvbWUlMjBidWls
ZGVyL2ZvcmNlJywgJ09LJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzZdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ3drLXBhdGNoJzogUmVtb3RlQVBJLnVybCgnL2Fw
aS91cGxvYWRlZC1maWxlLzEuZGF0JyksCi0gICAgICAgICAgICAgICAgJ2J1aWxkLXJlcXVlc3Qt
aWQnOiAnMScsICdmb3JjZXNjaGVkdWxlcic6ICdmb3JjZS1hYi1idWlsZHMnfSk7CisgICAgICAg
ICAgICAgICAgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnMScsICdmb3JjZXNjaGVkdWxlcic6ICdmb3Jj
ZS1hYi1idWlsZHMnLCAnY2hlY2tib3gnOiAnYnVpbGQtd2snLCAnb3duZWQtY29tbWl0cyc6ICJ7
fSJ9KTsKICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
CiAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzLmxlbmd0aCwgMTApOwpAQCAtMjg2LDcgKzMwNCw3IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxk
Ym90JywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOwogICAgICAgICAgICAgYXNzZXJ0QW5k
UmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWlsZGVycy9zb21lJTIwYnVp
bGRlci9mb3JjZScsICdPSycpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0
c1s2XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdidWlsZC1yZXF1ZXN0LWlkJzogJzInLCAnZm9y
Y2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJ30pOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdidWlsZC1yZXF1ZXN0
LWlkJzogJzInLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJywgJ2NoZWNrYm94
JzogJ2J1aWxkLXdrJywgJ293bmVkLWNvbW1pdHMnOiAie30ifSk7CiAgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEwKTsKQEAgLTY1
OCw0ICs2NzYsMjg2IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90JywgZnVuY3Rpb24gKCkgewog
ICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCB0
byBidWlsZCBiaW5hcnkgZm9yIG93bmVkIGNvbW1pdHMnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0
IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgbGV0IHRyaWdnZXJh
YmxlOworICAgICAgICBsZXQgdGFza0lkID0gbnVsbDsKKyAgICAgICAgbGV0IHN5bmNQcm9taXNl
OworICAgICAgICByZXR1cm4gY3JlYXRlVHJpZ2dlcmFibGUoKS50aGVuKChuZXdUcmlnZ2VyYWJs
ZSkgPT4geworICAgICAgICAgICAgdHJpZ2dlcmFibGUgPSBuZXdUcmlnZ2VyYWJsZTsKKyAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBXaWhPd25lZENvbW1pdCgpOworICAgICAgICB9
KS50aGVuKCh0ZXN0R3JvdXApID0+IHsKKyAgICAgICAgICAgIHRhc2tJZCA9IHRlc3RHcm91cC50
YXNrKCkuaWQoKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5
SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgY29uc3Qgb3du
ZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlk
KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCku
bGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3Vw
LmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNC
dWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRp
bmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCks
IG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCks
IG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29t
bWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBv
c2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICBjb25zdCBvdGhlckJ1
aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAgICBh
c3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCgh
b3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90
aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisK
KyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29t
bWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
b3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3du
ZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygp
LCBbXSk7CisKKyAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNl
cnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAg
ICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzBdLCAnR0VUJywgJy9qc29u
L2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAg
IGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzFdLCAnR0VUJywgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICBhc3Nl
cnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1syXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9v
dGhlciUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAg
ICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1szXSwgJ0dFVCcsICcvanNvbi9idWls
ZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAg
ICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzRdLCAnR0VUJywgJy9q
c29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMics
IHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzVdLCAn
R0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZz
ZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJl
cXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9mb3Jj
ZScsICdPSycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1s2XS5kYXRh
LCB7J3drJzogJzE5MTYyMicsICdidWlsZC1yZXF1ZXN0LWlkJzogJzEnLCAnZm9yY2VzY2hlZHVs
ZXInOiAnZm9yY2UtYWItYnVpbGRzJywgJ293bmVkLWNvbW1pdHMnOiBgeyJXZWJLaXQiOlt7InJl
dmlzaW9uIjoib3duZWQtanNjLTYxNjEiLCJyZXBvc2l0b3J5IjoiSmF2YVNjcmlwdENvcmUiLCJv
d25lclJldmlzaW9uIjoiMTkxNjIyIn0seyJyZXZpc2lvbiI6Im93bmVkLWpzYy02MTYxIiwicmVw
b3NpdG9yeSI6IkphdmFTY3JpcHRDb3JlIiwib3duZXJSZXZpc2lvbiI6IjE5MTYyMiJ9XX1gfSk7
CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDEwKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3Rz
WzddLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycs
IFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzhdLCAn
R0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLAorICAg
ICAgICAgICAgICAgIFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxk
ZXInLCBidWlsZFJlcXVlc3RJZDogMX0pXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZl
UmVxdWVzdChyZXF1ZXN0c1s5XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxk
ZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMTMpOworICAgICAgICAgICAgYXNzZXJ0QW5k
UmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMTBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUl
MjB0ZXN0ZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAg
YXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMTFdLCAnR0VUJywgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHsKKyAgICAg
ICAgICAgICAgICBbLTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1
aWxkZXInLCBidWlsZFJlcXVlc3RJZDogMX0pCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzEyXSwgJ0dFVCcsICcvanNvbi9idWls
ZGVycy9vdGhlciUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOwor
ICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOworICAgICAgICB9KS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7
CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXAg
PSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5m
aW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBjb25z
dCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0
b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVz
dHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0
R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVz
dC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAn
UnVubmluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNV
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1
aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJ
ZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0
LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21t
aXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBjb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgY29uc3Qgb3Ro
ZXJCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAg
ICAgYXNzZXJ0KG90aGVyQnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3Nl
cnQoIW90aGVyQnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnV2FpdGluZycpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwp
OworCisgICAgICAgICAgICBjb25zdCBvdGhlckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0
LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob3RoZXJDb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0
b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0
U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KG93bmVkSlNDKSwgb3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkp
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1pdFNldC5hbGxSb290Rmls
ZXMoKSwgW10pOworCisgICAgICAgICAgICByZXR1cm4gdXBsb2FkUm9vdChidWlsZFJlcXVlc3Qu
aWQoKSwgMTIzKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
VGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOworICAgICAgICB9KS50aGVuKCh0
ZXN0R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5n
dGgsIDEpOworICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAg
ICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Vi
a2l0UmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgY29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0
b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKwor
ICAgICAgICAgICAgY29uc3QgYnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMo
KVswXTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChidWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ0NvbXBsZXRlZCcpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWls
ZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5ub3RFcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKwor
ICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnko
d2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5w
YXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3Np
dG9yeShvd25lZEpTQyksIGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7
CisgICAgICAgICAgICBjb25zdCB3ZWJraXRSb290ID0gY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0
b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQod2Via2l0Um9vdCBpbnN0YW5jZW9mIFVw
bG9hZGVkRmlsZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Um9vdC5maWxlbmFt
ZSgpLCAncm9vdDEyMy5kYXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0
U2V0LmFsbFJvb3RGaWxlcygpLCBbd2Via2l0Um9vdF0pOworCisgICAgICAgICAgICBjb25zdCBv
dGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAg
ICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFz
c2VydCghb3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVs
bCk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVl
c3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVs
bCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9z
aXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21t
aXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRv
cnkob3duZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RG
aWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVzZXQoKTsKKyAgICAg
ICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+
IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydEFu
ZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUl
MjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29s
dmVSZXF1ZXN0KHJlcXVlc3RzWzFdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWls
ZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVx
dWVzdChyZXF1ZXN0c1syXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIv
cGVuZGluZ0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgNik7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNv
bHZlUmVxdWVzdChyZXF1ZXN0c1szXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVz
dGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2Vy
dEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzRdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3Nv
bWUlMjBidWlsZGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicsIHsKKyAgICAgICAgICAg
ICAgICBbLTFdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVy
JywgYnVpbGRSZXF1ZXN0SWQ6IDF9KQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhc3Nl
cnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s1XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9v
dGhlciUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA3
KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzZdLCAnUE9T
VCcsICcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvZm9yY2UnLCAnT0snKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVxdWVzdHNbNl0uZGF0YSwgeyd3ayc6ICcxOTI3MzYnLCAnYnVp
bGQtcmVxdWVzdC1pZCc6ICcyJywgJ2ZvcmNlc2NoZWR1bGVyJzogJ2ZvcmNlLWFiLWJ1aWxkcycs
ICdvd25lZC1jb21taXRzJzogYHsiV2ViS2l0IjpbeyJyZXZpc2lvbiI6Im93bmVkLWpzYy05MTkx
IiwicmVwb3NpdG9yeSI6IkphdmFTY3JpcHRDb3JlIiwib3duZXJSZXZpc2lvbiI6IjE5MjczNiJ9
LHsicmV2aXNpb24iOiJvd25lZC1qc2MtOTE5MSIsInJlcG9zaXRvcnkiOiJKYXZhU2NyaXB0Q29y
ZSIsIm93bmVyUmV2aXNpb24iOiIxOTI3MzYifSx7InJldmlzaW9uIjoib3duZWQtanNjLTkxOTEi
LCJyZXBvc2l0b3J5IjoiSmF2YVNjcmlwdENvcmUiLCJvd25lclJldmlzaW9uIjoiMTkyNzM2In0s
eyJyZXZpc2lvbiI6Im93bmVkLWpzYy05MTkxIiwicmVwb3NpdG9yeSI6IkphdmFTY3JpcHRDb3Jl
Iiwib3duZXJSZXZpc2lvbiI6IjE5MjczNiJ9LHsicmV2aXNpb24iOiJvd25lZC1qc2MtOTE5MSIs
InJlcG9zaXRvcnkiOiJKYXZhU2NyaXB0Q29yZSIsIm93bmVyUmV2aXNpb24iOiIxOTI3MzYifV19
YH0pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1
ZXN0c1s3XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL3BlbmRpbmdCdWls
ZHMnLCBbXSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1s4
XSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlci9wZW5kaW5nQnVpbGRzJywg
W10pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbOV0sICdH
RVQnLCAnL2pzb24vYnVpbGRlcnMvb3RoZXIlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7
CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAg
ICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDEzKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3Rz
WzEwXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0
PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0
KHJlcXVlc3RzWzExXSwgJ0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWls
ZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7CisgICAgICAgICAgICAgICAgWy0xXTogTW9ja0Rh
dGEucnVubmluZ0J1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6
IDJ9KSwKKyAgICAgICAgICAgICAgICBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKHtidWls
ZGVyOiAnc29tZSBidWlsZGVyJywgYnVpbGRSZXF1ZXN0SWQ6IDF9KSwKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMTJdLCAnR0VU
JywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxl
Y3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7CisgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2so
dGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNv
bnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBjb25zdCB3ZWJraXQg
PSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS5v
d25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3Jv
dXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0IGJ1aWxk
UmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAgICAgICAgICBhc3Nl
cnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVx
dWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0
YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWls
ZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9z
b21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwo
YnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbW1p
dFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtp
dCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBjb21taXRT
ZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgY29uc3Qgd2Vi
a2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOworICAgICAgICAg
ICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jvb3QxMjMuZGF0Jyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW3dl
YmtpdFJvb3RdKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWlsZFJlcXVlc3QgPSB0ZXN0
R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAgICAgYXNzZXJ0KG90aGVyQnVpbGRS
ZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIW90aGVyQnVpbGRSZXF1ZXN0
LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5z
dGF0dXNMYWJlbCgpLCAnUnVubmluZycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVy
QnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRl
cnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0
IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdl
YmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJD
b21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNvbW1p
dFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAg
ICAgIHJldHVybiB1cGxvYWRSb290KG90aGVyQnVpbGRSZXF1ZXN0LmlkKCksIDEyNCk7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZv
clRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBjb25zdCB3
ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgp
KTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlNDID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2Nr
RGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0
ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0
IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAgICAgICAg
ICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1
aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0LnN0YXR1c0xhYmVsKCksICdDb21wbGV0ZWQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWls
ZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3NlcnQubm90
RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0
IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjIn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBj
b21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgY29u
c3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOworICAg
ICAgICAgICAgYXNzZXJ0KHdlYmtpdFJvb3QgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jvb3QxMjMuZGF0
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMo
KSwgW3dlYmtpdFJvb3RdKTsKKworICAgICAgICAgICAgY29uc3Qgb3RoZXJCdWlsZFJlcXVlc3Qg
PSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzFdOworICAgICAgICAgICAgYXNzZXJ0KG90aGVy
QnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIW90aGVyQnVpbGRS
ZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVx
dWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9idWlsZHMvMTI0Jyk7CisgICAgICAgICAgICBhc3Nl
cnQubm90RXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAg
ICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRTZXQo
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90
aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9y
eSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIG90aGVyQ29tbWl0U2V0LnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGNvbnN0IG90aGVyV2Vi
a2l0Um9vdCA9IG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAg
ICAgICAgICBhc3NlcnQob3RoZXJXZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlcldlYmtpdFJvb3QuZmlsZW5hbWUoKSwgJ3Jv
b3QxMjQuZGF0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0
LmFsbFJvb3RGaWxlcygpLCBbb3RoZXJXZWJraXRSb290XSk7CisgICAgICAgIH0pOworICAgIH0p
OwogfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVp
bGRib3Qtc3luY2VyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxk
Ym90LXN5bmNlci5qcwppbmRleCA1ODhhZjkwNjkyMWUxMGJlMTlhZWJkMWI3ODJjZjIwYTlhYmJj
MTZmLi5mZWM3OTQ4N2Q2ZTlhOTc0ZmY1MzQ3MmU0MzVlMjI5MGI1N2NmMDA3IDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMK
QEAgLTI2MCwxMiArMjYwLDMzIEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lm
eShyb290RmlsZXMubWFwKChmaWxlKSA9PiAoe3VybDogZmlsZS51cmwoKX0pKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdvd25lZFJldmlzaW9ucyc6CisgICAg
ICAgICAgICAgICAgY29uc3QgcmV2aXNpb25JbmZvID0ge307CisgICAgICAgICAgICAgICAgdmFs
dWUub3duZXJSZXBvc2l0b3JpZXMuZm9yRWFjaCgob3duZXJSZXBvc2l0b3J5KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG93bmVkUmVwb3NpdG9yaWVzID0gY29tbWl0U2V0Lm93bmVk
UmVwb3NpdG9yaWVzRm9yT3duZXJSZXBvc2l0b3J5KG93bmVyUmVwb3NpdG9yeSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghb3duZWRSZXBvc2l0b3JpZXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uSW5mb1tvd25lclJlcG9z
aXRvcnkubmFtZSgpXSA9IG93bmVkUmVwb3NpdG9yaWVzLm1hcCgob3duZWRSZXBvc2l0b3J5KSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXZpc2lvbic6IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3du
ZWRSZXBvc2l0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwb3NpdG9yeSc6
IG93bmVkUmVwb3NpdG9yeS5uYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ293
bmVyUmV2aXNpb24nOiBjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRS
ZXBvc2l0b3J5KQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHZhbHVlID0gSlNP
Ti5zdHJpbmdpZnkocmV2aXNpb25JbmZvKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgJ2NvbmRpdGlvbmFsJzoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVl
LmNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgIGNhc2UgJ2J1aWx0JzoKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFyZXF1ZXN0c0luR3JvdXAuc29tZSgob3RoZXJSZXF1ZXN0KSA9PiBvdGhl
clJlcXVlc3QuaXNCdWlsZCgpICYmIG90aGVyUmVxdWVzdC5jb21taXRTZXQoKSA9PSBidWlsZFJl
cXVlc3QuY29tbWl0U2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVz
QnVpbGQnOgorICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0J1aWxkID0gdmFsdWUu
cmVwb3NpdG9yaWVzVG9DaGVjay5tYXAoY29tbWl0U2V0LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0
b3J5LmJpbmQoY29tbWl0U2V0KSkuc29tZSgocmVxdWlyZXNCdWlsZCkgPT4gcmVxdWlyZXNCdWls
ZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVxdWlyZXNCdWlsZCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTQ0MCwxNSArNDYxLDIxIEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAg
ICAgICAgICAgIGNvbnN0IHBhdGNoUmVwb3NpdG9yaWVzID0gbmV3IFNldDsKICAgICAgICAgICAg
IGJ1aWxkUHJvcGVydGllc1RlbXBsYXRlID0gdGhpcy5fcGFyc2VSZXBvc2l0b3J5R3JvdXBQcm9w
ZXJ0eVRlbXBsYXRlKCdidWlsZCcsIG5hbWUsIGdyb3VwLmJ1aWxkUHJvcGVydGllcywgKHR5cGUs
IHZhbHVlKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHR5cGUgIT0gJ3Jvb3RzJywgYFJl
cG9zaXRvcnkgZ3JvdXAgIiR7bmFtZX0iIHNwZWNpZmllcyByb290cyBpbiB0aGUgcHJvcGVydGll
cyBmb3IgYnVpbGRpbmdgKTsKLSAgICAgICAgICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gcmVz
b2x2ZVJlcG9zaXRvcnkodmFsdWUpOworICAgICAgICAgICAgICAgIGxldCByZXBvc2l0b3J5ID0g
bnVsbDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgICAgICBj
YXNlICdwYXRjaCc6CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgPSByZXNvbHZlUmVw
b3NpdG9yeSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYXRjaEFjY2VwdGlu
Z1JlcG9zaXRvcnlMaXN0LmhhcyhyZXBvc2l0b3J5KSwgYFJlcG9zaXRvcnkgZ3JvdXAgIiR7bmFt
ZX0iIHNwZWNpZmllcyBhIHBhdGNoIGZvciAiJHt2YWx1ZX0iIGJ1dCBpdCBkb2VzIG5vdCBhY2Nl
cHQgYSBwYXRjaGApOwogICAgICAgICAgICAgICAgICAgICBwYXRjaFJlcG9zaXRvcmllcy5hZGQo
cmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dHlwZSwgcmVwb3NpdG9y
eX07CiAgICAgICAgICAgICAgICAgY2FzZSAncmV2aXNpb24nOgorICAgICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5ID0gcmVzb2x2ZVJlcG9zaXRvcnkodmFsdWUpOwogICAgICAgICAgICAgICAg
ICAgICByZXZpc2lvblJlcG9zaXRvcmllcy5hZGQocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7dHlwZSwgcmVwb3NpdG9yeX07CisgICAgICAgICAgICAgICAgY2FzZSAn
b3duZWRSZXZpc2lvbnMnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3R5cGUsIG93bmVy
UmVwb3NpdG9yaWVzOiB2YWx1ZS5tYXAocmVzb2x2ZVJlcG9zaXRvcnkpfTsKKyAgICAgICAgICAg
ICAgICBjYXNlICdpZlJlcG9zaXRvcnlTZXQnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
e3R5cGU6ICdjb25kaXRpb25hbCcsIGNvbmRpdGlvbjogJ3JlcXVpcmVzQnVpbGQnLCB2YWx1ZTog
dmFsdWUudmFsdWUsIHJlcG9zaXRvcmllc1RvQ2hlY2s6IHZhbHVlLnJlcG9zaXRvcmllc1RvQ2hl
Y2subWFwKHJlc29sdmVSZXBvc2l0b3J5KX07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMu
anMKaW5kZXggZjBkMTI1ZTUwNWZhMWM5Y2EzNDY1MjBmNjI2OGZlNTFlZDYzZDQzZi4uYjM3NmRj
MGY1MGNiN2EzODM3Zjg2ZGNhM2UxZjgxY2JhYjI0Mjc5OCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0
cy5qcwpAQCAtMjM1LDEzICsyMzUsNTAgQEAgZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1
ZXN0V2l0aFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKICAgICBjb25zdCByb290ID0gbmV3
IFVwbG9hZGVkRmlsZSg0NTYsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMjE6
MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRhdCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdh
dXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAgc2l6ZTogMTY0NTIyMzQsIHNoYTI1NjogJzAz
ZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4ZjY1
NmQ1OGQnfSk7CiAKLSAgICBjb25zdCBjb21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xl
dG9uKCc1MzI0NjQ1NicsIHtjdXN0b21Sb290czogW3Jvb3RdLCByZXZpc2lvbkl0ZW1zOiBbe2Nv
bW1pdDogd2Via2l0MTk3NDYzLCBwYXRjaH0sIHtjb21taXQ6IHNoYXJlZDExMTIzN30sIHtjb21t
aXQ6IGlvczEzQTQ1Mn1dfSk7CisgICAgY29uc3QgY29tbWl0U2V0ID0gQ29tbWl0U2V0LmVuc3Vy
ZVNpbmdsZXRvbignNTMyNDY0NTYnLCB7Y3VzdG9tUm9vdHM6IFtyb290XSwgcmV2aXNpb25JdGVt
czogW3tjb21taXQ6IHdlYmtpdDE5NzQ2MywgcGF0Y2gsIHJlcXVpcmVzQnVpbGQ6IHRydWV9LCB7
Y29tbWl0OiBzaGFyZWQxMTEyMzd9LCB7Y29tbWl0OiBpb3MxM0E0NTJ9XX0pOwogCiAgICAgcmV0
dXJuIEJ1aWxkUmVxdWVzdC5lbnN1cmVTaW5nbGV0b24oYDYzNDU2NDUzNzYtJHtvcmRlcn1gLCB7
J3RyaWdnZXJhYmxlJzogTW9ja01vZGVscy50cmlnZ2VyYWJsZSwKICAgICAgICAgcmVwb3NpdG9y
eUdyb3VwOiBNb2NrTW9kZWxzLnN2blJlcG9zaXRvcnlHcm91cCwKICAgICAgICAgJ2NvbW1pdFNl
dCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3JtJzogcGxhdGZvcm0s
ICd0ZXN0JzogdGVzdCwgJ29yZGVyJzogb3JkZXJ9KTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlU2Ft
cGxlQnVpbGRSZXF1ZXN0V2l0aE93bmVkQ29tbWl0KHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKK3sK
KyAgICBhc3NlcnQocGxhdGZvcm0gaW5zdGFuY2VvZiBQbGF0Zm9ybSk7CisgICAgYXNzZXJ0KCF0
ZXN0IHx8IHRlc3QgaW5zdGFuY2VvZiBUZXN0KTsKKworICAgIGNvbnN0IHdlYmtpdDE5NzQ2MyA9
IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oJzExMTEyNycsIHsnaWQnOiAnMTExMTI3JywgJ3Rp
bWUnOiAxNDU2OTU1ODA3MzM0LCAncmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMud2Via2l0LCAncmV2
aXNpb24nOiAnMTk3NDYzJ30pOworICAgIGNvbnN0IG93bmVyMTExMjg5ID0gQ29tbWl0TG9nLmVu
c3VyZVNpbmdsZXRvbignMTExMjg5JywgeydpZCc6ICcxMTEyODknLCAndGltZSc6IDE0NTY5MzE4
NzQwMDAsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnksICdyZXZpc2lv
bic6ICdvd25lci0wMDEnfSk7CisgICAgY29uc3Qgb3duZWQxMTEyMjIgPSBDb21taXRMb2cuZW5z
dXJlU2luZ2xldG9uKCcxMTEyMjInLCB7J2lkJzogJzExMTIyMicsICd0aW1lJzogMTQ1NjkzMjc3
NDAwMCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxzLm93bmVkUmVwb3NpdG9yeSwgJ3JldmlzaW9u
JzogJ293bmVkLTAwMid9KTsKKyAgICBjb25zdCBpb3MxM0E0NTIgPSBDb21taXRMb2cuZW5zdXJl
U2luZ2xldG9uKCc4ODkzMCcsIHsnaWQnOiAnODg5MzAnLCAndGltZSc6IDAsICdyZXBvc2l0b3J5
JzogTW9ja01vZGVscy5pb3MsICdyZXZpc2lvbic6ICcxM0E0NTInfSk7CisKKyAgICBjb25zdCBj
b21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKCc1MzI0NjQ4NicsIHtjdXN0b21S
b290czogW10sIHJldmlzaW9uSXRlbXM6IFt7Y29tbWl0OiB3ZWJraXQxOTc0NjN9LCB7Y29tbWl0
OiBvd25lcjExMTI4OX0sIHtjb21taXQ6IG93bmVkMTExMjIyLCBjb21taXRPd25lcjogb3duZXIx
MTEyODksIHJlcXVpcmVzQnVpbGQ6IHRydWV9LCB7Y29tbWl0OiBpb3MxM0E0NTJ9XX0pOworCisg
ICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5lbnN1cmVTaW5nbGV0b24oYDYzNDU2NDUzNzAtJHtvcmRl
cn1gLCB7J3RyaWdnZXJhYmxlJzogTW9ja01vZGVscy50cmlnZ2VyYWJsZSwKKyAgICAgICAgcmVw
b3NpdG9yeUdyb3VwOiBNb2NrTW9kZWxzLnN2blJlcG9zaXRvcnlXaXRoT3duZWRSZXBvc2l0b3J5
R3JvdXAsCisgICAgICAgICdjb21taXRTZXQnOiBjb21taXRTZXQsICdzdGF0dXMnOiAncGVuZGlu
ZycsICdwbGF0Zm9ybSc6IHBsYXRmb3JtLCAndGVzdCc6IHRlc3QsICdvcmRlcic6IG9yZGVyfSk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdFdpdGhPd25lZENvbW1pdEFu
ZFBhdGNoKHBsYXRmb3JtLCB0ZXN0LCBvcmRlcikKK3sKKyAgICBhc3NlcnQocGxhdGZvcm0gaW5z
dGFuY2VvZiBQbGF0Zm9ybSk7CisgICAgYXNzZXJ0KCF0ZXN0IHx8IHRlc3QgaW5zdGFuY2VvZiBU
ZXN0KTsKKworICAgIGNvbnN0IHdlYmtpdDE5NzQ2MyA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0
b24oJzExMTEyNycsIHsnaWQnOiAnMTExMTI3JywgJ3RpbWUnOiAxNDU2OTU1ODA3MzM0LCAncmVw
b3NpdG9yeSc6IE1vY2tNb2RlbHMud2Via2l0LCAncmV2aXNpb24nOiAnMTk3NDYzJ30pOworICAg
IGNvbnN0IG93bmVyMTExMjg5ID0gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbignMTExMjg5Jywg
eydpZCc6ICcxMTEyODknLCAndGltZSc6IDE0NTY5MzE4NzQwMDAsICdyZXBvc2l0b3J5JzogTW9j
a01vZGVscy5vd25lclJlcG9zaXRvcnksICdyZXZpc2lvbic6ICdvd25lci0wMDEnfSk7CisgICAg
Y29uc3Qgb3duZWQxMTEyMjIgPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKCcxMTEyMjInLCB7
J2lkJzogJzExMTIyMicsICd0aW1lJzogMTQ1NjkzMjc3NDAwMCwgJ3JlcG9zaXRvcnknOiBNb2Nr
TW9kZWxzLm93bmVkUmVwb3NpdG9yeSwgJ3JldmlzaW9uJzogJ293bmVkLTAwMid9KTsKKyAgICBj
b25zdCBpb3MxM0E0NTIgPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKCc4ODkzMCcsIHsnaWQn
OiAnODg5MzAnLCAndGltZSc6IDAsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy5pb3MsICdyZXZp
c2lvbic6ICcxM0E0NTInfSk7CisKKyAgICBjb25zdCBwYXRjaCA9IG5ldyBVcGxvYWRlZEZpbGUo
NDUzLCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcyMDE3LTA1LTAxVDE5OjE2OjUzWicpLCAnZmls
ZW5hbWUnOiAncGF0Y2guZGF0JywgJ2V4dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21l
IHVzZXInLAorICAgICAgICBzaXplOiA1MzQ2MzcsIHNoYTI1NjogJzE2OTQ2M2M4MTI1ZTA3YzU3
NzExMGZlMTQ0ZWNkNjM5NDJlYjk0NzJkNDM4ZmMwMDE0ZjQ3NDI0NWU1ZGY4YTEnfSk7CisKKyAg
ICBjb25zdCBjb21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKCc1MzI0NjQ4Nics
IHtjdXN0b21Sb290czogW10sIHJldmlzaW9uSXRlbXM6IFt7Y29tbWl0OiB3ZWJraXQxOTc0NjMs
IHBhdGNoLCByZXF1aXJlc0J1aWxkOiB0cnVlfSwge2NvbW1pdDogb3duZXIxMTEyODl9LCB7Y29t
bWl0OiBvd25lZDExMTIyMiwgY29tbWl0T3duZXI6IG93bmVyMTExMjg5LCByZXF1aXJlc0J1aWxk
OiB0cnVlfSwge2NvbW1pdDogaW9zMTNBNDUyfV19KTsKKworICAgIHJldHVybiBCdWlsZFJlcXVl
c3QuZW5zdXJlU2luZ2xldG9uKGA2MzQ1NjQ1MzcwLSR7b3JkZXJ9YCwgeyd0cmlnZ2VyYWJsZSc6
IE1vY2tNb2RlbHMudHJpZ2dlcmFibGUsCisgICAgICAgIHJlcG9zaXRvcnlHcm91cDogTW9ja01v
ZGVscy5zdm5SZXBvc2l0b3J5V2l0aE93bmVkUmVwb3NpdG9yeUdyb3VwLAorICAgICAgICAnY29t
bWl0U2V0JzogY29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZvcm0nOiBwbGF0
Zm9ybSwgJ3Rlc3QnOiB0ZXN0LCAnb3JkZXInOiBvcmRlcn0pOworfQorCiBmdW5jdGlvbiBzYW1w
bGVQZW5kaW5nQnVpbGQoYnVpbGRSZXF1ZXN0SWQsIGJ1aWxkVGltZSwgc2xhdmVOYW1lKQogewog
ICAgIHJldHVybiB7CkBAIC05NjcsNiArMTAwNCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNl
cicsICgpID0+IHsKICAgICAgICAgICAgICAgICAnYnVpbGRQcm9wZXJ0aWVzJzogewogICAgICAg
ICAgICAgICAgICAgICAnd2Via2l0JzogeydyZXZpc2lvbic6ICdXZWJLaXQnfSwKICAgICAgICAg
ICAgICAgICAgICAgJ3dlYmtpdC1wYXRjaCc6IHsncGF0Y2gnOiAnV2ViS2l0J30sCisgICAgICAg
ICAgICAgICAgICAgICdjaGVja2JveCc6IHsnaWZSZXBvc2l0b3J5U2V0Jzogeyd2YWx1ZSc6ICdi
dWlsZC13ZWJraXQnLCAncmVwb3NpdG9yaWVzVG9DaGVjayc6IFsnV2ViS2l0J119fSwKICAgICAg
ICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHsncmV2aXNpb24nOiAnU2hhcmVkJ30sCiAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKQEAgLTk3
Niw2ICsxMDE0LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgKCkgPT4gewogICAgICAg
ICAgICAgY29uc3QgcHJvcGVydGllcyA9IHN5bmNlcnNbMl0uX3Byb3BlcnRpZXNGb3JCdWlsZFJl
cXVlc3QocmVxdWVzdCwgW3JlcXVlc3RdKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9w
ZXJ0aWVzWyd3ZWJraXQnXSwgJzE5NzQ2MycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBy
b3BlcnRpZXNbJ3dlYmtpdC1wYXRjaCddLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYXBpL3Vw
bG9hZGVkLWZpbGUvNDUzLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRp
ZXNbJ2NoZWNrYm94J10sICdidWlsZC13ZWJraXQnKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
aXQoJ3Nob3VsZCByZXNvbHZlICJpZkJ1aWx0IicsICgpID0+IHsKQEAgLTEwMTcsNiArMTA1Niw2
NCBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCAoKSA9PiB7CiAKICAgICAgICAgfSk7CiAK
KyAgICAgICAgaXQoJ3Nob3VsZCByZXNvbHZlICJwYWlycyIgYW5kICJyZXF1aXJlc0J1aWxkIics
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHNhbXBsZWlPU0NvbmZpZygpOwor
ICAgICAgICAgICAgY29uZmlnLnJlcG9zaXRvcnlHcm91cHNbJ2lvcy1zdm4td2Via2l0LXdpdGgt
b3duZWQtY29tbWl0J10gPSB7CisgICAgICAgICAgICAgICAgJ3JlcG9zaXRvcmllcyc6IHsnV2Vi
S2l0JzogeydhY2NlcHRzUGF0Y2gnOiB0cnVlfSwgJ093bmVyIFJlcG9zaXRvcnknOiB7fSwgJ2lP
Uyc6IHt9fSwKKyAgICAgICAgICAgICAgICAndGVzdFByb3BlcnRpZXMnOiB7CisgICAgICAgICAg
ICAgICAgICAgICdvcyc6IHsncmV2aXNpb24nOiAnaU9TJ30sCisgICAgICAgICAgICAgICAgICAg
ICd3ZWJraXQnOiB7J3JldmlzaW9uJzogJ1dlYktpdCd9LAorICAgICAgICAgICAgICAgICAgICAn
b3duZXItcmVwbyc6IHsncmV2aXNpb24nOiAnT3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAg
ICAgICAgICAgICAncm9vdHMnOiB7J3Jvb3RzJzoge319LAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgJ2J1aWxkUHJvcGVydGllcyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
J3dlYmtpdCc6IHsncmV2aXNpb24nOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICd3
ZWJraXQtcGF0Y2gnOiB7J3BhdGNoJzogJ1dlYktpdCd9LAorICAgICAgICAgICAgICAgICAgICAn
b3duZXItcmVwbyc6IHsncmV2aXNpb24nOiAnT3duZXIgUmVwb3NpdG9yeSd9LAorICAgICAgICAg
ICAgICAgICAgICAnY2hlY2tib3gnOiB7J2lmUmVwb3NpdG9yeVNldCc6IHsndmFsdWUnOiAnYnVp
bGQtd2Via2l0JywgJ3JlcG9zaXRvcmllc1RvQ2hlY2snOiBbJ1dlYktpdCddfX0sCisgICAgICAg
ICAgICAgICAgICAgICdvd25lZC1jb21taXRzJzogeydvd25lZFJldmlzaW9ucyc6IFsnT3duZXIg
UmVwb3NpdG9yeSddfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2FjY2Vw
dHNSb290cyc6IHRydWUsCisgICAgICAgICAgICB9OworICAgICAgICAgICAgY29uc3Qgc3luY2Vy
cyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJlbW90ZUFQSSwgY29uZmlnKTsKKyAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3QgPSBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3RXaXRoT3duZWRD
b21taXQoTW9ja01vZGVscy5pcGhvbmUsIG51bGwsIC0xKTsKKyAgICAgICAgICAgIGNvbnN0IHBy
b3BlcnRpZXMgPSBzeW5jZXJzWzJdLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KHJlcXVlc3Qs
IFtyZXF1ZXN0XSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1snd2Via2l0
J10sICcxOTc0NjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydvd25l
ci1yZXBvJ10sICdvd25lci0wMDEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0
aWVzWydjaGVja2JveCddLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChKU09OLnBhcnNlKHByb3BlcnRpZXNbJ293bmVkLWNvbW1pdHMnXSksIHsnT3duZXIgUmVwb3Np
dG9yeSc6IFt7cmV2aXNpb246ICdvd25lZC0wMDInLCByZXBvc2l0b3J5OiAnT3duZWQgUmVwb3Np
dG9yeScsIG93bmVyUmV2aXNpb246ICdvd25lci0wMDEnfV19KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCByZXNvbHZlICJwYXRjaCIsICJwYWlycyIgYW5kICJyZXF1aXJlc0J1
aWxkIicsICgpID0+IHsKKworICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc2FtcGxlaU9TQ29u
ZmlnKCk7CisgICAgICAgICAgICBjb25maWcucmVwb3NpdG9yeUdyb3Vwc1snaW9zLXN2bi13ZWJr
aXQtd2l0aC1vd25lZC1jb21taXQnXSA9IHsKKyAgICAgICAgICAgICAgICAncmVwb3NpdG9yaWVz
JzogeydXZWJLaXQnOiB7J2FjY2VwdHNQYXRjaCc6IHRydWV9LCAnT3duZXIgUmVwb3NpdG9yeSc6
IHt9LCAnaU9TJzoge319LAorICAgICAgICAgICAgICAgICd0ZXN0UHJvcGVydGllcyc6IHsKKyAg
ICAgICAgICAgICAgICAgICAgJ29zJzogeydyZXZpc2lvbic6ICdpT1MnfSwKKyAgICAgICAgICAg
ICAgICAgICAgJ3dlYmtpdCc6IHsncmV2aXNpb24nOiAnV2ViS2l0J30sCisgICAgICAgICAgICAg
ICAgICAgICdvd25lci1yZXBvJzogeydyZXZpc2lvbic6ICdPd25lciBSZXBvc2l0b3J5J30sCisg
ICAgICAgICAgICAgICAgICAgICdyb290cyc6IHsncm9vdHMnOiB7fX0sCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAnYnVpbGRQcm9wZXJ0aWVzJzogeworICAgICAgICAgICAg
ICAgICAgICAnd2Via2l0JzogeydyZXZpc2lvbic6ICdXZWJLaXQnfSwKKyAgICAgICAgICAgICAg
ICAgICAgJ3dlYmtpdC1wYXRjaCc6IHsncGF0Y2gnOiAnV2ViS2l0J30sCisgICAgICAgICAgICAg
ICAgICAgICdvd25lci1yZXBvJzogeydyZXZpc2lvbic6ICdPd25lciBSZXBvc2l0b3J5J30sCisg
ICAgICAgICAgICAgICAgICAgICdjaGVja2JveCc6IHsnaWZSZXBvc2l0b3J5U2V0Jzogeyd2YWx1
ZSc6ICdidWlsZC13ZWJraXQnLCAncmVwb3NpdG9yaWVzVG9DaGVjayc6IFsnV2ViS2l0J119fSwK
KyAgICAgICAgICAgICAgICAgICAgJ293bmVkLWNvbW1pdHMnOiB7J293bmVkUmV2aXNpb25zJzog
WydPd25lciBSZXBvc2l0b3J5J119CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBjb25z
dCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBjb25maWcp
OworICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdFdp
dGhPd25lZENvbW1pdEFuZFBhdGNoKE1vY2tNb2RlbHMuaXBob25lLCBudWxsLCAtMSk7CisgICAg
ICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gc3luY2Vyc1syXS5fcHJvcGVydGllc0ZvckJ1aWxk
UmVxdWVzdChyZXF1ZXN0LCBbcmVxdWVzdF0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBy
b3BlcnRpZXNbJ3dlYmtpdCddLCAnMTk3NDYzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cHJvcGVydGllc1snb3duZXItcmVwbyddLCAnb3duZXItMDAxJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocHJvcGVydGllc1snY2hlY2tib3gnXSwgJ2J1aWxkLXdlYmtpdCcpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3dlYmtpdC1wYXRjaCddLCAnaHR0cDovL2J1
aWxkLndlYmtpdC5vcmcvYXBpL3VwbG9hZGVkLWZpbGUvNDUzLmRhdCcpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChKU09OLnBhcnNlKHByb3BlcnRpZXNbJ293bmVkLWNvbW1pdHMnXSks
IHsnT3duZXIgUmVwb3NpdG9yeSc6IFt7cmV2aXNpb246ICdvd25lZC0wMDInLCByZXBvc2l0b3J5
OiAnT3duZWQgUmVwb3NpdG9yeScsIG93bmVyUmV2aXNpb246ICdvd25lci0wMDEnfV19KTsKKyAg
ICAgICAgfSk7CisKICAgICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHByb3BlcnR5IGZvciB0aGUg
YnVpbGQgcmVxdWVzdCBpZCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHN5bmNlcnMgPSBC
dWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsK
ICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9j
a01vZGVscy5pcGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpOwpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKaW5k
ZXggMjdjMmQ5ZTFlZTE4NzU0MjZkZTY5MWQ2M2FkNzRhNjY5ZTAwYzQ1Ni4uYmIxOGU3MWRiOWQ3
Nzc4Y2NlZGFiMWIyYTMyMzUwN2FiMDhmZmMyNCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCkBAIC03Nyw2ICs3
NywxMiBAQCBkZXNjcmliZSgnQ3VzdG9tQ29tbWl0U2V0JywgKCkgPT4gewogICAgICAgICAgICAg
Y29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0V2l0aG91dE93bmVkQ29tbWl0KCk7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01v
Y2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOwogICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIHJldHVybiBvbmx5IHRvcCBsZXZlbCByZXBvc2l0b3JpZXMnLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRob3V0T3du
ZWRDb21taXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LnRvcExl
dmVsUmVwb3NpdG9yaWVzU29ydGVkQnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKCksCisgICAg
ICAgICAgICAgICAgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOworICAgICAg
ICB9KTsKICAgICB9KTsKIAogICAgIGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IHdp
dGggb3duZWQgY29tbWl0JywgKCkgPT4gewpAQCAtMTA1LDYgKzExMSwxMiBAQCBkZXNjcmliZSgn
Q3VzdG9tQ29tbWl0U2V0JywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0g
Y3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkQ29tbWl0KCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9k
ZWxzLm93bmVyUmVwb3NpdG9yeSwgTW9ja01vZGVscy5vd25lZFJlcG9zaXRvcnldKTsKICAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gb25seSB0b3AgbGV2ZWwgcmVwb3Np
dG9yaWVzJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY3VzdG9tQ29t
bWl0U2V0V2l0aE93bmVkQ29tbWl0KCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bW1pdFNldC50b3BMZXZlbFJlcG9zaXRvcmllc1NvcnRlZEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0
aFVSTCgpLAorICAgICAgICAgICAgICAgIFtNb2NrTW9kZWxzLm9zeCwgTW9ja01vZGVscy5vd25l
clJlcG9zaXRvcnldKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBkZXNjcmliZSgnVGVz
dCBjdXN0b20gY29tbWl0IHNldCB3aXRoIHBhdGNoJywgKCkgPT4gewpAQCAtMTMwLDYgKzE0Miwx
MiBAQCBkZXNjcmliZSgnQ3VzdG9tQ29tbWl0U2V0JywgKCkgPT4gewogICAgICAgICAgICAgY29u
c3QgY29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0V2l0aFBhdGNoKCk7CiAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4
LCBNb2NrTW9kZWxzLndlYmtpdF0pOwogICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxk
IHJldHVybiBvbmx5IHRvcCBsZXZlbCByZXBvc2l0b3JpZXMnLCAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRoUGF0Y2goKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LnRvcExldmVsUmVwb3NpdG9yaWVzU29ydGVk
QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKCksCisgICAgICAgICAgICAgICAgW01vY2tNb2Rl
bHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAg
IGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IHdpdGggb3duZWQgcmVwb3NpdG9yeSBo
YXMgc2FtZSBuYW1lIGFzIG5vbi1vd25lZCByZXBvc2l0b3J5JywgICgpID0+IHsKQEAgLTE1OCw2
ICsxNzYsMTIgQEAgZGVzY3JpYmUoJ0N1c3RvbUNvbW1pdFNldCcsICgpID0+IHsKICAgICAgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhPd25lZFJlcG9zaXRvcnlI
YXNTYW1lTmFtZUFzTm90T3duZWRSZXBvc2l0b3J5KCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9k
ZWxzLndlYmtpdCwgTW9ja01vZGVscy5vd25lZFdlYmtpdF0pOwogICAgICAgICB9KTsKKworICAg
ICAgICBpdCgnc2hvdWxkIHJldHVybiBvbmx5IHRvcCBsZXZlbCByZXBvc2l0b3JpZXMnLCAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRoT3du
ZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVBc05vdE93bmVkUmVwb3NpdG9yeSgpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQudG9wTGV2ZWxSZXBvc2l0b3JpZXNTb3J0ZWRC
eU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoKSwKKyAgICAgICAgICAgICAgICBbTW9ja01vZGVs
cy5vc3gsIE1vY2tNb2RlbHMud2Via2l0XSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAg
ZGVzY3JpYmUoJ1Rlc3QgY3VzdG9tIGNvbW1pdCBzZXQgZXF1YWxpdHkgZnVuY3Rpb24nLCAoKSA9
PiB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNv
dXJjZXMvbW9jay12My1tb2RlbHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMKaW5kZXggOTZhZWMyYjcxNjBiZWNiMjEz
NjFjNzc4ZDRhNGIzN2VmYzlkMjliYi4uYzQyNzdiMDgxM2IwNGY3ZmU2YjI0ZDE5ZTQzMTc4ZjJh
YmI0Njc2YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMv
cmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcwpAQCAtNTcsOCArNTcsMTMg
QEAgdmFyIE1vY2tNb2RlbHMgPSB7CiAgICAgICAgICAgICAgICAgbmFtZTogJ2lvcy1naXQtd2Vi
a2l0JywKICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXM6IFt7cmVwb3NpdG9yeTogTW9ja01v
ZGVscy5pb3N9LCB7cmVwb3NpdG9yeTogTW9ja01vZGVscy53ZWJraXRHaXR9LCB7cmVwb3NpdG9y
eTogTW9ja01vZGVscy5zaGFyZWRSZXBvc2l0b3J5fV0KICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgTW9ja01vZGVscy5zdm5SZXBvc2l0b3J5V2l0aE93bmVkUmVwb3NpdG9yeUdyb3VwID0g
bmV3IFRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwKDM0LCB7CisgICAgICAgICAgICAgICAgbmFt
ZTogJ2lvcy1zdm4td2Via2l0LXdpdGgtb3duZWQtY29tbWl0JywKKyAgICAgICAgICAgICAgICBy
ZXBvc2l0b3JpZXM6IFt7cmVwb3NpdG9yeTogTW9ja01vZGVscy5pb3N9LCB7cmVwb3NpdG9yeTog
TW9ja01vZGVscy53ZWJraXQsIGFjY2VwdHNQYXRjaDogdHJ1ZX0sIHtyZXBvc2l0b3J5OiBNb2Nr
TW9kZWxzLm93bmVyUmVwb3NpdG9yeX1dLAorICAgICAgICAgICAgICAgIGFjY2VwdHNDdXN0b21S
b290czogdHJ1ZSwKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgTW9ja01vZGVscy50cmln
Z2VyYWJsZSA9IG5ldyBUcmlnZ2VyYWJsZSgzLCB7bmFtZTogJ2J1aWxkLXdlYmtpdCcsCi0gICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeUdyb3VwczogW01vY2tNb2RlbHMub3NSZXBvc2l0b3J5R3Jv
dXAsIE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeUdyb3VwLCBNb2NrTW9kZWxzLmdpdFJlcG9zaXRv
cnlHcm91cF0sCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeUdyb3VwczogW01vY2tNb2RlbHMu
b3NSZXBvc2l0b3J5R3JvdXAsIE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeUdyb3VwLCBNb2NrTW9k
ZWxzLmdpdFJlcG9zaXRvcnlHcm91cCwgTW9ja01vZGVscy5zdm5SZXBvc2l0b3J5V2l0aE93bmVk
UmVwb3NpdG9yeUdyb3VwXSwKICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uczogW3t0ZXN0
OiBNb2NrTW9kZWxzLmlQaG9uZVBMVCwgcGxhdGZvcm06IE1vY2tNb2RlbHMuaXBob25lfV19KTsK
IAogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322162</attachid>
            <date>2017-09-28 20:38:43 -0700</date>
            <delta_ts>2017-09-28 20:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177225-20170928203843.patch</filename>
            <type>text/plain</type>
            <size>47347</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNDk4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlZjYwMjhhNDI2MGNlYTkzYmEyMjU1MmZkYTRlZjQyYzJlODc0NGMwLi5hMmExYzAyYjk4
Yjg2MWFlY2ZlMzkxZTY4Yzc3ZTY4MjdmNWE1YWM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNy0wOS0yOCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0
byBidWlsZCBiaW5hcnkgZm9yIGNvbW1pdCBzZXQgd2l0aCBvd25lZCBjb21taXRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBm
b3Igc3luY2luZyBzY3JpcHQgdG8gYmUgYWJsZSB0byBzY2hlZHVsZSBidWlsZHMgdG8gYnVpbGQg
YmluYXJ5IGZvciBvd25lZCBjb21taXRzLgorICAgICAgICBJbnRyb2R1Y2VzICdpZlJlcG9zaXRv
cnlTZXQnIGFuZCAnb3duZWRSZXZpc2lvbnMnIGluICdidWlsZFByb3BlcnRpZXMnLgorICAgICAg
ICAnaWZSZXBvc2l0b3J5U2V0JyB3aWxsIGNvbmRpdGlvbmFseSBzZXQgYSBidWlsZCBwcm9wZXJ0
eSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHJlcG9zaXRvcmllcyBpdCBzcGVjaWZpZWQgcmVxdWly
ZXMgYnVpbGQuCisgICAgICAgICdvd25lZFJldmlzaW9ucycgc3BlY2lmaWVzIG93bmVkIGNvbW1p
dHMgcmV2aXNpb24gaW5mb3JtYXRpb25zLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0KTogQWRkZWQgJ19vd25lclJlcG9zaXRv
cnlUb093bmVkUmVwb3NpdG9yaWVzTWFwJy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUu
dXBkYXRlU2luZ2xldG9uKTogUmVzZXQgJ19vd25lclJlcG9zaXRvcnlUb093bmVkUmVwb3NpdG9y
aWVzTWFwJy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuX3VwZGF0ZUZyb21PYmplY3Qp
OiBPbmx5IHVwZGF0ZSAnX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwJyBhbmQgJ19vd25lclJl
cG9zaXRvcnlUb093bmVkUmVwb3NpdG9yaWVzTWFwJyB3aGVuICdjb21taXRPd25lcicgZXhpc3Rz
LgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5vd25lckNvbW1pdEZvclJlcG9zaXRvcnkp
OiBSZXR1cm5zIGEgc29ydGVkIGxpc3Qgb2YgdG9wIGxldmVsIHJlcG9zaXRvcmllcy4KKyAgICAg
ICAgKENvbW1pdFNldC5wcm90b3R5cGUub3duZWRSZXBvc2l0b3JpZXNGb3JPd25lclJlcG9zaXRv
cnkpOiBSZXR1cm5zIG93bmVkIHJlcG9zaXRvcmllcyBnaXZlbiBhIG93bmVyIHJlcG9zaXRvcnku
CisgICAgICAgIChDdXN0b21Db21taXRTZXQucHJvdG90eXBlLm93bmVyQ29tbWl0Rm9yUmVwb3Np
dG9yeSk6IFJldHVybnMgYSBzb3J0ZWQgbGlzdCBvZiB0b3AgbGV2ZWwgcmVwb3NpdG9yaWVzLgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdHJpZ2dlcmFibGUuanM6CisgICAgICAgIChwcm90
b3R5cGUuYWNjZXB0cyk6IEl0IHNob3VsZCBvbmx5IGNoZWNrIGFnYWluc3QgdG9wLWxldmVsIHJl
cG9zaXRvcmllcy4gUmVtb3ZlZCBhIGRlcHJlY2F0ZWQgJ0ZJWE1FJy4KKyAgICAgICAgKiBzZXJ2
ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qczogQWRkZWQg
dW5pdCB0ZXN0IGZvciBidWlsZGluZyBvd25lZCBjb21taXRzIGJpbmFyeS4KKyAgICAgICAgKGNy
ZWF0ZVRyaWdnZXJhYmxlKTogQWRkZWQgY29uZGl0aW9uYWwgJ2lmUmVwb3NpdG9yeVNldCcgYW5k
ICdvd25lZFJldmlzaW9ucycgaW4gdGhlIHJlcG9zaXRvcnkgZ3JvdXBzLgorICAgICAgICAqIHRv
b2xzL2pzL2J1aWxkYm90LXN5bmNlci5qczoKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3Rv
dHlwZS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdCk6CisgICAgICAgICAgICBBZGRlZCBsb2dp
YyB0byBjb25kaXRpb25hbHkgY3JlYXRlIGJ1aWxkIHByb3BlcnR5IGZvciAnaWZSZXBvc2l0b3J5
U2V0Jy4KKyAgICAgICAgICAgIEFkZGVkIGxvZ2ljIHRvIGNyZWF0ZSAnb3duZWRSZXZpc2lvbnMn
IGJhc2VkIG9uIHRoZSBvd25lciByZXBvc2l0b3JpZXMgaXQgc3BlY2lmaWVkLgorICAgICAgICAo
QnVpbGRib3RTeW5jZXIuX3BhcnNlUmVwb3NpdG9yeUdyb3VwKTogQnVpbGQgcHJvcGVydHkgdGVt
cGxhdGUgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlICdpZlJlcG9zaXRvcnlTZXQnIGFuZCAnb3du
ZWRSZXZpc2lvbnMnLgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3Rz
LmpzOiBBZGRlZCB1bml0IHRlc3RzIGZvciAnaWZSZXBvc2l0b3J5U2V0JyBhbmQgJ293bmVkUmV2
aXNpb25zJy4KKyAgICAgICAgKiB1bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanM6IEFkZGVk
IHVuaXQgdGVzdHMgZm9yICd0b3BMZXZlbFJlcG9zaXRvcmllc1NvcnRlZEJ5TmFtZVByZWZlcnJp
bmdPbmVzV2l0aFVSTCcuCisgICAgICAgICogdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1t
b2RlbHMuanM6IEFkZGVkIGEgcmVwb3NpdG9yeSBncm91cCBjb250YWlucyAnaW9zJywgJ3dlYmtp
dCcgYW5kICdvd25lclJlcG9zaXRvcnknLgorCiAyMDE3LTA5LTE5ICBEZXdlaSBaaHUgIDxkZXdl
aV96aHVAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSAnb3duZWQgY29tbWl0JyBpbnN0ZWFkIG9m
ICdzdWIgY29tbWl0JyB3aGVuZXZlciByZWZlcnMgdG8gYSBjb21taXQgb3duZWQgYnkgYW5vdGhl
ciBjb21taXQuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCBjYjhlNmYyMDVhMjcxNTA5NjEyMzk2MWIyNTli
OTc3MmQxMWQ2ZDY2Li5mNDIyMGE1ZDNiY2E2NjkxYzMzNGVhY2JjMWZkMTAyMDAzMGE5MWMyIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21t
aXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2NvbW1pdC1zZXQuanMKQEAgLTExLDYgKzExLDcgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMg
RGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcCA9IG5l
dyBNYXA7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwID0gbmV3IE1h
cDsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAgPSBuZXcgTWFwOwor
ICAgICAgICB0aGlzLl9vd25lclJlcG9zaXRvcnlUb093bmVkUmVwb3NpdG9yaWVzTWFwID0gbmV3
IE1hcDsKICAgICAgICAgdGhpcy5fbGF0ZXN0Q29tbWl0VGltZSA9IG51bGw7CiAgICAgICAgIHRo
aXMuX2N1c3RvbVJvb3RzID0gW107CiAgICAgICAgIHRoaXMuX2FsbFJvb3RGaWxlcyA9IFtdOwpA
QCAtMjgsNiArMjksNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3Qg
ewogICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmNsZWFyKCk7CiAgICAgICAgIHRo
aXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3Jl
cG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX293bmVyUmVw
b3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fcmVw
b3NpdG9yaWVzID0gW107CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZyb21PYmplY3Qob2JqZWN0KTsK
ICAgICB9CkBAIC00NCw3ICs0NiwxNCBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9k
ZWxPYmplY3QgewogICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvbW1pdC5yZXBvc2l0
b3J5KCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuc2V0KHJlcG9z
aXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5z
ZXQocmVwb3NpdG9yeSwgaXRlbS5wYXRjaCk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5
VG9Db21taXRPd25lck1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5jb21taXRPd25lcik7CisgICAg
ICAgICAgICBpZiAoaXRlbS5jb21taXRPd25lcikgeworICAgICAgICAgICAgICAgIHRoaXMuX3Jl
cG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLmNvbW1pdE93bmVy
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBvd25lclJlcG9zaXRvcnkgPSBpdGVtLmNvbW1pdE93
bmVyLnJlcG9zaXRvcnkoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX293bmVyUmVwb3Np
dG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAuZ2V0KG93bmVyUmVwb3NpdG9yeSkpCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAu
c2V0KG93bmVyUmVwb3NpdG9yeSwgW3JlcG9zaXRvcnldKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0
b3JpZXNNYXAuZ2V0KG93bmVyUmVwb3NpdG9yeSkucHVzaChyZXBvc2l0b3J5KTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLnNldChy
ZXBvc2l0b3J5LCBpdGVtLnJlcXVpcmVzQnVpbGQpOwogICAgICAgICAgICAgdGhpcy5fcmVwb3Np
dG9yeVRvUm9vdE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5yb290RmlsZSk7CiAgICAgICAgICAg
ICBpZiAoaXRlbS5yb290RmlsZSkKQEAgLTU5LDYgKzY4LDEwIEBAIGNsYXNzIENvbW1pdFNldCBl
eHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgY3VzdG9tUm9vdHMoKSB7IHJldHVybiB0aGlz
Ll9jdXN0b21Sb290czsgfQogICAgIGFsbFJvb3RGaWxlcygpIHsgcmV0dXJuIHRoaXMuX2FsbFJv
b3RGaWxlczsgfQogICAgIGNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4g
dGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIG93bmVy
Q29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5
VG9Db21taXRPd25lck1hcC5nZXQocmVwb3NpdG9yeSk7IH0KKyAgICB0b3BMZXZlbFJlcG9zaXRv
cmllcygpIHsgcmV0dXJuIFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVS
TCh0aGlzLl9yZXBvc2l0b3JpZXMuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiB7IHJldHVybiAhdGhp
cy5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsgfSkpOyB9CisKKyAgICBv
d25lZFJlcG9zaXRvcmllc0Zvck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0
aGlzLl9vd25lclJlcG9zaXRvcnlUb093bmVkUmVwb3NpdG9yaWVzTWFwLmdldChyZXBvc2l0b3J5
KTsgfQogCiAgICAgcmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCiAgICAgewpAQCAt
MjA0LDYgKzIxNyw3IEBAIGNsYXNzIEN1c3RvbUNvbW1pdFNldCB7CiAgICAgfQogCiAgICAgcmVw
b3NpdG9yaWVzKCkgeyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9z
aXRvcnkua2V5cygpKTsgfQorICAgIHRvcExldmVsUmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gUmVw
b3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHRoaXMucmVwb3NpdG9yaWVz
KCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiB7IHJldHVybiAhdGhpcy5vd25lclJldmlzaW9uRm9y
UmVwb3NpdG9yeShyZXBvc2l0b3J5KTsgfSkpOyB9CiAgICAgcmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHJlcG9zaXRvcnkpCiAgICAgewogICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuX3JldmlzaW9u
TGlzdEJ5UmVwb3NpdG9yeS5nZXQocmVwb3NpdG9yeSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90cmlnZ2VyYWJsZS5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJhYmxlLmpzCmluZGV4IDNl
YThlMjE0NWZjYTBkMWI2ZmJmNDBhNjQ0N2VkMGI2NzI1NGUyMTcuLjNjYjBmMzdlNTRhZDU0N2Vm
N2VhOTFiZDJhNDE0NDAyZDE0NGNkNjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJhYmxlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJhYmxlLmpzCkBAIC02NSw4ICs2NSw3
IEBAIGNsYXNzIFRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVj
dCB7CiAKICAgICBhY2NlcHRzKGNvbW1pdFNldCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
ZGQgYSBjaGVjayBmb3IgcGF0Y2guCi0gICAgICAgIGNvbnN0IGNvbW1pdFNldFJlcG9zaXRvcmll
cyA9IFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTChjb21taXRTZXQu
cmVwb3NpdG9yaWVzKCkpOworICAgICAgICBjb25zdCBjb21taXRTZXRSZXBvc2l0b3JpZXMgPSBj
b21taXRTZXQudG9wTGV2ZWxSZXBvc2l0b3JpZXMoKTsKICAgICAgICAgaWYgKHRoaXMuX3JlcG9z
aXRvcmllcy5sZW5ndGggIT0gY29tbWl0U2V0UmVwb3NpdG9yaWVzLmxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9yZXBv
c2l0b3JpZXMubGVuZ3RoOyBpKyspIHsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWlsZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5q
cyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtc3luYy1idWls
ZGJvdC1pbnRlZ3JhdGlvbi10ZXN0cy5qcwppbmRleCBiYWRhNTdhMWI2NTRmNzBlZTI2NGRmMDFi
MDQwZTI1NWJiN2Y5ZmI1Li5iMGMwODRhZTg3MDE3ZjUxNzExM2FhNmU4ZWVmOWQ3MTBjNjQ0YTc1
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xz
LXN5bmMtYnVpbGRib3QtaW50ZWdyYXRpb24tdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1zeW5jLWJ1aWxkYm90LWludGVncmF0aW9uLXRl
c3RzLmpzCkBAIC0yNiw3ICsyNiw5IEBAIGZ1bmN0aW9uIGNyZWF0ZVRyaWdnZXJhYmxlKCkKICAg
ICAgICAgICAgICAgICAnd2Via2l0JzogewogICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3Jp
ZXM6IHsnV2ViS2l0Jzoge2FjY2VwdHNQYXRjaDogdHJ1ZX19LAogICAgICAgICAgICAgICAgICAg
ICB0ZXN0UHJvcGVydGllczogeyd3ayc6IHsncmV2aXNpb24nOiAnV2ViS2l0J30sICdyb290cyc6
IHsncm9vdHMnOiB7fX19LAotICAgICAgICAgICAgICAgICAgICBidWlsZFByb3BlcnRpZXM6IHsn
d2snOiB7J3JldmlzaW9uJzogJ1dlYktpdCd9LCAnd2stcGF0Y2gnOiB7J3BhdGNoJzogJ1dlYktp
dCd9fSwKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRQcm9wZXJ0aWVzOiB7J3drJzogeydyZXZp
c2lvbic6ICdXZWJLaXQnfSwgJ3drLXBhdGNoJzogeydwYXRjaCc6ICdXZWJLaXQnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdjaGVja2JveCc6IHsnaWZSZXBvc2l0b3J5U2V0JzogWydXZWJL
aXQnXSwgJ3ZhbHVlJzogJ2J1aWxkLXdrJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAnb3du
ZWQtY29tbWl0cyc6IHsnb3duZWRSZXZpc2lvbnMnOiAnV2ViS2l0J319LAogICAgICAgICAgICAg
ICAgICAgICBhY2NlcHRzUm9vdHM6IHRydWUsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSwKQEAgLTg0LDYgKzg2LDIyIEBAIGZ1bmN0aW9uIGNyZWF0ZVRlc3RHcm91cFdpaFBhdGNo
KCkKICAgICB9KQogfQogCitmdW5jdGlvbiBjcmVhdGVUZXN0R3JvdXBXaWhPd25lZENvbW1pdCgp
Cit7CisgICAgY29uc3Qgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVUZXN0
SWQoKSk7CisgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53
ZWJraXRSZXBvc2l0b3J5SWQoKSk7CisgICAgY29uc3Qgb3duZWRTSkMgPSBSZXBvc2l0b3J5LmZp
bmRCeUlkKE1vY2tEYXRhLm93bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgIGNvbnN0IHNldDEg
PSBuZXcgQ3VzdG9tQ29tbWl0U2V0OworICAgIHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCwgJzE5MTYyMicpOworICAgIHNldDEuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93
bmVkU0pDLCAnb3duZWQtanNjLTYxNjEnLCBudWxsLCAnMTkxNjIyJyk7CisgICAgY29uc3Qgc2V0
MiA9IG5ldyBDdXN0b21Db21taXRTZXQ7CisgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRv
cnkod2Via2l0LCAnMTkyNzM2Jyk7CisgICAgc2V0Mi5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnko
b3duZWRTSkMsICdvd25lZC1qc2MtOTE5MScsIG51bGwsICcxOTI3MzYnKTsKKyAgICByZXR1cm4g
VGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlk
KE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCBb
c2V0MSwgc2V0Ml0pLnRoZW4oKHRhc2spID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5m
aW5kQWxsQnlUYXNrKHRhc2suaWQoKSlbMF07CisgICAgfSk7Cit9CisKIGZ1bmN0aW9uIHVwbG9h
ZFJvb3QoYnVpbGRSZXF1ZXN0SWQsIGJ1aWxkTnVtYmVyKQogewogICAgIHJldHVybiBUZW1wb3Jh
cnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKGByb290JHtidWlsZE51bWJlcn0uZGF0YCwgYHJvb3Qg
Zm9yIGJ1aWxkICR7YnVpbGROdW1iZXJ9YCkudGhlbigocm9vdEZpbGUpID0+IHsKQEAgLTE3NCw3
ICsxOTIsNyBAQCBkZXNjcmliZSgnc3luYy1idWlsZGJvdCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOwogICAgICAgICAgICAgYXNz
ZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWlsZGVycy9zb21l
JTIwYnVpbGRlci9mb3JjZScsICdPSycpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChy
ZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICd3ay1wYXRjaCc6IFJlbW90ZUFQSS51
cmwoJy9hcGkvdXBsb2FkZWQtZmlsZS8xLmRhdCcpLAotICAgICAgICAgICAgICAgICdidWlsZC1y
ZXF1ZXN0LWlkJzogJzEnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJ30pOwor
ICAgICAgICAgICAgICAgICdidWlsZC1yZXF1ZXN0LWlkJzogJzEnLCAnZm9yY2VzY2hlZHVsZXIn
OiAnZm9yY2UtYWItYnVpbGRzJywgJ2NoZWNrYm94JzogJ2J1aWxkLXdrJ30pOwogICAgICAgICAg
ICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKICAgICAgICAgfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxMCk7
CkBAIC0yODYsNyArMzA0LDcgQEAgZGVzY3JpYmUoJ3N5bmMtYnVpbGRib3QnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzLmxlbmd0aCwgNyk7CiAgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChy
ZXF1ZXN0c1s2XSwgJ1BPU1QnLCAnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2ZvcmNlJywgJ09L
Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3RzWzZdLmRhdGEsIHsnd2sn
OiAnMTkxNjIyJywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnMicsICdmb3JjZXNjaGVkdWxlcic6ICdm
b3JjZS1hYi1idWlsZHMnfSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcXVlc3Rz
WzZdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnMicsICdmb3Jj
ZXNjaGVkdWxlcic6ICdmb3JjZS1hYi1idWlsZHMnLCAnY2hlY2tib3gnOiAnYnVpbGQtd2snfSk7
CiAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwogICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5s
ZW5ndGgsIDEwKTsKQEAgLTY1OCw0ICs2NzYsMjg2IEBAIGRlc2NyaWJlKCdzeW5jLWJ1aWxkYm90
JywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQg
c2NoZWR1bGUgYSBidWlsZCB0byBidWlsZCBiaW5hcnkgZm9yIG93bmVkIGNvbW1pdHMnLCAoKSA9
PiB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAg
ICAgICAgbGV0IHRyaWdnZXJhYmxlOworICAgICAgICBsZXQgdGFza0lkID0gbnVsbDsKKyAgICAg
ICAgbGV0IHN5bmNQcm9taXNlOworICAgICAgICByZXR1cm4gY3JlYXRlVHJpZ2dlcmFibGUoKS50
aGVuKChuZXdUcmlnZ2VyYWJsZSkgPT4geworICAgICAgICAgICAgdHJpZ2dlcmFibGUgPSBuZXdU
cmlnZ2VyYWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBXaWhPd25lZENv
bW1pdCgpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXApID0+IHsKKyAgICAgICAgICAgIHRh
c2tJZCA9IHRlc3RHcm91cC50YXNrKCkuaWQoKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAg
ICAgICAgICAgY29uc3Qgb3duZWRKU0MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLm93
bmVkSlNDUmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91
cC5idWlsZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgYnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2Vy
dChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1
ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Quc3Rh
dHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJl
cXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQg
PSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRv
cnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93
bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyks
IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAg
ICAgICBjb25zdCBvdGhlckJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClb
MV07CisgICAgICAgICAgICBhc3NlcnQob3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAg
ICAgICAgICAgIGFzc2VydCghb3RoZXJCdWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdXYWl0aW5n
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJs
KCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1
aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3Ro
ZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3Ro
ZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
cm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVs
bCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lv
bkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0
U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJp
Z2dlcmFibGUuaW5pdFN5bmNlcnMoKS50aGVuKCgpID0+IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCkp
OworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMu
bGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3Rz
WzBdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvcGVuZGluZ0J1aWxkcycs
IFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzFdLCAn
R0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL3BlbmRpbmdCdWlsZHMnLCBbXSk7
CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1syXSwgJ0dFVCcs
ICcvanNvbi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgNik7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1szXSwg
J0dFVCcsICcvanNvbi9idWlsZGVycy9zb21lJTIwdGVzdGVyL2J1aWxkcy8/c2VsZWN0PS0xJnNl
bGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVl
c3RzWzRdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyL2J1aWxkcy8/c2Vs
ZWN0PS0xJnNlbGVjdD0tMicsIHt9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1
ZXN0KHJlcXVlc3RzWzVdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9i
dWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOworICAgICAgICAgICAg
YXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWlsZGVycy9z
b21lJTIwYnVpbGRlci9mb3JjZScsICdPSycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdidWlsZC1yZXF1ZXN0LWlkJzog
JzEnLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJywgJ293bmVkLWNvbW1pdHMn
OiBgeyJXZWJLaXQiOlt7InJldmlzaW9uIjoib3duZWQtanNjLTYxNjEiLCJyZXBvc2l0b3J5Ijoi
SmF2YVNjcmlwdENvcmUiLCJvd25lclJldmlzaW9uIjoiMTkxNjIyIn1dfWB9KTsKKyAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMTAp
OworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbN10sICdHRVQn
LCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9wZW5kaW5nQnVpbGRzJywgW10pOworICAg
ICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbOF0sICdHRVQnLCAnL2pz
b24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsCisgICAgICAgICAgICAg
ICAgW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlcicsIGJ1aWxk
UmVxdWVzdElkOiAxfSldKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJl
cXVlc3RzWzldLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9wZW5kaW5n
QnVpbGRzJywgW10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJl
cXVlc3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVxdWVzdHMubGVuZ3RoLCAxMyk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVx
dWVzdChyZXF1ZXN0c1sxMF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9i
dWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICBhc3NlcnRBbmRS
ZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1sxMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUy
MGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywgeworICAgICAgICAgICAgICAg
IFstMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlcicsIGJ1
aWxkUmVxdWVzdElkOiAxfSkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0QW5k
UmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbMTJdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVy
JTIwYnVpbGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAg
ICByZXR1cm4gc3luY1Byb21pc2U7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKKyAgICAgICAg
fSkudGhlbigodGVzdEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RH
cm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IHRlc3RHcm91cCA9IHRlc3RHcm91
cHNbMF07CisgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1v
Y2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVkSlND
ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS5vd25lZEpTQ1JlcG9zaXRvcnlJZCgpKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0
aCwgNik7CisKKyAgICAgICAgICAgIGNvbnN0IGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWls
ZFJlcXVlc3RzKClbMF07CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQo
KSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdSdW5uaW5nJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwp
OworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpTQyksIGNvbW1pdFNldC5yZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNl
dC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICBjb25zdCBvdGhlckJ1aWxkUmVx
dWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMV07CisgICAgICAgICAgICBhc3NlcnQo
b3RoZXJCdWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghb3RoZXJC
dWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQnVp
bGRSZXF1ZXN0LnN0YXR1c0xhYmVsKCksICdXYWl0aW5nJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzVXJsKCksIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAg
ICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0
KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChv
dGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJS
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0Mp
LCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7
CisKKyAgICAgICAgICAgIHJldHVybiB1cGxvYWRSb290KGJ1aWxkUmVxdWVzdC5pZCgpLCAxMjMp
OworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAu
ZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMp
ID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7Cisg
ICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAg
Y29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0
b3J5SWQoKSk7CisgICAgICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5
SWQoTW9ja0RhdGEub3duZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAg
ICBjb25zdCBidWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAg
ICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNz
ZXJ0KCFidWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5v
cmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNz
ZXJ0Lm5vdEVxdWFsKGJ1aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVw
b3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVk
SlNDKSwgY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAg
ICAgIGNvbnN0IHdlYmtpdFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0
KTsKKyAgICAgICAgICAgIGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxl
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290
MTIzLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9v
dEZpbGVzKCksIFt3ZWJraXRSb290XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2Vy
dChvdGhlckJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhl
ckJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJC
dWlsZFJlcXVlc3Quc3RhdHVzTGFiZWwoKSwgJ1dhaXRpbmcnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5zdGF0dXNVcmwoKSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAg
ICAgICAgICAgY29uc3Qgb3RoZXJDb21taXRTZXQgPSBvdGhlckJ1aWxkUmVxdWVzdC5jb21taXRT
ZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSwgJzE5MjczNicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25l
clJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChvdGhlckNvbW1pdFNldC5vd25lclJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZEpT
QyksIG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtd
KTsKKworICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXNldCgpOworICAgICAgICAgICAgc3lu
Y1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5pbml0U3luY2VycygpLnRoZW4oKCkgPT4gdHJpZ2dlcmFi
bGUuc3luY09uY2UoKSk7CisgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJl
cXVlc3QocmVxdWVzdHNbMF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9w
ZW5kaW5nQnVpbGRzJywgW10pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3Qo
cmVxdWVzdHNbMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvcGVuZGlu
Z0J1aWxkcycsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVl
c3RzWzJdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9wZW5kaW5nQnVp
bGRzJywgW10pOworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVl
c3QoKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVxdWVzdHMubGVuZ3RoLCA2KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0
KHJlcXVlc3RzWzNdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjB0ZXN0ZXIvYnVpbGRz
Lz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywge30pOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2
ZVJlcXVlc3QocmVxdWVzdHNbNF0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxk
ZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywgeworICAgICAgICAgICAgICAgIFstMV06
IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXInLCBidWlsZFJl
cXVlc3RJZDogMX0pCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydEFuZFJlc29s
dmVSZXF1ZXN0KHJlcXVlc3RzWzVdLCAnR0VUJywgJy9qc29uL2J1aWxkZXJzL290aGVyJTIwYnVp
bGRlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInLCB7fSk7CisgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDcpOworICAgICAg
ICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbNl0sICdQT1NUJywgJy9idWls
ZGVycy9zb21lJTIwYnVpbGRlci9mb3JjZScsICdPSycpOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXF1ZXN0c1s2XS5kYXRhLCB7J3drJzogJzE5MjczNicsICdidWlsZC1yZXF1ZXN0
LWlkJzogJzInLCAnZm9yY2VzY2hlZHVsZXInOiAnZm9yY2UtYWItYnVpbGRzJywgJ293bmVkLWNv
bW1pdHMnOiBgeyJXZWJLaXQiOlt7InJldmlzaW9uIjoib3duZWQtanNjLTkxOTEiLCJyZXBvc2l0
b3J5IjoiSmF2YVNjcmlwdENvcmUiLCJvd25lclJldmlzaW9uIjoiMTkyNzM2In1dfWB9KTsKKyAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0
aCwgMTApOworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbN10s
ICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9wZW5kaW5nQnVpbGRzJywgW10p
OworICAgICAgICAgICAgYXNzZXJ0QW5kUmVzb2x2ZVJlcXVlc3QocmVxdWVzdHNbOF0sICdHRVQn
LCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvcGVuZGluZ0J1aWxkcycsIFtdKTsKKyAg
ICAgICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzldLCAnR0VUJywgJy9q
c29uL2J1aWxkZXJzL290aGVyJTIwYnVpbGRlci9wZW5kaW5nQnVpbGRzJywgW10pOworICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
Myk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0c1sxMF0sICdH
RVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMHRlc3Rlci9idWlsZHMvP3NlbGVjdD0tMSZzZWxl
Y3Q9LTInLCB7fSk7CisgICAgICAgICAgICBhc3NlcnRBbmRSZXNvbHZlUmVxdWVzdChyZXF1ZXN0
c1sxMV0sICdHRVQnLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxl
Y3Q9LTEmc2VsZWN0PS0yJywgeworICAgICAgICAgICAgICAgIFstMV06IE1vY2tEYXRhLnJ1bm5p
bmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlcicsIGJ1aWxkUmVxdWVzdElkOiAyfSksCisg
ICAgICAgICAgICAgICAgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRCdWlsZCh7YnVpbGRlcjogJ3Nv
bWUgYnVpbGRlcicsIGJ1aWxkUmVxdWVzdElkOiAxfSksCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGFzc2VydEFuZFJlc29sdmVSZXF1ZXN0KHJlcXVlc3RzWzEyXSwgJ0dFVCcsICcvanNv
bi9idWlsZGVycy9vdGhlciUyMGJ1aWxkZXIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJywg
e30pOworICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwg
dHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCB0ZXN0
R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAg
ICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEub3duZWRKU0NS
ZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxk
UmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBjb25zdCBidWlsZFJlcXVlc3Qg
PSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxk
UmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNU
ZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJl
bCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1
aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGJ1aWxkUmVx
dWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBi
dWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJl
cG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgY29tbWl0U2V0LnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdFJvb3Qg
PSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGFzc2Vy
dCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTIzLmRhdCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJraXRSb290
XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1
aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVxdWVzdC5p
c0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5pc1Rlc3Qo
KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3RhdHVzTGFi
ZWwoKSwgJ1J1bm5pbmcnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1aWxkUmVx
dWVzdC5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUl
MjBidWlsZGVyL2J1aWxkcy8xMjQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckJ1
aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBvdGhlckNv
bW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucGF0Y2hG
b3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90
aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0
Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgb3RoZXJDb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChvdGhlckNvbW1pdFNldC5hbGxSb290RmlsZXMoKSwgW10pOworCisgICAgICAgICAgICByZXR1
cm4gdXBsb2FkUm9vdChvdGhlckJ1aWxkUmVxdWVzdC5pZCgpLCAxMjQpOworICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKHRh
c2tJZCwgdHJ1ZSk7CisgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25z
dCB0ZXN0R3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0g
UmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSk7CisgICAg
ICAgICAgICBjb25zdCBvd25lZEpTQyA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEub3du
ZWRKU0NSZXBvc2l0b3J5SWQoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vw
LmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBjb25zdCBidWlsZFJl
cXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgYXNzZXJ0
KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVl
c3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdC5zdGF0
dXNMYWJlbCgpLCAnQ29tcGxldGVkJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRS
ZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29t
ZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGJ1
aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBjb25zdCBjb21taXRT
ZXQgPSBidWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQub3duZXJSZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0U2V0Lm93bmVyUmV2aXNpb25Gb3JSZXBvc2l0b3J5KG93bmVkSlNDKSwgY29tbWl0U2V0
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtp
dFJvb3QgPSBjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAg
IGFzc2VydCh3ZWJraXRSb290IGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh3ZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTIzLmRhdCcpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFt3ZWJr
aXRSb290XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdy
b3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGFzc2VydChvdGhlckJ1aWxkUmVx
dWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFvdGhlckJ1aWxkUmVxdWVzdC5p
c1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJCdWlsZFJlcXVlc3Quc3Rh
dHVzTGFiZWwoKSwgJ0NvbXBsZXRlZCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVy
QnVpbGRSZXF1ZXN0LnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRl
cnMvc29tZSUyMGJ1aWxkZXIvYnVpbGRzLzEyNCcpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVx
dWFsKG90aGVyQnVpbGRSZXF1ZXN0LmJ1aWxkSWQoKSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNv
bnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1p
dFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJSZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQub3duZXJS
ZXZpc2lvbkZvclJlcG9zaXRvcnkob3duZWRKU0MpLCBvdGhlckNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSk7CisgICAgICAgICAgICBjb25zdCBvdGhlcldlYmtpdFJvb3Qg
PSBvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOworICAgICAgICAgICAg
YXNzZXJ0KG90aGVyV2Via2l0Um9vdCBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJXZWJraXRSb290LmZpbGVuYW1lKCksICdyb290MTI0LmRh
dCcpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckNvbW1pdFNldC5hbGxSb290
RmlsZXMoKSwgW290aGVyV2Via2l0Um9vdF0pOworICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5
bmNlci5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5j
ZXIuanMKaW5kZXggNTg4YWY5MDY5MjFlMTBiZTE5YWViZDFiNzgyY2YyMGE5YWJiYzE2Zi4uNjI3
N2M5YjEyYzI3MmQ0ODliY2FjNTI4MjE5MmUxYzJiYzkzNzhmMCAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCkBAIC0yNjAs
MTIgKzI2MCwzMiBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocm9vdEZp
bGVzLm1hcCgoZmlsZSkgPT4gKHt1cmw6IGZpbGUudXJsKCl9KSkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnb3duZWRSZXZpc2lvbnMnOgorICAgICAgICAgICAg
ICAgIGNvbnN0IG93bmVkUmVwb3NpdG9yaWVzID0gY29tbWl0U2V0Lm93bmVkUmVwb3NpdG9yaWVz
Rm9yT3duZXJSZXBvc2l0b3J5KHZhbHVlLm93bmVyUmVwb3NpdG9yeSk7CisgICAgICAgICAgICAg
ICAgaWYgKCFvd25lZFJlcG9zaXRvcmllcykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXZpc2lvbkluZm8gPSB7fTsKKyAgICAgICAgICAg
ICAgICByZXZpc2lvbkluZm9bdmFsdWUub3duZXJSZXBvc2l0b3J5Lm5hbWUoKV0gPSBvd25lZFJl
cG9zaXRvcmllcy5tYXAoKG93bmVkUmVwb3NpdG9yeSkgPT4geworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgJ3JldmlzaW9uJzogY29tbWl0U2V0
LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvd25lZFJlcG9zaXRvcnkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ3JlcG9zaXRvcnknOiBvd25lZFJlcG9zaXRvcnkubmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ293bmVyUmV2aXNpb24nOiBjb21taXRTZXQub3duZXJSZXZpc2lvbkZv
clJlcG9zaXRvcnkob3duZWRSZXBvc2l0b3J5KQorICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnko
cmV2aXNpb25JbmZvKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
J2NvbmRpdGlvbmFsJzoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLmNvbmRpdGlvbikg
ewogICAgICAgICAgICAgICAgIGNhc2UgJ2J1aWx0JzoKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFyZXF1ZXN0c0luR3JvdXAuc29tZSgob3RoZXJSZXF1ZXN0KSA9PiBvdGhlclJlcXVlc3QuaXNC
dWlsZCgpICYmIG90aGVyUmVxdWVzdC5jb21taXRTZXQoKSA9PSBidWlsZFJlcXVlc3QuY29tbWl0
U2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVzQnVpbGQnOgorICAg
ICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0J1aWxkID0gdmFsdWUucmVwb3NpdG9yaWVz
VG9DaGVjay5tYXAoY29tbWl0U2V0LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5LmJpbmQoY29t
bWl0U2V0KSkuc29tZSgocmVxdWlyZXNCdWlsZCkgPT4gcmVxdWlyZXNCdWlsZCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghcmVxdWlyZXNCdWlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZTsKICAgICAgICAgICAgIH0KQEAg
LTQzOCwxNyArNDU4LDI0IEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICAgICAgICAgIGFz
c2VydChncm91cC5hY2NlcHRzUm9vdHMsIGBSZXBvc2l0b3J5IGdyb3VwICIke25hbWV9IiBzcGVj
aWZpZXMgdGhlIHByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGJ1dCBkb2VzIG5vdCBhY2NlcHQgcm9v
dHMgaW4gdGVzdGluZ2ApOwogICAgICAgICAgICAgY29uc3QgcmV2aXNpb25SZXBvc2l0b3JpZXMg
PSBuZXcgU2V0OwogICAgICAgICAgICAgY29uc3QgcGF0Y2hSZXBvc2l0b3JpZXMgPSBuZXcgU2V0
OwotICAgICAgICAgICAgYnVpbGRQcm9wZXJ0aWVzVGVtcGxhdGUgPSB0aGlzLl9wYXJzZVJlcG9z
aXRvcnlHcm91cFByb3BlcnR5VGVtcGxhdGUoJ2J1aWxkJywgbmFtZSwgZ3JvdXAuYnVpbGRQcm9w
ZXJ0aWVzLCAodHlwZSwgdmFsdWUpID0+IHsKKyAgICAgICAgICAgIGJ1aWxkUHJvcGVydGllc1Rl
bXBsYXRlID0gdGhpcy5fcGFyc2VSZXBvc2l0b3J5R3JvdXBQcm9wZXJ0eVRlbXBsYXRlKCdidWls
ZCcsIG5hbWUsIGdyb3VwLmJ1aWxkUHJvcGVydGllcywgKHR5cGUsIHZhbHVlLCBjb25kaXRpb24p
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQodHlwZSAhPSAncm9vdHMnLCBgUmVwb3NpdG9y
eSBncm91cCAiJHtuYW1lfSIgc3BlY2lmaWVzIHJvb3RzIGluIHRoZSBwcm9wZXJ0aWVzIGZvciBi
dWlsZGluZ2ApOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSByZXNvbHZlUmVw
b3NpdG9yeSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbGV0IHJlcG9zaXRvcnkgPSBudWxsOwog
ICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgJ3Bh
dGNoJzoKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlc29sdmVSZXBvc2l0b3J5
KHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBhdGNoQWNjZXB0aW5nUmVwb3Np
dG9yeUxpc3QuaGFzKHJlcG9zaXRvcnkpLCBgUmVwb3NpdG9yeSBncm91cCAiJHtuYW1lfSIgc3Bl
Y2lmaWVzIGEgcGF0Y2ggZm9yICIke3ZhbHVlfSIgYnV0IGl0IGRvZXMgbm90IGFjY2VwdCBhIHBh
dGNoYCk7CiAgICAgICAgICAgICAgICAgICAgIHBhdGNoUmVwb3NpdG9yaWVzLmFkZChyZXBvc2l0
b3J5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0eXBlLCByZXBvc2l0b3J5fTsKICAg
ICAgICAgICAgICAgICBjYXNlICdyZXZpc2lvbic6CisgICAgICAgICAgICAgICAgICAgIHJlcG9z
aXRvcnkgPSByZXNvbHZlUmVwb3NpdG9yeSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dmlzaW9uUmVwb3NpdG9yaWVzLmFkZChyZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHt0eXBlLCByZXBvc2l0b3J5fTsKKyAgICAgICAgICAgICAgICBjYXNlICdvd25lZFJl
dmlzaW9ucyc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dHlwZSwgb3duZXJSZXBvc2l0
b3J5OiByZXNvbHZlUmVwb3NpdG9yeSh2YWx1ZSl9OworICAgICAgICAgICAgICAgIGNhc2UgJ2lm
UmVwb3NpdG9yeVNldCc6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb25kaXRpb24sICdj
b25kaXRpb24gbXVzdCBzZXQgaWYgdHlwZSBpcyAiaWZSZXBvc2l0b3J5U2V0IicpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4ge3R5cGU6ICdjb25kaXRpb25hbCcsIGNvbmRpdGlvbjogJ3Jl
cXVpcmVzQnVpbGQnLCB2YWx1ZSwgcmVwb3NpdG9yaWVzVG9DaGVjazogY29uZGl0aW9uLm1hcChy
ZXNvbHZlUmVwb3NpdG9yeSl9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0pOwpAQCAtNDgzLDEwICs1MTAsMjIgQEAgY2xhc3Mg
QnVpbGRib3RTeW5jZXIgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25zdCBrZXlz
ID0gT2JqZWN0LmtleXModmFsdWUpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGtleXMubGVu
Z3RoLCAxLAotICAgICAgICAgICAgICAgIGBSZXBvc2l0b3J5IGdyb3VwICIke2dyb3VwTmFtZX0i
IHNwZWNpZmllcyBtb3JlIHRoYW4gb25lIHR5cGUgaW4gcHJvcGVydHkgIiR7cHJvcGVydHlOYW1l
fSI6ICIke2tleXMuam9pbignIiwgIicpfSJgKTsKLSAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBr
ZXlzWzBdOwotICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gbWFrZU9wdGlvbih0eXBlLCB2YWx1
ZVt0eXBlXSk7CisgICAgICAgICAgICBhc3NlcnQoa2V5cy5sZW5ndGggPT0gMSB8fCBrZXlzLmxl
bmd0aCA9PSAyLAorICAgICAgICAgICAgICAgIGBSZXBvc2l0b3J5IGdyb3VwICIke2dyb3VwTmFt
ZX0iIHNwZWNpZmllcyBtb3JlIHRoYW4gdHdvIHR5cGVzIGluIHByb3BlcnR5ICIke3Byb3BlcnR5
TmFtZX0iOiAiJHtrZXlzLmpvaW4oJyIsICInKX0iYCk7CisgICAgICAgICAgICBsZXQgdHlwZTsK
KyAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBudWxsOworICAgICAgICAgICAgbGV0IG9wdGlv
blZhbHVlOworICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID09IDIpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQoa2V5cy5pbmNsdWRlcygndmFsdWUnKSwgYFJlcG9zaXRvcnkgZ3JvdXAgIiR7
Z3JvdXBOYW1lfSIgd2l0aCB0d28gdHlwZXMgaW4gcHJvcGVydHkgIiR7cHJvcGVydHlOYW1lfSI6
ICIke2tleXMuam9pbignIiwgIicpfSIgc2hvdWxkIGNvbnRhaW5zICd2YWx1ZScgYXMgb25lIHR5
cGVgKTsKKyAgICAgICAgICAgICAgICB0eXBlID0ga2V5cy5maW5kKChrZXkpID0+IGtleSAhPSAn
dmFsdWUnKTsKKyAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZSA9IHZhbHVlLnZhbHVlOworICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbiA9IHZhbHVlW3R5cGVdOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdHlwZSA9IGtleXNbMF07CisgICAgICAg
ICAgICAgICAgb3B0aW9uVmFsdWUgPSB2YWx1ZVt0eXBlXTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbnN0IG9wdGlvbiA9IG1ha2VPcHRpb24odHlwZSwgb3B0aW9uVmFsdWUsIGNvbmRp
dGlvbik7CiAgICAgICAgICAgICBhc3NlcnQob3B0aW9uLCBgUmVwb3NpdG9yeSBncm91cCAiJHtn
cm91cE5hbWV9IiBzcGVjaWZpZXMgYW4gaW52YWxpZCB0eXBlICIke3R5cGV9IiBpbiBwcm9wZXJ0
eSAiJHtwcm9wZXJ0eU5hbWV9ImApOwogICAgICAgICAgICAgcHJvcGVydGllc1RlbXBsYXRlW3By
b3BlcnR5TmFtZV0gPSBvcHRpb247CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwpp
bmRleCBmMGQxMjVlNTA1ZmExYzljYTM0NjUyMGY2MjY4ZmU1MWVkNjNkNDNmLi4zMGJmMmNiZWRj
ZGI0YTJlMWFlM2MzODIwYmRjMGVmMjZhODdiYjc4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpz
CkBAIC0yMzUsMTMgKzIzNSw1MCBAQCBmdW5jdGlvbiBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3RX
aXRoUGF0Y2gocGxhdGZvcm0sIHRlc3QsIG9yZGVyKQogICAgIGNvbnN0IHJvb3QgPSBuZXcgVXBs
b2FkZWRGaWxlKDQ1NiwgeydjcmVhdGVkQXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0wMVQyMTowMzoy
N1onKSwgJ2ZpbGVuYW1lJzogJ3Jvb3QuZGF0JywgJ2V4dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhv
cic6ICdzb21lIHVzZXInLAogICAgICAgICBzaXplOiAxNjQ1MjIzNCwgc2hhMjU2OiAnMDNlZWQ3
YTg0OTRhYjg3OTRjNDRiN2Q0MzA4ZTU1NDQ4ZmM1NmY0ZDZjMTc1ODA5YmE5NjhmNzhmNjU2ZDU4
ZCd9KTsKIAotICAgIGNvbnN0IGNvbW1pdFNldCA9IENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24o
JzUzMjQ2NDU2Jywge2N1c3RvbVJvb3RzOiBbcm9vdF0sIHJldmlzaW9uSXRlbXM6IFt7Y29tbWl0
OiB3ZWJraXQxOTc0NjMsIHBhdGNofSwge2NvbW1pdDogc2hhcmVkMTExMjM3fSwge2NvbW1pdDog
aW9zMTNBNDUyfV19KTsKKyAgICBjb25zdCBjb21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2lu
Z2xldG9uKCc1MzI0NjQ1NicsIHtjdXN0b21Sb290czogW3Jvb3RdLCByZXZpc2lvbkl0ZW1zOiBb
e2NvbW1pdDogd2Via2l0MTk3NDYzLCBwYXRjaCwgcmVxdWlyZXNCdWlsZDogdHJ1ZX0sIHtjb21t
aXQ6IHNoYXJlZDExMTIzN30sIHtjb21taXQ6IGlvczEzQTQ1Mn1dfSk7CiAKICAgICByZXR1cm4g
QnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbihgNjM0NTY0NTM3Ni0ke29yZGVyfWAsIHsndHJp
Z2dlcmFibGUnOiBNb2NrTW9kZWxzLnRyaWdnZXJhYmxlLAogICAgICAgICByZXBvc2l0b3J5R3Jv
dXA6IE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeUdyb3VwLAogICAgICAgICAnY29tbWl0U2V0Jzog
Y29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZvcm0nOiBwbGF0Zm9ybSwgJ3Rl
c3QnOiB0ZXN0LCAnb3JkZXInOiBvcmRlcn0pOwogfQogCitmdW5jdGlvbiBjcmVhdGVTYW1wbGVC
dWlsZFJlcXVlc3RXaXRoT3duZWRDb21taXQocGxhdGZvcm0sIHRlc3QsIG9yZGVyKQoreworICAg
IGFzc2VydChwbGF0Zm9ybSBpbnN0YW5jZW9mIFBsYXRmb3JtKTsKKyAgICBhc3NlcnQoIXRlc3Qg
fHwgdGVzdCBpbnN0YW5jZW9mIFRlc3QpOworCisgICAgY29uc3Qgd2Via2l0MTk3NDYzID0gQ29t
bWl0TG9nLmVuc3VyZVNpbmdsZXRvbignMTExMTI3JywgeydpZCc6ICcxMTExMjcnLCAndGltZSc6
IDE0NTY5NTU4MDczMzQsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy53ZWJraXQsICdyZXZpc2lv
bic6ICcxOTc0NjMnfSk7CisgICAgY29uc3Qgb3duZXIxMTEyODkgPSBDb21taXRMb2cuZW5zdXJl
U2luZ2xldG9uKCcxMTEyODknLCB7J2lkJzogJzExMTI4OScsICd0aW1lJzogMTQ1NjkzMTg3NDAw
MCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxzLm93bmVyUmVwb3NpdG9yeSwgJ3JldmlzaW9uJzog
J293bmVyLTAwMSd9KTsKKyAgICBjb25zdCBvd25lZDExMTIyMiA9IENvbW1pdExvZy5lbnN1cmVT
aW5nbGV0b24oJzExMTIyMicsIHsnaWQnOiAnMTExMjIyJywgJ3RpbWUnOiAxNDU2OTMyNzc0MDAw
LCAncmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMub3duZWRSZXBvc2l0b3J5LCAncmV2aXNpb24nOiAn
b3duZWQtMDAyJ30pOworICAgIGNvbnN0IGlvczEzQTQ1MiA9IENvbW1pdExvZy5lbnN1cmVTaW5n
bGV0b24oJzg4OTMwJywgeydpZCc6ICc4ODkzMCcsICd0aW1lJzogMCwgJ3JlcG9zaXRvcnknOiBN
b2NrTW9kZWxzLmlvcywgJ3JldmlzaW9uJzogJzEzQTQ1Mid9KTsKKworICAgIGNvbnN0IGNvbW1p
dFNldCA9IENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oJzUzMjQ2NDg2Jywge2N1c3RvbVJvb3Rz
OiBbXSwgcmV2aXNpb25JdGVtczogW3tjb21taXQ6IHdlYmtpdDE5NzQ2M30sIHtjb21taXQ6IG93
bmVyMTExMjg5fSwge2NvbW1pdDogb3duZWQxMTEyMjIsIGNvbW1pdE93bmVyOiBvd25lcjExMTI4
OSwgcmVxdWlyZXNCdWlsZDogdHJ1ZX0sIHtjb21taXQ6IGlvczEzQTQ1Mn1dfSk7CisKKyAgICBy
ZXR1cm4gQnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbihgNjM0NTY0NTM3MC0ke29yZGVyfWAs
IHsndHJpZ2dlcmFibGUnOiBNb2NrTW9kZWxzLnRyaWdnZXJhYmxlLAorICAgICAgICByZXBvc2l0
b3J5R3JvdXA6IE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeVdpdGhPd25lZFJlcG9zaXRvcnlHcm91
cCwKKyAgICAgICAgJ2NvbW1pdFNldCc6IGNvbW1pdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywg
J3BsYXRmb3JtJzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdCwgJ29yZGVyJzogb3JkZXJ9KTsKK30K
KworZnVuY3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0V2l0aE93bmVkQ29tbWl0QW5kUGF0
Y2gocGxhdGZvcm0sIHRlc3QsIG9yZGVyKQoreworICAgIGFzc2VydChwbGF0Zm9ybSBpbnN0YW5j
ZW9mIFBsYXRmb3JtKTsKKyAgICBhc3NlcnQoIXRlc3QgfHwgdGVzdCBpbnN0YW5jZW9mIFRlc3Qp
OworCisgICAgY29uc3Qgd2Via2l0MTk3NDYzID0gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbign
MTExMTI3JywgeydpZCc6ICcxMTExMjcnLCAndGltZSc6IDE0NTY5NTU4MDczMzQsICdyZXBvc2l0
b3J5JzogTW9ja01vZGVscy53ZWJraXQsICdyZXZpc2lvbic6ICcxOTc0NjMnfSk7CisgICAgY29u
c3Qgb3duZXIxMTEyODkgPSBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKCcxMTEyODknLCB7J2lk
JzogJzExMTI4OScsICd0aW1lJzogMTQ1NjkzMTg3NDAwMCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9k
ZWxzLm93bmVyUmVwb3NpdG9yeSwgJ3JldmlzaW9uJzogJ293bmVyLTAwMSd9KTsKKyAgICBjb25z
dCBvd25lZDExMTIyMiA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oJzExMTIyMicsIHsnaWQn
OiAnMTExMjIyJywgJ3RpbWUnOiAxNDU2OTMyNzc0MDAwLCAncmVwb3NpdG9yeSc6IE1vY2tNb2Rl
bHMub3duZWRSZXBvc2l0b3J5LCAncmV2aXNpb24nOiAnb3duZWQtMDAyJ30pOworICAgIGNvbnN0
IGlvczEzQTQ1MiA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oJzg4OTMwJywgeydpZCc6ICc4
ODkzMCcsICd0aW1lJzogMCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxzLmlvcywgJ3JldmlzaW9u
JzogJzEzQTQ1Mid9KTsKKworICAgIGNvbnN0IHBhdGNoID0gbmV3IFVwbG9hZGVkRmlsZSg0NTMs
IHsnY3JlYXRlZEF0JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMTk6MTY6NTNaJyksICdmaWxlbmFt
ZSc6ICdwYXRjaC5kYXQnLCAnZXh0ZW5zaW9uJzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNl
cicsCisgICAgICAgIHNpemU6IDUzNDYzNywgc2hhMjU2OiAnMTY5NDYzYzgxMjVlMDdjNTc3MTEw
ZmUxNDRlY2Q2Mzk0MmViOTQ3MmQ0MzhmYzAwMTRmNDc0MjQ1ZTVkZjhhMSd9KTsKKworICAgIGNv
bnN0IGNvbW1pdFNldCA9IENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oJzUzMjQ2NDg2Jywge2N1
c3RvbVJvb3RzOiBbXSwgcmV2aXNpb25JdGVtczogW3tjb21taXQ6IHdlYmtpdDE5NzQ2MywgcGF0
Y2gsIHJlcXVpcmVzQnVpbGQ6IHRydWV9LCB7Y29tbWl0OiBvd25lcjExMTI4OX0sIHtjb21taXQ6
IG93bmVkMTExMjIyLCBjb21taXRPd25lcjogb3duZXIxMTEyODksIHJlcXVpcmVzQnVpbGQ6IHRy
dWV9LCB7Y29tbWl0OiBpb3MxM0E0NTJ9XX0pOworCisgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5l
bnN1cmVTaW5nbGV0b24oYDYzNDU2NDUzNzAtJHtvcmRlcn1gLCB7J3RyaWdnZXJhYmxlJzogTW9j
a01vZGVscy50cmlnZ2VyYWJsZSwKKyAgICAgICAgcmVwb3NpdG9yeUdyb3VwOiBNb2NrTW9kZWxz
LnN2blJlcG9zaXRvcnlXaXRoT3duZWRSZXBvc2l0b3J5R3JvdXAsCisgICAgICAgICdjb21taXRT
ZXQnOiBjb21taXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3Jt
LCAndGVzdCc6IHRlc3QsICdvcmRlcic6IG9yZGVyfSk7Cit9CisKIGZ1bmN0aW9uIHNhbXBsZVBl
bmRpbmdCdWlsZChidWlsZFJlcXVlc3RJZCwgYnVpbGRUaW1lLCBzbGF2ZU5hbWUpCiB7CiAgICAg
cmV0dXJuIHsKQEAgLTk2Nyw2ICsxMDA0LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywg
KCkgPT4gewogICAgICAgICAgICAgICAgICdidWlsZFByb3BlcnRpZXMnOiB7CiAgICAgICAgICAg
ICAgICAgICAgICd3ZWJraXQnOiB7J3JldmlzaW9uJzogJ1dlYktpdCd9LAogICAgICAgICAgICAg
ICAgICAgICAnd2Via2l0LXBhdGNoJzogeydwYXRjaCc6ICdXZWJLaXQnfSwKKyAgICAgICAgICAg
ICAgICAgICAgJ2NoZWNrYm94JzogeydpZlJlcG9zaXRvcnlTZXQnOiBbJ1dlYktpdCddLCAndmFs
dWUnOiAnYnVpbGQtd2Via2l0J30sCiAgICAgICAgICAgICAgICAgICAgICdzaGFyZWQnOiB7J3Jl
dmlzaW9uJzogJ1NoYXJlZCd9LAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAg
J2FjY2VwdHNSb290cyc6IHRydWUsCkBAIC05NzYsNiArMTAxNCw3IEBAIGRlc2NyaWJlKCdCdWls
ZGJvdFN5bmNlcicsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBzeW5j
ZXJzWzJdLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KHJlcXVlc3QsIFtyZXF1ZXN0XSk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1snd2Via2l0J10sICcxOTc0NjMnKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWyd3ZWJraXQtcGF0Y2gnXSwgJ2h0
dHA6Ly9idWlsZC53ZWJraXQub3JnL2FwaS91cGxvYWRlZC1maWxlLzQ1My5kYXQnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydjaGVja2JveCddLCAnYnVpbGQtd2Via2l0
Jyk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAiaWZCdWlsdCIn
LCAoKSA9PiB7CkBAIC0xMDE3LDYgKzEwNTYsNjQgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2Vy
JywgKCkgPT4gewogCiAgICAgICAgIH0pOwogCisgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAi
aWZSZXBvc2l0b3J5U2V0IiBhbmQgInJlcXVpcmVzQnVpbGQiJywgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgY29uZmlnID0gc2FtcGxlaU9TQ29uZmlnKCk7CisgICAgICAgICAgICBjb25maWcu
cmVwb3NpdG9yeUdyb3Vwc1snaW9zLXN2bi13ZWJraXQtd2l0aC1vd25lZC1jb21taXQnXSA9IHsK
KyAgICAgICAgICAgICAgICAncmVwb3NpdG9yaWVzJzogeydXZWJLaXQnOiB7J2FjY2VwdHNQYXRj
aCc6IHRydWV9LCAnT3duZXIgUmVwb3NpdG9yeSc6IHt9LCAnaU9TJzoge319LAorICAgICAgICAg
ICAgICAgICd0ZXN0UHJvcGVydGllcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ29zJzogeydy
ZXZpc2lvbic6ICdpT1MnfSwKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdCc6IHsncmV2aXNp
b24nOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICdvd25lci1yZXBvJzogeydyZXZp
c2lvbic6ICdPd25lciBSZXBvc2l0b3J5J30sCisgICAgICAgICAgICAgICAgICAgICdyb290cyc6
IHsncm9vdHMnOiB7fX0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAnYnVp
bGRQcm9wZXJ0aWVzJzogeworICAgICAgICAgICAgICAgICAgICAnd2Via2l0JzogeydyZXZpc2lv
bic6ICdXZWJLaXQnfSwKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdC1wYXRjaCc6IHsncGF0
Y2gnOiAnV2ViS2l0J30sCisgICAgICAgICAgICAgICAgICAgICdvd25lci1yZXBvJzogeydyZXZp
c2lvbic6ICdPd25lciBSZXBvc2l0b3J5J30sCisgICAgICAgICAgICAgICAgICAgICdjaGVja2Jv
eCc6IHsnaWZSZXBvc2l0b3J5U2V0JzogWydXZWJLaXQnXSwgJ3ZhbHVlJzogJ2J1aWxkLXdlYmtp
dCd9LAorICAgICAgICAgICAgICAgICAgICAnb3duZWQtY29tbWl0cyc6IHsnb3duZWRSZXZpc2lv
bnMnOiAnT3duZXIgUmVwb3NpdG9yeSd9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAnYWNjZXB0c1Jvb3RzJzogdHJ1ZSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBj
b25zdCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBjb25m
aWcpOworICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dFdpdGhPd25lZENvbW1pdChNb2NrTW9kZWxzLmlwaG9uZSwgbnVsbCwgLTEpOworICAgICAgICAg
ICAgY29uc3QgcHJvcGVydGllcyA9IHN5bmNlcnNbMl0uX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVl
c3QocmVxdWVzdCwgW3JlcXVlc3RdKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0
aWVzWyd3ZWJraXQnXSwgJzE5NzQ2MycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3Bl
cnRpZXNbJ293bmVyLXJlcG8nXSwgJ293bmVyLTAwMScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHByb3BlcnRpZXNbJ2NoZWNrYm94J10sIHVuZGVmaW5lZCk7CisgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKEpTT04ucGFyc2UocHJvcGVydGllc1snb3duZWQtY29tbWl0cyddKSwgeydP
d25lciBSZXBvc2l0b3J5JzogW3tyZXZpc2lvbjogJ293bmVkLTAwMicsIHJlcG9zaXRvcnk6ICdP
d25lZCBSZXBvc2l0b3J5Jywgb3duZXJSZXZpc2lvbjogJ293bmVyLTAwMSd9XX0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlc29sdmUgInBhdGNoIiwgImlmUmVwb3NpdG9y
eVNldCIgYW5kICJyZXF1aXJlc0J1aWxkIicsICgpID0+IHsKKworICAgICAgICAgICAgY29uc3Qg
Y29uZmlnID0gc2FtcGxlaU9TQ29uZmlnKCk7CisgICAgICAgICAgICBjb25maWcucmVwb3NpdG9y
eUdyb3Vwc1snaW9zLXN2bi13ZWJraXQtd2l0aC1vd25lZC1jb21taXQnXSA9IHsKKyAgICAgICAg
ICAgICAgICAncmVwb3NpdG9yaWVzJzogeydXZWJLaXQnOiB7J2FjY2VwdHNQYXRjaCc6IHRydWV9
LCAnT3duZXIgUmVwb3NpdG9yeSc6IHt9LCAnaU9TJzoge319LAorICAgICAgICAgICAgICAgICd0
ZXN0UHJvcGVydGllcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ29zJzogeydyZXZpc2lvbic6
ICdpT1MnfSwKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdCc6IHsncmV2aXNpb24nOiAnV2Vi
S2l0J30sCisgICAgICAgICAgICAgICAgICAgICdvd25lci1yZXBvJzogeydyZXZpc2lvbic6ICdP
d25lciBSZXBvc2l0b3J5J30sCisgICAgICAgICAgICAgICAgICAgICdyb290cyc6IHsncm9vdHMn
OiB7fX0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAnYnVpbGRQcm9wZXJ0
aWVzJzogeworICAgICAgICAgICAgICAgICAgICAnd2Via2l0JzogeydyZXZpc2lvbic6ICdXZWJL
aXQnfSwKKyAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdC1wYXRjaCc6IHsncGF0Y2gnOiAnV2Vi
S2l0J30sCisgICAgICAgICAgICAgICAgICAgICdvd25lci1yZXBvJzogeydyZXZpc2lvbic6ICdP
d25lciBSZXBvc2l0b3J5J30sCisgICAgICAgICAgICAgICAgICAgICdjaGVja2JveCc6IHsnaWZS
ZXBvc2l0b3J5U2V0JzogWydXZWJLaXQnXSwgJ3ZhbHVlJzogJ2J1aWxkLXdlYmtpdCd9LAorICAg
ICAgICAgICAgICAgICAgICAnb3duZWQtY29tbWl0cyc6IHsnb3duZWRSZXZpc2lvbnMnOiAnT3du
ZXIgUmVwb3NpdG9yeSd9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAnYWNj
ZXB0c1Jvb3RzJzogdHJ1ZSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBjb25zdCBzeW5j
ZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBjb25maWcpOworICAg
ICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdFdpdGhPd25l
ZENvbW1pdEFuZFBhdGNoKE1vY2tNb2RlbHMuaXBob25lLCBudWxsLCAtMSk7CisgICAgICAgICAg
ICBjb25zdCBwcm9wZXJ0aWVzID0gc3luY2Vyc1syXS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVz
dChyZXF1ZXN0LCBbcmVxdWVzdF0pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRp
ZXNbJ3dlYmtpdCddLCAnMTk3NDYzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVy
dGllc1snb3duZXItcmVwbyddLCAnb3duZXItMDAxJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocHJvcGVydGllc1snY2hlY2tib3gnXSwgJ2J1aWxkLXdlYmtpdCcpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3dlYmtpdC1wYXRjaCddLCAnaHR0cDovL2J1aWxkLndl
YmtpdC5vcmcvYXBpL3VwbG9hZGVkLWZpbGUvNDUzLmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChKU09OLnBhcnNlKHByb3BlcnRpZXNbJ293bmVkLWNvbW1pdHMnXSksIHsnT3du
ZXIgUmVwb3NpdG9yeSc6IFt7cmV2aXNpb246ICdvd25lZC0wMDInLCByZXBvc2l0b3J5OiAnT3du
ZWQgUmVwb3NpdG9yeScsIG93bmVyUmV2aXNpb246ICdvd25lci0wMDEnfV19KTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHByb3BlcnR5IGZvciB0aGUgYnVpbGQg
cmVxdWVzdCBpZCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHN5bmNlcnMgPSBCdWlsZGJv
dFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAgICAg
ICAgICAgIGNvbnN0IHJlcXVlc3QgPSBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVs
cy5pcGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKaW5kZXggMjdj
MmQ5ZTFlZTE4NzU0MjZkZTY5MWQ2M2FkNzRhNjY5ZTAwYzQ1Ni4uYWI3NmQ1ODljZWJkMjAwNTdi
M2E3OWM2ODhhNTZhMzU4NmYwMDhmNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCkBAIC03Nyw2ICs3NywxMSBA
QCBkZXNjcmliZSgnQ3VzdG9tQ29tbWl0U2V0JywgKCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
Y29tbWl0U2V0ID0gY3VzdG9tQ29tbWl0U2V0V2l0aG91dE93bmVkQ29tbWl0KCk7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2Rl
bHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOwogICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIHJldHVybiBvbmx5IHRvcCBsZXZlbCByZXBvc2l0b3JpZXMnLCAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRob3V0T3duZWRDb21t
aXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LnRvcExldmVsUmVw
b3NpdG9yaWVzKCksIFtNb2NrTW9kZWxzLm9zeCwgTW9ja01vZGVscy53ZWJraXRdKTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiAKICAgICBkZXNjcmliZSgnVGVzdCBjdXN0b20gY29tbWl0IHNldCB3
aXRoIG93bmVkIGNvbW1pdCcsICgpID0+IHsKQEAgLTEwNSw2ICsxMTAsMTEgQEAgZGVzY3JpYmUo
J0N1c3RvbUNvbW1pdFNldCcsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9
IGN1c3RvbUNvbW1pdFNldFdpdGhPd25lZENvbW1pdCgpOwogICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb21taXRTZXQucmVwb3NpdG9yaWVzKCksIFtNb2NrTW9kZWxzLm9zeCwgTW9ja01v
ZGVscy5vd25lclJlcG9zaXRvcnksIE1vY2tNb2RlbHMub3duZWRSZXBvc2l0b3J5XSk7CiAgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIG9ubHkgdG9wIGxldmVsIHJlcG9z
aXRvcmllcycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNv
bW1pdFNldFdpdGhPd25lZENvbW1pdCgpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
b21taXRTZXQudG9wTGV2ZWxSZXBvc2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9k
ZWxzLm93bmVyUmVwb3NpdG9yeV0pOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGRlc2Ny
aWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IHdpdGggcGF0Y2gnLCAoKSA9PiB7CkBAIC0xMzAs
NiArMTQwLDExIEBAIGRlc2NyaWJlKCdDdXN0b21Db21taXRTZXQnLCAoKSA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21Db21taXRTZXRXaXRoUGF0Y2goKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LnJlcG9zaXRvcmllcygpLCBbTW9ja01v
ZGVscy5vc3gsIE1vY2tNb2RlbHMud2Via2l0XSk7CiAgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgcmV0dXJuIG9ubHkgdG9wIGxldmVsIHJlcG9zaXRvcmllcycsICgpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhQYXRjaCgpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQudG9wTGV2ZWxSZXBvc2l0b3Jp
ZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOworICAgICAgICB9KTsK
ICAgICB9KTsKIAogICAgIGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IHdpdGggb3du
ZWQgcmVwb3NpdG9yeSBoYXMgc2FtZSBuYW1lIGFzIG5vbi1vd25lZCByZXBvc2l0b3J5JywgICgp
ID0+IHsKQEAgLTE1OCw2ICsxNzMsMTEgQEAgZGVzY3JpYmUoJ0N1c3RvbUNvbW1pdFNldCcsICgp
ID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGN1c3RvbUNvbW1pdFNldFdpdGhP
d25lZFJlcG9zaXRvcnlIYXNTYW1lTmFtZUFzTm90T3duZWRSZXBvc2l0b3J5KCk7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW01vY2tNb2Rl
bHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdCwgTW9ja01vZGVscy5vd25lZFdlYmtpdF0pOwogICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBvbmx5IHRvcCBsZXZlbCByZXBv
c2l0b3JpZXMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjdXN0b21D
b21taXRTZXRXaXRoT3duZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVBc05vdE93bmVkUmVwb3NpdG9y
eSgpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb21taXRTZXQudG9wTGV2ZWxSZXBv
c2l0b3JpZXMoKSwgW01vY2tNb2RlbHMub3N4LCBNb2NrTW9kZWxzLndlYmtpdF0pOworICAgICAg
ICB9KTsKICAgICB9KTsKIAogICAgIGRlc2NyaWJlKCdUZXN0IGN1c3RvbSBjb21taXQgc2V0IGVx
dWFsaXR5IGZ1bmN0aW9uJywgKCkgPT4gewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCmlu
ZGV4IDk2YWVjMmI3MTYwYmVjYjIxMzYxYzc3OGQ0YTRiMzdlZmM5ZDI5YmIuLmM0Mjc3YjA4MTNi
MDRmN2ZlNmIyNGQxOWU0MzE3OGYyYWJiNDY3NmEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcworKysgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2Rl
bHMuanMKQEAgLTU3LDggKzU3LDEzIEBAIHZhciBNb2NrTW9kZWxzID0gewogICAgICAgICAgICAg
ICAgIG5hbWU6ICdpb3MtZ2l0LXdlYmtpdCcsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVz
OiBbe3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMuaW9zfSwge3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMu
d2Via2l0R2l0fSwge3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeX1dCiAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE1vY2tNb2RlbHMuc3ZuUmVwb3NpdG9yeVdpdGhP
d25lZFJlcG9zaXRvcnlHcm91cCA9IG5ldyBUcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cCgzNCwg
eworICAgICAgICAgICAgICAgIG5hbWU6ICdpb3Mtc3ZuLXdlYmtpdC13aXRoLW93bmVkLWNvbW1p
dCcsCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiBbe3JlcG9zaXRvcnk6IE1vY2tNb2Rl
bHMuaW9zfSwge3JlcG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0LCBhY2NlcHRzUGF0Y2g6IHRy
dWV9LCB7cmVwb3NpdG9yeTogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnl9XSwKKyAgICAgICAg
ICAgICAgICBhY2NlcHRzQ3VzdG9tUm9vdHM6IHRydWUsCisgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIE1vY2tNb2RlbHMudHJpZ2dlcmFibGUgPSBuZXcgVHJpZ2dlcmFibGUoMywge25hbWU6
ICdidWlsZC13ZWJraXQnLAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlHcm91cHM6IFtNb2Nr
TW9kZWxzLm9zUmVwb3NpdG9yeUdyb3VwLCBNb2NrTW9kZWxzLnN2blJlcG9zaXRvcnlHcm91cCwg
TW9ja01vZGVscy5naXRSZXBvc2l0b3J5R3JvdXBdLAorICAgICAgICAgICAgICAgIHJlcG9zaXRv
cnlHcm91cHM6IFtNb2NrTW9kZWxzLm9zUmVwb3NpdG9yeUdyb3VwLCBNb2NrTW9kZWxzLnN2blJl
cG9zaXRvcnlHcm91cCwgTW9ja01vZGVscy5naXRSZXBvc2l0b3J5R3JvdXAsIE1vY2tNb2RlbHMu
c3ZuUmVwb3NpdG9yeVdpdGhPd25lZFJlcG9zaXRvcnlHcm91cF0sCiAgICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbnM6IFt7dGVzdDogTW9ja01vZGVscy5pUGhvbmVQTFQsIHBsYXRmb3JtOiBN
b2NrTW9kZWxzLmlwaG9uZX1dfSk7CiAKICAgICAgICAgfSk7Cg==
</data>
<flag name="review"
          id="342068"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>