<?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>225009</bug_id>
          
          <creation_ts>2021-04-23 16:37:40 -0700</creation_ts>
          <short_desc>Web Inspector: Default Audits script are minified in release builds</short_desc>
          <delta_ts>2021-04-27 16:53:51 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753794</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-23 16:37:40 -0700</bug_when>
    <thetext>This means that when entering Edit mode in the Audit tab all of the default audits, many meant to server as examples while writing audits, are a block of minified code instead of in their original, non-minified form.

&lt;rdar://76778007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753804</commentid>
    <comment_count>1</comment_count>
      <attachid>426966</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-23 16:55:40 -0700</bug_when>
    <thetext>Created attachment 426966
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753809</commentid>
    <comment_count>2</comment_count>
      <attachid>426966</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-23 17:12:54 -0700</bug_when>
    <thetext>Comment on attachment 426966
Patch v1.0

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

&gt; Source/WebInspectorUI/Scripts/combine-resources.pl:131
&gt; +    concatenateIncludedFilesMatchingPattern($outputStylesheetName, &quot;&lt;link rel=\&quot;stylesheet\&quot; href=\&quot;($inputDirectoryPattern)\&quot;&gt;&quot;, defined $skipConcatenateTag ? &quot;&quot; : &quot;&lt;link rel=\&quot;stylesheet\&quot; href=\&quot;$outputStylesheetName\&quot;&gt;&quot;) if defined $outputStylesheetName;
&gt; +    concatenateIncludedFilesMatchingPattern($outputScriptName, &quot;&lt;script src=\&quot;($inputDirectoryPattern)\&quot;&gt;&lt;\/script&gt;&quot;, defined $skipConcatenateTag ? &quot;&quot; : &quot;&lt;script src=\&quot;$outputScriptName\&quot;&gt;&lt;/script&gt;&quot;) if defined $outputScriptName;

Why is `$skipConcatenateTag` actually needed?  Wouldn&apos;t any files we want to concatenate get skipped anyway because of `$inputDirectoryPattern`?

&gt; Source/WebInspectorUI/Scripts/copy-user-interface-resources.pl:357
&gt; +       &apos;--output-script-name&apos;, &apos;NonMinified.js&apos;,

Does this eventually get deleted after it&apos;s appended?

&gt; Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js:349
&gt; +                    new WI.AuditTestCase(&quot;level-pass&quot;, removeWhitespace(WI.DefaultAudits.levelPass), {description: WI.UIString(&quot;This is what the result of a passing test with no data looks like.&quot;)}),

we should either `console.assert(WI.DefaultAudits)` or even just bail if it&apos;s not there, just in case :)

&gt; Source/WebInspectorUI/UserInterface/NonMinified/DefaultAudits.js:26
&gt; +WI.DefaultAudits = {

Instead of having this all be part of the object literal, could we do something like
```
WI.DefaultAudits = {};

WI.DefaultAudits.levelPass = function() {
    return {level: &quot;pass&quot;};
};

...
```
and then get replace `removeWhitespace` with `.toString()`?

&gt; Source/WebInspectorUI/UserInterface/Test.html:289
&gt; +    &lt;script src=&quot;NonMinified/DefaultAudits.js&quot;&gt;&lt;/script&gt;

Can we add a test that `NonMinified` actually works?  i.e. a test that confirms the presence of `&quot;    &quot;` (four spaces) inside `WI.DefaultAudits.testPass`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753811</commentid>
    <comment_count>3</comment_count>
      <attachid>426966</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-23 17:22:49 -0700</bug_when>
    <thetext>Comment on attachment 426966
Patch v1.0

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

&gt;&gt; Source/WebInspectorUI/Scripts/combine-resources.pl:131
&gt;&gt; +    concatenateIncludedFilesMatchingPattern($outputScriptName, &quot;&lt;script src=\&quot;($inputDirectoryPattern)\&quot;&gt;&lt;\/script&gt;&quot;, defined $skipConcatenateTag ? &quot;&quot; : &quot;&lt;script src=\&quot;$outputScriptName\&quot;&gt;&lt;/script&gt;&quot;) if defined $outputScriptName;
&gt; 
&gt; Why is `$skipConcatenateTag` actually needed?  Wouldn&apos;t any files we want to concatenate get skipped anyway because of `$inputDirectoryPattern`?

The default pattern is ignored when an input directory is explicitly provided. This is how we gather the NonMinified sources from Main.html. Later the combined (but non minified) NonMinified.js will be appended to the end of Main.js, so we don&apos;t want to add a script tag for it here.

&gt;&gt; Source/WebInspectorUI/Scripts/copy-user-interface-resources.pl:357
&gt;&gt; +       &apos;--output-script-name&apos;, &apos;NonMinified.js&apos;,
&gt; 
&gt; Does this eventually get deleted after it&apos;s appended?

No, but this is a derived source that doesn&apos;t end up in the target directory (e.g. this file will be in `WebKitBuild/WebInspectorUI.build/Release/WebInspectorUI.build/DerivedSources` but not in `WebKitBuild/Release/WebInspectorUI.framework`). It seems helpful for debugging the build that after a build this intermediate file is present along with the rest of the intermediate derived sources.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js:349
&gt;&gt; +                    new WI.AuditTestCase(&quot;level-pass&quot;, removeWhitespace(WI.DefaultAudits.levelPass), {description: WI.UIString(&quot;This is what the result of a passing test with no data looks like.&quot;)}),
&gt; 
&gt; we should either `console.assert(WI.DefaultAudits)` or even just bail if it&apos;s not there, just in case :)

👍🏻

&gt;&gt; Source/WebInspectorUI/UserInterface/NonMinified/DefaultAudits.js:26
&gt;&gt; +WI.DefaultAudits = {
&gt; 
&gt; Instead of having this all be part of the object literal, could we do something like
&gt; ```
&gt; WI.DefaultAudits = {};
&gt; 
&gt; WI.DefaultAudits.levelPass = function() {
&gt;     return {level: &quot;pass&quot;};
&gt; };
&gt; 
&gt; ...
&gt; ```
&gt; and then get replace `removeWhitespace` with `.toString()`?

👍🏻

&gt;&gt; Source/WebInspectorUI/UserInterface/Test.html:289
&gt;&gt; +    &lt;script src=&quot;NonMinified/DefaultAudits.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Can we add a test that `NonMinified` actually works?  i.e. a test that confirms the presence of `&quot;    &quot;` (four spaces) inside `WI.DefaultAudits.testPass`

Absolutely!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754658</commentid>
    <comment_count>4</comment_count>
      <attachid>426966</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-27 10:04:59 -0700</bug_when>
    <thetext>Comment on attachment 426966
Patch v1.0

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Test.html:289
&gt;&gt;&gt; +    &lt;script src=&quot;NonMinified/DefaultAudits.js&quot;&gt;&lt;/script&gt;
&gt;&gt; 
&gt;&gt; Can we add a test that `NonMinified` actually works?  i.e. a test that confirms the presence of `&quot;    &quot;` (four spaces) inside `WI.DefaultAudits.testPass`
&gt; 
&gt; Absolutely!

I&apos;ve written a test for this that will be in the next patch I upload. After finishing the test, I realized that such a test would already pass, though, since these files are part of TestCombined.js, which is the combined, but not minified, sum of almost all the included JS in Test.html. However, the test will help to make sure we are including the new file in the `NonMinified` directory, so it still seems worth having.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754660</commentid>
    <comment_count>5</comment_count>
      <attachid>427159</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-27 10:06:44 -0700</bug_when>
    <thetext>Created attachment 427159
Patch v1.1 - Added test, review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754760</commentid>
    <comment_count>6</comment_count>
      <attachid>427159</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-04-27 13:26:38 -0700</bug_when>
    <thetext>Comment on attachment 427159
Patch v1.1 - Added test, review notes

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

r=me, this is excellent!

&gt; Source/WebInspectorUI/ChangeLog:14
&gt; +        important to the script. For example, the source for the default audits are visible to the user, and therefor we

Nit: therefore

&gt; Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js:386
&gt; +                new WI.AuditTestCase(&quot;testMenuRoleForRequiredChildren&quot;, WI.DefaultAudits.testMenuRoleForRequiredChildren.toString(), {description: WI.UIString(&quot;Ensure that elements of role \u0022%s\u0022 and \u0022%s\u0022 have required owned elements in accordance with WAI-ARIA.&quot;).format(WI.unlocalizedString(&quot;menu&quot;), WI.unlocalizedString(&quot;menubar&quot;)), supports: 1}),

It&apos;s rather unfortunate that we have to stringify the functions at every call site.

&gt; LayoutTests/inspector/audit/non-minified-default-audits.html:8
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Audit.NonMinifiedDefaultAudits&quot;);

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754807</commentid>
    <comment_count>7</comment_count>
      <attachid>427203</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-04-27 15:24:51 -0700</bug_when>
    <thetext>Created attachment 427203
Patch v1.2 - Review note</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754849</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-27 16:53:49 -0700</bug_when>
    <thetext>Committed r276680 (237097@main): &lt;https://commits.webkit.org/237097@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427203.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426966</attachid>
            <date>2021-04-23 16:55:40 -0700</date>
            <delta_ts>2021-04-27 10:06:42 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-225009-20210423165539.patch</filename>
            <type>text/plain</type>
            <size>107703</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
OTllNDA5MWUzMzliMTZhMzIyY2U1YzcxZjM5ZDEwNWM3ODI4ODRiLi43NDc1NjU4ODNmOWFhMDhm
Y2E0OGQ0OGY2ODNhNTMwOWQ3ZTg0OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMjEtMDQtMjMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHQgQXVkaXRzIHNjcmlwdCBhcmUgbWlu
aWZpZWQgaW4gcmVsZWFzZSBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGF1ZGl0cyBoYXZlIGJlZW4gbW92ZWQgb3V0IG9m
IGBBdWRpdE1hbmFnZXIuanNgIGFuZCBpbnRvIGEgc3BlY2lhbCBgRGVmYXVsdEF1ZGl0cy5qc2Ag
aW4gdGhlIG5ldworICAgICAgICBgTm9uTWluaWZpZWRgIGRpcmVjdG9yeSwgd2hpY2ggY29udGFp
bnMgSmF2YVNjcmlwdCBzb3VyY2VzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGBNYWluLmpz
YCBhbmQKKyAgICAgICAgYFRlc3RDb21iaW5lZC5qc2AsIGJ1dCBzaG91bGQgbm90IGhhdmUgd2hp
dGVzcGFjZSBzdHJpcHBlZCBmcm9tIHRoZWlyIGNvbnRlbnRzIGJlY2F1c2UgdGhlIHdoaXRlc3Bh
Y2UgaXMKKyAgICAgICAgaW1wb3J0YW50IHRvIHRoZSBzY3JpcHQuIEZvciBleGFtcGxlLCB0aGUg
c291cmNlIGZvciB0aGUgZGVmYXVsdCBhdWRpdHMgYXJlIHZpc2libGUgdG8gdGhlIHVzZXIsIGFu
ZCB0aGVyZWZvciB3ZQorICAgICAgICB3YW50IHRvIHByZXNlbnQgd2VsbC1mb3JtYXR0ZWQgc291
cmNlIGluIHRob3NlIGNvbnRleHRzLgorCisgICAgICAgICogU2NyaXB0cy9jb21iaW5lLXJlc291
cmNlcy5wbDoKKyAgICAgICAgLSBBZGRlZCBgTm9uTWluaWZpZWRgIGRpcmVjdG9yeSB0byBsaXN0
IG9mIGRlZmF1bHQgYGlucHV0RGlyZWN0b3J5UGF0dGVybmAgZXhjZXB0aW9ucyBmb3IgY29tYmlu
aW5nIHJlc291cmNlcy4KKyAgICAgICAgLSBBZGRlZCBgLS1za2lwLWNvbmNhdGVuYXRlLXRhZ2Ag
c28gdGhhdCB3ZSBkb24ndCBhZGQgdGFncyBmb3Igc2NyaXB0IHdlIHdpbGwgZXZlbnR1YWxseSBh
cHBlbmQgdG8gYW5vdGhlciBzY3JpcHQuCisgICAgICAgICogU2NyaXB0cy9jb3B5LXVzZXItaW50
ZXJmYWNlLXJlc291cmNlcy5wbDoKKyAgICAgICAgLSBIYW5kbGUgYE5vbk1pbmlmaWVkYCBkaXJl
Y3RvcnkgZm9yIHNvdXJjZXMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIE1haW4uanMsIGJ1dCBz
aG91bGQgbm90IGJlIG1pbmlmaWVkLgorICAgICAgICAtIEhhbmRsZSBgTm9uTWluaWZpZWRgIGRp
cmVjdG9yeSBmb3Igc291cmNlcyB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gVGVzdENvbWJpbmVk
LmpzLgorICAgICAgICAtIERyaXZlLWJ5IGZpeCBmb3IgdHlwbyBpbiBjb21iaW5lT3JTdHJpcFJl
c291cmNlc0ZvcldlYktpdEFkZGl0aW9ucyB0aGF0IGNhdXNlZCBlcnJvcnMgdG8gYmUgZW1pdHRl
ZCBkdXJpbmcgYnVpbGRzLgorICAgICAgICAoY29tYmluZU9yU3RyaXBSZXNvdXJjZXNGb3JXZWJL
aXRBZGRpdGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXVkaXRN
YW5hZ2VyLmpzOgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVs
dFRlc3RzLnJlbW92ZVdoaXRlc3BhY2UpOgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3Rv
dHlwZS5fYWRkRGVmYXVsdFRlc3RzKToKKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlcik6CisgICAg
ICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QubGV2
ZWxQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2Fk
ZERlZmF1bHRUZXN0cy5jb25zdC5sZXZlbFdhcm4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVk
aXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmxldmVsRmFpbCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVz
dHMuY29uc3QubGV2ZWxFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIu
cHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QubGV2ZWxVbnN1cHBvcnRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMu
Y29uc3QuZGF0YURPTU5vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5w
cm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhRE9NQXR0cmlidXRlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMu
Y29uc3QuZGF0YUVycm9ycyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJv
dG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZGF0YUN1c3RvbSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFn
ZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0QWN0aXZlRGVzY2VuZGFudCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0
VGVzdHMuY29uc3QuZ2V0Q2hpbGROb2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1h
bmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0Q29tcHV0ZWRQcm9wZXJ0
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERl
ZmF1bHRUZXN0cy5jb25zdC5nZXRDb250cm9sbGVkTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAo
V0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldEZsb3dl
ZE5vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2Fk
ZERlZmF1bHRUZXN0cy5jb25zdC5nZXRNb3VzZUV2ZW50Tm9kZSk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0T3du
ZWROb2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9h
ZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0UGFyZW50Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0U2VsZWN0
ZWRDaGlsZE5vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5
cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5oYXNFdmVudExpc3RlbmVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3Qu
aGFzRXZlbnRMaXN0ZW5lcnNDbGljayk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFn
ZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QuZ2V0UmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC5nZXRSZXNvdXJjZUNvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5h
Z2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnVuc3VwcG9ydGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5o
YXNDaGlsZFdpdGhSb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90
b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERl
ZmF1bHRUZXN0cy5jb25zdC50ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC50ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvck11
bHRpcGxlQmFubmVycyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90
eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvckxpbmtMYWJlbHMpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0
LnRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0VGFi
bGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1h
bmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvck11bHRpcGxlTGl2
ZVJlZ2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5f
YWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4p
OiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVs
dFRlc3RzLmNvbnN0LnRlc3RJbWFnZUxhYmVscyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRp
dE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvckFyaWFIaWRk
ZW5GYWxzZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9h
ZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdFRyZWVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERl
bGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVz
dHMuY29uc3QudGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQu
CisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29u
c3QudGVzdEZlZWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChX
SS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdFRhYkxp
c3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1h
bmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEJ1dHRvbkxhYmVscyk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0
VGVzdHMuY29uc3QudGVzdFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50
ZXN0TGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1
ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Q29tYm9Cb3hS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFn
ZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvck11bHRpcGxlTWFpbkNv
bnRlbnRTZWN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90
eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdERpYWxvZ3NGb3JMYWJlbHMpOiBEZWxldGVk
LgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNv
bnN0LnRlc3RGb3JJbnZhbGlkQXJpYUhpZGRlblZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgLSBN
b3ZlZCBhdWRpdCBmdW5jdGlvbiBib2RpZXMgdG8gYE5vbk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMu
anNgLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qczogQWRkZWQuCisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLmxldmVsUGFzcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxl
dmVsV2Fybik6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsRmFpbCk6CisgICAgICAg
IChXSS5EZWZhdWx0QXVkaXRzLmxldmVsRXJyb3IpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0
cy5sZXZlbFVuc3VwcG9ydGVkKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZGF0YURPTU5v
ZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZGF0YURPTUF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5kYXRhRXJyb3JzKToKKyAgICAgICAgKFdJLkRlZmF1bHRB
dWRpdHMuZGF0YUN1c3RvbSk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldEVsZW1lbnRz
QnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5nZXRBY3RpdmVEZXNj
ZW5kYW50KToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0Q2hpbGROb2Rlcyk6CisgICAg
ICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldENvbXB1dGVkUHJvcGVydGllcyk6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLmdldENvbnRyb2xsZWROb2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0
QXVkaXRzLmdldEZsb3dlZE5vZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0TW91
c2VFdmVudE5vZGUpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5nZXRPd25lZE5vZGVzKToK
KyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0UGFyZW50Tm9kZSk6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLmdldFNlbGVjdGVkQ2hpbGROb2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0
QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuaGFz
RXZlbnRMaXN0ZW5lcnNDbGljayk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291
cmNlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlQ29udGVudCk6Cisg
ICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnVuc3VwcG9ydGVkKToKKyAgICAgICAgKFdJLkRlZmF1
bHRBdWRpdHMuaGFzQ2hpbGRXaXRoUm9sZSk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRl
c3RNZW51Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0
cy50ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1bHRB
dWRpdHMudGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmcpOgorICAgICAgICAoV0kuRGVmYXVs
dEF1ZGl0cy50ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRp
dHMudGVzdEZvckxpbmtMYWJlbHMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Um93
R3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRz
LnRlc3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1bHRB
dWRpdHMudGVzdEZvck11bHRpcGxlTGl2ZVJlZ2lvbnMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1
ZGl0cy50ZXN0TGlzdEJveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRl
ZmF1bHRBdWRpdHMudGVzdEltYWdlTGFiZWxzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMu
dGVzdEZvckFyaWFIaWRkZW5GYWxzZSk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RU
cmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50
ZXN0UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1
bHRBdWRpdHMudGVzdEZlZWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAg
ICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0QnV0dG9uTGFiZWxzKToKKyAgICAgICAgKFdJLkRlZmF1
bHRBdWRpdHMudGVzdFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRl
ZmF1bHRBdWRpdHMudGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLnRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAg
ICAgICAgKFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9u
cyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3REaWFsb2dzRm9yTGFiZWxzKToKKyAg
ICAgICAgKFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCiAyMDIxLTA0LTE5ICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY4Njkx
ICYmIHIyNzAxMzQpOiBXZWIgSW5zcGVjdG9yOiBDbGlja2luZyBvbiBnby10byBhcnJvdyBpbiBD
b21wdXRlZCBwYW5lbCBubyBsb25nZXIgd29ya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9TY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1NjcmlwdHMvY29tYmluZS1yZXNvdXJjZXMucGwKaW5kZXggODI2Mzc4NjA5M2UyMjM4MDYx
NzAxZjkyZDU4NjI5YmJhNWRlY2YzMy4uMWIxMTJhNWZjOGJmMDBmNWIwNzFkZTUwZTY5ZGFmNDcz
YmM4YmQ2MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29tYmlu
ZS1yZXNvdXJjZXMucGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29tYmlu
ZS1yZXNvdXJjZXMucGwKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBwZXJsCiAKLSMg
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAgb3VyICRodG1s
RGlyZWN0b3J5Owogb3VyICRodG1sRmlsZTsKIG91ciAkc3RyaXA7CiBvdXIgJHZlcmJvc2U7Citv
dXIgJHNraXBDb25jYXRlbmF0ZVRhZzsKIAogR2V0T3B0aW9ucygnb3V0cHV0LWRpcj1zJyA9PiBc
JG91dHB1dERpcmVjdG9yeSwKICAgICAgICAgICAgJ291dHB1dC1zY3JpcHQtbmFtZT1zJyA9PiBc
JG91dHB1dFNjcmlwdE5hbWUsCkBAIC00Nyw3ICs0OCw4IEBAIEdldE9wdGlvbnMoJ291dHB1dC1k
aXI9cycgPT4gXCRvdXRwdXREaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1sLWRpcj1z
JyA9PiBcJGh0bWxEaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1sPXMnID0+IFwkaHRt
bEZpbGUsCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBcJHZlcmJvc2UsCi0gICAgICAgICAgICdz
dHJpcCcgPT4gXCRzdHJpcCk7CisgICAgICAgICAgICdzdHJpcCcgPT4gXCRzdHJpcCwKKyAgICAg
ICAgICAgJ3NraXAtY29uY2F0ZW5hdGUtdGFnJyA9PiBcJHNraXBDb25jYXRlbmF0ZVRhZyk7CiAK
IHVubGVzcyAoZGVmaW5lZCAkaHRtbEZpbGUgYW5kIGRlZmluZWQgJGRlcml2ZWRTb3VyY2VzRGly
ZWN0b3J5IGFuZCBkZWZpbmVkICRvdXRwdXREaXJlY3RvcnkgYW5kIChkZWZpbmVkICRzdHJpcCBv
ciBkZWZpbmVkICRvdXRwdXRTY3JpcHROYW1lIG9yIGRlZmluZWQgJG91dHB1dFN0eWxlc2hlZXRO
YW1lKSkgewogICAgIHByaW50ICJVc2FnZTogJDAgLS1pbnB1dC1odG1sIDxwYXRoPiAtLWRlcml2
ZWQtc291cmNlcy1kaXIgPHBhdGg+IC0tb3V0cHV0LWRpciA8cGF0aD4gWy0tb3V0cHV0LXNjcmlw
dC1uYW1lIDxuYW1lPl0gWy0tb3V0cHV0LXN0eWxlLW5hbWUgPG5hbWU+XSBbLS1zdHJpcF1cbiI7
CkBAIC0xMTgsMTUgKzEyMCwxNSBAQCBzdWIgc3RyaXBJbmNsdWRlZEZpbGVzTWF0Y2hpbmdQYXR0
ZXJuKCQpCiAgICAgJGhlYWRDb250ZW50cyA9fiBzLyR3aGl0ZXNwYWNlQ29uc3VtaW5nVGFnUGF0
dGVybi8vZ2k7CiB9CiAKLW15ICRpbnB1dERpcmVjdG9yeVBhdHRlcm4gPSAiKD8hV2ViS2l0QWRk
aXRpb25zXC8pKD8hRXh0ZXJuYWxcLykoPyFXb3JrZXJzXC8pW15cIl0qIjsKK215ICRpbnB1dERp
cmVjdG9yeVBhdHRlcm4gPSAiKD8hV2ViS2l0QWRkaXRpb25zXC8pKD8hRXh0ZXJuYWxcLykoPyFX
b3JrZXJzXC8pKD8hTm9uTWluaWZpZWRcLylbXlwiXSoiOwogJGlucHV0RGlyZWN0b3J5UGF0dGVy
biA9ICRpbnB1dERpcmVjdG9yeSAuICJcL1teXCJdKiIgaWYgJGlucHV0RGlyZWN0b3J5OwogCiBp
ZiAoZGVmaW5lZCgkc3RyaXApKSB7CiAgICAgc3RyaXBJbmNsdWRlZEZpbGVzTWF0Y2hpbmdQYXR0
ZXJuKCI8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIigkaW5wdXREaXJlY3RvcnlQYXR0
ZXJuKVwiPiIpOwogICAgIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigiPHNjcmlw
dCBzcmM9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVybilcIj48XC9zY3JpcHQ+Iik7CiB9IGVsc2Ug
ewotICAgIGNvbmNhdGVuYXRlSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigkb3V0cHV0U3R5
bGVzaGVldE5hbWUsICI8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIigkaW5wdXREaXJl
Y3RvcnlQYXR0ZXJuKVwiPiIsICI8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIiRvdXRw
dXRTdHlsZXNoZWV0TmFtZVwiPiIpIGlmIGRlZmluZWQgJG91dHB1dFN0eWxlc2hlZXROYW1lOwot
ICAgIGNvbmNhdGVuYXRlSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigkb3V0cHV0U2NyaXB0
TmFtZSwgIjxzY3JpcHQgc3JjPVwiKCRpbnB1dERpcmVjdG9yeVBhdHRlcm4pXCI+PFwvc2NyaXB0
PiIsICI8c2NyaXB0IHNyYz1cIiRvdXRwdXRTY3JpcHROYW1lXCI+PC9zY3JpcHQ+IikgaWYgZGVm
aW5lZCAkb3V0cHV0U2NyaXB0TmFtZTsKKyAgICBjb25jYXRlbmF0ZUluY2x1ZGVkRmlsZXNNYXRj
aGluZ1BhdHRlcm4oJG91dHB1dFN0eWxlc2hlZXROYW1lLCAiPGxpbmsgcmVsPVwic3R5bGVzaGVl
dFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVybilcIj4iLCBkZWZpbmVkICRza2lwQ29u
Y2F0ZW5hdGVUYWcgPyAiIiA6ICI8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIiRvdXRw
dXRTdHlsZXNoZWV0TmFtZVwiPiIpIGlmIGRlZmluZWQgJG91dHB1dFN0eWxlc2hlZXROYW1lOwor
ICAgIGNvbmNhdGVuYXRlSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigkb3V0cHV0U2NyaXB0
TmFtZSwgIjxzY3JpcHQgc3JjPVwiKCRpbnB1dERpcmVjdG9yeVBhdHRlcm4pXCI+PFwvc2NyaXB0
PiIsIGRlZmluZWQgJHNraXBDb25jYXRlbmF0ZVRhZyA/ICIiIDogIjxzY3JpcHQgc3JjPVwiJG91
dHB1dFNjcmlwdE5hbWVcIj48L3NjcmlwdD4iKSBpZiBkZWZpbmVkICRvdXRwdXRTY3JpcHROYW1l
OwogfQogCiAkaHRtbENvbnRlbnRzID1+IHMvPGhlYWQ+Lio8XC9oZWFkPi88aGVhZD4kaGVhZENv
bnRlbnRzPFwvaGVhZD4vc2k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2Ny
aXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbCBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCmluZGV4IGZkYmFk
MzgzYjJlZmI2YzJiYjk1NGY3NWU1ZTMxNzNmM2M0NjE2ZTguLmQ1NzQ5MGRiNmU0YTA1YmM3ZjJk
NzU3NGIxOGU1MDkyOGUwNzkwZDIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9T
Y3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCkBAIC0x
LDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCi0jIENvcHlyaWdodCAoQykgMjAxNS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMTIsNyArMTEyLDcgQEAgc3ViIHJlYWRMaWNlbnNlRmlsZSgkKQogCiBt
eSAkaW5zcGVjdG9yTGljZW5zZSA9IDw8J0VPRic7CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE1hdHQgTGlsZWsuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAwOSBBbnRob255IFJpY2F1ZCA8cmlrQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBKb3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0y
MzgsNyArMjM4LDcgQEAgc3ViIGNvbWJpbmVPclN0cmlwUmVzb3VyY2VzRm9yV2ViS2l0QWRkaXRp
b25zKCkgewogICAgICAgICBteSAkZm91bmRKU0ZpbGUgPSAwOwogICAgICAgICBteSAkZm91bmRD
U1NGaWxlID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZmlsZSAoQGZpbGVzKSB7Ci0gICAgICAg
ICAgICBteSAkcGF0aCA9IEZpbGU6OlNwZWMtPmNhdGRpcigkJHdlYkluc3BlY3RvclVJQWRkaXRp
b25zRGlyLCAkZmlsZSk7CisgICAgICAgICAgICBteSAkcGF0aCA9IEZpbGU6OlNwZWMtPmNhdGRp
cigkd2ViSW5zcGVjdG9yVUlBZGRpdGlvbnNEaXIsICRmaWxlKTsKICAgICAgICAgICAgIG5leHQg
aWYgLWQgJHBhdGg7CiAgICAgICAgICAgICBpZiAoJGZpbGUgPX4gL1wuanMkLykgewogICAgICAg
ICAgICAgICAgIGRlYnVnTG9nKCJGb3VuZCBhIEphdmFTY3JpcHQgZmlsZSB0byBjb21iaW5lOiAk
ZmlsZSIpOwpAQCAtMzQ2LDEyICszNDYsMjkgQEAgaWYgKCRzaG91bGRDb21iaW5lTWFpbikgewog
ICAgICAgICctLW91dHB1dC1kaXInLCAkZGVyaXZlZFNvdXJjZXNEaXIsCiAgICAgICAgJy0tb3V0
cHV0LXNjcmlwdC1uYW1lJywgJ1RocmVlLmpzJyk7CiAKKyAgICAjIENvbWJpbmUgbm9uLW1pbmlm
aWVkIEphdmFTY3JpcHQgZmlsZXMgaW4gUHJvZHVjdGlvbiBidWlsZHMgaW50byBhIHNpbmdsZSBm
aWxlIChOb25NaW5pZmllZC5qcyksIHdoaWNoIHdpbGwgYmUKKyAgICAjIGFwcGVuZGVkIHRvIE1h
aW4uanMgYWZ0ZXIgTWFpbi5qcyBoYXMgYmVlbiBtaW5pZmllZC4KKyAgICBzeXN0ZW0oJHBlcmws
ICRjb21iaW5lUmVzb3VyY2VzQ21kLAorICAgICAgICctLWlucHV0LWRpcicsICdOb25NaW5pZmll
ZCcsCisgICAgICAgJy0taW5wdXQtaHRtbCcsICRkZXJpdmVkU291cmNlc01haW5IVE1MLAorICAg
ICAgICctLWlucHV0LWh0bWwtZGlyJywgJHVpUm9vdCwKKyAgICAgICAnLS1kZXJpdmVkLXNvdXJj
ZXMtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAorICAgICAgICctLW91dHB1dC1kaXInLCAkZGVy
aXZlZFNvdXJjZXNEaXIsCisgICAgICAgJy0tb3V0cHV0LXNjcmlwdC1uYW1lJywgJ05vbk1pbmlm
aWVkLmpzJywKKyAgICAgICAnLS1za2lwLWNvbmNhdGVuYXRlLXRhZycpOworCiAgICAgIyBSZW1v
dmUgY29uc29sZS5hc3NlcnQgY2FsbHMgZnJvbSB0aGUgTWFpbi5qcyBmaWxlLgogICAgIG15ICRk
ZXJpdmVkU291cmNlc01haW5KUyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2Vz
RGlyLCAnTWFpbi5qcycpOwogICAgIHN5c3RlbSgkcGVybCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgk
c2NyaXB0c1Jvb3QsICdyZW1vdmUtY29uc29sZS1hc3NlcnRzLnBsJyksCiAgICAgICAgICctLWlu
cHV0LXNjcmlwdCcsICRkZXJpdmVkU291cmNlc01haW5KUywKICAgICAgICAgJy0tb3V0cHV0LXNj
cmlwdCcsICRkZXJpdmVkU291cmNlc01haW5KUyk7CiAKKyAgICAjIFJlbW92ZSBjb25zb2xlLmFz
c2VydCBjYWxscyBmcm9tIHRoZSBOb25NaW5pZmllZC5qcyBmaWxlLgorICAgIG15ICRkZXJpdmVk
U291cmNlc05vbk1pbmlmaWVkSlMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNl
c0RpciwgJ05vbk1pbmlmaWVkLmpzJyk7CisgICAgc3lzdGVtKCRwZXJsLCBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRzY3JpcHRzUm9vdCwgJ3JlbW92ZS1jb25zb2xlLWFzc2VydHMucGwnKSwKKyAgICAg
ICAgJy0taW5wdXQtc2NyaXB0JywgJGRlcml2ZWRTb3VyY2VzTm9uTWluaWZpZWRKUywKKyAgICAg
ICAgJy0tb3V0cHV0LXNjcmlwdCcsICRkZXJpdmVkU291cmNlc05vbk1pbmlmaWVkSlMpOworCiAg
ICAgIyBGaXggSW1hZ2UgVVJMcyBpbiB0aGUgTWFpbi5jc3MgZmlsZSBieSByZW1vdmluZyB0aGUg
Ii4uLyIuCiAgICAgbXkgJGRlcml2ZWRTb3VyY2VzTWFpbkNTUyA9IEZpbGU6OlNwZWMtPmNhdGZp
bGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnTWFpbi5jc3MnKTsKICAgICBpZiAob3BlbihJTlBVVF9N
QUlOLCAnPCcsICRkZXJpdmVkU291cmNlc01haW5DU1MpKSB7CkBAIC00MDYsNiArNDIzLDkgQEAg
aWYgKCRzaG91bGRDb21iaW5lTWFpbikgewogICAgIG15ICRkZXJpdmVkU291cmNlc1RocmVlanNK
UyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnVGhyZWUuanMnKTsK
ICAgICBzeXN0ZW0ocXEoIiRweXRob24iICIkanNNaW5TY3JpcHQiIDwgIiRkZXJpdmVkU291cmNl
c1RocmVlanNKUyIgPj4gIiR0YXJnZXRUaHJlZWpzSlMiKSkgYW5kIGRpZSAiRmFpbGVkIHRvIG1p
bmlmeSAkZGVyaXZlZFNvdXJjZXNUaHJlZWpzSlM6ICQhIjsKIAorICAgICMgQXBwZW5kIG5vbi1t
aW5pZmllZCBKYXZhU2NyaXB0IHRvIE1haW4uanMuCisgICAgYXBwZW5kRmlsZSgkdGFyZ2V0TWFp
bkpTLCAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmllZEpTKTsKKwogICAgICMgQ29weSBvdmVyIHRo
ZSBJbWFnZXMgZGlyZWN0b3J5LgogICAgIGRpdHRvKEZpbGU6OlNwZWMtPmNhdGRpcigkdWlSb290
LCAnSW1hZ2VzJyksIEZpbGU6OlNwZWMtPmNhdGRpcigkdGFyZ2V0UmVzb3VyY2VQYXRoLCAnSW1h
Z2VzJykpOwogCkBAIC00MzQsMTUgKzQ1NCwyNyBAQCBjb3B5KCRkZXJpdmVkU291cmNlc01haW5I
VE1MLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0YXJnZXRSZXNvdXJjZVBhdGgsICdNYWluLmh0bQog
CiBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAgICAgIyBDb21iaW5lIHRoZSBKYXZhU2NyaXB0
IGZpbGVzIGZvciB0ZXN0aW5nIGludG8gYSBzaW5nbGUgZmlsZSAoVGVzdENvbWJpbmVkLmpzKS4K
KyAgICBteSAkaW5wdXRUZXN0SFRNTCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHVpUm9vdCwgJ1Rl
c3QuaHRtbCcpOwogICAgIHN5c3RlbSgkcGVybCwgJGNvbWJpbmVSZXNvdXJjZXNDbWQsCi0gICAg
ICAgICctLWlucHV0LWh0bWwnLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCR1aVJvb3QsICdUZXN0Lmh0
bWwnKSwKKyAgICAgICAgJy0taW5wdXQtaHRtbCcsICRpbnB1dFRlc3RIVE1MLAogICAgICAgICAn
LS1kZXJpdmVkLXNvdXJjZXMtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAogICAgICAgICAnLS1v
dXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAogICAgICAgICAnLS1vdXRwdXQtc2NyaXB0
LW5hbWUnLCAnVGVzdENvbWJpbmVkLmpzJywKICAgICAgICAgJy0tb3V0cHV0LXN0eWxlLW5hbWUn
LCAnVGVzdENvbWJpbmVkLmNzcycpOwogCisgICAgIyBDb21iaW5lIG5vbi1taW5pZmllZCBKYXZh
U2NyaXB0IGZpbGVzIGluIFByb2R1Y3Rpb24gYnVpbGRzIGludG8gdGhlIHNhbWUgVGVzdENvbWJp
bmVkLmpzLCBiZWNhdXNlIHRlc3QgZmlsZXMgYXJlIG5vdCBtaW5pZmllZC4KKyAgICBzeXN0ZW0o
JHBlcmwsICRjb21iaW5lUmVzb3VyY2VzQ21kLAorICAgICAgICctLWlucHV0LWRpcicsICdOb25N
aW5pZmllZCcsCisgICAgICAgJy0taW5wdXQtaHRtbCcsICRpbnB1dFRlc3RIVE1MLAorICAgICAg
ICctLWlucHV0LWh0bWwtZGlyJywgJHVpUm9vdCwKKyAgICAgICAnLS1kZXJpdmVkLXNvdXJjZXMt
ZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAorICAgICAgICctLW91dHB1dC1kaXInLCAkZGVyaXZl
ZFNvdXJjZXNEaXIsCisgICAgICAgJy0tb3V0cHV0LXNjcmlwdC1uYW1lJywgJ05vbk1pbmlmaWVk
VGVzdENvbWJpbmVkLmpzJywKKyAgICAgICAnLS1za2lwLWNvbmNhdGVuYXRlLXRhZycpOworCiAg
ICAgbXkgJGRlcml2ZWRTb3VyY2VzVGVzdEhUTUwgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJp
dmVkU291cmNlc0RpciwgJ1Rlc3QuaHRtbCcpOwogICAgIG15ICRkZXJpdmVkU291cmNlc1Rlc3RK
UyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnVGVzdENvbWJpbmVk
LmpzJyk7CisgICAgbXkgJGRlcml2ZWRTb3VyY2VzTm9uTWluaWZpZWRUZXN0SlMgPSBGaWxlOjpT
cGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNlc0RpciwgJ05vbk1pbmlmaWVkVGVzdENvbWJpbmVk
LmpzJyk7CiAgICAgIyBDb21iaW5lIHRoZSBDb2RlTWlycm9yIEphdmFTY3JpcHQgZmlsZXMgaW50
byBzaW5nbGUgZmlsZSAoVGVzdENvZGVNaXJyb3IuanMpLgogICAgIHN5c3RlbSgkcGVybCwgJGNv
bWJpbmVSZXNvdXJjZXNDbWQsCiAgICAgICAgICctLWlucHV0LWRpcicsICdFeHRlcm5hbC9Db2Rl
TWlycm9yJywKQEAgLTQ3Niw2ICs1MDgsOSBAQCBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAg
ICAgIyBBcHBlbmQgVGVzdENvbWJpbmVkLmpzIHRvIHRoZSBsaWNlbnNlIHRoYXQgd2FzIGV4cG9y
dGVkIGFib3ZlLgogICAgIGFwcGVuZEZpbGUoJHRhcmdldFRlc3RKUywgJGRlcml2ZWRTb3VyY2Vz
VGVzdEpTKTsKIAorICAgICMgQXBwZW5kIHRoZSBub24tbWluaWZpZWQgc291cmNlcyB0byBUZXN0
Q29tYmluZWQuanM7CisgICAgYXBwZW5kRmlsZSgkdGFyZ2V0VGVzdEpTLCAkZGVyaXZlZFNvdXJj
ZXNOb25NaW5pZmllZFRlc3RKUyk7CisKICAgICAjIEFwcGVuZCBDb2RlTWlycm9yLmpzIHRvIHRo
ZSBsaWNlbnNlIHRoYXQgd2FzIGV4cG9ydGVkIGFib3ZlLgogICAgIG15ICRkZXJpdmVkU291cmNl
c0NvZGVNaXJyb3JKUyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAn
VGVzdENvZGVNaXJyb3IuanMnKTsKICAgICBhcHBlbmRGaWxlKCR0YXJnZXRDb2RlTWlycm9ySlMs
ICRkZXJpdmVkU291cmNlc0NvZGVNaXJyb3JKUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIu
anMKaW5kZXggYmY1MDJkYmNmZjNkYzIwYjIwYTkxYWRlZWNhNDI4OGM2MWEyNWUyZS4uMjAyZWI4
NjRhYWI0OGZiOTFiYjVlNWVjOTJlZGYzMTdiOTEzNTYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0F1ZGl0
TWFuYWdlci5qcwpAQCAtMzM5LDcyOCArMzM5LDcyIEBAIFdJLkF1ZGl0TWFuYWdlciA9IGNsYXNz
IEF1ZGl0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2FkZERlZmF1bHRUZXN0cygp
CiAgICAgewotICAgICAgICBjb25zdCBsZXZlbFBhc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIn07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3Qg
bGV2ZWxXYXJuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAid2Fy
biJ9OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGxldmVsRmFpbCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogImZhaWwifTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCBsZXZlbEVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4g
e2xldmVsOiAiZXJyb3IifTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBsZXZlbFVuc3Vw
cG9ydGVkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAidW5zdXBw
b3J0ZWQifTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBkYXRhRE9NTm9kZXMgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtk
b2N1bWVudC5ib2R5XX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZGF0YURPTUF0dHJp
YnV0ZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwg
ZG9tTm9kZXM6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2lkXSIpKSwg
ZG9tQXR0cmlidXRlczogWyJpZCJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBkYXRh
RXJyb3JzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aHJvdyBFcnJvcigidGhpcyBlcnJv
ciB3YXMgdGhyb3duIGZyb20gaW5zaWRlIHRoZSBhdWRpdCB0ZXN0IGNvZGUuIik7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgY29uc3QgZGF0YUN1c3RvbSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBhOiAxLCBiOiBbMl0sIGM6IHtrZXk6IDN9fTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBjb25zdCBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
ImxpbmsiKSwgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAg
IGNvbnN0IGdldEFjdGl2ZURlc2NlbmRhbnQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxl
dCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07Ci0gICAgICAgICAgICBsZXQgYWN0aXZlRGVzY2Vu
ZGFudCA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0QWN0aXZlRGVzY2VuZGFu
dChkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50KQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFthY3RpdmVEZXNjZW5kYW50XTsKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Q2hp
bGROb2RlcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBXZWJJ
bnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENoaWxkTm9kZXMoZG9jdW1lbnQuYm9keSk7
Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBjaGlsZE5vZGVz
IHx8IFtdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBnZXRDb21wdXRlZFByb3BlcnRp
ZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBkb21BdHRyaWJ1dGVzID0gWyJhbHQi
LCAiYXJpYS1hdG9taWMiLCAiYXJpYS1idXN5IiwgImFyaWEtY2hlY2tlZCIsICJhcmlhLWN1cnJl
bnQiLCAiYXJpYS1kaXNhYmxlZCIsICJhcmlhLWV4cGFuZGVkIiwgImFyaWEtaGFzcG9wdXAiLCAi
YXJpYS1oaWRkZW4iLCAiYXJpYS1pbnZhbGlkIiwgImFyaWEtbGFiZWwiLCAiYXJpYS1sYWJlbGxl
ZGJ5IiwgImFyaWEtbGV2ZWwiLCAiYXJpYS1saXZlIiwgImFyaWEtcHJlc3NlZCIsICJhcmlhLXJl
YWRvbmx5IiwgImFyaWEtcmVsZXZhbnQiLCAiYXJpYS1yZXF1aXJlZCIsICJhcmlhLXNlbGVjdGVk
IiwgInJvbGUiLCAidGl0bGUiXS5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4gZG9jdW1lbnQuYm9keS5o
YXNBdHRyaWJ1dGUoYXR0cmlidXRlKSk7Ci0gICAgICAgICAgICBsZXQgY29tcHV0ZWRQcm9wZXJ0
aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRp
ZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRv
bU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRvbUF0dHJpYnV0ZXMsIC4uLihjb21wdXRlZFByb3Bl
cnRpZXMgfHwge30pfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBnZXRDb250cm9sbGVk
Tm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBjb250cm9sbGVkTm9kZXMgPSBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbnRyb2xsZWROb2Rlcyhkb2N1bWVu
dC5ib2R5KTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IGNv
bnRyb2xsZWROb2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Rmxv
d2VkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBmbG93ZWROb2RlcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Rmxvd2VkTm9kZXMoZG9jdW1lbnQuYm9k
eSk7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBmbG93ZWRO
b2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0TW91c2VFdmVudE5v
ZGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNz
In07Ci0gICAgICAgICAgICBsZXQgbW91c2VFdmVudE5vZGUgPSBXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldE1vdXNlRXZlbnROb2RlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAg
ICAgaWYgKG1vdXNlRXZlbnROb2RlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9
IFttb3VzZUV2ZW50Tm9kZV07Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
OwotCi0gICAgICAgIGNvbnN0IGdldE93bmVkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGxldCBvd25lZE5vZGVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRP
d25lZE5vZGVzKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBh
c3MiLCBkb21Ob2Rlczogb3duZWROb2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Y29uc3QgZ2V0UGFyZW50Tm9kZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IHtsZXZlbDogInBhc3MifTsKLSAgICAgICAgICAgIGxldCBwYXJlbnROb2RlID0gV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRQYXJlbnROb2RlKGRvY3VtZW50LmJvZHkpOwot
ICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmRvbU5v
ZGVzID0gW3BhcmVudE5vZGVdOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fTsKLQotICAgICAgICBjb25zdCBnZXRTZWxlY3RlZENoaWxkTm9kZXMgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGxldCBzZWxlY3RlZENoaWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldFNlbGVjdGVkQ2hpbGROb2Rlcyhkb2N1bWVudC5ib2R5KTsKLSAgICAg
ICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IHNlbGVjdGVkQ2hpbGROb2Rl
cyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnMg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBkb21BdHRyaWJ1dGVzID0gQXJyYXkuZnJv
bShkb2N1bWVudC5ib2R5LmF0dHJpYnV0ZXMpLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1
dGUubmFtZS5zdGFydHNXaXRoKCJvbiIpKTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJw
YXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XSwgZG9tQXR0cmlidXRlcywgaGFzRXZlbnRM
aXN0ZW5lcnM6IFdlYkluc3BlY3RvckF1ZGl0LkRPTS5oYXNFdmVudExpc3RlbmVycyhkb2N1bWVu
dC5ib2R5KX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnND
bGljayA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbUF0dHJpYnV0ZXMgPSBbIm9u
Y2xpY2siXS5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUo
YXR0cmlidXRlKSk7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVz
OiBbZG9jdW1lbnQuYm9keV0sIGRvbUF0dHJpYnV0ZXMsIGhhc0NsaWNrRXZlbnRMaXN0ZW5lcjog
V2ViSW5zcGVjdG9yQXVkaXQuRE9NLmhhc0V2ZW50TGlzdGVuZXJzKGRvY3VtZW50LmJvZHksICJj
bGljayIpfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBnZXRSZXNvdXJjZXMgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgcmVzb3VyY2VzOiBX
ZWJJbnNwZWN0b3JBdWRpdC5SZXNvdXJjZXMuZ2V0UmVzb3VyY2VzKCl9OwotICAgICAgICB9Owot
Ci0gICAgICAgIGNvbnN0IGdldFJlc291cmNlQ29udGVudCA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgbGV0IHJlc291cmNlcyA9IFdlYkluc3BlY3RvckF1ZGl0LlJlc291cmNlcy5nZXRSZXNv
dXJjZXMoKTsKLSAgICAgICAgICAgIGxldCBtYWluUmVzb3VyY2UgPSByZXNvdXJjZXMuZmluZCgo
cmVzb3VyY2UpID0+IHJlc291cmNlLnVybCA9PT0gd2luZG93LmxvY2F0aW9uLmhyZWYpOwotICAg
ICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBtYWluUmVzb3VyY2UsIHJlc291cmNlQ29u
dGVudDogV2ViSW5zcGVjdG9yQXVkaXQuUmVzb3VyY2VzLmdldFJlc291cmNlQ29udGVudChtYWlu
UmVzb3VyY2UuaWQpfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB1bnN1cHBvcnRlZCA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhyb3cgRXJyb3IoInRoaXMgdGVzdCBzaG91bGQg
bm90IGJlIHN1cHBvcnRlZC4iKTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0TWVu
dVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25z
dCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAgICAgIG1lbnU6IFsibWVudWl0ZW0iLCAi
bWVudWl0ZW1jaGVja2JveCIsICJtZW51aXRlbXJhZGlvIl0sCi0gICAgICAgICAgICAgICAgbWVu
dWJhcjogWyJtZW51aXRlbSIsICJtZW51aXRlbWNoZWNrYm94IiwgIm1lbnVpdGVtcmFkaW8iXSwK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAg
ICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBo
YXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBs
ZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNo
aWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5h
ZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxk
Tm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBl
Y3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0
Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxk
Tm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChs
ZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFy
ZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJl
bnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZp
cnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAg
ZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIg
OiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgY29uc3QgdGVzdEdyaWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKLSAgICAgICAgICAg
ICAgICBncmlkOiBbInJvdyIsICJyb3dncm91cCJdLAotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0g
bmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhw
ZWN0ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwotICAg
ICAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0gICAg
ICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7
Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRD
b21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNo
aWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVy
dGllcy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYg
aGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJs
aW5nOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMp
IHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1
ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1ty
b2xlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7
bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0
dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9y
QXJpYUxhYmVsbGVkQnlTcGVsbGluZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRv
bU5vZGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1sYWJl
bGVkYnldIikpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8g
ImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsZWRi
eSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9yTXVsdGlwbGVCYW5uZXJz
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAg
ICAgIGxldCBiYW5uZXJzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVt
ZW50c0J5Q29tcHV0ZWRSb2xlKCJiYW5uZXIiKTsKLSAgICAgICAgICAgIGlmIChiYW5uZXJzLmxl
bmd0aCA+IDEpCi0gICAgICAgICAgICAgICAgZG9tTm9kZXMgPSBiYW5uZXJzOwotICAgICAgICAg
ICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21O
b2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNv
bnN0IHRlc3RGb3JMaW5rTGFiZWxzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgbGlu
a3MgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRl
ZFJvbGUoImxpbmsiKTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IGxpbmtzLmZpbHRlcigo
bGluaykgPT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9w
ZXJ0aWVzKGxpbmspLmxhYmVsKTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVz
Lmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJp
YS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiXX07Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgY29uc3QgdGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAg
ICAgcm93Z3JvdXA6IFsicm93Il0sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRv
bU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0Owot
ICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVz
KSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAg
ICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHBy
b3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJv
cGVydGllcyhjaGlsZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdp
dGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAg
ICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxk
V2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RUYWJsZVJvbGVGb3JS
ZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlv
bnNoaXBzID0gewotICAgICAgICAgICAgICAgIHRhYmxlOiBbInJvdyIsICJyb3dncm91cCJdLAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAg
ICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhh
c0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxl
dCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hp
bGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFk
ZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGRO
b2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgJiYgcHJvcGVydGllcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVj
dGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RD
aGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxl
dCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJl
bnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZShyb2xlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVu
dHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmly
c3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBk
b21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCB0ZXN0Rm9yTXVsdGlwbGVMaXZlUmVnaW9ucyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgY29uc3QgbGl2ZVJlZ2lvblJvbGVzID0gWyJhbGVydCIsICJsb2ciLCAi
c3RhdHVzIiwgIm1hcnF1ZWUiLCAidGltZXIiXTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9
IFtdOwotICAgICAgICAgICAgbGV0IGxpdmVSZWdpb25zID0gbGl2ZVJlZ2lvblJvbGVzLnJlZHVj
ZSgoYSwgYikgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBhLmNvbmNhdChXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoYikpOwotICAg
ICAgICAgICAgfSwgW10pOwotICAgICAgICAgICAgbGl2ZVJlZ2lvbnMgPSBsaXZlUmVnaW9ucy5j
b25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1saXZlPSJw
b2xpdGUiXSwgW2FyaWEtbGl2ZT0iYXNzZXJ0aXZlIl1gKSkpOwotICAgICAgICAgICAgaWYgKGxp
dmVSZWdpb25zLmxlbmd0aCA+IDEpCi0gICAgICAgICAgICAgICAgZG9tTm9kZXMgPSBsaXZlUmVn
aW9uczsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJ3YXJu
IiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1saXZlIl19OwotICAg
ICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRy
ZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0g
ICAgICAgICAgICAgICAgbGlzdGJveDogWyJvcHRpb24iXSwKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50
cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUs
IGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQot
ICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5v
ZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHBy
b3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2Rlcygp
ICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0
U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNo
aXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hp
cHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnRO
b2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBk
b21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVz
dEltYWdlTGFiZWxzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgaW1hZ2VzID0gV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJp
bWciKTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IGltYWdlcy5maWx0ZXIoKGltYWdlKSA9
PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMo
aW1hZ2UpLmxhYmVsKTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0
aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJl
bCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiLCAiYWx0Il19OwotICAgICAgICB9OwotCi0g
ICAgICAgIGNvbnN0IHRlc3RGb3JBcmlhSGlkZGVuRmFsc2UgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGxldCBkb21Ob2RlcyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bChgW2FyaWEtaGlkZGVuPSJmYWxzZSJdYCkpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDog
ZG9tTm9kZXMubGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRl
czogWyJhcmlhLWhpZGRlbiJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0VHJl
ZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25z
dCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAgICAgIHRyZWU6IFsidHJlZWl0ZW0iLCAi
Z3JvdXAiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsK
LSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxk
Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVk
UGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hp
bGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxk
Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5v
ZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGRO
b2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJl
bnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGgg
PyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRD
aGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9
IHsKLSAgICAgICAgICAgICAgICByYWRpb2dyb3VwOiBbInJhZGlvIl0sCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgdmlzaXRl
ZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9s
ZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9
IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50
Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5w
YXJlbnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNs
dWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxk
Tm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3Rl
ZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5v
ZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVs
YXRpb25zaGlwcykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJv
bGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50
Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxh
dGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2go
cGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21O
b2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNv
bnN0IHRlc3RGZWVkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgZmVlZDogWyJh
cnRpY2xlIl0sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107
Ci0gICAgICAgICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAg
ZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGls
ZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
ICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRl
ZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdo
aWxlIChjaGlsZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGls
ZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBO
b2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxk
Tm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAgICAgICAgICAgIGZv
ciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRF
bGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFy
ZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3Ro
ID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19Owot
ICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7
Ci0gICAgICAgICAgICAgICAgdGFibGlzdDogWyJ0YWIiXSwKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50
cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUs
IGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQot
ICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5v
ZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHBy
b3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2Rlcygp
ICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0
U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNo
aXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hp
cHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnRO
b2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBk
b21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVz
dEJ1dHRvbkxhYmVscyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGJ1dHRvbnMgPSBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
ImJ1dHRvbiIpOwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gYnV0dG9ucy5maWx0ZXIoKGJ1
dHRvbikgPT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9w
ZXJ0aWVzKGJ1dHRvbikubGFiZWwpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9k
ZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJh
cmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJ0aXRsZSJdfTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBjb25zdCB0ZXN0Um93Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAg
cm93OiBbImNlbGwiLCAiZ3JpZGNlbGwiLCAiY29sdW1uaGVhZGVyIiwgInJvd2hlYWRlciJdLAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAg
ICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhh
c0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxl
dCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hp
bGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFk
ZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGRO
b2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgJiYgcHJvcGVydGllcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVj
dGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RD
aGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxl
dCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJl
bnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZShyb2xlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVu
dHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmly
c3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBk
b21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCB0ZXN0TGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAg
ICAgIGxpc3Q6IFsibGlzdGl0ZW0iLCAiZ3JvdXAiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9
IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4
cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAg
ICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUp
OwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAg
ICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChj
aGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3Bl
cnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYm
IGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2li
bGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBz
KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JB
dWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlm
ICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNb
cm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2Rl
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
e2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAid2FybiIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21B
dHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdENv
bWJvQm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgY29tYm9ib3g6IFsidGV4
dGJveCIsICJsaXN0Ym94IiwgInRyZWUiLCAiZ3JpZCIsICJkaWFsb2ciXSwKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNp
dGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhS
b2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2Rl
ID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJl
bnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2Rl
LnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAg
ICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHBy
b3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmlu
Y2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hp
bGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVj
dGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiBy
ZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
cm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJl
bnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJl
bGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVz
aChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRv
bU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Y29uc3QgdGVzdEZvck11bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9ucyA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgbWFpbkNvbnRl
bnRFbGVtZW50cyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNC
eUNvbXB1dGVkUm9sZSgibWFpbiIpOwotICAgICAgICAgICAgaWYgKG1haW5Db250ZW50RWxlbWVu
dHMubGVuZ3RoID4gMSkgewotICAgICAgICAgICAgICAgIGRvbU5vZGVzID0gbWFpbkNvbnRlbnRF
bGVtZW50czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5v
ZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsi
cm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0RGlhbG9nc0ZvckxhYmVs
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGxldCBkaWFsb2dzID0gV2ViSW5zcGVjdG9yQXVk
aXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJkaWFsb2ciKTsKLSAg
ICAgICAgICBsZXQgZG9tTm9kZXMgPSBkaWFsb2dzLmZpbHRlcigoZGlhbG9nKSA9PiAhV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoZGlhbG9nKS5s
YWJlbCk7Ci0gICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwi
IDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsIiwgImFyaWEt
bGFiZWxsZWRieSIsICJ0aXRsZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0
Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0
IGRvbU5vZGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1o
aWRkZW5dOm5vdChbYXJpYS1oaWRkZW49InRydWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWAp
KTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1oaWRkZW4iXX07Ci0gICAg
ICAgIH07Ci0KICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlV2hpdGVzcGFjZShmdW5jKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gV0kuQXVkaXRUZXN0Q2FzZS5zdHJpbmdpZnlGdW5jdGlvbihmdW5jLCA4
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5BdWRpdFRlc3RDYXNlLnN0cmluZ2lmeUZ1bmN0aW9u
KGZ1bmMsIDQpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgZGVmYXVsdFRlc3RzID0gWwog
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJEZW1vIEF1ZGl0
IiksIFsKICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0R3JvdXAoV0kuVUlTdHJpbmco
IlJlc3VsdCBMZXZlbHMiKSwgWwotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0
Q2FzZSgibGV2ZWwtcGFzcyIsIHJlbW92ZVdoaXRlc3BhY2UobGV2ZWxQYXNzKSwge2Rlc2NyaXB0
aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSBwYXNzaW5nIHRl
c3Qgd2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3
IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLXdhcm4iLCByZW1vdmVXaGl0ZXNwYWNlKGxldmVsV2Fy
biksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgd2hhdCB0aGUgcmVzdWx0IG9m
IGEgd2FybmluZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtlLiIpfSksCi0gICAgICAgICAg
ICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC1mYWlsIiwgcmVtb3ZlV2hpdGVz
cGFjZShsZXZlbEZhaWwpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIHdoYXQg
dGhlIHJlc3VsdCBvZiBhIGZhaWxpbmcgdGVzdCB3aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0p
LAotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgibGV2ZWwtZXJyb3Ii
LCByZW1vdmVXaGl0ZXNwYWNlKGxldmVsRXJyb3IpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5n
KCJUaGlzIGlzIHdoYXQgdGhlIHJlc3VsdCBvZiBhIHRlc3QgdGhhdCB0aHJldyBhbiBlcnJvciB3
aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAotICAgICAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgibGV2ZWwtdW5zdXBwb3J0ZWQiLCByZW1vdmVXaGl0ZXNwYWNlKGxldmVs
VW5zdXBwb3J0ZWQpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIHdoYXQgdGhl
IHJlc3VsdCBvZiBhbiB1bnN1cHBvcnRlZCB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtlLiIp
fSksCisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC1wYXNz
IiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmxldmVsUGFzcyksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgd2hhdCB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyB0
ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtlLiIpfSksCisgICAgICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC13YXJuIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZh
dWx0QXVkaXRzLmxldmVsV2FybiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMg
d2hhdCB0aGUgcmVzdWx0IG9mIGEgd2FybmluZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtl
LiIpfSksCisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC1m
YWlsIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmxldmVsRmFpbCksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgd2hhdCB0aGUgcmVzdWx0IG9mIGEgZmFpbGlu
ZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtlLiIpfSksCisgICAgICAgICAgICAgICAgICAg
IG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC1lcnJvciIsIHJlbW92ZVdoaXRlc3BhY2UoV0ku
RGVmYXVsdEF1ZGl0cy5sZXZlbEVycm9yKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhp
cyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSB0ZXN0IHRoYXQgdGhyZXcgYW4gZXJyb3Igd2l0aCBu
byBkYXRhIGxvb2tzIGxpa2UuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoImxldmVsLXVuc3VwcG9ydGVkIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0
QXVkaXRzLmxldmVsVW5zdXBwb3J0ZWQpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlz
IGlzIHdoYXQgdGhlIHJlc3VsdCBvZiBhbiB1bnN1cHBvcnRlZCB0ZXN0IHdpdGggbm8gZGF0YSBs
b29rcyBsaWtlLiIpfSksCiAgICAgICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiVGhlc2UgYXJlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHRlc3QgcmVzdWx0IGxldmVscy4i
KX0pLAogICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygi
UmVzdWx0IERhdGEiKSwgWwotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgiZGF0YS1kb21Ob2RlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZGF0YURPTU5vZGVzKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIG9mIGhvdyByZXN1bHQgRE9N
IG5vZGVzIGFyZSBzaG93bi4gSXQgd2lsbCBwYXNzIHdpdGggdGhlIDxib2R5PiBlbGVtZW50LiIp
fSksCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJkYXRhLWRvbUF0
dHJpYnV0ZXMiLCByZW1vdmVXaGl0ZXNwYWNlKGRhdGFET01BdHRyaWJ1dGVzKSwge2Rlc2NyaXB0
aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIG9mIGhvdyByZXN1bHQgRE9NIGF0
dHJpYnV0ZXMgYXJlIGhpZ2hsaWdodGVkIG9uIGFueSByZXR1cm5lZCBET00gbm9kZXMuIEl0IHdp
bGwgcGFzcyB3aXRoIGFsbCBlbGVtZW50cyB3aXRoIGFuIGlkIGF0dHJpYnV0ZS4iKX0pLAotICAg
ICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZGF0YS1lcnJvcnMiLCByZW1v
dmVXaGl0ZXNwYWNlKGRhdGFFcnJvcnMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlz
IGlzIGFuIGV4YW1wbGUgb2YgaG93IGVycm9ycyBhcmUgc2hvd24uIFRoZSBlcnJvciB3YXMgdGhy
b3duIG1hbnVhbGx5LCBidXQgZXhlY3V0aW9uIGVycm9ycyB3aWxsIGFwcGVhciBpbiB0aGUgc2Ft
ZSB3YXkuIil9KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImRh
dGEtY3VzdG9tIiwgcmVtb3ZlV2hpdGVzcGFjZShkYXRhQ3VzdG9tKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIG9mIGhvdyBjdXN0b20gcmVzdWx0IGRhdGEg
aXMgc2hvd24uIiksIHN1cHBvcnRzOiAzfSksCisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RDYXNlKCJkYXRhLWRvbU5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0
QXVkaXRzLmRhdGFET01Ob2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMg
YW4gZXhhbXBsZSBvZiBob3cgcmVzdWx0IERPTSBub2RlcyBhcmUgc2hvd24uIEl0IHdpbGwgcGFz
cyB3aXRoIHRoZSA8Ym9keT4gZWxlbWVudC4iKX0pLAorICAgICAgICAgICAgICAgICAgICBuZXcg
V0kuQXVkaXRUZXN0Q2FzZSgiZGF0YS1kb21BdHRyaWJ1dGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShX
SS5EZWZhdWx0QXVkaXRzLmRhdGFET01BdHRyaWJ1dGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIG9mIGhvdyByZXN1bHQgRE9NIGF0dHJpYnV0ZXMgYXJl
IGhpZ2hsaWdodGVkIG9uIGFueSByZXR1cm5lZCBET00gbm9kZXMuIEl0IHdpbGwgcGFzcyB3aXRo
IGFsbCBlbGVtZW50cyB3aXRoIGFuIGlkIGF0dHJpYnV0ZS4iKX0pLAorICAgICAgICAgICAgICAg
ICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZGF0YS1lcnJvcnMiLCByZW1vdmVXaGl0ZXNwYWNl
KFdJLkRlZmF1bHRBdWRpdHMuZGF0YUVycm9ycyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgYW4gZXhhbXBsZSBvZiBob3cgZXJyb3JzIGFyZSBzaG93bi4gVGhlIGVycm9yIHdh
cyB0aHJvd24gbWFudWFsbHksIGJ1dCBleGVjdXRpb24gZXJyb3JzIHdpbGwgYXBwZWFyIGluIHRo
ZSBzYW1lIHdheS4iKX0pLAorICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgiZGF0YS1jdXN0b20iLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMuZGF0YUN1
c3RvbSksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSBvZiBo
b3cgY3VzdG9tIHJlc3VsdCBkYXRhIGlzIHNob3duLiIpLCBzdXBwb3J0czogM30pLAogICAgICAg
ICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoZXNlIGFyZSBleGFtcGxl
IHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgYWxsIG9mIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0
YSB0aGF0IGNhbiBiZSByZXR1cm5lZCB3aXRoIHRoZSB0ZXN0IHJlc3VsdC4iKX0pLAogICAgICAg
ICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiU3BlY2lhbGx5IEV4
cG9zZWQgRGF0YSIpLCBbCiAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RHcm91
cChXSS5VSVN0cmluZygiQWNjZXNzaWJpbGl0eSIpLCBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIHJlbW92
ZVdoaXRlc3BhY2UoZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGVs
ZW1lbnRzIHdpdGggYSBjb21wdXRlZCByb2xlIG9mIFx1MDAyMmxpbmtcdTAwMjIuIikuZm9ybWF0
KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0QWN0aXZlRGVzY2VuZGFudCIsIHJl
bW92ZVdoaXRlc3BhY2UoZ2V0QWN0aXZlRGVzY2VuZGFudCksIHtkZXNjcmlwdGlvbjogV0kuVUlT
dHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFueSBl
bGVtZW50IHRoYXQgbWVldHMgY3JpdGVyaWEgZm9yIGFjdGl2ZSBkZXNjZW5kYW50IChcdTAwMjIl
c1x1MDAyMikgb2YgdGhlIDxib2R5PiBlbGVtZW50LCBpZiBpdCBleGlzdHMuIikuZm9ybWF0KFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEFj
dGl2ZURlc2NlbmRhbnQiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtYWN0aXZlZGVzY2Vu
ZGFudCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RDYXNlKCJnZXRDaGlsZE5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShnZXRDaGlsZE5v
ZGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3Qg
dGhhdCB1c2VzICVzIHRvIGZpbmQgY2hpbGQgbm9kZXMgb2YgdGhlIDxib2R5PiBlbGVtZW50IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENoaWxkTm9kZXMiKSksIHN1cHBvcnRz
OiAxfSksCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0
Q29tcHV0ZWRQcm9wZXJ0aWVzIiwgcmVtb3ZlV2hpdGVzcGFjZShnZXRDb21wdXRlZFByb3BlcnRp
ZXMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0
aGF0IHVzZXMgJXMgdG8gZmluZCBhIHZhcmlldHkgb2YgYWNjZXNzaWJpbGl0eSBpbmZvcm1hdGlv
biBhYm91dCB0aGUgPGJvZHk+IGVsZW1lbnQuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyIp
KSwgc3VwcG9ydHM6IDN9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRl
c3RDYXNlKCJnZXRDb250cm9sbGVkTm9kZXMiLCByZW1vdmVXaGl0ZXNwYWNlKGdldENvbnRyb2xs
ZWROb2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0
ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFsbCBub2RlcyBjb250cm9sbGVkIChcdTAwMjIlc1x1
MDAyMikgYnkgdGhlIDxib2R5PiBlbGVtZW50LCBpZiBhbnkgZXhpc3QuIikuZm9ybWF0KFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbnRy
b2xsZWROb2RlcyIpLCBXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1jb250cm9scyIpKSwgc3Vw
cG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJnZXRGbG93ZWROb2RlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0Rmxvd2VkTm9kZXMpLCB7ZGVz
Y3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMg
JXMgdG8gZmluZCBhbGwgbm9kZXMgZmxvd2VkIHRvIChcdTAwMjIlc1x1MDAyMikgZnJvbSB0aGUg
PGJvZHk+IGVsZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJp
bmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Rmxvd2VkTm9kZXMiKSwgV0ku
dW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtZmxvd3RvIikpLCBzdXBwb3J0czogMX0pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldE1vdXNlRXZlbnROb2Rl
IiwgcmVtb3ZlV2hpdGVzcGFjZShnZXRNb3VzZUV2ZW50Tm9kZSksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIHRo
ZSBub2RlIHRoYXQgd291bGQgaGFuZGxlIG1vdXNlIGV2ZW50cyBmb3IgdGhlIDxib2R5PiBlbGVt
ZW50LCBpZiBhcHBsaWNhYmxlLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRNb3VzZUV2ZW50Tm9kZSIpKSwgc3VwcG9ydHM6
IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRP
d25lZE5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShnZXRPd25lZE5vZGVzKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZp
bmQgYWxsIG5vZGVzIG93bmVkIChcdTAwMjIlc1x1MDAyMikgYnkgdGhlIDxib2R5PiBlbGVtZW50
LCBpZiBhbnkgZXhpc3QuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE93bmVkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJp
bmcoImFyaWEtb3ducyIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRQYXJlbnROb2RlIiwgcmVtb3ZlV2hpdGVzcGFjZShn
ZXRQYXJlbnROb2RlKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFt
cGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgdGhlIHBhcmVudCBub2RlIG9mIHRoZSA8Ym9k
eT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZvcm1hdChXSS51bmxvY2Fs
aXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRQYXJlbnROb2Rl
IikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoImdldFNlbGVjdGVkQ2hpbGROb2RlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0U2Vs
ZWN0ZWRDaGlsZE5vZGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBl
eGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYWxsIGNoaWxkIG5vZGVzIHRoYXQgYXJl
IHNlbGVjdGVkIChcdTAwMjIlc1x1MDAyMikgb2YgdGhlIDxib2R5PiBlbGVtZW50IGluIHRoZSBh
Y2Nlc3NpYmlsaXR5IHRyZWUuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFNlbGVjdGVkQ2hpbGROb2RlcyIpLCBXSS51bmxv
Y2FsaXplZFN0cmluZygiYXJpYS1zZWxlY3RlZCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRFbGVtZW50c0J5Q29tcHV0
ZWRSb2xlIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBlbGVtZW50cyB3aXRoIGEgY29tcHV0ZWQgcm9s
ZSBvZiBcdTAwMjJsaW5rXHUwMDIyLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlIikp
LCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVz
dENhc2UoImdldEFjdGl2ZURlc2NlbmRhbnQiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRB
dWRpdHMuZ2V0QWN0aXZlRGVzY2VuZGFudCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRo
aXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFueSBlbGVtZW50IHRo
YXQgbWVldHMgY3JpdGVyaWEgZm9yIGFjdGl2ZSBkZXNjZW5kYW50IChcdTAwMjIlc1x1MDAyMikg
b2YgdGhlIDxib2R5PiBlbGVtZW50LCBpZiBpdCBleGlzdHMuIikuZm9ybWF0KFdJLnVubG9jYWxp
emVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEFjdGl2ZURlc2Nl
bmRhbnQiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpKSwg
c3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RD
YXNlKCJnZXRDaGlsZE5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmdl
dENoaWxkTm9kZXMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBjaGlsZCBub2RlcyBvZiB0aGUgPGJvZHk+IGVs
ZW1lbnQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRT
dHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q2hpbGROb2RlcyIpKSwg
c3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RD
YXNlKCJnZXRDb21wdXRlZFByb3BlcnRpZXMiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRB
dWRpdHMuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
VGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYSB2YXJpZXR5IG9m
IGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxib2R5PiBlbGVtZW50LiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRDb21wdXRlZFByb3BlcnRpZXMiKSksIHN1cHBvcnRzOiAzfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29udHJvbGxlZE5vZGVzIiwgcmVt
b3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmdldENvbnRyb2xsZWROb2RlcyksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAl
cyB0byBmaW5kIGFsbCBub2RlcyBjb250cm9sbGVkIChcdTAwMjIlc1x1MDAyMikgYnkgdGhlIDxi
b2R5PiBlbGVtZW50LCBpZiBhbnkgZXhpc3QuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbnRyb2xsZWROb2RlcyIpLCBX
SS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1jb250cm9scyIpKSwgc3VwcG9ydHM6IDF9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRGbG93ZWROb2Rl
cyIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVsdEF1ZGl0cy5nZXRGbG93ZWROb2RlcyksIHtk
ZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNl
cyAlcyB0byBmaW5kIGFsbCBub2RlcyBmbG93ZWQgdG8gKFx1MDAyMiVzXHUwMDIyKSBmcm9tIHRo
ZSA8Ym9keT4gZWxlbWVudCwgaWYgYW55IGV4aXN0LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0
cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRGbG93ZWROb2RlcyIpLCBX
SS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1mbG93dG8iKSksIHN1cHBvcnRzOiAxfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0TW91c2VFdmVudE5v
ZGUiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMuZ2V0TW91c2VFdmVudE5vZGUp
LCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0
IHVzZXMgJXMgdG8gZmluZCB0aGUgbm9kZSB0aGF0IHdvdWxkIGhhbmRsZSBtb3VzZSBldmVudHMg
Zm9yIHRoZSA8Ym9keT4gZWxlbWVudCwgaWYgYXBwbGljYWJsZS4iKS5mb3JtYXQoV0kudW5sb2Nh
bGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0TW91c2VFdmVu
dE5vZGUiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgiZ2V0T3duZWROb2RlcyIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVs
dEF1ZGl0cy5nZXRPd25lZE5vZGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBp
cyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYWxsIG5vZGVzIG93bmVkIChc
dTAwMjIlc1x1MDAyMikgYnkgdGhlIDxib2R5PiBlbGVtZW50LCBpZiBhbnkgZXhpc3QuIikuZm9y
bWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldE93bmVkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtb3ducyIpKSwgc3Vw
cG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJnZXRQYXJlbnROb2RlIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmdldFBh
cmVudE5vZGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUg
dGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIDxib2R5PiBl
bGVtZW50IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIikuZm9ybWF0KFdJLnVubG9jYWxpemVk
U3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFBhcmVudE5vZGUiKSks
IHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0
Q2FzZSgiZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0
QXVkaXRzLmdldFNlbGVjdGVkQ2hpbGROb2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFsbCBjaGlsZCBu
b2RlcyB0aGF0IGFyZSBzZWxlY3RlZCAoXHUwMDIyJXNcdTAwMjIpIG9mIHRoZSA8Ym9keT4gZWxl
bWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0
cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRTZWxlY3RlZENoaWxkTm9k
ZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtc2VsZWN0ZWQiKSksIHN1cHBvcnRzOiAx
fSksCiAgICAgICAgICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRo
ZXNlIGFyZSBleGFtcGxlIHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgaG93IHRvIHVzZSAlcyB0byBn
ZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4iKS5mb3JtYXQoV0ku
dW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkiKSksIHN1
cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RHcm91cChX
SS5VSVN0cmluZygiRE9NIiksIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RDYXNlKCJoYXNFdmVudExpc3RlbmVycyIsIHJlbW92ZVdoaXRlc3BhY2UoaGFzRXZlbnRM
aXN0ZW5lcnMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUg
dGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBkYXRhIGluZGljYXRpbmcgd2hldGhlciB0aGUgPGJv
ZHk+IGVsZW1lbnQgaGFzIGFueSBldmVudCBsaXN0ZW5lcnMuIikuZm9ybWF0KFdJLnVubG9jYWxp
emVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmhhc0V2ZW50TGlzdGVu
ZXJzIikpLCBzdXBwb3J0czogM30pLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1
ZGl0VGVzdENhc2UoImhhc0V2ZW50TGlzdGVuZXJzLWNsaWNrIiwgcmVtb3ZlV2hpdGVzcGFjZSho
YXNFdmVudExpc3RlbmVyc0NsaWNrKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBp
cyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgZGF0YSBpbmRpY2F0aW5nIHdo
ZXRoZXIgdGhlIDxib2R5PiBlbGVtZW50IGhhcyBhbnkgY2xpY2sgZXZlbnQgbGlzdGVuZXJzLiIp
LmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS5oYXNFdmVudExpc3RlbmVyc0NsaWNrIikpLCBzdXBwb3J0czogM30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImhhc0V2ZW50TGlzdGVuZXJzIiwg
cmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzKSwge2Rl
c2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2Vz
ICVzIHRvIGZpbmQgZGF0YSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIDxib2R5PiBlbGVtZW50IGhh
cyBhbnkgZXZlbnQgbGlzdGVuZXJzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5oYXNFdmVudExpc3RlbmVycyIpKSwgc3VwcG9y
dHM6IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJo
YXNFdmVudExpc3RlbmVycy1jbGljayIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVsdEF1ZGl0
cy5oYXNFdmVudExpc3RlbmVyc0NsaWNrKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhp
cyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgZGF0YSBpbmRpY2F0aW5n
IHdoZXRoZXIgdGhlIDxib2R5PiBlbGVtZW50IGhhcyBhbnkgY2xpY2sgZXZlbnQgbGlzdGVuZXJz
LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5oYXNFdmVudExpc3RlbmVyc0NsaWNrIikpLCBzdXBwb3J0czogM30pLAogICAgICAg
ICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGVzZSBhcmUgZXhh
bXBsZSB0ZXN0cyB0aGF0IGRlbW9uc3RyYXRlIGhvdyB0byB1c2UgJXMgdG8gZ2V0IGluZm9ybWF0
aW9uIGFib3V0IERPTSBub2Rlcy4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYklu
c3BlY3RvckF1ZGl0LkRPTSIpKSwgc3VwcG9ydHM6IDF9KSwKICAgICAgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSwgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFJlc291cmNlcyIsIHJl
bW92ZVdoaXRlc3BhY2UoZ2V0UmVzb3VyY2VzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
VGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYmFzaWMgaW5mb3Jt
YXRpb24gYWJvdXQgZWFjaCByZXNvdXJjZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmco
IldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0UmVzb3VyY2VzIikpLCBzdXBwb3J0
czogM30pLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdl
dFJlc291cmNlQ29udGVudCIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0UmVzb3VyY2VDb250ZW50KSwg
e2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1
c2VzICVzIHRvIGZpbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBtYWluIHJlc291cmNlLiIpLmZvcm1h
dChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRSZXNvdXJjZUNvbnRlbnQiKSksIHN1cHBvcnRzOiAzfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0UmVzb3VyY2VzIiwgcmVtb3ZlV2hpdGVzcGFj
ZShXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJp
bmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGJhc2ljIGlu
Zm9ybWF0aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFJlc291cmNlcyIpKSwgc3Vw
cG9ydHM6IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJnZXRSZXNvdXJjZUNvbnRlbnQiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMu
Z2V0UmVzb3VyY2VDb250ZW50KSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBh
biBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBt
YWluIHJlc291cmNlLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRSZXNvdXJjZUNvbnRlbnQiKSksIHN1cHBvcnRzOiAzfSks
CiAgICAgICAgICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoZXNl
IGFyZSBleGFtcGxlIHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgaG93IHRvIHVzZSAlcyB0byBnZXQg
aW5mb3JtYXRpb24gYWJvdXQgbG9hZGVkIHJlc291cmNlcy4iKS5mb3JtYXQoV0kudW5sb2NhbGl6
ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LlJlc291cmNlcyIpKSwgc3VwcG9ydHM6IDJ9KSwK
ICAgICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGVzZSBhcmUg
ZXhhbXBsZSB0ZXN0cyB0aGF0IGRlbW9uc3RyYXRlIGhvdyB0byB1c2UgJXMgdG8gYWNjZXNzIGlu
Zm9ybWF0aW9uIG5vdCBub3JtYWxseSBhdmFpbGFibGUgdG8gSmF2YVNjcmlwdC4iKS5mb3JtYXQo
V0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0IikpLCBzdXBwb3J0czogMX0p
LAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ1bnN1cHBvcnRlZCIsIHJl
bW92ZVdoaXRlc3BhY2UodW5zdXBwb3J0ZWQpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJU
aGlzIGlzIGFuIGV4YW1wbGUgb2YgYSB0ZXN0IHRoYXQgd2lsbCBub3QgcnVuIGJlY2F1c2UgaXQg
aXMgdW5zdXBwb3J0ZWQuIiksIHN1cHBvcnRzOiBJbmZpbml0eX0pLAorICAgICAgICAgICAgICAg
IG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ1bnN1cHBvcnRlZCIsIHJlbW92ZVdoaXRlc3BhY2UoV0ku
RGVmYXVsdEF1ZGl0cy51bnN1cHBvcnRlZCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRo
aXMgaXMgYW4gZXhhbXBsZSBvZiBhIHRlc3QgdGhhdCB3aWxsIG5vdCBydW4gYmVjYXVzZSBpdCBp
cyB1bnN1cHBvcnRlZC4iKSwgc3VwcG9ydHM6IEluZmluaXR5fSksCiAgICAgICAgICAgICBdLCB7
ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGVzZSBhcmUgZXhhbXBsZSB0ZXN0cyB0aGF0IGRl
bW9uc3RyYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBzdHJ1Y3R1cmUgb2YgYXVkaXRzLiIpfSks
CiAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0R3JvdXAoV0kuVUlTdHJpbmcoIkFjY2Vzc2li
aWxpdHkiKSwgWwotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0TWVu
dVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0TWVudVJvbGVG
b3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRo
YXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBhbmQgXHUwMDIyJXNcdTAwMjIgaGF2
ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIiku
Zm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJtZW51IiksIFdJLnVubG9jYWxpemVkU3RyaW5n
KCJtZW51YmFyIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RDYXNlKCJ0ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVz
cGFjZSh0ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZl
IHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5m
b3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImdyaWQiKSksIHN1cHBvcnRzOiAxfSksCi0gICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JBcmlhTGFiZWxsZWRCeVNw
ZWxsaW5nIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IFx1MDAyMiVzXHUwMDIyIGlz
IHNwZWxsZWQgY29ycmVjdGx5LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1s
YWJlbGxlZGJ5IikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RDYXNlKCJ0ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0
Rm9yTXVsdGlwbGVCYW5uZXJzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRo
YXQgb25seSBvbmUgYmFubmVyIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRzOiAxfSks
Ci0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JMaW5rTGFiZWxz
IiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9yTGlua0xhYmVscyksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIkVuc3VyZSB0aGF0IGxpbmtzIGhhdmUgYWNjZXNzaWJsZSBsYWJlbHMgZm9yIGFz
c2lzdGl2ZSB0ZWNobm9sb2d5LiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Um93R3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIs
IHJlbW92ZVdoaXRlc3BhY2UodGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7
ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1
MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3
aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygicm93Z3JvdXAiKSks
IHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRl
c3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0VGFi
bGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVu
c3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBv
d25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJ0YWJsZSIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAg
ICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlTGl2ZVJlZ2lvbnMiLCByZW1v
dmVXaGl0ZXNwYWNlKHRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiRW5zdXJlIHRoYXQgb25seSBvbmUgbGl2ZSByZWdpb24gaXMgdXNlZCBvbiB0
aGUgcGFnZS4iKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0Q2FzZSgidGVzdExpc3RCb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRl
c3BhY2UodGVzdExpc3RCb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjog
V0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIg
aGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJsaXN0Ym94IikpLCBzdXBwb3J0czogMX0p
LAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0SW1hZ2VMYWJlbHMi
LCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RJbWFnZUxhYmVscyksIHtkZXNjcmlwdGlvbjogV0kuVUlT
dHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSBh
Y2Nlc3NpYmxlIGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kuIikuZm9ybWF0KFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJpbWciKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JBcmlhSGlkZGVuRmFsc2UiLCByZW1vdmVXaGl0
ZXNwYWNlKHRlc3RGb3JBcmlhSGlkZGVuRmFsc2UpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5n
KCJFbnN1cmUgYXJpYS1oaWRkZW49XHUwMDIyJXNcdTAwMjIgaXMgbm90IHVzZWQuIikuZm9ybWF0
KFdJLnVubG9jYWxpemVkU3RyaW5nKCJmYWxzZSIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdFRyZWVSb2xlRm9yUmVxdWlyZWRDaGls
ZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFRyZWVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUg
XHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNl
IHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJ0cmVlIikpLCBz
dXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0
UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0
UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJl
cXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3Jt
YXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJhZGlvZ3JvdXAiKSksIHN1cHBvcnRzOiAxfSksCi0g
ICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGZWVkUm9sZUZvclJlcXVp
cmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RGZWVkUm9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBv
ZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNj
b3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiZmVl
ZCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgidGVzdFRhYkxpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2Uo
dGVzdFRhYkxpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlT
dHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSBy
ZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9y
bWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJ0YWJsaXN0IikpLCBzdXBwb3J0czogMX0pLAotICAg
ICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0QnV0dG9uTGFiZWxzIiwgcmVt
b3ZlV2hpdGVzcGFjZSh0ZXN0QnV0dG9uTGFiZWxzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiRW5zdXJlIHRoYXQgYnV0dG9ucyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3Rp
dmUgdGVjaG5vbG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgidGVzdFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hp
dGVzcGFjZSh0ZXN0Um93Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhh
dmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIp
LmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygicm93IikpLCBzdXBwb3J0czogMX0pLAotICAg
ICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0TGlzdFJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0TGlzdFJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Yg
cm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29y
ZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImxpc3Qi
KSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
InRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZSh0
ZXN0Q29tYm9Cb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlT
dHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSBy
ZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9y
bWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJjb21ib2JveCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlTWFpbkNv
bnRlbnRTZWN0aW9ucyIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEZvck11bHRpcGxlTWFpbkNvbnRl
bnRTZWN0aW9ucyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IG9ubHkg
b25lIG1haW4gY29udGVudCBzZWN0aW9uIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRz
OiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3REaWFsb2dz
Rm9yTGFiZWxzIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0RGlhbG9nc0ZvckxhYmVscyksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGRpYWxvZ3MgaGF2ZSBhY2Nlc3NpYmxl
IGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kuIiksIHN1cHBvcnRzOiAxfSksCi0gICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JJbnZhbGlkQXJpYUhpZGRl
blZhbHVlIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IHZhbHVlcyBmb3IgXHUwMDIy
JXNcdTAwMjIgYXJlIHZhbGlkLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1o
aWRkZW4iKSksIHN1cHBvcnRzOiAxfSkKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0
Q2FzZSgidGVzdE1lbnVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2Uo
V0kuRGVmYXVsdEF1ZGl0cy50ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIl
c1x1MDAyMiBhbmQgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBp
biBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJtZW51IiksIFdJLnVubG9jYWxpemVkU3RyaW5nKCJtZW51YmFyIikpLCBzdXBwb3J0czogMX0p
LAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0R3JpZFJvbGVGb3JS
ZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLnRlc3RH
cmlkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJF
bnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQg
b3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51
bmxvY2FsaXplZFN0cmluZygiZ3JpZCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAg
ICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmciLCBy
ZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvckFyaWFMYWJlbGxlZEJ5U3Bl
bGxpbmcpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBcdTAwMjIlc1x1
MDAyMiBpcyBzcGVsbGVkIGNvcnJlY3RseS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmco
ImFyaWEtbGFiZWxsZWRieSIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcg
V0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlQmFubmVycyIsIHJlbW92ZVdoaXRlc3Bh
Y2UoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgb25seSBvbmUgYmFubmVyIGlzIHVzZWQgb24gdGhl
IHBhZ2UuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVz
dENhc2UoInRlc3RGb3JMaW5rTGFiZWxzIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVk
aXRzLnRlc3RGb3JMaW5rTGFiZWxzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJl
IHRoYXQgbGlua3MgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xv
Z3kuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENh
c2UoInRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFj
ZShXSS5EZWZhdWx0QXVkaXRzLnRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwg
e2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBc
dTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ug
d2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJvd2dyb3VwIikp
LCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0
ZXN0VGFibGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVm
YXVsdEF1ZGl0cy50ZXN0VGFibGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlv
bjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAw
MjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFS
SUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJ0YWJsZSIpKSwgc3VwcG9ydHM6IDF9
KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxl
TGl2ZVJlZ2lvbnMiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11
bHRpcGxlTGl2ZVJlZ2lvbnMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhh
dCBvbmx5IG9uZSBsaXZlIHJlZ2lvbiBpcyB1c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czog
MX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0TGlzdEJveFJv
bGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRz
LnRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUg
cmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygibGlzdGJveCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEltYWdlTGFiZWxzIiwgcmVt
b3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLnRlc3RJbWFnZUxhYmVscyksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNc
dTAwMjIgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kuIiku
Zm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJpbWciKSksIHN1cHBvcnRzOiAxfSksCisgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JBcmlhSGlkZGVuRmFsc2Ui
LCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvckFyaWFIaWRkZW5GYWxz
ZSksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSBhcmlhLWhpZGRlbj1cdTAwMjIl
c1x1MDAyMiBpcyBub3QgdXNlZC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImZhbHNl
IikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJ0ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRp
b246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUw
MDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1B
UklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygidHJlZSIpKSwgc3VwcG9ydHM6IDF9
KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdFJhZGlvR3JvdXBS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVsdEF1ZGl0
cy50ZXN0UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBo
YXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJhZGlvZ3JvdXAiKSksIHN1cHBvcnRzOiAx
fSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGZWVkUm9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMudGVz
dEZlZWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJl
ZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJmZWVkIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAg
ICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuIiwgcmVtb3ZlV2hpdGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLnRlc3RUYWJMaXN0Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhh
dCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxl
bWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXpl
ZFN0cmluZygidGFibGlzdCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcg
V0kuQXVkaXRUZXN0Q2FzZSgidGVzdEJ1dHRvbkxhYmVscyIsIHJlbW92ZVdoaXRlc3BhY2UoV0ku
RGVmYXVsdEF1ZGl0cy50ZXN0QnV0dG9uTGFiZWxzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiRW5zdXJlIHRoYXQgYnV0dG9ucyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3Rp
dmUgdGVjaG5vbG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgidGVzdFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3ZlV2hp
dGVzcGFjZShXSS5EZWZhdWx0QXVkaXRzLnRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUg
XHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNl
IHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJyb3ciKSksIHN1
cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RM
aXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRB
dWRpdHMudGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2
ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIiku
Zm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJsaXN0IikpLCBzdXBwb3J0czogMX0pLAorICAg
ICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Q29tYm9Cb3hSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Q29t
Ym9Cb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJl
ZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJjb21ib2JveCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlTWFpbkNvbnRlbnRT
ZWN0aW9ucyIsIHJlbW92ZVdoaXRlc3BhY2UoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTXVsdGlw
bGVNYWluQ29udGVudFNlY3Rpb25zKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJl
IHRoYXQgb25seSBvbmUgbWFpbiBjb250ZW50IHNlY3Rpb24gaXMgdXNlZCBvbiB0aGUgcGFnZS4i
KSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgi
dGVzdERpYWxvZ3NGb3JMYWJlbHMiLCByZW1vdmVXaGl0ZXNwYWNlKFdJLkRlZmF1bHRBdWRpdHMu
dGVzdERpYWxvZ3NGb3JMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUg
dGhhdCBkaWFsb2dzIGhhdmUgYWNjZXNzaWJsZSBsYWJlbHMgZm9yIGFzc2lzdGl2ZSB0ZWNobm9s
b2d5LiIpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RD
YXNlKCJ0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSIsIHJlbW92ZVdoaXRlc3BhY2UoV0ku
RGVmYXVsdEF1ZGl0cy50ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSksIHtkZXNjcmlwdGlv
bjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IHZhbHVlcyBmb3IgXHUwMDIyJXNcdTAwMjIgYXJl
IHZhbGlkLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1oaWRkZW4iKSksIHN1
cHBvcnRzOiAxfSkKICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkRp
YWdub3NlcyBjb21tb24gYWNjZXNzaWJpbGl0eSBwcm9ibGVtcyBhZmZlY3Rpbmcgc2NyZWVuIHJl
YWRlcnMgYW5kIG90aGVyIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiIpfSksCiAgICAgICAgIF07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA4
YTNjOTAzYTFiOWQ1YmZiNmRjZGYwYWEwYWE4M2VmYjllODE0YjNmLi40MmQxZmI2MDUzNGU4NGQ5
NTRkM2Y0OTNjZjgxZjk4MjNkZmU1OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC05MzcsNiArOTM3LDggQEAKICAgICA8c2NyaXB0IHNy
Yz0iRGVidWcvUHJvdG9jb2xUcmFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRl
YnVnL0RlYnVnQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9Ik5v
bk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9
IldlYktpdEFkZGl0aW9ucy9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSUFkZGl0aW9ucy5q
cyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05vbk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTcxNTMxY2RhYThlOTkzMDNjYzliMGQzMTI3M2QyOWExMjVhOGU0Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05v
bk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMuanMKQEAgLTAsMCArMSw2MzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXSS5EZWZhdWx0QXVkaXRzID0geworICAgIGxldmVsUGFzczogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIn07CisgICAgfSwKKyAgICBsZXZlbFdhcm46IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4ge2xldmVsOiAid2FybiJ9OworICAgIH0sCisgICAgbGV2
ZWxGYWlsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHtsZXZlbDogImZhaWwifTsKKyAg
ICB9LAorICAgIGxldmVsRXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4ge2xldmVs
OiAiZXJyb3IifTsKKyAgICB9LAorICAgIGxldmVsVW5zdXBwb3J0ZWQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4ge2xldmVsOiAidW5zdXBwb3J0ZWQifTsKKyAgICB9LAorICAgIGRhdGFE
T01Ob2RlczogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9t
Tm9kZXM6IFtkb2N1bWVudC5ib2R5XX07CisgICAgfSwKKyAgICBkYXRhRE9NQXR0cmlidXRlczog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IEFy
cmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2lkXSIpKSwgZG9tQXR0cmlidXRl
czogWyJpZCJdfTsKKyAgICB9LAorICAgIGRhdGFFcnJvcnM6IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aHJvdyBFcnJvcigidGhpcyBlcnJvciB3YXMgdGhyb3duIGZyb20gaW5zaWRlIHRoZSBhdWRp
dCB0ZXN0IGNvZGUuIik7CisgICAgfSwKKyAgICBkYXRhQ3VzdG9tOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBhOiAxLCBiOiBbMl0sIGM6IHtrZXk6IDN9fTsK
KyAgICB9LAorICAgIGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGU6IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImxpbmsiKSwgZG9tQXR0cmli
dXRlczogWyJyb2xlIl19OworICAgIH0sCisgICAgZ2V0QWN0aXZlRGVzY2VuZGFudDogZnVuY3Rp
b24oKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07CisgICAgICAgIGxl
dCBhY3RpdmVEZXNjZW5kYW50ID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRB
Y3RpdmVEZXNjZW5kYW50KGRvY3VtZW50LmJvZHkpOworICAgICAgICBpZiAoYWN0aXZlRGVzY2Vu
ZGFudCkKKyAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFthY3RpdmVEZXNjZW5kYW50XTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIGdldENoaWxkTm9kZXM6IGZ1bmN0
aW9uKCkgeworICAgICAgICBsZXQgY2hpbGROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Q2hpbGROb2Rlcyhkb2N1bWVudC5ib2R5KTsKKyAgICAgICAgcmV0dXJuIHts
ZXZlbDogInBhc3MiLCBkb21Ob2RlczogY2hpbGROb2RlcyB8fCBbXX07CisgICAgfSwKKyAgICBn
ZXRDb21wdXRlZFByb3BlcnRpZXM6IGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZG9tQXR0cmli
dXRlcyA9IFsiYWx0IiwgImFyaWEtYXRvbWljIiwgImFyaWEtYnVzeSIsICJhcmlhLWNoZWNrZWQi
LCAiYXJpYS1jdXJyZW50IiwgImFyaWEtZGlzYWJsZWQiLCAiYXJpYS1leHBhbmRlZCIsICJhcmlh
LWhhc3BvcHVwIiwgImFyaWEtaGlkZGVuIiwgImFyaWEtaW52YWxpZCIsICJhcmlhLWxhYmVsIiwg
ImFyaWEtbGFiZWxsZWRieSIsICJhcmlhLWxldmVsIiwgImFyaWEtbGl2ZSIsICJhcmlhLXByZXNz
ZWQiLCAiYXJpYS1yZWFkb25seSIsICJhcmlhLXJlbGV2YW50IiwgImFyaWEtcmVxdWlyZWQiLCAi
YXJpYS1zZWxlY3RlZCIsICJyb2xlIiwgInRpdGxlIl0uZmlsdGVyKChhdHRyaWJ1dGUpID0+IGRv
Y3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSkpOworICAgICAgICBsZXQgY29tcHV0
ZWRQcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRl
ZFByb3BlcnRpZXMoZG9jdW1lbnQuYm9keSk7CisgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNz
IiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XSwgZG9tQXR0cmlidXRlcywgLi4uKGNvbXB1dGVk
UHJvcGVydGllcyB8fCB7fSl9OworICAgIH0sCisgICAgZ2V0Q29udHJvbGxlZE5vZGVzOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgbGV0IGNvbnRyb2xsZWROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0Q29udHJvbGxlZE5vZGVzKGRvY3VtZW50LmJvZHkpOworICAgICAg
ICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBjb250cm9sbGVkTm9kZXMgfHwgW119
OworICAgIH0sCisgICAgZ2V0Rmxvd2VkTm9kZXM6IGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQg
Zmxvd2VkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEZsb3dlZE5v
ZGVzKGRvY3VtZW50LmJvZHkpOworICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5v
ZGVzOiBmbG93ZWROb2RlcyB8fCBbXX07CisgICAgfSwKKyAgICBnZXRNb3VzZUV2ZW50Tm9kZTog
ZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07CisgICAg
ICAgIGxldCBtb3VzZUV2ZW50Tm9kZSA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0TW91c2VFdmVudE5vZGUoZG9jdW1lbnQuYm9keSk7CisgICAgICAgIGlmIChtb3VzZUV2ZW50
Tm9kZSkKKyAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFttb3VzZUV2ZW50Tm9kZV07Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKyAgICBnZXRPd25lZE5vZGVzOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgbGV0IG93bmVkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldE93bmVkTm9kZXMoZG9jdW1lbnQuYm9keSk7CisgICAgICAgIHJldHVybiB7bGV2
ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IG93bmVkTm9kZXMgfHwgW119OworICAgIH0sCisgICAgZ2V0
UGFyZW50Tm9kZTogZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJw
YXNzIn07CisgICAgICAgIGxldCBwYXJlbnROb2RlID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRQYXJlbnROb2RlKGRvY3VtZW50LmJvZHkpOworICAgICAgICBpZiAocGFyZW50
Tm9kZSkKKyAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFtwYXJlbnROb2RlXTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIGdldFNlbGVjdGVkQ2hpbGROb2RlczogZnVu
Y3Rpb24oKSB7CisgICAgICAgIGxldCBzZWxlY3RlZENoaWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JB
dWRpdC5BY2Nlc3NpYmlsaXR5LmdldFNlbGVjdGVkQ2hpbGROb2Rlcyhkb2N1bWVudC5ib2R5KTsK
KyAgICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczogc2VsZWN0ZWRDaGlsZE5v
ZGVzIHx8IFtdfTsKKyAgICB9LAorICAgIGhhc0V2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgbGV0IGRvbUF0dHJpYnV0ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkuYXR0
cmlidXRlcykuZmlsdGVyKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS5uYW1lLnN0YXJ0c1dpdGgo
Im9uIikpOworICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1l
bnQuYm9keV0sIGRvbUF0dHJpYnV0ZXMsIGhhc0V2ZW50TGlzdGVuZXJzOiBXZWJJbnNwZWN0b3JB
dWRpdC5ET00uaGFzRXZlbnRMaXN0ZW5lcnMoZG9jdW1lbnQuYm9keSl9OworICAgIH0sCisgICAg
aGFzRXZlbnRMaXN0ZW5lcnNDbGljazogZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCBkb21BdHRy
aWJ1dGVzID0gWyJvbmNsaWNrIl0uZmlsdGVyKChhdHRyaWJ1dGUpID0+IGRvY3VtZW50LmJvZHku
aGFzQXR0cmlidXRlKGF0dHJpYnV0ZSkpOworICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIs
IGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRvbUF0dHJpYnV0ZXMsIGhhc0NsaWNrRXZlbnRM
aXN0ZW5lcjogV2ViSW5zcGVjdG9yQXVkaXQuRE9NLmhhc0V2ZW50TGlzdGVuZXJzKGRvY3VtZW50
LmJvZHksICJjbGljayIpfTsKKyAgICB9LAorICAgIGdldFJlc291cmNlczogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgcmVzb3VyY2VzOiBXZWJJbnNwZWN0b3JB
dWRpdC5SZXNvdXJjZXMuZ2V0UmVzb3VyY2VzKCl9OworICAgIH0sCisgICAgZ2V0UmVzb3VyY2VD
b250ZW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IHJlc291cmNlcyA9IFdlYkluc3BlY3Rv
ckF1ZGl0LlJlc291cmNlcy5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgbGV0IG1haW5SZXNvdXJj
ZSA9IHJlc291cmNlcy5maW5kKChyZXNvdXJjZSkgPT4gcmVzb3VyY2UudXJsID09PSB3aW5kb3cu
bG9jYXRpb24uaHJlZik7CisgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgbWFpblJlc291
cmNlLCByZXNvdXJjZUNvbnRlbnQ6IFdlYkluc3BlY3RvckF1ZGl0LlJlc291cmNlcy5nZXRSZXNv
dXJjZUNvbnRlbnQobWFpblJlc291cmNlLmlkKX07CisgICAgfSwKKyAgICB1bnN1cHBvcnRlZDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRocm93IEVycm9yKCJ0aGlzIHRlc3Qgc2hvdWxkIG5vdCBi
ZSBzdXBwb3J0ZWQuIik7CisgICAgfSwKKyAgICB0ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuOiBmdW5jdGlvbigpIHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAg
ICAgICAgIG1lbnU6IFsibWVudWl0ZW0iLCAibWVudWl0ZW1jaGVja2JveCIsICJtZW51aXRlbXJh
ZGlvIl0sCisgICAgICAgICAgICBtZW51YmFyOiBbIm1lbnVpdGVtIiwgIm1lbnVpdGVtY2hlY2ti
b3giLCAibWVudWl0ZW1yYWRpbyJdLAorICAgICAgICB9OworICAgICAgICBsZXQgZG9tTm9kZXMg
PSBbXTsKKyAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICAgICAgZnVu
Y3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgICAg
ICBsZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5w
YXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUu
cGFyZW50Tm9kZSk7CisKKyAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGNo
aWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVz
LnJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRo
Um9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHJvbGUg
aW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
cm9sZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5v
ZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlm
ICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNb
cm9sZV0pKQorICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVz
Lmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9s
ZSJdfTsKKyAgICB9LAorICAgIHRlc3RHcmlkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW46IGZ1bmN0
aW9uKCkgeworICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAgICAgICAgICAgZ3Jp
ZDogWyJyb3ciLCAicm93Z3JvdXAiXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVz
ID0gW107CisgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1
bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAg
ICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUu
cGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2Rl
LnBhcmVudE5vZGUpOworCisgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAg
ICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChj
aGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGll
cy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0
aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xl
IGluIHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2Yg
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xl
KHJvbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnRO
b2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBz
W3JvbGVdKSkKKyAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rl
cy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJv
bGUiXX07CisgICAgfSwKKyAgICB0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZzogZnVuY3Rp
b24oKSB7CisgICAgICAgIGxldCBkb21Ob2RlcyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiW2FyaWEtbGFiZWxlZGJ5XSIpKTsKKyAgICAgICAgcmV0dXJuIHtsZXZlbDog
ZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRl
czogWyJhcmlhLWxhYmVsZWRieSJdfTsKKyAgICB9LAorICAgIHRlc3RGb3JNdWx0aXBsZUJhbm5l
cnM6IGZ1bmN0aW9uKCkgeworICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKKyAgICAgICAgbGV0
IGJhbm5lcnMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUoImJhbm5lciIpOworICAgICAgICBpZiAoYmFubmVycy5sZW5ndGggPiAxKQor
ICAgICAgICAgICAgZG9tTm9kZXMgPSBiYW5uZXJzOworICAgICAgICByZXR1cm4ge2xldmVsOiBk
b21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVz
OiBbInJvbGUiXX07CisgICAgfSwKKyAgICB0ZXN0Rm9yTGlua0xhYmVsczogZnVuY3Rpb24oKSB7
CisgICAgICAgIGxldCBsaW5rcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgibGluayIpOworICAgICAgICBsZXQgZG9tTm9kZXMgPSBs
aW5rcy5maWx0ZXIoKGxpbmspID0+ICFXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmdl
dENvbXB1dGVkUHJvcGVydGllcyhsaW5rKS5sYWJlbCk7CisgICAgICAgIHJldHVybiB7bGV2ZWw6
IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0
ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiXX07CisgICAgfSwK
KyAgICB0ZXN0Um93R3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAgICAgICAgICByb3dncm91cDogWyJy
b3ciXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgICAgIGxl
dCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0
aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9
IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAgICAg
ICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisg
ICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICAgICAgbGV0IHByb3Bl
cnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVy
dGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUg
PT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChj
aGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZp
cnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNo
aWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMp
IHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQu
QWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJv
bGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAgICAg
ICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIg
OiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07CisgICAgfSwKKyAg
ICB0ZXN0VGFibGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbjogZnVuY3Rpb24oKSB7CisgICAgICAg
IGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAgICAgICAgICB0YWJsZTogWyJyb3ciLCAicm93
Z3JvdXAiXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgICAg
IGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxk
V2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAgICAgbGV0IGNoaWxkTm9k
ZSA9IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAg
ICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwor
CisgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICAgICAgbGV0IHBy
b3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJv
cGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5
cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2Rl
LmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9
IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hp
cHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVk
aXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0
aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAg
ICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFp
bCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07CisgICAgfSwK
KyAgICB0ZXN0Rm9yTXVsdGlwbGVMaXZlUmVnaW9uczogZnVuY3Rpb24oKSB7CisgICAgICAgIGNv
bnN0IGxpdmVSZWdpb25Sb2xlcyA9IFsiYWxlcnQiLCAibG9nIiwgInN0YXR1cyIsICJtYXJxdWVl
IiwgInRpbWVyIl07CisgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgICAgICBsZXQgbGl2
ZVJlZ2lvbnMgPSBsaXZlUmVnaW9uUm9sZXMucmVkdWNlKChhLCBiKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gYS5jb25jYXQoV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVt
ZW50c0J5Q29tcHV0ZWRSb2xlKGIpKTsKKyAgICAgICAgfSwgW10pOworICAgICAgICBsaXZlUmVn
aW9ucyA9IGxpdmVSZWdpb25zLmNvbmNhdChBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoYFthcmlhLWxpdmU9InBvbGl0ZSJdLCBbYXJpYS1saXZlPSJhc3NlcnRpdmUiXWApKSk7
CisgICAgICAgIGlmIChsaXZlUmVnaW9ucy5sZW5ndGggPiAxKQorICAgICAgICAgICAgZG9tTm9k
ZXMgPSBsaXZlUmVnaW9uczsKKyAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3Ro
ID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxpdmUi
XX07CisgICAgfSwKKyAgICB0ZXN0TGlzdEJveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAgICAgIGxp
c3Rib3g6IFsib3B0aW9uIl0sCisgICAgICAgIH07CisgICAgICAgIGxldCBkb21Ob2RlcyA9IFtd
OworICAgICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgICAgICBmdW5jdGlv
biBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgICAgIGxl
dCBjaGlsZE5vZGUgPSBub2RlOworICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVu
dE5vZGUpCisgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJl
bnROb2RlKTsKKworICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRD
b21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9s
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xl
KGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
aGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgcm9sZSBpbiBy
ZWxhdGlvbnNoaXBzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYklu
c3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xl
KSkgeworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFo
YXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xl
XSkpCisgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVu
Z3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19
OworICAgIH0sCisgICAgdGVzdEltYWdlTGFiZWxzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0
IGltYWdlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSgiaW1nIik7CisgICAgICAgIGxldCBkb21Ob2RlcyA9IGltYWdlcy5maWx0ZXIo
KGltYWdlKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFBy
b3BlcnRpZXMoaW1hZ2UpLmxhYmVsKTsKKyAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMu
bGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlh
LWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJ0aXRsZSIsICJhbHQiXX07CisgICAgfSwKKyAg
ICB0ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IGRvbU5v
ZGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW49
ImZhbHNlIl1gKSk7CisgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJ3
YXJuIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1oaWRkZW4iXX07
CisgICAgfSwKKyAgICB0ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAgICAgIHRyZWU6IFsi
dHJlZWl0ZW0iLCAiZ3JvdXAiXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVzID0g
W107CisgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1bmN0
aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAgICAg
bGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFy
ZW50Tm9kZSkKKyAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBh
cmVudE5vZGUpOworCisgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAg
ICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmdl
dENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5y
b2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJv
bGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xlIGlu
IHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJv
bGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2Rl
KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAo
IWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3Jv
bGVdKSkKKyAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5s
ZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUi
XX07CisgICAgfSwKKyAgICB0ZXN0UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAgICAg
IHJhZGlvZ3JvdXA6IFsicmFkaW8iXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVz
ID0gW107CisgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1
bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAg
ICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUu
cGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2Rl
LnBhcmVudE5vZGUpOworCisgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAg
ICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChj
aGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGll
cy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0
aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xl
IGluIHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2Yg
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xl
KHJvbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnRO
b2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBz
W3JvbGVdKSkKKyAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rl
cy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJv
bGUiXX07CisgICAgfSwKKyAgICB0ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAgICAgIGZl
ZWQ6IFsiYXJ0aWNsZSJdLAorICAgICAgICB9OworICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsK
KyAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICAgICAgZnVuY3Rpb24g
aGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgICAgICBsZXQg
Y2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnRO
b2RlKQorICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50
Tm9kZSk7CisKKyAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29t
cHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9k
ZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShj
aGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hp
bGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVs
YXRpb25zaGlwcykgeworICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghaGFz
Q2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0p
KQorICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0
aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsK
KyAgICB9LAorICAgIHRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW46IGZ1bmN0aW9u
KCkgeworICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAgICAgICAgICAgdGFibGlz
dDogWyJ0YWIiXSwKKyAgICAgICAgfTsKKyAgICAgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAg
ICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgICAgIGZ1bmN0aW9uIGhhc0No
aWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICAgICAgbGV0IGNoaWxk
Tm9kZSA9IG5vZGU7CisgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkK
KyAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUp
OworCisgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICAgICAgbGV0
IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVk
UHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9k
ZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGRO
b2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNoaWxkTm9k
ZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9u
c2hpcHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxk
V2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAg
ICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAi
ZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07CisgICAg
fSwKKyAgICB0ZXN0QnV0dG9uTGFiZWxzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IGJ1dHRv
bnMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRl
ZFJvbGUoImJ1dHRvbiIpOworICAgICAgICBsZXQgZG9tTm9kZXMgPSBidXR0b25zLmZpbHRlcigo
YnV0dG9uKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFBy
b3BlcnRpZXMoYnV0dG9uKS5sYWJlbCk7CisgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVz
Lmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJp
YS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiXX07CisgICAgfSwKKyAgICB0ZXN0
Um93Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW46IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25zdCBy
ZWxhdGlvbnNoaXBzID0geworICAgICAgICAgICAgcm93OiBbImNlbGwiLCAiZ3JpZGNlbGwiLCAi
Y29sdW1uaGVhZGVyIiwgInJvd2hlYWRlciJdLAorICAgICAgICB9OworICAgICAgICBsZXQgZG9t
Tm9kZXMgPSBbXTsKKyAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICAg
ICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAg
ICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgICAgIGlmICghY2hpbGROb2Rl
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGls
ZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2li
aWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAg
aWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGll
cykgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9w
ZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hp
bGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAobGV0
IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9k
ZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRl
ZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBh
cmVudE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9u
c2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5v
ZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB7bGV2ZWw6IGRv
bU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6
IFsicm9sZSJdfTsKKyAgICB9LAorICAgIHRlc3RMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW46
IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAgICAgICAg
ICAgbGlzdDogWyJsaXN0aXRlbSIsICJncm91cCJdLAorICAgICAgICB9OworICAgICAgICBsZXQg
ZG9tTm9kZXMgPSBbXTsKKyAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAg
ICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Cisg
ICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgICAgIGlmICghY2hpbGRO
b2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGNo
aWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChj
aGlsZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsK
KyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVy
dGllcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhw
cm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFz
Q2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAo
bGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50
Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21w
dXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFz
KHBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0
aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVu
dE5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB7bGV2ZWw6
IGRvbU5vZGVzLmxlbmd0aCA/ICJ3YXJuIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0
ZXM6IFsicm9sZSJdfTsKKyAgICB9LAorICAgIHRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENo
aWxkcmVuOiBmdW5jdGlvbigpIHsKKyAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAg
ICAgICAgICAgIGNvbWJvYm94OiBbInRleHRib3giLCAibGlzdGJveCIsICJ0cmVlIiwgImdyaWQi
LCAiZGlhbG9nIl0sCisgICAgICAgIH07CisgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAg
ICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgICAgICBmdW5jdGlvbiBoYXND
aGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgICAgIGxldCBjaGls
ZE5vZGUgPSBub2RlOworICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUp
CisgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2Rl
KTsKKworICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAgICAgIGxl
dCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRl
ZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxk
Tm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjaGlsZE5v
ZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlv
bnNoaXBzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewor
ICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFoYXNDaGls
ZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisg
ICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8g
ImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworICAg
IH0sCisgICAgdGVzdEZvck11bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9uczogZnVuY3Rpb24oKSB7
CisgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgICAgICBsZXQgbWFpbkNvbnRlbnRFbGVt
ZW50cyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1
dGVkUm9sZSgibWFpbiIpOworICAgICAgICBpZiAobWFpbkNvbnRlbnRFbGVtZW50cy5sZW5ndGgg
PiAxKSB7CisgICAgICAgICAgICBkb21Ob2RlcyA9IG1haW5Db250ZW50RWxlbWVudHM7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDog
InBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworICAgIH0sCisgICAg
dGVzdERpYWxvZ3NGb3JMYWJlbHM6IGZ1bmN0aW9uKCkgeworICAgICAgbGV0IGRpYWxvZ3MgPSBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
ImRpYWxvZyIpOworICAgICAgbGV0IGRvbU5vZGVzID0gZGlhbG9ncy5maWx0ZXIoKGRpYWxvZykg
PT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVz
KGRpYWxvZykubGFiZWwpOworICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8g
ImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsIiwg
ImFyaWEtbGFiZWxsZWRieSIsICJ0aXRsZSJdfTsKKyAgICB9LAorICAgIHRlc3RGb3JJbnZhbGlk
QXJpYUhpZGRlblZhbHVlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IGRvbU5vZGVzID0gQXJy
YXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW5dOm5vdChbYXJp
YS1oaWRkZW49InRydWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWApKTsKKyAgICAgICAgcmV0
dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2Rlcywg
ZG9tQXR0cmlidXRlczogWyJhcmlhLWhpZGRlbiJdfTsKKyAgICB9LAorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAxZTQyYjE0NTI1ZWY4
ZTNiOGY2ZWU2MWRlMTA4MjhlZTVjOGJmNjc2Li4zMTYyMWZmNTc1YTFmNDNjN2VlNmNkZjliYjNh
MzUyZDAxZDE4ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sCkBAIC0yODYsNiArMjg2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0bGlu
ZS5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iTm9uTWluaWZpZWQvRGVmYXVsdEF1
ZGl0cy5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CiAgICAgICAgIFdJLnNoYXJlZEFwcCA9IG5ldyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKICAgICAg
ICAgV0kuc2hhcmVkQXBwLmluaXRpYWxpemUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427159</attachid>
            <date>2021-04-27 10:06:44 -0700</date>
            <delta_ts>2021-04-27 15:24:49 -0700</delta_ts>
            <desc>Patch v1.1 - Added test, review notes</desc>
            <filename>bug-225009-20210427100643.patch</filename>
            <type>text/plain</type>
            <size>108656</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
OTllNDA5MWUzMzliMTZhMzIyY2U1YzcxZjM5ZDEwNWM3ODI4ODRiLi5iZGNlYzFiMDFhOTVkODdi
ZjhhNzVlZjhmMzliOTVhZWEwNWQ4MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjEtMDQtMjYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHQgQXVkaXRzIHNjcmlwdCBhcmUgbWlu
aWZpZWQgaW4gcmVsZWFzZSBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3Q6CisgICAgICAgIC0gaW5zcGVjdG9y
L2F1ZGl0L25vbi1taW5pZmllZC1kZWZhdWx0LWF1ZGl0cy5odG1sCisKKyAgICAgICAgVGhlIGRl
ZmF1bHQgYXVkaXRzIGhhdmUgYmVlbiBtb3ZlZCBvdXQgb2YgYEF1ZGl0TWFuYWdlci5qc2AgYW5k
IGludG8gYSBzcGVjaWFsIGBEZWZhdWx0QXVkaXRzLmpzYCBpbiB0aGUgbmV3CisgICAgICAgIGBO
b25NaW5pZmllZGAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBKYXZhU2NyaXB0IHNvdXJjZXMg
dGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gYE1haW4uanNgIGFuZAorICAgICAgICBgVGVzdENv
bWJpbmVkLmpzYCwgYnV0IHNob3VsZCBub3QgaGF2ZSB3aGl0ZXNwYWNlIHN0cmlwcGVkIGZyb20g
dGhlaXIgY29udGVudHMgYmVjYXVzZSB0aGUgd2hpdGVzcGFjZSBpcworICAgICAgICBpbXBvcnRh
bnQgdG8gdGhlIHNjcmlwdC4gRm9yIGV4YW1wbGUsIHRoZSBzb3VyY2UgZm9yIHRoZSBkZWZhdWx0
IGF1ZGl0cyBhcmUgdmlzaWJsZSB0byB0aGUgdXNlciwgYW5kIHRoZXJlZm9yIHdlCisgICAgICAg
IHdhbnQgdG8gcHJlc2VudCB3ZWxsLWZvcm1hdHRlZCBzb3VyY2UgaW4gdGhvc2UgY29udGV4dHMu
CisKKyAgICAgICAgKiBTY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsOgorICAgICAgICAtIEFk
ZGVkIGBOb25NaW5pZmllZGAgZGlyZWN0b3J5IHRvIGxpc3Qgb2YgZGVmYXVsdCBgaW5wdXREaXJl
Y3RvcnlQYXR0ZXJuYCBleGNlcHRpb25zIGZvciBjb21iaW5pbmcgcmVzb3VyY2VzLgorICAgICAg
ICAtIEFkZGVkIGAtLXNraXAtY29uY2F0ZW5hdGUtdGFnYCBzbyB0aGF0IHdlIGRvbid0IGFkZCB0
YWdzIGZvciBzY3JpcHQgd2Ugd2lsbCBldmVudHVhbGx5IGFwcGVuZCB0byBhbm90aGVyIHNjcmlw
dC4KKyAgICAgICAgKiBTY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsOgor
ICAgICAgICAtIEhhbmRsZSBgTm9uTWluaWZpZWRgIGRpcmVjdG9yeSBmb3Igc291cmNlcyB0aGF0
IHdpbGwgYmUgYXBwZW5kZWQgdG8gTWFpbi5qcywgYnV0IHNob3VsZCBub3QgYmUgbWluaWZpZWQu
CisgICAgICAgIC0gSGFuZGxlIGBOb25NaW5pZmllZGAgZGlyZWN0b3J5IGZvciBzb3VyY2VzIHRo
YXQgd2lsbCBiZSBhcHBlbmRlZCB0byBUZXN0Q29tYmluZWQuanMuCisgICAgICAgIChjb21iaW5l
T3JTdHJpcFJlc291cmNlc0ZvcldlYktpdEFkZGl0aW9ucyk6CisgICAgICAgIC0gRHJpdmUtYnkg
Zml4IGZvciB0eXBvIGluIGNvbWJpbmVPclN0cmlwUmVzb3VyY2VzRm9yV2ViS2l0QWRkaXRpb25z
IHRoYXQgY2F1c2VkIGVycm9ycyB0byBiZSBlbWl0dGVkIGR1cmluZyBidWlsZHMuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanM6CisgICAgICAgIChX
SS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMpOgorICAgICAgICAoV0ku
QXVkaXRNYW5hZ2VyKToKKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERl
ZmF1bHRUZXN0cy5jb25zdC5sZXZlbFBhc3MpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRN
YW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmxldmVsV2Fybik6IERlbGV0
ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMu
Y29uc3QubGV2ZWxGYWlsKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90
b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5sZXZlbEVycm9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5sZXZl
bFVuc3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5
cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhRE9NTm9kZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmRhdGFE
T01BdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5
cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhRXJyb3JzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhQ3Vz
dG9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERl
ZmF1bHRUZXN0cy5jb25zdC5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5n
ZXRBY3RpdmVEZXNjZW5kYW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5w
cm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRDaGlsZE5vZGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25z
dC5nZXRDb21wdXRlZFByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5h
Z2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldENvbnRyb2xsZWROb2Rlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0
VGVzdHMuY29uc3QuZ2V0Rmxvd2VkTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRN
YW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldE1vdXNlRXZlbnROb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1
bHRUZXN0cy5jb25zdC5nZXRPd25lZE5vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0
TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRQYXJlbnROb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRU
ZXN0cy5jb25zdC5nZXRTZWxlY3RlZENoaWxkTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAoV0ku
QXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0Lmhhc0V2ZW50TGlz
dGVuZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2Fk
ZERlZmF1bHRUZXN0cy5jb25zdC5oYXNFdmVudExpc3RlbmVyc0NsaWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5n
ZXRSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlw
ZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldFJlc291cmNlQ29udGVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3Qu
dW5zdXBwb3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlw
ZS5fYWRkRGVmYXVsdFRlc3RzLmhhc0NoaWxkV2l0aFJvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RNZW51
Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5h
Z2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RHcmlkUm9sZUZvclJlcXVp
cmVkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlw
ZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RGb3JBcmlhTGFiZWxsZWRCeVNwZWxsaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRU
ZXN0cy5jb25zdC50ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Rm9yTGlu
a0xhYmVscyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9h
ZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4p
OiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVs
dFRlc3RzLmNvbnN0LnRlc3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25z
dC50ZXN0Rm9yTXVsdGlwbGVMaXZlUmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRp
dE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdExpc3RCb3hSb2xl
Rm9yUmVxdWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIu
cHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEltYWdlTGFiZWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC50ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0
TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0VHJlZVJvbGVGb3JS
ZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90
b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUu
X2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRU
ZXN0cy5jb25zdC50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25z
dC50ZXN0QnV0dG9uTGFiZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5w
cm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Um93Um9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRk
RGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3Rz
LmNvbnN0LnRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50
ZXN0Rm9yTXVsdGlwbGVNYWluQ29udGVudFNlY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0RGlhbG9n
c0ZvckxhYmVscyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBl
Ll9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRl
c3RzLnJlbW92ZVdoaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1
ZGl0cy5qczogQWRkZWQuCisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsUGFzcyk6Cisg
ICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsV2Fybik6CisgICAgICAgIChXSS5EZWZhdWx0
QXVkaXRzLmxldmVsRmFpbCk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsRXJyb3Ip
OgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5sZXZlbFVuc3VwcG9ydGVkKToKKyAgICAgICAg
KFdJLkRlZmF1bHRBdWRpdHMuZGF0YURPTU5vZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRp
dHMuZGF0YURPTUF0dHJpYnV0ZXMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5kYXRhRXJy
b3JzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZGF0YUN1c3RvbSk6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV0ku
RGVmYXVsdEF1ZGl0cy5nZXRBY3RpdmVEZXNjZW5kYW50KToKKyAgICAgICAgKFdJLkRlZmF1bHRB
dWRpdHMuZ2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldENvbXB1
dGVkUHJvcGVydGllcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldENvbnRyb2xsZWRO
b2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldEZsb3dlZE5vZGVzKToKKyAgICAg
ICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0TW91c2VFdmVudE5vZGUpOgorICAgICAgICAoV0kuRGVm
YXVsdEF1ZGl0cy5nZXRPd25lZE5vZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0
UGFyZW50Tm9kZSk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldFNlbGVjdGVkQ2hpbGRO
b2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzKToKKyAg
ICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuaGFzRXZlbnRMaXN0ZW5lcnNDbGljayk6CisgICAgICAg
IChXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVk
aXRzLmdldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnVuc3Vw
cG9ydGVkKToKKyAgICAgICAgKGhhc0NoaWxkV2l0aFJvbGUpOgorICAgICAgICAoV0kuRGVmYXVs
dEF1ZGl0cy50ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRl
ZmF1bHRBdWRpdHMudGVzdEdyaWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JBcmlhTGFiZWxsZWRCeVNwZWxsaW5nKToKKyAgICAgICAg
KFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11bHRpcGxlQmFubmVycyk6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RGb3JMaW5rTGFiZWxzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRp
dHMudGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAgICAoV0kuRGVm
YXVsdEF1ZGl0cy50ZXN0VGFibGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zKToKKyAgICAgICAgKFdJ
LkRlZmF1bHRBdWRpdHMudGVzdExpc3RCb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAg
ICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RJbWFnZUxhYmVscyk6CisgICAgICAgIChXSS5EZWZh
dWx0QXVkaXRzLnRlc3RGb3JBcmlhSGlkZGVuRmFsc2UpOgorICAgICAgICAoV0kuRGVmYXVsdEF1
ZGl0cy50ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1
bHRBdWRpdHMudGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAg
IChXSS5EZWZhdWx0QXVkaXRzLnRlc3RGZWVkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAg
ICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVu
KToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMudGVzdEJ1dHRvbkxhYmVscyk6CisgICAgICAg
IChXSS5EZWZhdWx0QXVkaXRzLnRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAg
ICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgor
ICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Q29tYm9Cb3hSb2xlRm9yUmVxdWlyZWRDaGls
ZHJlbik6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZU1haW5Db250
ZW50U2VjdGlvbnMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0RGlhbG9nc0Zvckxh
YmVscyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JJbnZhbGlkQXJpYUhpZGRl
blZhbHVlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKwogMjAyMS0wNC0x
OSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjI2ODY5MSAmJiByMjcwMTM0KTogV2ViIEluc3BlY3RvcjogQ2xpY2tpbmcgb24gZ28tdG8g
YXJyb3cgaW4gQ29tcHV0ZWQgcGFuZWwgbm8gbG9uZ2VyIHdvcmtzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb21iaW5lLXJlc291cmNlcy5wbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsCmluZGV4IDgyNjM3ODYw
OTNlMjIzODA2MTcwMWY5MmQ1ODYyOWJiYTVkZWNmMzMuLjE4MTEzMGZlOTdkMDZmOWYzYWY2Yjg2
Mzc5ZTdlM2EzNjhiNWU5ZDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3Jp
cHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3Jp
cHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYg
cGVybAogCi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBA
IG91ciAkaHRtbERpcmVjdG9yeTsKIG91ciAkaHRtbEZpbGU7CiBvdXIgJHN0cmlwOwogb3VyICR2
ZXJib3NlOworb3VyICRza2lwQ29uY2F0ZW5hdGVUYWc7CiAKIEdldE9wdGlvbnMoJ291dHB1dC1k
aXI9cycgPT4gXCRvdXRwdXREaXJlY3RvcnksCiAgICAgICAgICAgICdvdXRwdXQtc2NyaXB0LW5h
bWU9cycgPT4gXCRvdXRwdXRTY3JpcHROYW1lLApAQCAtNDcsMTAgKzQ4LDExIEBAIEdldE9wdGlv
bnMoJ291dHB1dC1kaXI9cycgPT4gXCRvdXRwdXREaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1
dC1odG1sLWRpcj1zJyA9PiBcJGh0bWxEaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1s
PXMnID0+IFwkaHRtbEZpbGUsCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBcJHZlcmJvc2UsCi0g
ICAgICAgICAgICdzdHJpcCcgPT4gXCRzdHJpcCk7CisgICAgICAgICAgICdzdHJpcCcgPT4gXCRz
dHJpcCwKKyAgICAgICAgICAgJ3NraXAtY29uY2F0ZW5hdGUtdGFnJyA9PiBcJHNraXBDb25jYXRl
bmF0ZVRhZyk7CiAKIHVubGVzcyAoZGVmaW5lZCAkaHRtbEZpbGUgYW5kIGRlZmluZWQgJGRlcml2
ZWRTb3VyY2VzRGlyZWN0b3J5IGFuZCBkZWZpbmVkICRvdXRwdXREaXJlY3RvcnkgYW5kIChkZWZp
bmVkICRzdHJpcCBvciBkZWZpbmVkICRvdXRwdXRTY3JpcHROYW1lIG9yIGRlZmluZWQgJG91dHB1
dFN0eWxlc2hlZXROYW1lKSkgewotICAgIHByaW50ICJVc2FnZTogJDAgLS1pbnB1dC1odG1sIDxw
YXRoPiAtLWRlcml2ZWQtc291cmNlcy1kaXIgPHBhdGg+IC0tb3V0cHV0LWRpciA8cGF0aD4gWy0t
b3V0cHV0LXNjcmlwdC1uYW1lIDxuYW1lPl0gWy0tb3V0cHV0LXN0eWxlLW5hbWUgPG5hbWU+XSBb
LS1zdHJpcF1cbiI7CisgICAgcHJpbnQgIlVzYWdlOiAkMCAtLWlucHV0LWh0bWwgPHBhdGg+IC0t
ZGVyaXZlZC1zb3VyY2VzLWRpciA8cGF0aD4gLS1vdXRwdXQtZGlyIDxwYXRoPiBbLS1vdXRwdXQt
c2NyaXB0LW5hbWUgPG5hbWU+XSBbLS1vdXRwdXQtc3R5bGUtbmFtZSA8bmFtZT5dIFstLXN0cmlw
XSBbLS1za2lwLWNvbmNhdGVuYXRlLXRhZ11cbiI7CiAgICAgZXhpdDsKIH0KIApAQCAtMTE4LDE1
ICsxMjAsMTUgQEAgc3ViIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigkKQogICAg
ICRoZWFkQ29udGVudHMgPX4gcy8kd2hpdGVzcGFjZUNvbnN1bWluZ1RhZ1BhdHRlcm4vL2dpOwog
fQogCi1teSAkaW5wdXREaXJlY3RvcnlQYXR0ZXJuID0gIig/IVdlYktpdEFkZGl0aW9uc1wvKSg/
IUV4dGVybmFsXC8pKD8hV29ya2Vyc1wvKVteXCJdKiI7CitteSAkaW5wdXREaXJlY3RvcnlQYXR0
ZXJuID0gIig/IVdlYktpdEFkZGl0aW9uc1wvKSg/IUV4dGVybmFsXC8pKD8hV29ya2Vyc1wvKSg/
IU5vbk1pbmlmaWVkXC8pW15cIl0qIjsKICRpbnB1dERpcmVjdG9yeVBhdHRlcm4gPSAkaW5wdXRE
aXJlY3RvcnkgLiAiXC9bXlwiXSoiIGlmICRpbnB1dERpcmVjdG9yeTsKIAogaWYgKGRlZmluZWQo
JHN0cmlwKSkgewogICAgIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigiPGxpbmsg
cmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVybilcIj4iKTsK
ICAgICBzdHJpcEluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oIjxzY3JpcHQgc3JjPVwiKCRp
bnB1dERpcmVjdG9yeVBhdHRlcm4pXCI+PFwvc2NyaXB0PiIpOwogfSBlbHNlIHsKLSAgICBjb25j
YXRlbmF0ZUluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFN0eWxlc2hlZXROYW1l
LCAiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVy
bilcIj4iLCAiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIkb3V0cHV0U3R5bGVzaGVl
dE5hbWVcIj4iKSBpZiBkZWZpbmVkICRvdXRwdXRTdHlsZXNoZWV0TmFtZTsKLSAgICBjb25jYXRl
bmF0ZUluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFNjcmlwdE5hbWUsICI8c2Ny
aXB0IHNyYz1cIigkaW5wdXREaXJlY3RvcnlQYXR0ZXJuKVwiPjxcL3NjcmlwdD4iLCAiPHNjcmlw
dCBzcmM9XCIkb3V0cHV0U2NyaXB0TmFtZVwiPjwvc2NyaXB0PiIpIGlmIGRlZmluZWQgJG91dHB1
dFNjcmlwdE5hbWU7CisgICAgY29uY2F0ZW5hdGVJbmNsdWRlZEZpbGVzTWF0Y2hpbmdQYXR0ZXJu
KCRvdXRwdXRTdHlsZXNoZWV0TmFtZSwgIjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwi
KCRpbnB1dERpcmVjdG9yeVBhdHRlcm4pXCI+IiwgZGVmaW5lZCAkc2tpcENvbmNhdGVuYXRlVGFn
ID8gIiIgOiAiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIkb3V0cHV0U3R5bGVzaGVl
dE5hbWVcIj4iKSBpZiBkZWZpbmVkICRvdXRwdXRTdHlsZXNoZWV0TmFtZTsKKyAgICBjb25jYXRl
bmF0ZUluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFNjcmlwdE5hbWUsICI8c2Ny
aXB0IHNyYz1cIigkaW5wdXREaXJlY3RvcnlQYXR0ZXJuKVwiPjxcL3NjcmlwdD4iLCBkZWZpbmVk
ICRza2lwQ29uY2F0ZW5hdGVUYWcgPyAiIiA6ICI8c2NyaXB0IHNyYz1cIiRvdXRwdXRTY3JpcHRO
YW1lXCI+PC9zY3JpcHQ+IikgaWYgZGVmaW5lZCAkb3V0cHV0U2NyaXB0TmFtZTsKIH0KIAogJGh0
bWxDb250ZW50cyA9fiBzLzxoZWFkPi4qPFwvaGVhZD4vPGhlYWQ+JGhlYWRDb250ZW50czxcL2hl
YWQ+L3NpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11
c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0
cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbAppbmRleCBmZGJhZDM4M2IyZWZiNmMy
YmI5NTRmNzVlNWUzMTczZjNjNDYxNmU4Li5jYjE0MzcxOTQ2YTc1ZGExYThjNzEyYzljZDZhNTNm
OTBiYmQ0NmNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5
LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
U2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbApAQCAtMSw2ICsxLDYgQEAK
ICMhL3Vzci9iaW4vZW52IHBlcmwKIAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTEyLDcgKzExMiw3IEBAIHN1YiByZWFkTGljZW5zZUZpbGUoJCkKIAogbXkgJGluc3BlY3Rv
ckxpY2Vuc2UgPSA8PCdFT0YnOwogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0
IExpbGVrLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkg
QW50aG9ueSBSaWNhdWQgPHJpa0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTAgSm9zZXBoIFBlY29yYXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjM4LDcgKzIzOCw3
IEBAIHN1YiBjb21iaW5lT3JTdHJpcFJlc291cmNlc0ZvcldlYktpdEFkZGl0aW9ucygpIHsKICAg
ICAgICAgbXkgJGZvdW5kSlNGaWxlID0gMDsKICAgICAgICAgbXkgJGZvdW5kQ1NTRmlsZSA9IDA7
CiAgICAgICAgIGZvcmVhY2ggbXkgJGZpbGUgKEBmaWxlcykgewotICAgICAgICAgICAgbXkgJHBh
dGggPSBGaWxlOjpTcGVjLT5jYXRkaXIoJCR3ZWJJbnNwZWN0b3JVSUFkZGl0aW9uc0RpciwgJGZp
bGUpOworICAgICAgICAgICAgbXkgJHBhdGggPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHdlYkluc3Bl
Y3RvclVJQWRkaXRpb25zRGlyLCAkZmlsZSk7CiAgICAgICAgICAgICBuZXh0IGlmIC1kICRwYXRo
OwogICAgICAgICAgICAgaWYgKCRmaWxlID1+IC9cLmpzJC8pIHsKICAgICAgICAgICAgICAgICBk
ZWJ1Z0xvZygiRm91bmQgYSBKYXZhU2NyaXB0IGZpbGUgdG8gY29tYmluZTogJGZpbGUiKTsKQEAg
LTM0NiwxMiArMzQ2LDI5IEBAIGlmICgkc2hvdWxkQ29tYmluZU1haW4pIHsKICAgICAgICAnLS1v
dXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAogICAgICAgICctLW91dHB1dC1zY3JpcHQt
bmFtZScsICdUaHJlZS5qcycpOwogCisgICAgIyBDb21iaW5lIG5vbi1taW5pZmllZCBKYXZhU2Ny
aXB0IGZpbGVzIGluIFByb2R1Y3Rpb24gYnVpbGRzIGludG8gYSBzaW5nbGUgZmlsZSAoTm9uTWlu
aWZpZWQuanMpLCB3aGljaCB3aWxsIGJlCisgICAgIyBhcHBlbmRlZCB0byBNYWluLmpzIGFmdGVy
IE1haW4uanMgaGFzIGJlZW4gbWluaWZpZWQuCisgICAgc3lzdGVtKCRwZXJsLCAkY29tYmluZVJl
c291cmNlc0NtZCwKKyAgICAgICAnLS1pbnB1dC1kaXInLCAnTm9uTWluaWZpZWQnLAorICAgICAg
ICctLWlucHV0LWh0bWwnLCAkZGVyaXZlZFNvdXJjZXNNYWluSFRNTCwKKyAgICAgICAnLS1pbnB1
dC1odG1sLWRpcicsICR1aVJvb3QsCisgICAgICAgJy0tZGVyaXZlZC1zb3VyY2VzLWRpcicsICRk
ZXJpdmVkU291cmNlc0RpciwKKyAgICAgICAnLS1vdXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2Vz
RGlyLAorICAgICAgICctLW91dHB1dC1zY3JpcHQtbmFtZScsICdOb25NaW5pZmllZC5qcycsCisg
ICAgICAgJy0tc2tpcC1jb25jYXRlbmF0ZS10YWcnKTsKKwogICAgICMgUmVtb3ZlIGNvbnNvbGUu
YXNzZXJ0IGNhbGxzIGZyb20gdGhlIE1haW4uanMgZmlsZS4KICAgICBteSAkZGVyaXZlZFNvdXJj
ZXNNYWluSlMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNlc0RpciwgJ01haW4u
anMnKTsKICAgICBzeXN0ZW0oJHBlcmwsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHNjcmlwdHNSb290
LCAncmVtb3ZlLWNvbnNvbGUtYXNzZXJ0cy5wbCcpLAogICAgICAgICAnLS1pbnB1dC1zY3JpcHQn
LCAkZGVyaXZlZFNvdXJjZXNNYWluSlMsCiAgICAgICAgICctLW91dHB1dC1zY3JpcHQnLCAkZGVy
aXZlZFNvdXJjZXNNYWluSlMpOwogCisgICAgIyBSZW1vdmUgY29uc29sZS5hc3NlcnQgY2FsbHMg
ZnJvbSB0aGUgTm9uTWluaWZpZWQuanMgZmlsZS4KKyAgICBteSAkZGVyaXZlZFNvdXJjZXNOb25N
aW5pZmllZEpTID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNEaXIsICdOb25N
aW5pZmllZC5qcycpOworICAgIHN5c3RlbSgkcGVybCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkc2Ny
aXB0c1Jvb3QsICdyZW1vdmUtY29uc29sZS1hc3NlcnRzLnBsJyksCisgICAgICAgICctLWlucHV0
LXNjcmlwdCcsICRkZXJpdmVkU291cmNlc05vbk1pbmlmaWVkSlMsCisgICAgICAgICctLW91dHB1
dC1zY3JpcHQnLCAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmllZEpTKTsKKwogICAgICMgRml4IElt
YWdlIFVSTHMgaW4gdGhlIE1haW4uY3NzIGZpbGUgYnkgcmVtb3ZpbmcgdGhlICIuLi8iLgogICAg
IG15ICRkZXJpdmVkU291cmNlc01haW5DU1MgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVk
U291cmNlc0RpciwgJ01haW4uY3NzJyk7CiAgICAgaWYgKG9wZW4oSU5QVVRfTUFJTiwgJzwnLCAk
ZGVyaXZlZFNvdXJjZXNNYWluQ1NTKSkgewpAQCAtNDA2LDYgKzQyMyw5IEBAIGlmICgkc2hvdWxk
Q29tYmluZU1haW4pIHsKICAgICBteSAkZGVyaXZlZFNvdXJjZXNUaHJlZWpzSlMgPSBGaWxlOjpT
cGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNlc0RpciwgJ1RocmVlLmpzJyk7CiAgICAgc3lzdGVt
KHFxKCIkcHl0aG9uIiAiJGpzTWluU2NyaXB0IiA8ICIkZGVyaXZlZFNvdXJjZXNUaHJlZWpzSlMi
ID4+ICIkdGFyZ2V0VGhyZWVqc0pTIikpIGFuZCBkaWUgIkZhaWxlZCB0byBtaW5pZnkgJGRlcml2
ZWRTb3VyY2VzVGhyZWVqc0pTOiAkISI7CiAKKyAgICAjIEFwcGVuZCBub24tbWluaWZpZWQgSmF2
YVNjcmlwdCB0byBNYWluLmpzLgorICAgIGFwcGVuZEZpbGUoJHRhcmdldE1haW5KUywgJGRlcml2
ZWRTb3VyY2VzTm9uTWluaWZpZWRKUyk7CisKICAgICAjIENvcHkgb3ZlciB0aGUgSW1hZ2VzIGRp
cmVjdG9yeS4KICAgICBkaXR0byhGaWxlOjpTcGVjLT5jYXRkaXIoJHVpUm9vdCwgJ0ltYWdlcycp
LCBGaWxlOjpTcGVjLT5jYXRkaXIoJHRhcmdldFJlc291cmNlUGF0aCwgJ0ltYWdlcycpKTsKIApA
QCAtNDQzLDYgKzQ2MywxOSBAQCBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAKICAgICBteSAk
ZGVyaXZlZFNvdXJjZXNUZXN0SFRNTCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3Vy
Y2VzRGlyLCAnVGVzdC5odG1sJyk7CiAgICAgbXkgJGRlcml2ZWRTb3VyY2VzVGVzdEpTID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNEaXIsICdUZXN0Q29tYmluZWQuanMnKTsK
KworICAgICMgQ29tYmluZSBub24tbWluaWZpZWQgSmF2YVNjcmlwdCBmaWxlcyBpbiBQcm9kdWN0
aW9uIGJ1aWxkcyBpbnRvIHRoZSBzYW1lIFRlc3RDb21iaW5lZC5qcywgYmVjYXVzZSB0ZXN0IGZp
bGVzIGFyZSBub3QgbWluaWZpZWQuCisgICAgc3lzdGVtKCRwZXJsLCAkY29tYmluZVJlc291cmNl
c0NtZCwKKyAgICAgICAnLS1pbnB1dC1kaXInLCAnTm9uTWluaWZpZWQnLAorICAgICAgICctLWlu
cHV0LWh0bWwnLCAkZGVyaXZlZFNvdXJjZXNUZXN0SFRNTCwKKyAgICAgICAnLS1pbnB1dC1odG1s
LWRpcicsICR1aVJvb3QsCisgICAgICAgJy0tZGVyaXZlZC1zb3VyY2VzLWRpcicsICRkZXJpdmVk
U291cmNlc0RpciwKKyAgICAgICAnLS1vdXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAor
ICAgICAgICctLW91dHB1dC1zY3JpcHQtbmFtZScsICdOb25NaW5pZmllZFRlc3RDb21iaW5lZC5q
cycsCisgICAgICAgJy0tc2tpcC1jb25jYXRlbmF0ZS10YWcnKTsKKworICAgIG15ICRkZXJpdmVk
U291cmNlc05vbk1pbmlmaWVkVGVzdEpTID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNv
dXJjZXNEaXIsICdOb25NaW5pZmllZFRlc3RDb21iaW5lZC5qcycpOworCiAgICAgIyBDb21iaW5l
IHRoZSBDb2RlTWlycm9yIEphdmFTY3JpcHQgZmlsZXMgaW50byBzaW5nbGUgZmlsZSAoVGVzdENv
ZGVNaXJyb3IuanMpLgogICAgIHN5c3RlbSgkcGVybCwgJGNvbWJpbmVSZXNvdXJjZXNDbWQsCiAg
ICAgICAgICctLWlucHV0LWRpcicsICdFeHRlcm5hbC9Db2RlTWlycm9yJywKQEAgLTQ3Niw2ICs1
MDksOSBAQCBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAgICAgIyBBcHBlbmQgVGVzdENvbWJp
bmVkLmpzIHRvIHRoZSBsaWNlbnNlIHRoYXQgd2FzIGV4cG9ydGVkIGFib3ZlLgogICAgIGFwcGVu
ZEZpbGUoJHRhcmdldFRlc3RKUywgJGRlcml2ZWRTb3VyY2VzVGVzdEpTKTsKIAorICAgICMgQXBw
ZW5kIHRoZSBub24tbWluaWZpZWQgc291cmNlcyB0byBUZXN0Q29tYmluZWQuanMuCisgICAgYXBw
ZW5kRmlsZSgkdGFyZ2V0VGVzdEpTLCAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmllZFRlc3RKUyk7
CisKICAgICAjIEFwcGVuZCBDb2RlTWlycm9yLmpzIHRvIHRoZSBsaWNlbnNlIHRoYXQgd2FzIGV4
cG9ydGVkIGFib3ZlLgogICAgIG15ICRkZXJpdmVkU291cmNlc0NvZGVNaXJyb3JKUyA9IEZpbGU6
OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnVGVzdENvZGVNaXJyb3IuanMnKTsK
ICAgICBhcHBlbmRGaWxlKCR0YXJnZXRDb2RlTWlycm9ySlMsICRkZXJpdmVkU291cmNlc0NvZGVN
aXJyb3JKUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMKaW5kZXggYmY1MDJkYmNmZjNk
YzIwYjIwYTkxYWRlZWNhNDI4OGM2MWEyNWUyZS4uNGEwNDEzOTUxMGUzY2I5ZmIxNTdiZTdmZWFm
MzE1YTY5NDg4ODBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0F1ZGl0TWFuYWdlci5qcwpAQCAtMzM5LDcy
OCArMzM5LDcyIEBAIFdJLkF1ZGl0TWFuYWdlciA9IGNsYXNzIEF1ZGl0TWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgX2FkZERlZmF1bHRUZXN0cygpCiAgICAgewotICAgICAgICBjb25z
dCBsZXZlbFBhc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJw
YXNzIn07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgbGV2ZWxXYXJuID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAid2FybiJ9OwotICAgICAgICB9OwotCi0g
ICAgICAgIGNvbnN0IGxldmVsRmFpbCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJu
IHtsZXZlbDogImZhaWwifTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBsZXZlbEVycm9y
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAiZXJyb3IifTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBjb25zdCBsZXZlbFVuc3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAidW5zdXBwb3J0ZWQifTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCBkYXRhRE9NTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XX07Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgY29uc3QgZGF0YURPTUF0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IEFycmF5LmZyb20o
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2lkXSIpKSwgZG9tQXR0cmlidXRlczogWyJpZCJd
fTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBkYXRhRXJyb3JzID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICB0aHJvdyBFcnJvcigidGhpcyBlcnJvciB3YXMgdGhyb3duIGZyb20gaW5z
aWRlIHRoZSBhdWRpdCB0ZXN0IGNvZGUuIik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3Qg
ZGF0YUN1c3RvbSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBh
c3MiLCBhOiAxLCBiOiBbMl0sIGM6IHtrZXk6IDN9fTsKLSAgICAgICAgfTsKLQotICAgICAgICBj
b25zdCBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImxpbmsiKSwgZG9tQXR0cmlidXRl
czogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdldEFjdGl2ZURlc2Nl
bmRhbnQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJw
YXNzIn07Ci0gICAgICAgICAgICBsZXQgYWN0aXZlRGVzY2VuZGFudCA9IFdlYkluc3BlY3RvckF1
ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0QWN0aXZlRGVzY2VuZGFudChkb2N1bWVudC5ib2R5KTsKLSAg
ICAgICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50KQotICAgICAgICAgICAgICAgIHJlc3VsdC5k
b21Ob2RlcyA9IFthY3RpdmVEZXNjZW5kYW50XTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Q2hpbGROb2RlcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldENoaWxkTm9kZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAgICAgICByZXR1cm4g
e2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBjaGlsZE5vZGVzIHx8IFtdfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCBnZXRDb21wdXRlZFByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGxldCBkb21BdHRyaWJ1dGVzID0gWyJhbHQiLCAiYXJpYS1hdG9taWMiLCAiYXJp
YS1idXN5IiwgImFyaWEtY2hlY2tlZCIsICJhcmlhLWN1cnJlbnQiLCAiYXJpYS1kaXNhYmxlZCIs
ICJhcmlhLWV4cGFuZGVkIiwgImFyaWEtaGFzcG9wdXAiLCAiYXJpYS1oaWRkZW4iLCAiYXJpYS1p
bnZhbGlkIiwgImFyaWEtbGFiZWwiLCAiYXJpYS1sYWJlbGxlZGJ5IiwgImFyaWEtbGV2ZWwiLCAi
YXJpYS1saXZlIiwgImFyaWEtcHJlc3NlZCIsICJhcmlhLXJlYWRvbmx5IiwgImFyaWEtcmVsZXZh
bnQiLCAiYXJpYS1yZXF1aXJlZCIsICJhcmlhLXNlbGVjdGVkIiwgInJvbGUiLCAidGl0bGUiXS5m
aWx0ZXIoKGF0dHJpYnV0ZSkgPT4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRl
KSk7Ci0gICAgICAgICAgICBsZXQgY29tcHV0ZWRQcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVk
aXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoZG9jdW1lbnQuYm9keSk7Ci0g
ICAgICAgICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9k
eV0sIGRvbUF0dHJpYnV0ZXMsIC4uLihjb21wdXRlZFByb3BlcnRpZXMgfHwge30pfTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBjb25zdCBnZXRDb250cm9sbGVkTm9kZXMgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGxldCBjb250cm9sbGVkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldENvbnRyb2xsZWROb2Rlcyhkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgICAg
IHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IGNvbnRyb2xsZWROb2RlcyB8fCBbXX07
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Rmxvd2VkTm9kZXMgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGxldCBmbG93ZWROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Rmxvd2VkTm9kZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAgICAgICByZXR1
cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBmbG93ZWROb2RlcyB8fCBbXX07Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgY29uc3QgZ2V0TW91c2VFdmVudE5vZGUgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07Ci0gICAgICAgICAgICBsZXQg
bW91c2VFdmVudE5vZGUgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE1vdXNl
RXZlbnROb2RlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAgICAgaWYgKG1vdXNlRXZlbnROb2Rl
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFttb3VzZUV2ZW50Tm9kZV07Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdl
dE93bmVkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBvd25lZE5vZGVzID0g
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRPd25lZE5vZGVzKGRvY3VtZW50LmJv
ZHkpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczogb3duZWRO
b2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0UGFyZW50Tm9kZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHtsZXZlbDogInBhc3MifTsK
LSAgICAgICAgICAgIGxldCBwYXJlbnROb2RlID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS5nZXRQYXJlbnROb2RlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAgICAgaWYgKHBhcmVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmRvbU5vZGVzID0gW3BhcmVudE5vZGVdOwot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBn
ZXRTZWxlY3RlZENoaWxkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBzZWxl
Y3RlZENoaWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFNlbGVj
dGVkQ2hpbGROb2Rlcyhkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6
ICJwYXNzIiwgZG9tTm9kZXM6IHNlbGVjdGVkQ2hpbGROb2RlcyB8fCBbXX07Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGxldCBkb21BdHRyaWJ1dGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmF0dHJp
YnV0ZXMpLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUubmFtZS5zdGFydHNXaXRoKCJv
biIpKTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1
bWVudC5ib2R5XSwgZG9tQXR0cmlidXRlcywgaGFzRXZlbnRMaXN0ZW5lcnM6IFdlYkluc3BlY3Rv
ckF1ZGl0LkRPTS5oYXNFdmVudExpc3RlbmVycyhkb2N1bWVudC5ib2R5KX07Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnNDbGljayA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgbGV0IGRvbUF0dHJpYnV0ZXMgPSBbIm9uY2xpY2siXS5maWx0ZXIoKGF0dHJp
YnV0ZSkgPT4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSk7Ci0gICAgICAg
ICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRv
bUF0dHJpYnV0ZXMsIGhhc0NsaWNrRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yQXVkaXQuRE9N
Lmhhc0V2ZW50TGlzdGVuZXJzKGRvY3VtZW50LmJvZHksICJjbGljayIpfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCBnZXRSZXNvdXJjZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgcmVzb3VyY2VzOiBXZWJJbnNwZWN0b3JBdWRpdC5SZXNv
dXJjZXMuZ2V0UmVzb3VyY2VzKCl9OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdldFJl
c291cmNlQ29udGVudCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IHJlc291cmNlcyA9
IFdlYkluc3BlY3RvckF1ZGl0LlJlc291cmNlcy5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgICAg
IGxldCBtYWluUmVzb3VyY2UgPSByZXNvdXJjZXMuZmluZCgocmVzb3VyY2UpID0+IHJlc291cmNl
LnVybCA9PT0gd2luZG93LmxvY2F0aW9uLmhyZWYpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZl
bDogInBhc3MiLCBtYWluUmVzb3VyY2UsIHJlc291cmNlQ29udGVudDogV2ViSW5zcGVjdG9yQXVk
aXQuUmVzb3VyY2VzLmdldFJlc291cmNlQ29udGVudChtYWluUmVzb3VyY2UuaWQpfTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBjb25zdCB1bnN1cHBvcnRlZCA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdGhyb3cgRXJyb3IoInRoaXMgdGVzdCBzaG91bGQgbm90IGJlIHN1cHBvcnRlZC4iKTsK
LSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewot
ICAgICAgICAgICAgICAgIG1lbnU6IFsibWVudWl0ZW0iLCAibWVudWl0ZW1jaGVja2JveCIsICJt
ZW51aXRlbXJhZGlvIl0sCi0gICAgICAgICAgICAgICAgbWVudWJhcjogWyJtZW51aXRlbSIsICJt
ZW51aXRlbWNoZWNrYm94IiwgIm1lbnVpdGVtcmFkaW8iXSwKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50
cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUs
IGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsK
LSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQot
ICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5v
ZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHBy
b3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2Rlcygp
ICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0
U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNo
aXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAg
IGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hp
cHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnRO
b2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBk
b21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVz
dEdyaWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
Y29uc3QgcmVsYXRpb25zaGlwcyA9IHsKLSAgICAgICAgICAgICAgICBncmlkOiBbInJvdyIsICJy
b3dncm91cCJdLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtd
OwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKLSAgICAgICAgICAg
IGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgewotICAgICAg
ICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgIGlmICghY2hp
bGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0
ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0KLSAgICAgICAgICAgICAgICB3
aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0g
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hp
bGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0g
Tm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGls
ZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKLSAgICAgICAgICAgICAgICBm
b3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBh
cmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0
aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsK
LSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGlu
ZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJvbShk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1sYWJlbGVkYnldIikpOwotICAgICAgICAg
ICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21O
b2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsZWRieSJdfTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBjb25zdCB0ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCBiYW5uZXJzID0gV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJi
YW5uZXIiKTsKLSAgICAgICAgICAgIGlmIChiYW5uZXJzLmxlbmd0aCA+IDEpCi0gICAgICAgICAg
ICAgICAgZG9tTm9kZXMgPSBiYW5uZXJzOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGb3JMaW5rTGFiZWxz
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgbGlua3MgPSBXZWJJbnNwZWN0b3JBdWRp
dC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImxpbmsiKTsKLSAgICAg
ICAgICAgIGxldCBkb21Ob2RlcyA9IGxpbmtzLmZpbHRlcigobGluaykgPT4gIVdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGxpbmspLmxhYmVsKTsK
LSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJw
YXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVs
bGVkYnkiLCAidGl0bGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdFJvd0dy
b3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNv
bnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgcm93Z3JvdXA6IFsicm93Il0s
Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAg
ICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAgZnVuY3Rpb24g
aGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGNoaWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChj
aGlsZE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMu
YWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChjaGls
ZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1F
TlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhw
ZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hp
bGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJz
dENoaWxkLCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjaGls
ZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAo
bGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IHBh
cmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5
Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFy
ZW50cy5oYXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5m
aXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwi
IDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9
OwotCi0gICAgICAgIGNvbnN0IHRlc3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAg
ICAgICAgIHRhYmxlOiBbInJvdyIsICJyb3dncm91cCJdLAotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRz
ID0gbmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwg
ZXhwZWN0ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwot
ICAgICAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0g
ICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9k
ZSk7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJv
cGVydGllcy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkg
JiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRT
aWJsaW5nOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hp
cHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlw
c1tyb2xlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5v
ZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRv
bUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0
Rm9yTXVsdGlwbGVMaXZlUmVnaW9ucyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc3Qg
bGl2ZVJlZ2lvblJvbGVzID0gWyJhbGVydCIsICJsb2ciLCAic3RhdHVzIiwgIm1hcnF1ZWUiLCAi
dGltZXIiXTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0
IGxpdmVSZWdpb25zID0gbGl2ZVJlZ2lvblJvbGVzLnJlZHVjZSgoYSwgYikgPT4gewotICAgICAg
ICAgICAgICAgIHJldHVybiBhLmNvbmNhdChXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoYikpOwotICAgICAgICAgICAgfSwgW10pOwotICAg
ICAgICAgICAgbGl2ZVJlZ2lvbnMgPSBsaXZlUmVnaW9ucy5jb25jYXQoQXJyYXkuZnJvbShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1saXZlPSJwb2xpdGUiXSwgW2FyaWEtbGl2ZT0i
YXNzZXJ0aXZlIl1gKSkpOwotICAgICAgICAgICAgaWYgKGxpdmVSZWdpb25zLmxlbmd0aCA+IDEp
Ci0gICAgICAgICAgICAgICAgZG9tTm9kZXMgPSBsaXZlUmVnaW9uczsKLSAgICAgICAgICAgIHJl
dHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJ3YXJuIiA6ICJwYXNzIiwgZG9tTm9kZXMs
IGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1saXZlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNv
bnN0IHRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgbGlzdGJv
eDogWyJvcHRpb24iXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMg
PSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAg
ICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAg
ICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2
aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAg
ICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGll
cyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVz
KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUg
PT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUo
Y2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAg
ICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9s
ZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5s
ZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUi
XX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEltYWdlTGFiZWxzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBsZXQgaW1hZ2VzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJpbWciKTsKLSAgICAgICAgICAgIGxl
dCBkb21Ob2RlcyA9IGltYWdlcy5maWx0ZXIoKGltYWdlKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQu
QWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoaW1hZ2UpLmxhYmVsKTsKLSAgICAg
ICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwg
ZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnki
LCAidGl0bGUiLCAiYWx0Il19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGb3JB
cmlhSGlkZGVuRmFsc2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9
IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2FyaWEtaGlkZGVuPSJmYWxz
ZSJdYCkpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gIndh
cm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWhpZGRlbiJdfTsK
LSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewot
ICAgICAgICAgICAgICAgIHRyZWU6IFsidHJlZWl0ZW0iLCAiZ3JvdXAiXSwKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNp
dGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhS
b2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2Rl
ID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJl
bnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2Rl
LnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAg
ICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHBy
b3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmlu
Y2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hp
bGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVj
dGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiBy
ZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
cm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJl
bnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJl
bGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVz
aChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRv
bU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Y29uc3QgdGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKLSAgICAgICAgICAgICAgICBy
YWRpb2dyb3VwOiBbInJhZGlvIl0sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRv
bU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0Owot
ICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVz
KSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAg
ICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHBy
b3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJv
cGVydGllcyhjaGlsZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdp
dGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAg
ICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxk
V2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGZWVkUm9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9u
c2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgZmVlZDogWyJhcnRpY2xlIl0sCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgdmlz
aXRlZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRo
Um9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9k
ZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFy
ZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9k
ZS5wYXJlbnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBw
cm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5p
bmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0No
aWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBl
Y3RlZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGls
ZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4g
cmVsYXRpb25zaGlwcykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2Yg
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xl
KHJvbGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFy
ZW50Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCBy
ZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1
c2gocGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBk
b21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAg
IGNvbnN0IHRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgdGFi
bGlzdDogWyJ0YWIiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMg
PSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAg
ICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAg
ICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2
aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAg
ICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGll
cyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVz
KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUg
PT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUo
Y2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAg
ICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9s
ZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5s
ZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUi
XX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEJ1dHRvbkxhYmVscyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgbGV0IGJ1dHRvbnMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImJ1dHRvbiIpOwotICAgICAgICAg
ICAgbGV0IGRvbU5vZGVzID0gYnV0dG9ucy5maWx0ZXIoKGJ1dHRvbikgPT4gIVdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGJ1dHRvbikubGFiZWwp
OwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDog
InBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsIiwgImFyaWEtbGFi
ZWxsZWRieSIsICJ0aXRsZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Um93
Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0
IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgcm93OiBbImNlbGwiLCAiZ3JpZGNl
bGwiLCAiY29sdW1uaGVhZGVyIiwgInJvd2hlYWRlciJdLAotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRz
ID0gbmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwg
ZXhwZWN0ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwot
ICAgICAgICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0g
ICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9k
ZSk7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJv
cGVydGllcy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkg
JiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRT
aWJsaW5nOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hp
cHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlw
c1tyb2xlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5v
ZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRv
bUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0
TGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBj
b25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAgICAgIGxpc3Q6IFsibGlzdGl0ZW0i
LCAiZ3JvdXAiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBb
XTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAg
ICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAg
ICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNo
aWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNp
dGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAg
d2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9
IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNo
aWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09
IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hp
bGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShw
YXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5n
dGggPyAid2FybiIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdENvbWJvQm94Um9sZUZvclJlcXVpcmVk
Q2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMg
PSB7Ci0gICAgICAgICAgICAgICAgY29tYm9ib3g6IFsidGV4dGJveCIsICJsaXN0Ym94IiwgInRy
ZWUiLCAiZ3JpZCIsICJkaWFsb2ciXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQg
ZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7
Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9s
ZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAg
ICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAg
ICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQg
cHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQ
cm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUu
bm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9s
ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxk
V2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hp
bGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBk
b21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVz
OiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEZvck11bHRpcGxl
TWFpbkNvbnRlbnRTZWN0aW9ucyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5v
ZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgbWFpbkNvbnRlbnRFbGVtZW50cyA9IFdlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgibWFpbiIp
OwotICAgICAgICAgICAgaWYgKG1haW5Db250ZW50RWxlbWVudHMubGVuZ3RoID4gMSkgewotICAg
ICAgICAgICAgICAgIGRvbU5vZGVzID0gbWFpbkNvbnRlbnRFbGVtZW50czsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCB0ZXN0RGlhbG9nc0ZvckxhYmVscyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgIGxldCBkaWFsb2dzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRF
bGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJkaWFsb2ciKTsKLSAgICAgICAgICBsZXQgZG9tTm9kZXMg
PSBkaWFsb2dzLmZpbHRlcigoZGlhbG9nKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoZGlhbG9nKS5sYWJlbCk7Ci0gICAgICAgICAgcmV0
dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2Rlcywg
ZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJ0aXRsZSJd
fTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5W
YWx1ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJv
bShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW5dOm5vdChbYXJpYS1oaWRk
ZW49InRydWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWApKTsKLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRv
bUF0dHJpYnV0ZXM6IFsiYXJpYS1oaWRkZW4iXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVu
Y3Rpb24gcmVtb3ZlV2hpdGVzcGFjZShmdW5jKSB7Ci0gICAgICAgICAgICByZXR1cm4gV0kuQXVk
aXRUZXN0Q2FzZS5zdHJpbmdpZnlGdW5jdGlvbihmdW5jLCA4KTsKLSAgICAgICAgfQorICAgICAg
ICBjb25zb2xlLmFzc2VydChXSS5EZWZhdWx0QXVkaXRzLCAiRGVmYXVsdCBhdWRpdHMgbm90IGxv
YWRlZC4iKTsKKyAgICAgICAgaWYgKCFXSS5EZWZhdWx0QXVkaXRzKQorICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGNvbnN0IGRlZmF1bHRUZXN0cyA9IFsKICAgICAgICAgICAgIG5ldyBX
SS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiRGVtbyBBdWRpdCIpLCBbCiAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJSZXN1bHQgTGV2ZWxzIiks
IFsKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLXBhc3Mi
LCByZW1vdmVXaGl0ZXNwYWNlKGxldmVsUGFzcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgd2hhdCB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyB0ZXN0IHdpdGggbm8gZGF0YSBs
b29rcyBsaWtlLiIpfSksCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJsZXZlbC13YXJuIiwgcmVtb3ZlV2hpdGVzcGFjZShsZXZlbFdhcm4pLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJUaGlzIGlzIHdoYXQgdGhlIHJlc3VsdCBvZiBhIHdhcm5pbmcgdGVzdCB3
aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAotICAgICAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgibGV2ZWwtZmFpbCIsIHJlbW92ZVdoaXRlc3BhY2UobGV2ZWxGYWlsKSwg
e2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSBm
YWlsaW5nIHRlc3Qgd2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKLSAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLWVycm9yIiwgcmVtb3ZlV2hpdGVzcGFj
ZShsZXZlbEVycm9yKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRo
ZSByZXN1bHQgb2YgYSB0ZXN0IHRoYXQgdGhyZXcgYW4gZXJyb3Igd2l0aCBubyBkYXRhIGxvb2tz
IGxpa2UuIil9KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImxl
dmVsLXVuc3VwcG9ydGVkIiwgcmVtb3ZlV2hpdGVzcGFjZShsZXZlbFVuc3VwcG9ydGVkKSwge2Rl
c2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYW4gdW5z
dXBwb3J0ZWQgdGVzdCB3aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAorICAgICAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgibGV2ZWwtcGFzcyIsIFdJLkRlZmF1bHRBdWRp
dHMubGV2ZWxQYXNzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMg
aXMgd2hhdCB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBs
aWtlLiIpfSksCisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZl
bC13YXJuIiwgV0kuRGVmYXVsdEF1ZGl0cy5sZXZlbFdhcm4udG9TdHJpbmcoKSwge2Rlc2NyaXB0
aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSB3YXJuaW5nIHRl
c3Qgd2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3
IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLWZhaWwiLCBXSS5EZWZhdWx0QXVkaXRzLmxldmVsRmFp
bC50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIHdoYXQgdGhl
IHJlc3VsdCBvZiBhIGZhaWxpbmcgdGVzdCB3aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAor
ICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgibGV2ZWwtZXJyb3IiLCBX
SS5EZWZhdWx0QXVkaXRzLmxldmVsRXJyb3IudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSB0ZXN0IHRoYXQgdGhyZXcgYW4g
ZXJyb3Igd2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKKyAgICAgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLXVuc3VwcG9ydGVkIiwgV0kuRGVmYXVsdEF1ZGl0
cy5sZXZlbFVuc3VwcG9ydGVkLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgd2hhdCB0aGUgcmVzdWx0IG9mIGFuIHVuc3VwcG9ydGVkIHRlc3Qgd2l0aCBubyBk
YXRhIGxvb2tzIGxpa2UuIil9KSwKICAgICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGVzZSBhcmUgYWxsIG9mIHRoZSBkaWZmZXJlbnQgdGVzdCByZXN1bHQgbGV2
ZWxzLiIpfSksCiAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3Ry
aW5nKCJSZXN1bHQgRGF0YSIpLCBbCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRl
c3RDYXNlKCJkYXRhLWRvbU5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShkYXRhRE9NTm9kZXMpLCB7
ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHJlc3Vs
dCBET00gbm9kZXMgYXJlIHNob3duLiBJdCB3aWxsIHBhc3Mgd2l0aCB0aGUgPGJvZHk+IGVsZW1l
bnQuIil9KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImRhdGEt
ZG9tQXR0cmlidXRlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZGF0YURPTUF0dHJpYnV0ZXMpLCB7ZGVz
Y3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHJlc3VsdCBE
T00gYXR0cmlidXRlcyBhcmUgaGlnaGxpZ2h0ZWQgb24gYW55IHJldHVybmVkIERPTSBub2Rlcy4g
SXQgd2lsbCBwYXNzIHdpdGggYWxsIGVsZW1lbnRzIHdpdGggYW4gaWQgYXR0cmlidXRlLiIpfSks
Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJkYXRhLWVycm9ycyIs
IHJlbW92ZVdoaXRlc3BhY2UoZGF0YUVycm9ycyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgYW4gZXhhbXBsZSBvZiBob3cgZXJyb3JzIGFyZSBzaG93bi4gVGhlIGVycm9yIHdh
cyB0aHJvd24gbWFudWFsbHksIGJ1dCBleGVjdXRpb24gZXJyb3JzIHdpbGwgYXBwZWFyIGluIHRo
ZSBzYW1lIHdheS4iKX0pLAotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgiZGF0YS1jdXN0b20iLCByZW1vdmVXaGl0ZXNwYWNlKGRhdGFDdXN0b20pLCB7ZGVzY3JpcHRp
b246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IGN1c3RvbSByZXN1bHQg
ZGF0YSBpcyBzaG93bi4iKSwgc3VwcG9ydHM6IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3
IFdJLkF1ZGl0VGVzdENhc2UoImRhdGEtZG9tTm9kZXMiLCBXSS5EZWZhdWx0QXVkaXRzLmRhdGFE
T01Ob2Rlcy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFu
IGV4YW1wbGUgb2YgaG93IHJlc3VsdCBET00gbm9kZXMgYXJlIHNob3duLiBJdCB3aWxsIHBhc3Mg
d2l0aCB0aGUgPGJvZHk+IGVsZW1lbnQuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoImRhdGEtZG9tQXR0cmlidXRlcyIsIFdJLkRlZmF1bHRBdWRpdHMuZGF0
YURPTUF0dHJpYnV0ZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhp
cyBpcyBhbiBleGFtcGxlIG9mIGhvdyByZXN1bHQgRE9NIGF0dHJpYnV0ZXMgYXJlIGhpZ2hsaWdo
dGVkIG9uIGFueSByZXR1cm5lZCBET00gbm9kZXMuIEl0IHdpbGwgcGFzcyB3aXRoIGFsbCBlbGVt
ZW50cyB3aXRoIGFuIGlkIGF0dHJpYnV0ZS4iKX0pLAorICAgICAgICAgICAgICAgICAgICBuZXcg
V0kuQXVkaXRUZXN0Q2FzZSgiZGF0YS1lcnJvcnMiLCBXSS5EZWZhdWx0QXVkaXRzLmRhdGFFcnJv
cnMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFt
cGxlIG9mIGhvdyBlcnJvcnMgYXJlIHNob3duLiBUaGUgZXJyb3Igd2FzIHRocm93biBtYW51YWxs
eSwgYnV0IGV4ZWN1dGlvbiBlcnJvcnMgd2lsbCBhcHBlYXIgaW4gdGhlIHNhbWUgd2F5LiIpfSks
CisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJkYXRhLWN1c3RvbSIs
IFdJLkRlZmF1bHRBdWRpdHMuZGF0YUN1c3RvbS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IGN1c3RvbSByZXN1bHQgZGF0YSBp
cyBzaG93bi4iKSwgc3VwcG9ydHM6IDN9KSwKICAgICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRp
b246IFdJLlVJU3RyaW5nKCJUaGVzZSBhcmUgZXhhbXBsZSB0ZXN0cyB0aGF0IGRlbW9uc3RyYXRl
IGFsbCBvZiB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEgdGhhdCBjYW4gYmUgcmV0dXJuZWQg
d2l0aCB0aGUgdGVzdCByZXN1bHQuIil9KSwKICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0R3JvdXAoV0kuVUlTdHJpbmcoIlNwZWNpYWxseSBFeHBvc2VkIERhdGEiKSwgWwogICAgICAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0R3JvdXAoV0kuVUlTdHJpbmcoIkFjY2Vzc2li
aWxpdHkiKSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
ImdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByZW1vdmVXaGl0ZXNwYWNlKGdldEVsZW1lbnRz
QnlDb21wdXRlZFJvbGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4
YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBlbGVtZW50cyB3aXRoIGEgY29tcHV0ZWQg
cm9sZSBvZiBcdTAwMjJsaW5rXHUwMDIyLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygi
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xl
IikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoImdldEFjdGl2ZURlc2NlbmRhbnQiLCByZW1vdmVXaGl0ZXNwYWNlKGdldEFjdGl2
ZURlc2NlbmRhbnQpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBhbnkgZWxlbWVudCB0aGF0IG1lZXRzIGNyaXRl
cmlhIGZvciBhY3RpdmUgZGVzY2VuZGFudCAoXHUwMDIyJXNcdTAwMjIpIG9mIHRoZSA8Ym9keT4g
ZWxlbWVudCwgaWYgaXQgZXhpc3RzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRBY3RpdmVEZXNjZW5kYW50IiksIFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSksIHN1cHBvcnRzOiAxfSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q2hpbGRO
b2RlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0Q2hpbGROb2RlcyksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGNo
aWxkIG5vZGVzIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVl
LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRDaGlsZE5vZGVzIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldENvbXB1dGVkUHJvcGVydGllcyIsIHJl
bW92ZVdoaXRlc3BhY2UoZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYSB2
YXJpZXR5IG9mIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxib2R5PiBlbGVt
ZW50LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNj
ZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMiKSksIHN1cHBvcnRzOiAzfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29udHJvbGxlZE5v
ZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShnZXRDb250cm9sbGVkTm9kZXMpLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmlu
ZCBhbGwgbm9kZXMgY29udHJvbGxlZCAoXHUwMDIyJXNcdTAwMjIpIGJ5IHRoZSA8Ym9keT4gZWxl
bWVudCwgaWYgYW55IGV4aXN0LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb250cm9sbGVkTm9kZXMiKSwgV0kudW5sb2Nh
bGl6ZWRTdHJpbmcoImFyaWEtY29udHJvbHMiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Rmxvd2VkTm9kZXMiLCByZW1v
dmVXaGl0ZXNwYWNlKGdldEZsb3dlZE5vZGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
VGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYWxsIG5vZGVzIGZs
b3dlZCB0byAoXHUwMDIyJXNcdTAwMjIpIGZyb20gdGhlIDxib2R5PiBlbGVtZW50LCBpZiBhbnkg
ZXhpc3QuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldEZsb3dlZE5vZGVzIiksIFdJLnVubG9jYWxpemVkU3RyaW5nKCJhcmlh
LWZsb3d0byIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBX
SS5BdWRpdFRlc3RDYXNlKCJnZXRNb3VzZUV2ZW50Tm9kZSIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0
TW91c2VFdmVudE5vZGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4
YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUgbm9kZSB0aGF0IHdvdWxkIGhhbmRs
ZSBtb3VzZSBldmVudHMgZm9yIHRoZSA8Ym9keT4gZWxlbWVudCwgaWYgYXBwbGljYWJsZS4iKS5m
b3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuZ2V0TW91c2VFdmVudE5vZGUiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0T3duZWROb2RlcyIsIHJlbW92ZVdoaXRl
c3BhY2UoZ2V0T3duZWROb2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMg
YW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFsbCBub2RlcyBvd25lZCAoXHUw
MDIyJXNcdTAwMjIpIGJ5IHRoZSA8Ym9keT4gZWxlbWVudCwgaWYgYW55IGV4aXN0LiIpLmZvcm1h
dChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRPd25lZE5vZGVzIiksIFdJLnVubG9jYWxpemVkU3RyaW5nKCJhcmlhLW93bnMiKSksIHN1cHBv
cnRzOiAxfSksCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgi
Z2V0UGFyZW50Tm9kZSIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0UGFyZW50Tm9kZSksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0
byBmaW5kIHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgPGJvZHk+IGVsZW1lbnQgaW4gdGhlIGFjY2Vz
c2liaWxpdHkgdHJlZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0UGFyZW50Tm9kZSIpKSwgc3VwcG9ydHM6IDF9KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRTZWxlY3RlZENo
aWxkTm9kZXMiLCByZW1vdmVXaGl0ZXNwYWNlKGdldFNlbGVjdGVkQ2hpbGROb2RlcyksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAl
cyB0byBmaW5kIGFsbCBjaGlsZCBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZCAoXHUwMDIyJXNcdTAw
MjIpIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRTZWxlY3RlZENoaWxkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtc2Vs
ZWN0ZWQiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIFdJLkRlZmF1bHRBdWRp
dHMuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBl
bGVtZW50cyB3aXRoIGEgY29tcHV0ZWQgcm9sZSBvZiBcdTAwMjJsaW5rXHUwMDIyLiIpLmZvcm1h
dChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldEFjdGl2ZURlc2NlbmRhbnQiLCBX
SS5EZWZhdWx0QXVkaXRzLmdldEFjdGl2ZURlc2NlbmRhbnQudG9TdHJpbmcoKSwge2Rlc2NyaXB0
aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRv
IGZpbmQgYW55IGVsZW1lbnQgdGhhdCBtZWV0cyBjcml0ZXJpYSBmb3IgYWN0aXZlIGRlc2NlbmRh
bnQgKFx1MDAyMiVzXHUwMDIyKSBvZiB0aGUgPGJvZHk+IGVsZW1lbnQsIGlmIGl0IGV4aXN0cy4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2li
aWxpdHkuZ2V0QWN0aXZlRGVzY2VuZGFudCIpLCBXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1h
Y3RpdmVkZXNjZW5kYW50IikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldENoaWxkTm9kZXMiLCBXSS5EZWZhdWx0QXVkaXRz
LmdldENoaWxkTm9kZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhp
cyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgY2hpbGQgbm9kZXMgb2Yg
dGhlIDxib2R5PiBlbGVtZW50IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIikuZm9ybWF0KFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENo
aWxkTm9kZXMiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcg
V0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzIiwgV0kuRGVmYXVsdEF1ZGl0
cy5nZXRDb21wdXRlZFByb3BlcnRpZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYSB2YXJp
ZXR5IG9mIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxib2R5PiBlbGVtZW50
LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMiKSksIHN1cHBvcnRzOiAzfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29udHJvbGxlZE5vZGVz
IiwgV0kuRGVmYXVsdEF1ZGl0cy5nZXRDb250cm9sbGVkTm9kZXMudG9TdHJpbmcoKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVz
IHRvIGZpbmQgYWxsIG5vZGVzIGNvbnRyb2xsZWQgKFx1MDAyMiVzXHUwMDIyKSBieSB0aGUgPGJv
ZHk+IGVsZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmco
IldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29udHJvbGxlZE5vZGVzIiksIFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJhcmlhLWNvbnRyb2xzIikpLCBzdXBwb3J0czogMX0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldEZsb3dlZE5vZGVz
IiwgV0kuRGVmYXVsdEF1ZGl0cy5nZXRGbG93ZWROb2Rlcy50b1N0cmluZygpLCB7ZGVzY3JpcHRp
b246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8g
ZmluZCBhbGwgbm9kZXMgZmxvd2VkIHRvIChcdTAwMjIlc1x1MDAyMikgZnJvbSB0aGUgPGJvZHk+
IGVsZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Rmxvd2VkTm9kZXMiKSwgV0kudW5sb2Nh
bGl6ZWRTdHJpbmcoImFyaWEtZmxvd3RvIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldE1vdXNlRXZlbnROb2RlIiwgV0ku
RGVmYXVsdEF1ZGl0cy5nZXRNb3VzZUV2ZW50Tm9kZS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmlu
ZCB0aGUgbm9kZSB0aGF0IHdvdWxkIGhhbmRsZSBtb3VzZSBldmVudHMgZm9yIHRoZSA8Ym9keT4g
ZWxlbWVudCwgaWYgYXBwbGljYWJsZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0TW91c2VFdmVudE5vZGUiKSksIHN1cHBv
cnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgi
Z2V0T3duZWROb2RlcyIsIFdJLkRlZmF1bHRBdWRpdHMuZ2V0T3duZWROb2Rlcy50b1N0cmluZygp
LCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0
IHVzZXMgJXMgdG8gZmluZCBhbGwgbm9kZXMgb3duZWQgKFx1MDAyMiVzXHUwMDIyKSBieSB0aGUg
PGJvZHk+IGVsZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJp
bmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0T3duZWROb2RlcyIpLCBXSS51
bmxvY2FsaXplZFN0cmluZygiYXJpYS1vd25zIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFBhcmVudE5vZGUiLCBXSS5E
ZWZhdWx0QXVkaXRzLmdldFBhcmVudE5vZGUudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgdGhl
IHBhcmVudCBub2RlIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0
cmVlLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNj
ZXNzaWJpbGl0eS5nZXRQYXJlbnROb2RlIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFNlbGVjdGVkQ2hpbGROb2RlcyIs
IFdJLkRlZmF1bHRBdWRpdHMuZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzLnRvU3RyaW5nKCksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAl
cyB0byBmaW5kIGFsbCBjaGlsZCBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZCAoXHUwMDIyJXNcdTAw
MjIpIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRTZWxlY3RlZENoaWxkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtc2Vs
ZWN0ZWQiKSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAgIF0sIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIlRoZXNlIGFyZSBleGFtcGxlIHRlc3RzIHRoYXQgZGVtb25zdHJh
dGUgaG93IHRvIHVzZSAlcyB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjY2Vzc2liaWxp
dHkgdHJlZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkiKSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiRE9NIiksIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJoYXNFdmVudExpc3RlbmVycyIsIHJlbW92
ZVdoaXRlc3BhY2UoaGFzRXZlbnRMaXN0ZW5lcnMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5n
KCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBkYXRhIGluZGlj
YXRpbmcgd2hldGhlciB0aGUgPGJvZHk+IGVsZW1lbnQgaGFzIGFueSBldmVudCBsaXN0ZW5lcnMu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5Lmhhc0V2ZW50TGlzdGVuZXJzIikpLCBzdXBwb3J0czogM30pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImhhc0V2ZW50TGlzdGVuZXJzLWNsaWNr
IiwgcmVtb3ZlV2hpdGVzcGFjZShoYXNFdmVudExpc3RlbmVyc0NsaWNrKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZp
bmQgZGF0YSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIDxib2R5PiBlbGVtZW50IGhhcyBhbnkgY2xp
Y2sgZXZlbnQgbGlzdGVuZXJzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5oYXNFdmVudExpc3RlbmVyc0NsaWNrIikpLCBzdXBw
b3J0czogM30pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
Imhhc0V2ZW50TGlzdGVuZXJzIiwgV0kuRGVmYXVsdEF1ZGl0cy5oYXNFdmVudExpc3RlbmVycy50
b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUg
dGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBkYXRhIGluZGljYXRpbmcgd2hldGhlciB0aGUgPGJv
ZHk+IGVsZW1lbnQgaGFzIGFueSBldmVudCBsaXN0ZW5lcnMuIikuZm9ybWF0KFdJLnVubG9jYWxp
emVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmhhc0V2ZW50TGlzdGVu
ZXJzIikpLCBzdXBwb3J0czogM30pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1
ZGl0VGVzdENhc2UoImhhc0V2ZW50TGlzdGVuZXJzLWNsaWNrIiwgV0kuRGVmYXVsdEF1ZGl0cy5o
YXNFdmVudExpc3RlbmVyc0NsaWNrLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJp
bmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGRhdGEgaW5k
aWNhdGluZyB3aGV0aGVyIHRoZSA8Ym9keT4gZWxlbWVudCBoYXMgYW55IGNsaWNrIGV2ZW50IGxp
c3RlbmVycy4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuaGFzRXZlbnRMaXN0ZW5lcnNDbGljayIpKSwgc3VwcG9ydHM6IDN9KSwK
ICAgICAgICAgICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhlc2Ug
YXJlIGV4YW1wbGUgdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlICVzIHRvIGdldCBp
bmZvcm1hdGlvbiBhYm91dCBET00gbm9kZXMuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJXZWJJbnNwZWN0b3JBdWRpdC5ET00iKSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAg
ICAgICAgIG5ldyBXSS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiUmVzb3VyY2VzIiksIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRSZXNvdXJj
ZXMiLCByZW1vdmVXaGl0ZXNwYWNlKGdldFJlc291cmNlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlT
dHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGJhc2lj
IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVk
U3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFJlc291cmNlcyIpKSwg
c3VwcG9ydHM6IDN9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RD
YXNlKCJnZXRSZXNvdXJjZUNvbnRlbnQiLCByZW1vdmVXaGl0ZXNwYWNlKGdldFJlc291cmNlQ29u
dGVudCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0
IHRoYXQgdXNlcyAlcyB0byBmaW5kIHRoZSBjb250ZW50cyBvZiB0aGUgbWFpbiByZXNvdXJjZS4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2li
aWxpdHkuZ2V0UmVzb3VyY2VDb250ZW50IikpLCBzdXBwb3J0czogM30pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFJlc291cmNlcyIsIFdJLkRlZmF1
bHRBdWRpdHMuZ2V0UmVzb3VyY2VzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJp
bmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGJhc2ljIGlu
Zm9ybWF0aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFJlc291cmNlcyIpKSwgc3Vw
cG9ydHM6IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJnZXRSZXNvdXJjZUNvbnRlbnQiLCBXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlQ29udGVu
dC50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUgY29udGVudHMgb2YgdGhlIG1haW4gcmVz
b3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldFJlc291cmNlQ29udGVudCIpKSwgc3VwcG9ydHM6IDN9KSwKICAgICAg
ICAgICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhlc2UgYXJlIGV4
YW1wbGUgdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlICVzIHRvIGdldCBpbmZvcm1h
dGlvbiBhYm91dCBsb2FkZWQgcmVzb3VyY2VzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmlu
ZygiV2ViSW5zcGVjdG9yQXVkaXQuUmVzb3VyY2VzIikpLCBzdXBwb3J0czogMn0pLAogICAgICAg
ICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoZXNlIGFyZSBleGFtcGxl
IHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgaG93IHRvIHVzZSAlcyB0byBhY2Nlc3MgaW5mb3JtYXRp
b24gbm90IG5vcm1hbGx5IGF2YWlsYWJsZSB0byBKYXZhU2NyaXB0LiIpLmZvcm1hdChXSS51bmxv
Y2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQiKSksIHN1cHBvcnRzOiAxfSksCi0gICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInVuc3VwcG9ydGVkIiwgcmVtb3ZlV2hp
dGVzcGFjZSh1bnN1cHBvcnRlZCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMg
YW4gZXhhbXBsZSBvZiBhIHRlc3QgdGhhdCB3aWxsIG5vdCBydW4gYmVjYXVzZSBpdCBpcyB1bnN1
cHBvcnRlZC4iKSwgc3VwcG9ydHM6IEluZmluaXR5fSksCisgICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoInVuc3VwcG9ydGVkIiwgV0kuRGVmYXVsdEF1ZGl0cy51bnN1cHBvcnRl
ZC50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgb2YgYSB0ZXN0IHRoYXQgd2lsbCBub3QgcnVuIGJlY2F1c2UgaXQgaXMgdW5zdXBwb3J0ZWQu
IiksIHN1cHBvcnRzOiBJbmZpbml0eX0pLAogICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiVGhlc2UgYXJlIGV4YW1wbGUgdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSB0aGUg
ZnVuY3Rpb25hbGl0eSBhbmQgc3RydWN0dXJlIG9mIGF1ZGl0cy4iKX0pLAogICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJBY2Nlc3NpYmlsaXR5IiksIFsKLSAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdE1lbnVSb2xlRm9yUmVxdWly
ZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdE1lbnVSb2xlRm9yUmVxdWlyZWRDaGls
ZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9m
IHJvbGUgXHUwMDIyJXNcdTAwMjIgYW5kIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3du
ZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxv
Y2FsaXplZFN0cmluZygibWVudSIpLCBXSS51bmxvY2FsaXplZFN0cmluZygibWVudWJhciIpKSwg
c3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVz
dEdyaWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEdyaWRS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3Vy
ZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25l
ZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9j
YWxpemVkU3RyaW5nKCJncmlkIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyIsIHJlbW92
ZVdoaXRlc3BhY2UodGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmcpLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBcdTAwMjIlc1x1MDAyMiBpcyBzcGVsbGVkIGNvcnJl
Y3RseS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtbGFiZWxsZWRieSIpKSwg
c3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVz
dEZvck11bHRpcGxlQmFubmVycyIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEZvck11bHRpcGxlQmFu
bmVycyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IG9ubHkgb25lIGJh
bm5lciBpcyB1c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAg
ICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Rm9yTGlua0xhYmVscyIsIHJlbW92ZVdoaXRl
c3BhY2UodGVzdEZvckxpbmtMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1
cmUgdGhhdCBsaW5rcyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVjaG5v
bG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0
Q2FzZSgidGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNw
YWNlKHRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBo
YXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJvd2dyb3VwIikpLCBzdXBwb3J0czogMX0p
LAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0VGFibGVSb2xlRm9y
UmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFRhYmxlUm9sZUZvclJlcXVp
cmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVt
ZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMg
aW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmlu
ZygidGFibGUiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoInRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zIiwgcmVtb3ZlV2hpdGVzcGFjZSh0
ZXN0Rm9yTXVsdGlwbGVMaXZlUmVnaW9ucyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVu
c3VyZSB0aGF0IG9ubHkgb25lIGxpdmUgcmVnaW9uIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1
cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RM
aXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RMaXN0
Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJF
bnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQg
b3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51
bmxvY2FsaXplZFN0cmluZygibGlzdGJveCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAg
ICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEltYWdlTGFiZWxzIiwgcmVtb3ZlV2hpdGVz
cGFjZSh0ZXN0SW1hZ2VMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUg
dGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgYWNjZXNzaWJsZSBsYWJl
bHMgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmlu
ZygiaW1nIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRl
c3RDYXNlKCJ0ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9y
QXJpYUhpZGRlbkZhbHNlKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIGFyaWEt
aGlkZGVuPVx1MDAyMiVzXHUwMDIyIGlzIG5vdCB1c2VkLiIpLmZvcm1hdChXSS51bmxvY2FsaXpl
ZFN0cmluZygiZmFsc2UiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoInRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVX
aGl0ZXNwYWNlKHRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIy
IGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklB
LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygidHJlZSIpKSwgc3VwcG9ydHM6IDF9KSwK
LSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdFJhZGlvR3JvdXBSb2xl
Rm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFJhZGlvR3JvdXBSb2xl
Rm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0
aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBl
bGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxp
emVkU3RyaW5nKCJyYWRpb2dyb3VwIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAg
IG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwg
cmVtb3ZlV2hpdGVzcGFjZSh0ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIl
c1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBX
QUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImZlZWQiKSksIHN1cHBvcnRz
OiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUYWJMaXN0
Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RUYWJMaXN0Um9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUg
dGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQg
ZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2Fs
aXplZFN0cmluZygidGFibGlzdCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBu
ZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEJ1dHRvbkxhYmVscyIsIHJlbW92ZVdoaXRlc3BhY2Uo
dGVzdEJ1dHRvbkxhYmVscyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0
IGJ1dHRvbnMgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3ku
IiksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
InRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFJv
d1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5z
dXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93
bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5s
b2NhbGl6ZWRTdHJpbmcoInJvdyIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBu
ZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJl
bW92ZVdoaXRlc3BhY2UodGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNc
dTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJ
LUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJsaXN0IikpLCBzdXBwb3J0czog
MX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Q29tYm9Cb3hS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdENvbWJvQm94Um9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUg
dGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQg
ZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2Fs
aXplZFN0cmluZygiY29tYm9ib3giKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JNdWx0aXBsZU1haW5Db250ZW50U2VjdGlvbnMi
LCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RGb3JNdWx0aXBsZU1haW5Db250ZW50U2VjdGlvbnMpLCB7
ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBvbmx5IG9uZSBtYWluIGNvbnRl
bnQgc2VjdGlvbiBpcyB1c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAotICAgICAg
ICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0RGlhbG9nc0ZvckxhYmVscyIsIHJl
bW92ZVdoaXRlc3BhY2UodGVzdERpYWxvZ3NGb3JMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJFbnN1cmUgdGhhdCBkaWFsb2dzIGhhdmUgYWNjZXNzaWJsZSBsYWJlbHMgZm9yIGFz
c2lzdGl2ZSB0ZWNobm9sb2d5LiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSIsIHJlbW92
ZVdoaXRlc3BhY2UodGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUpLCB7ZGVzY3JpcHRpb246
IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCB2YWx1ZXMgZm9yIFx1MDAyMiVzXHUwMDIyIGFyZSB2
YWxpZC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtaGlkZGVuIikpLCBzdXBw
b3J0czogMX0pCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RNZW51
Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RNZW51Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
RW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBhbmQgXHUwMDIyJXNc
dTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJ
LUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJtZW51IiksIFdJLnVubG9jYWxp
emVkU3RyaW5nKCJtZW51YmFyIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgV0ku
RGVmYXVsdEF1ZGl0cy50ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUg
XHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNl
IHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJncmlkIikpLCBz
dXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0
Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvckFyaWFM
YWJlbGxlZEJ5U3BlbGxpbmcudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
RW5zdXJlIHRoYXQgXHUwMDIyJXNcdTAwMjIgaXMgc3BlbGxlZCBjb3JyZWN0bHkuIikuZm9ybWF0
KFdJLnVubG9jYWxpemVkU3RyaW5nKCJhcmlhLWxhYmVsbGVkYnkiKSksIHN1cHBvcnRzOiAxfSks
CisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JNdWx0aXBsZUJh
bm5lcnMiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUJhbm5lcnMudG9TdHJpbmco
KSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgb25seSBvbmUgYmFubmVy
IGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JMaW5rTGFiZWxzIiwgV0kuRGVmYXVsdEF1ZGl0
cy50ZXN0Rm9yTGlua0xhYmVscy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5n
KCJFbnN1cmUgdGhhdCBsaW5rcyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUg
dGVjaG5vbG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVk
aXRUZXN0Q2FzZSgidGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZh
dWx0QXVkaXRzLnRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUg
XHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNl
IHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJyb3dncm91cCIp
KSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgi
dGVzdFRhYmxlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RU
YWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0ku
VUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2
ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIiku
Zm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJ0YWJsZSIpKSwgc3VwcG9ydHM6IDF9KSwKKyAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlTGl2ZVJl
Z2lvbnMiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zLnRvU3Ry
aW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IG9ubHkgb25lIGxp
dmUgcmVnaW9uIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAg
ICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVk
Q2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQg
ZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1l
bnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRT
dHJpbmcoImxpc3Rib3giKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoInRlc3RJbWFnZUxhYmVscyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdElt
YWdlTGFiZWxzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0
aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVs
cyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJpbWciKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVz
dENhc2UoInRlc3RGb3JBcmlhSGlkZGVuRmFsc2UiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JB
cmlhSGlkZGVuRmFsc2UudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5z
dXJlIGFyaWEtaGlkZGVuPVx1MDAyMiVzXHUwMDIyIGlzIG5vdCB1c2VkLiIpLmZvcm1hdChXSS51
bmxvY2FsaXplZFN0cmluZygiZmFsc2UiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAg
ICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4i
LCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJp
bmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Yg
cm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29y
ZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInRyZWUi
KSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
InRlc3RSYWRpb0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRz
LnRlc3RSYWRpb0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIl
c1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBX
QUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJhZGlvZ3JvdXAiKSksIHN1
cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RG
ZWVkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGZWVkUm9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVp
cmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQo
V0kudW5sb2NhbGl6ZWRTdHJpbmcoImZlZWQiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRy
ZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxl
bWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRz
IGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJp
bmcoInRhYmxpc3QiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1
ZGl0VGVzdENhc2UoInRlc3RCdXR0b25MYWJlbHMiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RCdXR0
b25MYWJlbHMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRo
YXQgYnV0dG9ucyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVjaG5vbG9n
eS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgidGVzdFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgV0kuRGVmYXVsdEF1ZGl0cy50ZXN0
Um93Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZl
IHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5m
b3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJvdyIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAg
ICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdExpc3RSb2xlRm9yUmVxdWlyZWRD
aGlsZHJlbiIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJl
bi50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVt
ZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMg
aW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmlu
ZygibGlzdCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0Q2FzZSgidGVzdENvbWJvQm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0
QXVkaXRzLnRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtk
ZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUw
MDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdp
dGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJjb21ib2JveCIpKSwg
c3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVz
dEZvck11bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9ucyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdEZv
ck11bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9ucy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBvbmx5IG9uZSBtYWluIGNvbnRlbnQgc2VjdGlvbiBpcyB1
c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBX
SS5BdWRpdFRlc3RDYXNlKCJ0ZXN0RGlhbG9nc0ZvckxhYmVscyIsIFdJLkRlZmF1bHRBdWRpdHMu
dGVzdERpYWxvZ3NGb3JMYWJlbHMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiRW5zdXJlIHRoYXQgZGlhbG9ncyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3Rp
dmUgdGVjaG5vbG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgidGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUiLCBXSS5EZWZhdWx0
QXVkaXRzLnRlc3RGb3JJbnZhbGlkQXJpYUhpZGRlblZhbHVlLnRvU3RyaW5nKCksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IHZhbHVlcyBmb3IgXHUwMDIyJXNcdTAwMjIg
YXJlIHZhbGlkLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1oaWRkZW4iKSks
IHN1cHBvcnRzOiAxfSkKICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IkRpYWdub3NlcyBjb21tb24gYWNjZXNzaWJpbGl0eSBwcm9ibGVtcyBhZmZlY3Rpbmcgc2NyZWVu
IHJlYWRlcnMgYW5kIG90aGVyIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiIpfSksCiAgICAgICAgIF07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRl
eCA4YTNjOTAzYTFiOWQ1YmZiNmRjZGYwYWEwYWE4M2VmYjllODE0YjNmLi40MmQxZmI2MDUzNGU4
NGQ5NTRkM2Y0OTNjZjgxZjk4MjNkZmU1OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC05MzcsNiArOTM3LDggQEAKICAgICA8c2NyaXB0
IHNyYz0iRGVidWcvUHJvdG9jb2xUcmFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkRlYnVnL0RlYnVnQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9
Ik5vbk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBz
cmM9IldlYktpdEFkZGl0aW9ucy9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSUFkZGl0aW9u
cy5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05vbk1pbmlmaWVkL0RlZmF1bHRBdWRp
dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQ4NGM4ZDA1YzdjNTQ0NWRhNjVjOGY0NjA5NWFiYjNhODg3ZjQ5
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L05vbk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMuanMKQEAgLTAsMCArMSw2ODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXSS5EZWZhdWx0QXVkaXRzID0ge307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2ZWxQYXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MifTsKK307CisKK1dJLkRl
ZmF1bHRBdWRpdHMubGV2ZWxXYXJuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDog
Indhcm4ifTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2ZWxGYWlsID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHtsZXZlbDogImZhaWwifTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2
ZWxFcnJvciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJlcnJvciJ9OworfTsK
KworV0kuRGVmYXVsdEF1ZGl0cy5sZXZlbFVuc3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHtsZXZlbDogInVuc3VwcG9ydGVkIn07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmRh
dGFET01Ob2RlcyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9t
Tm9kZXM6IFtkb2N1bWVudC5ib2R5XX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmRhdGFET01B
dHRyaWJ1dGVzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21O
b2RlczogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIikpLCBkb21B
dHRyaWJ1dGVzOiBbImlkIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5kYXRhRXJyb3JzID0g
ZnVuY3Rpb24oKSB7CisgICAgdGhyb3cgRXJyb3IoInRoaXMgZXJyb3Igd2FzIHRocm93biBmcm9t
IGluc2lkZSB0aGUgYXVkaXQgdGVzdCBjb2RlLiIpOworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5k
YXRhQ3VzdG9tID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBhOiAx
LCBiOiBbMl0sIGM6IHtrZXk6IDN9fTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMuZ2V0RWxlbWVu
dHNCeUNvbXB1dGVkUm9sZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNz
IiwgZG9tTm9kZXM6IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNC
eUNvbXB1dGVkUm9sZSgibGluayIpLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9OworCitX
SS5EZWZhdWx0QXVkaXRzLmdldEFjdGl2ZURlc2NlbmRhbnQgPSBmdW5jdGlvbigpIHsKKyAgICBs
ZXQgcmVzdWx0ID0ge2xldmVsOiAicGFzcyJ9OworICAgIGxldCBhY3RpdmVEZXNjZW5kYW50ID0g
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRBY3RpdmVEZXNjZW5kYW50KGRvY3Vt
ZW50LmJvZHkpOworICAgIGlmIChhY3RpdmVEZXNjZW5kYW50KQorICAgICAgICByZXN1bHQuZG9t
Tm9kZXMgPSBbYWN0aXZlRGVzY2VuZGFudF07CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK1dJ
LkRlZmF1bHRBdWRpdHMuZ2V0Q2hpbGROb2RlcyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBjaGls
ZE5vZGVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDaGlsZE5vZGVzKGRv
Y3VtZW50LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IGNoaWxk
Tm9kZXMgfHwgW119OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5nZXRDb21wdXRlZFByb3BlcnRp
ZXMgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZG9tQXR0cmlidXRlcyA9IFsiYWx0IiwgImFyaWEt
YXRvbWljIiwgImFyaWEtYnVzeSIsICJhcmlhLWNoZWNrZWQiLCAiYXJpYS1jdXJyZW50IiwgImFy
aWEtZGlzYWJsZWQiLCAiYXJpYS1leHBhbmRlZCIsICJhcmlhLWhhc3BvcHVwIiwgImFyaWEtaGlk
ZGVuIiwgImFyaWEtaW52YWxpZCIsICJhcmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJh
cmlhLWxldmVsIiwgImFyaWEtbGl2ZSIsICJhcmlhLXByZXNzZWQiLCAiYXJpYS1yZWFkb25seSIs
ICJhcmlhLXJlbGV2YW50IiwgImFyaWEtcmVxdWlyZWQiLCAiYXJpYS1zZWxlY3RlZCIsICJyb2xl
IiwgInRpdGxlIl0uZmlsdGVyKChhdHRyaWJ1dGUpID0+IGRvY3VtZW50LmJvZHkuaGFzQXR0cmli
dXRlKGF0dHJpYnV0ZSkpOworICAgIGxldCBjb21wdXRlZFByb3BlcnRpZXMgPSBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhkb2N1bWVudC5ib2R5
KTsKKyAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0s
IGRvbUF0dHJpYnV0ZXMsIC4uLihjb21wdXRlZFByb3BlcnRpZXMgfHwge30pfTsKK307CisKK1dJ
LkRlZmF1bHRBdWRpdHMuZ2V0Q29udHJvbGxlZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0
IGNvbnRyb2xsZWROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29u
dHJvbGxlZE5vZGVzKGRvY3VtZW50LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwg
ZG9tTm9kZXM6IGNvbnRyb2xsZWROb2RlcyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRz
LmdldEZsb3dlZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGZsb3dlZE5vZGVzID0gV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRGbG93ZWROb2Rlcyhkb2N1bWVudC5ib2R5
KTsKKyAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBmbG93ZWROb2RlcyB8fCBb
XX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldE1vdXNlRXZlbnROb2RlID0gZnVuY3Rpb24o
KSB7CisgICAgbGV0IHJlc3VsdCA9IHtsZXZlbDogInBhc3MifTsKKyAgICBsZXQgbW91c2VFdmVu
dE5vZGUgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE1vdXNlRXZlbnROb2Rl
KGRvY3VtZW50LmJvZHkpOworICAgIGlmIChtb3VzZUV2ZW50Tm9kZSkKKyAgICAgICAgcmVzdWx0
LmRvbU5vZGVzID0gW21vdXNlRXZlbnROb2RlXTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKwor
V0kuRGVmYXVsdEF1ZGl0cy5nZXRPd25lZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IG93
bmVkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE93bmVkTm9kZXMo
ZG9jdW1lbnQuYm9keSk7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczogb3du
ZWROb2RlcyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldFBhcmVudE5vZGUgPSBm
dW5jdGlvbigpIHsKKyAgICBsZXQgcmVzdWx0ID0ge2xldmVsOiAicGFzcyJ9OworICAgIGxldCBw
YXJlbnROb2RlID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRQYXJlbnROb2Rl
KGRvY3VtZW50LmJvZHkpOworICAgIGlmIChwYXJlbnROb2RlKQorICAgICAgICByZXN1bHQuZG9t
Tm9kZXMgPSBbcGFyZW50Tm9kZV07CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK1dJLkRlZmF1
bHRBdWRpdHMuZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IHNl
bGVjdGVkQ2hpbGROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0U2Vs
ZWN0ZWRDaGlsZE5vZGVzKGRvY3VtZW50LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNz
IiwgZG9tTm9kZXM6IHNlbGVjdGVkQ2hpbGROb2RlcyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0
QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGRvbUF0dHJp
YnV0ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkuYXR0cmlidXRlcykuZmlsdGVyKChhdHRy
aWJ1dGUpID0+IGF0dHJpYnV0ZS5uYW1lLnN0YXJ0c1dpdGgoIm9uIikpOworICAgIHJldHVybiB7
bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XSwgZG9tQXR0cmlidXRlcywg
aGFzRXZlbnRMaXN0ZW5lcnM6IFdlYkluc3BlY3RvckF1ZGl0LkRPTS5oYXNFdmVudExpc3RlbmVy
cyhkb2N1bWVudC5ib2R5KX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmhhc0V2ZW50TGlzdGVu
ZXJzQ2xpY2sgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZG9tQXR0cmlidXRlcyA9IFsib25jbGlj
ayJdLmZpbHRlcigoYXR0cmlidXRlKSA9PiBkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZShhdHRy
aWJ1dGUpKTsKKyAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQu
Ym9keV0sIGRvbUF0dHJpYnV0ZXMsIGhhc0NsaWNrRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9y
QXVkaXQuRE9NLmhhc0V2ZW50TGlzdGVuZXJzKGRvY3VtZW50LmJvZHksICJjbGljayIpfTsKK307
CisKK1dJLkRlZmF1bHRBdWRpdHMuZ2V0UmVzb3VyY2VzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHtsZXZlbDogInBhc3MiLCByZXNvdXJjZXM6IFdlYkluc3BlY3RvckF1ZGl0LlJlc291cmNl
cy5nZXRSZXNvdXJjZXMoKX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlQ29u
dGVudCA9IGZ1bmN0aW9uKCkgeworICAgIGxldCByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3JBdWRp
dC5SZXNvdXJjZXMuZ2V0UmVzb3VyY2VzKCk7CisgICAgbGV0IG1haW5SZXNvdXJjZSA9IHJlc291
cmNlcy5maW5kKChyZXNvdXJjZSkgPT4gcmVzb3VyY2UudXJsID09PSB3aW5kb3cubG9jYXRpb24u
aHJlZik7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBtYWluUmVzb3VyY2UsIHJlc291cmNl
Q29udGVudDogV2ViSW5zcGVjdG9yQXVkaXQuUmVzb3VyY2VzLmdldFJlc291cmNlQ29udGVudCht
YWluUmVzb3VyY2UuaWQpfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudW5zdXBwb3J0ZWQgPSBm
dW5jdGlvbigpIHsKKyAgICB0aHJvdyBFcnJvcigidGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgc3Vw
cG9ydGVkLiIpOworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0TWVudVJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAg
ICAgICAgbWVudTogWyJtZW51aXRlbSIsICJtZW51aXRlbWNoZWNrYm94IiwgIm1lbnVpdGVtcmFk
aW8iXSwKKyAgICAgICAgbWVudWJhcjogWyJtZW51aXRlbSIsICJtZW51aXRlbWNoZWNrYm94Iiwg
Im1lbnVpdGVtcmFkaW8iXSwKKyAgICB9OworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxl
dCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9s
ZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwor
ICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB2aXNpdGVkUGFyZW50
cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdoaWxlIChjaGlsZE5vZGUp
IHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVz
LnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hp
bGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICBmb3IgKGxl
dCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVu
dHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRz
LmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25z
aGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAi
ZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9Owor
CitXSS5EZWZhdWx0QXVkaXRzLnRlc3RHcmlkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5j
dGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAgICAgICBncmlkOiBbInJv
dyIsICJyb3dncm91cCJdLAorICAgIH07CisgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0
IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xl
KG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7Cisg
ICAgICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRz
LmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkg
eworICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgaWYg
KGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykg
eworICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMu
cm9sZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGls
ZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGRO
b2RlLm5leHRTaWJsaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7CisgICAgICAgIGZvciAobGV0
IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50
c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMu
aGFzKHBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNo
aXBzW3JvbGVdKSkKKyAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJm
YWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKK307CisK
K1dJLkRlZmF1bHRBdWRpdHMudGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmcgPSBmdW5jdGlv
bigpIHsKKyAgICBsZXQgZG9tTm9kZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoIlthcmlhLWxhYmVsZWRieV0iKSk7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMu
bGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlh
LWxhYmVsZWRieSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11bHRpcGxlQmFu
bmVycyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxldCBiYW5u
ZXJzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0
ZWRSb2xlKCJiYW5uZXIiKTsKKyAgICBpZiAoYmFubmVycy5sZW5ndGggPiAxKQorICAgICAgICBk
b21Ob2RlcyA9IGJhbm5lcnM7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8g
ImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsK
KworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTGlua0xhYmVscyA9IGZ1bmN0aW9uKCkgeworICAg
IGxldCBsaW5rcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNC
eUNvbXB1dGVkUm9sZSgibGluayIpOworICAgIGxldCBkb21Ob2RlcyA9IGxpbmtzLmZpbHRlcigo
bGluaykgPT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9w
ZXJ0aWVzKGxpbmspLmxhYmVsKTsKKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGgg
PyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbImFyaWEtbGFiZWwi
LCAiYXJpYS1sYWJlbGxlZGJ5IiwgInRpdGxlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50
ZXN0Um93R3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNv
bnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAgICAgIHJvd2dyb3VwOiBbInJvdyJdLAorICAgIH07
CisgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNl
dDsKKyAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsK
KyAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgIGlmICghY2hpbGROb2RlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50
Tm9kZSkKKyAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9k
ZSk7CisKKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAgbGV0IHByb3Bl
cnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVy
dGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0g
Tm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmIChl
eHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGls
ZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0
ZWRSb2xlcykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yIChsZXQgcm9sZSBpbiBy
ZWxhdGlvbnNoaXBzKSB7CisgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7
CisgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUo
cGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAgICAgICAg
ICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMs
IGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdFRh
YmxlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxh
dGlvbnNoaXBzID0geworICAgICAgICB0YWJsZTogWyJyb3ciLCAicm93Z3JvdXAiXSwKKyAgICB9
OworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBT
ZXQ7CisgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7
CisgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVu
dE5vZGUpCisgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5v
ZGUpOworCisgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3Bl
cnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09
IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hp
bGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVj
dGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4g
cmVsYXRpb25zaGlwcykgeworICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkg
eworICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xl
KHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAg
ICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVz
LCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RG
b3JNdWx0aXBsZUxpdmVSZWdpb25zID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgbGl2ZVJlZ2lv
blJvbGVzID0gWyJhbGVydCIsICJsb2ciLCAic3RhdHVzIiwgIm1hcnF1ZWUiLCAidGltZXIiXTsK
KyAgICBsZXQgZG9tTm9kZXMgPSBbXTsKKyAgICBsZXQgbGl2ZVJlZ2lvbnMgPSBsaXZlUmVnaW9u
Um9sZXMucmVkdWNlKChhLCBiKSA9PiB7CisgICAgICAgIHJldHVybiBhLmNvbmNhdChXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoYikpOwor
ICAgIH0sIFtdKTsKKyAgICBsaXZlUmVnaW9ucyA9IGxpdmVSZWdpb25zLmNvbmNhdChBcnJheS5m
cm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFthcmlhLWxpdmU9InBvbGl0ZSJdLCBbYXJp
YS1saXZlPSJhc3NlcnRpdmUiXWApKSk7CisgICAgaWYgKGxpdmVSZWdpb25zLmxlbmd0aCA+IDEp
CisgICAgICAgIGRvbU5vZGVzID0gbGl2ZVJlZ2lvbnM7CisgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJhcmlhLWxpdmUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Qm94Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBz
ID0geworICAgICAgICBsaXN0Ym94OiBbIm9wdGlvbiJdLAorICAgIH07CisgICAgbGV0IGRvbU5v
ZGVzID0gW107CisgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICBmdW5jdGlv
biBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgbGV0IGNo
aWxkTm9kZSA9IG5vZGU7CisgICAgICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAg
ICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAg
d2hpbGUgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUp
OworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05P
REUgJiYgcHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmlu
Y2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFz
Q2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7
CisgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAgICAgICAgICBp
ZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJz
dENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAgICAgICAgICAgICBkb21Ob2Rlcy5w
dXNoKHBhcmVudE5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB7bGV2ZWw6IGRv
bU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6
IFsicm9sZSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdEltYWdlTGFiZWxzID0gZnVu
Y3Rpb24oKSB7CisgICAgbGV0IGltYWdlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiaW1nIik7CisgICAgbGV0IGRvbU5vZGVzID0g
aW1hZ2VzLmZpbHRlcigoaW1hZ2UpID0+ICFXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldENvbXB1dGVkUHJvcGVydGllcyhpbWFnZSkubGFiZWwpOworICAgIHJldHVybiB7bGV2ZWw6
IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0
ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiLCAiYWx0Il19Owor
fTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlID0gZnVuY3Rpb24o
KSB7CisgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKGBbYXJpYS1oaWRkZW49ImZhbHNlIl1gKSk7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9k
ZXMubGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJh
cmlhLWhpZGRlbiJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdFRyZWVSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7
CisgICAgICAgIHRyZWU6IFsidHJlZWl0ZW0iLCAiZ3JvdXAiXSwKKyAgICB9OworICAgIGxldCBk
b21Ob2RlcyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVu
Y3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxl
dCBjaGlsZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAg
ICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAg
ICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGRO
b2RlKTsKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xl
cy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYm
IGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlw
cykgeworICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFj
Y2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAg
ICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUu
Zmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9k
ZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVs
OiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1
dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RSYWRpb0dyb3VwUm9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNo
aXBzID0geworICAgICAgICByYWRpb2dyb3VwOiBbInJhZGlvIl0sCisgICAgfTsKKyAgICBsZXQg
ZG9tTm9kZXMgPSBbXTsKKyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1
bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBs
ZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAg
ICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAg
ICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxk
Tm9kZSk7CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1F
TlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9s
ZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAm
JiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hp
cHMpIHsKKyAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAg
ICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2Rl
LmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5v
ZGVzLnB1c2gocGFyZW50Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZl
bDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmli
dXRlczogWyJyb2xlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0RmVlZFJvbGVGb3JS
ZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9
IHsKKyAgICAgICAgZmVlZDogWyJhcnRpY2xlIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9kZXMg
PSBbXTsKKyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9uIGhh
c0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hpbGRO
b2RlID0gbm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAg
dmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3aGls
ZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Cisg
ICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAm
JiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVk
ZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGls
ZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGls
ZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKKyAg
ICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlmICh2
aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hp
bGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2go
cGFyZW50Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9k
ZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJy
b2xlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAg
ICAgICAgdGFibGlzdDogWyJ0YWIiXSwKKyAgICB9OworICAgIGxldCBkb21Ob2RlcyA9IFtdOwor
ICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24gaGFzQ2hpbGRX
aXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGlsZE5vZGUgPSBu
b2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB2aXNpdGVk
UGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdoaWxlIChjaGls
ZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQu
QWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAg
ICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3Bl
cnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9w
ZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJv
bGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoaWxkTm9kZSA9
IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICBm
b3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0ZWRQ
YXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVs
YXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnRO
b2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5n
dGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07
Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RCdXR0b25MYWJlbHMgPSBmdW5jdGlvbigpIHsK
KyAgICBsZXQgYnV0dG9ucyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxl
bWVudHNCeUNvbXB1dGVkUm9sZSgiYnV0dG9uIik7CisgICAgbGV0IGRvbU5vZGVzID0gYnV0dG9u
cy5maWx0ZXIoKGJ1dHRvbikgPT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
Q29tcHV0ZWRQcm9wZXJ0aWVzKGJ1dHRvbikubGFiZWwpOworICAgIHJldHVybiB7bGV2ZWw6IGRv
bU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6
IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiXX07Cit9OworCitXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkg
eworICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAgICAgIHJvdzogWyJjZWxsIiwgImdy
aWRjZWxsIiwgImNvbHVtbmhlYWRlciIsICJyb3doZWFkZXIiXSwKKyAgICB9OworICAgIGxldCBk
b21Ob2RlcyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVu
Y3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxl
dCBjaGlsZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAg
ICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAg
ICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2Vi
SW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGRO
b2RlKTsKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xl
cy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYm
IGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlw
cykgeworICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFj
Y2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAg
ICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUu
Zmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9k
ZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVs
OiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1
dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Um9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0g
eworICAgICAgICBsaXN0OiBbImxpc3RpdGVtIiwgImdyb3VwIl0sCisgICAgfTsKKyAgICBsZXQg
ZG9tTm9kZXMgPSBbXTsKKyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1
bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBs
ZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAg
ICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAg
ICAgICB3aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxk
Tm9kZSk7CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1F
TlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9s
ZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAm
JiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hp
cHMpIHsKKyAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5B
Y2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAg
ICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2Rl
LmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5v
ZGVzLnB1c2gocGFyZW50Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZl
bDogZG9tTm9kZXMubGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmli
dXRlczogWyJyb2xlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Q29tYm9Cb3hSb2xl
Rm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHJlbGF0aW9uc2hp
cHMgPSB7CisgICAgICAgIGNvbWJvYm94OiBbInRleHRib3giLCAibGlzdGJveCIsICJ0cmVlIiwg
ImdyaWQiLCAiZGlhbG9nIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9kZXMgPSBbXTsKKyAgICBs
ZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJv
bGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsK
KyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgdmlzaXRlZFBhcmVu
dHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3aGlsZSAoY2hpbGROb2Rl
KSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICBp
ZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVz
KSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGll
cy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNo
aWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGls
ZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAgZm9yIChs
ZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1l
bnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50
cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9u
c2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8g
ImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsK
KworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTXVsdGlwbGVNYWluQ29udGVudFNlY3Rpb25zID0g
ZnVuY3Rpb24oKSB7CisgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0IG1haW5Db250ZW50
RWxlbWVudHMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUoIm1haW4iKTsKKyAgICBpZiAobWFpbkNvbnRlbnRFbGVtZW50cy5sZW5ndGgg
PiAxKSB7CisgICAgICAgIGRvbU5vZGVzID0gbWFpbkNvbnRlbnRFbGVtZW50czsKKyAgICB9Cisg
ICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21O
b2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsKK1dJLkRlZmF1bHRBdWRpdHMudGVz
dERpYWxvZ3NGb3JMYWJlbHMgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZGlhbG9ncyA9IFdlYklu
c3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiZGlh
bG9nIik7CisgICAgbGV0IGRvbU5vZGVzID0gZGlhbG9ncy5maWx0ZXIoKGRpYWxvZykgPT4gIVdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGRpYWxv
ZykubGFiZWwpOworICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxh
YmVsbGVkYnkiLCAidGl0bGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JJbnZh
bGlkQXJpYUhpZGRlblZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGRvbU5vZGVzID0gQXJy
YXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW5dOm5vdChbYXJp
YS1oaWRkZW49InRydWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWApKTsKKyAgICByZXR1cm4g
e2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21B
dHRyaWJ1dGVzOiBbImFyaWEtaGlkZGVuIl19OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAxZTQyYjE0NTI1ZWY4ZTNiOGY2ZWU2MWRl
MTA4MjhlZTVjOGJmNjc2Li4zMTYyMWZmNTc1YTFmNDNjN2VlNmNkZjliYjNhMzUyZDAxZDE4ZDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBA
IC0yODYsNiArMjg2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHJlZUVsZW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3Jp
cHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qcyI+PC9z
Y3JpcHQ+CisKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJ
LnNoYXJlZEFwcCA9IG5ldyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKICAgICAgICAgV0kuc2hhcmVk
QXBwLmluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNzBkMTNlODViZjNjOWQ0MGQ4ODM1Y2MyYjJhNGE2
MzhhNmQwMjNlLi5kYzQ1M2I5ZGYyY2ZhOGE2MDYwYTM2OGEwYzUxNDMzM2M2MzE5NGYyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDQtMjYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHQgQXVkaXRzIHNjcmlwdCBh
cmUgbWluaWZpZWQgaW4gcmVsZWFzZSBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gY2hlY2sgdGhhdCB3aGl0ZXNwYWNl
IGlzIHByZXNlcnZlZCBpbiBkZWZhdWx0IGF1ZGl0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9h
dWRpdC9ub24tbWluaWZpZWQtZGVmYXVsdC1hdWRpdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRlZmF1bHQtYXVkaXRzLmh0bWw6
IEFkZGVkLgorCiAyMDIxLTA0LTE5ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcuIFVwZGF0ZSBi
YXNlbGluZXMgYW5kIHRlc3QgZXhwZWN0YXRpb25zIGFmdGVyIHIyMjQ3OTEuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRlZmF1bHQtYXVkaXRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ub24tbWluaWZpZWQt
ZGVmYXVsdC1hdWRpdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMmVhZjdlMzY1Mjk3ZGQ1
N2U0M2E0ZWY1Y2IxNmE0MzYzZjBmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRlZmF1bHQtYXVkaXRzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1Rlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGRlZmF1bHQgYXVkaXRzIGFy
ZSBub3QgbWluaWZpZWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBBdWRpdC5Ob25NaW5p
ZmllZERlZmF1bHRBdWRpdHMKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBBdWRpdC5Ob25NaW5pZmll
ZERlZmF1bHRBdWRpdHMuSW5kZW50YXRpb25QcmVzZXJ2ZWQKK1BBU1M6IEV4cGVjdCB0aGF0IGRl
ZmF1bHQgYXVkaXRzIHNvdXJjZSBpcyBwcmVzZW50LgorUEFTUzogRXhwZWN0IHRoYXQgdGhlIHRl
c3RQYXNzIHRlc3QgY2FzZSBoYXMgY29ycmVjdCBudW1iZXIgb2Ygc3BhY2VzIGFuZCBpbmRlbnRh
dGlvbi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L25vbi1taW5p
ZmllZC1kZWZhdWx0LWF1ZGl0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L25v
bi1taW5pZmllZC1kZWZhdWx0LWF1ZGl0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhMmYwNWZlYTM1OTE1
ZmRkODZmOTQ2OGJiZTZjZDg4NTc5NDVmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRlZmF1bHQtYXVkaXRzLmh0bWwKQEAgLTAs
MCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJBdWRpdC5Ob25NaW5pZmllZERlZmF1bHRB
dWRpdHMiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkF1ZGl0
Lk5vbk1pbmlmaWVkRGVmYXVsdEF1ZGl0cy5JbmRlbnRhdGlvblByZXNlcnZlZCIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiRW5zdXJlIHRoYXQgaW5kZW50YXRpb24gaXMgcHJlc2VydmVkIGluIGRl
ZmF1bHQgYXVkaXQgZnVuY3Rpb24gc291cmNlLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoV0kuRGVmYXVsdEF1ZGl0cywgIkV4
cGVjdCB0aGF0IGRlZmF1bHQgYXVkaXRzIHNvdXJjZSBpcyBwcmVzZW50LiIpOworCisgICAgICAg
ICAgICBjb25zdCBleHBlY3RlZExldmVsUGFzc1N0cmluZyA9IGBmdW5jdGlvbiAoKSB7XG4gICAg
cmV0dXJuIHtsZXZlbDogInBhc3MifTtcbn1gOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChXSS5EZWZhdWx0QXVkaXRzLmxldmVsUGFzcy50b1N0cmluZygpLCBleHBlY3Rl
ZExldmVsUGFzc1N0cmluZywgIkV4cGVjdCB0aGF0IHRoZSB0ZXN0UGFzcyB0ZXN0IGNhc2UgaGFz
IGNvcnJlY3QgbnVtYmVyIG9mIHNwYWNlcyBhbmQgaW5kZW50YXRpb24uIik7CisgICAgICAgIH0s
CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RzIHRv
IG1ha2Ugc3VyZSB0aGF0IGRlZmF1bHQgYXVkaXRzIGFyZSBub3QgbWluaWZpZWQuPC9wPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427203</attachid>
            <date>2021-04-27 15:24:51 -0700</date>
            <delta_ts>2021-04-27 16:53:50 -0700</delta_ts>
            <desc>Patch v1.2 - Review note</desc>
            <filename>bug-225009-20210427152450.patch</filename>
            <type>text/plain</type>
            <size>108643</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
OTllNDA5MWUzMzliMTZhMzIyY2U1YzcxZjM5ZDEwNWM3ODI4ODRiLi45ZGMzOWY3NDU4MjQ1YjNm
Mzk1ZjNhZDk5ZTFhYzg3YzRhZWU2YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjEtMDQtMjYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHQgQXVkaXRzIHNjcmlwdCBhcmUgbWlu
aWZpZWQgaW4gcmVsZWFzZSBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEJKIEJ1cmcuCisK
KyAgICAgICAgQ292ZXJlZCBieSBuZXcgdGVzdDoKKyAgICAgICAgLSBpbnNwZWN0b3IvYXVkaXQv
bm9uLW1pbmlmaWVkLWRlZmF1bHQtYXVkaXRzLmh0bWwKKworICAgICAgICBUaGUgZGVmYXVsdCBh
dWRpdHMgaGF2ZSBiZWVuIG1vdmVkIG91dCBvZiBgQXVkaXRNYW5hZ2VyLmpzYCBhbmQgaW50byBh
IHNwZWNpYWwgYERlZmF1bHRBdWRpdHMuanNgIGluIHRoZSBuZXcKKyAgICAgICAgYE5vbk1pbmlm
aWVkYCBkaXJlY3RvcnksIHdoaWNoIGNvbnRhaW5zIEphdmFTY3JpcHQgc291cmNlcyB0aGF0IHNo
b3VsZCBiZSBpbmNsdWRlZCBpbiBgTWFpbi5qc2AgYW5kCisgICAgICAgIGBUZXN0Q29tYmluZWQu
anNgLCBidXQgc2hvdWxkIG5vdCBoYXZlIHdoaXRlc3BhY2Ugc3RyaXBwZWQgZnJvbSB0aGVpciBj
b250ZW50cyBiZWNhdXNlIHRoZSB3aGl0ZXNwYWNlIGlzCisgICAgICAgIGltcG9ydGFudCB0byB0
aGUgc2NyaXB0LiBGb3IgZXhhbXBsZSwgdGhlIHNvdXJjZSBmb3IgdGhlIGRlZmF1bHQgYXVkaXRz
IGFyZSB2aXNpYmxlIHRvIHRoZSB1c2VyLCBhbmQgdGhlcmVmb3JlCisgICAgICAgIHdlIHdhbnQg
dG8gcHJlc2VudCB3ZWxsLWZvcm1hdHRlZCBzb3VyY2UgaW4gdGhvc2UgY29udGV4dHMuCisKKyAg
ICAgICAgKiBTY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsOgorICAgICAgICAtIEFkZGVkIGBO
b25NaW5pZmllZGAgZGlyZWN0b3J5IHRvIGxpc3Qgb2YgZGVmYXVsdCBgaW5wdXREaXJlY3RvcnlQ
YXR0ZXJuYCBleGNlcHRpb25zIGZvciBjb21iaW5pbmcgcmVzb3VyY2VzLgorICAgICAgICAtIEFk
ZGVkIGAtLXNraXAtY29uY2F0ZW5hdGUtdGFnYCBzbyB0aGF0IHdlIGRvbid0IGFkZCB0YWdzIGZv
ciBzY3JpcHQgd2Ugd2lsbCBldmVudHVhbGx5IGFwcGVuZCB0byBhbm90aGVyIHNjcmlwdC4KKyAg
ICAgICAgKiBTY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsOgorICAgICAg
ICAtIEhhbmRsZSBgTm9uTWluaWZpZWRgIGRpcmVjdG9yeSBmb3Igc291cmNlcyB0aGF0IHdpbGwg
YmUgYXBwZW5kZWQgdG8gTWFpbi5qcywgYnV0IHNob3VsZCBub3QgYmUgbWluaWZpZWQuCisgICAg
ICAgIC0gSGFuZGxlIGBOb25NaW5pZmllZGAgZGlyZWN0b3J5IGZvciBzb3VyY2VzIHRoYXQgd2ls
bCBiZSBhcHBlbmRlZCB0byBUZXN0Q29tYmluZWQuanMuCisgICAgICAgIChjb21iaW5lT3JTdHJp
cFJlc291cmNlc0ZvcldlYktpdEFkZGl0aW9ucyk6CisgICAgICAgIC0gRHJpdmUtYnkgZml4IGZv
ciB0eXBvIGluIGNvbWJpbmVPclN0cmlwUmVzb3VyY2VzRm9yV2ViS2l0QWRkaXRpb25zIHRoYXQg
Y2F1c2VkIGVycm9ycyB0byBiZSBlbWl0dGVkIGR1cmluZyBidWlsZHMuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanM6CisgICAgICAgIChXSS5BdWRp
dE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMpOgorICAgICAgICAoV0kuQXVkaXRN
YW5hZ2VyKToKKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRU
ZXN0cy5jb25zdC5sZXZlbFBhc3MpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2Vy
LnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmxldmVsV2Fybik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3Qu
bGV2ZWxGYWlsKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUu
X2FkZERlZmF1bHRUZXN0cy5jb25zdC5sZXZlbEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5sZXZlbFVuc3Vw
cG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2Fk
ZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhRE9NTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAoV0ku
QXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmRhdGFET01BdHRy
aWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2Fk
ZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhRXJyb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1
ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5kYXRhQ3VzdG9tKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRU
ZXN0cy5jb25zdC5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRBY3Rp
dmVEZXNjZW5kYW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5
cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRDaGlsZE5vZGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRD
b21wdXRlZFByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnBy
b3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldENvbnRyb2xsZWROb2Rlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMu
Y29uc3QuZ2V0Rmxvd2VkTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2Vy
LnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LmdldE1vdXNlRXZlbnROb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0
cy5jb25zdC5nZXRPd25lZE5vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdl
ci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRQYXJlbnROb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC5nZXRTZWxlY3RlZENoaWxkTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRN
YW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0Lmhhc0V2ZW50TGlzdGVuZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1
bHRUZXN0cy5jb25zdC5oYXNFdmVudExpc3RlbmVyc0NsaWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC5nZXRSZXNv
dXJjZXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRk
RGVmYXVsdFRlc3RzLmNvbnN0LmdldFJlc291cmNlQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudW5zdXBw
b3J0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRk
RGVmYXVsdFRlc3RzLmhhc0NoaWxkV2l0aFJvbGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVk
aXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RNZW51Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnBy
b3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RHcmlkUm9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRk
RGVmYXVsdFRlc3RzLmNvbnN0LnRlc3RGb3JBcmlhTGFiZWxsZWRCeVNwZWxsaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC50ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0
TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Rm9yTGlua0xhYmVs
cyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGREZWZh
dWx0VGVzdHMuY29uc3QudGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3Rz
LmNvbnN0LnRlc3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0
Rm9yTXVsdGlwbGVMaXZlUmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFn
ZXIucHJvdG90eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdExpc3RCb3hSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90
eXBlLl9hZGREZWZhdWx0VGVzdHMuY29uc3QudGVzdEltYWdlTGFiZWxzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50
ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdl
ci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0VHJlZVJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUu
X2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0UmFkaW9Hcm91cFJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERl
ZmF1bHRUZXN0cy5jb25zdC50ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5j
b25zdC50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0
QnV0dG9uTGFiZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5
cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Um93Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4p
OiBEZWxldGVkLgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVs
dFRlc3RzLmNvbnN0LnRlc3RMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLmNvbnN0
LnRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkF1ZGl0TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0Rm9y
TXVsdGlwbGVNYWluQ29udGVudFNlY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkF1ZGl0
TWFuYWdlci5wcm90b3R5cGUuX2FkZERlZmF1bHRUZXN0cy5jb25zdC50ZXN0RGlhbG9nc0Zvckxh
YmVscyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5BdWRpdE1hbmFnZXIucHJvdG90eXBlLl9hZGRE
ZWZhdWx0VGVzdHMuY29uc3QudGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV0kuQXVkaXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRGVmYXVsdFRlc3RzLnJl
bW92ZVdoaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5q
czogQWRkZWQuCisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsUGFzcyk6CisgICAgICAg
IChXSS5EZWZhdWx0QXVkaXRzLmxldmVsV2Fybik6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRz
LmxldmVsRmFpbCk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmxldmVsRXJyb3IpOgorICAg
ICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5sZXZlbFVuc3VwcG9ydGVkKToKKyAgICAgICAgKFdJLkRl
ZmF1bHRBdWRpdHMuZGF0YURPTU5vZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZGF0
YURPTUF0dHJpYnV0ZXMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy5kYXRhRXJyb3JzKToK
KyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZGF0YUN1c3RvbSk6CisgICAgICAgIChXSS5EZWZh
dWx0QXVkaXRzLmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUpOgorICAgICAgICAoV0kuRGVmYXVs
dEF1ZGl0cy5nZXRBY3RpdmVEZXNjZW5kYW50KToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMu
Z2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldENvbnRyb2xsZWROb2Rlcyk6
CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldEZsb3dlZE5vZGVzKToKKyAgICAgICAgKFdJ
LkRlZmF1bHRBdWRpdHMuZ2V0TW91c2VFdmVudE5vZGUpOgorICAgICAgICAoV0kuRGVmYXVsdEF1
ZGl0cy5nZXRPd25lZE5vZGVzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMuZ2V0UGFyZW50
Tm9kZSk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdldFNlbGVjdGVkQ2hpbGROb2Rlcyk6
CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAg
KFdJLkRlZmF1bHRBdWRpdHMuaGFzRXZlbnRMaXN0ZW5lcnNDbGljayk6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLmdldFJlc291cmNlcyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLmdl
dFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnVuc3VwcG9ydGVk
KToKKyAgICAgICAgKGhhc0NoaWxkV2l0aFJvbGUpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0
cy50ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1bHRB
dWRpdHMudGVzdEdyaWRSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChXSS5EZWZh
dWx0QXVkaXRzLnRlc3RGb3JBcmlhTGFiZWxsZWRCeVNwZWxsaW5nKToKKyAgICAgICAgKFdJLkRl
ZmF1bHRBdWRpdHMudGVzdEZvck11bHRpcGxlQmFubmVycyk6CisgICAgICAgIChXSS5EZWZhdWx0
QXVkaXRzLnRlc3RGb3JMaW5rTGFiZWxzKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRpdHMudGVz
dFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAgICAoV0kuRGVmYXVsdEF1
ZGl0cy50ZXN0VGFibGVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChXSS5EZWZh
dWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zKToKKyAgICAgICAgKFdJLkRlZmF1
bHRBdWRpdHMudGVzdExpc3RCb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLnRlc3RJbWFnZUxhYmVscyk6CisgICAgICAgIChXSS5EZWZhdWx0QXVk
aXRzLnRlc3RGb3JBcmlhSGlkZGVuRmFsc2UpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50
ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAgICAgICAgKFdJLkRlZmF1bHRBdWRp
dHMudGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RGZWVkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAgICAo
V0kuRGVmYXVsdEF1ZGl0cy50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKToKKyAg
ICAgICAgKFdJLkRlZmF1bHRBdWRpdHMudGVzdEJ1dHRvbkxhYmVscyk6CisgICAgICAgIChXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6CisgICAgICAgIChX
SS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pOgorICAgICAg
ICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Q29tYm9Cb3hSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbik6
CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZU1haW5Db250ZW50U2Vj
dGlvbnMpOgorICAgICAgICAoV0kuRGVmYXVsdEF1ZGl0cy50ZXN0RGlhbG9nc0ZvckxhYmVscyk6
CisgICAgICAgIChXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JJbnZhbGlkQXJpYUhpZGRlblZhbHVl
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKwogMjAyMS0wNC0xOSAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2
ODY5MSAmJiByMjcwMTM0KTogV2ViIEluc3BlY3RvcjogQ2xpY2tpbmcgb24gZ28tdG8gYXJyb3cg
aW4gQ29tcHV0ZWQgcGFuZWwgbm8gbG9uZ2VyIHdvcmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvU2NyaXB0cy9jb21iaW5lLXJlc291cmNlcy5wbCBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9TY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsCmluZGV4IDgyNjM3ODYwOTNlMjIz
ODA2MTcwMWY5MmQ1ODYyOWJiYTVkZWNmMzMuLjE4MTEzMGZlOTdkMDZmOWYzYWY2Yjg2Mzc5ZTdl
M2EzNjhiNWU5ZDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2Nv
bWJpbmUtcmVzb3VyY2VzLnBsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2Nv
bWJpbmUtcmVzb3VyY2VzLnBsCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAog
Ci0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBAIG91ciAk
aHRtbERpcmVjdG9yeTsKIG91ciAkaHRtbEZpbGU7CiBvdXIgJHN0cmlwOwogb3VyICR2ZXJib3Nl
Oworb3VyICRza2lwQ29uY2F0ZW5hdGVUYWc7CiAKIEdldE9wdGlvbnMoJ291dHB1dC1kaXI9cycg
PT4gXCRvdXRwdXREaXJlY3RvcnksCiAgICAgICAgICAgICdvdXRwdXQtc2NyaXB0LW5hbWU9cycg
PT4gXCRvdXRwdXRTY3JpcHROYW1lLApAQCAtNDcsMTAgKzQ4LDExIEBAIEdldE9wdGlvbnMoJ291
dHB1dC1kaXI9cycgPT4gXCRvdXRwdXREaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1s
LWRpcj1zJyA9PiBcJGh0bWxEaXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1sPXMnID0+
IFwkaHRtbEZpbGUsCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBcJHZlcmJvc2UsCi0gICAgICAg
ICAgICdzdHJpcCcgPT4gXCRzdHJpcCk7CisgICAgICAgICAgICdzdHJpcCcgPT4gXCRzdHJpcCwK
KyAgICAgICAgICAgJ3NraXAtY29uY2F0ZW5hdGUtdGFnJyA9PiBcJHNraXBDb25jYXRlbmF0ZVRh
Zyk7CiAKIHVubGVzcyAoZGVmaW5lZCAkaHRtbEZpbGUgYW5kIGRlZmluZWQgJGRlcml2ZWRTb3Vy
Y2VzRGlyZWN0b3J5IGFuZCBkZWZpbmVkICRvdXRwdXREaXJlY3RvcnkgYW5kIChkZWZpbmVkICRz
dHJpcCBvciBkZWZpbmVkICRvdXRwdXRTY3JpcHROYW1lIG9yIGRlZmluZWQgJG91dHB1dFN0eWxl
c2hlZXROYW1lKSkgewotICAgIHByaW50ICJVc2FnZTogJDAgLS1pbnB1dC1odG1sIDxwYXRoPiAt
LWRlcml2ZWQtc291cmNlcy1kaXIgPHBhdGg+IC0tb3V0cHV0LWRpciA8cGF0aD4gWy0tb3V0cHV0
LXNjcmlwdC1uYW1lIDxuYW1lPl0gWy0tb3V0cHV0LXN0eWxlLW5hbWUgPG5hbWU+XSBbLS1zdHJp
cF1cbiI7CisgICAgcHJpbnQgIlVzYWdlOiAkMCAtLWlucHV0LWh0bWwgPHBhdGg+IC0tZGVyaXZl
ZC1zb3VyY2VzLWRpciA8cGF0aD4gLS1vdXRwdXQtZGlyIDxwYXRoPiBbLS1vdXRwdXQtc2NyaXB0
LW5hbWUgPG5hbWU+XSBbLS1vdXRwdXQtc3R5bGUtbmFtZSA8bmFtZT5dIFstLXN0cmlwXSBbLS1z
a2lwLWNvbmNhdGVuYXRlLXRhZ11cbiI7CiAgICAgZXhpdDsKIH0KIApAQCAtMTE4LDE1ICsxMjAs
MTUgQEAgc3ViIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigkKQogICAgICRoZWFk
Q29udGVudHMgPX4gcy8kd2hpdGVzcGFjZUNvbnN1bWluZ1RhZ1BhdHRlcm4vL2dpOwogfQogCi1t
eSAkaW5wdXREaXJlY3RvcnlQYXR0ZXJuID0gIig/IVdlYktpdEFkZGl0aW9uc1wvKSg/IUV4dGVy
bmFsXC8pKD8hV29ya2Vyc1wvKVteXCJdKiI7CitteSAkaW5wdXREaXJlY3RvcnlQYXR0ZXJuID0g
Iig/IVdlYktpdEFkZGl0aW9uc1wvKSg/IUV4dGVybmFsXC8pKD8hV29ya2Vyc1wvKSg/IU5vbk1p
bmlmaWVkXC8pW15cIl0qIjsKICRpbnB1dERpcmVjdG9yeVBhdHRlcm4gPSAkaW5wdXREaXJlY3Rv
cnkgLiAiXC9bXlwiXSoiIGlmICRpbnB1dERpcmVjdG9yeTsKIAogaWYgKGRlZmluZWQoJHN0cmlw
KSkgewogICAgIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0dGVybigiPGxpbmsgcmVsPVwi
c3R5bGVzaGVldFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVybilcIj4iKTsKICAgICBz
dHJpcEluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oIjxzY3JpcHQgc3JjPVwiKCRpbnB1dERp
cmVjdG9yeVBhdHRlcm4pXCI+PFwvc2NyaXB0PiIpOwogfSBlbHNlIHsKLSAgICBjb25jYXRlbmF0
ZUluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFN0eWxlc2hlZXROYW1lLCAiPGxp
bmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0dGVybilcIj4i
LCAiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIkb3V0cHV0U3R5bGVzaGVldE5hbWVc
Ij4iKSBpZiBkZWZpbmVkICRvdXRwdXRTdHlsZXNoZWV0TmFtZTsKLSAgICBjb25jYXRlbmF0ZUlu
Y2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFNjcmlwdE5hbWUsICI8c2NyaXB0IHNy
Yz1cIigkaW5wdXREaXJlY3RvcnlQYXR0ZXJuKVwiPjxcL3NjcmlwdD4iLCAiPHNjcmlwdCBzcmM9
XCIkb3V0cHV0U2NyaXB0TmFtZVwiPjwvc2NyaXB0PiIpIGlmIGRlZmluZWQgJG91dHB1dFNjcmlw
dE5hbWU7CisgICAgY29uY2F0ZW5hdGVJbmNsdWRlZEZpbGVzTWF0Y2hpbmdQYXR0ZXJuKCRvdXRw
dXRTdHlsZXNoZWV0TmFtZSwgIjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiKCRpbnB1
dERpcmVjdG9yeVBhdHRlcm4pXCI+IiwgZGVmaW5lZCAkc2tpcENvbmNhdGVuYXRlVGFnID8gIiIg
OiAiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIkb3V0cHV0U3R5bGVzaGVldE5hbWVc
Ij4iKSBpZiBkZWZpbmVkICRvdXRwdXRTdHlsZXNoZWV0TmFtZTsKKyAgICBjb25jYXRlbmF0ZUlu
Y2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJG91dHB1dFNjcmlwdE5hbWUsICI8c2NyaXB0IHNy
Yz1cIigkaW5wdXREaXJlY3RvcnlQYXR0ZXJuKVwiPjxcL3NjcmlwdD4iLCBkZWZpbmVkICRza2lw
Q29uY2F0ZW5hdGVUYWcgPyAiIiA6ICI8c2NyaXB0IHNyYz1cIiRvdXRwdXRTY3JpcHROYW1lXCI+
PC9zY3JpcHQ+IikgaWYgZGVmaW5lZCAkb3V0cHV0U2NyaXB0TmFtZTsKIH0KIAogJGh0bWxDb250
ZW50cyA9fiBzLzxoZWFkPi4qPFwvaGVhZD4vPGhlYWQ+JGhlYWRDb250ZW50czxcL2hlYWQ+L3Np
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWlu
dGVyZmFjZS1yZXNvdXJjZXMucGwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5
LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbAppbmRleCBmZGJhZDM4M2IyZWZiNmMyYmI5NTRm
NzVlNWUzMTczZjNjNDYxNmU4Li5jYjE0MzcxOTQ2YTc1ZGExYThjNzEyYzljZDZhNTNmOTBiYmQ0
NmNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXIt
aW50ZXJmYWNlLXJlc291cmNlcy5wbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0
cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbApAQCAtMSw2ICsxLDYgQEAKICMhL3Vz
ci9iaW4vZW52IHBlcmwKIAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEy
LDcgKzExMiw3IEBAIHN1YiByZWFkTGljZW5zZUZpbGUoJCkKIAogbXkgJGluc3BlY3RvckxpY2Vu
c2UgPSA8PCdFT0YnOwogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVr
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgQW50aG9u
eSBSaWNhdWQgPHJpa0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgSm9z
ZXBoIFBlY29yYXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjM4LDcgKzIzOCw3IEBAIHN1
YiBjb21iaW5lT3JTdHJpcFJlc291cmNlc0ZvcldlYktpdEFkZGl0aW9ucygpIHsKICAgICAgICAg
bXkgJGZvdW5kSlNGaWxlID0gMDsKICAgICAgICAgbXkgJGZvdW5kQ1NTRmlsZSA9IDA7CiAgICAg
ICAgIGZvcmVhY2ggbXkgJGZpbGUgKEBmaWxlcykgewotICAgICAgICAgICAgbXkgJHBhdGggPSBG
aWxlOjpTcGVjLT5jYXRkaXIoJCR3ZWJJbnNwZWN0b3JVSUFkZGl0aW9uc0RpciwgJGZpbGUpOwor
ICAgICAgICAgICAgbXkgJHBhdGggPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHdlYkluc3BlY3RvclVJ
QWRkaXRpb25zRGlyLCAkZmlsZSk7CiAgICAgICAgICAgICBuZXh0IGlmIC1kICRwYXRoOwogICAg
ICAgICAgICAgaWYgKCRmaWxlID1+IC9cLmpzJC8pIHsKICAgICAgICAgICAgICAgICBkZWJ1Z0xv
ZygiRm91bmQgYSBKYXZhU2NyaXB0IGZpbGUgdG8gY29tYmluZTogJGZpbGUiKTsKQEAgLTM0Niwx
MiArMzQ2LDI5IEBAIGlmICgkc2hvdWxkQ29tYmluZU1haW4pIHsKICAgICAgICAnLS1vdXRwdXQt
ZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAogICAgICAgICctLW91dHB1dC1zY3JpcHQtbmFtZScs
ICdUaHJlZS5qcycpOwogCisgICAgIyBDb21iaW5lIG5vbi1taW5pZmllZCBKYXZhU2NyaXB0IGZp
bGVzIGluIFByb2R1Y3Rpb24gYnVpbGRzIGludG8gYSBzaW5nbGUgZmlsZSAoTm9uTWluaWZpZWQu
anMpLCB3aGljaCB3aWxsIGJlCisgICAgIyBhcHBlbmRlZCB0byBNYWluLmpzIGFmdGVyIE1haW4u
anMgaGFzIGJlZW4gbWluaWZpZWQuCisgICAgc3lzdGVtKCRwZXJsLCAkY29tYmluZVJlc291cmNl
c0NtZCwKKyAgICAgICAnLS1pbnB1dC1kaXInLCAnTm9uTWluaWZpZWQnLAorICAgICAgICctLWlu
cHV0LWh0bWwnLCAkZGVyaXZlZFNvdXJjZXNNYWluSFRNTCwKKyAgICAgICAnLS1pbnB1dC1odG1s
LWRpcicsICR1aVJvb3QsCisgICAgICAgJy0tZGVyaXZlZC1zb3VyY2VzLWRpcicsICRkZXJpdmVk
U291cmNlc0RpciwKKyAgICAgICAnLS1vdXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAor
ICAgICAgICctLW91dHB1dC1zY3JpcHQtbmFtZScsICdOb25NaW5pZmllZC5qcycsCisgICAgICAg
Jy0tc2tpcC1jb25jYXRlbmF0ZS10YWcnKTsKKwogICAgICMgUmVtb3ZlIGNvbnNvbGUuYXNzZXJ0
IGNhbGxzIGZyb20gdGhlIE1haW4uanMgZmlsZS4KICAgICBteSAkZGVyaXZlZFNvdXJjZXNNYWlu
SlMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNlc0RpciwgJ01haW4uanMnKTsK
ICAgICBzeXN0ZW0oJHBlcmwsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHNjcmlwdHNSb290LCAncmVt
b3ZlLWNvbnNvbGUtYXNzZXJ0cy5wbCcpLAogICAgICAgICAnLS1pbnB1dC1zY3JpcHQnLCAkZGVy
aXZlZFNvdXJjZXNNYWluSlMsCiAgICAgICAgICctLW91dHB1dC1zY3JpcHQnLCAkZGVyaXZlZFNv
dXJjZXNNYWluSlMpOwogCisgICAgIyBSZW1vdmUgY29uc29sZS5hc3NlcnQgY2FsbHMgZnJvbSB0
aGUgTm9uTWluaWZpZWQuanMgZmlsZS4KKyAgICBteSAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmll
ZEpTID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNEaXIsICdOb25NaW5pZmll
ZC5qcycpOworICAgIHN5c3RlbSgkcGVybCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkc2NyaXB0c1Jv
b3QsICdyZW1vdmUtY29uc29sZS1hc3NlcnRzLnBsJyksCisgICAgICAgICctLWlucHV0LXNjcmlw
dCcsICRkZXJpdmVkU291cmNlc05vbk1pbmlmaWVkSlMsCisgICAgICAgICctLW91dHB1dC1zY3Jp
cHQnLCAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmllZEpTKTsKKwogICAgICMgRml4IEltYWdlIFVS
THMgaW4gdGhlIE1haW4uY3NzIGZpbGUgYnkgcmVtb3ZpbmcgdGhlICIuLi8iLgogICAgIG15ICRk
ZXJpdmVkU291cmNlc01haW5DU1MgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVkU291cmNl
c0RpciwgJ01haW4uY3NzJyk7CiAgICAgaWYgKG9wZW4oSU5QVVRfTUFJTiwgJzwnLCAkZGVyaXZl
ZFNvdXJjZXNNYWluQ1NTKSkgewpAQCAtNDA2LDYgKzQyMyw5IEBAIGlmICgkc2hvdWxkQ29tYmlu
ZU1haW4pIHsKICAgICBteSAkZGVyaXZlZFNvdXJjZXNUaHJlZWpzSlMgPSBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRkZXJpdmVkU291cmNlc0RpciwgJ1RocmVlLmpzJyk7CiAgICAgc3lzdGVtKHFxKCIk
cHl0aG9uIiAiJGpzTWluU2NyaXB0IiA8ICIkZGVyaXZlZFNvdXJjZXNUaHJlZWpzSlMiID4+ICIk
dGFyZ2V0VGhyZWVqc0pTIikpIGFuZCBkaWUgIkZhaWxlZCB0byBtaW5pZnkgJGRlcml2ZWRTb3Vy
Y2VzVGhyZWVqc0pTOiAkISI7CiAKKyAgICAjIEFwcGVuZCBub24tbWluaWZpZWQgSmF2YVNjcmlw
dCB0byBNYWluLmpzLgorICAgIGFwcGVuZEZpbGUoJHRhcmdldE1haW5KUywgJGRlcml2ZWRTb3Vy
Y2VzTm9uTWluaWZpZWRKUyk7CisKICAgICAjIENvcHkgb3ZlciB0aGUgSW1hZ2VzIGRpcmVjdG9y
eS4KICAgICBkaXR0byhGaWxlOjpTcGVjLT5jYXRkaXIoJHVpUm9vdCwgJ0ltYWdlcycpLCBGaWxl
OjpTcGVjLT5jYXRkaXIoJHRhcmdldFJlc291cmNlUGF0aCwgJ0ltYWdlcycpKTsKIApAQCAtNDQz
LDYgKzQ2MywxOSBAQCBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAKICAgICBteSAkZGVyaXZl
ZFNvdXJjZXNUZXN0SFRNTCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGly
LCAnVGVzdC5odG1sJyk7CiAgICAgbXkgJGRlcml2ZWRTb3VyY2VzVGVzdEpTID0gRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNEaXIsICdUZXN0Q29tYmluZWQuanMnKTsKKworICAg
ICMgQ29tYmluZSBub24tbWluaWZpZWQgSmF2YVNjcmlwdCBmaWxlcyBpbiBQcm9kdWN0aW9uIGJ1
aWxkcyBpbnRvIHRoZSBzYW1lIFRlc3RDb21iaW5lZC5qcywgYmVjYXVzZSB0ZXN0IGZpbGVzIGFy
ZSBub3QgbWluaWZpZWQuCisgICAgc3lzdGVtKCRwZXJsLCAkY29tYmluZVJlc291cmNlc0NtZCwK
KyAgICAgICAnLS1pbnB1dC1kaXInLCAnTm9uTWluaWZpZWQnLAorICAgICAgICctLWlucHV0LWh0
bWwnLCAkZGVyaXZlZFNvdXJjZXNUZXN0SFRNTCwKKyAgICAgICAnLS1pbnB1dC1odG1sLWRpcics
ICR1aVJvb3QsCisgICAgICAgJy0tZGVyaXZlZC1zb3VyY2VzLWRpcicsICRkZXJpdmVkU291cmNl
c0RpciwKKyAgICAgICAnLS1vdXRwdXQtZGlyJywgJGRlcml2ZWRTb3VyY2VzRGlyLAorICAgICAg
ICctLW91dHB1dC1zY3JpcHQtbmFtZScsICdOb25NaW5pZmllZFRlc3RDb21iaW5lZC5qcycsCisg
ICAgICAgJy0tc2tpcC1jb25jYXRlbmF0ZS10YWcnKTsKKworICAgIG15ICRkZXJpdmVkU291cmNl
c05vbk1pbmlmaWVkVGVzdEpTID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNE
aXIsICdOb25NaW5pZmllZFRlc3RDb21iaW5lZC5qcycpOworCiAgICAgIyBDb21iaW5lIHRoZSBD
b2RlTWlycm9yIEphdmFTY3JpcHQgZmlsZXMgaW50byBzaW5nbGUgZmlsZSAoVGVzdENvZGVNaXJy
b3IuanMpLgogICAgIHN5c3RlbSgkcGVybCwgJGNvbWJpbmVSZXNvdXJjZXNDbWQsCiAgICAgICAg
ICctLWlucHV0LWRpcicsICdFeHRlcm5hbC9Db2RlTWlycm9yJywKQEAgLTQ3Niw2ICs1MDksOSBA
QCBpZiAoJHNob3VsZENvbWJpbmVUZXN0KSB7CiAgICAgIyBBcHBlbmQgVGVzdENvbWJpbmVkLmpz
IHRvIHRoZSBsaWNlbnNlIHRoYXQgd2FzIGV4cG9ydGVkIGFib3ZlLgogICAgIGFwcGVuZEZpbGUo
JHRhcmdldFRlc3RKUywgJGRlcml2ZWRTb3VyY2VzVGVzdEpTKTsKIAorICAgICMgQXBwZW5kIHRo
ZSBub24tbWluaWZpZWQgc291cmNlcyB0byBUZXN0Q29tYmluZWQuanMuCisgICAgYXBwZW5kRmls
ZSgkdGFyZ2V0VGVzdEpTLCAkZGVyaXZlZFNvdXJjZXNOb25NaW5pZmllZFRlc3RKUyk7CisKICAg
ICAjIEFwcGVuZCBDb2RlTWlycm9yLmpzIHRvIHRoZSBsaWNlbnNlIHRoYXQgd2FzIGV4cG9ydGVk
IGFib3ZlLgogICAgIG15ICRkZXJpdmVkU291cmNlc0NvZGVNaXJyb3JKUyA9IEZpbGU6OlNwZWMt
PmNhdGZpbGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnVGVzdENvZGVNaXJyb3IuanMnKTsKICAgICBh
cHBlbmRGaWxlKCR0YXJnZXRDb2RlTWlycm9ySlMsICRkZXJpdmVkU291cmNlc0NvZGVNaXJyb3JK
Uyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9BdWRpdE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMKaW5kZXggYmY1MDJkYmNmZjNkYzIwYjIw
YTkxYWRlZWNhNDI4OGM2MWEyNWUyZS4uNGEwNDEzOTUxMGUzY2I5ZmIxNTdiZTdmZWFmMzE1YTY5
NDg4ODBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0F1ZGl0TWFuYWdlci5qcwpAQCAtMzM5LDcyOCArMzM5
LDcyIEBAIFdJLkF1ZGl0TWFuYWdlciA9IGNsYXNzIEF1ZGl0TWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgX2FkZERlZmF1bHRUZXN0cygpCiAgICAgewotICAgICAgICBjb25zdCBsZXZl
bFBhc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIn07
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgbGV2ZWxXYXJuID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICByZXR1cm4ge2xldmVsOiAid2FybiJ9OwotICAgICAgICB9OwotCi0gICAgICAg
IGNvbnN0IGxldmVsRmFpbCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHtsZXZl
bDogImZhaWwifTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBsZXZlbEVycm9yID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiAiZXJyb3IifTsKLSAgICAgICAg
fTsKLQotICAgICAgICBjb25zdCBsZXZlbFVuc3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICByZXR1cm4ge2xldmVsOiAidW5zdXBwb3J0ZWQifTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCBkYXRhRE9NTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XX07Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgY29uc3QgZGF0YURPTUF0dHJpYnV0ZXMgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IEFycmF5LmZyb20oZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiW2lkXSIpKSwgZG9tQXR0cmlidXRlczogWyJpZCJdfTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBjb25zdCBkYXRhRXJyb3JzID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB0aHJvdyBFcnJvcigidGhpcyBlcnJvciB3YXMgdGhyb3duIGZyb20gaW5zaWRlIHRo
ZSBhdWRpdCB0ZXN0IGNvZGUuIik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZGF0YUN1
c3RvbSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBh
OiAxLCBiOiBbMl0sIGM6IHtrZXk6IDN9fTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBn
ZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1
cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImxpbmsiKSwgZG9tQXR0cmlidXRlczogWyJy
b2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdldEFjdGl2ZURlc2NlbmRhbnQg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07
Ci0gICAgICAgICAgICBsZXQgYWN0aXZlRGVzY2VuZGFudCA9IFdlYkluc3BlY3RvckF1ZGl0LkFj
Y2Vzc2liaWxpdHkuZ2V0QWN0aXZlRGVzY2VuZGFudChkb2N1bWVudC5ib2R5KTsKLSAgICAgICAg
ICAgIGlmIChhY3RpdmVEZXNjZW5kYW50KQotICAgICAgICAgICAgICAgIHJlc3VsdC5kb21Ob2Rl
cyA9IFthY3RpdmVEZXNjZW5kYW50XTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Q2hpbGROb2RlcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldENoaWxkTm9kZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVs
OiAicGFzcyIsIGRvbU5vZGVzOiBjaGlsZE5vZGVzIHx8IFtdfTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCBnZXRDb21wdXRlZFByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGxldCBkb21BdHRyaWJ1dGVzID0gWyJhbHQiLCAiYXJpYS1hdG9taWMiLCAiYXJpYS1idXN5
IiwgImFyaWEtY2hlY2tlZCIsICJhcmlhLWN1cnJlbnQiLCAiYXJpYS1kaXNhYmxlZCIsICJhcmlh
LWV4cGFuZGVkIiwgImFyaWEtaGFzcG9wdXAiLCAiYXJpYS1oaWRkZW4iLCAiYXJpYS1pbnZhbGlk
IiwgImFyaWEtbGFiZWwiLCAiYXJpYS1sYWJlbGxlZGJ5IiwgImFyaWEtbGV2ZWwiLCAiYXJpYS1s
aXZlIiwgImFyaWEtcHJlc3NlZCIsICJhcmlhLXJlYWRvbmx5IiwgImFyaWEtcmVsZXZhbnQiLCAi
YXJpYS1yZXF1aXJlZCIsICJhcmlhLXNlbGVjdGVkIiwgInJvbGUiLCAidGl0bGUiXS5maWx0ZXIo
KGF0dHJpYnV0ZSkgPT4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSk7Ci0g
ICAgICAgICAgICBsZXQgY29tcHV0ZWRQcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNj
ZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAg
ICAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRv
bUF0dHJpYnV0ZXMsIC4uLihjb21wdXRlZFByb3BlcnRpZXMgfHwge30pfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCBnZXRDb250cm9sbGVkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGxldCBjb250cm9sbGVkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldENvbnRyb2xsZWROb2Rlcyhkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IGNvbnRyb2xsZWROb2RlcyB8fCBbXX07Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0Rmxvd2VkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGxldCBmbG93ZWROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuZ2V0Rmxvd2VkTm9kZXMoZG9jdW1lbnQuYm9keSk7Ci0gICAgICAgICAgICByZXR1cm4ge2xl
dmVsOiAicGFzcyIsIGRvbU5vZGVzOiBmbG93ZWROb2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgY29uc3QgZ2V0TW91c2VFdmVudE5vZGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGxldCByZXN1bHQgPSB7bGV2ZWw6ICJwYXNzIn07Ci0gICAgICAgICAgICBsZXQgbW91c2VF
dmVudE5vZGUgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE1vdXNlRXZlbnRO
b2RlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAgICAgaWYgKG1vdXNlRXZlbnROb2RlKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5kb21Ob2RlcyA9IFttb3VzZUV2ZW50Tm9kZV07Ci0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdldE93bmVk
Tm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBvd25lZE5vZGVzID0gV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRPd25lZE5vZGVzKGRvY3VtZW50LmJvZHkpOwot
ICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczogb3duZWROb2RlcyB8
fCBbXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgZ2V0UGFyZW50Tm9kZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHtsZXZlbDogInBhc3MifTsKLSAgICAg
ICAgICAgIGxldCBwYXJlbnROb2RlID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRQYXJlbnROb2RlKGRvY3VtZW50LmJvZHkpOwotICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmRvbU5vZGVzID0gW3BhcmVudE5vZGVdOwotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBnZXRTZWxl
Y3RlZENoaWxkTm9kZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBzZWxlY3RlZENo
aWxkTm9kZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFNlbGVjdGVkQ2hp
bGROb2Rlcyhkb2N1bWVudC5ib2R5KTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNz
IiwgZG9tTm9kZXM6IHNlbGVjdGVkQ2hpbGROb2RlcyB8fCBbXX07Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGxldCBkb21BdHRyaWJ1dGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmF0dHJpYnV0ZXMp
LmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUubmFtZS5zdGFydHNXaXRoKCJvbiIpKTsK
LSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5i
b2R5XSwgZG9tQXR0cmlidXRlcywgaGFzRXZlbnRMaXN0ZW5lcnM6IFdlYkluc3BlY3RvckF1ZGl0
LkRPTS5oYXNFdmVudExpc3RlbmVycyhkb2N1bWVudC5ib2R5KX07Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgY29uc3QgaGFzRXZlbnRMaXN0ZW5lcnNDbGljayA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgbGV0IGRvbUF0dHJpYnV0ZXMgPSBbIm9uY2xpY2siXS5maWx0ZXIoKGF0dHJpYnV0ZSkg
PT4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRvbUF0dHJp
YnV0ZXMsIGhhc0NsaWNrRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yQXVkaXQuRE9NLmhhc0V2
ZW50TGlzdGVuZXJzKGRvY3VtZW50LmJvZHksICJjbGljayIpfTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCBnZXRSZXNvdXJjZXMgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVy
biB7bGV2ZWw6ICJwYXNzIiwgcmVzb3VyY2VzOiBXZWJJbnNwZWN0b3JBdWRpdC5SZXNvdXJjZXMu
Z2V0UmVzb3VyY2VzKCl9OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGdldFJlc291cmNl
Q29udGVudCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IHJlc291cmNlcyA9IFdlYklu
c3BlY3RvckF1ZGl0LlJlc291cmNlcy5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgICAgIGxldCBt
YWluUmVzb3VyY2UgPSByZXNvdXJjZXMuZmluZCgocmVzb3VyY2UpID0+IHJlc291cmNlLnVybCA9
PT0gd2luZG93LmxvY2F0aW9uLmhyZWYpOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogInBh
c3MiLCBtYWluUmVzb3VyY2UsIHJlc291cmNlQ29udGVudDogV2ViSW5zcGVjdG9yQXVkaXQuUmVz
b3VyY2VzLmdldFJlc291cmNlQ29udGVudChtYWluUmVzb3VyY2UuaWQpfTsKLSAgICAgICAgfTsK
LQotICAgICAgICBjb25zdCB1bnN1cHBvcnRlZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
dGhyb3cgRXJyb3IoInRoaXMgdGVzdCBzaG91bGQgbm90IGJlIHN1cHBvcnRlZC4iKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAg
ICAgICAgICAgIG1lbnU6IFsibWVudWl0ZW0iLCAibWVudWl0ZW1jaGVja2JveCIsICJtZW51aXRl
bXJhZGlvIl0sCi0gICAgICAgICAgICAgICAgbWVudWJhcjogWyJtZW51aXRlbSIsICJtZW51aXRl
bWNoZWNrYm94IiwgIm1lbnVpdGVtcmFkaW8iXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5l
dyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVj
dGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAg
ICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwot
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAg
ICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29t
cHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRp
ZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhh
c0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGlu
ZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7
Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRp
dC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICgh
aGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9s
ZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xl
dmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRy
aWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEdyaWRS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc3Qg
cmVsYXRpb25zaGlwcyA9IHsKLSAgICAgICAgICAgICAgICBncmlkOiBbInJvdyIsICJyb3dncm91
cCJdLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAg
ICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKLSAgICAgICAgICAgIGZ1bmN0
aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgewotICAgICAgICAgICAg
ICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgIGlmICghY2hpbGROb2Rl
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRQYXJl
bnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAo
Y2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2Rl
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xlKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUu
Zmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
Y2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
b3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxl
dCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVu
dHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRl
ZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5v
ZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJm
YWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJvbShkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1sYWJlbGVkYnldIikpOwotICAgICAgICAgICAgcmV0
dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2Rlcywg
ZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsZWRieSJdfTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBjb25zdCB0ZXN0Rm9yTXVsdGlwbGVCYW5uZXJzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCBiYW5uZXJzID0gV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJiYW5uZXIi
KTsKLSAgICAgICAgICAgIGlmIChiYW5uZXJzLmxlbmd0aCA+IDEpCi0gICAgICAgICAgICAgICAg
ZG9tTm9kZXMgPSBiYW5uZXJzOwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMu
bGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xl
Il19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGb3JMaW5rTGFiZWxzID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgbGlua3MgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nl
c3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImxpbmsiKTsKLSAgICAgICAgICAg
IGxldCBkb21Ob2RlcyA9IGxpbmtzLmZpbHRlcigobGluaykgPT4gIVdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGxpbmspLmxhYmVsKTsKLSAgICAg
ICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwg
ZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnki
LCAidGl0bGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdFJvd0dyb3VwUm9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJl
bGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgcm93Z3JvdXA6IFsicm93Il0sCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAgICAgICBs
ZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hp
bGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNo
aWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChjaGlsZE5v
ZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNo
aWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRp
dC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9E
RSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRS
b2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2Rl
Lmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxk
LCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUg
PSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAobGV0IHJv
bGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5v
ZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0
ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5o
YXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENo
aWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5v
ZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBh
c3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0g
ICAgICAgIGNvbnN0IHRlc3RUYWJsZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAgICAg
IHRhYmxlOiBbInJvdyIsICJyb3dncm91cCJdLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3
IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0
ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAg
ICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0K
LSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21w
dXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGll
cy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFz
Q2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5n
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFo
YXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xl
XSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2
ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJp
YnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9yTXVs
dGlwbGVMaXZlUmVnaW9ucyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc3QgbGl2ZVJl
Z2lvblJvbGVzID0gWyJhbGVydCIsICJsb2ciLCAic3RhdHVzIiwgIm1hcnF1ZWUiLCAidGltZXIi
XTsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IGxpdmVS
ZWdpb25zID0gbGl2ZVJlZ2lvblJvbGVzLnJlZHVjZSgoYSwgYikgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiBhLmNvbmNhdChXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUoYikpOwotICAgICAgICAgICAgfSwgW10pOwotICAgICAgICAg
ICAgbGl2ZVJlZ2lvbnMgPSBsaXZlUmVnaW9ucy5jb25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1saXZlPSJwb2xpdGUiXSwgW2FyaWEtbGl2ZT0iYXNzZXJ0
aXZlIl1gKSkpOwotICAgICAgICAgICAgaWYgKGxpdmVSZWdpb25zLmxlbmd0aCA+IDEpCi0gICAg
ICAgICAgICAgICAgZG9tTm9kZXMgPSBsaXZlUmVnaW9uczsKLSAgICAgICAgICAgIHJldHVybiB7
bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJ3YXJuIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0
dHJpYnV0ZXM6IFsiYXJpYS1saXZlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRl
c3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgbGlzdGJveDogWyJv
cHRpb24iXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsK
LSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxk
Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVk
UGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hp
bGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxk
Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5v
ZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGRO
b2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJl
bnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGgg
PyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEltYWdlTGFiZWxzID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBsZXQgaW1hZ2VzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJpbWciKTsKLSAgICAgICAgICAgIGxldCBkb21O
b2RlcyA9IGltYWdlcy5maWx0ZXIoKGltYWdlKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoaW1hZ2UpLmxhYmVsKTsKLSAgICAgICAgICAg
IHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9k
ZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0
bGUiLCAiYWx0Il19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGb3JBcmlhSGlk
ZGVuRmFsc2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBkb21Ob2RlcyA9IEFycmF5
LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2FyaWEtaGlkZGVuPSJmYWxzZSJdYCkp
OwotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gIndhcm4iIDog
InBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWhpZGRlbiJdfTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0VHJlZVJvbGVGb3JSZXF1aXJlZENoaWxkcmVuID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewotICAgICAg
ICAgICAgICAgIHRyZWU6IFsidHJlZWl0ZW0iLCAiZ3JvdXAiXSwKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFy
ZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5v
ZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9k
ZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2Rl
KQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVu
dE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAg
ICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRp
ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVz
KHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2Rl
cygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9s
ZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5u
ZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlv
bnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAg
ICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9u
c2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJl
bnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVz
LCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3Qg
dGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKLSAgICAgICAgICAgICAgICByYWRpb2dy
b3VwOiBbInJhZGlvIl0sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbGV0IGRvbU5vZGVz
ID0gW107Ci0gICAgICAgICAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OwotICAgICAg
ICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0g
ICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYg
KCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAg
dmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKLQotICAgICAgICAgICAg
ICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRp
ZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGll
cyhjaGlsZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBl
ID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xl
KGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewotICAgICAgICAgICAg
ICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJv
bGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMu
bGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xl
Il19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IHRlc3RGZWVkUm9sZUZvclJlcXVpcmVk
Q2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMg
PSB7Ci0gICAgICAgICAgICAgICAgZmVlZDogWyJhcnRpY2xlIl0sCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gW107Ci0gICAgICAgICAgICBsZXQgdmlzaXRlZFBh
cmVudHMgPSBuZXcgU2V0OwotICAgICAgICAgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShu
b2RlLCBleHBlY3RlZFJvbGVzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5v
ZGU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9k
ZSkKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJl
bnROb2RlKTsKLQotICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0
aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRl
cyhwcm9wZXJ0aWVzLnJvbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9k
ZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJv
bGVzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUu
bmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRp
b25zaGlwcykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9k
ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlv
bnNoaXBzW3JvbGVdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFy
ZW50Tm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2Rl
cywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OwotICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0
IHRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgdGFibGlzdDog
WyJ0YWIiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsK
LSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxk
Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVk
UGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hp
bGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxk
Tm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5v
ZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGRO
b2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJl
bnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGgg
PyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEJ1dHRvbkxhYmVscyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgbGV0IGJ1dHRvbnMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoImJ1dHRvbiIpOwotICAgICAgICAgICAgbGV0
IGRvbU5vZGVzID0gYnV0dG9ucy5maWx0ZXIoKGJ1dHRvbikgPT4gIVdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGJ1dHRvbikubGFiZWwpOwotICAg
ICAgICAgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3Mi
LCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRi
eSIsICJ0aXRsZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Um93Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0
aW9uc2hpcHMgPSB7Ci0gICAgICAgICAgICAgICAgcm93OiBbImNlbGwiLCAiZ3JpZGNlbGwiLCAi
Y29sdW1uaGVhZGVyIiwgInJvd2hlYWRlciJdLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IGxldCBkb21Ob2RlcyA9IFtdOwotICAgICAgICAgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3
IFNldDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0
ZWRSb2xlcykgewotICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwotICAgICAg
ICAgICAgICAgIGlmICghY2hpbGROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7Ci0K
LSAgICAgICAgICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21w
dXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGll
cy5yb2xlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFz
Q2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5n
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFo
YXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xl
XSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7bGV2
ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJp
YnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0TGlzdFJv
bGVGb3JSZXF1aXJlZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjb25zdCBy
ZWxhdGlvbnNoaXBzID0gewotICAgICAgICAgICAgICAgIGxpc3Q6IFsibGlzdGl0ZW0iLCAiZ3Jv
dXAiXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBbXTsKLSAg
ICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAgICAgICAgICBmdW5j
dGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKLSAgICAgICAgICAg
ICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTm9k
ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAg
aWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkUGFy
ZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAgICAgICAgd2hpbGUg
KGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYklu
c3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUu
RUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2Rl
LmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChs
ZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1l
bnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnRO
b2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAi
d2FybiIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdENvbWJvQm94Um9sZUZvclJlcXVpcmVkQ2hpbGRy
ZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7Ci0g
ICAgICAgICAgICAgICAgY29tYm9ib3g6IFsidGV4dGJveCIsICJsaXN0Ym94IiwgInRyZWUiLCAi
Z3JpZCIsICJkaWFsb2ciXSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBsZXQgZG9tTm9k
ZXMgPSBbXTsKLSAgICAgICAgICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Ci0gICAg
ICAgICAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsK
LSAgICAgICAgICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNoaWxkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAg
ICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwotCi0gICAgICAgICAg
ICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVy
dGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0
aWVzKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5
cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJv
bGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7Ci0gICAgICAgICAg
ICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmls
aXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRo
Um9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rl
cy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJv
bGUiXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgY29uc3QgdGVzdEZvck11bHRpcGxlTWFpbkNv
bnRlbnRTZWN0aW9ucyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0g
W107Ci0gICAgICAgICAgICBsZXQgbWFpbkNvbnRlbnRFbGVtZW50cyA9IFdlYkluc3BlY3RvckF1
ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgibWFpbiIpOwotICAg
ICAgICAgICAgaWYgKG1haW5Db250ZW50RWxlbWVudHMubGVuZ3RoID4gMSkgewotICAgICAgICAg
ICAgICAgIGRvbU5vZGVzID0gbWFpbkNvbnRlbnRFbGVtZW50czsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNz
IiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCB0ZXN0RGlhbG9nc0ZvckxhYmVscyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
IGxldCBkaWFsb2dzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50
c0J5Q29tcHV0ZWRSb2xlKCJkaWFsb2ciKTsKLSAgICAgICAgICBsZXQgZG9tTm9kZXMgPSBkaWFs
b2dzLmZpbHRlcigoZGlhbG9nKSA9PiAhV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5n
ZXRDb21wdXRlZFByb3BlcnRpZXMoZGlhbG9nKS5sYWJlbCk7Ci0gICAgICAgICAgcmV0dXJuIHts
ZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0
cmlidXRlczogWyJhcmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJ0aXRsZSJdfTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBjb25zdCB0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJvbShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW5dOm5vdChbYXJpYS1oaWRkZW49InRy
dWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWApKTsKLSAgICAgICAgICAgIHJldHVybiB7bGV2
ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJp
YnV0ZXM6IFsiYXJpYS1oaWRkZW4iXX07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rpb24g
cmVtb3ZlV2hpdGVzcGFjZShmdW5jKSB7Ci0gICAgICAgICAgICByZXR1cm4gV0kuQXVkaXRUZXN0
Q2FzZS5zdHJpbmdpZnlGdW5jdGlvbihmdW5jLCA4KTsKLSAgICAgICAgfQorICAgICAgICBjb25z
b2xlLmFzc2VydChXSS5EZWZhdWx0QXVkaXRzLCAiRGVmYXVsdCBhdWRpdHMgbm90IGxvYWRlZC4i
KTsKKyAgICAgICAgaWYgKCFXSS5EZWZhdWx0QXVkaXRzKQorICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGNvbnN0IGRlZmF1bHRUZXN0cyA9IFsKICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RHcm91cChXSS5VSVN0cmluZygiRGVtbyBBdWRpdCIpLCBbCiAgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJSZXN1bHQgTGV2ZWxzIiksIFsKLSAg
ICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLXBhc3MiLCByZW1v
dmVXaGl0ZXNwYWNlKGxldmVsUGFzcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMg
aXMgd2hhdCB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBs
aWtlLiIpfSksCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZl
bC13YXJuIiwgcmVtb3ZlV2hpdGVzcGFjZShsZXZlbFdhcm4pLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJUaGlzIGlzIHdoYXQgdGhlIHJlc3VsdCBvZiBhIHdhcm5pbmcgdGVzdCB3aXRoIG5v
IGRhdGEgbG9va3MgbGlrZS4iKX0pLAotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0Q2FzZSgibGV2ZWwtZmFpbCIsIHJlbW92ZVdoaXRlc3BhY2UobGV2ZWxGYWlsKSwge2Rlc2Ny
aXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSBmYWlsaW5n
IHRlc3Qgd2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKLSAgICAgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLWVycm9yIiwgcmVtb3ZlV2hpdGVzcGFjZShsZXZl
bEVycm9yKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1
bHQgb2YgYSB0ZXN0IHRoYXQgdGhyZXcgYW4gZXJyb3Igd2l0aCBubyBkYXRhIGxvb2tzIGxpa2Uu
Iil9KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImxldmVsLXVu
c3VwcG9ydGVkIiwgcmVtb3ZlV2hpdGVzcGFjZShsZXZlbFVuc3VwcG9ydGVkKSwge2Rlc2NyaXB0
aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYW4gdW5zdXBwb3J0
ZWQgdGVzdCB3aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAorICAgICAgICAgICAgICAgICAg
ICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgibGV2ZWwtcGFzcyIsIFdJLkRlZmF1bHRBdWRpdHMubGV2
ZWxQYXNzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgd2hh
dCB0aGUgcmVzdWx0IG9mIGEgcGFzc2luZyB0ZXN0IHdpdGggbm8gZGF0YSBsb29rcyBsaWtlLiIp
fSksCisgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJsZXZlbC13YXJu
IiwgV0kuRGVmYXVsdEF1ZGl0cy5sZXZlbFdhcm4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSB3YXJuaW5nIHRlc3Qgd2l0
aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1
ZGl0VGVzdENhc2UoImxldmVsLWZhaWwiLCBXSS5EZWZhdWx0QXVkaXRzLmxldmVsRmFpbC50b1N0
cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIHdoYXQgdGhlIHJlc3Vs
dCBvZiBhIGZhaWxpbmcgdGVzdCB3aXRoIG5vIGRhdGEgbG9va3MgbGlrZS4iKX0pLAorICAgICAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgibGV2ZWwtZXJyb3IiLCBXSS5EZWZh
dWx0QXVkaXRzLmxldmVsRXJyb3IudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiVGhpcyBpcyB3aGF0IHRoZSByZXN1bHQgb2YgYSB0ZXN0IHRoYXQgdGhyZXcgYW4gZXJyb3Ig
d2l0aCBubyBkYXRhIGxvb2tzIGxpa2UuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoImxldmVsLXVuc3VwcG9ydGVkIiwgV0kuRGVmYXVsdEF1ZGl0cy5sZXZl
bFVuc3VwcG9ydGVkLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMg
aXMgd2hhdCB0aGUgcmVzdWx0IG9mIGFuIHVuc3VwcG9ydGVkIHRlc3Qgd2l0aCBubyBkYXRhIGxv
b2tzIGxpa2UuIil9KSwKICAgICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRpb246IFdJLlVJU3Ry
aW5nKCJUaGVzZSBhcmUgYWxsIG9mIHRoZSBkaWZmZXJlbnQgdGVzdCByZXN1bHQgbGV2ZWxzLiIp
fSksCiAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJS
ZXN1bHQgRGF0YSIpLCBbCi0gICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJkYXRhLWRvbU5vZGVzIiwgcmVtb3ZlV2hpdGVzcGFjZShkYXRhRE9NTm9kZXMpLCB7ZGVzY3Jp
cHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHJlc3VsdCBET00g
bm9kZXMgYXJlIHNob3duLiBJdCB3aWxsIHBhc3Mgd2l0aCB0aGUgPGJvZHk+IGVsZW1lbnQuIil9
KSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImRhdGEtZG9tQXR0
cmlidXRlcyIsIHJlbW92ZVdoaXRlc3BhY2UoZGF0YURPTUF0dHJpYnV0ZXMpLCB7ZGVzY3JpcHRp
b246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHJlc3VsdCBET00gYXR0
cmlidXRlcyBhcmUgaGlnaGxpZ2h0ZWQgb24gYW55IHJldHVybmVkIERPTSBub2Rlcy4gSXQgd2ls
bCBwYXNzIHdpdGggYWxsIGVsZW1lbnRzIHdpdGggYW4gaWQgYXR0cmlidXRlLiIpfSksCi0gICAg
ICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJkYXRhLWVycm9ycyIsIHJlbW92
ZVdoaXRlc3BhY2UoZGF0YUVycm9ycyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMg
aXMgYW4gZXhhbXBsZSBvZiBob3cgZXJyb3JzIGFyZSBzaG93bi4gVGhlIGVycm9yIHdhcyB0aHJv
d24gbWFudWFsbHksIGJ1dCBleGVjdXRpb24gZXJyb3JzIHdpbGwgYXBwZWFyIGluIHRoZSBzYW1l
IHdheS4iKX0pLAotICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZGF0
YS1jdXN0b20iLCByZW1vdmVXaGl0ZXNwYWNlKGRhdGFDdXN0b20pLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IGN1c3RvbSByZXN1bHQgZGF0YSBp
cyBzaG93bi4iKSwgc3VwcG9ydHM6IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1
ZGl0VGVzdENhc2UoImRhdGEtZG9tTm9kZXMiLCBXSS5EZWZhdWx0QXVkaXRzLmRhdGFET01Ob2Rl
cy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1w
bGUgb2YgaG93IHJlc3VsdCBET00gbm9kZXMgYXJlIHNob3duLiBJdCB3aWxsIHBhc3Mgd2l0aCB0
aGUgPGJvZHk+IGVsZW1lbnQuIil9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoImRhdGEtZG9tQXR0cmlidXRlcyIsIFdJLkRlZmF1bHRBdWRpdHMuZGF0YURPTUF0
dHJpYnV0ZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBh
biBleGFtcGxlIG9mIGhvdyByZXN1bHQgRE9NIGF0dHJpYnV0ZXMgYXJlIGhpZ2hsaWdodGVkIG9u
IGFueSByZXR1cm5lZCBET00gbm9kZXMuIEl0IHdpbGwgcGFzcyB3aXRoIGFsbCBlbGVtZW50cyB3
aXRoIGFuIGlkIGF0dHJpYnV0ZS4iKX0pLAorICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVk
aXRUZXN0Q2FzZSgiZGF0YS1lcnJvcnMiLCBXSS5EZWZhdWx0QXVkaXRzLmRhdGFFcnJvcnMudG9T
dHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIG9m
IGhvdyBlcnJvcnMgYXJlIHNob3duLiBUaGUgZXJyb3Igd2FzIHRocm93biBtYW51YWxseSwgYnV0
IGV4ZWN1dGlvbiBlcnJvcnMgd2lsbCBhcHBlYXIgaW4gdGhlIHNhbWUgd2F5LiIpfSksCisgICAg
ICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJkYXRhLWN1c3RvbSIsIFdJLkRl
ZmF1bHRBdWRpdHMuZGF0YUN1c3RvbS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3Ry
aW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IGN1c3RvbSByZXN1bHQgZGF0YSBpcyBzaG93
bi4iKSwgc3VwcG9ydHM6IDN9KSwKICAgICAgICAgICAgICAgICBdLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGVzZSBhcmUgZXhhbXBsZSB0ZXN0cyB0aGF0IGRlbW9uc3RyYXRlIGFsbCBv
ZiB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEgdGhhdCBjYW4gYmUgcmV0dXJuZWQgd2l0aCB0
aGUgdGVzdCByZXN1bHQuIil9KSwKICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0R3Jv
dXAoV0kuVUlTdHJpbmcoIlNwZWNpYWxseSBFeHBvc2VkIERhdGEiKSwgWwogICAgICAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0R3JvdXAoV0kuVUlTdHJpbmcoIkFjY2Vzc2liaWxpdHki
KSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByZW1vdmVXaGl0ZXNwYWNlKGdldEVsZW1lbnRzQnlDb21w
dXRlZFJvbGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUg
dGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBlbGVtZW50cyB3aXRoIGEgY29tcHV0ZWQgcm9sZSBv
ZiBcdTAwMjJsaW5rXHUwMDIyLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlIikpLCBz
dXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENh
c2UoImdldEFjdGl2ZURlc2NlbmRhbnQiLCByZW1vdmVXaGl0ZXNwYWNlKGdldEFjdGl2ZURlc2Nl
bmRhbnQpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVz
dCB0aGF0IHVzZXMgJXMgdG8gZmluZCBhbnkgZWxlbWVudCB0aGF0IG1lZXRzIGNyaXRlcmlhIGZv
ciBhY3RpdmUgZGVzY2VuZGFudCAoXHUwMDIyJXNcdTAwMjIpIG9mIHRoZSA8Ym9keT4gZWxlbWVu
dCwgaWYgaXQgZXhpc3RzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRBY3RpdmVEZXNjZW5kYW50IiksIFdJLnVubG9jYWxp
emVkU3RyaW5nKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSksIHN1cHBvcnRzOiAxfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q2hpbGROb2RlcyIs
IHJlbW92ZVdoaXRlc3BhY2UoZ2V0Q2hpbGROb2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJp
bmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGNoaWxkIG5v
ZGVzIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRDaGlsZE5vZGVzIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldENvbXB1dGVkUHJvcGVydGllcyIsIHJlbW92ZVdo
aXRlc3BhY2UoZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYSB2YXJpZXR5
IG9mIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxib2R5PiBlbGVtZW50LiIp
LmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMiKSksIHN1cHBvcnRzOiAzfSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29udHJvbGxlZE5vZGVzIiwg
cmVtb3ZlV2hpdGVzcGFjZShnZXRDb250cm9sbGVkTm9kZXMpLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBhbGwg
bm9kZXMgY29udHJvbGxlZCAoXHUwMDIyJXNcdTAwMjIpIGJ5IHRoZSA8Ym9keT4gZWxlbWVudCwg
aWYgYW55IGV4aXN0LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb250cm9sbGVkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRT
dHJpbmcoImFyaWEtY29udHJvbHMiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Rmxvd2VkTm9kZXMiLCByZW1vdmVXaGl0
ZXNwYWNlKGdldEZsb3dlZE5vZGVzKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBp
cyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYWxsIG5vZGVzIGZsb3dlZCB0
byAoXHUwMDIyJXNcdTAwMjIpIGZyb20gdGhlIDxib2R5PiBlbGVtZW50LCBpZiBhbnkgZXhpc3Qu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldEZsb3dlZE5vZGVzIiksIFdJLnVubG9jYWxpemVkU3RyaW5nKCJhcmlhLWZsb3d0
byIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RDYXNlKCJnZXRNb3VzZUV2ZW50Tm9kZSIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0TW91c2VF
dmVudE5vZGUpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUg
dGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUgbm9kZSB0aGF0IHdvdWxkIGhhbmRsZSBtb3Vz
ZSBldmVudHMgZm9yIHRoZSA8Ym9keT4gZWxlbWVudCwgaWYgYXBwbGljYWJsZS4iKS5mb3JtYXQo
V0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
TW91c2VFdmVudE5vZGUiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0T3duZWROb2RlcyIsIHJlbW92ZVdoaXRlc3BhY2Uo
Z2V0T3duZWROb2RlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhh
bXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGFsbCBub2RlcyBvd25lZCAoXHUwMDIyJXNc
dTAwMjIpIGJ5IHRoZSA8Ym9keT4gZWxlbWVudCwgaWYgYW55IGV4aXN0LiIpLmZvcm1hdChXSS51
bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRPd25l
ZE5vZGVzIiksIFdJLnVubG9jYWxpemVkU3RyaW5nKCJhcmlhLW93bnMiKSksIHN1cHBvcnRzOiAx
fSksCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0UGFy
ZW50Tm9kZSIsIHJlbW92ZVdoaXRlc3BhY2UoZ2V0UGFyZW50Tm9kZSksIHtkZXNjcmlwdGlvbjog
V0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5k
IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgPGJvZHk+IGVsZW1lbnQgaW4gdGhlIGFjY2Vzc2liaWxp
dHkgdHJlZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0UGFyZW50Tm9kZSIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRTZWxlY3RlZENoaWxkTm9k
ZXMiLCByZW1vdmVXaGl0ZXNwYWNlKGdldFNlbGVjdGVkQ2hpbGROb2RlcyksIHtkZXNjcmlwdGlv
bjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBm
aW5kIGFsbCBjaGlsZCBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZCAoXHUwMDIyJXNcdTAwMjIpIG9m
IHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZvcm1hdChX
SS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRT
ZWxlY3RlZENoaWxkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtc2VsZWN0ZWQi
KSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0Q2FzZSgiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIFdJLkRlZmF1bHRBdWRpdHMuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3Ry
aW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBlbGVtZW50
cyB3aXRoIGEgY29tcHV0ZWQgcm9sZSBvZiBcdTAwMjJsaW5rXHUwMDIyLiIpLmZvcm1hdChXSS51
bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVt
ZW50c0J5Q29tcHV0ZWRSb2xlIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldEFjdGl2ZURlc2NlbmRhbnQiLCBXSS5EZWZh
dWx0QXVkaXRzLmdldEFjdGl2ZURlc2NlbmRhbnQudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBX
SS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQg
YW55IGVsZW1lbnQgdGhhdCBtZWV0cyBjcml0ZXJpYSBmb3IgYWN0aXZlIGRlc2NlbmRhbnQgKFx1
MDAyMiVzXHUwMDIyKSBvZiB0aGUgPGJvZHk+IGVsZW1lbnQsIGlmIGl0IGV4aXN0cy4iKS5mb3Jt
YXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0QWN0aXZlRGVzY2VuZGFudCIpLCBXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1hY3RpdmVk
ZXNjZW5kYW50IikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IFdJLkF1ZGl0VGVzdENhc2UoImdldENoaWxkTm9kZXMiLCBXSS5EZWZhdWx0QXVkaXRzLmdldENo
aWxkTm9kZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhpcyBpcyBh
biBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgY2hpbGQgbm9kZXMgb2YgdGhlIDxi
b2R5PiBlbGVtZW50IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIikuZm9ybWF0KFdJLnVubG9j
YWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENoaWxkTm9k
ZXMiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVk
aXRUZXN0Q2FzZSgiZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzIiwgV0kuRGVmYXVsdEF1ZGl0cy5nZXRD
b21wdXRlZFByb3BlcnRpZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygi
VGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgYSB2YXJpZXR5IG9m
IGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxib2R5PiBlbGVtZW50LiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRDb21wdXRlZFByb3BlcnRpZXMiKSksIHN1cHBvcnRzOiAzfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0Q29udHJvbGxlZE5vZGVzIiwgV0ku
RGVmYXVsdEF1ZGl0cy5nZXRDb250cm9sbGVkTm9kZXMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZp
bmQgYWxsIG5vZGVzIGNvbnRyb2xsZWQgKFx1MDAyMiVzXHUwMDIyKSBieSB0aGUgPGJvZHk+IGVs
ZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYklu
c3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29udHJvbGxlZE5vZGVzIiksIFdJLnVubG9j
YWxpemVkU3RyaW5nKCJhcmlhLWNvbnRyb2xzIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldEZsb3dlZE5vZGVzIiwgV0ku
RGVmYXVsdEF1ZGl0cy5nZXRGbG93ZWROb2Rlcy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJ
LlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBh
bGwgbm9kZXMgZmxvd2VkIHRvIChcdTAwMjIlc1x1MDAyMikgZnJvbSB0aGUgPGJvZHk+IGVsZW1l
bnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Rmxvd2VkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRT
dHJpbmcoImFyaWEtZmxvd3RvIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldE1vdXNlRXZlbnROb2RlIiwgV0kuRGVmYXVs
dEF1ZGl0cy5nZXRNb3VzZUV2ZW50Tm9kZS50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUg
bm9kZSB0aGF0IHdvdWxkIGhhbmRsZSBtb3VzZSBldmVudHMgZm9yIHRoZSA8Ym9keT4gZWxlbWVu
dCwgaWYgYXBwbGljYWJsZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0TW91c2VFdmVudE5vZGUiKSksIHN1cHBvcnRzOiAx
fSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgiZ2V0T3du
ZWROb2RlcyIsIFdJLkRlZmF1bHRBdWRpdHMuZ2V0T3duZWROb2Rlcy50b1N0cmluZygpLCB7ZGVz
Y3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMg
JXMgdG8gZmluZCBhbGwgbm9kZXMgb3duZWQgKFx1MDAyMiVzXHUwMDIyKSBieSB0aGUgPGJvZHk+
IGVsZW1lbnQsIGlmIGFueSBleGlzdC4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldl
Ykluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0T3duZWROb2RlcyIpLCBXSS51bmxvY2Fs
aXplZFN0cmluZygiYXJpYS1vd25zIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFBhcmVudE5vZGUiLCBXSS5EZWZhdWx0
QXVkaXRzLmdldFBhcmVudE5vZGUudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgdGhlIHBhcmVu
dCBub2RlIG9mIHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIp
LmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS5nZXRQYXJlbnROb2RlIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFNlbGVjdGVkQ2hpbGROb2RlcyIsIFdJLkRl
ZmF1bHRBdWRpdHMuZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlv
bjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBm
aW5kIGFsbCBjaGlsZCBub2RlcyB0aGF0IGFyZSBzZWxlY3RlZCAoXHUwMDIyJXNcdTAwMjIpIG9m
IHRoZSA8Ym9keT4gZWxlbWVudCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiIpLmZvcm1hdChX
SS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRT
ZWxlY3RlZENoaWxkTm9kZXMiKSwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtc2VsZWN0ZWQi
KSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjog
V0kuVUlTdHJpbmcoIlRoZXNlIGFyZSBleGFtcGxlIHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgaG93
IHRvIHVzZSAlcyB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJl
ZS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkiKSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiRE9NIiksIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJoYXNFdmVudExpc3RlbmVycyIsIHJlbW92ZVdoaXRl
c3BhY2UoaGFzRXZlbnRMaXN0ZW5lcnMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlz
IGlzIGFuIGV4YW1wbGUgdGVzdCB0aGF0IHVzZXMgJXMgdG8gZmluZCBkYXRhIGluZGljYXRpbmcg
d2hldGhlciB0aGUgPGJvZHk+IGVsZW1lbnQgaGFzIGFueSBldmVudCBsaXN0ZW5lcnMuIikuZm9y
bWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
Lmhhc0V2ZW50TGlzdGVuZXJzIikpLCBzdXBwb3J0czogM30pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImhhc0V2ZW50TGlzdGVuZXJzLWNsaWNrIiwgcmVt
b3ZlV2hpdGVzcGFjZShoYXNFdmVudExpc3RlbmVyc0NsaWNrKSwge2Rlc2NyaXB0aW9uOiBXSS5V
SVN0cmluZygiVGhpcyBpcyBhbiBleGFtcGxlIHRlc3QgdGhhdCB1c2VzICVzIHRvIGZpbmQgZGF0
YSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIDxib2R5PiBlbGVtZW50IGhhcyBhbnkgY2xpY2sgZXZl
bnQgbGlzdGVuZXJzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2ViSW5zcGVjdG9y
QXVkaXQuQWNjZXNzaWJpbGl0eS5oYXNFdmVudExpc3RlbmVyc0NsaWNrIikpLCBzdXBwb3J0czog
M30pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImhhc0V2
ZW50TGlzdGVuZXJzIiwgV0kuRGVmYXVsdEF1ZGl0cy5oYXNFdmVudExpc3RlbmVycy50b1N0cmlu
ZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVzdCB0
aGF0IHVzZXMgJXMgdG8gZmluZCBkYXRhIGluZGljYXRpbmcgd2hldGhlciB0aGUgPGJvZHk+IGVs
ZW1lbnQgaGFzIGFueSBldmVudCBsaXN0ZW5lcnMuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmhhc0V2ZW50TGlzdGVuZXJzIikp
LCBzdXBwb3J0czogM30pLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVz
dENhc2UoImhhc0V2ZW50TGlzdGVuZXJzLWNsaWNrIiwgV0kuRGVmYXVsdEF1ZGl0cy5oYXNFdmVu
dExpc3RlbmVyc0NsaWNrLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRo
aXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGRhdGEgaW5kaWNhdGlu
ZyB3aGV0aGVyIHRoZSA8Ym9keT4gZWxlbWVudCBoYXMgYW55IGNsaWNrIGV2ZW50IGxpc3RlbmVy
cy4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vz
c2liaWxpdHkuaGFzRXZlbnRMaXN0ZW5lcnNDbGljayIpKSwgc3VwcG9ydHM6IDN9KSwKICAgICAg
ICAgICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhlc2UgYXJlIGV4
YW1wbGUgdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlICVzIHRvIGdldCBpbmZvcm1h
dGlvbiBhYm91dCBET00gbm9kZXMuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJ
bnNwZWN0b3JBdWRpdC5ET00iKSksIHN1cHBvcnRzOiAxfSksCiAgICAgICAgICAgICAgICAgICAg
IG5ldyBXSS5BdWRpdFRlc3RHcm91cChXSS5VSVN0cmluZygiUmVzb3VyY2VzIiksIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRSZXNvdXJjZXMiLCBy
ZW1vdmVXaGl0ZXNwYWNlKGdldFJlc291cmNlcyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmco
IlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGJhc2ljIGluZm9y
bWF0aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5n
KCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFJlc291cmNlcyIpKSwgc3VwcG9y
dHM6IDN9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJn
ZXRSZXNvdXJjZUNvbnRlbnQiLCByZW1vdmVXaGl0ZXNwYWNlKGdldFJlc291cmNlQ29udGVudCks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQg
dXNlcyAlcyB0byBmaW5kIHRoZSBjb250ZW50cyBvZiB0aGUgbWFpbiByZXNvdXJjZS4iKS5mb3Jt
YXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoIldlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHku
Z2V0UmVzb3VyY2VDb250ZW50IikpLCBzdXBwb3J0czogM30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoImdldFJlc291cmNlcyIsIFdJLkRlZmF1bHRBdWRp
dHMuZ2V0UmVzb3VyY2VzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRo
aXMgaXMgYW4gZXhhbXBsZSB0ZXN0IHRoYXQgdXNlcyAlcyB0byBmaW5kIGJhc2ljIGluZm9ybWF0
aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJX
ZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldFJlc291cmNlcyIpKSwgc3VwcG9ydHM6
IDN9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJnZXRS
ZXNvdXJjZUNvbnRlbnQiLCBXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlQ29udGVudC50b1N0
cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgdGVz
dCB0aGF0IHVzZXMgJXMgdG8gZmluZCB0aGUgY29udGVudHMgb2YgdGhlIG1haW4gcmVzb3VyY2Uu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldFJlc291cmNlQ29udGVudCIpKSwgc3VwcG9ydHM6IDN9KSwKICAgICAgICAgICAg
ICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiVGhlc2UgYXJlIGV4YW1wbGUg
dGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlICVzIHRvIGdldCBpbmZvcm1hdGlvbiBh
Ym91dCBsb2FkZWQgcmVzb3VyY2VzLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiV2Vi
SW5zcGVjdG9yQXVkaXQuUmVzb3VyY2VzIikpLCBzdXBwb3J0czogMn0pLAogICAgICAgICAgICAg
ICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoZXNlIGFyZSBleGFtcGxlIHRlc3Rz
IHRoYXQgZGVtb25zdHJhdGUgaG93IHRvIHVzZSAlcyB0byBhY2Nlc3MgaW5mb3JtYXRpb24gbm90
IG5vcm1hbGx5IGF2YWlsYWJsZSB0byBKYXZhU2NyaXB0LiIpLmZvcm1hdChXSS51bmxvY2FsaXpl
ZFN0cmluZygiV2ViSW5zcGVjdG9yQXVkaXQiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAg
ICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInVuc3VwcG9ydGVkIiwgcmVtb3ZlV2hpdGVzcGFj
ZSh1bnN1cHBvcnRlZCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIlRoaXMgaXMgYW4gZXhh
bXBsZSBvZiBhIHRlc3QgdGhhdCB3aWxsIG5vdCBydW4gYmVjYXVzZSBpdCBpcyB1bnN1cHBvcnRl
ZC4iKSwgc3VwcG9ydHM6IEluZmluaXR5fSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoInVuc3VwcG9ydGVkIiwgV0kuRGVmYXVsdEF1ZGl0cy51bnN1cHBvcnRlZC50b1N0
cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJUaGlzIGlzIGFuIGV4YW1wbGUgb2Yg
YSB0ZXN0IHRoYXQgd2lsbCBub3QgcnVuIGJlY2F1c2UgaXQgaXMgdW5zdXBwb3J0ZWQuIiksIHN1
cHBvcnRzOiBJbmZpbml0eX0pLAogICAgICAgICAgICAgXSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiVGhlc2UgYXJlIGV4YW1wbGUgdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSB0aGUgZnVuY3Rp
b25hbGl0eSBhbmQgc3RydWN0dXJlIG9mIGF1ZGl0cy4iKX0pLAogICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdEdyb3VwKFdJLlVJU3RyaW5nKCJBY2Nlc3NpYmlsaXR5IiksIFsKLSAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdE1lbnVSb2xlRm9yUmVxdWlyZWRDaGls
ZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdE1lbnVSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUg
XHUwMDIyJXNcdTAwMjIgYW5kIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxl
bWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXpl
ZFN0cmluZygibWVudSIpLCBXSS51bmxvY2FsaXplZFN0cmluZygibWVudWJhciIpKSwgc3VwcG9y
dHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEdyaWRS
b2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEdyaWRSb2xlRm9y
UmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0
IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVt
ZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVk
U3RyaW5nKCJncmlkIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RDYXNlKCJ0ZXN0Rm9yQXJpYUxhYmVsbGVkQnlTcGVsbGluZyIsIHJlbW92ZVdoaXRl
c3BhY2UodGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmcpLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJFbnN1cmUgdGhhdCBcdTAwMjIlc1x1MDAyMiBpcyBzcGVsbGVkIGNvcnJlY3RseS4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtbGFiZWxsZWRieSIpKSwgc3VwcG9y
dHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11
bHRpcGxlQmFubmVycyIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEZvck11bHRpcGxlQmFubmVycyks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IG9ubHkgb25lIGJhbm5lciBp
cyB1c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5l
dyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Rm9yTGlua0xhYmVscyIsIHJlbW92ZVdoaXRlc3BhY2Uo
dGVzdEZvckxpbmtMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhh
dCBsaW5rcyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neS4i
KSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgi
dGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRl
c3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0
cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJl
cXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3Jt
YXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJvd2dyb3VwIikpLCBzdXBwb3J0czogMX0pLAotICAg
ICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0VGFibGVSb2xlRm9yUmVxdWly
ZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFRhYmxlUm9sZUZvclJlcXVpcmVkQ2hp
bGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBv
ZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNj
b3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygidGFi
bGUiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENh
c2UoInRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9y
TXVsdGlwbGVMaXZlUmVnaW9ucyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0
aGF0IG9ubHkgb25lIGxpdmUgcmVnaW9uIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRz
OiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RMaXN0Qm94
Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RMaXN0Qm94Um9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUg
dGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQg
ZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2Fs
aXplZFN0cmluZygibGlzdGJveCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBu
ZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEltYWdlTGFiZWxzIiwgcmVtb3ZlV2hpdGVzcGFjZSh0
ZXN0SW1hZ2VMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBl
bGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgYWNjZXNzaWJsZSBsYWJlbHMgZm9y
IGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiaW1n
IikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNl
KCJ0ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlIiwgcmVtb3ZlV2hpdGVzcGFjZSh0ZXN0Rm9yQXJpYUhp
ZGRlbkZhbHNlKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIGFyaWEtaGlkZGVu
PVx1MDAyMiVzXHUwMDIyIGlzIG5vdCB1c2VkLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmlu
ZygiZmFsc2UiKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoInRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNw
YWNlKHRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUg
cmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZv
cm1hdChXSS51bmxvY2FsaXplZFN0cmluZygidHJlZSIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAg
ICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFJhZGlvR3JvdXBSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVs
ZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50
cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJyYWRpb2dyb3VwIikpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBX
SS5BdWRpdFRlc3RDYXNlKCJ0ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgcmVtb3Zl
V2hpdGVzcGFjZSh0ZXN0RmVlZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAy
MiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJ
QS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImZlZWQiKSksIHN1cHBvcnRzOiAxfSks
Ci0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUYWJMaXN0Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4iLCByZW1vdmVXaGl0ZXNwYWNlKHRlc3RUYWJMaXN0Um9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBl
bGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVu
dHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0
cmluZygidGFibGlzdCIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgidGVzdEJ1dHRvbkxhYmVscyIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdEJ1
dHRvbkxhYmVscyksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGJ1dHRv
bnMgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVscyBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kuIiksIHN1
cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RS
b3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdFJvd1JvbGVG
b3JSZXF1aXJlZENoaWxkcmVuKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRo
YXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVs
ZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6
ZWRTdHJpbmcoInJvdyIpKSwgc3VwcG9ydHM6IDF9KSwKLSAgICAgICAgICAgICAgICBuZXcgV0ku
QXVkaXRUZXN0Q2FzZSgidGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdo
aXRlc3BhY2UodGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiksIHtkZXNjcmlwdGlvbjog
V0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIg
aGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJsaXN0IikpLCBzdXBwb3J0czogMX0pLAot
ICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Q29tYm9Cb3hSb2xlRm9y
UmVxdWlyZWRDaGlsZHJlbiIsIHJlbW92ZVdoaXRlc3BhY2UodGVzdENvbWJvQm94Um9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4pLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBl
bGVtZW50cyBvZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVu
dHMgaW4gYWNjb3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0
cmluZygiY29tYm9ib3giKSksIHN1cHBvcnRzOiAxfSksCi0gICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoInRlc3RGb3JNdWx0aXBsZU1haW5Db250ZW50U2VjdGlvbnMiLCByZW1v
dmVXaGl0ZXNwYWNlKHRlc3RGb3JNdWx0aXBsZU1haW5Db250ZW50U2VjdGlvbnMpLCB7ZGVzY3Jp
cHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBvbmx5IG9uZSBtYWluIGNvbnRlbnQgc2Vj
dGlvbiBpcyB1c2VkIG9uIHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAg
ICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0RGlhbG9nc0ZvckxhYmVscyIsIHJlbW92ZVdo
aXRlc3BhY2UodGVzdERpYWxvZ3NGb3JMYWJlbHMpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5n
KCJFbnN1cmUgdGhhdCBkaWFsb2dzIGhhdmUgYWNjZXNzaWJsZSBsYWJlbHMgZm9yIGFzc2lzdGl2
ZSB0ZWNobm9sb2d5LiIpLCBzdXBwb3J0czogMX0pLAotICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RDYXNlKCJ0ZXN0Rm9ySW52YWxpZEFyaWFIaWRkZW5WYWx1ZSIsIHJlbW92ZVdoaXRl
c3BhY2UodGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUpLCB7ZGVzY3JpcHRpb246IFdJLlVJ
U3RyaW5nKCJFbnN1cmUgdGhhdCB2YWx1ZXMgZm9yIFx1MDAyMiVzXHUwMDIyIGFyZSB2YWxpZC4i
KS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoImFyaWEtaGlkZGVuIikpLCBzdXBwb3J0czog
MX0pCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RNZW51Um9sZUZv
clJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RNZW51Um9sZUZvclJlcXVp
cmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJl
IHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBhbmQgXHUwMDIyJXNcdTAwMjIg
aGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEu
IikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJtZW51IiksIFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJtZW51YmFyIikpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5B
dWRpdFRlc3RDYXNlKCJ0ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgV0kuRGVmYXVs
dEF1ZGl0cy50ZXN0R3JpZFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIy
JXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGgg
V0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJncmlkIikpLCBzdXBwb3J0
czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRpdFRlc3RDYXNlKCJ0ZXN0Rm9yQXJp
YUxhYmVsbGVkQnlTcGVsbGluZyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvckFyaWFMYWJlbGxl
ZEJ5U3BlbGxpbmcudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJl
IHRoYXQgXHUwMDIyJXNcdTAwMjIgaXMgc3BlbGxlZCBjb3JyZWN0bHkuIikuZm9ybWF0KFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJhcmlhLWxhYmVsbGVkYnkiKSksIHN1cHBvcnRzOiAxfSksCisgICAg
ICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGb3JNdWx0aXBsZUJhbm5lcnMi
LCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUJhbm5lcnMudG9TdHJpbmcoKSwge2Rl
c2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgb25seSBvbmUgYmFubmVyIGlzIHVz
ZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJ
LkF1ZGl0VGVzdENhc2UoInRlc3RGb3JMaW5rTGFiZWxzIiwgV0kuRGVmYXVsdEF1ZGl0cy50ZXN0
Rm9yTGlua0xhYmVscy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1
cmUgdGhhdCBsaW5rcyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVjaG5v
bG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0
Q2FzZSgidGVzdFJvd0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVk
aXRzLnRlc3RSb3dHcm91cFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtkZXNj
cmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIy
JXNcdTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGgg
V0FJLUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJyb3dncm91cCIpKSwgc3Vw
cG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdFRh
YmxlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RUYWJsZVJv
bGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJp
bmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSByZXF1
aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJLUFSSUEuIikuZm9ybWF0
KFdJLnVubG9jYWxpemVkU3RyaW5nKCJ0YWJsZSIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAg
ICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11bHRpcGxlTGl2ZVJlZ2lvbnMi
LCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0aXBsZUxpdmVSZWdpb25zLnRvU3RyaW5nKCks
IHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IG9ubHkgb25lIGxpdmUgcmVn
aW9uIGlzIHVzZWQgb24gdGhlIHBhZ2UuIiksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAg
ICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRy
ZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Qm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4u
dG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVu
dHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGlu
IGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmco
Imxpc3Rib3giKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0
VGVzdENhc2UoInRlc3RJbWFnZUxhYmVscyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdEltYWdlTGFi
ZWxzLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVs
ZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNcdTAwMjIgaGF2ZSBhY2Nlc3NpYmxlIGxhYmVscyBmb3Ig
YXNzaXN0aXZlIHRlY2hub2xvZ3kuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJpbWci
KSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2Uo
InRlc3RGb3JBcmlhSGlkZGVuRmFsc2UiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JBcmlhSGlk
ZGVuRmFsc2UudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIGFy
aWEtaGlkZGVuPVx1MDAyMiVzXHUwMDIyIGlzIG5vdCB1c2VkLiIpLmZvcm1hdChXSS51bmxvY2Fs
aXplZFN0cmluZygiZmFsc2UiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3
IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RUcmVlUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwg
e2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBc
dTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ug
d2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInRyZWUiKSksIHN1
cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RS
YWRpb0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RS
YWRpb0dyb3VwUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9u
OiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAy
MiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJ
QS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInJhZGlvZ3JvdXAiKSksIHN1cHBvcnRz
OiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RGZWVkUm9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RGZWVkUm9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5z
dXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93
bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5s
b2NhbGl6ZWRTdHJpbmcoImZlZWQiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAg
bmV3IFdJLkF1ZGl0VGVzdENhc2UoInRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4i
LCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RUYWJMaXN0Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9T
dHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgZWxlbWVudHMg
b2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVpcmVkIG93bmVkIGVsZW1lbnRzIGluIGFj
Y29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQoV0kudW5sb2NhbGl6ZWRTdHJpbmcoInRh
Ymxpc3QiKSksIHN1cHBvcnRzOiAxfSksCisgICAgICAgICAgICAgICAgbmV3IFdJLkF1ZGl0VGVz
dENhc2UoInRlc3RCdXR0b25MYWJlbHMiLCBXSS5EZWZhdWx0QXVkaXRzLnRlc3RCdXR0b25MYWJl
bHMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5zdXJlIHRoYXQgYnV0
dG9ucyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neS4iKSwg
c3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVz
dFJvd1JvbGVGb3JSZXF1aXJlZENoaWxkcmVuIiwgV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Um93Um9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4udG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmlu
ZygiRW5zdXJlIHRoYXQgZWxlbWVudHMgb2Ygcm9sZSBcdTAwMjIlc1x1MDAyMiBoYXZlIHJlcXVp
cmVkIG93bmVkIGVsZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCBXQUktQVJJQS4iKS5mb3JtYXQo
V0kudW5sb2NhbGl6ZWRTdHJpbmcoInJvdyIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAg
ICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJl
biIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdExpc3RSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbi50b1N0
cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3RyaW5nKCJFbnN1cmUgdGhhdCBlbGVtZW50cyBv
ZiByb2xlIFx1MDAyMiVzXHUwMDIyIGhhdmUgcmVxdWlyZWQgb3duZWQgZWxlbWVudHMgaW4gYWNj
b3JkYW5jZSB3aXRoIFdBSS1BUklBLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygibGlz
dCIpKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2Fz
ZSgidGVzdENvbWJvQm94Um9sZUZvclJlcXVpcmVkQ2hpbGRyZW4iLCBXSS5EZWZhdWx0QXVkaXRz
LnRlc3RDb21ib0JveFJvbGVGb3JSZXF1aXJlZENoaWxkcmVuLnRvU3RyaW5nKCksIHtkZXNjcmlw
dGlvbjogV0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IGVsZW1lbnRzIG9mIHJvbGUgXHUwMDIyJXNc
dTAwMjIgaGF2ZSByZXF1aXJlZCBvd25lZCBlbGVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggV0FJ
LUFSSUEuIikuZm9ybWF0KFdJLnVubG9jYWxpemVkU3RyaW5nKCJjb21ib2JveCIpKSwgc3VwcG9y
dHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRUZXN0Q2FzZSgidGVzdEZvck11
bHRpcGxlTWFpbkNvbnRlbnRTZWN0aW9ucyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11bHRp
cGxlTWFpbkNvbnRlbnRTZWN0aW9ucy50b1N0cmluZygpLCB7ZGVzY3JpcHRpb246IFdJLlVJU3Ry
aW5nKCJFbnN1cmUgdGhhdCBvbmx5IG9uZSBtYWluIGNvbnRlbnQgc2VjdGlvbiBpcyB1c2VkIG9u
IHRoZSBwYWdlLiIpLCBzdXBwb3J0czogMX0pLAorICAgICAgICAgICAgICAgIG5ldyBXSS5BdWRp
dFRlc3RDYXNlKCJ0ZXN0RGlhbG9nc0ZvckxhYmVscyIsIFdJLkRlZmF1bHRBdWRpdHMudGVzdERp
YWxvZ3NGb3JMYWJlbHMudG9TdHJpbmcoKSwge2Rlc2NyaXB0aW9uOiBXSS5VSVN0cmluZygiRW5z
dXJlIHRoYXQgZGlhbG9ncyBoYXZlIGFjY2Vzc2libGUgbGFiZWxzIGZvciBhc3Npc3RpdmUgdGVj
aG5vbG9neS4iKSwgc3VwcG9ydHM6IDF9KSwKKyAgICAgICAgICAgICAgICBuZXcgV0kuQXVkaXRU
ZXN0Q2FzZSgidGVzdEZvckludmFsaWRBcmlhSGlkZGVuVmFsdWUiLCBXSS5EZWZhdWx0QXVkaXRz
LnRlc3RGb3JJbnZhbGlkQXJpYUhpZGRlblZhbHVlLnRvU3RyaW5nKCksIHtkZXNjcmlwdGlvbjog
V0kuVUlTdHJpbmcoIkVuc3VyZSB0aGF0IHZhbHVlcyBmb3IgXHUwMDIyJXNcdTAwMjIgYXJlIHZh
bGlkLiIpLmZvcm1hdChXSS51bmxvY2FsaXplZFN0cmluZygiYXJpYS1oaWRkZW4iKSksIHN1cHBv
cnRzOiAxfSkKICAgICAgICAgICAgIF0sIHtkZXNjcmlwdGlvbjogV0kuVUlTdHJpbmcoIkRpYWdu
b3NlcyBjb21tb24gYWNjZXNzaWJpbGl0eSBwcm9ibGVtcyBhZmZlY3Rpbmcgc2NyZWVuIHJlYWRl
cnMgYW5kIG90aGVyIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiIpfSksCiAgICAgICAgIF07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA4YTNj
OTAzYTFiOWQ1YmZiNmRjZGYwYWEwYWE4M2VmYjllODE0YjNmLi40MmQxZmI2MDUzNGU4NGQ5NTRk
M2Y0OTNjZjgxZjk4MjNkZmU1OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCkBAIC05MzcsNiArOTM3LDggQEAKICAgICA8c2NyaXB0IHNyYz0i
RGVidWcvUHJvdG9jb2xUcmFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRlYnVn
L0RlYnVnQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9Ik5vbk1p
bmlmaWVkL0RlZmF1bHRBdWRpdHMuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9Ildl
YktpdEFkZGl0aW9ucy9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSUFkZGl0aW9ucy5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05vbk1pbmlmaWVkL0RlZmF1bHRBdWRpdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQ4NGM4ZDA1YzdjNTQ0NWRhNjVjOGY0NjA5NWFiYjNhODg3ZjQ5NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05vbk1p
bmlmaWVkL0RlZmF1bHRBdWRpdHMuanMKQEAgLTAsMCArMSw2ODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
SS5EZWZhdWx0QXVkaXRzID0ge307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2ZWxQYXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MifTsKK307CisKK1dJLkRlZmF1bHRB
dWRpdHMubGV2ZWxXYXJuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogIndhcm4i
fTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2ZWxGYWlsID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHtsZXZlbDogImZhaWwifTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMubGV2ZWxFcnJv
ciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJlcnJvciJ9OworfTsKKworV0ku
RGVmYXVsdEF1ZGl0cy5sZXZlbFVuc3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHtsZXZlbDogInVuc3VwcG9ydGVkIn07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmRhdGFET01O
b2RlcyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6
IFtkb2N1bWVudC5ib2R5XX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmRhdGFET01BdHRyaWJ1
dGVzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczog
QXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIikpLCBkb21BdHRyaWJ1
dGVzOiBbImlkIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5kYXRhRXJyb3JzID0gZnVuY3Rp
b24oKSB7CisgICAgdGhyb3cgRXJyb3IoInRoaXMgZXJyb3Igd2FzIHRocm93biBmcm9tIGluc2lk
ZSB0aGUgYXVkaXQgdGVzdCBjb2RlLiIpOworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5kYXRhQ3Vz
dG9tID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBhOiAxLCBiOiBb
Ml0sIGM6IHtrZXk6IDN9fTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMuZ2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9t
Tm9kZXM6IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1
dGVkUm9sZSgibGluayIpLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5EZWZh
dWx0QXVkaXRzLmdldEFjdGl2ZURlc2NlbmRhbnQgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgcmVz
dWx0ID0ge2xldmVsOiAicGFzcyJ9OworICAgIGxldCBhY3RpdmVEZXNjZW5kYW50ID0gV2ViSW5z
cGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRBY3RpdmVEZXNjZW5kYW50KGRvY3VtZW50LmJv
ZHkpOworICAgIGlmIChhY3RpdmVEZXNjZW5kYW50KQorICAgICAgICByZXN1bHQuZG9tTm9kZXMg
PSBbYWN0aXZlRGVzY2VuZGFudF07CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK1dJLkRlZmF1
bHRBdWRpdHMuZ2V0Q2hpbGROb2RlcyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBjaGlsZE5vZGVz
ID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDaGlsZE5vZGVzKGRvY3VtZW50
LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9kZXM6IGNoaWxkTm9kZXMg
fHwgW119OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy5nZXRDb21wdXRlZFByb3BlcnRpZXMgPSBm
dW5jdGlvbigpIHsKKyAgICBsZXQgZG9tQXR0cmlidXRlcyA9IFsiYWx0IiwgImFyaWEtYXRvbWlj
IiwgImFyaWEtYnVzeSIsICJhcmlhLWNoZWNrZWQiLCAiYXJpYS1jdXJyZW50IiwgImFyaWEtZGlz
YWJsZWQiLCAiYXJpYS1leHBhbmRlZCIsICJhcmlhLWhhc3BvcHVwIiwgImFyaWEtaGlkZGVuIiwg
ImFyaWEtaW52YWxpZCIsICJhcmlhLWxhYmVsIiwgImFyaWEtbGFiZWxsZWRieSIsICJhcmlhLWxl
dmVsIiwgImFyaWEtbGl2ZSIsICJhcmlhLXByZXNzZWQiLCAiYXJpYS1yZWFkb25seSIsICJhcmlh
LXJlbGV2YW50IiwgImFyaWEtcmVxdWlyZWQiLCAiYXJpYS1zZWxlY3RlZCIsICJyb2xlIiwgInRp
dGxlIl0uZmlsdGVyKChhdHRyaWJ1dGUpID0+IGRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKGF0
dHJpYnV0ZSkpOworICAgIGxldCBjb21wdXRlZFByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRp
dC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhkb2N1bWVudC5ib2R5KTsKKyAg
ICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0sIGRvbUF0
dHJpYnV0ZXMsIC4uLihjb21wdXRlZFByb3BlcnRpZXMgfHwge30pfTsKK307CisKK1dJLkRlZmF1
bHRBdWRpdHMuZ2V0Q29udHJvbGxlZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGNvbnRy
b2xsZWROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29udHJvbGxl
ZE5vZGVzKGRvY3VtZW50LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9tTm9k
ZXM6IGNvbnRyb2xsZWROb2RlcyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldEZs
b3dlZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGZsb3dlZE5vZGVzID0gV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRGbG93ZWROb2Rlcyhkb2N1bWVudC5ib2R5KTsKKyAg
ICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBmbG93ZWROb2RlcyB8fCBbXX07Cit9
OworCitXSS5EZWZhdWx0QXVkaXRzLmdldE1vdXNlRXZlbnROb2RlID0gZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IHJlc3VsdCA9IHtsZXZlbDogInBhc3MifTsKKyAgICBsZXQgbW91c2VFdmVudE5vZGUg
PSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE1vdXNlRXZlbnROb2RlKGRvY3Vt
ZW50LmJvZHkpOworICAgIGlmIChtb3VzZUV2ZW50Tm9kZSkKKyAgICAgICAgcmVzdWx0LmRvbU5v
ZGVzID0gW21vdXNlRXZlbnROb2RlXTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworV0kuRGVm
YXVsdEF1ZGl0cy5nZXRPd25lZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IG93bmVkTm9k
ZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldE93bmVkTm9kZXMoZG9jdW1l
bnQuYm9keSk7CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBkb21Ob2Rlczogb3duZWROb2Rl
cyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldFBhcmVudE5vZGUgPSBmdW5jdGlv
bigpIHsKKyAgICBsZXQgcmVzdWx0ID0ge2xldmVsOiAicGFzcyJ9OworICAgIGxldCBwYXJlbnRO
b2RlID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRQYXJlbnROb2RlKGRvY3Vt
ZW50LmJvZHkpOworICAgIGlmIChwYXJlbnROb2RlKQorICAgICAgICByZXN1bHQuZG9tTm9kZXMg
PSBbcGFyZW50Tm9kZV07CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK1dJLkRlZmF1bHRBdWRp
dHMuZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IHNlbGVjdGVk
Q2hpbGROb2RlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0U2VsZWN0ZWRD
aGlsZE5vZGVzKGRvY3VtZW50LmJvZHkpOworICAgIHJldHVybiB7bGV2ZWw6ICJwYXNzIiwgZG9t
Tm9kZXM6IHNlbGVjdGVkQ2hpbGROb2RlcyB8fCBbXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRz
Lmhhc0V2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGRvbUF0dHJpYnV0ZXMg
PSBBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkuYXR0cmlidXRlcykuZmlsdGVyKChhdHRyaWJ1dGUp
ID0+IGF0dHJpYnV0ZS5uYW1lLnN0YXJ0c1dpdGgoIm9uIikpOworICAgIHJldHVybiB7bGV2ZWw6
ICJwYXNzIiwgZG9tTm9kZXM6IFtkb2N1bWVudC5ib2R5XSwgZG9tQXR0cmlidXRlcywgaGFzRXZl
bnRMaXN0ZW5lcnM6IFdlYkluc3BlY3RvckF1ZGl0LkRPTS5oYXNFdmVudExpc3RlbmVycyhkb2N1
bWVudC5ib2R5KX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmhhc0V2ZW50TGlzdGVuZXJzQ2xp
Y2sgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZG9tQXR0cmlidXRlcyA9IFsib25jbGljayJdLmZp
bHRlcigoYXR0cmlidXRlKSA9PiBkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUp
KTsKKyAgICByZXR1cm4ge2xldmVsOiAicGFzcyIsIGRvbU5vZGVzOiBbZG9jdW1lbnQuYm9keV0s
IGRvbUF0dHJpYnV0ZXMsIGhhc0NsaWNrRXZlbnRMaXN0ZW5lcjogV2ViSW5zcGVjdG9yQXVkaXQu
RE9NLmhhc0V2ZW50TGlzdGVuZXJzKGRvY3VtZW50LmJvZHksICJjbGljayIpfTsKK307CisKK1dJ
LkRlZmF1bHRBdWRpdHMuZ2V0UmVzb3VyY2VzID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHts
ZXZlbDogInBhc3MiLCByZXNvdXJjZXM6IFdlYkluc3BlY3RvckF1ZGl0LlJlc291cmNlcy5nZXRS
ZXNvdXJjZXMoKX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLmdldFJlc291cmNlQ29udGVudCA9
IGZ1bmN0aW9uKCkgeworICAgIGxldCByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5SZXNv
dXJjZXMuZ2V0UmVzb3VyY2VzKCk7CisgICAgbGV0IG1haW5SZXNvdXJjZSA9IHJlc291cmNlcy5m
aW5kKChyZXNvdXJjZSkgPT4gcmVzb3VyY2UudXJsID09PSB3aW5kb3cubG9jYXRpb24uaHJlZik7
CisgICAgcmV0dXJuIHtsZXZlbDogInBhc3MiLCBtYWluUmVzb3VyY2UsIHJlc291cmNlQ29udGVu
dDogV2ViSW5zcGVjdG9yQXVkaXQuUmVzb3VyY2VzLmdldFJlc291cmNlQ29udGVudChtYWluUmVz
b3VyY2UuaWQpfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudW5zdXBwb3J0ZWQgPSBmdW5jdGlv
bigpIHsKKyAgICB0aHJvdyBFcnJvcigidGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgc3VwcG9ydGVk
LiIpOworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0TWVudVJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAg
bWVudTogWyJtZW51aXRlbSIsICJtZW51aXRlbWNoZWNrYm94IiwgIm1lbnVpdGVtcmFkaW8iXSwK
KyAgICAgICAgbWVudWJhcjogWyJtZW51aXRlbSIsICJtZW51aXRlbWNoZWNrYm94IiwgIm1lbnVp
dGVtcmFkaW8iXSwKKyAgICB9OworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxldCB2aXNp
dGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2Rl
LCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOworICAgICAg
ICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQo
Y2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAg
ICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2Rl
LmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5u
ZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICBmb3IgKGxldCBwYXJl
bnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhw
YXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYg
KCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1ty
b2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIg
OiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5E
ZWZhdWx0QXVkaXRzLnRlc3RHcmlkUm9sZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigp
IHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAgICAgICBncmlkOiBbInJvdyIsICJy
b3dncm91cCJdLAorICAgIH07CisgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0IHZpc2l0
ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUs
IGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAg
IGlmICghY2hpbGROb2RlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
IChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChj
aGlsZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgeworICAg
ICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5
LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAgICAgICAgICAgaWYgKGNoaWxk
Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgeworICAg
ICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgaWYg
KGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUu
Zmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5l
eHRTaWJsaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
Zm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7CisgICAgICAgIGZvciAobGV0IHBhcmVu
dE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29t
cHV0ZWRSb2xlKHJvbGUpKSB7CisgICAgICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBh
cmVudE5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAo
IWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3Jv
bGVdKSkKKyAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6
ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9sZSJdfTsKK307CisKK1dJLkRl
ZmF1bHRBdWRpdHMudGVzdEZvckFyaWFMYWJlbGxlZEJ5U3BlbGxpbmcgPSBmdW5jdGlvbigpIHsK
KyAgICBsZXQgZG9tTm9kZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IlthcmlhLWxhYmVsZWRieV0iKSk7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3Ro
ID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWxhYmVs
ZWRieSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdEZvck11bHRpcGxlQmFubmVycyA9
IGZ1bmN0aW9uKCkgeworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxldCBiYW5uZXJzID0g
V2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xl
KCJiYW5uZXIiKTsKKyAgICBpZiAoYmFubmVycy5sZW5ndGggPiAxKQorICAgICAgICBkb21Ob2Rl
cyA9IGJhbm5lcnM7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwi
IDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsKKworV0ku
RGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTGlua0xhYmVscyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBs
aW5rcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1
dGVkUm9sZSgibGluayIpOworICAgIGxldCBkb21Ob2RlcyA9IGxpbmtzLmZpbHRlcigobGluaykg
PT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVz
KGxpbmspLmxhYmVsKTsKKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFp
bCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbImFyaWEtbGFiZWwiLCAiYXJp
YS1sYWJlbGxlZGJ5IiwgInRpdGxlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Um93
R3JvdXBSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHJl
bGF0aW9uc2hpcHMgPSB7CisgICAgICAgIHJvd2dyb3VwOiBbInJvdyJdLAorICAgIH07CisgICAg
bGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAg
ICBmdW5jdGlvbiBoYXNDaGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAg
ICAgbGV0IGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgIGlmICghY2hpbGROb2RlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkK
KyAgICAgICAgICAgIHZpc2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7CisK
KyAgICAgICAgd2hpbGUgKGNoaWxkTm9kZSkgeworICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMg
PSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhj
aGlsZE5vZGUpOworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgcHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmIChleHBlY3Rl
ZFJvbGVzLmluY2x1ZGVzKHByb3BlcnRpZXMucm9sZSkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVz
KCkgJiYgaGFzQ2hpbGRXaXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xl
cykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlv
bnNoaXBzKSB7CisgICAgICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVk
aXQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAg
ICAgICAgICBpZiAodmlzaXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50
Tm9kZS5maXJzdENoaWxkLCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAgICAgICAgICAgICBk
b21Ob2Rlcy5wdXNoKHBhcmVudE5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB7
bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0
dHJpYnV0ZXM6IFsicm9sZSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdFRhYmxlUm9s
ZUZvclJlcXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNo
aXBzID0geworICAgICAgICB0YWJsZTogWyJyb3ciLCAicm93Z3JvdXAiXSwKKyAgICB9OworICAg
IGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7Cisg
ICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAg
ICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUp
CisgICAgICAgICAgICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOwor
CisgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVz
ID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMo
Y2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUu
RUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0
ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2Rl
cygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9s
ZXMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRp
b25zaGlwcykgeworICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1
ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAg
ICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVu
dE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAg
ZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
e2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21B
dHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JNdWx0
aXBsZUxpdmVSZWdpb25zID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgbGl2ZVJlZ2lvblJvbGVz
ID0gWyJhbGVydCIsICJsb2ciLCAic3RhdHVzIiwgIm1hcnF1ZWUiLCAidGltZXIiXTsKKyAgICBs
ZXQgZG9tTm9kZXMgPSBbXTsKKyAgICBsZXQgbGl2ZVJlZ2lvbnMgPSBsaXZlUmVnaW9uUm9sZXMu
cmVkdWNlKChhLCBiKSA9PiB7CisgICAgICAgIHJldHVybiBhLmNvbmNhdChXZWJJbnNwZWN0b3JB
dWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoYikpOworICAgIH0s
IFtdKTsKKyAgICBsaXZlUmVnaW9ucyA9IGxpdmVSZWdpb25zLmNvbmNhdChBcnJheS5mcm9tKGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFthcmlhLWxpdmU9InBvbGl0ZSJdLCBbYXJpYS1saXZl
PSJhc3NlcnRpdmUiXWApKSk7CisgICAgaWYgKGxpdmVSZWdpb25zLmxlbmd0aCA+IDEpCisgICAg
ICAgIGRvbU5vZGVzID0gbGl2ZVJlZ2lvbnM7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMu
bGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlh
LWxpdmUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Qm94Um9sZUZvclJlcXVp
cmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gewor
ICAgICAgICBsaXN0Ym94OiBbIm9wdGlvbiJdLAorICAgIH07CisgICAgbGV0IGRvbU5vZGVzID0g
W107CisgICAgbGV0IHZpc2l0ZWRQYXJlbnRzID0gbmV3IFNldDsKKyAgICBmdW5jdGlvbiBoYXND
aGlsZFdpdGhSb2xlKG5vZGUsIGV4cGVjdGVkUm9sZXMpIHsKKyAgICAgICAgbGV0IGNoaWxkTm9k
ZSA9IG5vZGU7CisgICAgICAgIGlmICghY2hpbGROb2RlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmIChjaGlsZE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgIHZp
c2l0ZWRQYXJlbnRzLmFkZChjaGlsZE5vZGUucGFyZW50Tm9kZSk7CisKKyAgICAgICAgd2hpbGUg
KGNoaWxkTm9kZSkgeworICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBXZWJJbnNwZWN0b3JB
dWRpdC5BY2Nlc3NpYmlsaXR5LmdldENvbXB1dGVkUHJvcGVydGllcyhjaGlsZE5vZGUpOworICAg
ICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYg
cHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJvbGVzLmluY2x1ZGVz
KHByb3BlcnRpZXMucm9sZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgaGFzQ2hpbGRX
aXRoUm9sZShjaGlsZE5vZGUuZmlyc3RDaGlsZCwgZXhwZWN0ZWRSb2xlcykpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hpbGRO
b2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgZm9yIChsZXQgcm9sZSBpbiByZWxhdGlvbnNoaXBzKSB7CisgICAg
ICAgIGZvciAobGV0IHBhcmVudE5vZGUgb2YgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJpbGl0
eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKHJvbGUpKSB7CisgICAgICAgICAgICBpZiAodmlz
aXRlZFBhcmVudHMuaGFzKHBhcmVudE5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBpZiAoIWhhc0NoaWxkV2l0aFJvbGUocGFyZW50Tm9kZS5maXJzdENoaWxk
LCByZWxhdGlvbnNoaXBzW3JvbGVdKSkKKyAgICAgICAgICAgICAgICBkb21Ob2Rlcy5wdXNoKHBh
cmVudE5vZGUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVz
Lmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsicm9s
ZSJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdEltYWdlTGFiZWxzID0gZnVuY3Rpb24o
KSB7CisgICAgbGV0IGltYWdlcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiaW1nIik7CisgICAgbGV0IGRvbU5vZGVzID0gaW1hZ2Vz
LmZpbHRlcigoaW1hZ2UpID0+ICFXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldENv
bXB1dGVkUHJvcGVydGllcyhpbWFnZSkubGFiZWwpOworICAgIHJldHVybiB7bGV2ZWw6IGRvbU5v
ZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsi
YXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiLCAiYWx0Il19OworfTsKKwor
V0kuRGVmYXVsdEF1ZGl0cy50ZXN0Rm9yQXJpYUhpZGRlbkZhbHNlID0gZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBb
YXJpYS1oaWRkZW49ImZhbHNlIl1gKSk7CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVu
Z3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJhcmlhLWhp
ZGRlbiJdfTsKK307CisKK1dJLkRlZmF1bHRBdWRpdHMudGVzdFRyZWVSb2xlRm9yUmVxdWlyZWRD
aGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAg
ICAgIHRyZWU6IFsidHJlZWl0ZW0iLCAiZ3JvdXAiXSwKKyAgICB9OworICAgIGxldCBkb21Ob2Rl
cyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24g
aGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGls
ZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAg
ICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdo
aWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsK
KyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RF
ICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNs
dWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0No
aWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNo
aWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewor
ICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2li
aWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYg
KHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RD
aGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVz
aChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21O
b2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBb
InJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RSYWRpb0dyb3VwUm9sZUZvclJl
cXVpcmVkQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0g
eworICAgICAgICByYWRpb2dyb3VwOiBbInJhZGlvIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9k
ZXMgPSBbXTsKKyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9u
IGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hp
bGROb2RlID0gbm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAg
ICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3
aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7
CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9E
RSAmJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5j
bHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXND
aGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsK
KyAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlm
ICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0
Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1
c2gocGFyZW50Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJyb2xlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0RmVlZFJvbGVGb3JSZXF1aXJl
ZENoaWxkcmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAg
ICAgICAgZmVlZDogWyJhcnRpY2xlIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9kZXMgPSBbXTsK
KyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9uIGhhc0NoaWxk
V2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hpbGROb2RlID0g
bm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgdmlzaXRl
ZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3aGlsZSAoY2hp
bGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0
LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9w
ZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJv
cGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhS
b2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGlsZE5vZGUg
PSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAg
Zm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5Lmdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdGVk
UGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJl
bGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50
Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVu
Z3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19
OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0VGFiTGlzdFJvbGVGb3JSZXF1aXJlZENoaWxk
cmVuID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IHsKKyAgICAgICAg
dGFibGlzdDogWyJ0YWIiXSwKKyAgICB9OworICAgIGxldCBkb21Ob2RlcyA9IFtdOworICAgIGxl
dCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24gaGFzQ2hpbGRXaXRoUm9s
ZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlOwor
ICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB2aXNpdGVkUGFyZW50
cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdoaWxlIChjaGlsZE5vZGUp
IHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlm
IChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNsdWRlcyhwcm9wZXJ0aWVz
LnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0NoaWxkV2l0aFJvbGUoY2hp
bGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgeworICAgICAgICBmb3IgKGxl
dCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVu
dHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0ZWRQYXJlbnRz
LmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RDaGlsZCwgcmVsYXRpb25z
aGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVzaChwYXJlbnROb2RlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21Ob2Rlcy5sZW5ndGggPyAi
ZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBbInJvbGUiXX07Cit9Owor
CitXSS5EZWZhdWx0QXVkaXRzLnRlc3RCdXR0b25MYWJlbHMgPSBmdW5jdGlvbigpIHsKKyAgICBs
ZXQgYnV0dG9ucyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNC
eUNvbXB1dGVkUm9sZSgiYnV0dG9uIik7CisgICAgbGV0IGRvbU5vZGVzID0gYnV0dG9ucy5maWx0
ZXIoKGJ1dHRvbikgPT4gIVdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0
ZWRQcm9wZXJ0aWVzKGJ1dHRvbikubGFiZWwpOworICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVz
Lmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNzIiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJp
YS1sYWJlbCIsICJhcmlhLWxhYmVsbGVkYnkiLCAidGl0bGUiXX07Cit9OworCitXSS5EZWZhdWx0
QXVkaXRzLnRlc3RSb3dSb2xlRm9yUmVxdWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAg
IGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7CisgICAgICAgIHJvdzogWyJjZWxsIiwgImdyaWRjZWxs
IiwgImNvbHVtbmhlYWRlciIsICJyb3doZWFkZXIiXSwKKyAgICB9OworICAgIGxldCBkb21Ob2Rl
cyA9IFtdOworICAgIGxldCB2aXNpdGVkUGFyZW50cyA9IG5ldyBTZXQ7CisgICAgZnVuY3Rpb24g
aGFzQ2hpbGRXaXRoUm9sZShub2RlLCBleHBlY3RlZFJvbGVzKSB7CisgICAgICAgIGxldCBjaGls
ZE5vZGUgPSBub2RlOworICAgICAgICBpZiAoIWNoaWxkTm9kZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoY2hpbGROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAg
ICB2aXNpdGVkUGFyZW50cy5hZGQoY2hpbGROb2RlLnBhcmVudE5vZGUpOworCisgICAgICAgIHdo
aWxlIChjaGlsZE5vZGUpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gV2ViSW5zcGVj
dG9yQXVkaXQuQWNjZXNzaWJpbGl0eS5nZXRDb21wdXRlZFByb3BlcnRpZXMoY2hpbGROb2RlKTsK
KyAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RF
ICYmIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSb2xlcy5pbmNs
dWRlcyhwcm9wZXJ0aWVzLnJvbGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGhhc0No
aWxkV2l0aFJvbGUoY2hpbGROb2RlLmZpcnN0Q2hpbGQsIGV4cGVjdGVkUm9sZXMpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNo
aWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAobGV0IHJvbGUgaW4gcmVsYXRpb25zaGlwcykgewor
ICAgICAgICBmb3IgKGxldCBwYXJlbnROb2RlIG9mIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2li
aWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShyb2xlKSkgeworICAgICAgICAgICAgaWYg
KHZpc2l0ZWRQYXJlbnRzLmhhcyhwYXJlbnROb2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgaWYgKCFoYXNDaGlsZFdpdGhSb2xlKHBhcmVudE5vZGUuZmlyc3RD
aGlsZCwgcmVsYXRpb25zaGlwc1tyb2xlXSkpCisgICAgICAgICAgICAgICAgZG9tTm9kZXMucHVz
aChwYXJlbnROb2RlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ge2xldmVsOiBkb21O
b2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1dGVzOiBb
InJvbGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RMaXN0Um9sZUZvclJlcXVpcmVk
Q2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCByZWxhdGlvbnNoaXBzID0geworICAg
ICAgICBsaXN0OiBbImxpc3RpdGVtIiwgImdyb3VwIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9k
ZXMgPSBbXTsKKyAgICBsZXQgdmlzaXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9u
IGhhc0NoaWxkV2l0aFJvbGUobm9kZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hp
bGROb2RlID0gbm9kZTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAg
ICAgdmlzaXRlZFBhcmVudHMuYWRkKGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3
aGlsZSAoY2hpbGROb2RlKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7
CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9E
RSAmJiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5j
bHVkZXMocHJvcGVydGllcy5yb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXND
aGlsZFdpdGhSb2xlKGNoaWxkTm9kZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsK
KyAgICAgICAgZm9yIChsZXQgcGFyZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3Np
YmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlm
ICh2aXNpdGVkUGFyZW50cy5oYXMocGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGlmICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0
Q2hpbGQsIHJlbGF0aW9uc2hpcHNbcm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1
c2gocGFyZW50Tm9kZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9t
Tm9kZXMubGVuZ3RoID8gIndhcm4iIDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczog
WyJyb2xlIl19OworfTsKKworV0kuRGVmYXVsdEF1ZGl0cy50ZXN0Q29tYm9Cb3hSb2xlRm9yUmVx
dWlyZWRDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSB7
CisgICAgICAgIGNvbWJvYm94OiBbInRleHRib3giLCAibGlzdGJveCIsICJ0cmVlIiwgImdyaWQi
LCAiZGlhbG9nIl0sCisgICAgfTsKKyAgICBsZXQgZG9tTm9kZXMgPSBbXTsKKyAgICBsZXQgdmlz
aXRlZFBhcmVudHMgPSBuZXcgU2V0OworICAgIGZ1bmN0aW9uIGhhc0NoaWxkV2l0aFJvbGUobm9k
ZSwgZXhwZWN0ZWRSb2xlcykgeworICAgICAgICBsZXQgY2hpbGROb2RlID0gbm9kZTsKKyAgICAg
ICAgaWYgKCFjaGlsZE5vZGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKGNoaWxkTm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgdmlzaXRlZFBhcmVudHMuYWRk
KGNoaWxkTm9kZS5wYXJlbnROb2RlKTsKKworICAgICAgICB3aGlsZSAoY2hpbGROb2RlKSB7Cisg
ICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGNoaWxkTm9kZSk7CisgICAgICAgICAgICBpZiAoY2hp
bGROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwcm9wZXJ0aWVzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUm9sZXMuaW5jbHVkZXMocHJvcGVydGllcy5yb2xl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAoY2hpbGROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBoYXNDaGlsZFdpdGhSb2xlKGNoaWxkTm9k
ZS5maXJzdENoaWxkLCBleHBlY3RlZFJvbGVzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUu
bmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBmb3IgKGxldCByb2xlIGluIHJlbGF0aW9uc2hpcHMpIHsKKyAgICAgICAgZm9yIChsZXQgcGFy
ZW50Tm9kZSBvZiBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUocm9sZSkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdGVkUGFyZW50cy5oYXMo
cGFyZW50Tm9kZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlm
ICghaGFzQ2hpbGRXaXRoUm9sZShwYXJlbnROb2RlLmZpcnN0Q2hpbGQsIHJlbGF0aW9uc2hpcHNb
cm9sZV0pKQorICAgICAgICAgICAgICAgIGRvbU5vZGVzLnB1c2gocGFyZW50Tm9kZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwi
IDogInBhc3MiLCBkb21Ob2RlcywgZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsKKworV0ku
RGVmYXVsdEF1ZGl0cy50ZXN0Rm9yTXVsdGlwbGVNYWluQ29udGVudFNlY3Rpb25zID0gZnVuY3Rp
b24oKSB7CisgICAgbGV0IGRvbU5vZGVzID0gW107CisgICAgbGV0IG1haW5Db250ZW50RWxlbWVu
dHMgPSBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRl
ZFJvbGUoIm1haW4iKTsKKyAgICBpZiAobWFpbkNvbnRlbnRFbGVtZW50cy5sZW5ndGggPiAxKSB7
CisgICAgICAgIGRvbU5vZGVzID0gbWFpbkNvbnRlbnRFbGVtZW50czsKKyAgICB9CisgICAgcmV0
dXJuIHtsZXZlbDogZG9tTm9kZXMubGVuZ3RoID8gImZhaWwiIDogInBhc3MiLCBkb21Ob2Rlcywg
ZG9tQXR0cmlidXRlczogWyJyb2xlIl19OworfTsKK1dJLkRlZmF1bHRBdWRpdHMudGVzdERpYWxv
Z3NGb3JMYWJlbHMgPSBmdW5jdGlvbigpIHsKKyAgICBsZXQgZGlhbG9ncyA9IFdlYkluc3BlY3Rv
ckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiZGlhbG9nIik7
CisgICAgbGV0IGRvbU5vZGVzID0gZGlhbG9ncy5maWx0ZXIoKGRpYWxvZykgPT4gIVdlYkluc3Bl
Y3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkuZ2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKGRpYWxvZykubGFi
ZWwpOworICAgIHJldHVybiB7bGV2ZWw6IGRvbU5vZGVzLmxlbmd0aCA/ICJmYWlsIiA6ICJwYXNz
IiwgZG9tTm9kZXMsIGRvbUF0dHJpYnV0ZXM6IFsiYXJpYS1sYWJlbCIsICJhcmlhLWxhYmVsbGVk
YnkiLCAidGl0bGUiXX07Cit9OworCitXSS5EZWZhdWx0QXVkaXRzLnRlc3RGb3JJbnZhbGlkQXJp
YUhpZGRlblZhbHVlID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IGRvbU5vZGVzID0gQXJyYXkuZnJv
bShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1oaWRkZW5dOm5vdChbYXJpYS1oaWRk
ZW49InRydWUiXSwgW2FyaWEtaGlkZGVuPSJmYWxzZSJdKWApKTsKKyAgICByZXR1cm4ge2xldmVs
OiBkb21Ob2Rlcy5sZW5ndGggPyAiZmFpbCIgOiAicGFzcyIsIGRvbU5vZGVzLCBkb21BdHRyaWJ1
dGVzOiBbImFyaWEtaGlkZGVuIl19OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAxZTQyYjE0NTI1ZWY4ZTNiOGY2ZWU2MWRlMTA4Mjhl
ZTVjOGJmNjc2Li4zMTYyMWZmNTc1YTFmNDNjN2VlNmNkZjliYjNhMzUyZDAxZDE4ZDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0yODYs
NiArMjg2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHJlZUVsZW1lbnQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAK
KyAgICA8c2NyaXB0IHNyYz0iTm9uTWluaWZpZWQvRGVmYXVsdEF1ZGl0cy5qcyI+PC9zY3JpcHQ+
CisKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJLnNoYXJl
ZEFwcCA9IG5ldyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKICAgICAgICAgV0kuc2hhcmVkQXBwLmlu
aXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmNzBkMTNlODViZjNjOWQ0MGQ4ODM1Y2MyYjJhNGE2MzhhNmQw
MjNlLi4yODEyOGRjZDY1NTQzYTdlYzM1Njc1YjM3YmI0OTY3OGRlOTRhZjFhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMDQtMjYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHQgQXVkaXRzIHNjcmlwdCBhcmUgbWlu
aWZpZWQgaW4gcmVsZWFzZSBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNTAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEJKIEJ1cmcuCisK
KyAgICAgICAgQWRkZWQgdGVzdCB0byBjaGVjayB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVk
IGluIGRlZmF1bHQgYXVkaXRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2F1ZGl0L25vbi1taW5p
ZmllZC1kZWZhdWx0LWF1ZGl0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9hdWRpdC9ub24tbWluaWZpZWQtZGVmYXVsdC1hdWRpdHMuaHRtbDogQWRkZWQuCisKIDIw
MjEtMDQtMTkgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR0xJQl0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gVXBkYXRlIGJhc2VsaW5lcyBhbmQg
dGVzdCBleHBlY3RhdGlvbnMgYWZ0ZXIgcjIyNDc5MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hdWRpdC9ub24tbWluaWZpZWQtZGVmYXVsdC1hdWRpdHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L25vbi1taW5pZmllZC1kZWZhdWx0LWF1ZGl0
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMyZWFmN2UzNjUyOTdkZDU3ZTQzYTRlZjVjYjE2
YTQzNjNmMGZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRp
dC9ub24tbWluaWZpZWQtZGVmYXVsdC1hdWRpdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorVGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgZGVmYXVsdCBhdWRpdHMgYXJlIG5vdCBtaW5pZmll
ZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEF1ZGl0Lk5vbk1pbmlmaWVkRGVmYXVsdEF1
ZGl0cworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEF1ZGl0Lk5vbk1pbmlmaWVkRGVmYXVsdEF1ZGl0
cy5JbmRlbnRhdGlvblByZXNlcnZlZAorUEFTUzogRXhwZWN0IHRoYXQgZGVmYXVsdCBhdWRpdHMg
c291cmNlIGlzIHByZXNlbnQuCitQQVNTOiBFeHBlY3QgdGhhdCB0aGUgdGVzdFBhc3MgdGVzdCBj
YXNlIGhhcyBjb3JyZWN0IG51bWJlciBvZiBzcGFjZXMgYW5kIGluZGVudGF0aW9uLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRlZmF1bHQt
YXVkaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvbm9uLW1pbmlmaWVkLWRl
ZmF1bHQtYXVkaXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEyZjA1ZmVhMzU5MTVmZGQ4NmY5NDY4YmJl
NmNkODg1Nzk0NWY3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9h
dWRpdC9ub24tbWluaWZpZWQtZGVmYXVsdC1hdWRpdHMuaHRtbApAQCAtMCwwICsxLDI4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIkF1ZGl0Lk5vbk1pbmlmaWVkRGVmYXVsdEF1ZGl0cyIpOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQXVkaXQuTm9uTWluaWZpZWRE
ZWZhdWx0QXVkaXRzLkluZGVudGF0aW9uUHJlc2VydmVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJFbnN1cmUgdGhhdCBpbmRlbnRhdGlvbiBpcyBwcmVzZXJ2ZWQgaW4gZGVmYXVsdCBhdWRpdCBm
dW5jdGlvbiBzb3VyY2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShXSS5EZWZhdWx0QXVkaXRzLCAiRXhwZWN0IHRoYXQgZGVm
YXVsdCBhdWRpdHMgc291cmNlIGlzIHByZXNlbnQuIik7CisKKyAgICAgICAgICAgIGNvbnN0IGV4
cGVjdGVkTGV2ZWxQYXNzU3RyaW5nID0gYGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge2xldmVs
OiAicGFzcyJ9O1xufWA7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJ
LkRlZmF1bHRBdWRpdHMubGV2ZWxQYXNzLnRvU3RyaW5nKCksIGV4cGVjdGVkTGV2ZWxQYXNzU3Ry
aW5nLCAiRXhwZWN0IHRoYXQgdGhlIHRlc3RQYXNzIHRlc3QgY2FzZSBoYXMgY29ycmVjdCBudW1i
ZXIgb2Ygc3BhY2VzIGFuZCBpbmRlbnRhdGlvbi4iKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgdG8gbWFrZSBzdXJlIHRo
YXQgZGVmYXVsdCBhdWRpdHMgYXJlIG5vdCBtaW5pZmllZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>