<?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>95352</bug_id>
          
          <creation_ts>2012-08-29 09:36:15 -0700</creation_ts>
          <short_desc>Web Inspector: Create JavaScriptSources based on network resources.</short_desc>
          <delta_ts>2012-09-04 04:10:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95695</dependson>
    
    <dependson>95729</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707530</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-29 09:36:15 -0700</bug_when>
    <thetext>Introduced NetworkUISourceCodeProvider that is listening for ResourceTreeModel and creates UISourceCodes for them.
RawSourceCode does not create uiSourceCodes based on resource anymore (this is done by NetworkUISourceCodeProvider instead).
Moved script-uiSourceCode binding logic from RawSourceCode to ResourceScriptMapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707545</commentid>
    <comment_count>1</comment_count>
      <attachid>161252</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-29 09:49:39 -0700</bug_when>
    <thetext>Created attachment 161252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708374</commentid>
    <comment_count>2</comment_count>
      <attachid>161252</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-30 00:47:01 -0700</bug_when>
    <thetext>Comment on attachment 161252
Patch

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

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:78
&gt; +            resource.request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, resourceFinished, this);

We should only add resources that are finished at the first place.

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:96
&gt; +        if ((isDocument &amp;&amp; this._uiSourceCodeForDocumentResource[resource.url]) || (!isDocument &amp;&amp; this._uiSourceCodeForScriptResource[resource.url]))

Why do you distinguish those?

&gt; Source/WebCore/inspector/front-end/RawSourceCode.js:38
&gt; +WebInspector.RawSourceCode = function(script)

I don&apos;t see why we need this class now.

&gt; Source/WebCore/inspector/front-end/UISourceCode.js:545
&gt; +    setSourceMapping: function(sourceMapping)

You should remove sourceMapping from the constructor now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710649</commentid>
    <comment_count>3</comment_count>
      <attachid>161927</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-03 07:44:48 -0700</bug_when>
    <thetext>Created attachment 161927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710652</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-03 07:46:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 161252 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161252&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:78
&gt; &gt; +            resource.request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, resourceFinished, this);
&gt; 
&gt; We should only add resources that are finished at the first place.
I am going to fix this in another patch.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:96
&gt; &gt; +        if ((isDocument &amp;&amp; this._uiSourceCodeForDocumentResource[resource.url]) || (!isDocument &amp;&amp; this._uiSourceCodeForScriptResource[resource.url]))
&gt; 
&gt; Why do you distinguish those?
This is needed to correctly process &quot;dynamic&quot; scripts (dynamically inserted script elements).

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/RawSourceCode.js:38
&gt; &gt; +WebInspector.RawSourceCode = function(script)
&gt; 
&gt; I don&apos;t see why we need this class now.
Removed.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/UISourceCode.js:545
&gt; &gt; +    setSourceMapping: function(sourceMapping)
&gt; 
&gt; You should remove sourceMapping from the constructor now.
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710659</commentid>
    <comment_count>5</comment_count>
      <attachid>161927</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 07:58:07 -0700</bug_when>
    <thetext>Comment on attachment 161927
Patch

Attachment 161927 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13745145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710668</commentid>
    <comment_count>6</comment_count>
      <attachid>161927</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-03 08:26:10 -0700</bug_when>
    <thetext>Comment on attachment 161927
Patch

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

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:94
&gt; +        if (this._uiSourceCodeForResource[resource.url])

You should check workspace for that.

&gt; Source/WebCore/inspector/front-end/NetworkUISourceCodeProvider.js:132
&gt; +        setTimeout(this._populate.bind(this), 0);

Please use ProjectDidReset

&gt; Source/WebCore/inspector/front-end/ResourceScriptMapping.js:84
&gt; +        script.setSourceMapping(this);

remove this.

&gt; Source/WebCore/inspector/front-end/ResourceScriptMapping.js:109
&gt; +            this._scriptIdForUISourceCode.put(uiSourceCode, scripts[i].scriptId);

Remove that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710694</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-03 09:33:50 -0700</bug_when>
    <thetext>Committed r127427: &lt;http://trac.webkit.org/changeset/127427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710704</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 10:09:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 95695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710941</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-04 03:48:09 -0700</bug_when>
    <thetext>Committed r127454: &lt;http://trac.webkit.org/changeset/127454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710952</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-04 04:10:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r127454: &lt;http://trac.webkit.org/changeset/127454&gt;

It broke a test. Could you check it? Here is the new bug report - https://bugs.webkit.org/show_bug.cgi?id=95729 (Because reopening
bugs is prohibited for me :) )</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161252</attachid>
            <date>2012-08-29 09:49:39 -0700</date>
            <delta_ts>2012-09-03 07:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95352-20120829204928.patch</filename>
            <type>text/plain</type>
            <size>79848</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM4Y2E1NTYxYzhiMTQ3
