<?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>176941</bug_id>
          
          <creation_ts>2017-09-14 12:37:17 -0700</creation_ts>
          <short_desc>Storage Access API: Web process should ask UI process for grant/deny</short_desc>
          <delta_ts>2017-10-05 16:05:08 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176862</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348925</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-09-14 12:37:17 -0700</bug_when>
    <thetext>The web process needs to asynchronously ask the UI process whether to grant or deny storage access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348926</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-14 12:37:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/34440036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356215</commentid>
    <comment_count>2</comment_count>
      <attachid>322625</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-03 19:46:30 -0700</bug_when>
    <thetext>Created attachment 322625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356216</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-03 19:47:24 -0700</bug_when>
    <thetext>Style check errors are the callback function parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356217</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-03 19:48:20 -0700</bug_when>
    <thetext>Attachment 322625 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1370:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:247:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:345:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.cpp:6044:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:997:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:1595:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:1226:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356335</commentid>
    <comment_count>5</comment_count>
      <attachid>322625</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-04 04:07:09 -0700</bug_when>
    <thetext>Comment on attachment 322625
Patch

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

&gt; Source/WebCore/dom/Document.cpp:7340
&gt;      StringBuilder builder;
&gt;      builder.appendLiteral(&quot;Do you want to use your &quot;);
&gt; -    builder.append(partitionDomain);
&gt; +    builder.append(iframeHost);
&gt;      builder.appendLiteral(&quot; ID on &quot;);
&gt; -    builder.append(topPartitionDomain);
&gt; +    builder.append(topHost);
&gt;      builder.appendLiteral(&quot;?&quot;);

This string is non-localized and presents non sanitized (via userVisibleHost) hosts.  I also think this should be done by either WebKit or the hosting app as we do with other permission prompts.

&gt; Source/WebCore/dom/Document.cpp:7345
&gt;      if ((page &amp;&amp; page-&gt;chrome().runJavaScriptConfirm(*m_frame, builder.toString())) || m_grantStorageAccessOverride) {
&gt; -        m_hasStorageAccess = true;
&gt; -        ResourceLoadObserver::shared().registerStorageAccess(partitionDomain, topPartitionDomain);
&gt; -        promise-&gt;resolve&lt;IDLBoolean&gt;(true);
&gt; +        uint64_t contextId = nextRequestStorageAccessContextId();
&gt; +        page-&gt;chrome().client().requestStorageAccess(WTFMove(iframeHost), WTFMove(topHost), contextId, [this, promise] (bool granted) {

Why is the sync prompt still necessary? Can the prompting be handled by the requestStorageAccess now?

It doesn&apos;t seem like this layer needs to generate the contextId since it only passes it in.  Seems like something the WebKit layer could do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356631</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-04 13:45:28 -0700</bug_when>
    <thetext>Thanks for your comments, Sam!

(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 322625 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=322625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:7340
&gt; &gt;      StringBuilder builder;
&gt; &gt;      builder.appendLiteral(&quot;Do you want to use your &quot;);
&gt; &gt; -    builder.append(partitionDomain);
&gt; &gt; +    builder.append(iframeHost);
&gt; &gt;      builder.appendLiteral(&quot; ID on &quot;);
&gt; &gt; -    builder.append(topPartitionDomain);
&gt; &gt; +    builder.append(topHost);
&gt; &gt;      builder.appendLiteral(&quot;?&quot;);
&gt; 
&gt; This string is non-localized and presents non sanitized (via
&gt; userVisibleHost) hosts.  I also think this should be done by either WebKit
&gt; or the hosting app as we do with other permission prompts.

As the FIXME indicates, this is just a placeholder. I might keep it there for demo purposes but in any kind of final version we will a) maybe not prompt at all, b) not use JavaScript confirm, c) localize any prompt, and d) only use TLD+1 in the prompt to communicate to the user what ID he/she is about to use.