NDNjMDY4NWIwOTM0MjI2MDZiYzkyMWQwYy4uZjAxOWUyZjUwOWExNGJiYTc2MWU4MDUzNTFjMDIx
YzdiNDA2YjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA4LTI5ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENyZWF0ZSBKYXZhU2NyaXB0U291cmNlcyBiYXNlZCBvbiBuZXR3b3JrIHJlc291cmNlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzUyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
ZCBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgdGhhdCBpcyBsaXN0ZW5pbmcgZm9yIFJlc291
cmNlVHJlZU1vZGVsIGFuZCBjcmVhdGVzIFVJU291cmNlQ29kZXMgZm9yIHRoZW0uCisgICAgICAg
IFJhd1NvdXJjZUNvZGUgZG9lcyBub3QgY3JlYXRlIHVpU291cmNlQ29kZXMgYmFzZWQgb24gcmVz
b3VyY2UgYW55bW9yZSAodGhpcyBpcyBkb25lIGJ5IE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ciBpbnN0ZWFkKS4KKyAgICAgICAgTW92ZWQgc2NyaXB0IDwtPiB1aVNvdXJjZUNvZGUgYmluZGlu
ZyBsb2dpYyBmcm9tIFJhd1NvdXJjZUNvZGUgdG8gUmVzb3VyY2VTY3JpcHRNYXBwaW5nLgorCisg
ICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJv
dmlkZXIuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNj
cmlwdC1tYXBwaW5nLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGls
ZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlT
b3VyY2VDb2RlUHJvdmlkZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVyLmpzLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fcG9wdWxhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5
cGUuX3N0eWxlUmVzb3VyY2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fc2NyaXB0UmVzb3VyY2VBZGRlZC5yZXNvdXJj
ZUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJv
dmlkZXIucHJvdG90eXBlLl9zY3JpcHRSZXNvdXJjZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBlLl9hZGRKYXZhU2NyaXB0
U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIucHJvdG90eXBlLl9hZGRVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX3Jlc291cmNlQWRkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUu
X3Jlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VNYXBwaW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5pc1N0YW5kYWxvbmVTY3Jp
cHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlLmNvbnRl
bnRQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5
cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUucHJvdG90eXBlLnNjcmlwdHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlU2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fY3JlYXRlUmF3U291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fYWRkT3JSZXBsYWNlVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlLmdldCB2YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX2FkZE9yUmVwbGFjZVRlbXBvcmFyeVVJU291cmNlQ29k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlw
ZS5fYWRkVUlTb3VyY2VDb2RlVG9SYXdTb3VyY2VDb2RlLmdldCB1aVNvdXJjZUNvZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3Jhd1Nv
dXJjZUNvZGVGb3JDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3Nob3VsZEJpbmRTY3JpcHRUb0NvbnRlbnRQcm92
aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZS5fcmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2Rl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5w
cm90b3R5cGUuc2V0U291cmNlTWFwcGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisKIDIwMTIt
MDgtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
OWIyNGYyY2YwOTI2YjZlZDBjZWJjMTdlYmU3ZjRkMDUxMDIxNDA5OC4uYzIyNzI2ODQ2NDFkZTY4
YzIxNmY2NTFlZDE4NzIyNTQwNGRhZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM0NSw2ICs2
MzQ1LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsRGVzY3JpcHRv
ci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2Rl
UHJvdmlkZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0Lmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIu
anMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1Nl
Y3Rpb24uanMnLApAQCAtNjM5Miw3ICs2MzkzLDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZVNvdXJjZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvVGVzdENvbnRyb2xsZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDRkYTYxMzJiMDRiMGY1ZjRiM2NlZGQ2ZGY3NTJkYTU3NTllZDQ2MTIu
LjliNjgxNGJjMjU0YzZhMjM5ZGUxNzNiYjQ1NTk5NDUzMWFkYTA3ZTggMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NjI5NCw2ICs3NjI5NCwx
MCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXE5ldHdvcmtSZXF1ZXN0LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpA
QCAtNzY2MDIsMTAgKzc2NjA2LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3R5bGVzVUlTb3VyY2VD
b2RlUHJvdmlkZXIuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFN0eWxlU291cmNlLmpzIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQt
ZW5kLnB5CmluZGV4IDEwY2QyYjU0MTM3YjM4MGQ2YzI3OTliM2U3MGQyYWZkZmVjM2IxZTUuLmY3
ZDgzNTE0MTc0ZDM3ZThlZDQxNDk0YjlmZTIxYjUzOTlkMjU5NjUgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTgyLDYgKzgyLDcgQEAgbW9k
dWxlcyA9IFsKICAgICAgICAgICAgICJKYXZhU2NyaXB0U291cmNlLmpzIiwKICAgICAgICAgICAg
ICJMaW5raWZpZXIuanMiLAogICAgICAgICAgICAgIk5ldHdvcmtMb2cuanMiLAorICAgICAgICAg
ICAgIk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcyIsCiAgICAgICAgICAgICAiUHJlc2Vu
dGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiLAogICAgICAgICAgICAgIlNBU1NTb3VyY2VN
YXBwaW5nLmpzIiwKICAgICAgICAgICAgICJTY3JpcHQuanMiLApAQCAtOTEsNyArOTIsNiBAQCBt
b2R1bGVzID0gWwogICAgICAgICAgICAgIlNvdXJjZU1hcHBpbmcuanMiLAogICAgICAgICAgICAg
IlN0eWxlU291cmNlLmpzIiwKICAgICAgICAgICAgICJTdHlsZXNTb3VyY2VNYXBwaW5nLmpzIiwK
LSAgICAgICAgICAgICJTdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlci5qcyIsCiAgICAgICAgICAg
ICAiVGltZWxpbmVNYW5hZ2VyLmpzIiwKICAgICAgICAgICAgICJSYXdTb3VyY2VDb2RlLmpzIiwK
ICAgICAgICAgICAgICJSZW1vdGVPYmplY3QuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92
aWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43OTkzOGIzNDBhNjUyYjIzN2ZmMGUyYzNjZTMxMTMxYWNmOTQ4
ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNlfSB3b3Jrc3Bh
Y2UKKyAqLworV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciA9IGZ1bmN0
aW9uKHdvcmtzcGFjZSkKK3sKKyAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAg
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVz
b3VyY2VBZGRlZCwgdGhpcyk7CisgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVz
ZXQsIHRoaXMpOworICAgIHRoaXMuX3N0eWxlc1NvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcoKTsKKworICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNj
cmlwdFJlc291cmNlID0ge307CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yRG9jdW1lbnRSZXNv
dXJjZSA9IHt9OworfQorCitXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGZ1bmN0aW9uIHBvcHVsYXRlRnJhbWUoZnJhbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgcG9wdWxhdGVGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsK
KworICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IGZyYW1lLnJlc291cmNlcygpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgdGhpcy5fcmVzb3VyY2VBZGRlZCh7ZGF0YTpyZXNvdXJjZXNbaV19KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHBvcHVsYXRlRnJhbWUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICovCisgICAgX3N0eWxl
UmVzb3VyY2VBZGRlZDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZShyZXNvdXJjZSk7CisgICAg
ICAgIHRoaXMuX3N0eWxlc1NvdXJjZU1hcHBpbmcuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7CisgICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3Vy
Y2UKKyAgICAgKi8KKyAgICBfc2NyaXB0UmVzb3VyY2VBZGRlZDogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgeworICAgICAgICBpZiAocmVzb3VyY2UucmVxdWVzdCAmJiAhcmVzb3VyY2UucmVxdWVz
dC5maW5pc2hlZCkgeworICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCBy
ZXNvdXJjZUZpbmlzaGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICB0aGlzLl9hZGRKYXZhU2NyaXB0U291cmNlKHJlc291cmNlKTsKKyAgICAgICAgCisg
ICAgICAgIGZ1bmN0aW9uIHJlc291cmNlRmluaXNoZWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXNvdXJjZS5yZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcsIHJlc291cmNlRmluaXNoZWQsIHRoaXMp
OworICAgICAgICAgICAgdGhpcy5fYWRkSmF2YVNjcmlwdFNvdXJjZShyZXNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVz
b3VyY2V9IHJlc291cmNlCisgICAgICovCisgICAgX2FkZEphdmFTY3JpcHRTb3VyY2U6IGZ1bmN0
aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIGlzRG9jdW1lbnQgPSByZXNvdXJjZS50
eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDsKKyAgICAgICAgaWYg
KChpc0RvY3VtZW50ICYmIHRoaXMuX3VpU291cmNlQ29kZUZvckRvY3VtZW50UmVzb3VyY2VbcmVz
b3VyY2UudXJsXSkgfHwgKCFpc0RvY3VtZW50ICYmIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlw
dFJlc291cmNlW3Jlc291cmNlLnVybF0pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHJlc291
cmNlLnVybCwgcmVzb3VyY2UsIHJlc291cmNlLCBudWxsLCAhaXNEb2N1bWVudCk7CisgICAgICAg
IGlmIChpc0RvY3VtZW50KQorICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yRG9jdW1l
bnRSZXNvdXJjZVtyZXNvdXJjZS51cmxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRSZXNvdXJjZVtyZXNvdXJjZS51
cmxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9hZGRVSVNvdXJjZUNvZGUodWlTb3Vy
Y2VDb2RlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKi8KKyAgICBfYWRkVUlTb3VyY2VDb2Rl
OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB0aGlzLl93b3Jrc3BhY2Uu
cHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAg
ICBfcmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcmVz
b3VyY2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsK
KyAgICAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldDoKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlUmVz
b3VyY2VBZGRlZChyZXNvdXJjZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDoKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQ6CisgICAgICAgICAgICB0aGlzLl9zY3JpcHRSZXNv
dXJjZUFkZGVkKHJlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSwKKworICAgIF9yZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0UmVzb3VyY2UgPSB7fTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rl
Rm9yRG9jdW1lbnRSZXNvdXJjZSA9IHt9OworICAgICAgICB0aGlzLl9zdHlsZXNTb3VyY2VNYXBw
aW5nLnJlc2V0KCk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHBvcHVsYXRlIHVu
dGlsIHRoZSBQcm9qZWN0V2lsbFJlc2V0IGV2ZW50IHdhcyBoYW5kbGVkIGJ5IGFsbCBsaXN0ZW5l
cnMuIEludHJvZHVjZSBQcm9qZWN0RGlkUmVzZXQgZXZlbnQgZm9yIHRoYXQgbWF0dGVyLgorICAg
ICAgICBzZXRUaW1lb3V0KHRoaXMuX3BvcHVsYXRlLmJpbmQodGhpcyksIDApOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNl
Q29kZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29k
ZS5qcwppbmRleCA3ZTFiNDRjZGFhNWJlMDlmMzBjYTBjNWI4YWM5YzFhYTJmYjEwNDYwLi5jMDUy
ZmViNzhlZTNkZjdmMzRkOGNiZTA5OTQwYWUwYjA1ZWIxNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCkBAIC0zMywzMiAr
MzMsMTMgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuT2JqZWN0fQotICogQHBhcmFtIHtzdHJpbmd9IGlkCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TY3JpcHR9IHNjcmlwdAotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291
cmNlCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVzdAotICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZ30gc291cmNlTWFwcGluZwogICovCi1X
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291cmNl
LCByZXF1ZXN0LCBzb3VyY2VNYXBwaW5nKQorV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUgPSBm
dW5jdGlvbihzY3JpcHQpCiB7Ci0gICAgdGhpcy5pZCA9IGlkOwogICAgIHRoaXMudXJsID0gc2Ny
aXB0LnNvdXJjZVVSTDsKICAgICB0aGlzLmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRl
bnRTY3JpcHQ7CiAgICAgdGhpcy5fc2NyaXB0cyA9IFtzY3JpcHRdOwotICAgIHRoaXMuX3Jlc291
cmNlID0gcmVzb3VyY2U7Ci0gICAgdGhpcy5fcGVuZGluZ1JlcXVlc3QgPSByZXF1ZXN0OwotICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmcgPSBzb3VyY2VNYXBwaW5nOwotCi0gICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlID0gbnVsbDsKLSAgICBpZiAodGhpcy5fcGVuZGluZ1JlcXVlc3QpCi0gICAgICAgIHRo
aXMuX3BlbmRpbmdSZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcsIHRoaXMuX2ZpbmlzaGVkTG9hZGluZywgdGhp
cyk7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVhdGVV
SVNvdXJjZUNvZGUoKTsKLX0KLQotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzID0g
ewotICAgIFVJU291cmNlQ29kZUNoYW5nZWQ6ICJ1cy1zb3VyY2UtY29kZS1jaGFuZ2VkIgogfQog
CiBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CkBAIC02OCw1NSArNDks
NDEgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIGFkZFNj
cmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNo
KHNjcmlwdCk7Ci0gICAgICAgIGlmICh0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGUpIHsKLSAg
ICAgICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGUgPSB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNv
ZGU7Ci0gICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVh
dGVVSVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2Vk
LCB7IHVpU291cmNlQ29kZTogdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlLCBvbGRVSVNvdXJj
ZUNvZGU6IG9sZFVJU291cmNlQ29kZSB9KTsKLSAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSByYXdM
b2NhdGlvbgotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKICAgICAg
Ki8KLSAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCisg
ICAgc2V0U291cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNlTWFwcGluZykKICAgICB7Ci0gICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGUgfHwgdGhpcy5fdGVtcG9y
YXJ5VUlTb3VyY2VDb2RlOwotICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkgewotICAgICAgICAg
ICAgdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2Rl
KCk7Ci0gICAgICAgICAgICB1aVNvdXJjZUNvZGUgPSB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNv
ZGU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlQ2hhbmdlZCwgeyB1aVNvdXJjZUNv
ZGU6IHVpU291cmNlQ29kZSB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgcmF3TG9jYXRpb24ubGluZU51bWJlciwg
cmF3TG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX3NjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9zY3JpcHRz
W2ldLnNldFNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZyk7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9CisgICAgICogQHJldHVy
biB7Ym9vbGVhbn0KICAgICAgKi8KLSAgICBfY3JlYXRlVUlTb3VyY2VDb2RlOiBmdW5jdGlvbigp
CisgICAgaXNTdGFuZGFsb25lU2NyaXB0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIg
aXNTdGFuZGFsb25lU2NyaXB0ID0gdGhpcy5fc2NyaXB0cy5sZW5ndGggPT09IDEgJiYgIXRoaXMu
X3NjcmlwdHNbMF0uaXNJbmxpbmVTY3JpcHQoKTsKLQotICAgICAgICB2YXIgY29udGVudFByb3Zp
ZGVyOwotICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UpCi0gICAgICAgICAgICBjb250ZW50UHJv
dmlkZXIgPSB0aGlzLl9yZXNvdXJjZTsKLSAgICAgICAgZWxzZSBpZiAoaXNTdGFuZGFsb25lU2Ny
aXB0KQotICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gdGhpcy5fc2NyaXB0c1swXTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyKHRoaXMuX3NjcmlwdHMpOworICAg
ICAgICByZXR1cm4gdGhpcy5fc2NyaXB0cy5sZW5ndGggPT09IDEgJiYgIXRoaXMuX3NjcmlwdHNb
MF0uaXNJbmxpbmVTY3JpcHQoKTsKKyAgICB9LAogCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodGhpcy51cmwsIHRoaXMuX3Jlc291
cmNlLCBjb250ZW50UHJvdmlkZXIsIHRoaXMuX3NvdXJjZU1hcHBpbmcsIGlzU3RhbmRhbG9uZVNj
cmlwdCk7Ci0gICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSB0aGlzLmlzQ29u
dGVudFNjcmlwdDsKLSAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQorICAgICAqLworICAgIGNv
bnRlbnRQcm92aWRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNTdGFu
ZGFsb25lU2NyaXB0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0c1swXTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQ
cm92aWRlcih0aGlzLl9zY3JpcHRzKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIK
ICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAgICAgICovCi0gICAg
dWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQorICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBpZiAodGhpcy51cmwpCiAg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9j
YXRpb25CeVVSTCh0aGlzLnVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKQEAgLTEyNCwy
MiArOTEsMTAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fG51bGx9CisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5TY3JpcHQ+fQogICAg
ICAqLwotICAgIHVpU291cmNlQ29kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX3VpU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0gICAg
fSwKLQotICAgIF9maW5pc2hlZExvYWRpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHNjcmlwdHM6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlRm9yVVJMKHRoaXMuX3BlbmRpbmdSZXF1ZXN0LnVybCk7Ci0gICAgICAgIGRlbGV0
ZSB0aGlzLl9wZW5kaW5nUmVxdWVzdDsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IHRo
aXMuX3VpU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0gICAgICAg
IGRlbGV0ZSB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuX3VpU291
cmNlQ29kZSA9IHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZSgpOwotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlT
b3VyY2VDb2RlQ2hhbmdlZCwgeyB1aVNvdXJjZUNvZGU6IHRoaXMuX3VpU291cmNlQ29kZSwgb2xk
VUlTb3VyY2VDb2RlOiBvbGRVSVNvdXJjZUNvZGUgfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9z
Y3JpcHRzOwogICAgIH0KIH0KLQotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFw
cGluZy5qcwppbmRleCBhMTYzODljNjBjZTc0OTgwNmYyMWRlY2JkOWNjZTFkOGY3MzZiMDNhLi43
NGZiNzI5MDk5ZTc3YWRkNjg1NTkwMGNkYWMyZDIyMzQ3ODljMGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFw
cGluZy5qcwpAQCAtNDUsNyArNDUsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFw
cGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5n
LCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZT59ICovCiAgICAgdGhpcy5fcmF3U291cmNlQ29k
ZUZvckRvY3VtZW50VVJMID0ge307CiAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNl
Q29kZSA9IG5ldyBNYXAoKTsKKyAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JSYXdT
b3VyY2VDb2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJhd1NvdXJj
ZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVz
ZXQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMu
X3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2UsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKQEAgLTU3LDcgKzYwLDEwIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOwogICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVs
TG9jYXRpb24uc2NyaXB0SWRdOwotICAgICAgICByZXR1cm4gcmF3U291cmNlQ29kZS5yYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9jYXRpb24pOworICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fdWlTb3VyY2VDb2RlRm9yUmF3U291cmNlQ29kZS5nZXQocmF3U291cmNl
Q29kZSkgfHwgIXRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUuZ2V0
KHJhd1NvdXJjZUNvZGUpKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291
cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUuZ2V0KHJhd1NvdXJjZUNvZGUpIHx8IHRoaXMuX3RlbXBv
cmFyeVVJU291cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUuZ2V0KHJhd1NvdXJjZUNvZGUpOworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgZGVi
dWdnZXJNb2RlbExvY2F0aW9uLmxpbmVOdW1iZXIsIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5jb2x1
bW5OdW1iZXIgfHwgMCk7CisgICAgICAgIAogICAgIH0sCiAKICAgICAvKioKQEAgLTY5LDcgKzc1
LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0
aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwotICAg
ICAgICByZXR1cm4gcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIGlmIChyYXdTb3VyY2VD
b2RlLnVybCkKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5j
cmVhdGVSYXdMb2NhdGlvbkJ5VVJMKHJhd1NvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3Jl
YXRlUmF3TG9jYXRpb24ocmF3U291cmNlQ29kZS5zY3JpcHRzKClbMF0sIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNzcsMTEzICs4NSwxNDMgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBudWxsOwotICAgICAgICB2YXIgcmVxdWVzdCA9IG51bGw7Ci0gICAgICAgIGlmICghc2Ny
aXB0LmlzQW5vbnltb3VzU2NyaXB0KCkpIHsKLSAgICAgICAgICAgIC8vIEZpcnN0IGxvb2t1cCB0
aGUgcmVzb3VyY2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4KLSAgICAgICAgICAgIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwot
ICAgICAgICAgICAgLy8gSWdub3JlIHJlc291cmNlIGluIGNhc2UgaXQgaGFzIG5vdCB5ZXQgZmlu
aXNoZWQgbG9hZGluZy4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS5yZXF1
ZXN0ICYmICFyZXNvdXJjZS5yZXF1ZXN0LmZpbmlzaGVkKQotICAgICAgICAgICAgICAgIHJlc291
cmNlID0gbnVsbDsKLSAgICAgICAgICAgIC8vIE9ubHkgYmluZCBpbmxpbmUgYW5kIHN0YW5kYWxv
bmUgc2NyaXB0cy4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiAhdGhpcy5fc2hvdWxkQmlu
ZFNjcmlwdFRvQ29udGVudFByb3ZpZGVyKHNjcmlwdCwgcmVzb3VyY2UpKQotICAgICAgICAgICAg
ICAgIHJlc291cmNlID0gbnVsbDsKLSAgICAgICAgICAgIGlmICghcmVzb3VyY2UpIHsKLSAgICAg
ICAgICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIG5vIHJlc291cmNlLCBsb29rdXAgaW4tZmxpZ2h0
IHJlcXVlc3RzLgotICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IubmV0d29y
a01hbmFnZXIuaW5mbGlnaHRSZXF1ZXN0Rm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAg
ICAgICAgICAgIC8vIE9ubHkgYmluZCBpbmxpbmUgYW5kIHN0YW5kYWxvbmUgc2NyaXB0cy4KLSAg
ICAgICAgICAgICAgICBpZiAocmVxdWVzdCAmJiAhdGhpcy5fc2hvdWxkQmluZFNjcmlwdFRvQ29u
dGVudFByb3ZpZGVyKHNjcmlwdCwgcmVxdWVzdCkpCi0gICAgICAgICAgICAgICAgICByZXF1ZXN0
ID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjb25zb2xlLmFzc2Vy
dCghcmVzb3VyY2UgfHwgIXJlcXVlc3QpOwotCi0gICAgICAgIHZhciBpc0lubGluZVNjcmlwdCA9
IHNjcmlwdC5pc0lubGluZVNjcmlwdCgpICYmIChyZXF1ZXN0IHx8IHJlc291cmNlKTsKLSAgICAg
ICAgLy8gSWYgZWl0aGVyIG9mIHRoZXNlIGV4aXN0cywgd2UgYmluZCBzY3JpcHQgdG8gdGhlIHJl
c291cmNlLgotICAgICAgICBpZiAoaXNJbmxpbmVTY3JpcHQpIHsKKyAgICAgICAgaWYgKHNjcmlw
dC5pc0lubGluZVNjcmlwdCgpKSB7CiAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRo
aXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTFtzY3JpcHQuc291cmNlVVJMXTsKICAgICAg
ICAgICAgIGlmIChyYXdTb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICAgICAgcmF3U291cmNlQ29k
ZS5hZGRTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgICAgICAgICB0aGlzLl9iaW5kU2NyaXB0VG9S
YXdTb3VyY2VDb2RlKHNjcmlwdCwgcmF3U291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgdGhp
cy5fYWRkU2NyaXB0VG9SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGUsIHNjcmlwdCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
dmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoc2NyaXB0
LnNjcmlwdElkLCBzY3JpcHQsIHJlc291cmNlLCByZXF1ZXN0LCB0aGlzKTsKLSAgICAgICAgdGhp
cy5fcmF3U291cmNlQ29kZXMucHVzaChyYXdTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fYmlu
ZFNjcmlwdFRvUmF3U291cmNlQ29kZShzY3JpcHQsIHJhd1NvdXJjZUNvZGUpOwotICAgICAgICBp
ZiAoaXNJbmxpbmVTY3JpcHQpCi0gICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yRG9j
dW1lbnRVUkxbc2NyaXB0LnNvdXJjZVVSTF0gPSByYXdTb3VyY2VDb2RlOworICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IHRoaXMuX2NyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0KTsKIAotICAg
ICAgICBpZiAocmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKSkKLSAgICAgICAgICAgIHRoaXMu
X3VpU291cmNlQ29kZUFkZGVkKHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VD
b2RlKCkpOwotICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHRoaXMuX2hhbmRs
ZVVJU291cmNlQ29kZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBpZiAoIXNjcmlwdC5pc0Fub255
bW91c1NjcmlwdCgpKSB7CisgICAgICAgICAgICAvLyBMb29rdXAgdGhlIHVpU291cmNlQ29kZSB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLgorICAgICAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7
CisgICAgICAgICAgICAvLyBPbmx5IGJpbmQgaW5saW5lIGFuZCBzdGFuZGFsb25lIHNjcmlwdHMu
CisgICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlICYmIHRoaXMuX3Nob3VsZEJpbmRTY3JpcHRU
b0NvbnRlbnRQcm92aWRlcihzY3JpcHQsIHVpU291cmNlQ29kZSkpCisgICAgICAgICAgICAgICAg
dGhpcy5fYWRkVUlTb3VyY2VDb2RlVG9SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGUsIHVpU291
cmNlQ29kZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0aGlzLl91aVNvdXJjZUNvZGVGb3JS
YXdTb3VyY2VDb2RlLmdldChyYXdTb3VyY2VDb2RlKSAmJiAhdGhpcy5fdGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlRm9yUmF3U291cmNlQ29kZS5nZXQocmF3U291cmNlQ29kZSkpCisgICAgICAgICAgICB0
aGlzLl9hZGRPclJlcGxhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGUocmF3U291cmNlQ29kZSk7CiAg
ICAgfSwKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2Ny
aXB0Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfSBjb250ZW50
UHJvdmlkZXIKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlfQogICAgICAqLwotICAgIF9zaG91bGRCaW5kU2NyaXB0VG9D
b250ZW50UHJvdmlkZXI6IGZ1bmN0aW9uKHNjcmlwdCwgY29udGVudFByb3ZpZGVyKQorICAgIF9j
cmVhdGVSYXdTb3VyY2VDb2RlOiBmdW5jdGlvbihzY3JpcHQpCiAgICAgeworICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZShzY3JpcHQpOwor
ICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rlcy5wdXNoKHJhd1NvdXJjZUNvZGUpOworICAgICAg
ICB0aGlzLl9iaW5kU2NyaXB0VG9SYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmF3U291cmNlQ29kZSk7
CiAgICAgICAgIGlmIChzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVy
biBjb250ZW50UHJvdmlkZXIuY29udGVudFR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNl
VHlwZXMuRG9jdW1lbnQ7Ci0gICAgICAgIHJldHVybiBjb250ZW50UHJvdmlkZXIuY29udGVudFR5
cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0OworICAgICAgICAgICAg
dGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50VVJMW3NjcmlwdC5zb3VyY2VVUkxdID0gcmF3
U291cmNlQ29kZTsKKyAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGU7CiAgICAgfSwKIAogICAg
IC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAogICAgICAqLwotICAgIF9oYW5kbGVV
SVNvdXJjZUNvZGVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfYWRkU2NyaXB0VG9SYXdT
b3VyY2VDb2RlOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCBzY3JpcHQpCiAgICAgewotICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGV9ICovIGV2ZW50LnRhcmdldDsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS51aVNvdXJjZUNvZGU7
Ci0gICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlOwotICAgICAgICBpZiAo
IW9sZFVJU291cmNlQ29kZSkKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkKHJh
d1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZVJlcGxhY2VkKHJhd1NvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSwg
dWlTb3VyY2VDb2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3VpU291cmNlQ29k
ZUZvclJhd1NvdXJjZUNvZGUuZ2V0KHJhd1NvdXJjZUNvZGUpIHx8ICF0aGlzLl90ZW1wb3JhcnlV
SVNvdXJjZUNvZGVGb3JSYXdTb3VyY2VDb2RlLmdldChyYXdTb3VyY2VDb2RlKSk7CisgICAgICAg
IHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgIHRoaXMuX2JpbmRTY3Jp
cHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHRo
aXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUuZ2V0KHJhd1NvdXJjZUNv
ZGUpKQorICAgICAgICAgICAgdGhpcy5fYWRkT3JSZXBsYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2Rl
KHJhd1NvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gICAgICogQHBhcmFuIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfQogICAgICAqLwotICAgIF91aVNvdXJjZUNvZGVBZGRlZDog
ZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKQorICAgIF9hZGRPclJlcGxhY2VU
ZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUpCiAgICAgewotICAg
ICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHZhciBvbGRVSVNvdXJjZUNvZGUgPSB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JSYXdT
b3VyY2VDb2RlLmdldChyYXdTb3VyY2VDb2RlKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZShyYXdTb3VyY2VDb2RlLnVybCwgbnVs
bCwgcmF3U291cmNlQ29kZS5jb250ZW50UHJvdmlkZXIoKSwgdGhpcywgcmF3U291cmNlQ29kZS5p
c1N0YW5kYWxvbmVTY3JpcHQoKSk7CisgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3Jp
cHQgPSByYXdTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdDsKKyAgICAgICAgdGhpcy5fdGVtcG9y
YXJ5VUlTb3VyY2VDb2RlRm9yUmF3U291cmNlQ29kZS5wdXQocmF3U291cmNlQ29kZSwgdWlTb3Vy
Y2VDb2RlKTsKKworICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUudXJsKQorICAgICAgICAgICAg
cmV0dXJuIHVpU291cmNlQ29kZTsKKwogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlT
b3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUpOwotICAgICAgICB0aGlz
Ll93b3Jrc3BhY2UucHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAg
ICAgICByYXdTb3VyY2VDb2RlLnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAgIGlmIChv
bGRVSVNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNv
dXJjZUNvZGUucmVtb3ZlKG9sZFVJU291cmNlQ29kZSk7CisgICAgICAgICAgICB0aGlzLl93b3Jr
c3BhY2UucHJvamVjdCgpLnJlcGxhY2VVSVNvdXJjZUNvZGUob2xkVUlTb3VyY2VDb2RlLCB1aVNv
dXJjZUNvZGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5w
cm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisKKyAgICAgICAgcmV0dXJu
IHVpU291cmNlQ29kZTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gb2xkVUlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKi8KLSAgICBfdWlTb3Vy
Y2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSwg
dWlTb3VyY2VDb2RlKQorICAgIF9hZGRVSVNvdXJjZUNvZGVUb1Jhd1NvdXJjZUNvZGU6IGZ1bmN0
aW9uKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGlmICghdWlT
b3VyY2VDb2RlLnVybCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fcmF3U291
cmNlQ29kZUZvclVJU291cmNlQ29kZS5yZW1vdmUob2xkVUlTb3VyY2VDb2RlKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3VpU291cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUuZ2V0KHJh
d1NvdXJjZUNvZGUpKTsKKworICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fdGVt
cG9yYXJ5VUlTb3VyY2VDb2RlRm9yUmF3U291cmNlQ29kZS5nZXQocmF3U291cmNlQ29kZSk7Cisg
ICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSByYXdTb3VyY2VDb2RlLmlzQ29u
dGVudFNjcmlwdDsKKyAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJjZU1hcHBpbmcodGhpcyk7
CisgICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclJhd1NvdXJjZUNvZGUucmVt
b3ZlKHJhd1NvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JSYXdTb3Vy
Y2VDb2RlLnB1dChyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUpOworCiAgICAgICAgIHRoaXMu
X3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgcmF3U291cmNl
Q29kZSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKKyAg
ICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkgeworICAgICAgICAgICAgdGhpcy5fcmF3U291cmNl
Q29kZUZvclVJU291cmNlQ29kZS5yZW1vdmUob2xkVUlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAg
IHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkucmVwbGFjZVVJU291cmNlQ29kZShvbGRVSVNvdXJj
ZUNvZGUsIHVpU291cmNlQ29kZSk7CisgICAgICAgIH0KKyAgICB9LAogCi0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmF3U291cmNlQ29kZS5fc2NyaXB0cy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUuX3NjcmlwdHNbaV0uc2V0U291cmNlTWFwcGluZyh0aGlzKTsK
LSAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5yZXBsYWNlVUlTb3VyY2VDb2RlKG9s
ZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKKyAgICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dv
cmtzcGFjZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOwor
ICAgICAgICBpZiAodGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5nZXQodWlTb3Vy
Y2VDb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yQ29udGVudFByb3ZpZGVyKHVpU291cmNlQ29kZSk7Cisg
ICAgICAgIGlmICghcmF3U291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dmFyIHNjcmlwdCA9IHJhd1NvdXJjZUNvZGUuc2NyaXB0cygpWzBdOworICAgICAgICBpZiAoIXNj
cmlwdC5pc0Fub255bW91c1NjcmlwdCgpKQorICAgICAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VD
b2RlVG9SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7CiAgICAgfSwK
IAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJh
d1NvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVp
U291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0g
Y29udGVudFByb3ZpZGVyCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGV9CiAgICAgICovCi0gICAgX3VpU291cmNlQ29kZVJlbW92ZWQ6IGZ1bmN0aW9uKHJhd1NvdXJj
ZUNvZGUsIHVpU291cmNlQ29kZSkKKyAgICBfcmF3U291cmNlQ29kZUZvckNvbnRlbnRQcm92aWRl
cjogZnVuY3Rpb24oY29udGVudFByb3ZpZGVyKQogICAgIHsKLSAgICAgICAgaWYgKCF1aVNvdXJj
ZUNvZGUudXJsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9yYXdTb3VyY2VD
b2RlRm9yVUlTb3VyY2VDb2RlLnJlbW92ZSh1aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIgcmF3
U291cmNlQ29kZTsKKyAgICAgICAgdmFyIHVybCA9IGNvbnRlbnRQcm92aWRlci5jb250ZW50VVJM
KCk7CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
IGlmIChjb250ZW50UHJvdmlkZXIuY29udGVudFR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJlc291
cmNlVHlwZXMuRG9jdW1lbnQpCisgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3
U291cmNlQ29kZUZvckRvY3VtZW50VVJMW3VybF07CisgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRQ
cm92aWRlci5jb250ZW50VHlwZSgpID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3Jp
cHQpCisgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclVS
TFt1cmxdOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
cmV0dXJuIHJhd1NvdXJjZUNvZGU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
Q29udGVudFByb3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIF9zaG91bGRCaW5kU2NyaXB0VG9Db250ZW50UHJvdmlkZXI6IGZ1bmN0
aW9uKHNjcmlwdCwgY29udGVudFByb3ZpZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHNjcmlwdC5p
c0lubGluZVNjcmlwdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQcm92aWRlci5jb250
ZW50VHlwZSgpID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDsKKyAgICAg
ICAgcmV0dXJuIGNvbnRlbnRQcm92aWRlci5jb250ZW50VHlwZSgpID09PSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUeXBlcy5TY3JpcHQ7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk5LDE1ICsyMzcs
MTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAK
ICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fcmF3U291cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZXNbaV07Ci0gICAgICAgICAgICB0aGlz
Ll91aVNvdXJjZUNvZGVSZW1vdmVkKHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlTb3Vy
Y2VDb2RlKCkpOwotICAgICAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVBbGxMaXN0ZW5lcnMo
KTsKLSAgICAgICAgfQogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlcyA9IFtdOwogICAgICAg
ICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKICAgICAgICAgdGhpcy5fcmF3
U291cmNlQ29kZUZvclVSTCA9IHt9OwogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yRG9j
dW1lbnRVUkwgPSB7fTsKICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29k
ZS5jbGVhcigpOwotICAgIH0KKyAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlRm9y
UmF3U291cmNlQ29kZS5jbGVhcigpOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JSYXdT
b3VyY2VDb2RlLmNsZWFyKCk7CisgICAgfSwKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVy
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDYyNGFjMzZhYzE2N2IxZjQ5NTBm
NWEwYjdkNWNkNWE2MzQyZjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNl
Ci0gKi8KLVdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlciA9IGZ1bmN0aW9u
KHdvcmtzcGFjZSkKLXsKLSAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7Ci0gICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3Vy
Y2VBZGRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQs
IHRoaXMpOwotICAgIHRoaXMuX3N0eWxlc1NvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlN0eWxlc1NvdXJjZU1hcHBpbmcoKTsKLX0KLQotV2ViSW5zcGVjdG9yLlN0eWxlc1VJU291cmNl
Q29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlRnJhbWUoZnJhbWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgcG9wdWxhdGVGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKLQotICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IGZyYW1lLnJlc291cmNl
cygpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VBZGRlZCh7ZGF0YTpyZXNvdXJjZXNb
aV19KTsKLSAgICAgICAgfQotCi0gICAgICAgIHBvcHVsYXRlRnJhbWUuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Ci0gICAgICovCi0gICAg
X3Jlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIGV2ZW50LmRhdGE7Ci0g
ICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5T
dHlsZXNoZWV0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHRoaXMu
X3N0eWxlc1NvdXJjZU1hcHBpbmcuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0gICAg
ICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7Ci0gICAgfSwKLQotICAgIF9yZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fc3R5bGVzU291cmNlTWFwcGluZy5yZXNldCgpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG5vdCBwb3B1bGF0ZSB1bnRpbCB0aGUgUHJvamVjdFdpbGxSZXNldCBldmVudCB3YXMgaGFu
ZGxlZCBieSBhbGwgbGlzdGVuZXJzLiBJbnRyb2R1Y2UgUHJvamVjdERpZFJlc2V0IGV2ZW50IGZv
ciB0aGF0IG1hdHRlci4KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLl9wb3B1bGF0ZS5iaW5kKHRo
aXMpLCAwKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVUlTb3VyY2VDb2RlLmpzCmluZGV4IDE3YWFhYTBiMTkxMjdiZWI4M2Q2NTNjYzBlMGZk
Y2UzNDRiZDdlOWEuLjQ0ZmY5YzQ5MzNmMmU4OTQ1OGE3NTI5ZTMyOTQxODhmZGFhOTJiMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2Rl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2Rl
LmpzCkBAIC0zODQsNiArMzg0LDggQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fc291cmNl
TWFwcGluZykKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB2YXIgbG9jYXRpb24g
PSB0aGlzLl9mb3JtYXR0ZXJNYXBwaW5nLmZvcm1hdHRlZFRvT3JpZ2luYWwobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZU1hcHBpbmcudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24odGhpcywgbG9jYXRpb25bMF0sIGxvY2F0aW9uWzFdKTsKICAgICB9
LApAQCAtNTM3LDYgKzUzOSwxNCBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKKyAgICAgKi8K
KyAgICBzZXRTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihzb3VyY2VNYXBwaW5nKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fc291cmNlTWFwcGluZyA9IHNvdXJjZU1hcHBpbmc7CisgICAgfSwKKwogICAg
IGZvcm1hdHRlZENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGYxOGMzZGY2ZDY4ZTI4
MTMwNzAzYzhlZjNiYjA1MDM2MDRlZmM2MjIuLmQ3NTRiN2IzYWMyNDYzYmU1MTNjZTZlNGFkMTQ0
NDc5MmFiMGVkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmMKQEAgLTEwOSw2ICsxMDksNyBAQAogICAgIDxmaWxlPk5hdmlnYXRvclZpZXcuanM8
L2ZpbGU+CiAgICAgPGZpbGU+TmV0d29ya0l0ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPk5l
dHdvcmtMb2cuanM8L2ZpbGU+CisgICAgPGZpbGU+TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVy
LmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdvcmtNYW5hZ2VyLmpzPC9maWxlPgogICAgIDxmaWxl
Pk5ldHdvcmtQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5OZXR3b3JrUGFuZWxEZXNjcmlwdG9y
LmpzPC9maWxlPgpAQCAtMTgxLDcgKzE4Miw2IEBACiAgICAgPGZpbGU+U3R5bGVTaGVldE91dGxp
bmVEaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3R5bGVTb3VyY2UuanM8L2ZpbGU+CiAgICAg
PGZpbGU+U3R5bGVzU291cmNlTWFwcGluZy5qczwvZmlsZT4KLSAgICA8ZmlsZT5TdHlsZXNVSVNv
dXJjZUNvZGVQcm92aWRlci5qczwvZmlsZT4KICAgICA8ZmlsZT5TdHlsZXNTaWRlYmFyUGFuZS5q
czwvZmlsZT4KICAgICA8ZmlsZT5UYWJiZWRFZGl0b3JDb250YWluZXIuanM8L2ZpbGU+CiAgICAg
PGZpbGU+VGFiYmVkUGFuZS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDIyYzViMzE0ZGRhNzIxODE4ZmFmMzE2
ZDExZDY4NzJkYjA5MzhiMDguLjZiODI5N2UyOTVmYjdkMDM5ZTQ4MWEzMTY1MDc2MzE4ZDcxYWUw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbApAQCAtMTYyLDggKzE2Miw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0U25pcHBldE1vZGVsLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9ncmVzc0Jhci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3R5bGVzU291
cmNlTWFwcGluZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlN0eWxlU291cmNlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkVsZW1lbnRzUGFuZWxEZXNjcmlwdG9yLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUGFuZWxEZXNjcmlwdG9y
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJT
Y3JpcHRzUGFuZWxEZXNjcmlwdG9yLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggZjIzNWFmNjc5NDcyY2EyMGVm
ZTYyZjQ3OTkyN2VlYzE3MDcyOTBjYi4uZTNkNDg1ZjZkYjk0NzU1OWJkMTMyYjEwYzk4OWUyNThh
ZDE0YjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKQEAgLTUyMyw3ICs1MjMsNyBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdp
dGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnNjcmlwdFNuaXBwZXRNb2Rl
bCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsKHRoaXMud29ya3NwYWNlKTsK
ICAgICBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh0aGlzLndvcmtzcGFj
ZSk7Ci0gICAgbmV3IFdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlcih0aGlz
LndvcmtzcGFjZSk7CisgICAgbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJv
dmlkZXIodGhpcy53b3Jrc3BhY2UpOwogICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNT
ZXR0aW5ncy5zYXNzLmlzRW5hYmxlZCgpKQogICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNBU1NT
b3VyY2VNYXBwaW5nKHRoaXMud29ya3NwYWNlKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFmNmE2YTY5Mzk4ZGIwMTIz
YmVhNDc1ZTVkYWVjYmY4MjFjZGRlNTIuLmU4N2EzNmI4M2M5MmM1ZDYwYmQ0ZjQ4N2MzZDlhN2Mw
ZTQwYTcyN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wOC0yOSAgVnNldm9sb2QgVmxh
c292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDcmVh
dGUgSmF2YVNjcmlwdFNvdXJjZXMgYmFzZWQgb24gbmV0d29yayByZXNvdXJjZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmF3LXNvdXJj
ZS1jb2RlLmh0bWwgdGVzdCBhcyBSYXdTb3VyY2VDb2RlIGlzIG5vdGhpbmcgYnV0IGEgc2ltcGxl
IHNjcmlwdHMgY29udGFpbmVyIG5vdy4KKyAgICAgICAgQWRkZWQgcmVzb3VyY2Utc2NyaXB0LW1h
cHBpbmcuaHRtbCB0byB0ZXN0IHNjcmlwdCA8LT4gdWlTb3VyY2VDb2RlIGJpbmRpbmcgYmVoYXZp
b3IuCisgICAgICAgIEFkZGVkIG5ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVyLmh0bWwgdG8g
dGVzdCB1aVNvdXJjZUNvZGUgY3JlYXRpb24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanM6IEFk
ZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3QuY3Jl
YXRlV29ya3NwYWNlKToKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50LnVpU291cmNl
Q29kZVJlcGxhY2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50KToKKyAgICAg
ICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3Bh
Y2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50LnVpU291cmNlQ29kZUFkZGVkKToKKyAgICAgICAgKGlu
aXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNv
dXJjZUNvZGVBZGRlZEV2ZW50KToKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5J
bnNwZWN0b3JUZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFjZSk6CisgICAgICAgIChp
bml0aWFsaXplX1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29k
ZVByb3ZpZGVyRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVz
dC5JbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUuZGlkUmVxdWVzdENvbnRlbnQpOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3QuZHVtcFVJU291cmNl
Q29kZSk6CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFjZVRlc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNl
Y29kZS1wcm92aWRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
cmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBwaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUt
Y291bnQuaHRtbDoKKwogMjAxMi0wOC0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjk3Mi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRt
bAppbmRleCBkNjgzN2M2YmMyMzA3ZDkzOTViNTMwYzU4NTBhM2U3OTUzNGRiM2FiLi5lN2QzOWI1
OTMxNjFlYzk3MDgwNDEyNmJkM2ExY2JiNjRmYzZhMWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1j
b250ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCkBAIC0xNCw3ICsxNCw3IEBA
IGZ1bmN0aW9uIGxvYWRTdHlsZXNoZWV0KCkKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIEluc3Bl
Y3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDIsIHRydWUpOwotICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJv
dG90eXBlLCAiX3Jlc291cmNlQWRkZWQiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUs
ICJfcmVzb3VyY2VBZGRlZCIsIHRydWUpOwogICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImxvYWRTdHlsZXNoZWV0KCkiKTsKIAogICAgIHZhciByZXNvdXJjZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODRmNjIxODlkYWI1MTllMTg5NTFhMmY3MzkyMGU0Y2I2MzcxMmM5OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0Lmpz
CkBAIC0wLDAgKzEsNjggQEAKK3ZhciBpbml0aWFsaXplX1dvcmtzcGFjZVRlc3QgPSBmdW5jdGlv
bigpIHsKKworSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlOworSW5zcGVjdG9yVGVzdC5jcmVh
dGVXb3Jrc3BhY2UgPSBmdW5jdGlvbigpCit7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3Nw
YWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRl
c3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJv
dmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlT
b3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOworICAgIEluc3BlY3RvclRlc3QudGVzdFdv
cmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRl
ci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNv
dXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5VSVNvdXJjZUNvZGVSZW1vdmVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3Vy
Y2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOworfQorCitJbnNwZWN0b3JUZXN0LndhaXRGb3JX
b3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7
CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNl
ZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVy
KTsKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2Vk
LCB1aVNvdXJjZUNvZGVSZXBsYWNlZCk7CisKKyAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVSZXBs
YWNlZChldmVudCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVu
dHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIHVpU291cmNlQ29kZVJlcGxhY2VkKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgSW5zcGVj
dG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKKyAgICAg
ICAgY2FsbGJhY2soZXZlbnQuZGF0YS51aVNvdXJjZUNvZGUsIGV2ZW50LmRhdGEub2xkVUlTb3Vy
Y2VDb2RlKTsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291
cmNlQ29kZUFkZGVkRXZlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JU
ZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCBJbnNwZWN0b3JUZXN0Ll9k
ZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOworICAgIEluc3BlY3RvclRl
c3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29kZUFkZGVkKTsK
KworICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdWlTb3Vy
Y2VDb2RlQWRkZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291
cmNlQ29kZUFkZGVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJF
dmVudEhhbmRsZXIpOworICAgICAgICBjYWxsYmFjayhldmVudC5kYXRhKTsKKyAgICB9Cit9CisK
K0luc3BlY3RvclRlc3QuYWRkTW9ja1VJU291cmNlQ29kZVRvV29ya3NwYWNlID0gZnVuY3Rpb24o
dXJsLCB0eXBlLCBjb250ZW50KQoreworICAgIHZhciBpc0RvY3VtZW50ID0gdHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7CisgICAgdmFyIG1vY2tDb250ZW50UHJv
dmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcih0eXBlLCBjb250
ZW50KTsKKyAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
U291cmNlKHVybCwgbnVsbCwgbW9ja0NvbnRlbnRQcm92aWRlciwgbnVsbCwgIWlzRG9jdW1lbnQp
OworICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7Cit9CisKK0luc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNv
ZGVQcm92aWRlckV2ZW50SGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRocm93IG5l
dyBFcnJvcigiVW5leHBlY3RlZCBVSVNvdXJjZUNvZGVQcm92aWRlciBldmVudDogIiArIGV2ZW50
LnR5cGUgKyAiLiIpOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUgPSBmdW5j
dGlvbih1aVNvdXJjZUNvZGUsIGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJVSVNvdXJjZUNvZGU6ICIgKyB1aVNvdXJjZUNvZGUudXJsKTsKKyAgICBpZiAodWlTb3Vy
Y2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UpIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogIiAr
IHVpU291cmNlQ29kZS5faXNFZGl0YWJsZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJjZUNvZGUuaXND
b250ZW50U2NyaXB0KTsKKyAgICB9CisgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRp
ZFJlcXVlc3RDb250ZW50KTsKKworICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KGNvbnRl
bnQsIGNvbnRlbnRFbmNvZGVkLCBtaW1lVHlwZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJNaW1lIHR5cGU6ICIgKyBtaW1lVHlwZSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgY29udGVudDogIiArIGNvbnRlbnQpOworICAg
ICAgICBjYWxsYmFjaygpOworICAgIH0KK30KKworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNv
ZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkxZjIxN2QyZWViMzZlMjdm
NTdiOTQ5ODM5OGJhMWYwZjdiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNTAgQEAKK1Rlc3RzIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlciBjbGFz
cy4KKworCitSdW5uaW5nOiB0ZXN0RG9jdW1lbnRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdAor
Q3JlYXRpbmcgcmVxdWVzdC4KK0ZpbmlzaGluZyByZXF1ZXN0LgorVUlTb3VyY2VDb2RlOiBodHRw
Oi8vZmFrZS51cmwvMgorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQorVUlTb3VyY2VD
b2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2h0bWwKK1VJU291
cmNlQ29kZSBjb250ZW50OiA8ZG9jdW1lbnQgcmVxdWVzdCBjb250ZW50PgorCitSdW5uaW5nOiB0
ZXN0RG9jdW1lbnRSZXNvdXJjZQorQ3JlYXRpbmcgcmVzb3VyY2UuCitVSVNvdXJjZUNvZGU6IGh0
dHA6Ly9mYWtlLnVybC8zCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IGZhbHNlCitVSVNvdXJj
ZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6IHRleHQvaHRtbAorVUlT
b3VyY2VDb2RlIGNvbnRlbnQ6IDxkb2N1bWVudCByZXNvdXJjZSBjb250ZW50PgorCitSdW5uaW5n
OiB0ZXN0U2NyaXB0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3QKK0NyZWF0aW5nIHJlcXVlc3Qu
CitGaW5pc2hpbmcgcmVxdWVzdC4KK1VJU291cmNlQ29kZTogaHR0cDovL2Zha2UudXJsLzQKK1VJ
U291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2Ny
aXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKK1VJU291cmNlQ29kZSBjb250
ZW50OiA8c2NyaXB0IHJlcXVlc3QgY29udGVudD4KKworUnVubmluZzogdGVzdFNjcmlwdFJlc291
cmNlCitDcmVhdGluZyByZXNvdXJjZS4KK1VJU291cmNlQ29kZTogaHR0cDovL2Zha2UudXJsLzUK
K1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQg
c2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKK1VJU291cmNlQ29kZSBj
b250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5pbmc6IHRlc3RTdHlsZXNo
ZWV0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3QKK0NyZWF0aW5nIHJlcXVlc3QuCitVSVNvdXJj
ZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC82CitGaW5pc2hpbmcgcmVxdWVzdC4KK01pbWUgdHlwZTog
dGV4dC9jc3MKK1VJU291cmNlQ29kZSBjb250ZW50OiA8c3R5bGVzaGVldCByZXF1ZXN0IGNvbnRl
bnQ+CisKK1J1bm5pbmc6IHRlc3RTdHlsZXNoZWV0UmVzb3VyY2UKK0NyZWF0aW5nIHJlc291cmNl
LgorVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvNworTWltZSB0eXBlOiB0ZXh0L2Nzcwor
VUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxzdHlsZXNoZWV0IHJlc291cmNlIGNvbnRlbnQ+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNl
Y29kZS1wcm92aWRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdv
cmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThkZTI0M2JiMzYyNjY2
NDk0ZmI3OTAxNzU0MDYyYTM0YmU4NTdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci5odG1sCkBA
IC0wLDAgKzEsMTczIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIG1vY2tD
b250ZW50c01hcCA9IHt9OworICAgIHZhciBsYXN0UmVzb3VjZUlkID0gMTsKKworICAgIE5ldHdv
cmtBZ2VudC5nZXRSZXNwb25zZUJvZHkgPSBmdW5jdGlvbihyZXF1ZXN0SWQsIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBtb2NrQ29udGVudHNNYXBbcmVxdWVz
dElkXSwgZmFsc2UpOworICAgIH0KKworICAgIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZUNvbnRlbnQg
PSBmdW5jdGlvbihmcmFtZUlkLCB1cmwsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY2FsbGJh
Y2sodW5kZWZpbmVkLCBtb2NrQ29udGVudHNNYXBbdXJsXSwgZmFsc2UpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCB3aXRoUGVuZGluZ1JlcXVlc3QsIGNv
bnRlbnQpCisgICAgeworICAgICAgICB2YXIgZG9jdW1lbnRVUkwgPSAiaHR0cDovL2Zha2UudXJs
IjsKKyAgICAgICAgdmFyIHJlc291cmNlSWQgPSArK2xhc3RSZXNvdWNlSWQgKyAiIjsKKyAgICAg
ICAgdmFyIHVybCA9IGRvY3VtZW50VVJMICsgIi8iICsgcmVzb3VyY2VJZDsKKyAgICAgICAgdmFy
IGZyYW1lSWQgPSAiZnJhbWUtaWQiOworICAgICAgICB2YXIgbG9hZGVySWQgPSAibG9hZGVyLWlk
IjsKKyAgICAgICAgdmFyIG1pbWVUeXBlOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDoKKyAgICAgICAgICAg
IG1pbWVUeXBlID0gInRleHQvaHRtbCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQ6CisgICAgICAgICAgICBtaW1lVHlw
ZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldDoKKyAgICAgICAgICAgIG1pbWVU
eXBlID0gInRleHQvY3NzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHdpdGhQZW5kaW5nUmVxdWVzdCkgeworICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBu
ZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0KHJlc291cmNlSWQsIHVybCwgImh0dHA6Ly9m
YWtlLnVybCIsIGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAgICAgIHJlcXVlc3QudHlwZSA9
IHR5cGU7CisgICAgICAgICAgICByZXF1ZXN0Lm1pbWVUeXBlID0gbWltZVR5cGU7CisgICAgICAg
ICAgICBtb2NrQ29udGVudHNNYXBbcmVzb3VyY2VJZF0gPSBjb250ZW50OworICAgICAgICB9Cisg
ICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UocmVxdWVzdCwg
dXJsLCBkb2N1bWVudFVSTCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIG1pbWVUeXBlKTsKKyAg
ICAgICAgbW9ja0NvbnRlbnRzTWFwW3VybF0gPSBjb250ZW50OworICAgICAgICBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUcmVlTW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQsIHJlc291cmNlKTsK
KworICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNo
UmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0LmZpbmlz
aGVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdC5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcs
IHJlc291cmNlLnJlcXVlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNyZWF0ZU5ldHdvcmtV
SVNvdXJjZUNvZGVQcm92aWRlcigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0
ZVdvcmtzcGFjZSgpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLk9iamVjdCgpOworICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIo
SW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlKTsgCisgICAgICAgIHJldHVybiBuZXR3b3JrVUlT
b3VyY2VDb2RlUHJvdmlkZXI7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3Vp
dGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJjZVdpdGhQZW5kaW5nUmVx
dWVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOworICAg
ICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLkRvY3VtZW50LCB0cnVlLCAiPGRvY3VtZW50IHJlcXVlc3QgY29udGVudD4i
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VD
b2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVlc3QuIik7CisgICAgICAgICAgICBmaW5pc2hS
ZXNvdXJjZShyZXNvdXJjZSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJjZShu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3Zp
ZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2UuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVp
U291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291
cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCwgZmFsc2UsICI8ZG9j
dW1lbnQgcmVzb3VyY2UgY29udGVudD4iKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3Vy
Y2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTY3JpcHRSZXNv
dXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
bmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGlu
ZyByZXF1ZXN0LiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VN
b2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgdHJ1ZSwgIjxzY3JpcHQgcmVx
dWVzdCBjb250ZW50PiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaW5pc2hpbmcgcmVxdWVzdC4iKTsKKyAgICAg
ICAgICAgIGZpbmlzaFJlc291cmNlKHJlc291cmNlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24g
dWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQp
OworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTY3Jp
cHRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV0d29ya1VJU291
cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2UuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVB
ZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsIGZh
bHNlLCAiPHNjcmlwdCByZXNvdXJjZSBjb250ZW50PiIpOworCisgICAgICAgICAgICBmdW5jdGlv
biB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgbmV4
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFN0
eWxlc2hlZXRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgZW5kVGVzdENhbGxzTGVmdCA9IDI7CisgICAgICAgICAgICB2YXIgbmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVy
KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNv
ZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOworICAgICAgICAgICAgdmFyIHJlc291
cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxl
c2hlZXQsIHRydWUsICI8c3R5bGVzaGVldCByZXF1ZXN0IGNvbnRlbnQ+Iik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVlc3QuIik7CisgICAgICAg
ICAgICBmaW5pc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNv
ZGUodWlTb3VyY2VDb2RlLCBlbmRUZXN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKC0t
ZW5kVGVzdENhbGxzTGVmdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiB0ZXN0U3R5bGVzaGVldFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBuZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgPSBjcmVhdGVOZXR3b3JrVUlTb3VyY2VD
b2RlUHJvdmlkZXIoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVh
dGluZyByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtz
cGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOworICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLlN0eWxlc2hlZXQsIGZhbHNlLCAiPHN0eWxlc2hlZXQgcmVzb3VyY2UgY29udGVudD4i
KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgIF0pOworfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+VGVzdHMgTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyIGNsYXNzLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9y
YXctc291cmNlLWNvZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwNzE4MDZhYmViMTUxOTY2MzYyNjg4ZjVlMGJkNjk2MDI0YWZiYWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi1UZXN0cyBSYXdTb3VyY2VDb2RlIGNsYXNzLgotCi0KLVJ1bm5pbmc6
IHRlc3RTY3JpcHRXaXRob3V0UmVzb3VyY2UKLVVJU291cmNlQ29kZTogZm9vLmpzCi1VSVNvdXJj
ZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IHRydWUKLU1pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0
Ci1TY3JpcHQgc291cmNlOiA8c2NyaXB0IHNvdXJjZT4KLQotUnVubmluZzogdGVzdEhUTUxXaXRo
UGVuZGluZ1Jlc291cmNlCi1BZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3Qu
Ci1VSVNvdXJjZUNvZGU6IGluZGV4Lmh0bWwKLVVJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlw
dDogZmFsc2UKLU1pbWUgdHlwZTogdGV4dC9odG1sCi1TY3JpcHQgc291cmNlOiAgIDxzY3JpcHQ+
PHNjcmlwdCBzb3VyY2UgMT48L3NjcmlwdD4KLUFkZGluZyBzZWNvbmQgc2NyaXB0IGZvciBwZW5k
aW5nIHJlcXVlc3QuCi1VSVNvdXJjZUNvZGU6IGluZGV4Lmh0bWwKLVVJU291cmNlQ29kZSBpcyBj
b250ZW50IHNjcmlwdDogZmFsc2UKLU1pbWUgdHlwZTogdGV4dC9odG1sCi1TY3JpcHQgc291cmNl
OiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48L3NjcmlwdD4gPHNjcmlwdD48c2NyaXB0IHNv
dXJjZSAyPjwvc2NyaXB0PgotRmluaXNoaW5nIHJlcXVlc3QuCi1VSVNvdXJjZUNvZGU6IGluZGV4
Lmh0bWwKLVVJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKLU1pbWUgdHlwZTog
dGV4dC9odG1sCi1TY3JpcHQgc291cmNlOiA8cmVzb3VyY2UgY29udGVudD4KLQotUnVubmluZzog
dGVzdEhUTUxXaXRoRmluaXNoZWRSZXNvdXJjZQotVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCi1V
SVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCi1NaW1lIHR5cGU6IHRleHQvaHRt
bAotU2NyaXB0IHNvdXJjZTogPHJlc291cmNlIGNvbnRlbnQ+Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDUzMmI4ZTZkMWI3OWE4MDU3NzM1NWNlNjAxMmMzY2U5MmNmOWFk
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwyMjQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBtb2NrQ29udGVu
dHNNYXAgPSB7fTsKLSAgICB2YXIgbGFzdFJlcXVlc3RJZCA9IDE7Ci0KLSAgICBOZXR3b3JrQWdl
bnQuZ2V0UmVzcG9uc2VCb2R5ID0gZnVuY3Rpb24ocmVxdWVzdElkLCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgbW9ja0NvbnRlbnRzTWFwW3JlcXVlc3RJZF0s
IGZhbHNlKTsKLSAgICB9Ci0KLSAgICBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VDb250ZW50ID0gZnVu
Y3Rpb24oZnJhbWVJZCwgdXJsLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKHVu
ZGVmaW5lZCwgbW9ja0NvbnRlbnRzTWFwW3VybF0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBjcmVhdGVSZXF1ZXN0TW9jayh0eXBlLCBmaW5pc2hlZCwgY29udGVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciByZXF1ZXN0SWQgPSArK2xhc3RSZXF1ZXN0SWQgKyAiIjsKLSAgICAgICAgdmFy
IHVybCA9ICJodHRwOi8vZmFrZS51cmwvIiArIHJlcXVlc3RJZDsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLl9hZGRGcmFtZShuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUZyYW1lKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbCwgbnVsbCwge2lkOiAiZnJh
bWUtaWQifSkpOwotICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3QocmVxdWVzdElkLCB1cmwsICJodHRwOi8vZmFrZS51cmwiLCAiZnJhbWUtaWQiLCAi
bG9hZGVyLWlkIik7Ci0gICAgICAgIHJlcXVlc3QudHlwZSA9IHR5cGUgPT09ICJkb2N1bWVudCIg
PyBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCA6IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLlNjcmlwdDsKLSAgICAgICAgcmVxdWVzdC5taW1lVHlwZSA9IHR5cGUgPT09ICJk
b2N1bWVudCIgPyAidGV4dC9odG1sIiA6ICJ0ZXh0L2phdmFzY3JpcHQiOwotCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5fZGlzcGF0Y2hlci5fc3RhcnROZXR3b3JrUmVxdWVz
dChyZXF1ZXN0KTsKLSAgICAgICAgaWYgKGZpbmlzaGVkKQotICAgICAgICAgICAgZmluaXNoUmVx
dWVzdChyZXF1ZXN0KTsKLQotICAgICAgICBtb2NrQ29udGVudHNNYXBbcmVxdWVzdElkXSA9IGNv
bnRlbnQ7Ci0gICAgICAgIG1vY2tDb250ZW50c01hcFt1cmxdID0gY29udGVudDsKLSAgICAgICAg
cmV0dXJuIHJlcXVlc3Q7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoUmVxdWVzdChyZXF1
ZXN0KSB7IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5fZGlzcGF0Y2hlci5fdXBkYXRlTmV0
d29ya1JlcXVlc3QocmVxdWVzdCk7IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5fZGlzcGF0
Y2hlci5fZmluaXNoTmV0d29ya1JlcXVlc3QocmVxdWVzdCk7IH0KLSAgICBmdW5jdGlvbiBjcmVh
dGVQZW5kaW5nUmVxdWVzdE1vY2sodHlwZSwgY29udGVudCkgeyByZXR1cm4gY3JlYXRlUmVxdWVz
dE1vY2sodHlwZSwgZmFsc2UsIGNvbnRlbnQpOyB9Ci0gICAgZnVuY3Rpb24gY3JlYXRlRmluaXNo
ZWRSZXF1ZXN0TW9jayh0eXBlLCBjb250ZW50KSB7IHJldHVybiBjcmVhdGVSZXF1ZXN0TW9jayh0
eXBlLCB0cnVlLCBjb250ZW50KTsgfQotCi0gICAgZnVuY3Rpb24gY3JlYXRlU2NyaXB0Rm9ybWF0
dGVyTW9jaygpCi0gICAgewotICAgICAgICB2YXIgbWFwcGluZyA9IHsKLSAgICAgICAgICAgIG9y
aWdpbmFsVG9Gb3JtYXR0ZWQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgeyBy
ZXR1cm4gW2xpbmVOdW1iZXIgKiAyLCBjb2x1bW5OdW1iZXIgKiAyXTsgfSwKLSAgICAgICAgICAg
IGZvcm1hdHRlZFRvT3JpZ2luYWw6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikg
eyByZXR1cm4gW01hdGguZmxvb3IobGluZU51bWJlciAvIDIpLCBNYXRoLmZsb29yKGNvbHVtbk51
bWJlciAvIDIpXTsgfQotICAgICAgICB9OwotICAgICAgICB2YXIgZm9ybWF0dGVyID0gewotICAg
ICAgICAgICAgZm9ybWF0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIGNhbGxi
YWNrKSB7IGZvcm1hdHRlci5fY2FsbGJhY2sgPSBjYWxsYmFjay5iaW5kKG51bGwsICI8Zm9ybWF0
dGVkPiAiICsgY29udGVudCwgbWFwcGluZyk7IH0sCi0gICAgICAgICAgICBmaW5pc2g6IGZ1bmN0
aW9uKCkgeyBmb3JtYXR0ZXIuX2NhbGxiYWNrKCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmV0
dXJuIGZvcm1hdHRlcjsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gY3JlYXRlUmF3U291cmNlQ29k
ZShzY3JpcHQsIHJlcXVlc3QsIGNvbXBpbGVyU291cmNlTWFwcGluZykKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgIGlmIChyZXF1ZXN0ICYmIHJlcXVlc3QuZmlu
aXNoZWQpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9y
VVJMKHJlcXVlc3QudXJsKQotICAgICAgICAgICAgcmVxdWVzdCA9IG51bGw7Ci0gICAgICAgIH0K
LSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUoImlkIiwgc2NyaXB0LCByZXNvdXJjZSwgcmVxdWVzdCwgY29tcGlsZXJTb3VyY2VNYXBwaW5n
KTsKLSAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCBkZWZhdWx0VUlTb3VyY2VD
b2RlQ2hhbmdlZEhhbmRsZXIpOwotICAgICAgICByZXR1cm4gcmF3U291cmNlQ29kZTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiB3YWl0Rm9yVUlTb3VyY2VDb2RlQ2hhbmdlZEV2ZW50KHJhd1NvdXJj
ZUNvZGUsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVD
aGFuZ2VkLCBkZWZhdWx0VUlTb3VyY2VDb2RlQ2hhbmdlZEhhbmRsZXIpOwotICAgICAgICByYXdT
b3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZl
bnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHVpU291cmNlQ29kZUNoYW5nZWQpOwotICAgICAgICBm
dW5jdGlvbiB1aVNvdXJjZUNvZGVDaGFuZ2VkKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICByYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHVpU291cmNlQ29kZUNoYW5nZWQpOwot
ICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCBkZWZhdWx0VUlTb3VyY2VD
b2RlQ2hhbmdlZEhhbmRsZXIpOwotICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZGVmYXVsdFVJU291cmNlQ29kZUNoYW5nZWRIYW5k
bGVyKCkKLSAgICB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBVSVNvdXJj
ZUNvZGVDaGFuZ2VkIGV2ZW50LiIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNyZWF0ZVJhd0xv
Y2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiB7
IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07Ci0g
ICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlv
biB0ZXN0U2NyaXB0V2l0aG91dFJlc291cmNlKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOwotICAgICAgICAgICAgdmFyIHNj
cmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiZm9vLmpzIiwgMCwgMCwgdHJ1
ZSwgIjxzY3JpcHQgc291cmNlPiIpOwotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBj
cmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgbnVsbCk7Ci0KLSAgICAgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZTogIiArIHJhd1NvdXJjZUNvZGUudWlT
b3VyY2VDb2RlKCkudXJsKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJV
SVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJjZUNvZGUuaXNDb250ZW50
U2NyaXB0KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291
cmNlQ29kZSwgMCwgNSwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVh
dGVSYXdMb2NhdGlvbigwLCA1KSkpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jh
d0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9j
YXRpb24odWlTb3VyY2VDb2RlLCAxMCwgMCkpOwotICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJl
cXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKLQotICAgICAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVudEVuY29kZWQsIG1pbWVUeXBlKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNaW1l
IHR5cGU6ICIgKyBtaW1lVHlwZSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIlNjcmlwdCBzb3VyY2U6ICIgKyBjb250ZW50KTsKLSAgICAgICAgICAgICAgICBuZXh0
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24gdGVzdEhU
TUxXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOwotICAgICAgICAgICAgdmFyIHNjcmlwdDEg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCAxMCwgZmFs
c2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOwotICAgICAgICAgICAgdmFyIHNjcmlwdDIgPSBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8
c2NyaXB0IHNvdXJjZSAyPiIpOwotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBjcmVhdGVQZW5k
aW5nUmVxdWVzdE1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBmaXJzdCBzY3JpcHQgZm9yIHBl
bmRpbmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRl
UmF3U291cmNlQ29kZShzY3JpcHQxLCByZXF1ZXN0KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpKTsKLQotICAgICAg
ICAgICAgd2FpdEZvclVJU291cmNlQ29kZUNoYW5nZWRFdmVudChyYXdTb3VyY2VDb2RlLCB1aVNv
dXJjZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDAsIDEwKSk7Ci0gICAgICAgICAgICBmdW5jdGlv
biB1aVNvdXJjZUNvZGVBZGRlZChldmVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWV2ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoISFyYXdTb3VyY2VDb2Rl
LnVpU291cmNlQ29kZSgpKTsKLSAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3
U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiVUlTb3VyY2VDb2RlOiAiICsgdWlTb3VyY2VDb2RlLnVybCk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZSBpcyBjb250ZW50
IHNjcmlwdDogIiArIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOwotICAgICAgICAgICAg
ICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7Ci0KLSAg
ICAgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChjb250ZW50LCBjb250ZW50
RW5jb2RlZCwgbWltZVR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWltZSB0eXBlOiAiICsgbWltZVR5cGUpOwotICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2NyaXB0IHNvdXJjZTog
IiArIGNvbnRlbnQpOwotCi0gICAgICAgICAgICAgICAgICAgIHdhaXRGb3JVSVNvdXJjZUNvZGVD
aGFuZ2VkRXZlbnQocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlQ2hhbmdlZEFmdGVyU2NyaXB0
QWRkZWQpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRk
aW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7Ci0gICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUNo
YW5nZWRBZnRlclNjcmlwdEFkZGVkKGV2ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShldmVudC5kYXRhLm9sZFVJU291cmNlQ29kZSk7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29k
ZS51aVNvdXJjZUNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJh
d1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZTogIiArIHVpU291cmNlQ29kZS51cmwpOwotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVu
dCBzY3JpcHQ6ICIgKyB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAg
ICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOwotCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVu
dEVuY29kZWQsIG1pbWVUeXBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1pbWUgdHlwZTogIiArIG1pbWVUeXBlKTsKLSAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2U6
ICIgKyBjb250ZW50KTsKLQotICAgICAgICAgICAgICAgICAgICB3YWl0Rm9yVUlTb3VyY2VDb2Rl
Q2hhbmdlZEV2ZW50KHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZUNoYW5nZWRBZnRlclJlcXVl
c3RGaW5pc2hlZCk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJGaW5pc2hpbmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoUmVxdWVz
dChyZXF1ZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQ2hhbmdlZEFmdGVyUmVxdWVzdEZpbmlzaGVkKGV2
ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
VHJ1ZShldmVudC5kYXRhLm9sZFVJU291cmNlQ29kZSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
KCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29k
ZTogIiArIHVpU291cmNlQ29kZS51cmwpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJjZUNv
ZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVz
dENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOwotCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVudEVuY29kZWQsIG1pbWVUeXBlKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIk1pbWUgdHlwZTogIiArIG1pbWVUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2U6ICIgKyBjb250ZW50KTsKLQotICAgICAg
ICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24gdGVzdEhUTUxXaXRoRmluaXNoZWRSZXNv
dXJjZShuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5fcmVzZXQoKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQxID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZhbHNlLCAiPHNjcmlwdCBzb3Vy
Y2UgMT4iKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVT
Y3JpcHRNb2NrKCJpbmRleC5odG1sIiwgNSwgNDUsIGZhbHNlLCAiPHNjcmlwdFxuc291cmNlXG4y
PiIpOwotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBjcmVhdGVGaW5pc2hlZFJlcXVlc3RNb2Nr
KCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKLSAgICAgICAgICAgIHZhciByYXdT
b3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXF1ZXN0KTsKLQotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGUoKSk7Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSVNv
dXJjZUNvZGU6ICIgKyB1aVNvdXJjZUNvZGUudXJsKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJj
ZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0
Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RDb250ZW50KGNvbnRlbnQsIGNvbnRlbnRFbmNvZGVkLCBtaW1lVHlwZSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWltZSB0eXBl
OiAiICsgbWltZVR5cGUpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJTY3JpcHQgc291cmNlOiAiICsgY29udGVudCk7Ci0KLSAgICAgICAgICAgICAgICByYXdTb3Vy
Y2VDb2RlLmFkZFNjcmlwdChzY3JpcHQyKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIwLCByYXdTb3VyY2VDb2RlLnJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIwKSkpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxLCAwLCByYXdT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwgMCkpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA2
LCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwg
NiwgMCkpOwotCi0gICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgXSk7Ci19OwotCi08L3NjcmlwdD4KLQotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBSYXdTb3VyY2VDb2RlIGNsYXNzLjwvcD4KLQotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jl
c291cmNlLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWZhOWMyMTE2ZjhhMzViZjY4NzA5YTU1MThkNDY0NDBjNWU2MzY4MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFw
cGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MSBAQAorVGVzdHMgUmVzb3VyY2VTY3JpcHRN
YXBwaW5nIGNsYXNzLgorCisKK1J1bm5pbmc6IHRlc3RTY3JpcHRXaXRoUGVuZGluZ1Jlc291cmNl
CitBZGRpbmcgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuCitVSVNvdXJjZUNvZGU6IGZvby5q
cworVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiB0cnVlCitVSVNvdXJjZUNvZGUgaXMgY29udGVu
dCBzY3JpcHQ6IHRydWUKK01pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0CitVSVNvdXJjZUNvZGUg
Y29udGVudDogPGNvbnRlbnQgc2NyaXB0IHNvdXJjZT4KK0FkZGluZyB1aVNvdXJjZUNvZGUgZm9y
IGZpbmlzaGVkIHJlc291cmNlLgorVUlTb3VyY2VDb2RlOiBmb28uanMKK1VJU291cmNlQ29kZSBp
cyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiB0cnVlCitN
aW1lIHR5cGU6IHRleHQvamF2YXNjcmlwdAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxjb250ZW50
IHNjcmlwdCByZXNvdXJjZSBjb250ZW50PgorCitSdW5uaW5nOiB0ZXN0U2NyaXB0V2l0aEZpbmlz
aGVkUmVzb3VyY2UKK0FkZGluZyB1aVNvdXJjZUNvZGUgZm9yIGZpbmlzaGVkIHJlc291cmNlLgor
VUlTb3VyY2VDb2RlOiBmb28uanMKK1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlT
b3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFz
Y3JpcHQKK1VJU291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CitB
ZGRpbmcgc2NyaXB0IGZvciBmaW5pc2hlZCByZXF1ZXN0LgorVUlTb3VyY2VDb2RlOiBmb28uanMK
K1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQg
c2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKK1VJU291cmNlQ29kZSBj
b250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0
aFBlbmRpbmdSZXNvdXJjZQorQWRkaW5nIGZpcnN0IHNjcmlwdCBmb3IgcGVuZGluZyByZXF1ZXN0
LgorVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IGZh
bHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6IHRl
eHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6ICAgPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAx
Pjwvc2NyaXB0PgorQWRkaW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4KK1VJ
U291cmNlQ29kZTogaW5kZXguaHRtbAorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQor
VUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2h0
bWwKK1VJU291cmNlQ29kZSBjb250ZW50OiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48L3Nj
cmlwdD4gPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvc2NyaXB0PgorQWRkaW5nIHVpU291cmNl
Q29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuCitVSVNvdXJjZUNvZGU6IGluZGV4Lmh0bWwKK1VJ
U291cmNlQ29kZSBpcyBlZGl0YWJsZTogZmFsc2UKK1VJU291cmNlQ29kZSBpcyBjb250ZW50IHNj
cmlwdDogZmFsc2UKK01pbWUgdHlwZTogdGV4dC9odG1sCitVSVNvdXJjZUNvZGUgY29udGVudDog
PHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0aEZpbmlzaGVkUmVzb3Vy
Y2UKK0FkZGluZyB1aVNvdXJjZUNvZGUgZm9yIGZpbmlzaGVkIHJlc291cmNlLgorVUlTb3VyY2VD
b2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IGZhbHNlCitVSVNvdXJj
ZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6IHRleHQvaHRtbAorVUlT
b3VyY2VDb2RlIGNvbnRlbnQ6IDxyZXNvdXJjZSBjb250ZW50PgorQWRkaW5nIGZpcnN0IHNjcmlw
dCBmb3IgZmluaXNoZWQgcmVxdWVzdC4KK1VJU291cmNlQ29kZTogaW5kZXguaHRtbAorVUlTb3Vy
Y2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0
OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2h0bWwKK1VJU291cmNlQ29kZSBjb250ZW50OiA8cmVz
b3VyY2UgY29udGVudD4KK0FkZGluZyBzZWNvbmQgc2NyaXB0IGZvciBmaW5pc2hlZCByZXF1ZXN0
LgorVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IGZh
bHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6IHRl
eHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxyZXNvdXJjZSBjb250ZW50PgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1h
cHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3Jp
cHQtbWFwcGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTgyMGIzMmQ2YWU2ZTBjMzAyZTVhZDIxN2Qz
M2M2ZmVhY2NlMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbApAQCAtMCwwICsxLDE5NiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB3b3Jrc3BhY2U7CisgICAgZnVuY3Rpb24g
Y3JlYXRlUmVzb3VyY2VTY3JpcHRNYXBwaW5nKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY3JlYXRlV29ya3NwYWNlKCk7CisgICAgICAgIHZhciByZXNvdXJjZVNjcmlwdE1hcHBpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRl
c3RXb3Jrc3BhY2UpOworICAgICAgICByZXR1cm4gcmVzb3VyY2VTY3JpcHRNYXBwaW5nOworICAg
IH0KKworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24g
dGVzdFNjcmlwdFdpdGhQZW5kaW5nUmVzb3VyY2UobmV4dCkKKyAgICAgICAgeworICAgICAgICBz
ZXRUaW1lb3V0KG5leHQsIDMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuX3Jlc2V0KCk7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2VTY3JpcHRNYXBwaW5nID0gY3Jl
YXRlUmVzb3VyY2VTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgICAgICB2YXIgdXJsID0gImZvby5q
cyI7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRN
b2NrKHVybCwgMCwgMCwgdHJ1ZSwgIjxjb250ZW50IHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAg
ICAgICBzdGVwMSgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3Vy
Y2VDb2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4i
KTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlw
dCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
aGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9S
YXdMb2NhdGlvbigxMCwgMCkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJ
U291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCBy
ZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3Bh
Y2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50KHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291
cmNlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNv
dXJjZUNvZGVBZGRlZEV2ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFjZSh1cmwsIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIjxjb250ZW50IHNjcmlwdCByZXNvdXJjZSBjb250ZW50
PiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVS
ZXBsYWNlZFdpdGhSZXNvdXJjZSh1aVNvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1
aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwg
MTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUs
IG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RTY3JpcHRXaXRoRmluaXNoZWRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgIHNl
dFRpbWVvdXQobmV4dCwgMyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5fcmVzZXQoKTsKKyAgICAgICAgICAgIHZhciBtb2NrVUlTb3VyY2VDb2RlOworICAgICAgICAg
ICAgdmFyIHJlc291cmNlU2NyaXB0TWFwcGluZyA9IGNyZWF0ZVJlc291cmNlU2NyaXB0TWFwcGlu
ZygpOworICAgICAgICAgICAgdmFyIHVybCA9ICJmb28uanMiOworICAgICAgICAgICAgdmFyIHNj
cmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDAsIGZhbHNlLCAi
PHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAgICAgICBzdGVwMSgpOworCisgICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkFkZGluZyB1aVNvdXJjZUNvZGUgZm9yIGZpbmlzaGVkIHJlc291cmNl
LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291
cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlRm9yUmVzb3VyY2VBZGRlZCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UodXJs
LCBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICI8c2NyaXB0IHJlc291cmNlIGNv
bnRlbnQ+Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNl
Q29kZUZvclJlc291cmNlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG1vY2tVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzY3Jp
cHQgZm9yIGZpbmlzaGVkIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY2hlY2tVSUxvY2F0aW9uKG1vY2tVSVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
aGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIG1vY2tVSVNvdXJjZUNvZGUudWlMb2NhdGlv
blRvUmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBVSVNvdXJjZUNvZGUobW9ja1VJU291cmNlQ29kZSwgbmV4dCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNl
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgc2V0VGltZW91dChuZXh0LCAzKTsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOworICAgICAgICAgICAgdmFy
IHJlc291cmNlU2NyaXB0TWFwcGluZyA9IGNyZWF0ZVJlc291cmNlU2NyaXB0TWFwcGluZygpOwor
ICAgICAgICAgICAgdmFyIHVybCA9ICJpbmRleC5odG1sIjsKKyAgICAgICAgICAgIHZhciBzY3Jp
cHQxID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKHVybCwgMCwgMTAsIGZhbHNlLCAi
PHNjcmlwdCBzb3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVTY3JpcHRNb2NrKHVybCwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2Ug
Mj4iKTsKKyAgICAgICAgICAgIHN0ZXAxKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JX
b3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIGZpcnN0IHNjcmlwdCBm
b3IgcGVuZGluZyByZXF1ZXN0LiIpOworICAgICAgICAgICAgICAgIHJlc291cmNlU2NyaXB0TWFw
cGluZy5hZGRTY3JpcHQoc2NyaXB0MSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUs
IDAsIDUsIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdWlT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzZWNv
bmQgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJj
ZUNvZGVSZXBsYWNlZCk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
dWlTb3VyY2VDb2RlUmVwbGFjZWQodWlTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNvZGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24o
dWlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQyLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUp
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0
MSwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNvdXJjZS4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNl
ZEV2ZW50KHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNlKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KGZ1
bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE1vY2tVSVNv
dXJjZUNvZGVUb1dvcmtzcGFjZSh1cmwsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3Vt
ZW50LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNlKHVpU291cmNlQ29kZSwg
b2xkVUlTb3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0MS5yYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
aGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEwLCAwLCB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlKG5leHQp
CisgICAgICAgIHsKKyAgICAgICAgc2V0VGltZW91dChuZXh0LCAzKTsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOworICAgICAgICAgICAgdmFyIG1vY2tV
SVNvdXJjZUNvZGU7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2VTY3JpcHRNYXBwaW5nID0gY3Jl
YXRlUmVzb3VyY2VTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgICAgICB2YXIgdXJsID0gImluZGV4
Lmh0bWwiOworICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNj
cmlwdE1vY2sodXJsLCAxLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAgICAg
ICAgICAgdmFyIHNjcmlwdDIgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2sodXJsLCA1
LCA0NSwgZmFsc2UsICI8c2NyaXB0XG5zb3VyY2VcbjI+Iik7CisgICAgICAgICAgICBzdGVwMSgp
OworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyB1aVNvdXJjZUNvZGUgZm9y
IGZpbmlzaGVkIHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2Fp
dEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlRm9yUmVzb3Vy
Y2VBZGRlZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VD
b2RlVG9Xb3Jrc3BhY2UodXJsLCBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCwg
IjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiB1aVNvdXJjZUNvZGVGb3JSZXNvdXJjZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBtb2NrVUlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJBZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBmaW5pc2hlZCByZXF1ZXN0LiIpOworICAgICAgICAg
ICAgICAgIHJlc291cmNlU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0MSk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24obW9ja1VJU291cmNlQ29kZSwg
MSwgMjAsIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMSwgMjApKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMSwgMCwgbW9j
a1VJU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxLCAwKSk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDIsIDYsIDAsIG1vY2tV
SVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oNiwgMCkpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZShtb2NrVUlTb3VyY2VDb2RlLCBzdGVw
Myk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5n
IHNlY29uZCBzY3JpcHQgZm9yIGZpbmlzaGVkIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQyKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbihtb2NrVUlTb3VyY2VDb2RlLCAxLCAyMCwg
c2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigxLCAyMCkpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxLCAwLCBtb2NrVUlTb3Vy
Y2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEsIDApKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MiwgNiwgMCwgbW9ja1VJU291cmNl
Q29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbig2LCAwKSk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKG1vY2tVSVNvdXJjZUNvZGUsIG5leHQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9OworCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIFJlc291cmNlU2NyaXB0TWFwcGlu
ZyBjbGFzcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0bWwKaW5kZXggNzQ0NTM3Yjcz
M2E3YjQ3MWRmNTk2MDUxMTJkNDdjYTA1YjY2NmE2Yy4uODFlNDAzNDkxNjY0OGIwZjhjNDc0OTFl
ZDk5MWYyODVhZWU0ODY3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NvdXJjZS1mcmFtZS1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbApAQCAtMzEsOSArMzEsMTIgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dTY3JpcHRTb3VyY2VzKCkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaWRDcmVhdGVTb3VyY2VG
cmFtZSh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgdmFyIGFscmVhZHlTaG93blVSTHMg
PSB7fTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaWRDcmVhdGVTb3VyY2VGcmFtZSgpCiAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZUNvdW50ICs9
IDE7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeVNob3duVVJMc1t0aGlzLl9qYXZh
U2NyaXB0U291cmNlLnVybF0pCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZUNv
dW50ICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGFscmVhZHlTaG93blVSTHNbdGhpcy5famF2
YVNjcmlwdFNvdXJjZS51cmxdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUsICJ3YXNTaG93biIsIGRpZENyZWF0ZVNvdXJjZUZyYW1lLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UoZGlkUmVsb2FkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161927</attachid>
            <date>2012-09-03 07:44:48 -0700</date>
            <delta_ts>2012-09-03 09:08:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95352-20120903184431.patch</filename>
            <type>text/plain</type>
            <size>95846</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0MGQ1ZDNmYWM4Y2Rk