&gt; &gt; Source/WebCore/dom/Document.cpp:7345
&gt; &gt;      if ((page &amp;&amp; page-&gt;chrome().runJavaScriptConfirm(*m_frame, builder.toString())) || m_grantStorageAccessOverride) {
&gt; &gt; -        m_hasStorageAccess = true;
&gt; &gt; -        ResourceLoadObserver::shared().registerStorageAccess(partitionDomain, topPartitionDomain);
&gt; &gt; -        promise-&gt;resolve&lt;IDLBoolean&gt;(true);
&gt; &gt; +        uint64_t contextId = nextRequestStorageAccessContextId();
&gt; &gt; +        page-&gt;chrome().client().requestStorageAccess(WTFMove(iframeHost), WTFMove(topHost), contextId, [this, promise] (bool granted) {
&gt; 
&gt; Why is the sync prompt still necessary? Can the prompting be handled by the
&gt; requestStorageAccess now?

See explanation above.

&gt; It doesn&apos;t seem like this layer needs to generate the contextId since it
&gt; only passes it in.  Seems like something the WebKit layer could do.

I&apos;ll see if I can move it up to WebKit. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356652</commentid>
    <comment_count>7</comment_count>
      <attachid>322724</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-04 14:00:41 -0700</bug_when>
    <thetext>Created attachment 322724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356654</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 14:02:53 -0700</bug_when>
    <thetext>Attachment 322724 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1370:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:247:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:345:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.cpp:6050:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:997:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:1595:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:1226:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357075</commentid>
    <comment_count>9</comment_count>
      <attachid>322724</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-05 10:37:50 -0700</bug_when>
    <thetext>Comment on attachment 322724
Patch

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

r=me with comments

&gt; Source/WebCore/dom/Document.cpp:7338
&gt; +        page-&gt;chrome().client().requestStorageAccess(WTFMove(iframeHost), WTFMove(topHost), [this, promise] (bool granted) {

Should the lambda capture a weakPtr to the Document? What guarantees the document is still alive when the lambda is called asynchronously?

&gt; Source/WebCore/page/ChromeClient.h:467
&gt; +    virtual void requestStorageAccess(String&amp;&amp; /*subFrameHost*/, String&amp;&amp; /*topFrameHost*/, WTF::Function&lt;void (bool)&gt;&amp;&amp; /*callback*/) { }

The default implementation should call the callback to avoid hangs.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7045
&gt; +    m_websiteDataStore-&gt;requestStorageAccess(WTFMove(subFrameHost), WTFMove(topFrameHost), [this, webProcessContextId] (bool granted) {

We need a is/was/has prefix for boolean parameters as per coding style. I would rename granted to wasGranted everywhere.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1373
&gt; +        return;

You need to call the callback before returning to avoid hangs.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6053
&gt; +    m_storageAccessResponseCallbackMap.set(contextId, WTFMove(callback));

Should probably be a add(), not a set().
Should can also assert that addResult.isNewEntry to be safe.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6060
&gt; +    if (callback)

Shouldn&apos;t this be an assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357131</commentid>
    <comment_count>10</comment_count>
      <attachid>322872</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-05 11:46:20 -0700</bug_when>
    <thetext>Created attachment 322872
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357132</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-05 11:46:50 -0700</bug_when>
    <thetext>Thanks, Chris! Fixed all your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357151</commentid>
    <comment_count>12</comment_count>
      <attachid>322872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 12:00:04 -0700</bug_when>
    <thetext>Comment on attachment 322872
Patch for landing

Rejecting attachment 322872 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ntextPrivateMac.dia -c /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WKContextPrivateMac.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/WebPage.o WebProcess/WebPage/WebPage.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/4770472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357213</commentid>
    <comment_count>13</comment_count>
      <attachid>322904</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-10-05 13:24:53 -0700</bug_when>
    <thetext>Created attachment 322904
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357310</commentid>
    <comment_count>14</comment_count>
      <attachid>322904</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 16:05:06 -0700</bug_when>
    <thetext>Comment on attachment 322904
Patch for landing

Clearing flags on attachment: 322904

Committed r222941: &lt;http://trac.webkit.org/changeset/222941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357311</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-05 16:05:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322625</attachid>
            <date>2017-10-03 19:46:30 -0700</date>
            <delta_ts>2017-10-04 14:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176941-20171003194630.patch</filename>
            <type>text/plain</type>
            <size>74407</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTAzICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogV2ViIHByb2Nlc3Mgc2hvdWxkIGFzayBVSSBwcm9jZXNzIGZvciBncmFudC9kZW55CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5NDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDQwMDM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQt
aWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAgICAgICBUaGlzIHBhdGNo
IGNoYW5nZXMgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgc28gdGhhdCBpdAorICAg
ICAgICBjYWxscyB0aGUgQ2hyb21lQ2xpZW50IGluc3RlYWQgb2YgdGhlIFJlc291cmNlTG9hZE9i
c2VydmVyIHRvCisgICAgICAgIHJlcXVlc3Qgc3RvcmFnZSBhY2Nlc3Mgb24gYmVoYWxmIG9mIHRo
ZSBpZnJhbWUuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IHRoZSBwcm9taXNl
IGlzIHVzZWQsIGZyb20gcmV0dXJuaW5nCisgICAgICAgIGEgYm9vbGVhbiB0byBlaXRoZXIgcmVz
b2x2aW5nIG9yIHJlamVjdGluZyB0byBzaWduYWwgZ3JhbnQvZGVueQorICAgICAgICBhY2Nlc3Mg
cmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZWdpc3RlclN0b3JhZ2VBY2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTctMTAtMDMgIFphbGFuIEJ1anRh
cyA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc2Nyb2xsIHNuYXAgcG9pbnQgdW5y
ZWdpc3RyYXRpb24gZnJvbSB3aWxsQmVSZW1vdmVkRnJvbVRyZWUgdG8gd2lsbEJlRGVzdHJveWVk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNzYsNiArNzI3
NiwxMiBAQCBMb2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKSBjb25zdAogICAgIHJldHVybiAqbV9s
b2dnZXI7CiB9CiAKK3N0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250
ZXh0SWQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElEID0gMDsKKyAgICBy
ZXR1cm4gKytuZXh0Q29udGV4dElEOworfQorCiB2b2lkIERvY3VtZW50OjpyZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBhc3NlZFByb21pc2UpCiB7CiAgICAgQVNT
RVJUKHNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CkBAIC03MjgzLDMxICs3
Mjg5LDMxIEBAIHZvaWQgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjwKICAgICBS
ZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBwcm9taXNlKFdURk1vdmUocGFzc2VkUHJvbWlzZSkpOwog
ICAgIAogICAgIGlmIChtX2hhc1N0b3JhZ2VBY2Nlc3MpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmICghbV9mcmFtZSB8fCBzZWN1cml0eU9y
aWdpbigpLmlzVW5pcXVlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFu
PihmYWxzZSk7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1f
aGFzU3RvcmFnZUFjY2VzcyA9IHRydWU7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4odHJ1ZSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICAvLyBUaGVyZSBoYXMgdG8gYmUgYSBzYW5kYm94IGFuZCBpdCBo
YXMgdG8gYWxsb3cgdGhlIHN0b3JhZ2UgYWNjZXNzIEFQSSB0byBiZSBjYWxsZWQuCiAgICAgaWYg
KHNhbmRib3hGbGFncygpID09IFNhbmRib3hOb25lIHx8IGlzU2FuZGJveGVkKFNhbmRib3hTdG9y
YWdlQWNjZXNzQnlVc2VyQWN0aXZhdGlvbikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExCb29sZWFuPihmYWxzZSk7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgLy8gVGhlIGlmcmFtZSBoYXMgdG8gYmUgYSBkaXJlY3QgY2hp
bGQgb2YgdGhlIHRvcCBkb2N1bWVudC4KICAgICBhdXRvJiB0b3BEb2N1bWVudCA9IHRoaXMtPnRv
cERvY3VtZW50KCk7CiAgICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBwYXJlbnREb2N1bWVudCgpKSB7
Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgICAgICBw
cm9taXNlLT5yZWplY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzMxNSwzMyAr
NzMyMSwzOCBAQCB2b2lkIERvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8CiAgICAg
YXV0byYgdG9wU2VjdXJpdHlPcmlnaW4gPSB0b3BEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwog
ICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7CiAgICAg
ICAgIG1faGFzU3RvcmFnZUFjY2VzcyA9IHRydWU7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xl
YW4+KGZhbHNlKTsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgYXV0byBwYXJ0aXRpb25Eb21haW4gPSBzZWN1cml0eU9yaWdpbi5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwotICAgIGF1dG8gdG9wUGFydGl0aW9uRG9tYWluID0g
dG9wU2VjdXJpdHlPcmlnaW4uZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKKyAgICBhdXRvIGlm
cmFtZUhvc3QgPSBzZWN1cml0eU9yaWdpbi5ob3N0KCk7CisgICAgYXV0byB0b3BIb3N0ID0gdG9w
U2VjdXJpdHlPcmlnaW4uaG9zdCgpOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkRvIHlvdSB3YW50IHRvIHVzZSB5b3VyICIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHBhcnRpdGlvbkRvbWFpbik7CisgICAgYnVpbGRlci5hcHBlbmQoaWZyYW1l
SG9zdCk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgSUQgb24gIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmQodG9wUGFydGl0aW9uRG9tYWluKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0b3BIb3N0
KTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj8iKTsKICAgICBQYWdlKiBwYWdlID0gdGhp
cy0+cGFnZSgpOwogICAgIC8vIEZJWE1FOiBEb24ndCB1c2UgcnVuSmF2YVNjcmlwdENvbmZpcm0g
YmVjYXVzZSBpdCByZXNwb25kcyBzeW5jaHJvbm91c2x5LgogICAgIGlmICgocGFnZSAmJiBwYWdl
LT5jaHJvbWUoKS5ydW5KYXZhU2NyaXB0Q29uZmlybSgqbV9mcmFtZSwgYnVpbGRlci50b1N0cmlu
ZygpKSkgfHwgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSkgewotICAgICAgICBtX2hhc1N0
b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
KCkucmVnaXN0ZXJTdG9yYWdlQWNjZXNzKHBhcnRpdGlvbkRvbWFpbiwgdG9wUGFydGl0aW9uRG9t
YWluKTsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgdWludDY0X3QgY29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElk
KCk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIGNvbnRleHRJZCwgW3RoaXMs
IHByb21pc2VdIChib29sIGdyYW50ZWQpIHsKKyAgICAgICAgICAgIGlmIChncmFudGVkKSB7Cisg
ICAgICAgICAgICAgICAgbV9oYXNTdG9yYWdlQWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CisgICAgcHJv
bWlzZS0+cmVqZWN0KCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvbnNvbGVNZXNzYWdlTGlz
dGVuZXIoUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmIGxpc3RlbmVyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDcgQEAgdHlwZWRlZiAoCiAK
ICAgICAvLyBOb24gc3RhbmRhcmQsIHRvIGJyaW5nIHVwIHdpdGggc3RhbmRhcmRzIHdvcmtpbmcg
Z3JvdXAuCiAgICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaGFzU3RvcmFnZUFjY2VzczsKLSAgICBbRW5hYmxlZEJ5U2V0dGlu
Zz1TdG9yYWdlQWNjZXNzQVBJXSBQcm9taXNlPGJvb2xlYW4+IHJlcXVlc3RTdG9yYWdlQWNjZXNz
KCk7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTx2b2lk
PiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwogCiAgICAgLy8gT2Jzb2xldGUgZmVhdHVyZXMgZnJv
bSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vYnNvbGV0ZS5odG1sCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNw
cAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDIzICsyODQsNiBAQCB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhCiAgICAgbm90aWZ5T2JzZXJ2ZXIoKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVnaXN0ZXJTdG9yYWdlQWNjZXNzKGNv
bnN0IFN0cmluZyYgc3ViRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluLCBjb25zdCBT
dHJpbmcmIHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikKLXsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc01hcC5hZGQoc3ViRnJhbWVUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluLCBIYXNoU2V0PFN0cmluZz4geyB9KTsKLSAgICBpZiAoIWFkZFJlc3Vs
dC5pc05ld0VudHJ5ICYmIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuY29udGFpbnModG9wRnJh
bWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gSGFzaFNldDxTdHJpbmc+IHsgdG9wRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluIH07Ci0gICAgZWxzZQotICAgICAgICBtX3N0b3JhZ2VBY2Nlc3NNYXAuZ2V0KHN1YkZyYW1l
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikuYWRkKHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29u
dHJvbGxlZERvbWFpbik7Ci0KLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4pOwotICAgIHN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZCh0b3BGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwotICAgIG1fbm90aWZp
Y2F0aW9uVGltZXIuc3RvcCgpOwotICAgIG5vdGlmeU9ic2VydmVyKCk7Ci19Ci0KIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKIHsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShwcmltYXJ5
RG9tYWluLCBbJnByaW1hcnlEb21haW5dIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IEZy
YW1lKiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNl
ZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHJlZ2lzdGVyU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbiwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4p
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3RpZmljYXRpb25DYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4m
Jik7CkBAIC03Nyw3ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4gbV9zdG9yYWdlQWNjZXNzTWFwOwogICAgIEhhc2hNYXA8
U3RyaW5nLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsK
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYm
KT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKICAgICBUaW1lciBtX25vdGlmaWNhdGlvblRpbWVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyMjI3MTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NjQsNiArNDY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm9jZXNzQ1BV
VGltZShTZWNvbmRzLCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQogICAgIHZpcnR1
YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
LyogZmlsZW5hbWVzICovKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5nJiYgLyp0b3BGcmFtZUhvc3Qq
LywgdWludDY0X3QgLypjb250ZXh0SWQqLywgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiAv
KmNhbGxiYWNrKi8pIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50
KCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjgyNykKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTctMTAtMDMg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBB
Y2Nlc3MgQVBJOiBXZWIgcHJvY2VzcyBzaG91bGQgYXNrIFVJIHByb2Nlc3MgZm9yIGdyYW50L2Rl
bnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njk0
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ0NDAwMzY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGluZnJhc3RydWN0
dXJlIHRvIGxldCBXZWJDb3JlOjpEb2N1bWVudCBjYWxsCisgICAgICAgIFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGFuZCBhc2sgZm9yIHN0b3JhZ2UKKyAgICAgICAgYWNj
ZXNzIG9uIGJlaGFsZiBvZiBhbiBpZnJhbWUuIFRoZSBjb21tdW5pY2F0aW9uIGdvZXMgdGhyb3Vn
aAorICAgICAgICB0aGUgQ2hyb21lQ2xpZW50IHNpbmNlIHdlIG1pZ2h0IHdhbnQgdG8gYWRkIGEg
bmF0aXZlIHByb21wdC4KKyAgICAgICAgRnJvbSB0aGUgQ2hyb21lQ2xpZW50IGl0IGNvbnRpbnVl
cyB0byB0aGUgV2ViUGFnZSB3aGljaAorICAgICAgICBtZXNzYWdlcyB0aGUgV2ViUGFnZVByb3h5
LiBUaGUgV2ViUGFnZVByb3h5IGNhbGxzIHRoZQorICAgICAgICBXZWJzaXRlRGF0YVN0b3JlIHdo
aWNoIG93bnMgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KKyAgICAgICAgQSB1
aW50NjRfdCBpcyB1c2VkIHRvIG1hdGNoIHRoZSByaWdodCBjYWxsYmFjayB3aXRoIHRoZSBib29s
ZWFuCisgICAgICAgIHJlc3VsdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdG9yYWdlQWNj
ZXNzUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTct
MTAtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29y
cmVjdCBudWxscHRyIGRlcmVmZXJlbmNlIGR1cmluZyBzaHV0ZG93bgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MDQwLDQgKzcwNDAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVp
bgogICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHRhc2tJZGVudGlmaWVyKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29u
dGV4dElkKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
V1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIFt0aGlzLCB3ZWJQ
cm9jZXNzQ29udGV4dElkXSAoYm9vbCBncmFudGVkKSB7CisgICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGdyYW50ZWQsIHdlYlBy
b2Nlc3NDb250ZXh0SWQpLCBtX3BhZ2VJRCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjEwLDYgKzEyMTAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2
b2lkIGVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYpOwogCisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CisKIHByaXZhdGU6CiAgICAg
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdl
SUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsNCAr
NTAwLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIFN0YXJ0VVJMU2NoZW1l
VGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0b3BVUkxTY2hlbWVUYXNr
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKKwor
ICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGNvbnRleHRJRCkKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYgKzI0Mywx
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzCiAgICAgcHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKHN1YkZyYW1lSG9zdCAhPSB0b3BGcmFtZUhvc3QpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmlt
YXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YkZyYW1lSG9zdCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldICgpIHsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzdWJGcmFtZVByaW1hcnlEb21h
aW4pOworICAgICAgICBjYWxsYmFjayghc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgfHwg
c3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbik7CisgICAgfSk7Cit9CisgICAgCiB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVE
YXRhKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1
ZSkgeyBtX3BhcmFtZXRlcnMuc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFsdWU7IH0KIAogICAg
IHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucyk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHByb2Nlc3NXaWxs
T3BlbkNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJik7CiAgICAg
dm9pZCBwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29u
bmVjdGlvbiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzY3LDYgKzEzNjcsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW1vdmVQZW5kaW5nQ29vawogICAgIG1fcGVuZGluZ0Nvb2tpZXMucmVtb3ZlKGNvb2tpZSk7
CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0
b3BGcmFtZUhvc3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDYgKzEzMiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4mJiBjYWxsYmFjayk7CiAKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0
YVN0b3JlKENvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIy
Myw0ICsxMjIzLDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bQog
ICAgIG1fcGFnZS5maW5kQ29udHJvbGxlcigpLmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJl
Y3RzKCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgY29u
dGV4dElkLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIG1f
cGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUo
dG9wRnJhbWVIb3N0KSwgY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjIyNzEw
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAorICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGNvbnRleHRJZCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJik7CisKICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRy
PFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwogICAgIG11dGFibGUgYm9v
bCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQxLDQgKzYwNDEsMjEgQEAgdm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodQogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0
YXNrSWRlbnRpZmllciwgZXJyb3IpOwogfQogCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBjb250ZXh0SWQsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCit7
CisgICAgbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5zZXQoY29udGV4dElkLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVI
b3N0KSwgY29udGV4dElkKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3RvcmFnZUFjY2Vzc1Jlc3Bv
bnNlKGJvb2wgZ3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsK
KyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKGdyYW50ZWQpOworICAgIGVsc2Ug
eworICAgICAgICBXVEZMb2dBbHdheXMoIldlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZSgp
OiBObyBjYWxsYmFjayBmb3VuZCBmb3IgY2FsbGJhY2tJRCAlbGx1LiIsIGNvbnRleHRJZCk7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5NCw2ICs5OTQsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZW5kUGFydGlhbEVkaXRvclN0YXRlQW5kU2NoZWR1bGVQb3N0TGF5b3V0VXBkYXRlKCk7
CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogCisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgY29udGV4dElkLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIGdyYW50ZWQs
IHVpbnQ2NF90IGNvbnRleHRJZCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE1ODgsNiArMTU5MSw4
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eT4+IG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9V
UkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxi
YWNrTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw0ICs0ODIsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJ
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlk
Q29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAgU3RvcmFnZUFjY2Vzc1Jl
c3BvbnNlKGJvb2wgZ3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogfQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjIyODI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTctMTAtMDMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBXZWIgcHJvY2VzcyBzaG91bGQg
YXNrIFVJIHByb2Nlc3MgZm9yIGdyYW50L2RlbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ0
NDAwMzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIGlmcmFtZXMgbm93IGNvbW11bmljYXRlIHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIHRvcCBm
cmFtZSB0aHJvdWdoIHBvc3RNZXNzYWdlLgorICAgICAgICBBbHNvLCBkZW5pZWQgYWNjZXNzIHJl
c3VsdHMgaW4gYSByZWplY3RlZCBwcm9taXNlIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlc2UKKyAg
ICAgICAgY2hhbmdlZCB0ZXN0IGNhc2VzLgorIAorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJh
bWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3Nz
LW9yaWdpbi1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgdG8gcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQt
aWZyYW1lLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qt
YW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRi
b3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICAgICBTZWUgY29tbWVudCBhYm92ZSBv
biByZW5hbWluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFs
ZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNz
LWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQt
dXNlci1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIFR3byBuZXcgdGVzdCBj
YXNlcyBhZGRlZCBmb3IgdGhlIG5ldyBsb2dpYyBpbiBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZy
YW1lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3Jp
Z2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVu
aXF1ZS1vcmlnaW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0
LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZyYW1lLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQt
aWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhv
dXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtd2l0aG91dC1hbGxvdy10b2tlbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICAgICBBZGRlZCB0aGUgbmV3IHRlc3RzIGFzIFsgUGFzcyBdLgor
CiAyMDE3LTEwLTAzICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBBWDogW0FUS10gQVJJQSBtZW51aXRlbXMgc2hvdWxkIGJlIGV4cG9zZWQgd2l0aCBBVEtf
Uk9MRV9NRU5VX0lURU0gZXZlbiB3aGVuIGl0J3MgdGhlIGNoaWxkIG9mIGdyb3VwIHJvbGUKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1k
ZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0
aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBp
ZnJhbWUgaXMgbm90IHNhbmRib3hlZC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAK
K1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9z
cy1vcmlnaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAogICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2Ug
YWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAg
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlv
biByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9
PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZB
SUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZl
bnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAg
ICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAg
ICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdp
ZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCAr
MSwxMCBAQAotQ09ORklSTTogRG8geW91IHdhbnQgdG8gdXNlIHlvdXIgIElEIG9uID8KLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBk
ZW5pZWQuCitDT05GSVJNOiBEbyB5b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24g
MTI3LjAuMC4xPwogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNz
IGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tl
biwgYnV0IHRoZSB1c2VyIG9wdHMgb3V0LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNz
LWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRl
bnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBp
ZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCBidXQgdGhlIHVzZXIgb3B0
cyBvdXQuIik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKwor
ICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYg
KGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5k
YXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkg
ewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBl
Iik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50
U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWpl
Y3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
aWZyYW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwICswLDAgQEAKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBk
ZW5pZWQuCi1UZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMg
ZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4KLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKHJldmlz
aW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
Y3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFt
ZSBpcyBub3Qgc2FuZGJveGVkLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQot
ICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAg
ICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0
V2lkdGggLyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRl
QXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRo
ZUlmcmFtZSIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAg
ICA8aWZyYW1lIG9ubG9hZD0icnVuVGVzdCgpIiBpZD0idGhlSWZyYW1lIiBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWlmcmFtZS5odG1sI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkTm90QmVDb25z
dWx0ZWQscG9saWN5U2hvdWxkRGVueUFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiPjwvaWZy
YW1lPgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hl
ZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9z
cy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdl
IGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBub3Qgc2FuZGJveGVkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNz
IHdhcyBkZW5pZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVl
c3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlm
cmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNh
bmRib3hlZC1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUg
c3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4i
KTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAg
IGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQu
b3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVk
IGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNl
bnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAg
ICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNl
dEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNl
bnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGhlSWZyYW1lIik7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpZnJhbWUgb25sb2FkPSJydW5UZXN0
KCkiIGlkPSJ0aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3Vs
ZEdyYW50QWNjZXNzLHVzZXJTaG91bGROb3RCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGREZW55QWNj
ZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
MjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi1DT05GSVJNOiBEbyB5
b3Ugd2FudCB0byB1c2UgeW91ciAgSUQgb24gPwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY0OiBQ
QVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCitDT05GSVJNOiBEbyB5
b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPwogVGVzdHMgdGhh
dCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlm
cmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIGFuZCB0aGUgdXNlciBvcHRz
IGluLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5k
Ym94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24t
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitDT05GSVJN
OiBEbyB5b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPworVGVz
dHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYg
dGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUg
b3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgaGFk
IHVzZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBvcHRzIGluLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFu
dGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXBy
ZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50
LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9t
YWluLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0
b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0
aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNl
LCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgaGFkIHVzZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNl
ciBvcHRzIGluLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7
CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAg
IGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZl
bnQuZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50
Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAg
ICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0
aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxl
bWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChj
ZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50
U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWpl
Y3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUlmcmFtZSIpOworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7
CisgICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0
ICsgIi90ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0
YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93
LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFsbG93LXNh
bWUtb3JpZ2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0aGVJZnJhbWUi
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVl
c3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJT
aG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5J
ZnJhbWUiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1m
cm9tLXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94
ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK0NPTkZJUk06IERv
IHlvdSB3YW50IHRvIHVzZSB5b3VyIGxvY2FsaG9zdCBJRCBvbiAxMjcuMC4wLjE/CitUZXN0cyB0
aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBp
ZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCB0aGUgaWZyYW1lIG9yaWdp
biBpcyBhIHByZXZhbGVudCByZXNvdXJjZSwgdGhlIGlmcmFtZSBvcmlnaW4gaGFzIG5vdCBoYWQg
dXNlciBpbnRlcmFjdGlvbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmll
ZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2
YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVu
dC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50
LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlm
cmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQs
IGhhcyB0aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJl
c291cmNlLCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgbm90IGhhZCB1c2VyIGludGVyYWN0aW9uLCBh
bmQgdGhlIHVzZXIgb3B0cyBpbi4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2Fn
ZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7Cisg
ICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikg
eworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEp
CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNT
ICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKGV2ZW50LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46
ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAg
ICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7
CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQu
b2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNl
dFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFj
dGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBy
b21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0aGVJZnJh
bWUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxo
b3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9z
dFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNh
bmRib3g9ImFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3Jp
cHRzIGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlk
PSJ0aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVz
b3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50
QWNjZXNzLHVzZXJTaG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFjY2Vzcyxp
c05vdFNhbWVPcmlnaW5JZnJhbWUiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4tc2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdp
biBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRi
b3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uIik7CiAgICAg
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlv
biByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9
PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2Fn
ZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZh
dGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4
LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNh
bmRib3hlZC1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5
ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3Rv
cmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhl
IGFsbG93IHRva2VuLCBidXQgaXMgbmVzdGVkLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0
bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLW5lc3RlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAg
ICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFn
ZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFs
bG93IHRva2VuLCBidXQgaXMgbmVzdGVkLiIpOwogICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVN
ZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQp
IHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9
PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2Uo
IlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2Ug
ZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRl
RWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxl
bWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsyOCwx
MCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQt
aWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1l
IHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQg
aGFzIHRoZSB1bmlxdWUgb3JpZ2luIGJlY2F1c2UgaXQgbGFja3MgdGhlIGFsbG93LXNhbWUtb3Jp
Z2luIHRva2VuLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVu
dC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQt
aWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCShyZXZpc2lvbiAy
MjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1v
cmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMg
ZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBoYXMgdGhlIHVuaXF1ZSBvcmln
aW4gYmVjYXVzZSBpdCBsYWNrcyB0aGUgYWxsb3ctc2FtZS1vcmlnaW4gdG9rZW4uIik7CiAgICAg
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlv
biByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9
PT0gIm51bGwiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFT
UyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJl
cGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1l
c3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFj
dGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJY
ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3
ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRv
a2VuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNh
bmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9j
dW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmln
aW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRi
b3hlZCBhbmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVk
LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91
dC1hbGxvdy10b2tlbi5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTcsNiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1v
cmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNh
bmRib3hlZCBhbmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4iKTsKICAgICAgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2Vp
dmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmlu
ZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZl
bnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAi
IikpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVj
ZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmln
aW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBm
dW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2
YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAy
OwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2Ft
ZS1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdp
bi1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdp
bi1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2Fz
IGRlbmllZC4KIFRlc3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlz
IGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmll
ZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3Mtc2FtZS1vcmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmln
aW4taWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmll
ZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAgICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
cmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2Fn
ZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQ
QVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEu
cmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEg
bWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24g
YWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRl
clggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1
LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2lu
LXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3Jp
Z2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2NDogUEFTUyBkb2N1bWVu
dC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLgogVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBp
ZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hl
ZCBhbmQgaGFzIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZ3JhbnRlZC4KIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1v
cmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxs
b3ctdG9rZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNT
IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFRlc3RzIHRoYXQgc2FtZS1v
cmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNh
bmRib3hlZCBidXQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVu
aWVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhv
dXQtYWxsb3ctdG9rZW4uaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTcsNiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9y
aWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2Fu
ZGJveGVkIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2VuLiIpOwogICAgICAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2
ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5k
ZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVu
dC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIi
KSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNl
aXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdp
bik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1
bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZh
ciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7
CkBAIC0xNSw3ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1l
LW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmln
aW4tc2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9y
aWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBA
QAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUgc3Rv
cmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQgaGFz
IHRoZSBhbGxvdyB0b2tlbi4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwg
ZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAg
ICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIikgewor
ICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIs
ICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4g
dW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQo
ZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zm
c2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQ
cm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QCBUZXN0cyB0aGF0IHRvcCBmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBhCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIGlz
IHRydWUKK1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBpcyB0cnVlCiBQQVNTIGRv
Y3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1JldHVyblZhbHVlIGlzIHRydWUKK1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBp
cyB0cnVlCiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZy
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDM2ICsxMiw1NSBAQAogICAgICAgICB2YXIg
Y2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwog
ICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRI
ZWlnaHQgLyAyOwogICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkp
LnRoZW4oCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJl
amVjdGVkLiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAg
fQogICAgICAgICApOwogICAgIH0KIAotICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVy
blZhbHVlOworICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkOwogCiAgICAgZnVu
Y3Rpb24gbWFrZVJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7Ci0gICAgICAgIGRvY3VtZW50
LnJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7CiAgICAgICAgIHZhciBwcm9taXNlID0gZG9jdW1lbnQu
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKLSAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICho
YXNBY2Nlc3MpIHsKLSAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUg
PSBoYXNBY2Nlc3M7Ci0gICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NS
ZXR1cm5WYWx1ZSIsICJ0cnVlIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcyIsICJ0cnVlIik7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRo
ZUJ1dHRvbiIpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS50aGVuKAorICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
b2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91
dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhvdXRVc2VyR2VzdHVyZSgp
OworICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnRp
bnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCkgeworICAgICAgICBzaG91bGRCZSgi
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJl
KCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAgICAgYWN0aXZhdGVF
bGVtZW50KCJ0aGVCdXR0b24iKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBtYWtlUmVxdWVzdFdp
dGhVc2VyR2VzdHVyZSgpIHsKLSAgICAgICAgZG9jdW1lbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
KTsKICAgICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2Vzcygp
OwotICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGhhc0FjY2VzcykgewotICAgICAgICAg
ICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZSA9IGhhc0FjY2VzczsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIiwgInRydWUiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUi
KTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJv
bWlzZS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJl
cXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNz
UmVzb2x2ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdp
dGhVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgeworICAgICAg
ICBzaG91bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAg
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTIsMjggKzEyLDM0IEBACiAKICAgICAgICAgZnVuY3Rpb24g
c3RvcmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQu
aGFzU3RvcmFnZUFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1
bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0
by4iKTsKLSAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlKQot
ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0
dXJuVmFsdWUgd2FzIHRydWUgd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAg
ICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNz
IHdhcyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4iLCAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwIik7CisgICAgICAgICAgICBpZiAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCkK
KyAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NSZXNvbHZlZCB3YXMgdHJ1ZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gc3RvcmFn
ZUFjY2Vzc1Nob3VsZEJlVHJ1ZSgpIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIik7
Ci0gICAgICAgICAgICBpZiAoIXJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUpCi0gICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5W
YWx1ZSB3YXMgZmFsc2Ugd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAgICAg
ICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdh
cyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIpOworICAgICAgICAgICAgaWYgKCFyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkKQor
ICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc29sdmVkIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHJlcXVlc3RTdG9y
YWdlQWNjZXNzUmV0dXJuVmFsdWU7CisgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c29sdmVkOwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJl
KCkgewogICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAg
ICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCk7Ci0gICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
b2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdp
dGhvdXRVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c29sdmVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0
V2l0aG91dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91
dFVzZXJHZXN0dXJlKCkgewpAQCAtNTAsMzAgKzU2LDM2IEBACiAgICAgICAgICAgICAgICAgc3Rv
cmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAgICAgICAgdmFyIHByb21pc2UgPSBk
b2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVu
KGZ1bmN0aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1JldHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0
ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhVc2VyR2VzdHVyZSgpOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9u
IGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewotICAgICAgICAgICAgaWYg
KHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1Jlc29sdmVkCiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcwogICAgICAgICAgICAgICAgICYmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgfHwg
IXVzZXJTaG91bGRCZUNvbnN1bHRlZCkKICAgICAgICAgICAgICAgICAmJiBwb2xpY3lTaG91bGRH
cmFudEFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUEFTUyBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0
TWVzc2FnZSgiUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLiIsICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzCi0gICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1JldHVyblZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc29sdmVkCiAgICAgICAgICAgICAgICAgICAgICYmICgoIXVzZXJTaG91bGRHcmFudEFj
Y2VzcyAmJiB1c2VyU2hvdWxkQmVDb25zdWx0ZWQpIHx8ICFwb2xpY3lTaG91bGRHcmFudEFjY2Vz
cykpCi0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlBBU1MgZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcyB3YXMgZGVuaWVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgi
UEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzICIgKworICAgICAgICAgICAg
ICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyAi
ICsKICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgPyAiIiA6
ICJub3QgIikgKwotICAgICAgICAgICAgICAgICAgICAiZ3JhbnRlZCBhbmQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NSZXR1cm5WYWx1ZSB3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlID8gIiIgOiAibm90ICIpICsKKyAgICAgICAgICAgICAg
ICAgICAgImdyYW50ZWQgYW5kIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgd2FzICIgKwor
ICAgICAgICAgICAgICAgICAgICAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA/ICIiIDog
Im5vdCAiKSArCiAgICAgICAgICAgICAgICAgICAgICJncmFudGVkIGJ1dCBzaG91bGQgIiArCiAg
ICAgICAgICAgICAgICAgICAgICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgJiYgcG9saWN5U2hvdWxk
R3JhbnRBY2Nlc3MgPyAiIiA6ICJub3QgIikgKwotICAgICAgICAgICAgICAgICAgICAiaGF2ZSBi
ZWVuIGdyYW50ZWQuIik7CisgICAgICAgICAgICAgICAgICAgICJoYXZlIGJlZW4gZ3JhbnRlZC4i
LCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNzQwLDcgKzc0MCw3IEBAIGh0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWMKIGh0dHAvdGVzdHMvbG9hZGluZy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vi
c2l0ZS1kYXRhLXJlbW92YWwuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1s
IFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCi1o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5k
Ym94ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4u
aHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi5o
dG1sIFsgUGFzcyBdCkBAIC03NDgsNiArNzQ4LDkgQEAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3Qtc3RvcmFnZQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2Vu
Lmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQogaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3Nz
LW9yaWdpbi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRl
cmFjdGlvbi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJv
bS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBd
CitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJh
bWUuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAv
dGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLXNhbWUtb3JpZ2luLWZyYW1lLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzE3Mzg2MSBbIFJlbGVhc2UgXSBodHRw
L3Rlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1jcm9zcy1vcmlnaW4tZnJhbWUu
aHRtbCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322724</attachid>
            <date>2017-10-04 14:00:41 -0700</date>
            <delta_ts>2017-10-05 11:46:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176941-20171004140041.patch</filename>
            <type>text/plain</type>
            <size>74059</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEwLTA0ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogV2ViIHByb2Nlc3Mgc2hvdWxkIGFzayBVSSBwcm9jZXNzIGZvciBncmFudC9kZW55CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5NDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDQwMDM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQt
aWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAgICAgICBUaGlzIHBhdGNo
IGNoYW5nZXMgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgc28gdGhhdCBpdAorICAg
ICAgICBjYWxscyB0aGUgQ2hyb21lQ2xpZW50IGluc3RlYWQgb2YgdGhlIFJlc291cmNlTG9hZE9i
c2VydmVyIHRvCisgICAgICAgIHJlcXVlc3Qgc3RvcmFnZSBhY2Nlc3Mgb24gYmVoYWxmIG9mIHRo
ZSBpZnJhbWUuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IHRoZSBwcm9taXNl
IGlzIHVzZWQsIGZyb20gcmV0dXJuaW5nCisgICAgICAgIGEgYm9vbGVhbiB0byBlaXRoZXIgcmVz
b2x2aW5nIG9yIHJlamVjdGluZyB0byBzaWduYWwgZ3JhbnQvZGVueQorICAgICAgICBhY2Nlc3Mg
cmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlZ2lzdGVyU3RvcmFnZUFj
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxNy0xMC0wMyAgWmFsYW4gQnVq
dGFzIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JvbGwgc25hcCBwb2ludCB1
bnJlZ2lzdHJhdGlvbiBmcm9tIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSB0byB3aWxsQmVEZXN0cm95
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIyNzEwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI4MywzMSAr
NzI4MywzMSBAQCB2b2lkIERvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8CiAgICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZShXVEZNb3ZlKHBhc3NlZFByb21pc2UpKTsK
ICAgICAKICAgICBpZiAobV9oYXNTdG9yYWdlQWNjZXNzKSB7Ci0gICAgICAgIHByb21pc2UtPnJl
c29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJpdHlP
cmlnaW4oKS5pc1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVh
bj4oZmFsc2UpOworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBt
X2hhc1N0b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJv
b2xlYW4+KHRydWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCiAgICAgLy8gVGhlcmUgaGFzIHRvIGJlIGEgc2FuZGJveCBhbmQgaXQg
aGFzIHRvIGFsbG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUgY2FsbGVkLgogICAgIGlm
IChzYW5kYm94RmxhZ3MoKSA9PSBTYW5kYm94Tm9uZSB8fCBpc1NhbmRib3hlZChTYW5kYm94U3Rv
cmFnZUFjY2Vzc0J5VXNlckFjdGl2YXRpb24pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4oZmFsc2UpOworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNo
aWxkIG9mIHRoZSB0b3AgZG9jdW1lbnQuCiAgICAgYXV0byYgdG9wRG9jdW1lbnQgPSB0aGlzLT50
b3BEb2N1bWVudCgpOwogICAgIGlmICgmdG9wRG9jdW1lbnQgIT0gcGFyZW50RG9jdW1lbnQoKSkg
ewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKKyAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTczMTUsMzMg
KzczMTUsMzcgQEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPAogICAg
IGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gdG9wRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsK
ICAgICBpZiAoc2VjdXJpdHlPcmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgewogICAg
ICAgICBtX2hhc1N0b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KHRydWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihmYWxzZSk7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIGF1dG8gcGFydGl0aW9uRG9tYWluID0gc2VjdXJpdHlPcmlnaW4u
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICBhdXRvIHRvcFBhcnRpdGlvbkRvbWFpbiA9
IHRvcFNlY3VyaXR5T3JpZ2luLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CisgICAgYXV0byBp
ZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOworICAgIGF1dG8gdG9wSG9zdCA9IHRv
cFNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJEbyB5b3Ugd2FudCB0byB1c2UgeW91ciAiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChwYXJ0aXRpb25Eb21haW4pOworICAgIGJ1aWxkZXIuYXBwZW5kKGlmcmFt
ZUhvc3QpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIElEIG9uICIpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKHRvcFBhcnRpdGlvbkRvbWFpbik7CisgICAgYnVpbGRlci5hcHBlbmQodG9wSG9z
dCk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Iik7CiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKICAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIHJ1bkphdmFTY3JpcHRDb25maXJt
IGJlY2F1c2UgaXQgcmVzcG9uZHMgc3luY2hyb25vdXNseS4KICAgICBpZiAoKHBhZ2UgJiYgcGFn
ZS0+Y2hyb21lKCkucnVuSmF2YVNjcmlwdENvbmZpcm0oKm1fZnJhbWUsIGJ1aWxkZXIudG9TdHJp
bmcoKSkpIHx8IG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUpIHsKLSAgICAgICAgbV9oYXNT
dG9yYWdlQWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLnJlZ2lzdGVyU3RvcmFnZUFjY2VzcyhwYXJ0aXRpb25Eb21haW4sIHRvcFBhcnRpdGlvbkRv
bWFpbik7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUo
aWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIFt0aGlzLCBwcm9taXNlXSAoYm9vbCBncmFu
dGVkKSB7CisgICAgICAgICAgICBpZiAoZ3JhbnRlZCkgeworICAgICAgICAgICAgICAgIG1faGFz
U3RvcmFnZUFjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7
CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHByb21pc2Ut
PnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgIHByb21pc2UtPnJlamVjdCgpOwogfQog
CiB2b2lkIERvY3VtZW50OjpzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKFJlZlB0cjxTdHJpbmdD
YWxsYmFjaz4mJiBsaXN0ZW5lcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNp
b24gMjIyNzEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHR5cGVkZWYgKAogCiAgICAgLy8gTm9uIHN0YW5kYXJk
LCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3JraW5nIGdyb3VwLgogICAgIFtFbmFibGVk
QnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c1N0b3JhZ2VBY2Nlc3M7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0g
UHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOworICAgIFtFbmFibGVkQnlT
ZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIFByb21pc2U8dm9pZD4gcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoKTsKIAogICAgIC8vIE9ic29sZXRlIGZlYXR1cmVzIGZyb20gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2Jzb2xldGUuaHRtbAogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyMjcxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4NCwyMyArMjg0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nVXNlckludGVyYQogICAgIG5vdGlmeU9ic2VydmVyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnJlZ2lzdGVyU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZyYW1l
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZVRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4pCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3Jh
Z2VBY2Nlc3NNYXAuYWRkKHN1YkZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiwgSGFz
aFNldDxTdHJpbmc+IHsgfSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEhhc2hTZXQ8U3RyaW5n
PiB7IHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiB9OwotICAgIGVsc2UKLSAg
ICAgICAgbV9zdG9yYWdlQWNjZXNzTWFwLmdldChzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4pLmFkZCh0b3BGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwotCi0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4oc3ViRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLSAgICBzdGF0aXN0
aWNzLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQodG9wRnJhbWVUb3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLSAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsK
LSAgICBub3RpZnlPYnNlcnZlcigpOwotfQotCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUocHJpbWFyeURvbWFpbiwgWyZwcmltYXJ5RG9t
YWluXSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBGcmFtZSosIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCByZWdpc3RlclN0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4sIGNvbnN0IFN0cmluZyYg
dG9wRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
IChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+JiYpOwpAQCAtNzcsNyArNzYsNiBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlz
dGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmlu
Zz4+IG1fc3RvcmFnZUFjY2Vzc01hcDsKICAgICBIYXNoTWFwPFN0cmluZywgV1RGOjpXYWxsVGlt
ZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7CiAgICAgV1RGOjpGdW5jdGlvbjx2
b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1fbm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDYgKzQ2NCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoU2Vjb25kcywgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVh
dGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8qc3Vi
RnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgLypjYWxsYmFjayovKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
fkNocm9tZUNsaWVudCgpIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI4MjcpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE3LTEwLTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogV2ViIHByb2Nlc3Mgc2hvdWxkIGFzayBVSSBwcm9jZXNz
IGZvciBncmFudC9kZW55CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY5NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDQwMDM2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBpbmZyYXN0cnVjdHVyZSB0byBsZXQgV2ViQ29yZTo6RG9jdW1lbnQgY2FsbAorICAgICAgICBX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhbmQgYXNrIGZvciBzdG9yYWdl
CisgICAgICAgIGFjY2VzcyBvbiBiZWhhbGYgb2YgYW4gaWZyYW1lLiBUaGUgY29tbXVuaWNhdGlv
biBnb2VzIHRocm91Z2gKKyAgICAgICAgdGhlIENocm9tZUNsaWVudCBzaW5jZSB3ZSBtaWdodCB3
YW50IHRvIGFkZCBhIG5hdGl2ZSBwcm9tcHQuCisgICAgICAgIEZyb20gdGhlIENocm9tZUNsaWVu
dCBpdCBjb250aW51ZXMgdG8gdGhlIFdlYlBhZ2Ugd2hpY2gKKyAgICAgICAgbWVzc2FnZXMgdGhl
IFdlYlBhZ2VQcm94eS4gVGhlIFdlYlBhZ2VQcm94eSBjYWxscyB0aGUKKyAgICAgICAgV2Vic2l0
ZURhdGFTdG9yZSB3aGljaCBvd25zIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
CisgICAgICAgIEEgdWludDY0X3QgaXMgdXNlZCB0byBtYXRjaCB0aGUgcmlnaHQgY2FsbGJhY2sg
d2l0aCB0aGUgYm9vbGVhbgorICAgICAgICByZXN1bHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Om5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDE3LTEwLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvcnJlY3QgbnVsbHB0ciBkZXJlZmVyZW5jZSBkdXJpbmcgc2h1dGRvd24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIyNzEw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzA0MCw0ICs3MDQwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2No
ZW1lVGFzayh1aW4KICAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCB0YXNrSWRl
bnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2Vi
UHJvY2Vzc0NvbnRleHRJZCkKK3sKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBb
dGhpcywgd2ViUHJvY2Vzc0NvbnRleHRJZF0gKGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3JhZ2VBY2Nlc3NSZXNwb25zZShncmFu
dGVkLCB3ZWJQcm9jZXNzQ29udGV4dElkKSwgbV9wYWdlSUQpOworICAgIH0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxMCw2ICsxMjEwLDggQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgdm9pZCBlZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmKTsKIAor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpOworCiBwcml2
YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtNTAwLDQgKzUwMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBTdGFy
dFVSTFNjaGVtZVRhc2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBTdG9wVVJM
U2NoZW1lVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50
aWZpZXIpCisKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0LCBT
dHJpbmcgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBjb250ZXh0SUQpCiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Myw2ICsyNDMsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcwog
ICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChzdWJGcmFtZUhvc3QgIT0gdG9wRnJhbWVI
b3N0KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1
YkZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJGcmFtZUhvc3Qp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSB7CisgICAgICAgIGF1dG8mIHN0YXRp
c3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc3ViRnJhbWVQ
cmltYXJ5RG9tYWluKTsKKyAgICAgICAgY2FsbGJhY2soIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJl
c291cmNlIHx8IHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pOworICAgIH0pOworfQorICAg
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3Rp
bmdXZWJzaXRlRGF0YSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5
KGJvb2wgdmFsdWUpIHsgbV9wYXJhbWV0ZXJzLnNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHZhbHVl
OyB9CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpOworICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhv
c3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogCiAgICAgdm9pZCBw
cm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlv
biYpOwogICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkm
LCBJUEM6OkNvbm5lY3Rpb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMjI3
MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2Nyw2ICsxMzY3LDE0IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlUGVuZGluZ0Nvb2sKICAgICBtX3BlbmRpbmdDb29raWVzLnJlbW92
ZShjb29raWUpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCks
IFdURk1vdmUodG9wRnJhbWVIb3N0KSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycygpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMjI3MTApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spOwogCisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQg
V2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMjMsNCArMTIyMyw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlk
YXRlRG9jdW0KICAgICBtX3BhZ2UuZmluZENvbnRyb2xsZXIoKS5kaWRJbnZhbGlkYXRlRG9jdW1l
bnRNYXJrZXJSZWN0cygpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgbV9wYWdlLnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhv
c3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDIsNiArMzQyLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURv
Y3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAorICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYpOworCiAgICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsKICAg
ICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4gbV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFtZTsK
ICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFy
IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0MSw0ICs2MDQxLDI4IEBA
IHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHUKICAgICBoYW5kbGVyLT50
YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZpZXIsIGVycm9yKTsKIH0KIAorc3RhdGljIHVpbnQ2
NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IG5leHRDb250ZXh0SWQgPSAwOworICAgIHJldHVybiArK25leHRDb250ZXh0SWQ7Cit9
CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y2FsbGJhY2spCit7CisgICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb250ZXh0SWQoKTsKKyAgICBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnNl
dChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RG
TW92ZSh0b3BGcmFtZUhvc3QpLCBjb250ZXh0SWQpKTsKK30KKwordm9pZCBXZWJQYWdlOjpzdG9y
YWdlQWNjZXNzUmVzcG9uc2UoYm9vbCBncmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCit7Cisg
ICAgYXV0byBjYWxsYmFjayA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAudGFr
ZShjb250ZXh0SWQpOworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2soZ3JhbnRl
ZCk7CisgICAgZWxzZSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2ViUGFnZTo6c3RvcmFnZUFj
Y2Vzc1Jlc3BvbnNlKCk6IE5vIGNhbGxiYWNrIGZvdW5kIGZvciBjYWxsYmFja0lEICVsbHUuIiwg
Y29udGV4dElkKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVsZVBvc3RM
YXlvdXRVcGRhdGUoKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKTsKKyAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIGdyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE1ODgsNiArMTU5MSw4IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eT4+IG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXA7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIy
MjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw0ICs0ODIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
KGJvb2wgZ3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogfQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjIyODI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTAgQEAKKzIwMTctMTAtMDQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBXZWIgcHJvY2VzcyBzaG91bGQgYXNrIFVJ
IHByb2Nlc3MgZm9yIGdyYW50L2RlbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3Njk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ0NDAwMzY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlm
cmFtZXMgbm93IGNvbW11bmljYXRlIHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIHRvcCBmcmFtZSB0
aHJvdWdoIHBvc3RNZXNzYWdlLgorICAgICAgICBBbHNvLCBkZW5pZWQgYWNjZXNzIHJlc3VsdHMg
aW4gYSByZWplY3RlZCBwcm9taXNlIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlc2UKKyAgICAgICAg
Y2hhbmdlZCB0ZXN0IGNhc2VzLgorIAorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgdG8gcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZyYW1l
Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdy
YW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICAgICBTZWUgY29tbWVudCBhYm92ZSBvbiByZW5h
bWluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZh
bGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRv
bWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3Nz
LW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1p
bnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIFR3byBuZXcgdGVzdCBjYXNlcyBh
ZGRlZCBmb3IgdGhlIG5ldyBsb2dpYyBpbiBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2luLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1v
cmlnaW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93
LXRva2VuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRo
b3V0LWFsbG93LXRva2VuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1l
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxs
b3ctdG9rZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0
aG91dC1hbGxvdy10b2tlbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICAgICBBZGRlZCB0aGUgbmV3IHRlc3RzIGFzIFsgUGFzcyBdLgorCiAyMDE3
LTEwLTAzICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBB
WDogW0FUS10gQVJJQSBtZW51aXRlbXMgc2hvdWxkIGJlIGV4cG9zZWQgd2l0aCBBVEtfUk9MRV9N
RU5VX0lURU0gZXZlbiB3aGVuIGl0J3MgdGhlIGNoaWxkIG9mIGdyb3VwIHJvbGUKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
MjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2ODog
UEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0IGNy
b3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUg
aXMgbm90IHNhbmRib3hlZC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BBU1Mg
ZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAogICAgICAgICBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNz
IGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAgICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNl
aXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5p
bmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2
ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwg
IiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJl
Y2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3Jp
Z2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAg
ZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAg
dmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8g
MjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2Ut
YWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
ZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5k
Ym94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBA
QAotQ09ORklSTTogRG8geW91IHdhbnQgdG8gdXNlIHlvdXIgIElEIG9uID8KLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQu
CitDT05GSVJNOiBEbyB5b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAu
MC4xPwogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRl
bmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwgYnV0
IHRoZSB1c2VyIG9wdHMgb3V0LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFT
UyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3Nz
LW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNy
b3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUg
aXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCBidXQgdGhlIHVzZXIgb3B0cyBvdXQu
Iik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50
Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJl
cGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2lu
OiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50
Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVy
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4i
KTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1l
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwICswLDAgQEAKLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQu
Ci1UZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVk
IGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKHJldmlzaW9uIDIy
MjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mt
b3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBu
b3Qgc2FuZGJveGVkLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgICAg
ICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgICAgICAg
ICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGgg
LyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1l
bnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2Vu
dGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJv
bWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUlmcmFt
ZSIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aWZy
YW1lIG9ubG9hZD0icnVuVGVzdCgpIiBpZD0idGhlSWZyYW1lIiBzcmM9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlm
cmFtZS5odG1sI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkTm90QmVDb25zdWx0ZWQs
cG9saWN5U2hvdWxkRGVueUFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiPjwvaWZyYW1lPgot
PC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJh
bWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2Vz
cyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBub3Qgc2FuZGJveGVkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBk
ZW5pZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5k
LWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hl
ZC1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LW5vbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9q
cy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFn
ZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4iKTsKKyAg
ICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0
aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2lu
ID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVu
dC5kYXRhLmluZGV4T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVz
c2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0
aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclgg
PSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkp
LnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAg
ICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGhlSWZyYW1lIik7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpZnJhbWUgb25sb2FkPSJydW5UZXN0KCkiIGlk
PSJ0aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVz
b3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50
QWNjZXNzLHVzZXJTaG91bGROb3RCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGREZW55QWNjZXNzLGlz
Tm90U2FtZU9yaWdpbklmcmFtZSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5k
Ym94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi1DT05GSVJNOiBEbyB5b3Ugd2Fu
dCB0byB1c2UgeW91ciAgSUQgb24gPwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY0OiBQQVNTIGRv
Y3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCitDT05GSVJNOiBEbyB5b3Ugd2Fu
dCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPwogVGVzdHMgdGhhdCBjcm9z
cy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlmcmFtZSBp
cyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIGFuZCB0aGUgdXNlciBvcHRzIGluLgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdl
QWNjZXNzIHdhcyBncmFudGVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1p
ZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQt
aWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitDT05GSVJNOiBEbyB5
b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPworVGVzdHMgdGhh
dCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlm
cmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2lu
IGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgaGFkIHVzZXIg
aW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBvcHRzIGluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1z
dG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVu
dC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2Ut
YWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFp
bi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdp
dGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2Ug
YWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxs
b3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0aGUg
aWZyYW1lIG9yaWdpbiBoYXMgaGFkIHVzZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBvcHRz
IGluLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAg
ICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChl
dmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0
YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNl
aXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdp
bik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZh
ciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5v
ZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJY
LCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVy
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUlmcmFtZSIpOworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAg
ICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90
ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
c3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3Rp
Y3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgi
SG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXN0b3Jh
Z2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0aGVJZnJhbWUiIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3Rv
cmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91bGRC
ZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUi
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXBy
ZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJv
bS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK0NPTkZJUk06IERvIHlvdSB3
YW50IHRvIHVzZSB5b3VyIGxvY2FsaG9zdCBJRCBvbiAxMjcuMC4wLjE/CitUZXN0cyB0aGF0IGNy
b3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUg
aXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCB0aGUgaWZyYW1lIG9yaWdpbiBpcyBh
IHByZXZhbGVudCByZXNvdXJjZSwgdGhlIGlmcmFtZSBvcmlnaW4gaGFzIG5vdCBoYWQgdXNlciBp
bnRlcmFjdGlvbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQt
ZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21h
aW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2Ut
YWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFp
bi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBz
dG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0
aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNl
LCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgbm90IGhhZCB1c2VyIGludGVyYWN0aW9uLCBhbmQgdGhl
IHVzZXIgb3B0cyBpbi4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFs
c2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAg
ICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAg
ICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIi
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KGV2ZW50LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBl
dmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAgICAgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAg
ICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0
V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRl
QXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBl
dmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2Ug
cmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0aGVJZnJhbWUiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0Ojgw
MDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVy
VGVzdCArICIvdGVtcCI7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9
ImFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFs
bG93LXNhbWUtb3JpZ2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0aGVJ
ZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2Vz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNz
LHVzZXJTaG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFjY2Vzcyxpc05vdFNh
bWVPcmlnaW5JZnJhbWUiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3
LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJh
bWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwg
aGFzIHRoZSBhbGxvdyB0b2tlbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uIik7CiAgICAgICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNl
aXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5p
bmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2
ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9t
IGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVt
ZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBA
CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
c2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hl
ZC1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkg
QEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNj
ZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBh
Y2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93
IHRva2VuLCBidXQgaXMgbmVzdGVkLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAor
UEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5l
c3RlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAg
IGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nl
c3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRv
a2VuLCBidXQgaXMgbmVzdGVkLiIpOwogICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAor
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdl
LCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAg
ICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7
CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1Mg
IiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBh
biB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVu
dChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5v
ZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsyOCwxMCBAQAog
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlm
cmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1l
LXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSAr
MSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3Jh
Z2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQgaGFzIHRo
ZSB1bmlxdWUgb3JpZ2luIGJlY2F1c2UgaXQgbGFja3MgdGhlIGFsbG93LXNhbWUtb3JpZ2luIHRv
a2VuLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1l
LXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCShyZXZpc2lvbiAyMjI3MTAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVk
IGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBoYXMgdGhlIHVuaXF1ZSBvcmlnaW4gYmVj
YXVzZSBpdCBsYWNrcyB0aGUgYWxsb3ctc2FtZS1vcmlnaW4gdG9rZW4uIik7CiAgICAgICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNl
aXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gIm51
bGwiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9
PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2Uo
IlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2Ug
ZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRl
RWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxl
bWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsyOCwx
MCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hl
ZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQu
aGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZy
YW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBh
bmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxv
dy10b2tlbi5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4g
aWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hl
ZCBhbmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4iKTsKICAgICAgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CiAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNz
YWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2Yo
IlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0
YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQg
YSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlv
biBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2Vu
dGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAt
MTUsNyArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmln
aW4taWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJh
bWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJh
bWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmll
ZC4KIFRlc3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmll
ZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
c2FtZS1vcmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZy
YW1lLmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFtZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0
aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2
ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVu
dCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikg
IT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFj
ZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2Fn
ZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZh
dGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4
LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNh
bmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1l
LW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2NDogUEFTUyBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLgogVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUg
c3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQg
aGFzIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BB
U1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZ3JhbnRlZC4KIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9r
ZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5k
Ym94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3Vt
ZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFRlc3RzIHRoYXQgc2FtZS1vcmlnaW4g
aWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hl
ZCBidXQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxs
b3ctdG9rZW4uaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBp
ZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVk
IGJ1dCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2VuLiIpOwogICAgICAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3Nh
Z2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigi
UEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRh
LnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBh
IG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7Cisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9u
IGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50
ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0x
NSw3ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAogICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBh
Y2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQgaGFzIHRoZSBh
bGxvdyB0b2tlbi4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2Up
OworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAg
ICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIikgeworICAgICAg
ICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2
ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBl
Y3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVu
dElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVm
dCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJl
c2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8g
ZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNl
IHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10
b3AtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQCBUZXN0
cyB0aGF0IHRvcCBmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBhCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIAotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIGlzIHRydWUK
K1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBpcyB0cnVlCiBQQVNTIGRvY3VtZW50
Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVy
blZhbHVlIGlzIHRydWUKK1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBpcyB0cnVl
CiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy10b3AtZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDM2ICsxMiw1NSBAQAogICAgICAgICB2YXIgY2VudGVy
WCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwogICAgICAg
ICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyOwogICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4o
Ci0gICAgICAgICAgICBmdW5jdGlvbigpIHsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVk
LiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICApOwogICAgIH0KIAotICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVl
OworICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkOwogCiAgICAgZnVuY3Rpb24g
bWFrZVJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7Ci0gICAgICAgIGRvY3VtZW50LnJlcXVl
c3RTdG9yYWdlQWNjZXNzKCk7CiAgICAgICAgIHZhciBwcm9taXNlID0gZG9jdW1lbnQucmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoKTsKLSAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChoYXNBY2Nl
c3MpIHsKLSAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgPSBoYXNB
Y2Nlc3M7Ci0gICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5W
YWx1ZSIsICJ0cnVlIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcyIsICJ0cnVlIik7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUJ1dHRv
biIpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS50aGVuKAorICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJH
ZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhvdXRVc2VyR2VzdHVyZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnRpbnVlQWZ0
ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCkgeworICAgICAgICBzaG91bGRCZSgicmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJlKCJkb2N1
bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAgICAgYWN0aXZhdGVFbGVtZW50
KCJ0aGVCdXR0b24iKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBtYWtlUmVxdWVzdFdpdGhVc2Vy
R2VzdHVyZSgpIHsKLSAgICAgICAgZG9jdW1lbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKICAg
ICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGhhc0FjY2VzcykgewotICAgICAgICAgICAgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZSA9IGhhc0FjY2VzczsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIiwgInRydWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKLSAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS50
aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RT
dG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0
ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhVc2Vy
R2VzdHVyZSgpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgeworICAgICAgICBzaG91
bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAgICAgIHNo
b3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTIsMjggKzEyLDM0IEBACiAKICAgICAgICAgZnVuY3Rpb24gc3RvcmFn
ZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzIHdhcyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4iKTsK
LSAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlKQotICAgICAg
ICAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFs
dWUgd2FzIHRydWUgd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAgICAgICAg
ICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyB0
cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
Iik7CisgICAgICAgICAgICBpZiAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCkKKyAgICAg
ICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNv
bHZlZCB3YXMgdHJ1ZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gc3RvcmFnZUFjY2Vz
c1Nob3VsZEJlVHJ1ZSgpIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuaGFzU3RvcmFnZUFj
Y2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIik7Ci0gICAg
ICAgICAgICBpZiAoIXJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUpCi0gICAgICAgICAg
ICAgICAgY29uc29sZS5sb2coIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZSB3
YXMgZmFsc2Ugd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAgICAgICAgICAg
IHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBmYWxz
ZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIp
OworICAgICAgICAgICAgaWYgKCFyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkKQorICAgICAg
ICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29s
dmVkIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmV0dXJuVmFsdWU7CisgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVk
OwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCkgewog
ICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAgICAgICAg
dmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhvdXRV
c2VyR2VzdHVyZSgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVk
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91
dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJH
ZXN0dXJlKCkgewpAQCAtNTAsMzAgKzU2LDM2IEBACiAgICAgICAgICAgICAgICAgc3RvcmFnZUFj
Y2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAgICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVu
dC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
dHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1
ZXN0V2l0aFVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHByb21p
c2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRp
bnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewotICAgICAgICAgICAgaWYgKHJlcXVl
c3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1Jlc29sdmVkCiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQuaGFzU3RvcmFnZUFj
Y2VzcwogICAgICAgICAgICAgICAgICYmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgfHwgIXVzZXJT
aG91bGRCZUNvbnN1bHRlZCkKICAgICAgICAgICAgICAgICAmJiBwb2xpY3lTaG91bGRHcmFudEFj
Y2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUEFTUyBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIHdhcyBncmFudGVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2Fn
ZSgiUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLiIsICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzCi0gICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
dHVyblZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c29sdmVkCiAgICAgICAgICAgICAgICAgICAgICYmICgoIXVzZXJTaG91bGRHcmFudEFjY2VzcyAm
JiB1c2VyU2hvdWxkQmVDb25zdWx0ZWQpIHx8ICFwb2xpY3lTaG91bGRHcmFudEFjY2VzcykpCi0g
ICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2Vz
cyB3YXMgZGVuaWVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiUEFTUyBk
b2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuIiwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJG
QUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzICIgKworICAgICAgICAgICAgICAgIHRv
cC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyAiICsKICAg
ICAgICAgICAgICAgICAgICAgKGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgPyAiIiA6ICJub3Qg
IikgKwotICAgICAgICAgICAgICAgICAgICAiZ3JhbnRlZCBhbmQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NSZXR1cm5WYWx1ZSB3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1JldHVyblZhbHVlID8gIiIgOiAibm90ICIpICsKKyAgICAgICAgICAgICAgICAgICAg
ImdyYW50ZWQgYW5kIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgd2FzICIgKworICAgICAg
ICAgICAgICAgICAgICAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA/ICIiIDogIm5vdCAi
KSArCiAgICAgICAgICAgICAgICAgICAgICJncmFudGVkIGJ1dCBzaG91bGQgIiArCiAgICAgICAg
ICAgICAgICAgICAgICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgJiYgcG9saWN5U2hvdWxkR3JhbnRB
Y2Nlc3MgPyAiIiA6ICJub3QgIikgKwotICAgICAgICAgICAgICAgICAgICAiaGF2ZSBiZWVuIGdy
YW50ZWQuIik7CisgICAgICAgICAgICAgICAgICAgICJoYXZlIGJlZW4gZ3JhbnRlZC4iLCAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJ
KHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNzQwLDcgKzc0MCw3IEBAIGh0dHAvdGVzdHMv
bG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWMKIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1k
YXRhLXJlbW92YWwuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVl
c3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFz
cyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCi1odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQt
aWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1s
IFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4uaHRtbCBb
IFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi5odG1sIFsg
UGFzcyBdCkBAIC03NDgsNiArNzQ4LDkgQEAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVl
c3Qtc3RvcmFnZQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwg
WyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNh
bmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFjdGlv
bi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3Jh
bnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2
YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCitodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRt
bCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMv
d2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLXNhbWUtb3JpZ2luLWZyYW1lLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzE3Mzg2MSBbIFJlbGVhc2UgXSBodHRwL3Rlc3Rz
L3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1jcm9zcy1vcmlnaW4tZnJhbWUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322872</attachid>
            <date>2017-10-05 11:46:20 -0700</date>
            <delta_ts>2017-10-05 13:24:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176941-20171005114619.patch</filename>
            <type>text/plain</type>
            <size>74233</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjgyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEwLTA1ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogV2ViIHByb2Nlc3Mgc2hvdWxkIGFzayBVSSBwcm9jZXNzIGZvciBncmFudC9kZW55CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5NDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDQwMDM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IER1bWV6IGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5v
bi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9u
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGNoYW5nZXMgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgc28g
dGhhdCBpdAorICAgICAgICBjYWxscyB0aGUgQ2hyb21lQ2xpZW50IGluc3RlYWQgb2YgdGhlIFJl
c291cmNlTG9hZE9ic2VydmVyIHRvCisgICAgICAgIHJlcXVlc3Qgc3RvcmFnZSBhY2Nlc3Mgb24g
YmVoYWxmIG9mIHRoZSBpZnJhbWUuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgaG93
IHRoZSBwcm9taXNlIGlzIHVzZWQsIGZyb20gcmV0dXJuaW5nCisgICAgICAgIGEgYm9vbGVhbiB0
byBlaXRoZXIgcmVzb2x2aW5nIG9yIHJlamVjdGluZyB0byBzaWduYWwgZ3JhbnQvZGVueQorICAg
ICAgICBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlZ2lz
dGVyU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxNy0xMC0w
MyAgWmFsYW4gQnVqdGFzIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JvbGwg
c25hcCBwb2ludCB1bnJlZ2lzdHJhdGlvbiBmcm9tIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSB0byB3
aWxsQmVEZXN0cm95ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIy
NzEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzI4MywzMSArNzI4MywzMSBAQCB2b2lkIERvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhSZWY8CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZShXVEZNb3ZlKHBhc3Nl
ZFByb21pc2UpKTsKICAgICAKICAgICBpZiAobV9oYXNTdG9yYWdlQWNjZXNzKSB7Ci0gICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHByb21pc2UtPnJl
c29sdmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoIW1fZnJhbWUg
fHwgc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29s
dmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBtX2hhc1N0b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgLy8gVGhlcmUgaGFzIHRvIGJlIGEgc2Fu
ZGJveCBhbmQgaXQgaGFzIHRvIGFsbG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUgY2Fs
bGVkLgogICAgIGlmIChzYW5kYm94RmxhZ3MoKSA9PSBTYW5kYm94Tm9uZSB8fCBpc1NhbmRib3hl
ZChTYW5kYm94U3RvcmFnZUFjY2Vzc0J5VXNlckFjdGl2YXRpb24pKSB7Ci0gICAgICAgIHByb21p
c2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgICAgICBwcm9taXNlLT5yZWplY3Qo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJl
IGEgZGlyZWN0IGNoaWxkIG9mIHRoZSB0b3AgZG9jdW1lbnQuCiAgICAgYXV0byYgdG9wRG9jdW1l
bnQgPSB0aGlzLT50b3BEb2N1bWVudCgpOwogICAgIGlmICgmdG9wRG9jdW1lbnQgIT0gcGFyZW50
RG9jdW1lbnQoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNl
KTsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTczMTUsMzMgKzczMTUsNDEgQEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUmVmPAogICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gdG9wRG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKTsKICAgICBpZiAoc2VjdXJpdHlPcmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3Jp
Z2luKSkgewogICAgICAgICBtX2hhc1N0b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKCFVc2VyR2VzdHVyZUlu
ZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gcGFydGl0aW9uRG9tYWluID0gc2Vj
dXJpdHlPcmlnaW4uZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICBhdXRvIHRvcFBhcnRp
dGlvbkRvbWFpbiA9IHRvcFNlY3VyaXR5T3JpZ2luLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7
CisgICAgYXV0byBpZnJhbWVIb3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOworICAgIGF1dG8g
dG9wSG9zdCA9IHRvcFNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJEbyB5b3Ugd2FudCB0byB1c2UgeW91
ciAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChwYXJ0aXRpb25Eb21haW4pOworICAgIGJ1aWxkZXIu
YXBwZW5kKGlmcmFtZUhvc3QpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIElEIG9uICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKHRvcFBhcnRpdGlvbkRvbWFpbik7CisgICAgYnVpbGRlci5h
cHBlbmQodG9wSG9zdCk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Iik7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIHJ1bkphdmFT
Y3JpcHRDb25maXJtIGJlY2F1c2UgaXQgcmVzcG9uZHMgc3luY2hyb25vdXNseS4KICAgICBpZiAo
KHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkucnVuSmF2YVNjcmlwdENvbmZpcm0oKm1fZnJhbWUsIGJ1
aWxkZXIudG9TdHJpbmcoKSkpIHx8IG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUpIHsKLSAg
ICAgICAgbV9oYXNTdG9yYWdlQWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnJlZ2lzdGVyU3RvcmFnZUFjY2VzcyhwYXJ0aXRpb25Eb21haW4sIHRv
cFBhcnRpdGlvbkRvbWFpbik7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4o
dHJ1ZSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIFtkb2N1bWVudFJlZmVy
ZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2VdIChib29s
IHdhc0dyYW50ZWQpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50
UmVmZXJlbmNlLmdldCgpOworICAgICAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICh3YXNHcmFudGVkKSB7CisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQtPm1faGFzU3RvcmFnZUFjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgIHBy
b21pc2UtPnJlamVjdCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRDb25zb2xlTWVzc2FnZUxp
c3RlbmVyKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJiBsaXN0ZW5lcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHR5cGVkZWYgKAog
CiAgICAgLy8gTm9uIHN0YW5kYXJkLCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3JraW5n
IGdyb3VwLgogICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGhhc1N0b3JhZ2VBY2Nlc3M7Ci0gICAgW0VuYWJsZWRCeVNldHRp
bmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFjY2Vz
cygpOworICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIFByb21pc2U8dm9p
ZD4gcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKIAogICAgIC8vIE9ic29sZXRlIGZlYXR1cmVzIGZy
b20gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2Jzb2xldGUuaHRtbAog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwyMyArMjg0LDYgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYQogICAgIG5vdGlmeU9ic2VydmVyKCk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlZ2lzdGVyU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdHJpbmcmIHN1YkZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiwgY29uc3Qg
U3RyaW5nJiB0b3BGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pCi17Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NNYXAuYWRkKHN1YkZyYW1lVG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbiwgSGFzaFNldDxTdHJpbmc+IHsgfSk7Ci0gICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSAmJiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRvcEZy
YW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IEhhc2hTZXQ8U3RyaW5nPiB7IHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbiB9OwotICAgIGVsc2UKLSAgICAgICAgbV9zdG9yYWdlQWNjZXNzTWFwLmdldChzdWJGcmFt
ZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pLmFkZCh0b3BGcmFtZVRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4pOwotCi0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc3ViRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKTsKLSAgICBzdGF0aXN0aWNzLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lu
cy5hZGQodG9wRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLSAgICBtX25vdGlm
aWNhdGlvblRpbWVyLnN0b3AoKTsKLSAgICBub3RpZnlPYnNlcnZlcigpOwotfQotCiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUocHJpbWFy
eURvbWFpbiwgWyZwcmltYXJ5RG9tYWluXSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDcgKzYwLDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBG
cmFtZSosIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVj
ZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCByZWdpc3RlclN0
b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiBzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4sIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBT
dHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
JiYpOwpAQCAtNzcsNyArNzYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwotICAgIEhhc2hNYXA8
U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+IG1fc3RvcmFnZUFjY2Vzc01hcDsKICAgICBIYXNoTWFw
PFN0cmluZywgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7
CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25UaW1l
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjIyNzEwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDY0LDYgKzQ2NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQ
VVRpbWUoU2Vjb25kcywgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KICAgICB2aXJ0
dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIC8qc3ViRnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0
Ki8sIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFs
c2UpOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyODI3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxNy0xMC0wNSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6
IFdlYiBwcm9jZXNzIHNob3VsZCBhc2sgVUkgcHJvY2VzcyBmb3IgZ3JhbnQvZGVueQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2OTQxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDQ0MDAzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1leiBhbmQgU2FtIFdlaW5pZy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaW5mcmFzdHJ1
Y3R1cmUgdG8gbGV0IFdlYkNvcmU6OkRvY3VtZW50IGNhbGwKKyAgICAgICAgV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgYW5kIGFzayBmb3Igc3RvcmFnZQorICAgICAgICBh
Y2Nlc3Mgb24gYmVoYWxmIG9mIGFuIGlmcmFtZS4gVGhlIGNvbW11bmljYXRpb24gZ29lcyB0aHJv
dWdoCisgICAgICAgIHRoZSBDaHJvbWVDbGllbnQgc2luY2Ugd2UgbWlnaHQgd2FudCB0byBhZGQg
YSBuYXRpdmUgcHJvbXB0LgorICAgICAgICBGcm9tIHRoZSBDaHJvbWVDbGllbnQgaXQgY29udGlu
dWVzIHRvIHRoZSBXZWJQYWdlIHdoaWNoCisgICAgICAgIG1lc3NhZ2VzIHRoZSBXZWJQYWdlUHJv
eHkuIFRoZSBXZWJQYWdlUHJveHkgY2FsbHMgdGhlCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUg
d2hpY2ggb3ducyB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAgICAgICBB
IHVpbnQ2NF90IGlzIHVzZWQgdG8gbWF0Y2ggdGhlIHJpZ2h0IGNhbGxiYWNrIHdpdGggdGhlIGJv
b2xlYW4KKyAgICAgICAgcmVzdWx0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXh0UmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0b3JhZ2VBY2Nl
c3NSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0x
MC0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3Jy
ZWN0IG51bGxwdHIgZGVyZWZlcmVuY2UgZHVyaW5nIHNodXRkb3duCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
NDAsNCArNzA0MCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRhc2sodWlu
CiAgICAgaXRlcmF0b3ItPnZhbHVlLT5zdG9wVGFzaygqdGhpcywgdGFza0lkZW50aWZpZXIpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250
ZXh0SWQpCit7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgW3RoaXMsIHdlYlBy
b2Nlc3NDb250ZXh0SWRdIChib29sIHdhc0dyYW50ZWQpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9yYWdlQWNjZXNzUmVzcG9uc2Uod2FzR3JhbnRlZCwg
d2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFnZUlEKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMTAsNiArMTIxMCw4IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJik7CiAKKyAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKKwogcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUw
MCw0ICs1MDAsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgU3RhcnRVUkxT
Y2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RvcFVSTFNjaGVt
ZVRhc2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
KQorCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nIHN1YkZyYW1lSG9zdCwgU3RyaW5n
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgY29udGV4dElEKQogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiAr
MjQzLDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXMKICAgICBw
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoc3ViRnJhbWVIb3N0ICE9IHRvcEZyYW1lSG9zdCk7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFt
ZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oc3ViRnJhbWVIb3N0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgeworICAgICAgICBhdXRvJiBzdGF0aXN0aWMg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHN1YkZyYW1lUHJpbWFy
eURvbWFpbik7CisgICAgICAgIGNhbGxiYWNrKCFzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJj
ZSB8fCBzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uKTsKKyAgICB9KTsKK30KKyAgICAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vi
c2l0ZURhdGEoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgJKHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2
ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29s
IHZhbHVlKSB7IG1fcGFyYW1ldGVycy5zaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsgfQog
CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKIAogICAgIHZvaWQgcHJvY2Vz
c1dpbGxPcGVuQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
ICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBD
OjpDb25uZWN0aW9uJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjIyNzEwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjcsNiArMTM2NywxNiBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZVBlbmRpbmdDb29rCiAgICAgbV9wZW5kaW5nQ29va2llcy5yZW1vdmUoY29v
a2llKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgV1RG
TW92ZShjYWxsYmFjaykpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCShyZXZpc2lvbiAyMjI3MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsx
MzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NB
bmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgY2Fs
bGJhY2spOwogCisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjYWxsYmFjayk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQ
QUw6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0
aW9uLCBQQUw6OlNlc3Npb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjMsNCArMTIyMyw5IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW0KICAgICBtX3BhZ2UuZmluZENv
bnRyb2xsZXIoKS5kaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpOwogfQogCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y2FsbGJhY2spCit7CisgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjIyNzEwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsK
IAorICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYpOworCiAg
ICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsKICAgICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4g
bV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFtZTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRN
YWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjI3MTAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjA0MSw0ICs2MDQxLDI1IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFz
a0RpZENvbXBsZXRlKHUKICAgICBoYW5kbGVyLT50YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZp
ZXIsIGVycm9yKTsKIH0KIAorc3RhdGljIHVpbnQ2NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbnRleHRJZCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQgPSAwOwor
ICAgIHJldHVybiArK25leHRDb250ZXh0SWQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3Qs
IFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byBjb250
ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJ
ZCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgY29udGV4dElkKSk7
Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRl
ZCwgdWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3N0b3JhZ2VB
Y2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBBU1NFUlQoY2Fs
bGJhY2spOworICAgIGNhbGxiYWNrKHdhc0dyYW50ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIyMjcxMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVsZVBvc3RMYXlvdXRVcGRhdGUoKTsK
ICAgICB2b2lkIGZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCk7CiAKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lk
IHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE1ODgsNiArMTU5MSw4IEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4+IG1fc2No
ZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJv
eHlNYXA7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wg
Z3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjcxMCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQ4Miw0ICs0ODIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhh
bmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKQorCisgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3Jh
bnRlZCwgdWludDY0X3QgY29udGV4dElkKQogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyODI3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTctMTAtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBXZWIgcHJvY2VzcyBzaG91bGQgYXNrIFVJIHByb2Nlc3Mg
Zm9yIGdyYW50L2RlbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3Njk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ0NDAwMzY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXogYW5kIFNhbSBXZWluaWcuCisKKyAgICAgICAgVGhl
IGlmcmFtZXMgbm93IGNvbW11bmljYXRlIHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIHRvcCBmcmFt
ZSB0aHJvdWdoIHBvc3RNZXNzYWdlLgorICAgICAgICBBbHNvLCBkZW5pZWQgYWNjZXNzIHJlc3Vs
dHMgaW4gYSByZWplY3RlZCBwcm9taXNlIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlc2UKKyAgICAg
ICAgY2hhbmdlZCB0ZXN0IGNhc2VzLgorIAorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgdG8gcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94ZWQtaWZy
YW1lLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5k
LWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hl
ZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICAgICBTZWUgY29tbWVudCBhYm92ZSBvbiBy
ZW5hbWluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXBy
ZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50
LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNl
ci1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIFR3byBuZXcgdGVzdCBjYXNl
cyBhZGRlZCBmb3IgdGhlIG5ldyBsb2dpYyBpbiBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1l
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2lu
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1
ZS1vcmlnaW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFs
bG93LXRva2VuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13
aXRob3V0LWFsbG93LXRva2VuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQt
YWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUt
d2l0aG91dC1hbGxvdy10b2tlbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICAgICBBZGRlZCB0aGUgbmV3IHRlc3RzIGFzIFsgUGFzcyBdLgorCiAy
MDE3LTEwLTAzICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBWDogW0FUS10gQVJJQSBtZW51aXRlbXMgc2hvdWxkIGJlIGV4cG9zZWQgd2l0aCBBVEtfUk9M
RV9NRU5VX0lURU0gZXZlbiB3aGVuIGl0J3MgdGhlIGNoaWxkIG9mIGdyb3VwIHJvbGUKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2
ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0
IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJh
bWUgaXMgbm90IHNhbmRib3hlZC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BB
U1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9z
cy1vcmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAogICAgICAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNj
ZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiBy
ZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0
YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwg
IiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQu
b3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAg
ICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAg
ICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwx
MCBAQAotQ09ORklSTTogRG8geW91IHdhbnQgdG8gdXNlIHlvdXIgIElEIG9uID8KLUNPTlNPTEUg
TUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5p
ZWQuCitDT05GSVJNOiBEbyB5b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3
LjAuMC4xPwogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlz
IGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwg
YnV0IHRoZSB1c2VyIG9wdHMgb3V0LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAor
UEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnkt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJh
bWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCBidXQgdGhlIHVzZXIgb3B0cyBv
dXQuIik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAg
ICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2
ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRh
LnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3Jp
Z2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewog
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50
SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7
Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2Vu
ZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3Rl
ZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZy
YW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwICswLDAgQEAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5p
ZWQuCi1UZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVu
aWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKHJldmlzaW9u
IDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jv
c3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBp
cyBub3Qgc2FuZGJveGVkLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAg
ICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgICAg
ICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lk
dGggLyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVs
ZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQo
Y2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
UHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUlm
cmFtZSIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8
aWZyYW1lIG9ubG9hZD0icnVuVGVzdCgpIiBpZD0idGhlSWZyYW1lIiBzcmM9Imh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LWlmcmFtZS5odG1sI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkTm90QmVDb25zdWx0
ZWQscG9saWN5U2hvdWxkRGVueUFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJhbWUiPjwvaWZyYW1l
PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFj
Y2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBub3Qgc2FuZGJveGVkLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdh
cyBkZW5pZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qt
YW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRi
b3hlZC1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLW5vbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3Rv
cmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4iKTsK
KyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1
bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3Jp
Z2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChl
dmVudC5kYXRhLmluZGV4T2YoIlBBU1MgIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEg
bWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
YWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRl
clggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhl
aWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRl
clkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOworICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGhlSWZyYW1lIik7CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpZnJhbWUgb25sb2FkPSJydW5UZXN0KCki
IGlkPSJ0aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3Mv
cmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdy
YW50QWNjZXNzLHVzZXJTaG91bGROb3RCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGREZW55QWNjZXNz
LGlzTm90U2FtZU9yaWdpbklmcmFtZSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3
MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi1DT05GSVJNOiBEbyB5b3Ug
d2FudCB0byB1c2UgeW91ciAgSUQgb24gPwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY0OiBQQVNT
IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCitDT05GSVJNOiBEbyB5b3Ug
d2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPwogVGVzdHMgdGhhdCBj
cm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlmcmFt
ZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIGFuZCB0aGUgdXNlciBvcHRzIGlu
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIHdhcyBncmFudGVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hl
ZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94
ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24tZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitDT05GSVJNOiBE
byB5b3Ugd2FudCB0byB1c2UgeW91ciBsb2NhbGhvc3QgSUQgb24gMTI3LjAuMC4xPworVGVzdHMg
dGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhl
IGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3Jp
Z2luIGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgaGFkIHVz
ZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBvcHRzIGluLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVk
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZh
bGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRv
bWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWlu
LXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3Jh
Z2UgYWNjZXNzIGlzIGdyYW50ZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUg
YWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0
aGUgaWZyYW1lIG9yaWdpbiBoYXMgaGFkIHVzZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBv
cHRzIGluLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisK
KyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlm
IChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQu
ZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJS
ZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9y
aWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAg
IHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVu
dC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50
ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2Vu
ZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3Rl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUlmcmFtZSIpOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Cisg
ICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsg
Ii90ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRp
c3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXN0
b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUt
b3JpZ2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0aGVJZnJhbWUiIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qt
c3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91
bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUt
ZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQt
aWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK0NPTkZJUk06IERvIHlv
dSB3YW50IHRvIHVzZSB5b3VyIGxvY2FsaG9zdCBJRCBvbiAxMjcuMC4wLjE/CitUZXN0cyB0aGF0
IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJh
bWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCB0aGUgaWZyYW1lIG9yaWdpbiBp
cyBhIHByZXZhbGVudCByZXNvdXJjZSwgdGhlIGlmcmFtZSBvcmlnaW4gaGFzIG5vdCBoYWQgdXNl
ciBpbnRlcmFjdGlvbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxl
bnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRv
bWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFt
ZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhh
cyB0aGUgYWxsb3cgdG9rZW4sIHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291
cmNlLCB0aGUgaWZyYW1lIG9yaWdpbiBoYXMgbm90IGhhZCB1c2VyIGludGVyYWN0aW9uLCBhbmQg
dGhlIHVzZXIgb3B0cyBpbi4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwg
ZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAg
ICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgewor
ICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIs
ICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKGV2ZW50LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIg
KyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Cisg
ICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRv
cCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2
YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJO
byBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21p
c2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0aGVJZnJhbWUi
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0
OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVu
ZGVyVGVzdCArICIvdGVtcCI7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aWZyYW1lIHNhbmRi
b3g9ImFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRz
IGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LW1vZGFscyIgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0
aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNj
ZXNzLHVzZXJTaG91bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGROb3RHcmFudEFjY2Vzcyxpc05v
dFNhbWVPcmlnaW5JZnJhbWUiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2
ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBp
ZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hl
ZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uIik7CiAgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiBy
ZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0
YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBm
cm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVt
ZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEw
IEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRi
b3hlZC1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsx
LDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdl
QWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFn
ZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFs
bG93IHRva2VuLCBidXQgaXMgbmVzdGVkLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0bWwJ
KHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LW5lc3RlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAg
ICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBh
Y2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93
IHRva2VuLCBidXQgaXMgbmVzdGVkLiIpOwogICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
IAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNz
YWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsK
KyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAi
KSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAt
MSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBB
U1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJv
bSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxl
bWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsyOCwxMCBA
QAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
OSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0
b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQgaGFz
IHRoZSB1bmlxdWUgb3JpZ2luIGJlY2F1c2UgaXQgbGFja3MgdGhlIGFsbG93LXNhbWUtb3JpZ2lu
IHRva2VuLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCShyZXZpc2lvbiAyMjI3
MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmln
aW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVu
aWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBoYXMgdGhlIHVuaXF1ZSBvcmlnaW4g
YmVjYXVzZSBpdCBsYWNrcyB0aGUgYWxsb3ctc2FtZS1vcmlnaW4gdG9rZW4uIik7CiAgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiBy
ZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0g
Im51bGwiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIp
ICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxh
Y2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3Nh
Z2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsy
OCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2Vu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1l
bnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4g
aWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hl
ZCBhbmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVl
c3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1h
bGxvdy10b2tlbi5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsNiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmln
aW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRi
b3hlZCBhbmQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4iKTsKICAgICAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVN
ZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4
T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQu
ZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2
ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4p
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5j
dGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIg
Y2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpA
QCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1v
cmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1p
ZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1p
ZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRl
bmllZC4KIFRlc3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRl
bmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4K
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3Mtc2FtZS1vcmlnaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4t
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFtZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgc2FtZS1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBp
ZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVj
ZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShl
dmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNT
IikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVw
bGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVz
c2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0
aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAgdmFyIGNlbnRlclgg
PSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcg
KzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNh
bmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2lu
LXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1z
YW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2NDogUEFTUyBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLgogVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJh
bWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBh
bmQgaGFzIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAK
K1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZ3JhbnRlZC4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmln
aW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ct
dG9rZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRv
Y3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFRlc3RzIHRoYXQgc2FtZS1vcmln
aW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRi
b3hlZCBidXQgZG9lc24ndCBoYXZlIHRoZSBhbGxvdyB0b2tlbi4KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVk
LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQt
YWxsb3ctdG9rZW4uaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsNiArNywxOSBAQAogICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdp
biBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJv
eGVkIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2VuLiIpOwogICAgICAgICBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1l
c3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhP
ZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5k
YXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZl
ZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0
aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBj
ZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBA
IC0xNSw3ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9y
aWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4t
c2FuZGJveGVkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyMjI3MTApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAog
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUgc3RvcmFn
ZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCBhbmQgaGFzIHRo
ZSBhbGxvdyB0b2tlbi4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFs
c2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAg
ICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIikgeworICAg
ICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIi
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5l
eHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxl
bWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9t
aXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI3MTApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQCBU
ZXN0cyB0aGF0IHRvcCBmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBhCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIGlzIHRy
dWUKK1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBpcyB0cnVlCiBQQVNTIGRvY3Vt
ZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQotUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
dHVyblZhbHVlIGlzIHRydWUKK1BBU1MgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCBpcyB0
cnVlCiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgaXMgdHJ1ZQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy10b3AtZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyNzEwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtdG9wLWZyYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDM2ICsxMiw1NSBAQAogICAgICAgICB2YXIgY2Vu
dGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwogICAg
ICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWln
aHQgLyAyOwogICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRo
ZW4oCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVj
dGVkLiIpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICApOwogICAgIH0KIAotICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZh
bHVlOworICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkOwogCiAgICAgZnVuY3Rp
b24gbWFrZVJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7Ci0gICAgICAgIGRvY3VtZW50LnJl
cXVlc3RTdG9yYWdlQWNjZXNzKCk7CiAgICAgICAgIHZhciBwcm9taXNlID0gZG9jdW1lbnQucmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoKTsKLSAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChoYXNB
Y2Nlc3MpIHsKLSAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgPSBo
YXNBY2Nlc3M7Ci0gICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1
cm5WYWx1ZSIsICJ0cnVlIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcyIsICJ0cnVlIik7Ci0gICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUJ1
dHRvbiIpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS50aGVuKAorICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVz
ZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhvdXRVc2VyR2VzdHVyZSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnRpbnVl
QWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCkgeworICAgICAgICBzaG91bGRCZSgicmVx
dWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJlKCJk
b2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAgICAgYWN0aXZhdGVFbGVt
ZW50KCJ0aGVCdXR0b24iKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBtYWtlUmVxdWVzdFdpdGhV
c2VyR2VzdHVyZSgpIHsKLSAgICAgICAgZG9jdW1lbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsK
ICAgICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwot
ICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGhhc0FjY2VzcykgewotICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZSA9IGhhc0FjY2VzczsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIiwgInRydWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsK
LSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlz
ZS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVl
c3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
QWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
b2x2ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhV
c2VyR2VzdHVyZSgpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgeworICAgICAgICBz
aG91bGRCZSgicmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCIsICJ0cnVlIik7CisgICAgICAg
IHNob3VsZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKKyAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsMjggKzEyLDM0IEBACiAKICAgICAgICAgZnVuY3Rpb24gc3Rv
cmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1bWVu
dC5oYXNTdG9yYWdlQWNjZXNzIHdhcyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4i
KTsKLSAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlKQotICAg
ICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJu
VmFsdWUgd2FzIHRydWUgd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAgICAg
ICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdh
cyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4iLCAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIik7CisgICAgICAgICAgICBpZiAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCkKKyAg
ICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NS
ZXNvbHZlZCB3YXMgdHJ1ZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gc3RvcmFnZUFj
Y2Vzc1Nob3VsZEJlVHJ1ZSgpIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIik7Ci0g
ICAgICAgICAgICBpZiAoIXJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUpCi0gICAgICAg
ICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1
ZSB3YXMgZmFsc2Ugd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIpOworICAgICAgICAgICAg
ICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBm
YWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIpOworICAgICAgICAgICAgaWYgKCFyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkKQorICAg
ICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c29sdmVkIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQgdG8uIiwgImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHJlcXVlc3RTdG9yYWdl
QWNjZXNzUmV0dXJuVmFsdWU7CisgICAgICAgIHZhciByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29s
dmVkOwogCiAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCkg
ewogICAgICAgICAgICAgc3RvcmFnZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAgICAg
ICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCk7Ci0gICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhv
dXRVc2VyR2VzdHVyZSgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29s
dmVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0
aG91dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVz
ZXJHZXN0dXJlKCkgewpAQCAtNTAsMzAgKzU2LDM2IEBACiAgICAgICAgICAgICAgICAgc3RvcmFn
ZUFjY2Vzc1Nob3VsZEJlRmFsc2UoKTsKIAogICAgICAgICAgICAgdmFyIHByb21pc2UgPSBkb2N1
bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1
bmN0aW9uIChoYXNBY2Nlc3MpIHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1JldHVyblZhbHVlID0gaGFzQWNjZXNzOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJS
ZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHBy
b21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdFdpdGhVc2VyR2VzdHVyZSgpOworICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGNv
bnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewotICAgICAgICAgICAgaWYgKHJl
cXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1Jlc29sdmVkCiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcwogICAgICAgICAgICAgICAgICYmICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgfHwgIXVz
ZXJTaG91bGRCZUNvbnN1bHRlZCkKICAgICAgICAgICAgICAgICAmJiBwb2xpY3lTaG91bGRHcmFu
dEFjY2VzcykKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUEFTUyBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVz
c2FnZSgiUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBncmFudGVkLiIsICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzCi0gICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1JldHVyblZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc29sdmVkCiAgICAgICAgICAgICAgICAgICAgICYmICgoIXVzZXJTaG91bGRHcmFudEFjY2Vz
cyAmJiB1c2VyU2hvdWxkQmVDb25zdWx0ZWQpIHx8ICFwb2xpY3lTaG91bGRHcmFudEFjY2Vzcykp
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFj
Y2VzcyB3YXMgZGVuaWVkLiIpOworICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiUEFT
UyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuIiwgImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzICIgKworICAgICAgICAgICAgICAg
IHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyAiICsK
ICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MgPyAiIiA6ICJu
b3QgIikgKwotICAgICAgICAgICAgICAgICAgICAiZ3JhbnRlZCBhbmQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NSZXR1cm5WYWx1ZSB3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1JldHVyblZhbHVlID8gIiIgOiAibm90ICIpICsKKyAgICAgICAgICAgICAgICAg
ICAgImdyYW50ZWQgYW5kIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgd2FzICIgKworICAg
ICAgICAgICAgICAgICAgICAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA/ICIiIDogIm5v
dCAiKSArCiAgICAgICAgICAgICAgICAgICAgICJncmFudGVkIGJ1dCBzaG91bGQgIiArCiAgICAg
ICAgICAgICAgICAgICAgICh1c2VyU2hvdWxkR3JhbnRBY2Nlc3MgJiYgcG9saWN5U2hvdWxkR3Jh
bnRBY2Nlc3MgPyAiIiA6ICJub3QgIikgKwotICAgICAgICAgICAgICAgICAgICAiaGF2ZSBiZWVu
IGdyYW50ZWQuIik7CisgICAgICAgICAgICAgICAgICAgICJoYXZlIGJlZW4gZ3JhbnRlZC4iLCAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDIyMjcxMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNzQwLDcgKzc0MCw3IEBAIGh0dHAvdGVz
dHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWMKIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0
ZS1kYXRhLXJlbW92YWwuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sIFsg
UGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCi1odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1zYW5kYm94
ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5o
dG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4uaHRt
bCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi5odG1s
IFsgUGFzcyBdCkBAIC03NDgsNiArNzQ4LDkgQEAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3Qtc3RvcmFnZQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0
bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFj
dGlvbi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1w
cmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCito
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUu
aHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVz
dHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLXNhbWUtb3JpZ2luLWZyYW1lLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzE3Mzg2MSBbIFJlbGVhc2UgXSBodHRwL3Rl
c3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1jcm9zcy1vcmlnaW4tZnJhbWUuaHRt
bCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322904</attachid>
            <date>2017-10-05 13:24:53 -0700</date>
            <delta_ts>2017-10-05 16:05:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176941-20171005132452.patch</filename>
            <type>text/plain</type>
            <size>74253</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEwLTA1ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogV2ViIHByb2Nlc3Mgc2hvdWxkIGFzayBVSSBwcm9jZXNzIGZvciBncmFudC9kZW55CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5NDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDQwMDM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IER1bWV6IGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5v
bi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9u
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAgICAg
ICBUaGlzIHBhdGNoIGNoYW5nZXMgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKCkgc28g
dGhhdCBpdAorICAgICAgICBjYWxscyB0aGUgQ2hyb21lQ2xpZW50IGluc3RlYWQgb2YgdGhlIFJl
c291cmNlTG9hZE9ic2VydmVyIHRvCisgICAgICAgIHJlcXVlc3Qgc3RvcmFnZSBhY2Nlc3Mgb24g
YmVoYWxmIG9mIHRoZSBpZnJhbWUuCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgaG93
IHRoZSBwcm9taXNlIGlzIHVzZWQsIGZyb20gcmV0dXJuaW5nCisgICAgICAgIGEgYm9vbGVhbiB0
byBlaXRoZXIgcmVzb2x2aW5nIG9yIHJlamVjdGluZyB0byBzaWduYWwgZ3JhbnQvZGVueQorICAg
ICAgICBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlZ2lz
dGVyU3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxNy0xMC0w
NSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BheW1lbnQgUmVx
dWVzdF0gQWRkIGEgcGF5bWVudCBtZXRob2QgdGhhdCBzdXBwb3J0cyBBcHBsZSBQYXkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIyOTIxKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3NywzMSArNzI3NywzMSBA
QCB2b2lkIERvY3VtZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8CiAgICAgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4gcHJvbWlzZShXVEZNb3ZlKHBhc3NlZFByb21pc2UpKTsKICAgICAKICAg
ICBpZiAobV9oYXNTdG9yYWdlQWNjZXNzKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
Qm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJpdHlPcmlnaW4oKS5p
c1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2Up
OworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX2hhc1N0b3Jh
Z2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRy
dWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgLy8gVGhlcmUgaGFzIHRvIGJlIGEgc2FuZGJveCBhbmQgaXQgaGFzIHRvIGFs
bG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkgdG8gYmUgY2FsbGVkLgogICAgIGlmIChzYW5kYm94
RmxhZ3MoKSA9PSBTYW5kYm94Tm9uZSB8fCBpc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFjY2Vz
c0J5VXNlckFjdGl2YXRpb24pKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVh
bj4oZmFsc2UpOworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNoaWxkIG9mIHRo
ZSB0b3AgZG9jdW1lbnQuCiAgICAgYXV0byYgdG9wRG9jdW1lbnQgPSB0aGlzLT50b3BEb2N1bWVu
dCgpOwogICAgIGlmICgmdG9wRG9jdW1lbnQgIT0gcGFyZW50RG9jdW1lbnQoKSkgewotICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKKyAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTczMDksMzMgKzczMDksNDEg
QEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPAogICAgIGF1dG8mIHRv
cFNlY3VyaXR5T3JpZ2luID0gdG9wRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKICAgICBpZiAo
c2VjdXJpdHlPcmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgewogICAgICAgICBtX2hh
c1N0b3JhZ2VBY2Nlc3MgPSB0cnVlOwotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xl
YW4+KHRydWUpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCiAgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxz
ZSk7CisgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGF1dG8gcGFydGl0aW9uRG9tYWluID0gc2VjdXJpdHlPcmlnaW4uZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKTsKLSAgICBhdXRvIHRvcFBhcnRpdGlvbkRvbWFpbiA9IHRvcFNlY3Vy
aXR5T3JpZ2luLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7CisgICAgYXV0byBpZnJhbWVIb3N0
ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOworICAgIGF1dG8gdG9wSG9zdCA9IHRvcFNlY3VyaXR5
T3JpZ2luLmhvc3QoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJEbyB5b3Ugd2FudCB0byB1c2UgeW91ciAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChwYXJ0aXRpb25Eb21haW4pOworICAgIGJ1aWxkZXIuYXBwZW5kKGlmcmFtZUhvc3QpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIElEIG9uICIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KHRvcFBhcnRpdGlvbkRvbWFpbik7CisgICAgYnVpbGRlci5hcHBlbmQodG9wSG9zdCk7CiAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Iik7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2Uo
KTsKICAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIHJ1bkphdmFTY3JpcHRDb25maXJtIGJlY2F1c2Ug
aXQgcmVzcG9uZHMgc3luY2hyb25vdXNseS4KICAgICBpZiAoKHBhZ2UgJiYgcGFnZS0+Y2hyb21l
KCkucnVuSmF2YVNjcmlwdENvbmZpcm0oKm1fZnJhbWUsIGJ1aWxkZXIudG9TdHJpbmcoKSkpIHx8
IG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUpIHsKLSAgICAgICAgbV9oYXNTdG9yYWdlQWNj
ZXNzID0gdHJ1ZTsKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnJlZ2lz
dGVyU3RvcmFnZUFjY2VzcyhwYXJ0aXRpb25Eb21haW4sIHRvcFBhcnRpdGlvbkRvbWFpbik7Ci0g
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9z
dCksIFdURk1vdmUodG9wSG9zdCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2VdIChib29sIHdhc0dyYW50ZWQpIHsKKyAgICAg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOworICAg
ICAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGlmICh3YXNHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQtPm1faGFz
U3RvcmFnZUFjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7
CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHByb21pc2Ut
PnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOworICAgIHByb21pc2UtPnJlamVjdCgpOwogfQog
CiB2b2lkIERvY3VtZW50OjpzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKFJlZlB0cjxTdHJpbmdD
YWxsYmFjaz4mJiBsaXN0ZW5lcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNp
b24gMjIyOTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHR5cGVkZWYgKAogCiAgICAgLy8gTm9uIHN0YW5kYXJk
LCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3JraW5nIGdyb3VwLgogICAgIFtFbmFibGVk
QnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c1N0b3JhZ2VBY2Nlc3M7Ci0gICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0g
UHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOworICAgIFtFbmFibGVkQnlT
ZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIFByb21pc2U8dm9pZD4gcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoKTsKIAogICAgIC8vIE9ic29sZXRlIGZlYXR1cmVzIGZyb20gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2Jzb2xldGUuaHRtbAogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyMjkyMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4NCwyMyArMjg0LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nVXNlckludGVyYQogICAgIG5vdGlmeU9ic2VydmVyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnJlZ2lzdGVyU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHN1YkZyYW1l
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZVRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4pCi17Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3Jh
Z2VBY2Nlc3NNYXAuYWRkKHN1YkZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiwgSGFz
aFNldDxTdHJpbmc+IHsgfSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEhhc2hTZXQ8U3RyaW5n
PiB7IHRvcEZyYW1lVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiB9OwotICAgIGVsc2UKLSAg
ICAgICAgbV9zdG9yYWdlQWNjZXNzTWFwLmdldChzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4pLmFkZCh0b3BGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwotCi0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4oc3ViRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLSAgICBzdGF0aXN0
aWNzLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQodG9wRnJhbWVUb3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLSAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsK
LSAgICBub3RpZnlPYnNlcnZlcigpOwotfQotCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUocHJpbWFyeURvbWFpbiwgWyZwcmltYXJ5RG9t
YWluXSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkocmV2aXNpb24gMjIyOTIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBGcmFtZSosIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCByZWdpc3RlclN0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBzdWJGcmFtZVRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4sIGNvbnN0IFN0cmluZyYg
dG9wRnJhbWVUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
IChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+JiYpOwpAQCAtNzcsNyArNzYsNiBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlz
dGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmlu
Zz4+IG1fc3RvcmFnZUFjY2Vzc01hcDsKICAgICBIYXNoTWFwPFN0cmluZywgV1RGOjpXYWxsVGlt
ZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7CiAgICAgV1RGOjpGdW5jdGlvbjx2
b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1fbm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjIyOTIxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDYgKzQ2NCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoU2Vjb25kcywgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVh
dGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8qc3Vi
RnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9CisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjIyOTIxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0MSBAQAorMjAxNy0xMC0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IFdlYiBwcm9jZXNzIHNob3VsZCBh
c2sgVUkgcHJvY2VzcyBmb3IgZ3JhbnQvZGVueQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2OTQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDQ0
MDAzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1leiBhbmQgU2FtIFdlaW5pZy4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgaW5mcmFzdHJ1Y3R1cmUgdG8gbGV0IFdlYkNvcmU6
OkRvY3VtZW50IGNhbGwKKyAgICAgICAgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgYW5kIGFzayBmb3Igc3RvcmFnZQorICAgICAgICBhY2Nlc3Mgb24gYmVoYWxmIG9mIGFu
IGlmcmFtZS4gVGhlIGNvbW11bmljYXRpb24gZ29lcyB0aHJvdWdoCisgICAgICAgIHRoZSBDaHJv
bWVDbGllbnQgc2luY2Ugd2UgbWlnaHQgd2FudCB0byBhZGQgYSBuYXRpdmUgcHJvbXB0LgorICAg
ICAgICBGcm9tIHRoZSBDaHJvbWVDbGllbnQgaXQgY29udGludWVzIHRvIHRoZSBXZWJQYWdlIHdo
aWNoCisgICAgICAgIG1lc3NhZ2VzIHRoZSBXZWJQYWdlUHJveHkuIFRoZSBXZWJQYWdlUHJveHkg
Y2FsbHMgdGhlCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUgd2hpY2ggb3ducyB0aGUgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAgICAgICBBIHVpbnQ2NF90IGlzIHVzZWQgdG8g
bWF0Y2ggdGhlIHJpZ2h0IGNhbGxiYWNrIHdpdGggdGhlIGJvb2xlYW4KKyAgICAgICAgcmVzdWx0
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0
SWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0wNSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BheW1lbnQgUmVxdWVzdF0gQWRkIGEgcGF5bWVu
dCBtZXRob2QgdGhhdCBzdXBwb3J0cyBBcHBsZSBQYXkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIyOTIxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA3NCw0ICs3
MDc0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lVGFzayh1aW4KICAgICBp
dGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCB0YXNrSWRlbnRpZmllcik7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhv
c3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCkK
K3sKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUo
c3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBbdGhpcywgd2ViUHJvY2Vzc0Nv
bnRleHRJZF0gKGJvb2wgd2FzR3JhbnRlZCkgeworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN0b3JhZ2VBY2Nlc3NSZXNwb25zZSh3YXNHcmFudGVkLCB3ZWJQcm9j
ZXNzQ29udGV4dElkKSwgbV9wYWdlSUQpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAyMjI5MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIwOSw2ICsxMjA5LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9p
ZCBlZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmKTsKIAorICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpOworCiBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlE
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjkyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTAwLDQgKzUw
MCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBTdGFydFVSTFNjaGVtZVRh
c2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBTdG9wVVJMU2NoZW1lVGFzayh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpCisKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0LCBTdHJpbmcgdG9wRnJh
bWVIb3N0LCB1aW50NjRfdCBjb250ZXh0SUQpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHJldmlzaW9uIDIyMjkyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMTcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcwogICAgIHByb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKQoreworICAgIEFTU0VSVChzdWJGcmFtZUhvc3QgIT0gdG9wRnJhbWVIb3N0KTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lUHJpbWFy
eURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbihzdWJGcmFtZUhvc3QpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoKSB7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpYyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc3ViRnJhbWVQcmltYXJ5RG9tYWlu
KTsKKyAgICAgICAgY2FsbGJhY2soIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlIHx8IHN0
YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pOworICAgIH0pOworfQorICAgIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAkocmV2aXNpb24gMjIyOTIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUp
IHsgbV9wYXJhbWV0ZXJzLnNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHZhbHVlOyB9CiAKICAgICB2
b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogCiAgICAgdm9pZCBwcm9jZXNzV2lsbE9w
ZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5l
Y3Rpb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMjI5MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM2Nyw2ICsxMzY3LDE2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVtb3ZlUGVuZGluZ0Nvb2sKICAgICBtX3BlbmRpbmdDb29raWVzLnJlbW92ZShjb29raWUpOwog
fQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgJKHJldmlzaW9uIDIyMjkyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRl
c3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjayk7
CiAKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vz
c2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24sIFBB
TDo6U2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMjI5
MjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyMyw0ICsxMjIzLDkgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bQogICAgIG1fcGFnZS5maW5kQ29udHJvbGxl
cigpLmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCk7CiB9CiAKK3ZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFj
aykKK3sKKyAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhv
c3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyMjI5
MjEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw2ICszNDIsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpIGZpbmFsOwogCisgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJik7CisKICAgICBTdHJp
bmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hl
ZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFt
ZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMjkyMSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MDQxLDQgKzYwNDEsMjggQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29t
cGxldGUodQogICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNrSWRlbnRpZmllciwgZXJy
b3IpOwogfQogCitzdGF0aWMgdWludDY0X3QgbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4
dElkKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dENvbnRleHRJZCA9IDA7CisgICAgcmV0
dXJuICsrbmV4dENvbnRleHRJZDsKK30KKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIGNvbnRleHRJZCA9
IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBp
ZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdU
Rk1vdmUodG9wRnJhbWVIb3N0KSwgY29udGV4dElkKSk7CisgICAgZWxzZQorICAgICAgICBjYWxs
YmFjayhmYWxzZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJv
b2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAg
ICBBU1NFUlQoY2FsbGJhY2spOworICAgIGNhbGxiYWNrKHdhc0dyYW50ZWQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIyMjkyMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVsZVBvc3RMYXlv
dXRVcGRhdGUoKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBkYXRlKCk7CiAK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3Ry
aW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNr
KTsKKyAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE1ODgsNiArMTU5MSw4IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eT4+IG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXA7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIy
MjkyMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw0ICs0ODIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjIyOTIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTctMTAtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBXZWIgcHJvY2VzcyBzaG91bGQgYXNr
IFVJIHByb2Nlc3MgZm9yIGdyYW50L2RlbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3Njk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ0NDAw
MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXogYW5kIFNhbSBXZWluaWcuCisK
KyAgICAgICAgVGhlIGlmcmFtZXMgbm93IGNvbW11bmljYXRlIHRoZSByZXN1bHRzIGJhY2sgdG8g
dGhlIHRvcCBmcmFtZSB0aHJvdWdoIHBvc3RNZXNzYWdlLgorICAgICAgICBBbHNvLCBkZW5pZWQg
YWNjZXNzIHJlc3VsdHMgaW4gYSByZWplY3RlZCBwcm9taXNlIHdoaWNoIGlzIGhhbmRsZWQgaW4g
dGhlc2UKKyAgICAgICAgY2hhbmdlZCB0ZXN0IGNhc2VzLgorIAorICAgICAgICAqIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVu
eS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnkt
c3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgICAgIFJlbmFt
ZWQgdG8gcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLW5vbi1z
YW5kYm94ZWQtaWZyYW1lLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJv
eGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4t
bm9uLXNhbmRib3hlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICAgICBTZWUgY29tbWVu
dCBhYm92ZSBvbiByZW5hbWluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlm
cmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qt
YW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZy
b20tcHJldmFsZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRv
bWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWlu
LXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIFR3byBu
ZXcgdGVzdCBjYXNlcyBhZGRlZCBmb3IgdGhlIG5ldyBsb2dpYyBpbiBXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hl
ZC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQt
aWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1u
ZXN0ZWQtaWZyYW1lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11
bmlxdWUtb3JpZ2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS13aXRoLXVuaXF1ZS1vcmlnaW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFt
ZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZyYW1l
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBBZGRlZCB0aGUgbmV3IHRlc3RzIGFzIFsg
UGFzcyBdLgorCiAyMDE3LTEwLTA1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBBZGQgYSBwYXltZW50IG1ldGhvZCB0aGF0IHN1cHBv
cnRzIEFwcGxlIFBheQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMjkyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2Fz
IGRlbmllZC4KIFRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBp
cyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBub3Qgc2FuZGJveGVkLgogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5p
ZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjkyMSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3NzLW9yaWdp
biBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNh
bmRib3hlZC4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwor
CisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50
LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3Rl
ZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElk
KSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs
ZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCAr
IGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2Nh
cGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZl
bnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJl
amVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi1DT05GSVJNOiBEbyB5b3Ugd2FudCB0byB1c2UgeW91
ciAgSUQgb24gPwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0
b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KK0NPTkZJUk06IERvIHlvdSB3YW50IHRvIHVzZSB5b3Vy
IGxvY2FsaG9zdCBJRCBvbiAxMjcuMC4wLjE/CiBUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJh
bWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBo
YXMgdGhlIGFsbG93IHRva2VuLCBidXQgdGhlIHVzZXIgb3B0cyBvdXQuCiAKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRl
bmllZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRl
bnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1s
CShyZXZpc2lvbiAyMjI5MjEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBp
cyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4s
IGJ1dCB0aGUgdXNlciBvcHRzIG91dC4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CiAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVz
c2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7
CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
IikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0g
LTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQ
QVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZy
b20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVs
ZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAg
QEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4taWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEs
MTAgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNTIGRvY3VtZW50Lmhhc1N0
b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KLVRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBz
dG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBub3Qgc2FuZGJveGVkLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1p
ZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRl
bmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBzYW5kYm94ZWQuIik7Ci0gICAgICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50
SWQpIHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZWxlbWVudElkKTsKLSAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0
ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVs
ZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICAgICAg
VUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAotICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2Fw
ZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwotICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgIGFj
dGl2YXRlRWxlbWVudCgidGhlSWZyYW1lIik7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotICAgIDxpZnJhbWUgb25sb2FkPSJydW5UZXN0KCkiIGlkPSJ0aGVJZnJh
bWUiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVz
ZXJTaG91bGROb3RCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGREZW55QWNjZXNzLGlzTm90U2FtZU9y
aWdpbklmcmFtZSI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVk
LWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBjcm9zcy1vcmln
aW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZyYW1lIGlzIG5vdCBz
YW5kYm94ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50
Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LW5vbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jv
c3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBp
cyBub3Qgc2FuZGJveGVkLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBm
YWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAg
ICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyAiKSAhPT0gLTEpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIs
ICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKGV2ZW50LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIg
KyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CisgICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Cisg
ICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRv
cCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2
YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJO
byBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21p
c2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0aGVJZnJhbWUi
KTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlmcmFt
ZSBvbmxvYWQ9InJ1blRlc3QoKSIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8vbG9jYWxob3N0
OjgwMDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJh
bWUuaHRtbCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZE5vdEJlQ29uc3VsdGVkLHBv
bGljeVNob3VsZERlbnlBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIj48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIyMjkyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAg
QEAKLUNPTkZJUk06IERvIHlvdSB3YW50IHRvIHVzZSB5b3VyICBJRCBvbiA/Ci1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjQ6IFBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZ3JhbnRl
ZC4KK0NPTkZJUk06IERvIHlvdSB3YW50IHRvIHVzZSB5b3VyIGxvY2FsaG9zdCBJRCBvbiAxMjcu
MC4wLjE/CiBUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMg
Z3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwg
YW5kIHRoZSB1c2VyIG9wdHMgaW4uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQ
QVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC11
c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3Mt
Y3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgt
dXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13
aXRoLXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKK0NPTkZJUk06IERvIHlvdSB3YW50IHRvIHVzZSB5b3VyIGxvY2FsaG9zdCBJRCBv
biAxMjcuMC4wLjE/CitUZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nl
c3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0
b2tlbiwgdGhlIGlmcmFtZSBvcmlnaW4gaXMgYSBwcmV2YWxlbnQgcmVzb3VyY2UsIHRoZSBpZnJh
bWUgb3JpZ2luIGhhcyBoYWQgdXNlciBpbnRlcmFjdGlvbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50Lmhhc1N0b3Jh
Z2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94
ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1m
cm9tLXByZXZhbGVudC1kb21haW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGNyb3Nz
LW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiB0aGUgaWZyYW1lIGlz
IHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwgdGhlIGlmcmFtZSBvcmlnaW4gaXMgYSBw
cmV2YWxlbnQgcmVzb3VyY2UsIHRoZSBpZnJhbWUgb3JpZ2luIGhhcyBoYWQgdXNlciBpbnRlcmFj
dGlvbiwgYW5kIHRoZSB1c2VyIG9wdHMgaW4uIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2
ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVu
dCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikg
IT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFj
ZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkg
eworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhl
bHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgi
dGhlSWZyYW1lIik7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0g
ImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8v
IiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlKTsKKyAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwp
KQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFs
ZW50IHJlc291cmNlLiIpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCkpCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBp
bnRlcmFjdGlvbi4iKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpZnJh
bWUgc2FuZGJveD0iYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uIGFsbG93
LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctbW9kYWxzIiBvbmxvYWQ9InJ1blRlc3Qo
KSIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCN1c2VyU2hvdWxk
R3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29uc3VsdGVkLHBvbGljeVNob3VsZEdyYW50QWNjZXNz
LGlzTm90U2FtZU9yaWdpbklmcmFtZSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQt
dXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MSBAQAorQ09ORklSTTogRG8geW91IHdhbnQgdG8gdXNlIHlvdXIgbG9jYWxob3N0IElEIG9uIDEy
Ny4wLjAuMT8KK1Rlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBp
cyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4s
IHRoZSBpZnJhbWUgb3JpZ2luIGlzIGEgcHJldmFsZW50IHJlc291cmNlLCB0aGUgaWZyYW1lIG9y
aWdpbiBoYXMgbm90IGhhZCB1c2VyIGludGVyYWN0aW9uLCBhbmQgdGhlIHVzZXIgb3B0cyBpbi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcyB3YXMgZGVuaWVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBjcm9zcy1vcmlnaW4gaWZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZCBpZiB0aGUgaWZy
YW1lIGlzIHNhbmRib3hlZCwgaGFzIHRoZSBhbGxvdyB0b2tlbiwgdGhlIGlmcmFtZSBvcmlnaW4g
aXMgYSBwcmV2YWxlbnQgcmVzb3VyY2UsIHRoZSBpZnJhbWUgb3JpZ2luIGhhcyBub3QgaGFkIHVz
ZXIgaW50ZXJhY3Rpb24sIGFuZCB0aGUgdXNlciBvcHRzIGluLiIpOworICAgICAgICBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1l
c3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhP
ZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5k
YXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1
bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChl
bGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVy
WSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
ImVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBhY3RpdmF0
ZUVsZW1lbnQoInRoZUlmcmFtZSIpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVu
ZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwg
PSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSk7Cisg
ICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0
aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3Rp
dmF0aW9uIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctbW9kYWxzIiBvbmxv
YWQ9InJ1blRlc3QoKSIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRt
bCN1c2VyU2hvdWxkR3JhbnRBY2Nlc3MsdXNlclNob3VsZEJlQ29uc3VsdGVkLHBvbGljeVNob3Vs
ZE5vdEdyYW50QWNjZXNzLGlzTm90U2FtZU9yaWdpbklmcmFtZSI+PC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNz
LWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2Ut
YWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjky
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1n
cmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkIGlmIHRo
ZSBpZnJhbWUgaXMgc2FuZGJveGVkLCBoYXMgdGhlIGFsbG93IHRva2VuLCBhbmQgdGhlIHVzZXIg
b3B0cyBpbi4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwor
CisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50
LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
UmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5v
cmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAg
ICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAgICAgICAg
ICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGgg
LyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3Jh
Z2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtbmVz
dGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMjkyMSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY4OiBQQVNT
IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFRlc3RzIHRoYXQgY3Jvc3Mt
b3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBz
YW5kYm94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIGJ1dCBpcyBuZXN0ZWQuCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2Fz
IGRlbmllZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5k
LWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LW5lc3RlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtbmVzdGVkLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsMTkgQEAKICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3Jp
Z2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5k
Ym94ZWQsIGhhcyB0aGUgYWxsb3cgdG9rZW4sIGJ1dCBpcyBuZXN0ZWQuIik7CiAgICAgICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNl
aXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5p
bmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2
ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZBSUwgIiwg
IiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJl
Y2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3Jp
Z2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAg
ZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgICAg
dmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8g
MjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11
bmlxdWUtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2luLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2ODog
UEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0cyB0aGF0IGNy
b3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUg
aXMgc2FuZGJveGVkIGFuZCBoYXMgdGhlIHVuaXF1ZSBvcmlnaW4gYmVjYXVzZSBpdCBsYWNrcyB0
aGUgYWxsb3ctc2FtZS1vcmlnaW4gdG9rZW4uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCitQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmllZC4KIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mt
b3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2luLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2lu
Lmh0bWwJKHJldmlzaW9uIDIyMjkyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZy
YW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTkg
QEAKICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBz
dG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYgdGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQgYW5kIGhh
cyB0aGUgdW5pcXVlIG9yaWdpbiBiZWNhdXNlIGl0IGxhY2tzIHRoZSBhbGxvdy1zYW1lLW9yaWdp
biB0b2tlbi4iKTsKICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwor
CisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQub3JpZ2luID09PSAibnVsbCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJlcGxhY2UoIkZB
SUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZl
bnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKICAg
ICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAgICAgICAgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAg
ICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdp
ZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVyLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1l
LXdpdGhvdXQtYWxsb3ctdG9rZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjI5MjEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTog
bGluZSA2ODogUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBUZXN0
cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRo
ZSBpZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2VuLgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdl
QWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhv
dXQtYWxsb3ctdG9rZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJv
eGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwJKHJldmlzaW9uIDIyMjkyMSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNj
ZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IGNyb3NzLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlm
IHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2Vu
LiIpOwogICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAorICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAg
ICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVu
dC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAgICAg
aWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5y
ZXBsYWNlKCJGQUlMICIsICIiKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdp
bjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0xNSw3ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikK
ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwot
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRl
ci4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQu
Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMjkyMSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgogVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUg
c3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4K
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BBU1MgZG9jdW1lbnQuaGFzU3RvcmFn
ZUFjY2VzcyB3YXMgZGVuaWVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mt
c2FtZS1vcmlnaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxOSBAQAog
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUgc3RvcmFn
ZSBhY2Nlc3MgaXMgZGVuaWVkIGlmIHRoZSBpZnJhbWUgaXMgbm90IHNhbmRib3hlZC4iKTsKICAg
ICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0
aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2lu
ID09PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIikgeworICAgICAgICAgICAgICAgIGlmIChldmVu
dC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQQVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgi
RkFJTCAiLCAiIikpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBl
dmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwog
ICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7CiAgICAgICAgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAg
ICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0
V2lkdGggLyAyOwpAQCAtMTUsNyArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlc2NhcGUiKTsKLSAgICAgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXZlbnRTZW5kZXIuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFn
ZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDIyMjkyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDY0OiBQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuCiBUZXN0cyB0
aGF0IHNhbWUtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkIGlmIHRoZSBp
ZnJhbWUgaXMgc2FuZGJveGVkIGFuZCBoYXMgdGhlIGFsbG93IHRva2VuLgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBn
cmFudGVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9r
ZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1p
ZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMjkyMSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNjg6IFBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMgZGVuaWVkLgog
VGVzdHMgdGhhdCBzYW1lLW9yaWdpbiBpZnJhbWUgc3RvcmFnZSBhY2Nlc3MgaXMgZGVuaWVkIGlm
IHRoZSBpZnJhbWUgaXMgc2FuZGJveGVkIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIGFsbG93IHRva2Vu
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIHdhcyBkZW5pZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0
aG91dC1hbGxvdy10b2tlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRi
b3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tlbi5odG1sCShyZXZpc2lvbiAyMjI5MjEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFj
Y2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHNhbWUtb3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBkZW5pZWQgaWYg
dGhlIGlmcmFtZSBpcyBzYW5kYm94ZWQgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgYWxsb3cgdG9rZW4u
Iik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgICAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50
Lm9yaWdpbiA9PT0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0xKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFTUyAiLCAiIikpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnJl
cGxhY2UoIkZBSUwgIiwgIiIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2lu
OiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKICAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewogICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OwogICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50
Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTE1LDcgKzI4LDEwIEBACiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZXNjYXBlIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV2ZW50U2VuZGVy
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4i
KTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0
b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDIyMjky
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3Jh
Z2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNyw2ICs3LDE5IEBACiAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNhbWUt
b3JpZ2luIGlmcmFtZSBzdG9yYWdlIGFjY2VzcyBpcyBncmFudGVkIGlmIHRoZSBpZnJhbWUgaXMg
c2FuZGJveGVkIGFuZCBoYXMgdGhlIGFsbG93IHRva2VuLiIpOwogICAgICAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3Nh
Z2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigi
UEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRh
LnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJGQUlMICIsICIiKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBh
IG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7Cisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9u
IGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKICAgICAgICAgICAgIHZhciBjZW50
ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC0x
NSw3ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImVzY2FwZSIpOwotICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBldmVudFNlbmRlci4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDIyMjkyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOSArMyw5IEBAIFRlc3RzIHRoYXQgdG9wIGZyYW1lIHN0b3JhZ2UgYWNjZXNzIGlz
IGEKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmV0dXJuVmFsdWUgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVk
IGlzIHRydWUKIFBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyBpcyB0cnVlCi1QQVNTIHJl
cXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1Jlc29sdmVkIGlzIHRydWUKIFBBU1MgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyBp
cyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1m
cmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sCShyZXZpc2lvbiAyMjI5
MjEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9y
YWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsMzYgKzEyLDU1
IEBACiAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5v
ZmZzZXRXaWR0aCAvIDI7CiAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3Ag
KyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CiAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQo
Y2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CiAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQogCi0gICAgdmFyIHJlcXVlc3RT
dG9yYWdlQWNjZXNzUmV0dXJuVmFsdWU7CisgICAgdmFyIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
b2x2ZWQ7CiAKICAgICBmdW5jdGlvbiBtYWtlUmVxdWVzdFdpdGhvdXRVc2VyR2VzdHVyZSgpIHsK
LSAgICAgICAgZG9jdW1lbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoKTsKICAgICAgICAgdmFyIHBy
b21pc2UgPSBkb2N1bWVudC5yZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwotICAgICAgICBwcm9taXNl
LnRoZW4oZnVuY3Rpb24gKGhhc0FjY2VzcykgewotICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NSZXR1cm5WYWx1ZSA9IGhhc0FjY2VzczsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIiwgInRydWUiKTsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIiwgInRydWUiKTsKLSAgICAgICAgICAgIGFj
dGl2YXRlRWxlbWVudCgidGhlQnV0dG9uIik7Ci0gICAgICAgIH0pOworICAgICAgICBwcm9taXNl
LnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWVB
ZnRlclJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NS
ZXNvbHZlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0
aG91dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gY29udGludWVBZnRlclJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkIiwgInRydWUiKTsK
KyAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MiLCAidHJ1ZSIpOwor
ICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRoZUJ1dHRvbiIpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIG1ha2VSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCkgewotICAgICAgICBkb2N1bWVudC5yZXF1
ZXN0U3RvcmFnZUFjY2VzcygpOwogICAgICAgICB2YXIgcHJvbWlzZSA9IGRvY3VtZW50LnJlcXVl
c3RTdG9yYWdlQWNjZXNzKCk7Ci0gICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoaGFzQWNj
ZXNzKSB7Ci0gICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlID0gaGFz
QWNjZXNzOwotICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJu
VmFsdWUiLCAidHJ1ZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50Lmhhc1N0b3Jh
Z2VBY2Nlc3MiLCAidHJ1ZSIpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAg
IH0pOworICAgICAgICBwcm9taXNlLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKTsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdl
c3R1cmUoKSB7CisgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVk
IiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mi
LCAidHJ1ZSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBydW5UZXN0KCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwyOCArMTIsMzQgQEAKIAog
ICAgICAgICBmdW5jdGlvbiBzdG9yYWdlQWNjZXNzU2hvdWxkQmVGYWxzZSgpIHsKICAgICAgICAg
ICAgIGlmIChkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKQotICAgICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIHRydWUgd2hlbiBpdCB3
YXMgbm90IHN1cHBvc2VkIHRvLiIpOwotICAgICAgICAgICAgaWYgKHJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmV0dXJuVmFsdWUpCi0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZSB3YXMgdHJ1ZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9z
ZWQgdG8uIik7CisgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIGRvY3VtZW50
Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIHRydWUgd2hlbiBpdCB3YXMgbm90IHN1cHBvc2VkIHRvLiIs
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1Jlc29sdmVkKQorICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc29sdmVkIHdhcyB0cnVlIHdoZW4gaXQgd2FzIG5vdCBzdXBw
b3NlZCB0by4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgIH0KIAogICAgICAg
ICBmdW5jdGlvbiBzdG9yYWdlQWNjZXNzU2hvdWxkQmVUcnVlKCkgewogICAgICAgICAgICAgaWYg
KCFkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKQotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGZhbHNlIHdoZW4gaXQgd2FzIG5v
dCBzdXBwb3NlZCB0by4iKTsKLSAgICAgICAgICAgIGlmICghcmVxdWVzdFN0b3JhZ2VBY2Nlc3NS
ZXR1cm5WYWx1ZSkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1JldHVyblZhbHVlIHdhcyBmYWxzZSB3aGVuIGl0IHdhcyBub3Qgc3VwcG9zZWQg
dG8uIik7CisgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIGRvY3VtZW50Lmhh
c1N0b3JhZ2VBY2Nlc3Mgd2FzIGZhbHNlIHdoZW4gaXQgd2FzIG5vdCBzdXBwb3NlZCB0by4iLCAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CisgICAgICAgICAgICBpZiAoIXJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzb2x2ZWQpCisgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIHJl
cXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgd2FzIGZhbHNlIHdoZW4gaXQgd2FzIG5vdCBzdXBw
b3NlZCB0by4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgIH0KIAotICAgICAg
ICB2YXIgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZTsKKyAgICAgICAgdmFyIHJlcXVl
c3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQ7CiAKICAgICAgICAgZnVuY3Rpb24gbWFrZVJlcXVlc3RX
aXRob3V0VXNlckdlc3R1cmUoKSB7CiAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzU2hvdWxkQmVG
YWxzZSgpOwogCiAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IGRvY3VtZW50LnJlcXVlc3RTdG9y
YWdlQWNjZXNzKCk7Ci0gICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGhhc0FjY2Vz
cykgewotICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgPSBo
YXNBY2Nlc3M7Ci0gICAgICAgICAgICAgICAgY29udGludWVBZnRlclJlcXVlc3RXaXRob3V0VXNl
ckdlc3R1cmUoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcHJvbWlzZS50aGVuKAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlQWZ0ZXJSZXF1ZXN0V2l0aG91dFVzZXJHZXN0dXJlKCk7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWVBZnRlclJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICApOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gY29udGludWVB
ZnRlclJlcXVlc3RXaXRob3V0VXNlckdlc3R1cmUoKSB7CkBAIC01MCwzMCArNTYsMzYgQEAKICAg
ICAgICAgICAgICAgICBzdG9yYWdlQWNjZXNzU2hvdWxkQmVGYWxzZSgpOwogCiAgICAgICAgICAg
ICB2YXIgcHJvbWlzZSA9IGRvY3VtZW50LnJlcXVlc3RTdG9yYWdlQWNjZXNzKCk7Ci0gICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGhhc0FjY2VzcykgewotICAgICAgICAgICAgICAg
IHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgPSBoYXNBY2Nlc3M7Ci0gICAgICAgICAg
ICAgICAgY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKTsKLSAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcHJvbWlzZS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXNvbHZlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlQWZ0ZXJSZXF1ZXN0V2l0aFVzZXJH
ZXN0dXJlKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdl
c3R1cmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOwogICAgICAgICB9CiAK
ICAgICAgICAgZnVuY3Rpb24gY29udGludWVBZnRlclJlcXVlc3RXaXRoVXNlckdlc3R1cmUoKSB7
Ci0gICAgICAgICAgICBpZiAocmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXR1cm5WYWx1ZQorICAgICAg
ICAgICAgaWYgKHJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQKICAgICAgICAgICAgICAgICAm
JiBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzCiAgICAgICAgICAgICAgICAgJiYgKHVzZXJTaG91
bGRHcmFudEFjY2VzcyB8fCAhdXNlclNob3VsZEJlQ29uc3VsdGVkKQogICAgICAgICAgICAgICAg
ICYmIHBvbGljeVNob3VsZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGdyYW50ZWQuIik7CisgICAgICAg
ICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mg
d2FzIGdyYW50ZWQuIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOwogICAgICAgICAgICAgZWxz
ZSBpZiAoIWRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgJiYg
IXJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgJiYg
IXJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzb2x2ZWQKICAgICAgICAgICAgICAgICAgICAgJiYgKCgh
dXNlclNob3VsZEdyYW50QWNjZXNzICYmIHVzZXJTaG91bGRCZUNvbnN1bHRlZCkgfHwgIXBvbGlj
eVNob3VsZEdyYW50QWNjZXNzKSkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUEFTUyBk
b2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzIHdhcyBkZW5pZWQuIik7CisgICAgICAgICAgICAgICAg
dG9wLnBvc3RNZXNzYWdlKCJQQVNTIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3Mgd2FzIGRlbmll
ZC4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcyB3YXMg
IiArCisgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIGRvY3VtZW50Lmhhc1N0
b3JhZ2VBY2Nlc3Mgd2FzICIgKwogICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuaGFzU3Rv
cmFnZUFjY2VzcyA/ICIiIDogIm5vdCAiKSArCi0gICAgICAgICAgICAgICAgICAgICJncmFudGVk
IGFuZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1JldHVyblZhbHVlIHdhcyAiICsKLSAgICAgICAgICAg
ICAgICAgICAgKHJlcXVlc3RTdG9yYWdlQWNjZXNzUmV0dXJuVmFsdWUgPyAiIiA6ICJub3QgIikg
KworICAgICAgICAgICAgICAgICAgICAiZ3JhbnRlZCBhbmQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NS
ZXNvbHZlZCB3YXMgIiArCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc29sdmVkID8gIiIgOiAibm90ICIpICsKICAgICAgICAgICAgICAgICAgICAgImdyYW50ZWQg
YnV0IHNob3VsZCAiICsKICAgICAgICAgICAgICAgICAgICAgKHVzZXJTaG91bGRHcmFudEFjY2Vz
cyAmJiBwb2xpY3lTaG91bGRHcmFudEFjY2VzcyA/ICIiIDogIm5vdCAiKSArCi0gICAgICAgICAg
ICAgICAgICAgICJoYXZlIGJlZW4gZ3JhbnRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgImhh
dmUgYmVlbiBncmFudGVkLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKICAgICAgICAgfQog
ICAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIyOTIxKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC03NjEs
NyArNzYxLDcgQEAgaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpYwogaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1y
ZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4taWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1l
Lmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwgWyBQYXNzIF0KK2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9z
cy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdp
dGgtdW5pcXVlLW9yaWdpbi5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRo
b3V0LWFsbG93LXRva2VuLmh0bWwgWyBQYXNzIF0KQEAgLTc2OSw2ICs3NjksOSBAQCBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdp
dGhvdXQtYWxsb3ctdG9rZW4uaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1s
IFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3Rv
cmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0bWwgWyBQ
YXNzIF0KK2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdl
LWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21h
aW4td2l0aC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0
aW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3Jh
Z2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xNzM4NjEg
WyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtc2Ft
ZS1vcmlnaW4tZnJhbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTczODYx
IFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWNy
b3NzLW9yaWdpbi1mcmFtZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>