M2Y1MjA3ODMyZjYwOTk4YWQyOWIzNzZmNS4uNjMzZjU0NzdkNGMwY2Y2YWE5ZjdlODdmNzFhZGQ4
YjRmNWQxYzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTAzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENyZWF0ZSBKYXZhU2NyaXB0U291cmNlcyBiYXNlZCBvbiBuZXR3b3JrIHJlc291cmNlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzUyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
ZCBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgdGhhdCBpcyBsaXN0ZW5pbmcgZm9yIFJlc291
cmNlVHJlZU1vZGVsIGFuZCBjcmVhdGVzIFVJU291cmNlQ29kZXMgZm9yIHRoZW0uCisgICAgICAg
IFJhd1NvdXJjZUNvZGUgZG9lcyBub3QgY3JlYXRlIHVpU291cmNlQ29kZXMgYmFzZWQgb24gcmVz
b3VyY2UgYW55bW9yZSAodGhpcyBpcyBkb25lIGJ5IE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ciBpbnN0ZWFkKS4KKyAgICAgICAgTW92ZWQgc2NyaXB0IDwtPiB1aVNvdXJjZUNvZGUgYmluZGlu
ZyBsb2dpYyBmcm9tIFJhd1NvdXJjZUNvZGUgdG8gUmVzb3VyY2VTY3JpcHRNYXBwaW5nLgorICAg
ICAgICBSZW1vdmVkIHJhd1NvdXJjZUNvZGUgYXMgaXQgd2FzIG5vdCBuZWVkZWQgYW55bW9yZS4K
KworICAgICAgICBUZXN0czogaW5zcGVjdG9yL2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2Rl
LXByb3ZpZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJj
ZS1zY3JpcHQtbWFwcGluZy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29tcGls
ZXJTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNj
cmlwdFNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ci5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlT
b3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBlLl9wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fc3R5bGVSZXNvdXJj
ZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIucHJvdG90eXBlLl9zY3JpcHRSZXNvdXJjZUFkZGVkLnJlc291cmNlRmluaXNoZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUu
X3NjcmlwdFJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNv
dXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX2FkZEphdmFTY3JpcHRTb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX2Fk
ZFVJU291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyLnByb3RvdHlwZS5fcmVzb3VyY2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX2Jp
bmRVSVNvdXJjZUNvZGVUb1NjcmlwdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3NjcmlwdHNGb3JTb3VyY2VVUkwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX2FkZE9yUmVwbGFj
ZVRlbXBvcmFyeVVJU291cmNlQ29kZS5nZXQgdmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9hZGRPclJlcGxhY2VUZW1wb3JhcnlVSVNv
dXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5w
cm90b3R5cGUuZ2V0IF91aVNvdXJjZUNvZGVSZXBsYWNlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdFNuaXBwZXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUuX2NyZWF0
ZVVJU291cmNlQ29kZUZvclNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldEph
dmFTY3JpcHRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VD
b2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5zZXRTb3Vy
Y2VNYXBwaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKwogMjAxMi0wOS0wMyAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFVuaGlkZSBoaWRkZW4gY2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDMwNjE5NTRmMTE4
MTg1NzhjMjUxOGIwZjg5Njc1ZjgxNjYyYmVkZjIuLmE5ZmQ1Mjk5ZDE4MzYwZWFkZWIwNmY3MjFl
MDMzODJkNWM5NjMzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzNTQsNiArNjM1NCw3IEBACiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbERlc2NyaXB0b3IuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMnLAorICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzJywK
QEAgLTYzNjUsNyArNjM2Niw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9ncmVzc0Jhci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9SYXdTb3VyY2VDb2RlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1JlbW90ZU9iamVjdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNj
cmlwdE1hcHBpbmcuanMnLApAQCAtNjQwMiw3ICs2NDAyLDYgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZVNvdXJjZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVyLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dEVkaXRvci5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDhhZmEzYWU0OTgwMmM1ZjZmNDJkYjNkMjg0Nzc5NDdhZjI1
MDgxOTMuLjgxYjA0OWY4YWNiNzQ5MzI4YWExNDVjODJlMTQzYzQzZDAxZjVlNWEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NjMxOCw2ICs3
NjMxOCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIu
anMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXE5ldHdvcmtSZXF1ZXN0LmpzIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpAQCAtNzYzOTQsMTAgKzc2Mzk4LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmF3U291cmNl
Q29kZS5qcyIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVtb3RlT2JqZWN0LmpzIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpAQCAtNzY2MzAsMTAgKzc2NjMwLDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3R5bGVz
VUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFN0eWxlU291cmNlLmpz
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CmluZGV4IGM3NmY1NzBhNzQ3YTllYWFiZmNjMWYzZWNhYzI4YzkxMmM2
OTgxNTEuLjZiYWNhMTIwY2FkYzdiNjhmN2YxMmVhNDQwOTI1MWViMWFkYzRkZDAgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTgyLDYgKzgy
LDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJKYXZhU2NyaXB0U291cmNlLmpzIiwKICAg
ICAgICAgICAgICJMaW5raWZpZXIuanMiLAogICAgICAgICAgICAgIk5ldHdvcmtMb2cuanMiLAor
ICAgICAgICAgICAgIk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcyIsCiAgICAgICAgICAg
ICAiUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiLAogICAgICAgICAgICAgIlNB
U1NTb3VyY2VNYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJTY3JpcHQuanMiLApAQCAtOTEsOSAr
OTIsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIlNvdXJjZU1hcHBpbmcuanMiLAogICAg
ICAgICAgICAgIlN0eWxlU291cmNlLmpzIiwKICAgICAgICAgICAgICJTdHlsZXNTb3VyY2VNYXBw
aW5nLmpzIiwKLSAgICAgICAgICAgICJTdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlci5qcyIsCiAg
ICAgICAgICAgICAiVGltZWxpbmVNYW5hZ2VyLmpzIiwKLSAgICAgICAgICAgICJSYXdTb3VyY2VD
b2RlLmpzIiwKICAgICAgICAgICAgICJSZW1vdGVPYmplY3QuanMiLAogICAgICAgICAgICAgIlJl
c291cmNlLmpzIiwKICAgICAgICAgICAgICJSZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMiLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcwppbmRleCA4MDk2ZDU2MmFhMGZmOTA4MWI2MjRiMDE2NWI5MTRlZmVi
MWI3ZWY0Li4wNWMwMDUxNTRkMDgyMDQwZjIyYTMzMDgyNjdlOTMzY2IzNzA1YmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFw
cGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcwpAQCAtMTIwLDcgKzEyMCw4IEBAIFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRlbnRQcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgc291cmNlQ29udGVudCk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21w
aWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIoc291cmNlVVJMKTsKLSAgICAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2Uoc291
cmNlVVJMLCBudWxsLCBjb250ZW50UHJvdmlkZXIsIHRoaXMsIGZhbHNlKTsKKyAgICAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2Uoc291
cmNlVVJMLCBudWxsLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHVpU291
cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwogICAgICAgICAgICAgdWlTb3VyY2VDb2Rl
LmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7CiAgICAgICAgICAgICB0
aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtzb3VyY2VVUkxdID0gdWlTb3VyY2VDb2RlOwogICAgICAg
ICAgICAgdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNv
dXJjZU1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRTb3VyY2UuanMKaW5kZXggMmFjNDk1M2NlMzA2N2NkZjIwYjQyODQxNzQwNzBh
OGJhYzAzZDI1Zi4uYTY0MWMyZDE4NzcwNTA3YTgyNzJjZDEyZDk5M2QyZjU4ZWU3MjdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291
cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZS5qcwpAQCAtMzQsMTEgKzM0LDEwIEBACiAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gY29udGVudFByb3ZpZGVyCi0gKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nfSBzb3VyY2VNYXBwaW5nCiAgKi8KLVdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlID0gZnVuY3Rpb24odXJsLCByZXNvdXJjZSwgY29udGVudFByb3Zp
ZGVyLCBzb3VyY2VNYXBwaW5nLCBpc0VkaXRhYmxlKQorV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2UgPSBmdW5jdGlvbih1cmwsIHJlc291cmNlLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFi
bGUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5jYWxsKHRoaXMsIHVybCwgcmVz
b3VyY2UsIGNvbnRlbnRQcm92aWRlciwgc291cmNlTWFwcGluZyk7CisgICAgV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZS5jYWxsKHRoaXMsIHVybCwgcmVzb3VyY2UsIGNvbnRlbnRQcm92aWRlcik7
CiAgICAgdGhpcy5faXNFZGl0YWJsZSA9IGlzRWRpdGFibGU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3Zp
ZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1MjllMTVjNzJmMGI1MjFkMTI0OThmOTMx
MTIwNWM0MjhkNzI3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzCkBAIC0wLDAgKzEsMTM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFj
ZX0gd29ya3NwYWNlCisgKi8KK1dlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCit7CisgICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3Nw
YWNlOworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQs
IHRoaXMuX3Jlc291cmNlQWRkZWQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQs
IHRoaXMuX3Jlc2V0LCB0aGlzKTsKKyAgICB0aGlzLl9zdHlsZXNTb3VyY2VNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBwaW5nKCk7CisKKyAgICB0aGlzLl91aVNvdXJj
ZUNvZGVGb3JSZXNvdXJjZSA9IHt9OworfQorCitXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNl
Q29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlRnJhbWUoZnJhbWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgcG9wdWxhdGVGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKKworICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IGZyYW1lLnJlc291cmNl
cygpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VBZGRlZCh7ZGF0YTpyZXNvdXJjZXNb
aV19KTsKKyAgICAgICAgfQorCisgICAgICAgIHBvcHVsYXRlRnJhbWUuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICov
CisgICAgX3N0eWxlUmVzb3VyY2VBZGRlZDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgIHRoaXMuX3N0eWxlc1NvdXJjZU1hcHBpbmcuYWRkVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNv
dXJjZX0gcmVzb3VyY2UKKyAgICAgKi8KKyAgICBfc2NyaXB0UmVzb3VyY2VBZGRlZDogZnVuY3Rp
b24ocmVzb3VyY2UpCisgICAgeworICAgICAgICBpZiAocmVzb3VyY2UucmVxdWVzdCAmJiAhcmVz
b3VyY2UucmVxdWVzdC5maW5pc2hlZCkgeworICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNo
ZWRMb2FkaW5nLCByZXNvdXJjZUZpbmlzaGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLl9hZGRKYXZhU2NyaXB0U291cmNlKHJlc291cmNlKTsK
KyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHJlc291cmNlRmluaXNoZWQoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXNvdXJjZS5yZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcsIHJlc291cmNlRmlu
aXNoZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fYWRkSmF2YVNjcmlwdFNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICovCisgICAgX2FkZEphdmFTY3JpcHRT
b3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3VpU291
cmNlQ29kZUZvclJlc291cmNlW3Jlc291cmNlLnVybF0pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHZhciBpc0RvY3VtZW50ID0gcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuRG9jdW1lbnQ7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UocmVzb3VyY2UudXJsLCByZXNvdXJjZSwgcmVzb3Vy
Y2UsICFpc0RvY3VtZW50KTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2Vb
cmVzb3VyY2UudXJsXSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgX2FkZFVJ
U291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
d29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX3Jlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIGV2
ZW50LmRhdGE7CisgICAgICAgIHN3aXRjaCAocmVzb3VyY2UudHlwZSkgeworICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQ6CisgICAgICAgICAgICB0aGlz
Ll9zdHlsZVJlc291cmNlQWRkZWQocmVzb3VyY2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ6CisgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0OgorICAgICAgICAgICAgdGhpcy5f
c2NyaXB0UmVzb3VyY2VBZGRlZChyZXNvdXJjZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlID0ge307CisgICAgICAgIHRoaXMuX3N0eWxlc1Nv
dXJjZU1hcHBpbmcucmVzZXQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgcG9w
dWxhdGUgdW50aWwgdGhlIFByb2plY3RXaWxsUmVzZXQgZXZlbnQgd2FzIGhhbmRsZWQgYnkgYWxs
IGxpc3RlbmVycy4gSW50cm9kdWNlIFByb2plY3REaWRSZXNldCBldmVudCBmb3IgdGhhdCBtYXR0
ZXIuCisgICAgICAgIHNldFRpbWVvdXQodGhpcy5fcG9wdWxhdGUuYmluZCh0aGlzKSwgMCk7Cisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
YXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdT
b3VyY2VDb2RlLmpzCmluZGV4IDdlMWI0NGNkYWE1YmUwOWYzMGNhMGM1YjhhYzljMWFhMmZiMTA0
NjAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKQEAg
LTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vLyBSYXdTb3VyY2VDb2RlIHJlcHJlc2VudHMgSmF2YVNjcmlwdCByZXNv
dXJjZSBvciBIVE1MIHJlc291cmNlIHdpdGggaW5saW5lZCBzY3JpcHRzCi0vLyBhcyBpdCBjYW1l
IGZyb20gbmV0d29yay4KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuT2JqZWN0fQotICogQHBhcmFtIHtzdHJpbmd9IGlkCi0gKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5TY3JpcHR9IHNjcmlwdAotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9
IHJlc291cmNlCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gcmVxdWVz
dAotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZ30gc291cmNlTWFwcGluZwot
ICovCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJl
c291cmNlLCByZXF1ZXN0LCBzb3VyY2VNYXBwaW5nKQotewotICAgIHRoaXMuaWQgPSBpZDsKLSAg
ICB0aGlzLnVybCA9IHNjcmlwdC5zb3VyY2VVUkw7Ci0gICAgdGhpcy5pc0NvbnRlbnRTY3JpcHQg
PSBzY3JpcHQuaXNDb250ZW50U2NyaXB0OwotICAgIHRoaXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsK
LSAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwotICAgIHRoaXMuX3BlbmRpbmdSZXF1ZXN0
ID0gcmVxdWVzdDsKLSAgICB0aGlzLl9zb3VyY2VNYXBwaW5nID0gc291cmNlTWFwcGluZzsKLQot
ICAgIHRoaXMuX3VpU291cmNlQ29kZSA9IG51bGw7Ci0gICAgaWYgKHRoaXMuX3BlbmRpbmdSZXF1
ZXN0KQotICAgICAgICB0aGlzLl9wZW5kaW5nUmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCB0aGlzLl9maW5p
c2hlZExvYWRpbmcsIHRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rl
ID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlKCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLkV2ZW50cyA9IHsKLSAgICBVSVNvdXJjZUNvZGVDaGFuZ2VkOiAidXMtc291cmNlLWNv
ZGUtY2hhbmdlZCIKLX0KLQotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0g
ewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0Ci0g
ICAgICovCi0gICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICB0
aGlzLl9zY3JpcHRzLnB1c2goc2NyaXB0KTsKLSAgICAgICAgaWYgKHRoaXMuX3RlbXBvcmFyeVVJ
U291cmNlQ29kZSkgewotICAgICAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IHRoaXMuX3Rl
bXBvcmFyeVVJU291cmNlQ29kZTsKLSAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNl
Q29kZSA9IHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZSgpOwotICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJ
U291cmNlQ29kZUNoYW5nZWQsIHsgdWlTb3VyY2VDb2RlOiB0aGlzLl90ZW1wb3JhcnlVSVNvdXJj
ZUNvZGUsIG9sZFVJU291cmNlQ29kZTogb2xkVUlTb3VyY2VDb2RlIH0pOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb259Ci0gICAgICovCi0gICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9u
KHJhd0xvY2F0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3Vp
U291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0gICAgICAgIGlmICgh
dWlTb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGUg
PSB0aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZSA9
IHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJj
ZUNvZGVDaGFuZ2VkLCB7IHVpU291cmNlQ29kZTogdWlTb3VyY2VDb2RlIH0pOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2Rl
LCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7
Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9Ci0gICAgICovCi0gICAgX2NyZWF0ZVVJU291cmNlQ29kZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIGlzU3RhbmRhbG9uZVNjcmlwdCA9IHRoaXMuX3NjcmlwdHMubGVuZ3Ro
ID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmlzSW5saW5lU2NyaXB0KCk7Ci0KLSAgICAgICAg
dmFyIGNvbnRlbnRQcm92aWRlcjsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlKQotICAgICAg
ICAgICAgY29udGVudFByb3ZpZGVyID0gdGhpcy5fcmVzb3VyY2U7Ci0gICAgICAgIGVsc2UgaWYg
KGlzU3RhbmRhbG9uZVNjcmlwdCkKLSAgICAgICAgICAgIGNvbnRlbnRQcm92aWRlciA9IHRoaXMu
X3NjcmlwdHNbMF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRQcm92aWRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcih0aGlz
Ll9zY3JpcHRzKTsKLQotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlKHRoaXMudXJsLCB0aGlzLl9yZXNvdXJjZSwgY29udGVudFByb3Zp
ZGVyLCB0aGlzLl9zb3VyY2VNYXBwaW5nLCBpc1N0YW5kYWxvbmVTY3JpcHQpOwotICAgICAgICB1
aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gdGhpcy5pc0NvbnRlbnRTY3JpcHQ7Ci0gICAg
ICAgIHJldHVybiB1aVNvdXJjZUNvZGU7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFt
IHtudW1iZXJ9IGxpbmVOdW1iZXIKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVy
Ci0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQotICAgICAqLwotICAg
IHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnVybCkKLSAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbkJ5
VVJMKHRoaXMudXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24odGhpcy5fc2NyaXB0
c1swXSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZXxudWxsfQotICAgICAqLwotICAg
IHVpU291cmNlQ29kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Vp
U291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0gICAgfSwKLQotICAg
IF9maW5pc2hlZExvYWRpbmc6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5f
cmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodGhpcy5fcGVuZGluZ1JlcXVl
c3QudXJsKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXF1ZXN0OwotICAgICAgICB2
YXIgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlIHx8IHRoaXMuX3RlbXBvcmFy
eVVJU291cmNlQ29kZTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29k
ZTsKLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2Rl
KCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCB7IHVpU291cmNlQ29kZTog
dGhpcy5fdWlTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNvZGU6IG9sZFVJU291cmNlQ29kZSB9KTsK
LSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMK
aW5kZXggYTE2Mzg5YzYwY2U3NDk4MDZmMjFkZWNiZDljY2UxZDhmNzM2YjAzYS4uMzI3NTM3NGFk
NDI2MGMzNDAxN2I1NWZhMTM2N2RhYTQ0N2E0ODMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMK
QEAgLTM2LDE2ICszNiwxNSBAQAogV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyA9
IGZ1bmN0aW9uKHdvcmtzcGFjZSkKIHsKICAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7
Ci0gICAgLyoqIEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGU+fSAqLwot
ICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0gW107Ci0gICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0
cmluZywgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGU+fSAqLwotICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVGb3JTY3JpcHRJZCA9IHt9OwotICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIFdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlPn0gKi8KLSAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
VVJMID0ge307Ci0gICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGU+fSAqLwotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTCA9
IHt9OwotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7
CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtz
cGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRo
aXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQ
cm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMuX3VpU291cmNlQ29kZUFkZGVk
VG9Xb3Jrc3BhY2UsIHRoaXMpOworICAgIAorICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcs
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLworICAgIHRoaXMuX3VpU291cmNlQ29kZUZv
clNjcmlwdElkID0ge307CisgICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUgPSBuZXcg
TWFwKCk7CisgICAgdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlcyA9IG5ldyBNYXAoKTsKKyAg
ICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBudW1iZXI+fSAqLworICAgIHRoaXMuX25leHRE
eW5hbWljU2NyaXB0SW5kZXhGb3JVUkwgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CkBAIC01Niw4ICs1NSwxMCBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICByYXdMb2NhdGlvblRv
VUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewogICAgICAgICB2YXIgZGVi
dWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5Mb2NhdGlvbn0gKi8gcmF3TG9jYXRpb247Ci0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0g
dGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW2RlYnVnZ2VyTW9kZWxMb2NhdGlvbi5zY3Jp
cHRJZF07Ci0gICAgICAgIHJldHVybiByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uKGRlYnVnZ2VyTW9kZWxMb2NhdGlvbik7CisgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2Ny
aXB0SWQpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbZGVidWdnZXJNb2RlbExvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGRlYnVnZ2VyTW9kZWxM
b2NhdGlvbi5saW5lTnVtYmVyLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyIHx8
IDApOworICAgICAgICAKICAgICB9LAogCiAgICAgLyoqCkBAIC02OCw4ICs2OSw5IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhp
cy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKLSAgICAg
ICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VD
b2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB2YXIgc2NyaXB0SWQgPSB0
aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAg
dmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHNjcmlw
dElkKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJh
d0xvY2F0aW9uKHNjcmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9LAogCiAg
ICAgLyoqCkBAIC03NywxMzcgKzc5LDE0OSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNj
cmlwdCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgIHZhciBy
ZXF1ZXN0ID0gbnVsbDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3VpU291cmNlQ29k
ZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0pOworCisgICAgICAgIHNjcmlwdC5zZXRTb3Vy
Y2VNYXBwaW5nKHRoaXMpOworICAgICAgICB2YXIgaXNEeW5hbWljU2NyaXB0ID0gZmFsc2U7CiAg
ICAgICAgIGlmICghc2NyaXB0LmlzQW5vbnltb3VzU2NyaXB0KCkpIHsKLSAgICAgICAgICAgIC8v
IEZpcnN0IGxvb2t1cCB0aGUgcmVzb3VyY2UgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4K
LSAgICAgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlw
dC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgLy8gSWdub3JlIHJlc291cmNlIGluIGNhc2UgaXQg
aGFzIG5vdCB5ZXQgZmluaXNoZWQgbG9hZGluZy4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAm
JiByZXNvdXJjZS5yZXF1ZXN0ICYmICFyZXNvdXJjZS5yZXF1ZXN0LmZpbmlzaGVkKQotICAgICAg
ICAgICAgICAgIHJlc291cmNlID0gbnVsbDsKLSAgICAgICAgICAgIC8vIE9ubHkgYmluZCBpbmxp
bmUgYW5kIHN0YW5kYWxvbmUgc2NyaXB0cy4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiAh
dGhpcy5fc2hvdWxkQmluZFNjcmlwdFRvQ29udGVudFByb3ZpZGVyKHNjcmlwdCwgcmVzb3VyY2Up
KQotICAgICAgICAgICAgICAgIHJlc291cmNlID0gbnVsbDsKLSAgICAgICAgICAgIGlmICghcmVz
b3VyY2UpIHsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIG5vIHJlc291cmNlLCBs
b29rdXAgaW4tZmxpZ2h0IHJlcXVlc3RzLgotICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBXZWJJ
bnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXF1ZXN0Rm9yVVJMKHNjcmlwdC5zb3Vy
Y2VVUkwpOwotICAgICAgICAgICAgICAgIC8vIE9ubHkgYmluZCBpbmxpbmUgYW5kIHN0YW5kYWxv
bmUgc2NyaXB0cy4KLSAgICAgICAgICAgICAgICBpZiAocmVxdWVzdCAmJiAhdGhpcy5fc2hvdWxk
QmluZFNjcmlwdFRvQ29udGVudFByb3ZpZGVyKHNjcmlwdCwgcmVxdWVzdCkpCi0gICAgICAgICAg
ICAgICAgICByZXF1ZXN0ID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBjb25zb2xlLmFzc2VydCghcmVzb3VyY2UgfHwgIXJlcXVlc3QpOwotCi0gICAgICAgIHZhciBp
c0lubGluZVNjcmlwdCA9IHNjcmlwdC5pc0lubGluZVNjcmlwdCgpICYmIChyZXF1ZXN0IHx8IHJl
c291cmNlKTsKLSAgICAgICAgLy8gSWYgZWl0aGVyIG9mIHRoZXNlIGV4aXN0cywgd2UgYmluZCBz
Y3JpcHQgdG8gdGhlIHJlc291cmNlLgotICAgICAgICBpZiAoaXNJbmxpbmVTY3JpcHQpIHsKLSAg
ICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3Vt
ZW50VVJMW3NjcmlwdC5zb3VyY2VVUkxdOwotICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUp
IHsKLSAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQpOwotICAg
ICAgICAgICAgICAgIHRoaXMuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdT
b3VyY2VDb2RlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZv
clVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgICAgIGlzRHluYW1pY1NjcmlwdCA9ICEh
dWlTb3VyY2VDb2RlICYmIHVpU291cmNlQ29kZS5jb250ZW50VHlwZSgpID09PSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCAmJiAhc2NyaXB0LmlzSW5saW5lU2NyaXB0KCk7Cisg
ICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlICYmICFpc0R5bmFtaWNTY3JpcHQgJiYgIXRoaXMu
X3RlbXBvcmFyeVVJU291cmNlQ29kZXMuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgICAgICAg
ICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNvdXJjZUNvZGUsIFtzY3JpcHRd
KTsKICAgICAgICAgfQorICAgICAgICBpZiAoIXRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElk
W3NjcmlwdC5zY3JpcHRJZF0pCisgICAgICAgICAgICB0aGlzLl9hZGRPclJlcGxhY2VUZW1wb3Jh
cnlVSVNvdXJjZUNvZGUoc2NyaXB0LCBpc0R5bmFtaWNTY3JpcHQpOwogCi0gICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHNjcmlwdC5zY3Jp
cHRJZCwgc2NyaXB0LCByZXNvdXJjZSwgcmVxdWVzdCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jh
d1NvdXJjZUNvZGVzLnB1c2gocmF3U291cmNlQ29kZSk7Ci0gICAgICAgIHRoaXMuX2JpbmRTY3Jp
cHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKLSAgICAgICAgaWYgKGlz
SW5saW5lU2NyaXB0KQotICAgICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50
VVJMW3NjcmlwdC5zb3VyY2VVUkxdID0gcmF3U291cmNlQ29kZTsKLQotICAgICAgICBpZiAocmF3
U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKSkKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZUFkZGVkKHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCkpOwotICAg
ICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29k
ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdKTsKICAgICB9LAotCisgICAgCiAgICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9IGNvbnRlbnRQcm92aWRlcgotICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2Ny
aXB0Pn0gc2NyaXB0cwogICAgICAqLwotICAgIF9zaG91bGRCaW5kU2NyaXB0VG9Db250ZW50UHJv
dmlkZXI6IGZ1bmN0aW9uKHNjcmlwdCwgY29udGVudFByb3ZpZGVyKQorICAgIF9iaW5kVUlTb3Vy
Y2VDb2RlVG9TY3JpcHRzOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIHNjcmlwdHMpCiAgICAgewot
ICAgICAgICBpZiAoc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkpCi0gICAgICAgICAgICByZXR1cm4g
Y29udGVudFByb3ZpZGVyLmNvbnRlbnRUeXBlKCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5
cGVzLkRvY3VtZW50OwotICAgICAgICByZXR1cm4gY29udGVudFByb3ZpZGVyLmNvbnRlbnRUeXBl
KCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdDsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoc2NyaXB0cy5sZW5ndGgpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0aGlzLl91aVNvdXJj
ZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKKyAg
ICAgICAgICAgIHNjcmlwdHNbaV0uc2V0U291cmNlTWFwcGluZyh0aGlzKTsKKyAgICAgICAgICAg
IHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdHNb
aV0uc2NyaXB0SWQpOworICAgICAgICB9CisgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRT
Y3JpcHQgPSBzY3JpcHRzWzBdLmlzQ29udGVudFNjcmlwdDsKKyAgICAgICAgdWlTb3VyY2VDb2Rl
LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAgIHRoaXMuX3NjcmlwdElkRm9yVUlTb3Vy
Y2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdHNbMF0uc2NyaXB0SWQpOwogICAgIH0sCi0K
KyAgICAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgICAgICogQHBhcmFtIHtib29sZWFu
fSBpc0lubGluZVNjcmlwdAorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2Ny
aXB0Pn0KICAgICAgKi8KLSAgICBfaGFuZGxlVUlTb3VyY2VDb2RlQ2hhbmdlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3NjcmlwdHNGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgaXNJ
bmxpbmVTY3JpcHQpCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKLSAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQuZGF0YS51aVNvdXJjZUNvZGU7Ci0gICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGEub2xk
VUlTb3VyY2VDb2RlOwotICAgICAgICBpZiAoIW9sZFVJU291cmNlQ29kZSkKLSAgICAgICAgICAg
IHRoaXMuX3VpU291cmNlQ29kZUFkZGVkKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZVJlcGxhY2VkKHJhd1Nv
dXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgZnVuY3Rp
b24gZmlsdGVyKHNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHNjcmlwdC5z
b3VyY2VVUkwgPT09IHNvdXJjZVVSTCAmJiBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA9PT0gaXNJ
bmxpbmVTY3JpcHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBPYmplY3Qu
dmFsdWVzKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHMpLmZpbHRlcihmaWx0ZXIp
OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gICAgICogQHBhcmFuIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9
IHNjcmlwdAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEeW5hbWljU2NyaXB0CiAgICAgICov
Ci0gICAgX3VpU291cmNlQ29kZUFkZGVkOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJj
ZUNvZGUpCisgICAgX2FkZE9yUmVwbGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZTogZnVuY3Rpb24o
c2NyaXB0LCBpc0R5bmFtaWNTY3JpcHQpCiAgICAgewotICAgICAgICBpZiAoIXVpU291cmNlQ29k
ZS51cmwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVG
b3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgcmF3U291cmNlQ29kZSk7Ci0gICAgICAg
IHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
CisgICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgPyB0aGlzLl9z
Y3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRydWUpIDogW3NjcmlwdF07Cisg
ICAgICAgIAorICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG9sZFVJU291cmNl
Q29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdHNbaV0uc2NyaXB0SWRd
OworICAgICAgICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjb25zb2xlLmFzc2VydCghb2xkVUlTb3VyY2VDb2RlIHx8
IHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZXMuZ2V0KG9sZFVJU291cmNlQ29kZSkpOworCisg
ICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IG5l
dyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihzY3JpcHRz
KSA6IHNjcmlwdDsKKyAgICAgICAgdmFyIHVybCA9IHNjcmlwdC5zb3VyY2VVUkw7CisgICAgICAg
IGlmIChpc0R5bmFtaWNTY3JpcHQpIHsKKyAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlz
Ll9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9yVVJMW3NjcmlwdC5zb3VyY2VVUkxdIHx8IDE7IAor
ICAgICAgICAgICAgdXJsICs9ICIgKCIgKyBuZXh0SW5kZXggKyAiKSI7CisgICAgICAgICAgICB0
aGlzLl9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9yVVJMW3NjcmlwdC5zb3VyY2VVUkxdID0gbmV4
dEluZGV4ICsgMTsKKyAgICAgICAgfQorICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHVybCwgbnVsbCwgY29udGVudFByb3ZpZGVyLCAh
c2NyaXB0LmlzSW5saW5lU2NyaXB0KCkpOworICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJj
ZUNvZGVzLnB1dCh1aVNvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX2Jp
bmRVSVNvdXJjZUNvZGVUb1NjcmlwdHModWlTb3VyY2VDb2RlLCBzY3JpcHRzKTsKKworICAgICAg
ICBpZiAoIXNjcmlwdC5zb3VyY2VVUkwpCisgICAgICAgICAgICByZXR1cm4gdWlTb3VyY2VDb2Rl
OworICAgICAgICAKKyAgICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkKKyAgICAgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZVJlcGxhY2VkKHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZX0gcmF3U291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gb2xkVUlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6
IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKQor
ICAgIF91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnVybCkKKyAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpIHx8IHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZXMuZ2V0KHVpU291
cmNlQ29kZSkpOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwgfHwgdGhpcy5fdGVtcG9y
YXJ5VUlTb3VyY2VDb2Rlcy5nZXQodWlTb3VyY2VDb2RlKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5yZW1vdmUob2xkVUlT
b3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5w
dXQodWlTb3VyY2VDb2RlLCByYXdTb3VyY2VDb2RlKTsKLQotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJhd1NvdXJjZUNvZGUuX3NjcmlwdHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBy
YXdTb3VyY2VDb2RlLl9zY3JpcHRzW2ldLnNldFNvdXJjZU1hcHBpbmcodGhpcyk7Ci0gICAgICAg
IHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkucmVwbGFjZVVJU291cmNlQ29kZShvbGRVSVNvdXJj
ZUNvZGUsIHVpU291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gICAgICogQHBhcmFuIHtXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqLwotICAgIF91aVNvdXJjZUNvZGVS
ZW1vdmVkOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUpCisgICAgX2FkZFVJ
U291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgaWYgKCF1
aVNvdXJjZUNvZGUudXJsKQorICAgICAgICB2YXIgaXNJbmxpbmVTY3JpcHQ7CisgICAgICAgIHN3
aXRjaCAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDoKKyAgICAgICAgICAgIGlzSW5saW5lU2NyaXB0
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLlNjcmlwdDoKKyAgICAgICAgICAgIGlzSW5saW5lU2NyaXB0ID0gZmFsc2U7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3Jp
cHRzRm9yU291cmNlVVJMKHVpU291cmNlQ29kZS51cmwsIGlzSW5saW5lU2NyaXB0KTsKKyAgICAg
ICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhp
cy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5yZW1vdmUodWlTb3VyY2VDb2RlKTsKKwor
ICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0
SWRbc2NyaXB0c1swXS5zY3JpcHRJZF07CisgICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVU
b1NjcmlwdHModWlTb3VyY2VDb2RlLCBzY3JpcHRzKTsKKworICAgICAgICBpZiAob2xkVUlTb3Vy
Y2VDb2RlKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90ZW1wb3JhcnlVSVNv
dXJjZUNvZGVzLmdldChvbGRVSVNvdXJjZUNvZGUpKTsKKyAgICAgICAgICAgIHRoaXMuX3VpU291
cmNlQ29kZVJlcGxhY2VkKHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2Rl
LmdldCh1aVNvdXJjZUNvZGUpICYmICF0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldCh1
aVNvdXJjZUNvZGUpKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlfSByYXdTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9IG9sZFVJU291cmNlQ29kZQogICAgICAqLwotICAgIF9iaW5kU2NyaXB0VG9SYXdTb3Vy
Y2VDb2RlOiBmdW5jdGlvbihzY3JpcHQsIHJhd1NvdXJjZUNvZGUpCisgICAgX3VpU291cmNlQ29k
ZVJlcGxhY2VkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSkKICAgICB7
Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRd
ID0gcmF3U291cmNlQ29kZTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVSTFtzY3Jp
cHQuc291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7Ci0gICAgICAgIHNjcmlwdC5zZXRTb3VyY2VN
YXBwaW5nKHRoaXMpOworICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLnJlbW92
ZShvbGRVSVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29k
ZS5yZW1vdmUob2xkVUlTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2pl
Y3QoKS5yZXBsYWNlVUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsK
ICAgICB9LAogCiAgICAgX3Jlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX3Jhd1NvdXJjZUNvZGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVzW2ldOwotICAgICAg
ICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlUmVtb3ZlZChyYXdTb3VyY2VDb2RlLCByYXdTb3VyY2VD
b2RlLnVpU291cmNlQ29kZSgpKTsKLSAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUucmVtb3ZlQWxs
TGlzdGVuZXJzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZXMgPSBb
XTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkID0ge307Ci0gICAgICAg
IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVUkwgPSB7fTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNl
Q29kZUZvckRvY3VtZW50VVJMID0ge307Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JV
SVNvdXJjZUNvZGUuY2xlYXIoKTsKLSAgICB9CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZv
clNjcmlwdElkID0ge307CisgICAgICAgIHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmNs
ZWFyKCk7CisgICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZXMuY2xlYXIoKTsKKyAg
ICAgICAgdGhpcy5fbmV4dER5bmFtaWNTY3JpcHRJbmRleEZvclVSTCA9IHt9OworICAgIH0sCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNu
aXBwZXRNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
U25pcHBldE1vZGVsLmpzCmluZGV4IGQ5MmEyZDMxYWU0MWVlYjhjMWVmNWEyZDQ1NWVhNzI5NDI4
NTY2OTMuLjA2MDVmN2NkMTkxNzVlNzRmMDI0NmY3MzgwMTViNDg0OTc3NjZiOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBl
dE1vZGVsLmpzCkBAIC04MSw2ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9k
ZWwucHJvdG90eXBlID0gewogICAgIF9hZGRTY3JpcHRTbmlwcGV0OiBmdW5jdGlvbihzbmlwcGV0
KQogICAgIHsKICAgICAgICAgdmFyIHNuaXBwZXRKYXZhU2NyaXB0U291cmNlID0gbmV3IFdlYklu
c3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZShzbmlwcGV0LmlkLCBzbmlwcGV0Lm5hbWUs
IG5ldyBXZWJJbnNwZWN0b3IuU25pcHBldENvbnRlbnRQcm92aWRlcihzbmlwcGV0KSwgdGhpcyk7
CisgICAgICAgIHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLnNldFNvdXJjZU1hcHBpbmcodGhpcy5f
c25pcHBldFNjcmlwdE1hcHBpbmcpOyAKICAgICAgICAgdGhpcy5fc25pcHBldEphdmFTY3JpcHRT
b3VyY2VGb3JTbmlwcGV0SWRbc25pcHBldC5pZF0gPSBzbmlwcGV0SmF2YVNjcmlwdFNvdXJjZTsK
ICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUoc25pcHBl
dEphdmFTY3JpcHRTb3VyY2UpOwogICAgICAgICByZXR1cm4gc25pcHBldEphdmFTY3JpcHRTb3Vy
Y2U7CkBAIC0yNzgsNyArMjc5LDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NyZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdDog
ZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZShzY3JpcHQuc291cmNlVVJMLCBudWxsLCBzY3Jp
cHQsIHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nLCBmYWxzZSk7CisgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2Uoc2NyaXB0LnNvdXJj
ZVVSTCwgbnVsbCwgc2NyaXB0LCBmYWxzZSk7CisgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3Vy
Y2VNYXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nKTsgCiAgICAgICAgIHVpU291cmNl
Q29kZS5pc1NuaXBwZXRFdmFsdWF0aW9uID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VD
b2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKICAgICAgICAg
dGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7CkBA
IC0zNzIsNyArMzc0LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3QKICAqLwogV2ViSW5zcGVj
dG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlID0gZnVuY3Rpb24oc25pcHBldElkLCBzbmlwcGV0
TmFtZSwgY29udGVudFByb3ZpZGVyLCBzY3JpcHRTbmlwcGV0TW9kZWwpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2UuY2FsbCh0aGlzLCBzbmlwcGV0TmFtZSwgbnVsbCwgY29u
dGVudFByb3ZpZGVyLCBzY3JpcHRTbmlwcGV0TW9kZWwuc2NyaXB0TWFwcGluZywgdHJ1ZSk7Cisg
ICAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UuY2FsbCh0aGlzLCBzbmlwcGV0TmFtZSwg
bnVsbCwgY29udGVudFByb3ZpZGVyLCB0cnVlKTsKICAgICB0aGlzLl9zbmlwcGV0SWQgPSBzbmlw
cGV0SWQ7CiAgICAgdGhpcy5fc2NyaXB0U25pcHBldE1vZGVsID0gc2NyaXB0U25pcHBldE1vZGVs
OwogICAgIHRoaXMuaXNTbmlwcGV0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVy
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDYyNGFjMzZhYzE2N2IxZjQ5NTBm
NWEwYjdkNWNkNWE2MzQyZjFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNl
Ci0gKi8KLVdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlciA9IGZ1bmN0aW9u
KHdvcmtzcGFjZSkKLXsKLSAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7Ci0gICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3Vy
Y2VBZGRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQs
IHRoaXMpOwotICAgIHRoaXMuX3N0eWxlc1NvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlN0eWxlc1NvdXJjZU1hcHBpbmcoKTsKLX0KLQotV2ViSW5zcGVjdG9yLlN0eWxlc1VJU291cmNl
Q29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlRnJhbWUoZnJhbWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgcG9wdWxhdGVGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKLQotICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IGZyYW1lLnJlc291cmNl
cygpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VBZGRlZCh7ZGF0YTpyZXNvdXJjZXNb
aV19KTsKLSAgICAgICAgfQotCi0gICAgICAgIHBvcHVsYXRlRnJhbWUuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Ci0gICAgICovCi0gICAg
X3Jlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIGV2ZW50LmRhdGE7Ci0g
ICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5T
dHlsZXNoZWV0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHRoaXMu
X3N0eWxlc1NvdXJjZU1hcHBpbmcuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0gICAg
ICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7Ci0gICAgfSwKLQotICAgIF9yZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fc3R5bGVzU291cmNlTWFwcGluZy5yZXNldCgpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG5vdCBwb3B1bGF0ZSB1bnRpbCB0aGUgUHJvamVjdFdpbGxSZXNldCBldmVudCB3YXMgaGFu
ZGxlZCBieSBhbGwgbGlzdGVuZXJzLiBJbnRyb2R1Y2UgUHJvamVjdERpZFJlc2V0IGV2ZW50IGZv
ciB0aGF0IG1hdHRlci4KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLl9wb3B1bGF0ZS5iaW5kKHRo
aXMpLCAwKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVUlTb3VyY2VDb2RlLmpzCmluZGV4IDE3YWFhYTBiMTkxMjdiZWI4M2Q2NTNjYzBlMGZk
Y2UzNDRiZDdlOWEuLjQ3YzhjMzQyNWVjOThkYzAyNTM3NGMzNjg5MjhiYTJkYTYwY2VmNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2Rl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2Rl
LmpzCkBAIC0zNiwxNSArMzYsMTMgQEAKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQogICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuQ29udGVudFByb3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNvdXJjZU1hcHBpbmc9fSBzb3VyY2VNYXBwaW5nCiAgKi8KLVdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGUgPSBmdW5jdGlvbih1cmwsIHJlc291cmNlLCBjb250ZW50UHJvdmlkZXIsIHNvdXJj
ZU1hcHBpbmcpCitXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlID0gZnVuY3Rpb24odXJsLCByZXNv
dXJjZSwgY29udGVudFByb3ZpZGVyKQogewogICAgIHRoaXMuX3VybCA9IHVybDsKICAgICB0aGlz
Ll9yZXNvdXJjZSA9IHJlc291cmNlOwogICAgIHRoaXMuX3BhcnNlZFVSTCA9IG5ldyBXZWJJbnNw
ZWN0b3IuUGFyc2VkVVJMKHVybCk7CiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyID0gY29udGVu
dFByb3ZpZGVyOwotICAgIHRoaXMuX3NvdXJjZU1hcHBpbmcgPSBzb3VyY2VNYXBwaW5nOwogICAg
IHRoaXMuaXNDb250ZW50U2NyaXB0ID0gZmFsc2U7CiAgICAgLyoqCiAgICAgICogQHR5cGUgQXJy
YXkuPGZ1bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpPgpAQCAtMzg0LDYgKzM4Miw4IEBA
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NvdXJjZU1hcHBpbmcpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fZm9ybWF0dGVyTWFwcGlu
Zy5mb3JtYXR0ZWRUb09yaWdpbmFsKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHRoaXMs
IGxvY2F0aW9uWzBdLCBsb2NhdGlvblsxXSk7CiAgICAgfSwKQEAgLTUzNyw2ICs1MzcsMTQgQEAg
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBu
dWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBwaW5nfSBzb3VyY2VNYXBwaW5nCisgICAgICovCisgICAgc2V0U291cmNlTWFwcGluZzog
ZnVuY3Rpb24oc291cmNlTWFwcGluZykKKyAgICB7CisgICAgICAgIHRoaXMuX3NvdXJjZU1hcHBp
bmcgPSBzb3VyY2VNYXBwaW5nOworICAgIH0sCisKICAgICBmb3JtYXR0ZWRDaGFuZ2VkOiBmdW5j
dGlvbigpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYwppbmRleCA1ZGU4OWFkNGVjNzI1YmNlMjcyZjljNWRiMzU5NTQ5N2M3NWZl
ZTZhLi43NWI4OTE0Mjc1NWQ1ZWYxODYwMzkzYWU5M2NkY2U2MThmZjQxNDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xMDgsNiArMTA4
LDcgQEAKICAgICA8ZmlsZT5OYXZpZ2F0b3JWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdv
cmtJdGVtVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5OZXR3b3JrTG9nLmpzPC9maWxlPgorICAg
IDxmaWxlPk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qczwvZmlsZT4KICAgICA8ZmlsZT5O
ZXR3b3JrTWFuYWdlci5qczwvZmlsZT4KICAgICA8ZmlsZT5OZXR3b3JrUGFuZWwuanM8L2ZpbGU+
CiAgICAgPGZpbGU+TmV0d29ya1BhbmVsRGVzY3JpcHRvci5qczwvZmlsZT4KQEAgLTEyNyw3ICsx
MjgsNiBAQAogICAgIDxmaWxlPlByb2dyZXNzQmFyLmpzPC9maWxlPgogICAgIDxmaWxlPlByb3Bl
cnRpZXNTZWN0aW9uLmpzPC9maWxlPgogICAgIDxmaWxlPlByb3BlcnRpZXNTaWRlYmFyUGFuZS5q
czwvZmlsZT4KLSAgICA8ZmlsZT5SYXdTb3VyY2VDb2RlLmpzPC9maWxlPgogICAgIDxmaWxlPlJl
bW90ZU9iamVjdC5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZS5qczwvZmlsZT4KICAgICA8
ZmlsZT5SZXF1ZXN0Q29va2llc1ZpZXcuanM8L2ZpbGU+CkBAIC0xODEsNyArMTgxLDYgQEAKICAg
ICA8ZmlsZT5TdHlsZVNoZWV0T3V0bGluZURpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5TdHls
ZVNvdXJjZS5qczwvZmlsZT4KICAgICA8ZmlsZT5TdHlsZXNTb3VyY2VNYXBwaW5nLmpzPC9maWxl
PgotICAgIDxmaWxlPlN0eWxlc1VJU291cmNlQ29kZVByb3ZpZGVyLmpzPC9maWxlPgogICAgIDxm
aWxlPlN0eWxlc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPlRhYmJlZEVkaXRvckNv
bnRhaW5lci5qczwvZmlsZT4KICAgICA8ZmlsZT5UYWJiZWRQYW5lLmpzPC9maWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXgg
MWJlZWZlZDBlODY3NTViOGE3NjYzNDk1NTc3MjFhYzFlMTI0ODkyMS4uY2I5YjhlODZiMTc5NzE4
M2ZhZDQ0Mjg3MDQ3NzA5YTEwOTYwNzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzksNyArMTM5LDYgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJXb3Jrc3BhY2UuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFr
cG9pbnRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXJzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSYXdTb3VyY2VDb2RlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVNjcmlwdE1hcHBp
bmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkNvbXBpbGVyU2NyaXB0TWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iU0FTU1NvdXJjZU1hcHBpbmcuanMiPjwvc2NyaXB0PgpAQCAt
MTYyLDggKzE2MSw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU2NyaXB0U25pcHBldE1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9ncmVzc0Jhci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3R5bGVzU291cmNlTWFwcGluZy5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3R5
bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlN0eWxlU291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlk
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkVsZW1lbnRzUGFuZWxEZXNjcmlwdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUGFuZWxEZXNjcmlwdG9yLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHRzUGFuZWxE
ZXNjcmlwdG9yLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggM2I5OGVkNzdiY2I4OTdjMWI2MGMzOTZhYjAxYjEw
ZjJmMzlhMTMwMy4uNzgyOTY0ZjcyODJlZTU2N2UyZWQ5ODhjZmFhNjMzYmRkN2E0ODIwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAg
LTUyMyw3ICs1MjMsNyBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRp
ZXMgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnNjcmlwdFNuaXBwZXRNb2RlbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsKHRoaXMud29ya3NwYWNlKTsKICAgICBuZXcgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh0aGlzLndvcmtzcGFjZSk7Ci0gICAgbmV3
IFdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlcih0aGlzLndvcmtzcGFjZSk7
CisgICAgbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIodGhpcy53
b3Jrc3BhY2UpOwogICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zYXNz
LmlzRW5hYmxlZCgpKQogICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5n
KHRoaXMud29ya3NwYWNlKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFhYjY5N2ZiYzkzNWQzM2E2ZTExNWY1ZjZjZTM4
YTI1M2VmYmY5YjIuLjI0NTFjMTE4MDk0Y2JmMWYzOGE2OTU4YjQ5NzA0ZDBlOTc1ZmNhZTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wOS0wMyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDcmVhdGUgSmF2YVNjcmlw
dFNvdXJjZXMgYmFzZWQgb24gbmV0d29yayByZXNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM1MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmF3LXNvdXJjZS1jb2RlLmh0bWwg
dGVzdCBhcyBSYXdTb3VyY2VDb2RlIHdhcyByZW1vdmVkIGJ5IHRoaXMgcGF0Y2guCisgICAgICAg
IEFkZGVkIHJlc291cmNlLXNjcmlwdC1tYXBwaW5nLmh0bWwgdG8gdGVzdCBzY3JpcHQgPC0+IHVp
U291cmNlQ29kZSBiaW5kaW5nIGJlaGF2aW9yLgorICAgICAgICBBZGRlZCBuZXR3b3JrLXVpc291
cmNlY29kZS1wcm92aWRlci5odG1sIHRvIHRlc3QgdWlTb3VyY2VDb2RlIGNyZWF0aW9uIGJlaGF2
aW9yLgorICAgICAgICBVcGRhdGVkIGR5bmFtaWMtc2NyaXB0LXRhZy5odG1sIHRvIGJldHRlciBt
YXRjaCBleHBlY3RlZCBiZWhhdmlvci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qczogQWRkZWQuCisgICAgICAg
IChpbml0aWFsaXplX1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVXb3Jrc3BhY2Up
OgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZv
cldvcmtzcGFjZVVJU291cmNlQ29kZVJlcGxhY2VkRXZlbnQudWlTb3VyY2VDb2RlUmVwbGFjZWQp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZv
cldvcmtzcGFjZVVJU291cmNlQ29kZVJlcGxhY2VkRXZlbnQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29k
ZUFkZGVkRXZlbnQudWlTb3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jr
c3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVk
RXZlbnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qu
YWRkTW9ja1VJU291cmNlQ29kZVRvV29ya3NwYWNlKToKKyAgICAgICAgKGluaXRpYWxpemVfV29y
a3NwYWNlVGVzdC5JbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVu
dEhhbmRsZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRl
c3QuZHVtcFVJU291cmNlQ29kZS5kaWRSZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChpbml0aWFs
aXplX1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKToKKyAgICAg
ICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJvdmlk
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2Ut
Y29kZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jhdy1zb3VyY2UtY29kZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbDoKKwogMjAx
Mi0wOS0wMyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFVuaGlkZSBoaWRkZW4gY2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3Qt
cmV2aXNpb24tY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCmluZGV4IGQ2ODM3
YzZiYzIzMDdkOTM5NWI1MzBjNTg1MGEzZTc5NTM0ZGIzYWIuLmU3ZDM5YjU5MzE2MWVjOTcwODA0
MTI2YmQzYTFjYmI2NGZjNmExZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVx
dWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgZnVuY3Rpb24gbG9h
ZFN0eWxlc2hlZXQoKQogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRD
b25zb2xlU25pZmZlcihzdGVwMiwgdHJ1ZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5TdHlsZXNVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUsICJfcmVz
b3VyY2VBZGRlZCIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSwgIl9yZXNvdXJjZUFk
ZGVkIiwgdHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZFN0eWxl
c2hlZXQoKSIpOwogCiAgICAgdmFyIHJlc291cmNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmE3MzY3YzAz
MDE1M2I2ZTU2ZTE1Y2FhOWUyMjVjODUyODJiY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMKQEAgLTAsMCArMSw2
OCBAQAordmFyIGluaXRpYWxpemVfV29ya3NwYWNlVGVzdCA9IGZ1bmN0aW9uKCkgeworCitJbnNw
ZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2U7CitJbnNwZWN0b3JUZXN0LmNyZWF0ZVdvcmtzcGFjZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLldvcmtzcGFjZSgpOworICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMu
VUlTb3VyY2VDb2RlQWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92
aWRlckV2ZW50SGFuZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNv
dXJjZUNvZGVSZXBsYWNlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3Zp
ZGVyRXZlbnRIYW5kbGVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291
cmNlQ29kZVJlbW92ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRl
ckV2ZW50SGFuZGxlcik7Cit9CisKK0luc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291
cmNlQ29kZVJlcGxhY2VkRXZlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0
b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBJbnNwZWN0b3JU
ZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOworICAgIEluc3Bl
Y3RvclRlc3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIHVpU291cmNlQ29k
ZVJlcGxhY2VkKTsKKworICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZVJlcGxhY2VkKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNv
ZGVSZXBsYWNlZCwgdWlTb3VyY2VDb2RlUmVwbGFjZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
UHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBJbnNwZWN0b3JUZXN0Ll9kZWZh
dWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOworICAgICAgICBjYWxsYmFjayhl
dmVudC5kYXRhLnVpU291cmNlQ29kZSwgZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGUpOworICAg
IH0KK30KKworSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRF
dmVudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtz
cGFjZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRl
ci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJj
ZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3Nw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2
ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdWlTb3VyY2VDb2RlQWRkZWQpOworCisgICAgZnVuY3Rp
b24gdWlTb3VyY2VDb2RlQWRkZWQoZXZlbnQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB1aVNvdXJjZUNvZGVBZGRlZCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQs
IEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7
CisgICAgICAgIGNhbGxiYWNrKGV2ZW50LmRhdGEpOworICAgIH0KK30KKworSW5zcGVjdG9yVGVz
dC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UgPSBmdW5jdGlvbih1cmwsIHR5cGUsIGNv
bnRlbnQpCit7CisgICAgdmFyIGlzRG9jdW1lbnQgPSB0eXBlID09PSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUeXBlcy5Eb2N1bWVudDsKKyAgICB2YXIgbW9ja0NvbnRlbnRQcm92aWRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKHR5cGUsIGNvbnRlbnQpOworICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodXJsLCBu
dWxsLCBtb2NrQ29udGVudFByb3ZpZGVyLCAhaXNEb2N1bWVudCk7CisgICAgSW5zcGVjdG9yVGVz
dC50ZXN0V29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsK
K30KKworSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5k
bGVyID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVk
IFVJU291cmNlQ29kZVByb3ZpZGVyIGV2ZW50OiAiICsgZXZlbnQudHlwZSArICIuIik7Cit9CisK
K0luc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwg
Y2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZTog
IiArIHVpU291cmNlQ29kZS51cmwpOworICAgIGlmICh1aVNvdXJjZUNvZGUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiAiICsgdWlTb3VyY2VDb2RlLl9pc0Vk
aXRhYmxlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZSBp
cyBjb250ZW50IHNjcmlwdDogIiArIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAg
IH0KKyAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOwor
CisgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVudEVuY29kZWQs
IG1pbWVUeXBlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1pbWUg
dHlwZTogIiArIG1pbWVUeXBlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJ
U291cmNlQ29kZSBjb250ZW50OiAiICsgY29udGVudCk7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgfQorfQorCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtbWFuYWdlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCmluZGV4IGZiM2QwZDc3NDA5NTc5NzRhOTkzZWJjNzhk
ZjQyOWQ0NDIyMjEwMTUuLmMzZGIwOWUyNmMxMzIxMTg5OWMyODViZThkNzVjYmRjOWZmYWZhNDQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1h
bmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dC1tYW5hZ2VyLmh0bWwKQEAgLTExMSw3ICsxMTEsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBX
b3Jrc3BhY2VNb2NrLnByb3RvdHlwZSA9IHsKICAgICAgICAgX2FkZFVJU291cmNlQ29kZTogZnVu
Y3Rpb24odXJsKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHVybCwgbnVsbCwgbnVsbCwgZGVmYXVsdE1h
cHBpbmcsIGZhbHNlKTsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodXJsLCBudWxsLCBudWxsLCBmYWxzZSk7CisgICAgICAg
ICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyhkZWZhdWx0TWFwcGluZyk7CiAgICAg
ICAgICAgICB1aVNvdXJjZUNvZGVzW3VybF0gPSB1aVNvdXJjZUNvZGU7CiAgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJv
dmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB1aVNvdXJjZUNvZGUpOwogICAgICAgICAg
ICAgcmV0dXJuIHVpU291cmNlQ29kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQKaW5kZXgg
NjkzMGM4ZjA3ODE1NDI3ZDdiYjFjOWE5MzdlOWFlYjllNTcyZjA0OS4uNzYxNTMzMGM0YWRmNjFm
OGYwOTI3MzRiODJlZDZkMGVlN2Y5NzA1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQK
QEAgLTEsMTIgKzEsMjggQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiAxMjMKLVRlc3RzIHRo
YXQgZHluYW1pY2FsbHkgYWRkZWQgc2NyaXB0IHRhZyBnZXRzIGl0cyBvd24gSmF2YVNjcmlwdFNv
dXJjZSBhbmQgaXMgbm90IGJvdW5kIHRvIHRoZSByZXNvdXJjZS4gQnVnIDg3MTE5CitUZXN0cyB0
aGF0IGlubGluZSBzY3JpcHRzIGFuZCBkb2N1bWVudC53cml0ZSBzY3JpcHRzIGdldCBkaWZmZXJl
bnQgdWlTb3VyY2VDb2RlcyB3aXRoIGRpZmZlcmVudCBVUkxzLiBCdWcgODcxMTkKIAogRGVidWdn
ZXIgd2FzIGVuYWJsZWQuCitEdW1waW5nIHNjcmlwdHM6CitzY3JpcHQxOiBmaWxlOi8vL3Vzci9s
b2NhbC9nb29nbGUvaG9tZS92c2V2aWsvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L1dlYktpdC9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFnLmh0bWwKK0lz
IGFub255bW91czpmYWxzZQorSXMgaW5saW5lIHNjcmlwdDp0cnVlCitzY3JpcHQyOiBmaWxlOi8v
L3Vzci9sb2NhbC9nb29nbGUvaG9tZS92c2V2aWsvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L1dl
YktpdC9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFnLmh0
bWwKK0lzIGFub255bW91czpmYWxzZQorSXMgaW5saW5lIHNjcmlwdDpmYWxzZQorc2NyaXB0Mzog
ZmlsZTovLy91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvdnNldmlrL2Nocm9taXVtL3NyYy90aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0
LXRhZy5odG1sCiBJcyBhbm9ueW1vdXM6ZmFsc2UKIElzIGlubGluZSBzY3JpcHQ6ZmFsc2UKLWR5
bmFtaWMtc2NyaXB0LXRhZy5odG1sCi1VSSBuYW1lOiBkeW5hbWljLXNjcmlwdC10YWcuaHRtbAor
RHVtcGluZyB1aVNvdXJjZUNvZGVzOgorVUlTb3VyY2VDb2RlOiBmaWxlOi8vL3Vzci9sb2NhbC9n
b29nbGUvaG9tZS92c2V2aWsvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFnLmh0bWwgKDEpCitVSVNv
dXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKK1VJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlw
dDogZmFsc2UKK01pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0CitVSVNvdXJjZUNvZGUgY29udGVu
dDogZnVuY3Rpb24gYmFyKCkgeyB9CitVSSByZXNvdXJjZTogbnVsbAorVUlTb3VyY2VDb2RlOiBm
aWxlOi8vL3Vzci9sb2NhbC9nb29nbGUvaG9tZS92c2V2aWsvY2hyb21pdW0vc3JjL3RoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQt
dGFnLmh0bWwgKDIpCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKK1VJU291cmNlQ29k
ZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKK01pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0CitV
SVNvdXJjZUNvZGUgY29udGVudDogZnVuY3Rpb24gZm9vKCkgeyB9CiBVSSByZXNvdXJjZTogbnVs
bAotVUkgY29udGVudDogY29uc29sZS5sb2coMTIzKQogRGVidWdnZXIgd2FzIGRpc2FibGVkLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3Jp
cHQtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3Jp
cHQtdGFnLmh0bWwKaW5kZXggYjQ1MzY4Y2IxYjVhN2EzYWI1Y2VhZmJjYjI3MWZjY2U0MzYyNWQx
ZS4uNTI3OTg3YjEyZDE3OTJjZTdhYmE1OWVlMWYzNGM3ZTMyODM2YTlhNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRt
bApAQCAtMiw1MSArMiw3OSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgotCis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KK2RvY3VtZW50LndyaXRlKCI8c2NyaXAiICsgInQ+ZnVuY3Rp
b24gZm9vKCkgeyB9PC9zYyIgKyAicmlwdD4iKTsKK3ZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CitzY3JpcHRFbGVtZW50LnRleHRDb250ZW50ID0g
ImZ1bmN0aW9uIGJhcigpIHsgfSI7Citkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdEVs
ZW1lbnQpOwogCi1mdW5jdGlvbiBjcmVhdGVTY3JpcHRUYWcoKQotewotICAgIHZhciBzY3JpcHQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKLSAgICBzY3JpcHQuaW5uZXJIVE1M
ID0gImNvbnNvbGUubG9nKDEyMykiOwotICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2Ny
aXB0KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKICAg
ICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAogICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNy
ZWF0ZVNjcmlwdFRhZygpIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNj
cmlwdFNvdXJjZSwgc3RlcDIpOwotICAgIH0KKyAgICAgICAgdmFyIG1vZGVsID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWw7CiAKLSAgICBmdW5jdGlvbiBzdGVwMihldmVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciBzY3JpcHQgPSBldmVudC5kYXRhOwotICAgICAgICBzY3JpcHQucmVxdWVzdENv
bnRlbnQoY2FsbGJhY2spOwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhjb250ZW50KQorICAg
ICAgICB2YXIgc2NyaXB0cyA9IE9iamVjdC52YWx1ZXMoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuc2NyaXB0cyk7CisgICAgICAgIGZ1bmN0aW9uIGZpbHRlck91dFN0YW5kYWxvbmVTY3JpcHRz
KHNjcmlwdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRlbnQgIT09ICJjb25zb2xl
LmxvZygxMjMpIikKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
c2NyaXB0LnNvdXJjZVVSTC5pbmRleE9mKCJkeW5hbWljLXNjcmlwdC10YWcuaHRtbCIpICE9PSAt
MTsKKyAgICAgICAgfQorICAgICAgICBzY3JpcHRzID0gc2NyaXB0cy5maWx0ZXIoZmlsdGVyT3V0
U3RhbmRhbG9uZVNjcmlwdHMpOworCisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVTY3JpcHRGdW5j
dGlvbihzY3JpcHQxLCBzY3JpcHQyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc2Ny
aXB0MS5zb3VyY2VVUkwubG9jYWxlQ29tcGFyZShzY3JpcHQyLnNvdXJjZVVSTCk7CisgICAgICAg
IH0KKyAgICAgICAgc2NyaXB0cy5zb3J0KGNvbXBhcmVTY3JpcHRGdW5jdGlvbik7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDMsIHNjcmlwdHMubGVuZ3RoLCAiV3Jvbmcgc2Ny
aXB0cyBjb3VudC4iKTsKKworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFtdOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtcGluZyBzY3JpcHRzOiIpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciBzY3JpcHQgPSBzY3JpcHRzW2ldOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoInNjcmlwdCIgKyAoaSsxKSArICI6ICIgKyBzY3JpcHQuc291cmNlVVJMKTsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJJcyBhbm9ueW1vdXM6IiArIHNjcmlwdC5pc0Fu
b255bW91c1NjcmlwdCgpKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJJ
cyBpbmxpbmUgc2NyaXB0OiIgKyBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSk7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChuZXcgV2ViSW5zcGVjdG9yLlBhcnNlZFVSTChzY3Jp
cHQuc291cmNlVVJMKS5kaXNwbGF5TmFtZSk7Ci0gICAgICAgICAgICAvLyBJbnZva2UgcG9zdCBz
b3VyY2UgbWFwIGluc3RhbGwuCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAzLmJpbmQodGhp
cywgc2NyaXB0KSwgMCk7CisgICAgICAgICAgICBpZiAoIXNjcmlwdC5pc0lubGluZVNjcmlwdCgp
KQorICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZXMucHVzaChzY3JpcHQucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24oMCwgMCkudWlTb3VyY2VDb2RlKTsKICAgICAgICAgfQotICAgIH0KIAotICAg
IGZ1bmN0aW9uIHN0ZXAzKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0g
c2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDApOwotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiVUkgbmFtZTogIiArIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnBhcnNl
ZFVSTC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSSBy
ZXNvdXJjZTogIiArIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnJlc291cmNlKCkpOwotICAgICAg
ICB1aUxvY2F0aW9uLnVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7Ci0gICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGNvbnRlbnQpCisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVV
SVNvdXJjZUNvZGVGdW5jdGlvbih1aVNvdXJjZUNvZGUxLCB1aVNvdXJjZUNvZGUyKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gdWlTb3VyY2VDb2RlMS51cmwubG9jYWxlQ29tcGFyZSh1
aVNvdXJjZUNvZGUyLnVybCk7CisgICAgICAgIH0KKyAgICAgICAgdWlTb3VyY2VDb2Rlcy5zb3J0
KGNvbXBhcmVVSVNvdXJjZUNvZGVGdW5jdGlvbik7CisKKyAgICAgICAgdmFyIHNlZW5VSVNvdXJj
ZUNvZGVzID0gbmV3IE1hcCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygy
LCB1aVNvdXJjZUNvZGVzLmxlbmd0aCwgIldyb25nIHVpU291cmNlQ29kZXMgY291bnQuIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1waW5nIHVpU291cmNlQ29kZXM6Iik7
CisgICAgICAgIAorICAgICAgICB2YXIgaW5kZXggPSAwOworICAgICAgICBkdW1wTmV4dFVJU291
cmNlQ29kZSgpOworICAgICAgICBmdW5jdGlvbiBkdW1wTmV4dFVJU291cmNlQ29kZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSB1aVNvdXJjZUNvZGVzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZXNEdW1wZWQoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdWlT
b3VyY2VDb2Rlc1tpbmRleF07CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGVEdW1wZWQpOworCisgICAgICAgICAgICBm
dW5jdGlvbiB1aVNvdXJjZUNvZGVEdW1wZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSSByZXNvdXJjZTogIiArIHVpU291cmNlQ29k
ZS5yZXNvdXJjZSgpKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUo
IXNlZW5VSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGUpLCAiVUlTb3VyY2VDb2RlIG1hdGNo
ZXMgdHdvIHNjcmlwdHM6ICIgKyB1aVNvdXJjZUNvZGUudXJsKTsKKyAgICAgICAgICAgICAgICBz
ZWVuVUlTb3VyY2VDb2Rlcy5wdXQodWlTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUpOworICAgICAg
ICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgZHVtcE5leHRVSVNvdXJjZUNvZGUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24g
dWlTb3VyY2VDb2Rlc0R1bXBlZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJVSSBjb250ZW50OiAiICsgY29udGVudCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01
NCwxMCArODIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyB0aGF0IGR5bmFtaWNhbGx5IGFkZGVkIHNj
cmlwdCB0YWcgZ2V0cyBpdHMgb3duIEphdmFTY3JpcHRTb3VyY2UgYW5kIGlzIG5vdCBib3VuZCB0
byB0aGUgcmVzb3VyY2UuCis8cD5UZXN0cyB0aGF0IGlubGluZSBzY3JpcHRzIGFuZCBkb2N1bWVu
dC53cml0ZSBzY3JpcHRzIGdldCBkaWZmZXJlbnQgdWlTb3VyY2VDb2RlcyB3aXRoIGRpZmZlcmVu
dCBVUkxzLgogPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MTE5Ij5CdWcgODcxMTk8L2E+Ci08L3A+CiA8L2JvZHk+Ci0KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1w
cm92aWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0
d29yay11aXNvdXJjZWNvZGUtcHJvdmlkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkx
ZjIxN2QyZWViMzZlMjdmNTdiOTQ5ODM5OGJhMWYwZjdiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbmV0d29yay11aXNvdXJjZWNvZGUtcHJvdmlk
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1Rlc3RzIE5ldHdvcmtVSVNvdXJjZUNv
ZGVQcm92aWRlciBjbGFzcy4KKworCitSdW5uaW5nOiB0ZXN0RG9jdW1lbnRSZXNvdXJjZVdpdGhQ
ZW5kaW5nUmVxdWVzdAorQ3JlYXRpbmcgcmVxdWVzdC4KK0ZpbmlzaGluZyByZXF1ZXN0LgorVUlT
b3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvMgorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBm
YWxzZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0
ZXh0L2h0bWwKK1VJU291cmNlQ29kZSBjb250ZW50OiA8ZG9jdW1lbnQgcmVxdWVzdCBjb250ZW50
PgorCitSdW5uaW5nOiB0ZXN0RG9jdW1lbnRSZXNvdXJjZQorQ3JlYXRpbmcgcmVzb3VyY2UuCitV
SVNvdXJjZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC8zCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6
IGZhbHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6
IHRleHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxkb2N1bWVudCByZXNvdXJjZSBjb250
ZW50PgorCitSdW5uaW5nOiB0ZXN0U2NyaXB0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3QKK0Ny
ZWF0aW5nIHJlcXVlc3QuCitGaW5pc2hpbmcgcmVxdWVzdC4KK1VJU291cmNlQ29kZTogaHR0cDov
L2Zha2UudXJsLzQKK1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2Rl
IGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKK1VJ
U291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlcXVlc3QgY29udGVudD4KKworUnVubmluZzog
dGVzdFNjcmlwdFJlc291cmNlCitDcmVhdGluZyByZXNvdXJjZS4KK1VJU291cmNlQ29kZTogaHR0
cDovL2Zha2UudXJsLzUKK1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VD
b2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQK
K1VJU291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5p
bmc6IHRlc3RTdHlsZXNoZWV0UmVzb3VyY2VXaXRoUGVuZGluZ1JlcXVlc3QKK0NyZWF0aW5nIHJl
cXVlc3QuCitVSVNvdXJjZUNvZGU6IGh0dHA6Ly9mYWtlLnVybC82CitGaW5pc2hpbmcgcmVxdWVz
dC4KK01pbWUgdHlwZTogdGV4dC9jc3MKK1VJU291cmNlQ29kZSBjb250ZW50OiA8c3R5bGVzaGVl
dCByZXF1ZXN0IGNvbnRlbnQ+CisKK1J1bm5pbmc6IHRlc3RTdHlsZXNoZWV0UmVzb3VyY2UKK0Ny
ZWF0aW5nIHJlc291cmNlLgorVUlTb3VyY2VDb2RlOiBodHRwOi8vZmFrZS51cmwvNworTWltZSB0
eXBlOiB0ZXh0L2NzcworVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxzdHlsZXNoZWV0IHJlc291cmNl
IGNvbnRlbnQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9u
ZXR3b3JrLXVpc291cmNlY29kZS1wcm92aWRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL25ldHdvcmstdWlzb3VyY2Vjb2RlLXByb3ZpZGVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NThkZTI0M2JiMzYyNjY2NDk0ZmI3OTAxNzU0MDYyYTM0YmU4NTdmNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9uZXR3b3JrLXVpc291cmNlY29kZS1w
cm92aWRlci5odG1sCkBAIC0wLDAgKzEsMTczIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci93
b3Jrc3BhY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgdmFyIG1vY2tDb250ZW50c01hcCA9IHt9OworICAgIHZhciBsYXN0UmVzb3VjZUlkID0g
MTsKKworICAgIE5ldHdvcmtBZ2VudC5nZXRSZXNwb25zZUJvZHkgPSBmdW5jdGlvbihyZXF1ZXN0
SWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBtb2NrQ29u
dGVudHNNYXBbcmVxdWVzdElkXSwgZmFsc2UpOworICAgIH0KKworICAgIFBhZ2VBZ2VudC5nZXRS
ZXNvdXJjZUNvbnRlbnQgPSBmdW5jdGlvbihmcmFtZUlkLCB1cmwsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBtb2NrQ29udGVudHNNYXBbdXJsXSwgZmFsc2Up
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCB3aXRoUGVu
ZGluZ1JlcXVlc3QsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgZG9jdW1lbnRVUkwgPSAi
aHR0cDovL2Zha2UudXJsIjsKKyAgICAgICAgdmFyIHJlc291cmNlSWQgPSArK2xhc3RSZXNvdWNl
SWQgKyAiIjsKKyAgICAgICAgdmFyIHVybCA9IGRvY3VtZW50VVJMICsgIi8iICsgcmVzb3VyY2VJ
ZDsKKyAgICAgICAgdmFyIGZyYW1lSWQgPSAiZnJhbWUtaWQiOworICAgICAgICB2YXIgbG9hZGVy
SWQgPSAibG9hZGVyLWlkIjsKKyAgICAgICAgdmFyIG1pbWVUeXBlOworICAgICAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVu
dDoKKyAgICAgICAgICAgIG1pbWVUeXBlID0gInRleHQvaHRtbCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQ6CisgICAg
ICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldDoKKyAg
ICAgICAgICAgIG1pbWVUeXBlID0gInRleHQvY3NzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHdpdGhQZW5kaW5nUmVxdWVzdCkgeworICAgICAgICAgICAg
dmFyIHJlcXVlc3QgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0KHJlc291cmNlSWQs
IHVybCwgImh0dHA6Ly9mYWtlLnVybCIsIGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAgICAg
IHJlcXVlc3QudHlwZSA9IHR5cGU7CisgICAgICAgICAgICByZXF1ZXN0Lm1pbWVUeXBlID0gbWlt
ZVR5cGU7CisgICAgICAgICAgICBtb2NrQ29udGVudHNNYXBbcmVzb3VyY2VJZF0gPSBjb250ZW50
OworICAgICAgICB9CisgICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UocmVxdWVzdCwgdXJsLCBkb2N1bWVudFVSTCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUs
IG1pbWVUeXBlKTsKKyAgICAgICAgbW9ja0NvbnRlbnRzTWFwW3VybF0gPSBjb250ZW50OworICAg
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRk
ZWQsIHJlc291cmNlKTsKKworICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZmluaXNoUmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNvdXJj
ZS5yZXF1ZXN0LmZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdC5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5G
aW5pc2hlZExvYWRpbmcsIHJlc291cmNlLnJlcXVlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGNyZWF0ZU5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlcigpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZVdvcmtzcGFjZSgpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdCgpOworICAgICAgICB2YXIgbmV0
d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlKTsgCisgICAgICAgIHJl
dHVybiBuZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXI7CisgICAgfQorCisgICAgSW5zcGVjdG9y
VGVzdC5ydW5UZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0RG9jdW1lbnRSZXNvdXJj
ZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV0
d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3Zp
ZGVyKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyBy
ZXF1ZXN0LiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2Nr
KFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50LCB0cnVlLCAiPGRvY3VtZW50IHJl
cXVlc3QgY29udGVudD4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29y
a3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudCh1aVNvdXJjZUNvZGVBZGRlZCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVlc3QuIik7CisgICAg
ICAgICAgICBmaW5pc2hSZXNvdXJjZShyZXNvdXJjZSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0RG9j
dW1lbnRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKCk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRpbmcgcmVzb3VyY2Uu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNv
ZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVu
dCwgZmFsc2UsICI8ZG9jdW1lbnQgcmVzb3VyY2UgY29udGVudD4iKTsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUsIG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RTY3JpcHRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgdHJ1
ZSwgIjxzY3JpcHQgcmVxdWVzdCBjb250ZW50PiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFk
ZGVkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGaW5pc2hpbmcgcmVx
dWVzdC4iKTsKKyAgICAgICAgICAgIGZpbmlzaFJlc291cmNlKHJlc291cmNlKTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUsIG5leHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1
bmN0aW9uIHRlc3RTY3JpcHRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ3JlYXRp
bmcgcmVzb3VyY2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3Bh
Y2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAg
IHZhciByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlTW9jayhXZWJJbnNwZWN0b3IucmVzb3VyY2VU
eXBlcy5TY3JpcHQsIGZhbHNlLCAiPHNjcmlwdCByZXNvdXJjZSBjb250ZW50PiIpOworCisgICAg
ICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZSwgbmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdFN0eWxlc2hlZXRSZXNvdXJjZVdpdGhQZW5kaW5nUmVxdWVzdChuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgZW5kVGVzdENhbGxzTGVmdCA9IDI7CisgICAgICAg
ICAgICB2YXIgbmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyID0gY3JlYXRlTmV0d29ya1VJU291
cmNlQ29kZVByb3ZpZGVyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDcmVhdGluZyByZXF1ZXN0LiIpOworICAgICAg
ICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLlN0eWxlc2hlZXQsIHRydWUsICI8c3R5bGVzaGVldCByZXF1ZXN0IGNvbnRlbnQ+
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmluaXNoaW5nIHJlcXVl
c3QuIik7CisgICAgICAgICAgICBmaW5pc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAg
ICBlbmRUZXN0KCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVp
U291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBlbmRUZXN0KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKC0tZW5kVGVzdENhbGxzTGVmdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbiB0ZXN0U3R5bGVzaGVldFJlc291cmNlKG5leHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBuZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgPSBjcmVhdGVO
ZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJDcmVhdGluZyByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRk
ZWQpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2VNb2NrKFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQsIGZhbHNlLCAiPHN0eWxlc2hlZXQgcmVz
b3VyY2UgY29udGVudD4iKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRk
ZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOworICAgICAgICAgICAg
fQorICAgICAgICB9LAorICAgIF0pOworfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyIGNs
YXNzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNzE4MDZhYmViMTUxOTY2MzYyNjg4ZjVlMGJkNjk2MDI0
YWZiYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1UZXN0cyBSYXdTb3VyY2VDb2RlIGNsYXNz
LgotCi0KLVJ1bm5pbmc6IHRlc3RTY3JpcHRXaXRob3V0UmVzb3VyY2UKLVVJU291cmNlQ29kZTog
Zm9vLmpzCi1VSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IHRydWUKLU1pbWUgdHlwZTog
dGV4dC9qYXZhc2NyaXB0Ci1TY3JpcHQgc291cmNlOiA8c2NyaXB0IHNvdXJjZT4KLQotUnVubmlu
ZzogdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNlCi1BZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBw
ZW5kaW5nIHJlcXVlc3QuCi1VSVNvdXJjZUNvZGU6IGluZGV4Lmh0bWwKLVVJU291cmNlQ29kZSBp
cyBjb250ZW50IHNjcmlwdDogZmFsc2UKLU1pbWUgdHlwZTogdGV4dC9odG1sCi1TY3JpcHQgc291
cmNlOiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48L3NjcmlwdD4KLUFkZGluZyBzZWNvbmQg
c2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuCi1VSVNvdXJjZUNvZGU6IGluZGV4Lmh0bWwKLVVJ
U291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKLU1pbWUgdHlwZTogdGV4dC9odG1s
Ci1TY3JpcHQgc291cmNlOiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48L3NjcmlwdD4gPHNj
cmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvc2NyaXB0PgotRmluaXNoaW5nIHJlcXVlc3QuCi1VSVNv
dXJjZUNvZGU6IGluZGV4Lmh0bWwKLVVJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlwdDogZmFs
c2UKLU1pbWUgdHlwZTogdGV4dC9odG1sCi1TY3JpcHQgc291cmNlOiA8cmVzb3VyY2UgY29udGVu
dD4KLQotUnVubmluZzogdGVzdEhUTUxXaXRoRmluaXNoZWRSZXNvdXJjZQotVUlTb3VyY2VDb2Rl
OiBpbmRleC5odG1sCi1VSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCi1NaW1l
IHR5cGU6IHRleHQvaHRtbAotU2NyaXB0IHNvdXJjZTogPHJlc291cmNlIGNvbnRlbnQ+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUzMmI4ZTZkMWI3OWE4MDU3NzM1NWNl
NjAxMmMzY2U5MmNmOWFkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIt
dGVzdC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHZhciBtb2NrQ29udGVudHNNYXAgPSB7fTsKLSAgICB2YXIgbGFzdFJlcXVlc3RJZCA9IDE7Ci0K
LSAgICBOZXR3b3JrQWdlbnQuZ2V0UmVzcG9uc2VCb2R5ID0gZnVuY3Rpb24ocmVxdWVzdElkLCBj
YWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgbW9ja0NvbnRlbnRz
TWFwW3JlcXVlc3RJZF0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBQYWdlQWdlbnQuZ2V0UmVzb3Vy
Y2VDb250ZW50ID0gZnVuY3Rpb24oZnJhbWVJZCwgdXJsLCBjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgbW9ja0NvbnRlbnRzTWFwW3VybF0sIGZhbHNlKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0TW9jayh0eXBlLCBmaW5pc2hlZCwgY29u
dGVudCkKLSAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0SWQgPSArK2xhc3RSZXF1ZXN0SWQgKyAi
IjsKLSAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZmFrZS51cmwvIiArIHJlcXVlc3RJZDsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLl9hZGRGcmFtZShuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUZyYW1lKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbCwg
bnVsbCwge2lkOiAiZnJhbWUtaWQifSkpOwotICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuTmV0d29ya1JlcXVlc3QocmVxdWVzdElkLCB1cmwsICJodHRwOi8vZmFrZS51cmwi
LCAiZnJhbWUtaWQiLCAibG9hZGVyLWlkIik7Ci0gICAgICAgIHJlcXVlc3QudHlwZSA9IHR5cGUg
PT09ICJkb2N1bWVudCIgPyBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCA6IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdDsKLSAgICAgICAgcmVxdWVzdC5taW1lVHlw
ZSA9IHR5cGUgPT09ICJkb2N1bWVudCIgPyAidGV4dC9odG1sIiA6ICJ0ZXh0L2phdmFzY3JpcHQi
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5fZGlzcGF0Y2hlci5fc3Rh
cnROZXR3b3JrUmVxdWVzdChyZXF1ZXN0KTsKLSAgICAgICAgaWYgKGZpbmlzaGVkKQotICAgICAg
ICAgICAgZmluaXNoUmVxdWVzdChyZXF1ZXN0KTsKLQotICAgICAgICBtb2NrQ29udGVudHNNYXBb
cmVxdWVzdElkXSA9IGNvbnRlbnQ7Ci0gICAgICAgIG1vY2tDb250ZW50c01hcFt1cmxdID0gY29u
dGVudDsKLSAgICAgICAgcmV0dXJuIHJlcXVlc3Q7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmlu
aXNoUmVxdWVzdChyZXF1ZXN0KSB7IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5fZGlzcGF0
Y2hlci5fdXBkYXRlTmV0d29ya1JlcXVlc3QocmVxdWVzdCk7IFdlYkluc3BlY3Rvci5uZXR3b3Jr
TWFuYWdlci5fZGlzcGF0Y2hlci5fZmluaXNoTmV0d29ya1JlcXVlc3QocmVxdWVzdCk7IH0KLSAg
ICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nUmVxdWVzdE1vY2sodHlwZSwgY29udGVudCkgeyByZXR1
cm4gY3JlYXRlUmVxdWVzdE1vY2sodHlwZSwgZmFsc2UsIGNvbnRlbnQpOyB9Ci0gICAgZnVuY3Rp
b24gY3JlYXRlRmluaXNoZWRSZXF1ZXN0TW9jayh0eXBlLCBjb250ZW50KSB7IHJldHVybiBjcmVh
dGVSZXF1ZXN0TW9jayh0eXBlLCB0cnVlLCBjb250ZW50KTsgfQotCi0gICAgZnVuY3Rpb24gY3Jl
YXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpCi0gICAgewotICAgICAgICB2YXIgbWFwcGluZyA9IHsK
LSAgICAgICAgICAgIG9yaWdpbmFsVG9Gb3JtYXR0ZWQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikgeyByZXR1cm4gW2xpbmVOdW1iZXIgKiAyLCBjb2x1bW5OdW1iZXIgKiAyXTsg
fSwKLSAgICAgICAgICAgIGZvcm1hdHRlZFRvT3JpZ2luYWw6IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikgeyByZXR1cm4gW01hdGguZmxvb3IobGluZU51bWJlciAvIDIpLCBNYXRo
LmZsb29yKGNvbHVtbk51bWJlciAvIDIpXTsgfQotICAgICAgICB9OwotICAgICAgICB2YXIgZm9y
bWF0dGVyID0gewotICAgICAgICAgICAgZm9ybWF0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUs
IGNvbnRlbnQsIGNhbGxiYWNrKSB7IGZvcm1hdHRlci5fY2FsbGJhY2sgPSBjYWxsYmFjay5iaW5k
KG51bGwsICI8Zm9ybWF0dGVkPiAiICsgY29udGVudCwgbWFwcGluZyk7IH0sCi0gICAgICAgICAg
ICBmaW5pc2g6IGZ1bmN0aW9uKCkgeyBmb3JtYXR0ZXIuX2NhbGxiYWNrKCk7IH0KLSAgICAgICAg
fTsKLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlcjsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gY3Jl
YXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlcXVlc3QsIGNvbXBpbGVyU291cmNlTWFwcGluZykK
LSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgIGlmIChyZXF1ZXN0
ICYmIHJlcXVlc3QuZmluaXNoZWQpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKQotICAgICAgICAgICAgcmVxdWVzdCA9IG51
bGw7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0LCByZXNvdXJjZSwgcmVxdWVzdCwgY29tcGls
ZXJTb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCBk
ZWZhdWx0VUlTb3VyY2VDb2RlQ2hhbmdlZEhhbmRsZXIpOwotICAgICAgICByZXR1cm4gcmF3U291
cmNlQ29kZTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3YWl0Rm9yVUlTb3VyY2VDb2RlQ2hhbmdl
ZEV2ZW50KHJhd1NvdXJjZUNvZGUsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmF3U291cmNl
Q29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50
cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCBkZWZhdWx0VUlTb3VyY2VDb2RlQ2hhbmdlZEhhbmRsZXIp
OwotICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHVpU291cmNlQ29kZUNoYW5n
ZWQpOwotICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVDaGFuZ2VkKGV2ZW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUNoYW5nZWQsIHVpU291cmNl
Q29kZUNoYW5nZWQpOwotICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVDaGFuZ2VkLCBk
ZWZhdWx0VUlTb3VyY2VDb2RlQ2hhbmdlZEhhbmRsZXIpOwotICAgICAgICAgICAgY2FsbGJhY2so
ZXZlbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZGVmYXVsdFVJU291cmNl
Q29kZUNoYW5nZWRIYW5kbGVyKCkKLSAgICB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5l
eHBlY3RlZCBVSVNvdXJjZUNvZGVDaGFuZ2VkIGV2ZW50LiIpOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGNyZWF0ZVJhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29s
dW1uTnVtYmVyIH07Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWwot
ICAgICAgICBmdW5jdGlvbiB0ZXN0U2NyaXB0V2l0aG91dFJlc291cmNlKG5leHQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOwotICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiZm9v
LmpzIiwgMCwgMCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOwotICAgICAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgbnVsbCk7Ci0KLSAgICAg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpOwot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZTogIiArIHJh
d1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCkudXJsKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJj
ZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tV
SUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMCwgNSwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRv
VUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigwLCA1KSkpOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHJhd1NvdXJjZUNvZGUudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAxMCwgMCkpOwotICAgICAgICAgICAg
dWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKLQotICAgICAg
ICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVudEVuY29kZWQs
IG1pbWVUeXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJNaW1lIHR5cGU6ICIgKyBtaW1lVHlwZSk7Ci0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2U6ICIgKyBjb250ZW50KTsKLSAgICAg
ICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24gdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOwotICAgICAgICAg
ICAgdmFyIHNjcmlwdDEgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0
bWwiLCAwLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOwotICAgICAgICAgICAgdmFy
IHNjcmlwdDIgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAw
LCA0NSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAyPiIpOwotICAgICAgICAgICAgdmFyIHJlcXVl
c3QgPSBjcmVhdGVQZW5kaW5nUmVxdWVzdE1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250
ZW50PiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBmaXJz
dCBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgIHZhciByYXdTb3Vy
Y2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXF1ZXN0KTsKLQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29k
ZSgpKTsKLQotICAgICAgICAgICAgd2FpdEZvclVJU291cmNlQ29kZUNoYW5nZWRFdmVudChyYXdT
b3VyY2VDb2RlLCB1aVNvdXJjZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICByYXdTb3VyY2VDb2Rl
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDAsIDEwKSk7Ci0gICAg
ICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZChldmVudCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWV2ZW50LmRhdGEub2xk
VUlTb3VyY2VDb2RlKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUo
ISFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpKTsKLSAgICAgICAgICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiVUlTb3VyY2VDb2RlOiAiICsgdWlTb3VyY2VDb2Rl
LnVybCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNl
Q29kZSBpcyBjb250ZW50IHNjcmlwdDogIiArIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQp
OwotICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0
Q29udGVudCk7Ci0KLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChj
b250ZW50LCBjb250ZW50RW5jb2RlZCwgbWltZVR5cGUpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWltZSB0eXBlOiAiICsg
bWltZVR5cGUpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
U2NyaXB0IHNvdXJjZTogIiArIGNvbnRlbnQpOwotCi0gICAgICAgICAgICAgICAgICAgIHdhaXRG
b3JVSVNvdXJjZUNvZGVDaGFuZ2VkRXZlbnQocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlQ2hh
bmdlZEFmdGVyU2NyaXB0QWRkZWQpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWRkaW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4iKTsK
LSAgICAgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7Ci0g
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9u
IHVpU291cmNlQ29kZUNoYW5nZWRBZnRlclNjcmlwdEFkZGVkKGV2ZW50KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShldmVudC5kYXRhLm9s
ZFVJU291cmNlQ29kZSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVl
KCEhcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlVJU291cmNlQ29kZTogIiArIHVpU291cmNlQ29k
ZS51cmwpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSVNvdXJj
ZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6ICIgKyB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0
KTsKLSAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVz
dENvbnRlbnQpOwotCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQo
Y29udGVudCwgY29udGVudEVuY29kZWQsIG1pbWVUeXBlKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1pbWUgdHlwZTogIiAr
IG1pbWVUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlNjcmlwdCBzb3VyY2U6ICIgKyBjb250ZW50KTsKLQotICAgICAgICAgICAgICAgICAgICB3YWl0
Rm9yVUlTb3VyY2VDb2RlQ2hhbmdlZEV2ZW50KHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZUNo
YW5nZWRBZnRlclJlcXVlc3RGaW5pc2hlZCk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJGaW5pc2hpbmcgcmVxdWVzdC4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoUmVxdWVzdChyZXF1ZXN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQ2hhbmdlZEFmdGVyUmVx
dWVzdEZpbmlzaGVkKGV2ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0VHJ1ZShldmVudC5kYXRhLm9sZFVJU291cmNlQ29kZSk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlKCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlVJU291cmNlQ29kZTogIiArIHVpU291cmNlQ29kZS51cmwpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6
ICIgKyB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAgICAgICB1aVNv
dXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOwotCi0gICAgICAgICAg
ICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQoY29udGVudCwgY29udGVudEVuY29kZWQs
IG1pbWVUeXBlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIk1pbWUgdHlwZTogIiArIG1pbWVUeXBlKTsKLSAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBzb3VyY2U6ICIgKyBjb250
ZW50KTsKLQotICAgICAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24gdGVzdEhUTUxX
aXRoRmluaXNoZWRSZXNvdXJjZShuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQxID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZhbHNl
LCAiPHNjcmlwdCBzb3VyY2UgMT4iKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQyID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgNSwgNDUsIGZhbHNlLCAiPHNj
cmlwdFxuc291cmNlXG4yPiIpOwotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBjcmVhdGVGaW5p
c2hlZFJlcXVlc3RNb2NrKCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKLSAgICAg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCBy
ZXF1ZXN0KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291
cmNlQ29kZS51aVNvdXJjZUNvZGUoKSk7Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
cmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJVSVNvdXJjZUNvZGU6ICIgKyB1aVNvdXJjZUNvZGUudXJsKTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3Jp
cHQ6ICIgKyB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAgICAgICAgICAgIHVpU291
cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KGNvbnRlbnQsIGNvbnRlbnRFbmNvZGVkLCBtaW1l
VHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiTWltZSB0eXBlOiAiICsgbWltZVR5cGUpOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJTY3JpcHQgc291cmNlOiAiICsgY29udGVudCk7Ci0KLSAgICAgICAg
ICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQyKTsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIwLCByYXdT
b3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIw
KSkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3Jp
cHQxLCAxLCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNl
Q29kZSwgMSwgMCkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2Nh
dGlvbihzY3JpcHQyLCA2LCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9u
KHVpU291cmNlQ29kZSwgNiwgMCkpOwotCi0gICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19OwotCi08L3NjcmlwdD4KLQotPC9oZWFkPgot
Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBSYXdTb3VyY2VDb2RlIGNsYXNz
LjwvcD4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWZhOWMyMTE2ZjhhMzViZjY4NzA5YTU1MThkNDY0NDBjNWU2MzY4
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNv
dXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MSBAQAorVGVzdHMg
UmVzb3VyY2VTY3JpcHRNYXBwaW5nIGNsYXNzLgorCisKK1J1bm5pbmc6IHRlc3RTY3JpcHRXaXRo
UGVuZGluZ1Jlc291cmNlCitBZGRpbmcgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuCitVSVNv
dXJjZUNvZGU6IGZvby5qcworVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiB0cnVlCitVSVNvdXJj
ZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IHRydWUKK01pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0
CitVSVNvdXJjZUNvZGUgY29udGVudDogPGNvbnRlbnQgc2NyaXB0IHNvdXJjZT4KK0FkZGluZyB1
aVNvdXJjZUNvZGUgZm9yIGZpbmlzaGVkIHJlc291cmNlLgorVUlTb3VyY2VDb2RlOiBmb28uanMK
K1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQg
c2NyaXB0OiB0cnVlCitNaW1lIHR5cGU6IHRleHQvamF2YXNjcmlwdAorVUlTb3VyY2VDb2RlIGNv
bnRlbnQ6IDxjb250ZW50IHNjcmlwdCByZXNvdXJjZSBjb250ZW50PgorCitSdW5uaW5nOiB0ZXN0
U2NyaXB0V2l0aEZpbmlzaGVkUmVzb3VyY2UKK0FkZGluZyB1aVNvdXJjZUNvZGUgZm9yIGZpbmlz
aGVkIHJlc291cmNlLgorVUlTb3VyY2VDb2RlOiBmb28uanMKK1VJU291cmNlQ29kZSBpcyBlZGl0
YWJsZTogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0
eXBlOiB0ZXh0L2phdmFzY3JpcHQKK1VJU291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlc291
cmNlIGNvbnRlbnQ+CitBZGRpbmcgc2NyaXB0IGZvciBmaW5pc2hlZCByZXF1ZXN0LgorVUlTb3Vy
Y2VDb2RlOiBmb28uanMKK1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogdHJ1ZQorVUlTb3VyY2VD
b2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQK
K1VJU291cmNlQ29kZSBjb250ZW50OiA8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5p
bmc6IHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZQorQWRkaW5nIGZpcnN0IHNjcmlwdCBmb3Ig
cGVuZGluZyByZXF1ZXN0LgorVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUg
aXMgZWRpdGFibGU6IGZhbHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNl
CitNaW1lIHR5cGU6IHRleHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6ICAgPHNjcmlwdD48
c2NyaXB0IHNvdXJjZSAxPjwvc2NyaXB0PgorQWRkaW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRp
bmcgcmVxdWVzdC4KK1VJU291cmNlQ29kZTogaW5kZXguaHRtbAorVUlTb3VyY2VDb2RlIGlzIGVk
aXRhYmxlOiBmYWxzZQorVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWlt
ZSB0eXBlOiB0ZXh0L2h0bWwKK1VJU291cmNlQ29kZSBjb250ZW50OiAgIDxzY3JpcHQ+PHNjcmlw
dCBzb3VyY2UgMT48L3NjcmlwdD4gPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvc2NyaXB0Pgor
QWRkaW5nIHVpU291cmNlQ29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuCitVSVNvdXJjZUNvZGU6
IGluZGV4Lmh0bWwKK1VJU291cmNlQ29kZSBpcyBlZGl0YWJsZTogZmFsc2UKK1VJU291cmNlQ29k
ZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKK01pbWUgdHlwZTogdGV4dC9odG1sCitVSVNvdXJj
ZUNvZGUgY29udGVudDogPHJlc291cmNlIGNvbnRlbnQ+CisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0
aEZpbmlzaGVkUmVzb3VyY2UKK0FkZGluZyB1aVNvdXJjZUNvZGUgZm9yIGZpbmlzaGVkIHJlc291
cmNlLgorVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6
IGZhbHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNlCitNaW1lIHR5cGU6
IHRleHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxyZXNvdXJjZSBjb250ZW50PgorQWRk
aW5nIGZpcnN0IHNjcmlwdCBmb3IgZmluaXNoZWQgcmVxdWVzdC4KK1VJU291cmNlQ29kZTogaW5k
ZXguaHRtbAorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQorVUlTb3VyY2VDb2RlIGlz
IGNvbnRlbnQgc2NyaXB0OiBmYWxzZQorTWltZSB0eXBlOiB0ZXh0L2h0bWwKK1VJU291cmNlQ29k
ZSBjb250ZW50OiA8cmVzb3VyY2UgY29udGVudD4KK0FkZGluZyBzZWNvbmQgc2NyaXB0IGZvciBm
aW5pc2hlZCByZXF1ZXN0LgorVUlTb3VyY2VDb2RlOiBpbmRleC5odG1sCitVSVNvdXJjZUNvZGUg
aXMgZWRpdGFibGU6IGZhbHNlCitVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNl
CitNaW1lIHR5cGU6IHRleHQvaHRtbAorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IDxyZXNvdXJjZSBj
b250ZW50PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVz
b3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZTdkNWE5Y2UzMDBm
ODFlY2YwNWEzZTZjYjNhYWRmMGFlOWMxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbApAQCAtMCww
ICsxLDE5OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB3b3Jrc3BhY2U7
CisgICAgZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VTY3JpcHRNYXBwaW5nKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuY3JlYXRlV29ya3NwYWNlKCk7CisgICAgICAgIHZhciByZXNvdXJj
ZVNjcmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJ
bnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UpOworICAgICAgICByZXR1cm4gcmVzb3VyY2VTY3Jp
cHRNYXBwaW5nOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdFNjcmlwdFdpdGhQZW5kaW5nUmVzb3VyY2UobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLl9yZXNldCgpOworICAgICAgICAgICAgdmFyIHJlc291cmNlU2NyaXB0TWFw
cGluZyA9IGNyZWF0ZVJlc291cmNlU2NyaXB0TWFwcGluZygpOworICAgICAgICAgICAgdmFyIHVy
bCA9ICJmb28uanMiOworICAgICAgICAgICAgc3RlcDEoKTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
d2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgc2NyaXB0
IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgc2NyaXB0ID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKHVybCwgMCwgMCwgdHJ1ZSwgIjxjb250ZW50IHNjcmlw
dCBzb3VyY2U+Iik7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNj
cmlwdChzY3JpcHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB1aVNv
dXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBzY3Jp
cHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEwLCAwLCB1aVNvdXJjZUNvZGUudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBzdGVwMik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHVpU291cmNlQ29kZSBmb3Ig
ZmluaXNoZWQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJjZUNvZGVSZXBsYWNl
ZFdpdGhSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29y
a3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudChmdW5jdGlvbigpIHsgfSk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UodXJsLCBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICI8Y29udGVudCBzY3JpcHQgcmVzb3Vy
Y2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdWlT
b3VyY2VDb2RlUmVwbGFjZWRXaXRoUmVzb3VyY2UodWlTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNv
ZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJ
TG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRp
b24oMCwgNSkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlv
bihzY3JpcHQsIDEwLCAwLCB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAs
IDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlT
b3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBm
dW5jdGlvbiB0ZXN0U2NyaXB0V2l0aEZpbmlzaGVkUmVzb3VyY2UobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHNjcmlwdDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLl9yZXNldCgpOworICAgICAgICAgICAgdmFyIG1vY2tVSVNvdXJjZUNvZGU7CisgICAg
ICAgICAgICB2YXIgcmVzb3VyY2VTY3JpcHRNYXBwaW5nID0gY3JlYXRlUmVzb3VyY2VTY3JpcHRN
YXBwaW5nKCk7CisgICAgICAgICAgICB2YXIgdXJsID0gImZvby5qcyI7CisgICAgICAgICAgICBz
dGVwMSgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyB1aVNvdXJjZUNv
ZGUgZm9yIGZpbmlzaGVkIHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlRm9y
UmVzb3VyY2VBZGRlZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlT
b3VyY2VDb2RlVG9Xb3Jrc3BhY2UodXJsLCBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3Jp
cHQsICI8c2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUZvclJlc291cmNlQWRkZWQodWlTb3VyY2VDb2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1vY2tVSVNvdXJjZUNvZGUgPSB1aVNv
dXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZSwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIkFkZGluZyBzY3JpcHQgZm9yIGZpbmlzaGVkIHJlcXVlc3QuIik7CisgICAg
ICAgICAgICAgICAgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKHVybCwg
MCwgMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZT4iKTsKKyAgICAgICAgICAgICAgICByZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jaGVja1VJTG9jYXRpb24obW9ja1VJU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0LnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxMCwgMCwgbW9ja1VJU291cmNlQ29kZS51aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcFVJU291cmNlQ29kZShtb2NrVUlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0SFRNTFdpdGhQZW5kaW5nUmVz
b3VyY2UobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdDE7CisgICAgICAg
ICAgICB2YXIgc2NyaXB0MjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
Ll9yZXNldCgpOworICAgICAgICAgICAgdmFyIHJlc291cmNlU2NyaXB0TWFwcGluZyA9IGNyZWF0
ZVJlc291cmNlU2NyaXB0TWFwcGluZygpOworICAgICAgICAgICAgdmFyIHVybCA9ICJpbmRleC5o
dG1sIjsKKyAgICAgICAgICAgIHN0ZXAxKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JX
b3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIGZpcnN0IHNjcmlwdCBm
b3IgcGVuZGluZyByZXF1ZXN0LiIpOworICAgICAgICAgICAgICAgIHNjcmlwdDEgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2sodXJsLCAwLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJj
ZSAxPiIpOworICAgICAgICAgICAgICAgIHJlc291cmNlU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQo
c2NyaXB0MSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNl
Q29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDEu
cmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzZWNvbmQgc2NyaXB0IGZvciBw
ZW5kaW5nIHJlcXVlc3QuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9y
V29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJjZUNvZGVSZXBsYWNlZCk7
CisgICAgICAgICAgICAgICAgc2NyaXB0MiA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9j
ayh1cmwsIDAsIDQ1LCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDI+Iik7CisgICAgICAgICAgICAg
ICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQyKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlUmVwbGFjZWQodWlTb3VyY2VD
b2RlLCBvbGRVSVNvdXJjZUNvZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQyLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0
aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5p
c2hlZCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JX
b3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50KHVpU291cmNlQ29kZVJlcGxhY2VkV2l0
aFJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3Bh
Y2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFjZSh1cmwsIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZVJlcGxhY2Vk
V2l0aFJlc291cmNlKHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNl
Q29kZSwgMCwgNSwgc2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEwLCAw
LCB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0SFRN
TFdpdGhGaW5pc2hlZFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBz
Y3JpcHQxOworICAgICAgICAgICAgdmFyIHNjcmlwdDI7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKKyAgICAgICAgICAgIHZhciBtb2NrVUlTb3VyY2VD
b2RlOworICAgICAgICAgICAgdmFyIHJlc291cmNlU2NyaXB0TWFwcGluZyA9IGNyZWF0ZVJlc291
cmNlU2NyaXB0TWFwcGluZygpOworICAgICAgICAgICAgdmFyIHVybCA9ICJpbmRleC5odG1sIjsK
KyAgICAgICAgICAgIHN0ZXAxKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRk
aW5nIHVpU291cmNlQ29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudCh1
aVNvdXJjZUNvZGVGb3JSZXNvdXJjZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFjZSh1cmwsIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLkRvY3VtZW50LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUZvclJlc291cmNlQWRkZWQodWlT
b3VyY2VDb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1vY2tVSVNvdXJjZUNv
ZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlT
b3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBmaXJzdCBzY3JpcHQgZm9yIGZpbmlzaGVkIHJl
cXVlc3QuIik7CisgICAgICAgICAgICAgICAgc2NyaXB0MSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
U2NyaXB0TW9jayh1cmwsIDEsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAg
ICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQxKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbihtb2NrVUlTb3VyY2VD
b2RlLCAxLCAyMCwgc2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigxLCAyMCkpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxLCAw
LCBtb2NrVUlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEsIDApKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgNiwgMCwg
bW9ja1VJU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbig2LCAwKSk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKG1vY2tVSVNvdXJjZUNvZGUs
IHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJB
ZGRpbmcgc2Vjb25kIHNjcmlwdCBmb3IgZmluaXNoZWQgcmVxdWVzdC4iKTsKKyAgICAgICAgICAg
ICAgICBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKHVybCwgNSwgNDUs
IGZhbHNlLCAiPHNjcmlwdFxuc291cmNlXG4yPiIpOworICAgICAgICAgICAgICAgIHJlc291cmNl
U2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0Mik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jaGVja1VJTG9jYXRpb24obW9ja1VJU291cmNlQ29kZSwgMSwgMjAsIHNjcmlwdDEu
cmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMSwgMjApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMSwgMCwgbW9ja1VJU291cmNlQ29kZS51
aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDIsIDYsIDAsIG1vY2tVSVNvdXJjZUNvZGUudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24oNiwgMCkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcFVJU291cmNlQ29kZShtb2NrVUlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBSZXNvdXJjZVNjcmlwdE1hcHBpbmcgY2xhc3Mu
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKaW5kZXggYTJmZDU5MTQxZjlhNzAwNjczZTgzNDgzYjgw
Yjk2NGU4ZmYyNDc4Zi4uZTViY2MzOGQ2ZjY3YjQ2NjkwZDdmOWQ2YzkzYTk0Mjc0OWFkMjliMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5o
dG1sCkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIAogICAgIGZ1bmN0aW9u
IGNyZWF0ZVVJU291Y2VDb2RlKHVybCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodXJsLCBudWxsLCBjb250ZW50UHJv
dmlkZXIsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZSh1cmwsIG51bGwsIGNvbnRlbnRQcm92aWRlciwgZmFs
c2UpOwogICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihjYWxs
YmFjaykKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNv
dXJjZSByZXF1ZXN0ZWQgZm9yICIgKyB1cmwpOwo=
</data>
<flag name="review"
          id="172869"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="172872"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>