<?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>190160</bug_id>
          
          <creation_ts>2018-10-01 14:24:58 -0700</creation_ts>
          <short_desc>Web Inspector: rename frontend managers to be more consistent with backend agents</short_desc>
          <delta_ts>2018-10-02 16:40:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190165</blocked>
    
    <blocked>190226</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465230</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-01 14:24:58 -0700</bug_when>
    <thetext>e.g. `WI.FrameResourceManager` should really be `WI.NetworkManager`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465394</commentid>
    <comment_count>1</comment_count>
      <attachid>351343</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-01 22:49:52 -0700</bug_when>
    <thetext>Created attachment 351343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465732</commentid>
    <comment_count>2</comment_count>
      <attachid>351343</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-10-02 12:53:34 -0700</bug_when>
    <thetext>Comment on attachment 351343
Patch

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

Can you put up a new patch after adding the following to your git config:

    [diff]
        renames = copies

I think it would eliminate the full content of files in the diff that were just renamed and instead include an actual diff. Also when it is applied it should perform an svn copy of the files and carry blame history forwards more appropriately.

&gt; Source/WebInspectorUI/ChangeLog:20
&gt; +        * UserInterface/Controllers/DatabaseManager.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/IssueManager.js.

Heh, the ChangeLog says this was copied from IssueManager.js I think probably StorageManager.js?

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:120
&gt;      this.issueManager = new WI.IssueManager;

This one can probably just fold into ConsoleManager. Heck, ConsoleManager is the only thing that adds issues to IssueManager.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:400
&gt; +    this._dashboards = {
&gt; +        default: new WI.DefaultDashboard,
&gt; +        debugger: new WI.DebuggerDashboard,
&gt; +    };

How about we just make this:

    this._defaultDashboard = ...;
    this._debuggerDashboard = ...;

Instead of a `dashboards` object.

&gt; Source/WebInspectorUI/UserInterface/Controllers/ConsoleManager.js:155
&gt; +    PreviousMessageRepeatCountUpdated: &quot;console-manager-previous-message-repeat-count-updated&quot;

Style: Trailing comma

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMStorageManager.js:185
&gt; +    Cleared: &quot;dom-storage-manager-cleared&quot;

Nit: Add the trailing comma. to these so if we add a new event it will be a simple diff.

&gt; Source/WebInspectorUI/UserInterface/Controllers/IndexedDBManager.js:189
&gt; +    Cleared: &quot;indexed-db-manager-cleared&quot;

Style: Trailing comma

&gt; Source/WebInspectorUI/UserInterface/Test/Test.js:-53
&gt; -    this.storageManager = new WI.StorageManager;

Do we not need IndexedDB or Database in tests?!

Please run:

    $ run-webkit-tests --no-retry-failures --no-sample-on-timeout --time-out-ms=5000 --force inspector

And see if there are failures on tests that might be getting skipped by bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465739</commentid>
    <comment_count>3</comment_count>
      <attachid>351343</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-02 13:22:33 -0700</bug_when>
    <thetext>Comment on attachment 351343
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:400
&gt;&gt; +    };
&gt; 
&gt; How about we just make this:
&gt; 
&gt;     this._defaultDashboard = ...;
&gt;     this._debuggerDashboard = ...;
&gt; 
&gt; Instead of a `dashboards` object.

I prefer the idea of separating like objects into containers, similar to &lt;https://webkit.org/b/190165&gt;.  The top-level `WI` is already &quot;polluted&quot; enough.

&gt;&gt; Source/WebInspectorUI/UserInterface/Test/Test.js:-53
&gt;&gt; -    this.storageManager = new WI.StorageManager;
&gt; 
&gt; Do we not need IndexedDB or Database in tests?!
&gt; 
&gt; Please run:
&gt; 
&gt;     $ run-webkit-tests --no-retry-failures --no-sample-on-timeout --time-out-ms=5000 --force inspector
&gt; 
&gt; And see if there are failures on tests that might be getting skipped by bots.

Our IndexedDB tests seem to directly call IndexedDBAgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465740</commentid>
    <comment_count>4</comment_count>
      <attachid>351435</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-02 13:24:05 -0700</bug_when>
    <thetext>Created attachment 351435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465771</commentid>
    <comment_count>5</comment_count>
      <attachid>351435</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 15:15:04 -0700</bug_when>
    <thetext>Comment on attachment 351435
Patch

Clearing flags on attachment: 351435

Committed r236766: &lt;https://trac.webkit.org/changeset/236766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465772</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 15:15:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465774</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-02 15:16:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/44955406&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351343</attachid>
            <date>2018-10-01 22:49:52 -0700</date>
            <delta_ts>2018-10-02 13:24:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190160-20181001224950.patch</filename>
            <type>text/plain</type>
            <size>552221</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdjZWY5MmI4ZDFhM2ExOGMyYmJhOTgxOTI1ODRj
ODcxZDk0Njc3OTAuLmVkYTVhOTM5N2MxMzA0YjhmYzZmMjYwNWRhOGNmMDc3MjY3MDc0ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxOC0xMC0wMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
cmVuYW1lIGZyb250ZW5kIG1hbmFnZXJzIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIGJhY2tl
bmQgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTAxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVz
dC9UZXN0LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFz
ZS9ET01VdGlsaXRpZXMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9B
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0NTU01hbmFnZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMuCisgICAgICAgICog
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qczogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFn
ZXIuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9ET01TdG9yYWdlTWFuYWdlci5qczogQWRkZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2VyLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2VyLmpzOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1h
bmFnZXIuanMuCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IQVJCdWlsZGVy
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdl
ci5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFu
YWdlci5qcy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1hcE1h
bmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1h
bmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlv
blJlcG9ydGVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9DYW52YXMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ29uc29sZU1lc3NhZ2UuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
QnJlYWtwb2ludC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NjcmlwdC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3Jp
cHRUaW1lbGluZVJlY29yZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VNYXBSZXNvdXJjZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGlu
ZVJlY29yZGluZy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2Vy
dmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVy
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9Xb3JrZXJUYXJnZXQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Cb3hN
b2RlbERldGFpbHNTZWN0aW9uUm93LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NhbnZhc1RyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVu
dVV0aWxpdGllcy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3Jh
Z2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFp
bHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2Rl
RGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TU5vZGVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVE
YXRhR3JpZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFBvcG92ZXIuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVy
RGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eWVyVHJlZURhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTG9nQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09i
amVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9PYmplY3RUcmVlVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09wZW5S
ZXNvdXJjZURpYWxvZy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRD
U1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKiBXZWJJbnNwZWN0
b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2o6CisgICAgICAgICogV2ViSW5zcGVj
dG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnM6CisKIDIwMTgtMTAt
MDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlbW92ZSBhbmFseXplciBtYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzCmluZGV4IDViYjUy
MWQ1ODZiODdiOGNmYTgzMTUzMzRlM2U0NmViZTcwODEwMjIuLjUwNjcxMGExZjU0OGZmNzdhOTk3
NTJlZTdlOWU2NWFmNjRkMjhmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzCkBAIC03Nyw5ICs3Nyw5IEBA
IFdJLmxpbmtpZnlOb2RlUmVmZXJlbmNlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUsIGVsZW1lbnQs
IG9wdGlvbnMgPSB7fSkKICAgICBpZiAoKG5vZGVUeXBlICE9PSBOb2RlLkRPQ1VNRU5UX05PREUg
fHwgbm9kZS5wYXJlbnROb2RlKSAmJiBub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpCiAgICAg
ICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm9kZS1saW5rIik7CiAKLSAgICBlbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV0kuZG9tVHJlZU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQu
YmluZChXSS5kb21UcmVlTWFuYWdlciwgbm9kZS5pZCkpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZS5i
aW5kKFdJLmRvbVRyZWVNYW5hZ2VyLCBub2RlLmlkLCAiYWxsIikpOwotICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBXSS5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhp
Z2hsaWdodC5iaW5kKFdJLmRvbVRyZWVNYW5hZ2VyKSk7CisgICAgZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIFdJLmRvbU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQuYmluZChXSS5kb21N
YW5hZ2VyLCBub2RlLmlkKSk7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92
ZXIiLCBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUuYmluZChXSS5kb21NYW5hZ2VyLCBu
b2RlLmlkLCAiYWxsIikpOworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQi
LCBXSS5kb21NYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0LmJpbmQoV0kuZG9tTWFuYWdlcikp
OwogICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCAoZXZlbnQpID0+
IHsKICAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2
ZW50KGV2ZW50KTsKICAgICAgICAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvckRPTU5vZGUo
Y29udGV4dE1lbnUsIG5vZGUsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDViYmY1MDRlMjNiOTQwYWZjNWNiMDBk
NjAzMjI5MTNiYTFjMzBlZjkuLmRhNjVkNDdkODEyMTljOWQxMjc1Yjg4ZmYxY2U2ZWYzM2JmYjEw
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
TWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKQEAgLTExMCwxMSArMTEwLDEzIEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAv
LyBhcyBldmVudCBsaXN0ZW5lcnMgb24gdGhlc2UgbWFuYWdlcnMuCiAgICAgdGhpcy50YXJnZXRN
YW5hZ2VyID0gbmV3IFdJLlRhcmdldE1hbmFnZXI7CiAgICAgdGhpcy5icmFuY2hNYW5hZ2VyID0g
bmV3IFdJLkJyYW5jaE1hbmFnZXI7Ci0gICAgdGhpcy5mcmFtZVJlc291cmNlTWFuYWdlciA9IG5l
dyBXSS5GcmFtZVJlc291cmNlTWFuYWdlcjsKLSAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyID0gbmV3
IFdJLlN0b3JhZ2VNYW5hZ2VyOwotICAgIHRoaXMuZG9tVHJlZU1hbmFnZXIgPSBuZXcgV0kuRE9N
VHJlZU1hbmFnZXI7Ci0gICAgdGhpcy5jc3NTdHlsZU1hbmFnZXIgPSBuZXcgV0kuQ1NTU3R5bGVN
YW5hZ2VyOwotICAgIHRoaXMubG9nTWFuYWdlciA9IG5ldyBXSS5Mb2dNYW5hZ2VyOworICAgIHRo
aXMubmV0d29ya01hbmFnZXIgPSBuZXcgV0kuTmV0d29ya01hbmFnZXI7CisgICAgdGhpcy5kb21T
dG9yYWdlTWFuYWdlciA9IG5ldyBXSS5ET01TdG9yYWdlTWFuYWdlcjsKKyAgICB0aGlzLmRhdGFi
YXNlTWFuYWdlciA9IG5ldyBXSS5EYXRhYmFzZU1hbmFnZXI7CisgICAgdGhpcy5pbmRleGVkREJN
YW5hZ2VyID0gbmV3IFdJLkluZGV4ZWREQk1hbmFnZXI7CisgICAgdGhpcy5kb21NYW5hZ2VyID0g
bmV3IFdJLkRPTU1hbmFnZXI7CisgICAgdGhpcy5jc3NNYW5hZ2VyID0gbmV3IFdJLkNTU01hbmFn
ZXI7CisgICAgdGhpcy5jb25zb2xlTWFuYWdlciA9IG5ldyBXSS5Db25zb2xlTWFuYWdlcjsKICAg
ICB0aGlzLmlzc3VlTWFuYWdlciA9IG5ldyBXSS5Jc3N1ZU1hbmFnZXI7CiAgICAgdGhpcy5ydW50
aW1lTWFuYWdlciA9IG5ldyBXSS5SdW50aW1lTWFuYWdlcjsKICAgICB0aGlzLmhlYXBNYW5hZ2Vy
ID0gbmV3IFdJLkhlYXBNYW5hZ2VyOwpAQCAtMTI0LDcgKzEyNiw2IEBAIFdJLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLmRlYnVnZ2VyTWFuYWdlciA9IG5ldyBXSS5EZWJ1Z2dlck1hbmFn
ZXI7CiAgICAgdGhpcy5zb3VyY2VNYXBNYW5hZ2VyID0gbmV3IFdJLlNvdXJjZU1hcE1hbmFnZXI7
CiAgICAgdGhpcy5sYXllclRyZWVNYW5hZ2VyID0gbmV3IFdJLkxheWVyVHJlZU1hbmFnZXI7Ci0g
ICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VyID0gbmV3IFdJLkRhc2hib2FyZE1hbmFnZXI7CiAgICAg
dGhpcy5wcm9iZU1hbmFnZXIgPSBuZXcgV0kuUHJvYmVNYW5hZ2VyOwogICAgIHRoaXMud29ya2Vy
TWFuYWdlciA9IG5ldyBXSS5Xb3JrZXJNYW5hZ2VyOwogICAgIHRoaXMuZG9tRGVidWdnZXJNYW5h
Z2VyID0gbmV3IFdJLkRPTURlYnVnZ2VyTWFuYWdlcjsKQEAgLTE0MywxMiArMTQ0LDEyIEBAIFdJ
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBSZWdpc3RlciBmb3IgZXZlbnRzLgogICAgIHRo
aXMuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJEaWRQYXVzZSwgdGhpcyk7CiAgICAgdGhpcy5kZWJ1
Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVz
dW1lZCwgdGhpcy5fZGVidWdnZXJEaWRSZXN1bWUsIHRoaXMpOwotICAgIHRoaXMuZG9tVHJlZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5JbnNwZWN0TW9k
ZVN0YXRlQ2hhbmdlZCwgdGhpcy5faW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQsIHRoaXMpOwotICAg
IHRoaXMuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5F
dmVudC5ET01Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzLl9kb21Ob2RlV2FzSW5zcGVjdGVkLCB0aGlz
KTsKLSAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU3RvcmFnZU1h
bmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fc3RvcmFnZVdh
c0luc3BlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVkLCB0aGlzLl9z
dG9yYWdlV2FzSW5zcGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZyYW1l
RGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuZnJh
bWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZVJlc291cmNlTWFuYWdl
ci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsKKyAgICB0
aGlzLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lkluc3Bl
Y3RNb2RlU3RhdGVDaGFuZ2VkLCB0aGlzLl9pbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCwgdGhpcyk7
CisgICAgdGhpcy5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVu
dC5ET01Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzLl9kb21Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzKTsK
KyAgICB0aGlzLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NU3RvcmFn
ZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fZG9tU3Rv
cmFnZVdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAgdGhpcy5kYXRhYmFzZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNJbnNwZWN0ZWQs
IHRoaXMuX2RhdGFiYXNlV2FzSW5zcGVjdGVkLCB0aGlzKTsKKyAgICB0aGlzLm5ldHdvcmtNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlk
Q2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOworICAgIHRoaXMubmV0d29y
a01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5GcmFtZVdh
c0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsKIAogICAgIFdJLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogCkBAIC0zOTMsOCArMzk0LDEzIEBAIFdJLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fdXBkYXRlRG93bmxvYWRUb29sYmFy
QnV0dG9uKCk7CiAgICAgdGhpcy5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uKCk7CiAK
KyAgICB0aGlzLl9kYXNoYm9hcmRzID0geworICAgICAgICBkZWZhdWx0OiBuZXcgV0kuRGVmYXVs
dERhc2hib2FyZCwKKyAgICAgICAgZGVidWdnZXI6IG5ldyBXSS5EZWJ1Z2dlckRhc2hib2FyZCwK
KyAgICB9OworCiAgICAgdGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyID0gbmV3IFdJLkRhc2hib2Fy
ZENvbnRhaW5lclZpZXc7Ci0gICAgdGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyLnNob3dEYXNoYm9h
cmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5kYXNoYm9hcmRNYW5hZ2VyLmRhc2hib2Fy
ZHMuZGVmYXVsdCk7CisgICAgdGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyLnNob3dEYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5fZGFzaGJvYXJkcy5kZWZhdWx0KTsKIAogICAg
IHRoaXMudG9vbGJhci5hZGRUb29sYmFySXRlbSh0aGlzLl9jbG9zZVRvb2xiYXJCdXR0b24sIFdJ
LlRvb2xiYXIuU2VjdGlvbi5Db250cm9sKTsKIApAQCAtNjg4LDcgKzY5NCw3IEBAIFdJLmFjdGl2
YXRlRXh0cmFEb21haW5zID0gZnVuY3Rpb24oZG9tYWlucykKIAogV0kudXBkYXRlV2luZG93VGl0
bGUgPSBmdW5jdGlvbigpCiB7Ci0gICAgdmFyIG1haW5GcmFtZSA9IHRoaXMuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIubWFpbkZyYW1lOworICAgIHZhciBtYWluRnJhbWUgPSB0aGlzLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZTsKICAgICBpZiAoIW1haW5GcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC04MTIsNyArODE4LDcgQEAgV0kub3BlblVSTCA9IGZ1bmN0aW9uKHVybCwgZnJhbWUsIG9wdGlv
bnMgPSB7fSkKIAogICAgIGxldCBzZWFyY2hDaGlsZEZyYW1lcyA9IGZhbHNlOwogICAgIGlmICgh
ZnJhbWUpIHsKLSAgICAgICAgZnJhbWUgPSB0aGlzLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZTsKKyAgICAgICAgZnJhbWUgPSB0aGlzLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAg
ICAgICAgc2VhcmNoQ2hpbGRGcmFtZXMgPSB0cnVlOwogICAgIH0KIApAQCAtMTE0OSwxNSArMTE1
NSwxNSBAQCBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCwgY29va2llLCBvcHRpb25zID0ge30pCiAKIFdJLnNob3dNYWluRnJhbWVET01UcmVlID0g
ZnVuY3Rpb24obm9kZVRvU2VsZWN0LCBvcHRpb25zID0ge30pCiB7Ci0gICAgY29uc29sZS5hc3Nl
cnQoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKLSAgICBpZiAoIVdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSkKKyAgICBjb25zb2xlLmFzc2VydChXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWUpOworICAgIGlmICghV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgdGhpcy5zaG93UmVwcmVzZW50ZWRPYmplY3QoV0kuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWUsIHtub2RlVG9TZWxlY3R9LCBvcHRp
b25zKTsKKyAgICB0aGlzLnNob3dSZXByZXNlbnRlZE9iamVjdChXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUuZG9tVHJlZSwge25vZGVUb1NlbGVjdH0sIG9wdGlvbnMpOwogfTsKIAogV0kuc2hv
d1NvdXJjZUNvZGVGb3JGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lSWRlbnRpZmllciwgb3B0aW9ucyA9
IHt9KQogewotICAgIHZhciBmcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9y
SWRlbnRpZmllcihmcmFtZUlkZW50aWZpZXIpOworICAgIHZhciBmcmFtZSA9IFdJLm5ldHdvcmtN
YW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkZW50aWZpZXIpOwogICAgIGlmICghZnJh
bWUpIHsKICAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNlQ29kZVdoZW5B
dmFpbGFibGUgPSBmcmFtZUlkZW50aWZpZXI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNTEsMTQg
KzEzNTcsMTQgQEAgV0kuX2RlYnVnZ2VyRGlkUGF1c2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAg
ICB0aGlzLnNob3dEZWJ1Z2dlclRhYih7c2hvd1Njb3BlQ2hhaW5TaWRlYmFyOiBXSS5zZXR0aW5n
cy5zaG93U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKIAotICAgIHRoaXMuX2Rhc2hib2FyZENv
bnRhaW5lci5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuZGFzaGJv
YXJkTWFuYWdlci5kYXNoYm9hcmRzLmRlYnVnZ2VyKTsKKyAgICB0aGlzLl9kYXNoYm9hcmRDb250
YWluZXIuc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl9kYXNoYm9h
cmRzLmRlYnVnZ2VyKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5icmluZ1RvRnJvbnQo
KTsKIH07CiAKIFdJLl9kZWJ1Z2dlckRpZFJlc3VtZSA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAg
IHRoaXMuX2Rhc2hib2FyZENvbnRhaW5lci5jbG9zZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRl
ZE9iamVjdCh0aGlzLmRhc2hib2FyZE1hbmFnZXIuZGFzaGJvYXJkcy5kZWJ1Z2dlcik7CisgICAg
dGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyLmNsb3NlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHRoaXMuX2Rhc2hib2FyZHMuZGVidWdnZXIpOwogfTsKIAogV0kuX2ZyYW1lV2FzQWRk
ZWQgPSBmdW5jdGlvbihldmVudCkKQEAgLTE3NzcsMTUgKzE3ODMsMjEgQEAgV0kuX21vdmVXaW5k
b3dNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKICAgICBXSS5lbGVtZW50RHJhZ1N0YXJ0KGV2
ZW50LnRhcmdldCwgdG9vbGJhckRyYWcsIHRvb2xiYXJEcmFnRW5kLCBldmVudCwgImRlZmF1bHQi
KTsKIH07CiAKLVdJLl9zdG9yYWdlV2FzSW5zcGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCitXSS5f
ZG9tU3RvcmFnZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIHRoaXMuc2hv
d1N0b3JhZ2VUYWIoKTsKICAgICB0aGlzLnNob3dSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRh
LmRvbVN0b3JhZ2UsIG51bGwsIHtpZ25vcmVTZWFyY2hUYWI6IHRydWV9KTsKIH07CiAKK1dJLl9k
YXRhYmFzZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRoaXMuc2hvd1N0
b3JhZ2VUYWIoKTsKKyAgICB0aGlzLnNob3dSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmRh
dGFiYXNlLCBudWxsLCB7aWdub3JlU2VhcmNoVGFiOiB0cnVlfSk7Cit9OworCiBXSS5fZG9tTm9k
ZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAgIHRoaXMuZG9tVHJlZU1hbmFn
ZXIuaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMoZXZlbnQuZGF0YS5ub2RlLmlkKTsKKyAg
ICB0aGlzLmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMoZXZlbnQuZGF0
YS5ub2RlLmlkKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5icmluZ1RvRnJvbnQoKTsK
IApAQCAtMTc5NSwxMiArMTgwNywxMiBAQCBXSS5fZG9tTm9kZVdhc0luc3BlY3RlZCA9IGZ1bmN0
aW9uKGV2ZW50KQogCiBXSS5faW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQgPSBmdW5jdGlvbihldmVu
dCkKIHsKLSAgICB0aGlzLl9pbnNwZWN0TW9kZVRvb2xiYXJCdXR0b24uYWN0aXZhdGVkID0gdGhp
cy5kb21UcmVlTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CisgICAgdGhpcy5faW5zcGVjdE1v
ZGVUb29sYmFyQnV0dG9uLmFjdGl2YXRlZCA9IHRoaXMuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVu
YWJsZWQ7CiB9OwogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihldmVudCkKIHsK
LSAgICB0aGlzLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZCA9ICF0aGlzLmRvbVRy
ZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZDsKKyAgICB0aGlzLmRvbU1hbmFnZXIuaW5zcGVj
dE1vZGVFbmFibGVkID0gIXRoaXMuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CiB9Owog
CiBXSS5fZG93bmxvYWRXZWJBcmNoaXZlID0gZnVuY3Rpb24oZXZlbnQpCkBAIC0xODY5LDcgKzE4
ODEsNyBAQCBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQog
CiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICB0aGlzLmRv
bVRyZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZCA9ICF0aGlzLmRvbVRyZWVNYW5hZ2VyLmlu
c3BlY3RNb2RlRW5hYmxlZDsKKyAgICB0aGlzLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVk
ID0gIXRoaXMuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CiB9OwogCiBXSS5fc2hvd0Nv
bnNvbGVUYWIgPSBmdW5jdGlvbihldmVudCkKQEAgLTIwMDcsNyArMjAxOSw3IEBAIFdJLl9jbGVh
ciA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIGlmICghY29udGVudFZpZXcgfHwgdHlwZW9mIGNvbnRl
bnRWaWV3LmhhbmRsZUNsZWFyU2hvcnRjdXQgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgLy8g
SWYgdGhlIGN1cnJlbnQgY29udGVudCB2aWV3IGlzIHVuYWJsZSB0byBoYW5kbGUgdGhpcyBldmVu
dCwgY2xlYXIgdGhlIGNvbnNvbGUgdG8gcmVzZXQKICAgICAgICAgLy8gdGhlIGRhc2hib2FyZCBj
b3VudGVycy4KLSAgICAgICAgdGhpcy5sb2dNYW5hZ2VyLnJlcXVlc3RDbGVhck1lc3NhZ2VzKCk7
CisgICAgICAgIHRoaXMuY29uc29sZU1hbmFnZXIucmVxdWVzdENsZWFyTWVzc2FnZXMoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM3NCw3ICsyMzg2LDcgQEAgV0kubGlua2lmeUVs
ZW1lbnQgPSBmdW5jdGlvbihsaW5rRWxlbWVudCwgc291cmNlQ29kZUxvY2F0aW9uLCBvcHRpb25z
ID0ge30pIHsKIAogV0kuc291cmNlQ29kZUZvclVSTCA9IGZ1bmN0aW9uKHVybCkKIHsKLSAgICB2
YXIgc291cmNlQ29kZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVy
bCk7CisgICAgdmFyIHNvdXJjZUNvZGUgPSBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZvclVS
TCh1cmwpOwogICAgIGlmICghc291cmNlQ29kZSkgewogICAgICAgICBzb3VyY2VDb2RlID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLnNjcmlwdHNGb3JVUkwodXJsLCBXSS5hc3N1bWluZ01haW5UYXJnZXQo
KSlbMF07CiAgICAgICAgIGlmIChzb3VyY2VDb2RlKQpAQCAtMjYwMCw3ICsyNjEyLDcgQEAgV0ku
YXJjaGl2ZU1haW5GcmFtZSA9IGZ1bmN0aW9uKCkKICAgICAgICAgaWYgKGVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWU7CiAgICAgICAgIGxldCBhcmNoaXZlTmFtZSA9IG1haW5GcmFtZS5tYWlu
UmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0IHx8IG1haW5GcmFtZS5tYWluUmVzb3VyY2UuZGlz
cGxheU5hbWUgfHwgIkFyY2hpdmUiOwogICAgICAgICBsZXQgdXJsID0gIndlYi1pbnNwZWN0b3I6
Ly8vIiArIGVuY29kZVVSSShhcmNoaXZlTmFtZSkgKyAiLndlYmFyY2hpdmUiOwogCkBAIC0yNjEz
LDEwICsyNjI1LDEwIEBAIFdJLmNhbkFyY2hpdmVNYWluRnJhbWUgPSBmdW5jdGlvbigpCiAgICAg
aWYgKHRoaXMuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5X
ZWIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghV0kuZnJhbWVSZXNvdXJjZU1h
bmFnZXIubWFpbkZyYW1lIHx8ICFXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFp
blJlc291cmNlKQorICAgIGlmICghV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lIHx8ICFXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gV0kuUmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZShXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLm1pbWVUeXBlKSA9PT0gV0kuUmVz
b3VyY2UuVHlwZS5Eb2N1bWVudDsKKyAgICByZXR1cm4gV0kuUmVzb3VyY2UudHlwZUZyb21NSU1F
VHlwZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLm1pbWVUeXBlKSA9
PT0gV0kuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudDsKIH07CiAKIFdJLmFkZFdpbmRvd0tleWRvd25M
aXN0ZW5lciA9IGZ1bmN0aW9uKGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5qcwppbmRleCBiMzEzZGU5NDdkOGE3ZDcyOGM5YzQ0Y2VkM2Ey
MWZjOWU1MTM3YzQxLi5mMTM0MWIyM2ViNTE0ODQ4N2U5MzdjMWU2Mjg2NjE1ZWUxZWQ1MGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwpAQCAt
NzIsNyArNzIsNyBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBhcHBsaWNhdGlvbkNhY2hl
U3RhdHVzVXBkYXRlZChmcmFtZUlkLCBtYW5pZmVzdFVSTCwgc3RhdHVzKQogICAgIHsKLSAgICAg
ICAgdmFyIGZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVy
KGZyYW1lSWQpOworICAgICAgICB2YXIgZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZUZv
cklkZW50aWZpZXIoZnJhbWVJZCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgZnJhbWUgPSBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CisgICAg
ICAgIHZhciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFt
ZUlkKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTM3
LDcgKzEzNyw3IEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lc1dpdGhNYW5pZmVzdHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBmcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZy
YW1lRm9ySWRlbnRpZmllcihmcmFtZXNXaXRoTWFuaWZlc3RzW2ldLmZyYW1lSWQpOworICAgICAg
ICAgICAgdmFyIGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZy
YW1lc1dpdGhNYW5pZmVzdHNbaV0uZnJhbWVJZCk7CiAgICAgICAgICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNzkyYTIzNGY4NjBjYTlhNTdkOTA0OTI1YWYwZTk0NDE4ZDFjZmY2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ1NTTWFuYWdlci5qcwpAQCAtMCwwICsxLDU2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkNTU01h
bmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBpZiAod2luZG93LkNT
U0FnZW50KQorICAgICAgICAgICAgQ1NTQWdlbnQuZW5hYmxlKCk7CisKKyAgICAgICAgV0kuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2Us
IHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkZyYW1lLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5fcmVz
b3VyY2VBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V0kuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZUNvbnRl
bnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdJLlJlc291cmNlLkV2ZW50LlR5cGVEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlVHlwZURpZENo
YW5nZSwgdGhpcyk7CisKKyAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRP
TU5vZGUuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX25vZGVBdHRyaWJ1dGVzRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5v
ZGUuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fbm9kZUF0dHJpYnV0ZXNEaWRDaGFuZ2Us
IHRoaXMpOworICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5F
dmVudC5FbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQsIHRoaXMuX25vZGVQc2V1ZG9DbGFzc2Vz
RGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9jb2xvckZvcm1hdFNldHRpbmcgPSBu
ZXcgV0kuU2V0dGluZygiZGVmYXVsdC1jb2xvci1mb3JtYXQiLCBXSS5Db2xvci5Gb3JtYXQuT3Jp
Z2luYWwpOworCisgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwID0gbmV3IE1h
cDsKKyAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwID0gbmV3IE1hcDsKKyAgICAg
ICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyA5KTogTGVnYWN5IGJhY2tlbmRzIGRpZCBub3Qgc2VuZCBzdHlsZXNoZWV0CisgICAgICAg
IC8vIGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFuZCBtdXN0IGJlIGZldGNoZWQgbWFudWFsbHkuCisg
ICAgICAgIHRoaXMuX2ZldGNoZWRJbml0aWFsU3R5bGVTaGVldHMgPSB3aW5kb3cuQ1NTQWdlbnQg
JiYgd2luZG93LkNTU0FnZW50Lmhhc0V2ZW50KCJzdHlsZVNoZWV0QWRkZWQiKTsKKyAgICB9CisK
KyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBwcm90b2NvbFN0eWxlU2hlZXRPcmlnaW5Ub0Vu
dW0ob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICAgICAgY2Fz
ZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLlJlZ3VsYXI6CisgICAgICAgICAgICByZXR1cm4g
V0kuQ1NTU3R5bGVTaGVldC5UeXBlLkF1dGhvcjsKKyAgICAgICAgY2FzZSBDU1NBZ2VudC5TdHls
ZVNoZWV0T3JpZ2luLlVzZXI6CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTU3R5bGVTaGVldC5U
eXBlLlVzZXI7CisgICAgICAgIGNhc2UgQ1NTQWdlbnQuU3R5bGVTaGVldE9yaWdpbi5Vc2VyQWdl
bnQ6CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLlVzZXJBZ2VudDsK
KyAgICAgICAgY2FzZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLkluc3BlY3RvcjoKKyAgICAg
ICAgICAgIHJldHVybiBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmtub3duIENTUy5T
dHlsZVNoZWV0T3JpZ2luIiwgb3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NBZ2VudC5T
dHlsZVNoZWV0T3JpZ2luLlJlZ3VsYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMg
cHJvdG9jb2xNZWRpYVNvdXJjZVRvRW51bShzb3VyY2UpCisgICAgeworICAgICAgICBzd2l0Y2gg
KHNvdXJjZSkgeworICAgICAgICBjYXNlIENTU0FnZW50LkNTU01lZGlhU291cmNlLk1lZGlhUnVs
ZToKKyAgICAgICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5UeXBlLk1lZGlhUnVsZTsKKyAgICAg
ICAgY2FzZSBDU1NBZ2VudC5DU1NNZWRpYVNvdXJjZS5JbXBvcnRSdWxlOgorICAgICAgICAgICAg
cmV0dXJuIFdJLkNTU01lZGlhLlR5cGUuSW1wb3J0UnVsZTsKKyAgICAgICAgY2FzZSBDU1NBZ2Vu
dC5DU1NNZWRpYVNvdXJjZS5MaW5rZWRTaGVldDoKKyAgICAgICAgICAgIHJldHVybiBXSS5DU1NN
ZWRpYS5UeXBlLkxpbmtlZFN0eWxlU2hlZXQ7CisgICAgICAgIGNhc2UgQ1NTQWdlbnQuQ1NTTWVk
aWFTb3VyY2UuSW5saW5lU2hlZXQ6CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTTWVkaWEuVHlw
ZS5JbmxpbmVTdHlsZVNoZWV0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZmFsc2UsICJVbmtub3duIENTUy5DU1NNZWRpYVNvdXJjZSIsIHNvdXJjZSk7Cisg
ICAgICAgICAgICByZXR1cm4gV0kuQ1NTTWVkaWEuVHlwZS5NZWRpYVJ1bGU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBwcmVmZXJyZWRDb2xvckZvcm1hdCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JGb3JtYXRTZXR0aW5nLnZhbHVlOwor
ICAgIH0KKworICAgIGdldCBzdHlsZVNoZWV0cygpCisgICAgeworICAgICAgICByZXR1cm4gWy4u
LnRoaXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLnZhbHVlcygpXTsKKyAgICB9CisKKyAgICBj
YW5Gb3JjZVBzZXVkb0NsYXNzZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvdy5DU1NB
Z2VudCAmJiAhIUNTU0FnZW50LmZvcmNlUHNldWRvU3RhdGU7CisgICAgfQorCisgICAgcHJvcGVy
dHlOYW1lSGFzT3RoZXJWZW5kb3JQcmVmaXgobmFtZSkKKyAgICB7CisgICAgICAgIGlmICghbmFt
ZSB8fCBuYW1lLmxlbmd0aCA8IDQgfHwgbmFtZS5jaGFyQXQoMCkgIT09ICItIikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKD86
LW1vei18LW1zLXwtby18LWVwdWItKS8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHBy
b3BlcnR5VmFsdWVIYXNPdGhlclZlbmRvcktleXdvcmQodmFsdWUpCisgICAgeworICAgICAgICB2
YXIgbWF0Y2ggPSB2YWx1ZS5tYXRjaCgvKD86LW1vei18LW1zLXwtby18LWVwdWItKVstXHddKy8p
OworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhbm9uaWNhbE5hbWVGb3JQcm9wZXJ0eU5h
bWUobmFtZSkKKyAgICB7CisgICAgICAgIGlmICghbmFtZSB8fCBuYW1lLmxlbmd0aCA8IDggfHwg
bmFtZS5jaGFyQXQoMCkgIT09ICItIikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOworCisgICAg
ICAgIHZhciBtYXRjaCA9IG5hbWUubWF0Y2goL14oPzotd2Via2l0LXwta2h0bWwtfC1hcHBsZS0p
KC4rKS8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisK
KyAgICAgICAgcmV0dXJuIG1hdGNoWzFdOworICAgIH0KKworICAgIGZldGNoU3R5bGVTaGVldHNJ
Zk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNo
ZWV0cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9mZXRjaEluZm9Gb3JB
bGxTdHlsZVNoZWV0cyhmdW5jdGlvbigpIHt9KTsKKyAgICB9CisKKyAgICBzdHlsZVNoZWV0Rm9y
SWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gdGhpcy5fc3R5
bGVTaGVldElkZW50aWZpZXJNYXAuZ2V0KGlkKTsKKyAgICAgICAgaWYgKHN0eWxlU2hlZXQpCisg
ICAgICAgICAgICByZXR1cm4gc3R5bGVTaGVldDsKKworICAgICAgICBzdHlsZVNoZWV0ID0gbmV3
IFdJLkNTU1N0eWxlU2hlZXQoaWQpOworICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmll
ck1hcC5zZXQoaWQsIHN0eWxlU2hlZXQpOworICAgICAgICByZXR1cm4gc3R5bGVTaGVldDsKKyAg
ICB9CisKKyAgICBzdHlsZXNGb3JOb2RlKG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
ZCBpbiB0aGlzLl9ub2RlU3R5bGVzTWFwKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVT
dHlsZXNNYXBbbm9kZS5pZF07CisKKyAgICAgICAgdmFyIHN0eWxlcyA9IG5ldyBXSS5ET01Ob2Rl
U3R5bGVzKG5vZGUpOworICAgICAgICB0aGlzLl9ub2RlU3R5bGVzTWFwW25vZGUuaWRdID0gc3R5
bGVzOworICAgICAgICByZXR1cm4gc3R5bGVzOworICAgIH0KKworICAgIHByZWZlcnJlZEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JGcmFtZShmcmFtZSwgY2FsbGJhY2ssIGRvTm90Q3JlYXRlSWZNaXNz
aW5nKQorICAgIHsKKyAgICAgICAgdmFyIGluc3BlY3RvclN0eWxlU2hlZXRzID0gdGhpcy5faW5z
cGVjdG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSk7CisgICAgICAgIGZvciAobGV0IHN0eWxl
U2hlZXQgb2YgaW5zcGVjdG9yU3R5bGVTaGVldHMpIHsKKyAgICAgICAgICAgIGlmIChzdHlsZVNo
ZWV0W1dJLkNTU01hbmFnZXIuUHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldFN5bWJvbF0pIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayhzdHlsZVNoZWV0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZG9Ob3RDcmVh
dGVJZk1pc3NpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKENTU0FnZW50
LmNyZWF0ZVN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgIENTU0FnZW50LmNyZWF0ZVN0eWxlU2hl
ZXQoZnJhbWUuaWQsIGZ1bmN0aW9uKGVycm9yLCBzdHlsZVNoZWV0SWQpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgc3R5bGVTaGVldCA9IFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZp
ZXIoc3R5bGVTaGVldElkKTsKKyAgICAgICAgICAgICAgICBzdHlsZVNoZWV0W1dJLkNTU01hbmFn
ZXIuUHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldFN5bWJvbF0gPSB0cnVlOworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOSk6
IENTUy5jcmVhdGVTdHlsZVNoZWV0IGRpZCBub3QgZXhpc3QuCisgICAgICAgIC8vIExlZ2FjeSBi
YWNrZW5kcyBjYW4gb25seSBjcmVhdGUgdGhlIEluc3BlY3RvciBTdHlsZVNoZWV0IHRocm91Z2gg
Q1NTLmFkZFJ1bGUuCisgICAgICAgIC8vIEV4cGxvaXQgdGhhdCB0byBjcmVhdGUgdGhlIEluc3Bl
Y3RvciBTdHlsZVNoZWV0IGZvciB0aGUgZG9jdW1lbnQuYm9keSBub2RlIGluCisgICAgICAgIC8v
IHRoaXMgZnJhbWUsIHRoZW4gZ2V0IHRoZSBTdHlsZVNoZWV0IGZvciB0aGUgbmV3IHJ1bGUuCisK
KyAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBhcHBlbmRXZWJJbnNwZWN0b3JTb3VyY2VVUkwoImRv
Y3VtZW50Iik7CisgICAgICAgIGxldCBjb250ZXh0SWQgPSBmcmFtZS5wYWdlRXhlY3V0aW9uQ29u
dGV4dC5pZDsKKyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lv
biwgb2JqZWN0R3JvdXA6ICIiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlLCBkb05vdFBh
dXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUsIGNvbnRleHRJZCwgcmV0dXJuQnlW
YWx1ZTogZmFsc2UsIGdlbmVyYXRlUHJldmlldzogZmFsc2V9LCBkb2N1bWVudEF2YWlsYWJsZSk7
CisKKyAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRBdmFpbGFibGUoZXJyb3IsIGRvY3VtZW50UmVt
b3RlT2JqZWN0UGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gV0kuUmVtb3Rl
T2JqZWN0LmZyb21QYXlsb2FkKGRvY3VtZW50UmVtb3RlT2JqZWN0UGF5bG9hZCk7CisgICAgICAg
ICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5kKGRvY3VtZW50Tm9kZUF2YWlsYWJs
ZS5iaW5kKG51bGwsIHJlbW90ZU9iamVjdCkpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gZG9jdW1lbnROb2RlQXZhaWxhYmxlKHJlbW90ZU9iamVjdCwgZG9jdW1lbnROb2RlSWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7CisKKyAgICAgICAg
ICAgIGlmICghZG9jdW1lbnROb2RlSWQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxs
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IERPTUFnZW50LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlSWQsICJib2R5IiwgYm9keU5vZGVB
dmFpbGFibGUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYm9keU5vZGVBdmFpbGFi
bGUoZXJyb3IsIGJvZHlOb2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikg
eworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAg
IGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbGV0IHNlbGVjdG9yID0gIiI7IC8vIEludGVudGlvbmFsbHkgZW1wdHku
CisgICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKGJvZHlOb2RlSWQsIHNlbGVjdG9yLCBjc3NS
dWxlQXZhaWxhYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNzc1J1bGVBdmFp
bGFibGUoZXJyb3IsIHBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvciB8
fCAhcGF5bG9hZC5ydWxlSWQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBz
dHlsZVNoZWV0SWQgPSBwYXlsb2FkLnJ1bGVJZC5zdHlsZVNoZWV0SWQ7CisgICAgICAgICAgICBs
ZXQgc3R5bGVTaGVldCA9IFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5
bGVTaGVldElkKTsKKyAgICAgICAgICAgIGlmICghc3R5bGVTaGVldCkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3R5bGVTaGVldFtXSS5DU1NNYW5hZ2VyLlByZWZlcnJlZEluc3Bl
Y3RvclN0eWxlU2hlZXRTeW1ib2xdID0gdHJ1ZTsKKworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSk7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChzdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBmcmFtZSk7CisKKyAgICAgICAg
ICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgbWVkaWFU
eXBlQ2hhbmdlZCgpCisgICAgeworICAgICAgICAvLyBBY3QgdGhlIHNhbWUgYXMgaWYgbWVkaWEg
cXVlcmllcyBjaGFuZ2VkLgorICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7
CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdl
ZCgpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DU1NPYnNlcnZlci4KKworICAg
ICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01hcCkKKyAgICAgICAgICAgIHRo
aXMuX25vZGVTdHlsZXNNYXBba2V5XS5tZWRpYVF1ZXJ5UmVzdWx0RGlkQ2hhbmdlKCk7CisgICAg
fQorCisgICAgc3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkZW50aWZpZXIpCisgICAgewor
ICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DU1NPYnNlcnZlci4KKyAgICAgICAgdmFyIHN0eWxl
U2hlZXQgPSB0aGlzLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZGVudGlmaWVy
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCk7CisKKyAgICAgICAgLy8gRG8g
bm90IG9ic2VydmUgaW5saW5lIHN0eWxlcworICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0lubGlu
ZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHN0eWxlU2hlZXQubm90ZUNvbnRlbnREaWRDaGFuZ2UoKTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlUmVzb3VyY2VDb250ZW50KHN0eWxlU2hlZXQpOworICAgIH0KKworICAgIHN0eWxlU2hlZXRB
ZGRlZChzdHlsZVNoZWV0SW5mbykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5oYXMoc3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElk
KSwgIkF0dGVtcHRlZCB0byBhZGQgYSBDU1NTdHlsZVNoZWV0IGJ1dCBpZGVudGlmaWVyIHdhcyBh
bHJlYWR5IGluIHVzZSIpOworICAgICAgICBsZXQgc3R5bGVTaGVldCA9IHRoaXMuc3R5bGVTaGVl
dEZvcklkZW50aWZpZXIoc3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElkKTsKKyAgICAgICAgbGV0
IHBhcmVudEZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHN0eWxl
U2hlZXRJbmZvLmZyYW1lSWQpOworICAgICAgICBsZXQgb3JpZ2luID0gV0kuQ1NTTWFuYWdlci5w
cm90b2NvbFN0eWxlU2hlZXRPcmlnaW5Ub0VudW0oc3R5bGVTaGVldEluZm8ub3JpZ2luKTsKKyAg
ICAgICAgc3R5bGVTaGVldC51cGRhdGVJbmZvKHN0eWxlU2hlZXRJbmZvLnNvdXJjZVVSTCwgcGFy
ZW50RnJhbWUsIG9yaWdpbiwgc3R5bGVTaGVldEluZm8uaXNJbmxpbmUsIHN0eWxlU2hlZXRJbmZv
LnN0YXJ0TGluZSwgc3R5bGVTaGVldEluZm8uc3RhcnRDb2x1bW4pOworCisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFk
ZGVkLCB7c3R5bGVTaGVldH0pOworICAgIH0KKworICAgIHN0eWxlU2hlZXRSZW1vdmVkKHN0eWxl
U2hlZXRJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLl9z
dHlsZVNoZWV0SWRlbnRpZmllck1hcC5nZXQoc3R5bGVTaGVldElkZW50aWZpZXIpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0LCAiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIENTU1N0
eWxlU2hlZXQgdGhhdCB3YXMgbm90IHRyYWNrZWQiKTsKKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZGVudGlm
aWVyTWFwLmRlbGV0ZShzdHlsZVNoZWV0SWRlbnRpZmllcik7CisKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3Zl
ZCwge3N0eWxlU2hlZXR9KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaW5zcGVj
dG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSkKKyAgICB7CisgICAgICAgIGxldCBzdHlsZVNo
ZWV0cyA9IFtdOworCisgICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgdGhpcy5zdHlsZVNo
ZWV0cykgeworICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0
KCkgJiYgc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gZnJhbWUpCisgICAgICAgICAgICAgICAg
c3R5bGVTaGVldHMucHVzaChzdHlsZVNoZWV0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBzdHlsZVNoZWV0czsKKyAgICB9CisKKyAgICBfbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2Uo
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IGV2ZW50LnRhcmdldDsKKworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01hcCkgeworICAgICAgICAgICAgdmFy
IG5vZGVTdHlsZXMgPSB0aGlzLl9ub2RlU3R5bGVzTWFwW2tleV07CisgICAgICAgICAgICBpZiAo
bm9kZVN0eWxlcy5ub2RlICE9PSBub2RlICYmICFub2RlU3R5bGVzLm5vZGUuaXNEZXNjZW5kYW50
KG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbm9kZVN0eWxl
cy5wc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlKG5vZGUpOworICAgICAgICB9CisgICAgfQorCisgICAg
X25vZGVBdHRyaWJ1dGVzRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUg
PSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX25vZGVTdHls
ZXNNYXApIHsKKyAgICAgICAgICAgIHZhciBub2RlU3R5bGVzID0gdGhpcy5fbm9kZVN0eWxlc01h
cFtrZXldOworICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMubm9kZSAhPT0gbm9kZSAmJiAhbm9k
ZVN0eWxlcy5ub2RlLmlzRGVzY2VuZGFudChub2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuYXR0cmlidXRlRGlkQ2hhbmdlKG5vZGUsIGV2ZW50
LmRhdGEubmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hh
bmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGlu
c3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZy
YW1lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQ2xlYXIgb3VyIG1hcHMg
d2hlbiB0aGUgbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCisKKyAgICAgICAgdGhpcy5fZmV0Y2hlZElu
aXRpYWxTdHlsZVNoZWV0cyA9IHdpbmRvdy5DU1NBZ2VudCAmJiB3aW5kb3cuQ1NTQWdlbnQuaGFz
RXZlbnQoInN0eWxlU2hlZXRBZGRlZCIpOworICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRp
Zmllck1hcC5jbGVhcigpOworICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuY2xl
YXIoKTsKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OworICAgIH0KKworICAgIF9y
ZXNvdXJjZUFkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQu
dGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIHZhciByZXNvdXJjZSA9IGV2
ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKKwor
ICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NsZWFyU3R5bGVTaGVldHNG
b3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfQorCisgICAgX3Jlc291cmNlVHlwZURpZENoYW5n
ZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0
YW5jZW9mIFdJLlJlc291cmNlKTsKKworICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJn
ZXQ7CisgICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXSS5SZXNvdXJjZS5UeXBlLlN0eWxl
c2hlZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY2xlYXJTdHlsZVNo
ZWV0c0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICB9CisKKyAgICBfY2xlYXJTdHlsZVNoZWV0
c0ZvclJlc291cmNlKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgLy8gQ2xlYXIga25vd24gc3R5
bGVzaGVldHMgZm9yIHRoaXMgVVJMIGFuZCBmcmFtZS4gVGhpcyB3aWxsIGNhdXNlIHRoZSBzdHls
ZXNoZWV0cyB0bworICAgICAgICAvLyBiZSB1cGRhdGVkIG5leHQgdGltZSBfZmV0Y2hJbmZvRm9y
QWxsU3R5bGVTaGVldHMgaXMgY2FsbGVkLgorICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRp
Zmllck1hcC5kZWxldGUodGhpcy5fZnJhbWVVUkxNYXBLZXkocmVzb3VyY2UucGFyZW50RnJhbWUs
IHJlc291cmNlLnVybCkpOworICAgIH0KKworICAgIF9mcmFtZVVSTE1hcEtleShmcmFtZSwgdXJs
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyYW1lLmlkICsgIjoiICsgdXJsOworICAgIH0KKwor
ICAgIF9sb29rdXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldChyZXNvdXJjZS5wYXJlbnRGcmFtZSwg
cmVzb3VyY2UudXJsLCBjYWxsYmFjayk7CisgICAgfQorCisgICAgX2xvb2t1cFN0eWxlU2hlZXQo
ZnJhbWUsIHVybCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChmcmFt
ZSBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBsZXQga2V5ID0gdGhpcy5fZnJhbWVV
UkxNYXBLZXkoZnJhbWUsIHVybCk7CisKKyAgICAgICAgZnVuY3Rpb24gc3R5bGVTaGVldHNGZXRj
aGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc3R5bGVTaGVldEZy
YW1lVVJMTWFwLmdldChrZXkpIHx8IG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHN0
eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuZ2V0KGtleSkgfHwgbnVsbDsK
KyAgICAgICAgaWYgKHN0eWxlU2hlZXQpCisgICAgICAgICAgICBjYWxsYmFjayhzdHlsZVNoZWV0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fZmV0Y2hJbmZvRm9yQWxsU3R5bGVT
aGVldHMoc3R5bGVTaGVldHNGZXRjaGVkLmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9mZXRj
aEluZm9Gb3JBbGxTdHlsZVNoZWV0cyhjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CisKKyAgICAgICAgZnVuY3Rp
b24gcHJvY2Vzc1N0eWxlU2hlZXRzKGVycm9yLCBzdHlsZVNoZWV0cykKKyAgICAgICAgeworICAg
ICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLmNsZWFyKCk7CisKKyAgICAgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBzdHls
ZVNoZWV0SW5mbyBvZiBzdHlsZVNoZWV0cykgeworICAgICAgICAgICAgICAgIGxldCBwYXJlbnRG
cmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5m
by5mcmFtZUlkKTsKKyAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID0gV0kuQ1NTTWFuYWdlci5w
cm90b2NvbFN0eWxlU2hlZXRPcmlnaW5Ub0VudW0oc3R5bGVTaGVldEluZm8ub3JpZ2luKTsKKwor
ICAgICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogVGhlIGluZm8gZGlkIG5v
dCBoYXZlICdpc0lubGluZScsICdzdGFydExpbmUnLCBhbmQgJ3N0YXJ0Q29sdW1uJywgc28gbWFr
ZSBmYWxzZSBhbmQgMCBpbiB0aGVzZSBjYXNlcy4KKyAgICAgICAgICAgICAgICBsZXQgaXNJbmxp
bmUgPSBzdHlsZVNoZWV0SW5mby5pc0lubGluZSB8fCBmYWxzZTsKKyAgICAgICAgICAgICAgICBs
ZXQgc3RhcnRMaW5lID0gc3R5bGVTaGVldEluZm8uc3RhcnRMaW5lIHx8IDA7CisgICAgICAgICAg
ICAgICAgbGV0IHN0YXJ0Q29sdW1uID0gc3R5bGVTaGVldEluZm8uc3RhcnRDb2x1bW4gfHwgMDsK
KworICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gdGhpcy5zdHlsZVNoZWV0Rm9ySWRl
bnRpZmllcihzdHlsZVNoZWV0SW5mby5zdHlsZVNoZWV0SWQpOworICAgICAgICAgICAgICAgIHN0
eWxlU2hlZXQudXBkYXRlSW5mbyhzdHlsZVNoZWV0SW5mby5zb3VyY2VVUkwsIHBhcmVudEZyYW1l
LCBvcmlnaW4sIGlzSW5saW5lLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTsKKworICAgICAgICAg
ICAgICAgIGxldCBrZXkgPSB0aGlzLl9mcmFtZVVSTE1hcEtleShwYXJlbnRGcmFtZSwgc3R5bGVT
aGVldEluZm8uc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJh
bWVVUkxNYXAuc2V0KGtleSwgc3R5bGVTaGVldCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHls
ZVNoZWV0cyhwcm9jZXNzU3R5bGVTaGVldHMuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgX3Jl
c291cmNlQ29udGVudERpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJj
ZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgaWYgKHJlc291cmNlID09PSB0aGlzLl9pZ25vcmVS
ZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIC8vIElnbm9yZSBpZiBpdCBpc24ndCBhIENTUyBzdHlsZXNoZWV0Lgor
ICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0
IHx8IHJlc291cmNlLnN5bnRoZXRpY01JTUVUeXBlICE9PSAidGV4dC9jc3MiKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGx5U3R5bGVTaGVldENoYW5nZXMoKQor
ICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0Rm91bmQoc3R5bGVTaGVl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5fX3BlbmRpbmdDaGFu
Z2VUaW1lb3V0ID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
c3R5bGVTaGVldCk7CisgICAgICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBUbyBwcmV2ZW50IHVwZGF0
aW5nIGEgVGV4dEVkaXRvcidzIGNvbnRlbnQgd2hpbGUgdGhlIHVzZXIgaXMgdHlwaW5nIGluIGl0
IHdlIHdhbnQgdG8KKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUgdGhlIG5leHQgX3VwZGF0ZVJl
c291cmNlQ29udGVudCBjYWxsLgorICAgICAgICAgICAgICAgIHJlc291cmNlLl9faWdub3JlTmV4
dFVwZGF0ZVJlc291cmNlQ29udGVudCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBXSS5icmFu
Y2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdChzdHls
ZVNoZWV0KS5jb250ZW50ID0gcmVzb3VyY2UuY29udGVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldEZvclJlc291cmNlKHJlc291cmNlLCBzdHls
ZVNoZWV0Rm91bmQuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzb3Vy
Y2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCkKKyAgICAgICAgICAgIGNsZWFyVGltZW91dChyZXNv
dXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KTsKKyAgICAgICAgcmVzb3VyY2UuX19wZW5kaW5n
Q2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcy5iaW5kKHRo
aXMpLCA1MDApOworICAgIH0KKworICAgIF91cGRhdGVSZXNvdXJjZUNvbnRlbnQoc3R5bGVTaGVl
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQpOworCisgICAgICAg
IGZ1bmN0aW9uIGZldGNoZWRTdHlsZVNoZWV0Q29udGVudChwYXJhbWV0ZXJzKQorICAgICAgICB7
CisgICAgICAgICAgICBsZXQgcmVwcmVzZW50ZWRPYmplY3QgPSBwYXJhbWV0ZXJzLnNvdXJjZUNv
ZGU7CisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdC5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0
ID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9i
amVjdC51cmwpOworICAgICAgICAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdC51cmwpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQuaXNJbnNw
ZWN0b3JTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9
IHJlcHJlc2VudGVkT2JqZWN0LnBhcmVudEZyYW1lLnJlc291cmNlRm9yVVJMKHJlcHJlc2VudGVk
T2JqZWN0LnVybCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8gT25seSB0cnkg
dG8gdXBkYXRlIHN0eWxlc2hlZXQgcmVzb3VyY2VzLiBPdGhlciByZXNvdXJjZXMsIGxpa2UgZG9j
dW1lbnRzLCBjYW4gY29udGFpbgorICAgICAgICAgICAgICAgIC8vIG11bHRpcGxlIHN0eWxlc2hl
ZXRzIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgcmFuZ2VzIHRvIHVwZGF0ZSB0aG9zZS4K
KyAgICAgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QudHlwZSAhPT0gV0kuUmVzb3Vy
Y2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5fX2lnbm9yZU5leHRV
cGRhdGVSZXNvdXJjZUNvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVj
dC5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZVJl
c291cmNlQ29udGVudERpZENoYW5nZUV2ZW50Rm9yUmVzb3VyY2UgPSByZXByZXNlbnRlZE9iamVj
dDsKKworICAgICAgICAgICAgbGV0IHJldmlzaW9uID0gV0kuYnJhbmNoTWFuYWdlci5jdXJyZW50
QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwor
ICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpIHsKKyAg
ICAgICAgICAgICAgICByZXZpc2lvbi5jb250ZW50ID0gcmVwcmVzZW50ZWRPYmplY3QuY29udGVu
dDsKKyAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgcmV2aXNpb24uY29udGVudCA9IHBhcmFtZXRlcnMuY29udGVudDsK
KworICAgICAgICAgICAgdGhpcy5faWdub3JlUmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlRXZlbnRG
b3JSZXNvdXJjZSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdHlsZVNo
ZWV0UmVhZHkoKQorICAgICAgICB7CisgICAgICAgICAgICBzdHlsZVNoZWV0LnJlcXVlc3RDb250
ZW50KCkudGhlbihmZXRjaGVkU3R5bGVTaGVldENvbnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBhcHBseVN0eWxlU2hlZXRDaGFuZ2VzKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQudXJsKQorICAgICAgICAgICAgICAgIHN0eWxl
U2hlZXRSZWFkeS5jYWxsKHRoaXMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRoaXMuX2ZldGNoSW5mb0ZvckFsbFN0eWxlU2hlZXRzKHN0eWxlU2hlZXRSZWFkeS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHlsZVNoZWV0Ll9fcGVuZGluZ0NoYW5n
ZVRpbWVvdXQpCisgICAgICAgICAgICBjbGVhclRpbWVvdXQoc3R5bGVTaGVldC5fX3BlbmRpbmdD
aGFuZ2VUaW1lb3V0KTsKKyAgICAgICAgc3R5bGVTaGVldC5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0
ID0gc2V0VGltZW91dChhcHBseVN0eWxlU2hlZXRDaGFuZ2VzLmJpbmQodGhpcyksIDUwMCk7Cisg
ICAgfQorfTsKKworV0kuQ1NTTWFuYWdlci5FdmVudCA9IHsKKyAgICBTdHlsZVNoZWV0QWRkZWQ6
ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1hZGRlZCIsCisgICAgU3R5bGVTaGVldFJlbW92ZWQ6
ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1yZW1vdmVkIiwKK307CisKK1dJLkNTU01hbmFnZXIu
UHNldWRvRWxlbWVudE5hbWVzID0gWyJiZWZvcmUiLCAiYWZ0ZXIiXTsKK1dJLkNTU01hbmFnZXIu
Rm9yY2VhYmxlUHNldWRvQ2xhc3NlcyA9IFsiYWN0aXZlIiwgImZvY3VzIiwgImhvdmVyIiwgInZp
c2l0ZWQiXTsKK1dJLkNTU01hbmFnZXIuUHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldFN5bWJv
bCA9IFN5bWJvbCgiY3NzLW1hbmFnZXItcHJlZmVycmVkLWluc3BlY3Rvci1zdHlsZXNoZWV0Iik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ5MTJmMmQwZjg4Nzc1Y2IwMjBiM2Y2NzRmOThmZWQxMDU4ZDBhY2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5DU1NTdHlsZU1hbmFn
ZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25z
dHJ1Y3RvcigpCi0gICAgewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIGlmICh3aW5kb3cu
Q1NTQWdlbnQpCi0gICAgICAgICAgICBDU1NBZ2VudC5lbmFibGUoKTsKLQotICAgICAgICBXSS5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuRnJhbWUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9y
ZXNvdXJjZUFkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5l
cihXSS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlQ29u
dGVudERpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VUeXBlRGlk
Q2hhbmdlLCB0aGlzKTsKLQotICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RE9NTm9kZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fbm9kZUF0dHJpYnV0ZXNEaWRD
aGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9N
Tm9kZS5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9ub2RlQXR0cmlidXRlc0RpZENoYW5n
ZSwgdGhpcyk7Ci0gICAgICAgIFdJLkRPTU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2Rl
LkV2ZW50LkVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZCwgdGhpcy5fbm9kZVBzZXVkb0NsYXNz
ZXNEaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX2NvbG9yRm9ybWF0U2V0dGluZyA9
IG5ldyBXSS5TZXR0aW5nKCJkZWZhdWx0LWNvbG9yLWZvcm1hdCIsIFdJLkNvbG9yLkZvcm1hdC5P
cmlnaW5hbCk7Ci0KLSAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAgPSBuZXcg
TWFwOwotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAgPSBuZXcgTWFwOwotICAg
ICAgICB0aGlzLl9ub2RlU3R5bGVzTWFwID0ge307Ci0KLSAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDkpOiBMZWdhY3kgYmFja2VuZHMgZGlkIG5vdCBzZW5kIHN0eWxlc2hlZXQKLSAgICAg
ICAgLy8gYWRkZWQvcmVtb3ZlZCBldmVudHMgYW5kIG11c3QgYmUgZmV0Y2hlZCBtYW51YWxseS4K
LSAgICAgICAgdGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cyA9IHdpbmRvdy5DU1NBZ2Vu
dCAmJiB3aW5kb3cuQ1NTQWdlbnQuaGFzRXZlbnQoInN0eWxlU2hlZXRBZGRlZCIpOwotICAgIH0K
LQotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIHByb3RvY29sU3R5bGVTaGVldE9yaWdpblRv
RW51bShvcmlnaW4pCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgICAgICBj
YXNlIENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4uUmVndWxhcjoKLSAgICAgICAgICAgIHJldHVy
biBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuQXV0aG9yOwotICAgICAgICBjYXNlIENTU0FnZW50LlN0
eWxlU2hlZXRPcmlnaW4uVXNlcjoKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NTdHlsZVNoZWV0
LlR5cGUuVXNlcjsKLSAgICAgICAgY2FzZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLlVzZXJB
Z2VudDoKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuVXNlckFnZW50
OwotICAgICAgICBjYXNlIENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4uSW5zcGVjdG9yOgotICAg
ICAgICAgICAgcmV0dXJuIFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3I7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIlVua25vd24gQ1NT
LlN0eWxlU2hlZXRPcmlnaW4iLCBvcmlnaW4pOwotICAgICAgICAgICAgcmV0dXJuIENTU0FnZW50
LlN0eWxlU2hlZXRPcmlnaW4uUmVndWxhcjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRp
YyBwcm90b2NvbE1lZGlhU291cmNlVG9FbnVtKHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ1NTQWdlbnQuQ1NTTWVkaWFTb3VyY2UuTWVkaWFS
dWxlOgotICAgICAgICAgICAgcmV0dXJuIFdJLkNTU01lZGlhLlR5cGUuTWVkaWFSdWxlOwotICAg
ICAgICBjYXNlIENTU0FnZW50LkNTU01lZGlhU291cmNlLkltcG9ydFJ1bGU6Ci0gICAgICAgICAg
ICByZXR1cm4gV0kuQ1NTTWVkaWEuVHlwZS5JbXBvcnRSdWxlOwotICAgICAgICBjYXNlIENTU0Fn
ZW50LkNTU01lZGlhU291cmNlLkxpbmtlZFNoZWV0OgotICAgICAgICAgICAgcmV0dXJuIFdJLkNT
U01lZGlhLlR5cGUuTGlua2VkU3R5bGVTaGVldDsKLSAgICAgICAgY2FzZSBDU1NBZ2VudC5DU1NN
ZWRpYVNvdXJjZS5JbmxpbmVTaGVldDoKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5U
eXBlLklubGluZVN0eWxlU2hlZXQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydChmYWxzZSwgIlVua25vd24gQ1NTLkNTU01lZGlhU291cmNlIiwgc291cmNlKTsK
LSAgICAgICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5UeXBlLk1lZGlhUnVsZTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHByZWZlcnJlZENvbG9yRm9ybWF0
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb2xvckZvcm1hdFNldHRpbmcudmFsdWU7
Ci0gICAgfQotCi0gICAgZ2V0IHN0eWxlU2hlZXRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBb
Li4udGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAudmFsdWVzKCldOwotICAgIH0KLQotICAg
IGNhbkZvcmNlUHNldWRvQ2xhc3NlcygpCi0gICAgewotICAgICAgICByZXR1cm4gd2luZG93LkNT
U0FnZW50ICYmICEhQ1NTQWdlbnQuZm9yY2VQc2V1ZG9TdGF0ZTsKLSAgICB9Ci0KLSAgICBwcm9w
ZXJ0eU5hbWVIYXNPdGhlclZlbmRvclByZWZpeChuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFu
YW1lIHx8IG5hbWUubGVuZ3RoIDwgNCB8fCBuYW1lLmNoYXJBdCgwKSAhPT0gIi0iKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciBtYXRjaCA9IG5hbWUubWF0Y2goL14o
PzotbW96LXwtbXMtfC1vLXwtZXB1Yi0pLyk7Ci0gICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
cHJvcGVydHlWYWx1ZUhhc090aGVyVmVuZG9yS2V5d29yZCh2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IHZhciBtYXRjaCA9IHZhbHVlLm1hdGNoKC8oPzotbW96LXwtbXMtfC1vLXwtZXB1Yi0pWy1cd10r
Lyk7Ci0gICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgY2Fub25pY2FsTmFtZUZvclByb3BlcnR5
TmFtZShuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFuYW1lIHx8IG5hbWUubGVuZ3RoIDwgOCB8
fCBuYW1lLmNoYXJBdCgwKSAhPT0gIi0iKQotICAgICAgICAgICAgcmV0dXJuIG5hbWU7Ci0KLSAg
ICAgICAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaCgvXig/Oi13ZWJraXQtfC1raHRtbC18LWFwcGxl
LSkoLispLyk7Ci0gICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gbmFtZTsK
LQotICAgICAgICByZXR1cm4gbWF0Y2hbMV07Ci0gICAgfQotCi0gICAgZmV0Y2hTdHlsZVNoZWV0
c0lmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9mZXRjaGVkSW5pdGlhbFN0eWxl
U2hlZXRzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ZldGNoSW5mb0Zv
ckFsbFN0eWxlU2hlZXRzKGZ1bmN0aW9uKCkge30pOwotICAgIH0KLQotICAgIHN0eWxlU2hlZXRG
b3JJZGVudGlmaWVyKGlkKQotICAgIHsKLSAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLl9z
dHlsZVNoZWV0SWRlbnRpZmllck1hcC5nZXQoaWQpOwotICAgICAgICBpZiAoc3R5bGVTaGVldCkK
LSAgICAgICAgICAgIHJldHVybiBzdHlsZVNoZWV0OwotCi0gICAgICAgIHN0eWxlU2hlZXQgPSBu
ZXcgV0kuQ1NTU3R5bGVTaGVldChpZCk7Ci0gICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZGVudGlm
aWVyTWFwLnNldChpZCwgc3R5bGVTaGVldCk7Ci0gICAgICAgIHJldHVybiBzdHlsZVNoZWV0Owot
ICAgIH0KLQotICAgIHN0eWxlc0Zvck5vZGUobm9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChub2Rl
LmlkIGluIHRoaXMuX25vZGVTdHlsZXNNYXApCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZVN0eWxlc01hcFtub2RlLmlkXTsKLQotICAgICAgICB2YXIgc3R5bGVzID0gbmV3IFdJLkRPTU5v
ZGVTdHlsZXMobm9kZSk7Ci0gICAgICAgIHRoaXMuX25vZGVTdHlsZXNNYXBbbm9kZS5pZF0gPSBz
dHlsZXM7Ci0gICAgICAgIHJldHVybiBzdHlsZXM7Ci0gICAgfQotCi0gICAgcHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGZyYW1lLCBjYWxsYmFjaywgZG9Ob3RDcmVhdGVJZk1p
c3NpbmcpCi0gICAgewotICAgICAgICB2YXIgaW5zcGVjdG9yU3R5bGVTaGVldHMgPSB0aGlzLl9p
bnNwZWN0b3JTdHlsZVNoZWV0c0ZvckZyYW1lKGZyYW1lKTsKLSAgICAgICAgZm9yIChsZXQgc3R5
bGVTaGVldCBvZiBpbnNwZWN0b3JTdHlsZVNoZWV0cykgewotICAgICAgICAgICAgaWYgKHN0eWxl
U2hlZXRbV0kuQ1NTU3R5bGVNYW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1i
b2xdKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soc3R5bGVTaGVldCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRv
Tm90Q3JlYXRlSWZNaXNzaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChD
U1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KSB7Ci0gICAgICAgICAgICBDU1NBZ2VudC5jcmVhdGVT
dHlsZVNoZWV0KGZyYW1lLmlkLCBmdW5jdGlvbihlcnJvciwgc3R5bGVTaGVldElkKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVl
dEZvcklkZW50aWZpZXIoc3R5bGVTaGVldElkKTsKLSAgICAgICAgICAgICAgICBzdHlsZVNoZWV0
W1dJLkNTU1N0eWxlTWFuYWdlci5QcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0U3ltYm9sXSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soc3R5bGVTaGVldCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyA5KTogQ1NTLmNyZWF0ZVN0eWxlU2hlZXQgZGlkIG5vdCBleGlzdC4KLSAg
ICAgICAgLy8gTGVnYWN5IGJhY2tlbmRzIGNhbiBvbmx5IGNyZWF0ZSB0aGUgSW5zcGVjdG9yIFN0
eWxlU2hlZXQgdGhyb3VnaCBDU1MuYWRkUnVsZS4KLSAgICAgICAgLy8gRXhwbG9pdCB0aGF0IHRv
IGNyZWF0ZSB0aGUgSW5zcGVjdG9yIFN0eWxlU2hlZXQgZm9yIHRoZSBkb2N1bWVudC5ib2R5IG5v
ZGUgaW4KLSAgICAgICAgLy8gdGhpcyBmcmFtZSwgdGhlbiBnZXQgdGhlIFN0eWxlU2hlZXQgZm9y
IHRoZSBuZXcgcnVsZS4KLQotICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGFwcGVuZFdlYkluc3Bl
Y3RvclNvdXJjZVVSTCgiZG9jdW1lbnQiKTsKLSAgICAgICAgbGV0IGNvbnRleHRJZCA9IGZyYW1l
LnBhZ2VFeGVjdXRpb25Db250ZXh0LmlkOwotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUu
aW52b2tlKHtleHByZXNzaW9uLCBvYmplY3RHcm91cDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQ
STogZmFsc2UsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZSwgY29u
dGV4dElkLCByZXR1cm5CeVZhbHVlOiBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZX0sIGRv
Y3VtZW50QXZhaWxhYmxlKTsKLQotICAgICAgICBmdW5jdGlvbiBkb2N1bWVudEF2YWlsYWJsZShl
cnJvciwgZG9jdW1lbnRSZW1vdGVPYmplY3RQYXlsb2FkKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxldCByZW1vdGVP
YmplY3QgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZG9jdW1lbnRSZW1vdGVPYmplY3RQ
YXlsb2FkKTsKLSAgICAgICAgICAgIHJlbW90ZU9iamVjdC5wdXNoTm9kZVRvRnJvbnRlbmQoZG9j
dW1lbnROb2RlQXZhaWxhYmxlLmJpbmQobnVsbCwgcmVtb3RlT2JqZWN0KSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBkb2N1bWVudE5vZGVBdmFpbGFibGUocmVtb3RlT2JqZWN0LCBk
b2N1bWVudE5vZGVJZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmVtb3RlT2JqZWN0LnJlbGVh
c2UoKTsKLQotICAgICAgICAgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkgewotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGVJZCwg
ImJvZHkiLCBib2R5Tm9kZUF2YWlsYWJsZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBib2R5Tm9kZUF2YWlsYWJsZShlcnJvciwgYm9keU5vZGVJZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsZXQgc2VsZWN0b3IgPSAiIjsgLy8gSW50
ZW50aW9uYWxseSBlbXB0eS4KLSAgICAgICAgICAgIENTU0FnZW50LmFkZFJ1bGUoYm9keU5vZGVJ
ZCwgc2VsZWN0b3IsIGNzc1J1bGVBdmFpbGFibGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gY3NzUnVsZUF2YWlsYWJsZShlcnJvciwgcGF5bG9hZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGVycm9yIHx8ICFwYXlsb2FkLnJ1bGVJZCkgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXRJZCA9IHBheWxvYWQucnVsZUlkLnN0eWxlU2hlZXRJ
ZDsKLSAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxl
U2hlZXQpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0eWxlU2hlZXRbV0kuQ1NT
U3R5bGVNYW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1ib2xdID0gdHJ1ZTsK
LQotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxl
U2hlZXQoKSk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0LnBhcmVudEZy
YW1lID09PSBmcmFtZSk7Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgbWVkaWFUeXBlQ2hhbmdlZCgpCi0gICAgewotICAgICAgICAv
LyBBY3QgdGhlIHNhbWUgYXMgaWYgbWVkaWEgcXVlcmllcyBjaGFuZ2VkLgotICAgICAgICB0aGlz
Lm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0K
LSAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5DU1NPYnNlcnZlci4KLQotICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9k
ZVN0eWxlc01hcCkKLSAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXNNYXBba2V5XS5tZWRpYVF1
ZXJ5UmVzdWx0RGlkQ2hhbmdlKCk7Ci0gICAgfQotCi0gICAgc3R5bGVTaGVldENoYW5nZWQoc3R5
bGVTaGVldElkZW50aWZpZXIpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DU1NP
YnNlcnZlci4KLSAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSB0aGlzLnN0eWxlU2hlZXRGb3JJZGVu
dGlmaWVyKHN0eWxlU2hlZXRJZGVudGlmaWVyKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5
bGVTaGVldCk7Ci0KLSAgICAgICAgLy8gRG8gbm90IG9ic2VydmUgaW5saW5lIHN0eWxlcwotICAg
ICAgICBpZiAoc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0eWxlU2hlZXQubm90ZUNvbnRlbnREaWRD
aGFuZ2UoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VDb250ZW50KHN0eWxlU2hlZXQp
OwotICAgIH0KLQotICAgIHN0eWxlU2hlZXRBZGRlZChzdHlsZVNoZWV0SW5mbykKLSAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5oYXMo
c3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElkKSwgIkF0dGVtcHRlZCB0byBhZGQgYSBDU1NTdHls
ZVNoZWV0IGJ1dCBpZGVudGlmaWVyIHdhcyBhbHJlYWR5IGluIHVzZSIpOwotICAgICAgICBsZXQg
c3R5bGVTaGVldCA9IHRoaXMuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldEluZm8u
c3R5bGVTaGVldElkKTsKLSAgICAgICAgbGV0IHBhcmVudEZyYW1lID0gV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJbmZvLmZyYW1lSWQpOwotICAg
ICAgICBsZXQgb3JpZ2luID0gV0kuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvY29sU3R5bGVTaGVldE9y
aWdpblRvRW51bShzdHlsZVNoZWV0SW5mby5vcmlnaW4pOwotICAgICAgICBzdHlsZVNoZWV0LnVw
ZGF0ZUluZm8oc3R5bGVTaGVldEluZm8uc291cmNlVVJMLCBwYXJlbnRGcmFtZSwgb3JpZ2luLCBz
dHlsZVNoZWV0SW5mby5pc0lubGluZSwgc3R5bGVTaGVldEluZm8uc3RhcnRMaW5lLCBzdHlsZVNo
ZWV0SW5mby5zdGFydENvbHVtbik7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwge3N0eWxlU2hl
ZXR9KTsKLSAgICB9Ci0KLSAgICBzdHlsZVNoZWV0UmVtb3ZlZChzdHlsZVNoZWV0SWRlbnRpZmll
cikKLSAgICB7Ci0gICAgICAgIGxldCBzdHlsZVNoZWV0ID0gdGhpcy5fc3R5bGVTaGVldElkZW50
aWZpZXJNYXAuZ2V0KHN0eWxlU2hlZXRJZGVudGlmaWVyKTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoc3R5bGVTaGVldCwgIkF0dGVtcHRlZCB0byByZW1vdmUgYSBDU1NTdHlsZVNoZWV0IHRoYXQg
d2FzIG5vdCB0cmFja2VkIik7Ci0gICAgICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5kZWxldGUo
c3R5bGVTaGVldElkZW50aWZpZXIpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCwge3N0eWxl
U2hlZXR9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfaW5zcGVjdG9yU3R5bGVT
aGVldHNGb3JGcmFtZShmcmFtZSkKLSAgICB7Ci0gICAgICAgIGxldCBzdHlsZVNoZWV0cyA9IFtd
OwotCi0gICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgdGhpcy5zdHlsZVNoZWV0cykgewot
ICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgJiYgc3R5
bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gZnJhbWUpCi0gICAgICAgICAgICAgICAgc3R5bGVTaGVl
dHMucHVzaChzdHlsZVNoZWV0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzdHlsZVNo
ZWV0czsKLSAgICB9Ci0KLSAgICBfbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2UoZXZlbnQpCi0g
ICAgewotICAgICAgICB2YXIgbm9kZSA9IGV2ZW50LnRhcmdldDsKLQotICAgICAgICBmb3IgKHZh
ciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01hcCkgewotICAgICAgICAgICAgdmFyIG5vZGVTdHls
ZXMgPSB0aGlzLl9ub2RlU3R5bGVzTWFwW2tleV07Ci0gICAgICAgICAgICBpZiAobm9kZVN0eWxl
cy5ub2RlICE9PSBub2RlICYmICFub2RlU3R5bGVzLm5vZGUuaXNEZXNjZW5kYW50KG5vZGUpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbm9kZVN0eWxlcy5wc2V1ZG9D
bGFzc2VzRGlkQ2hhbmdlKG5vZGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX25vZGVBdHRy
aWJ1dGVzRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSBldmVudC50
YXJnZXQ7Ci0KLSAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX25vZGVTdHlsZXNNYXApIHsK
LSAgICAgICAgICAgIHZhciBub2RlU3R5bGVzID0gdGhpcy5fbm9kZVN0eWxlc01hcFtrZXldOwot
ICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMubm9kZSAhPT0gbm9kZSAmJiAhbm9kZVN0eWxlcy5u
b2RlLmlzRGVzY2VuZGFudChub2RlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIG5vZGVTdHlsZXMuYXR0cmlidXRlRGlkQ2hhbmdlKG5vZGUsIGV2ZW50LmRhdGEubmFt
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50
KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2Yg
V0kuRnJhbWUpOwotCi0gICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2xlYXIgb3VyIG1hcHMgd2hlbiB0aGUg
bWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCi0KLSAgICAgICAgdGhpcy5fZmV0Y2hlZEluaXRpYWxTdHls
ZVNoZWV0cyA9IHdpbmRvdy5DU1NBZ2VudCAmJiB3aW5kb3cuQ1NTQWdlbnQuaGFzRXZlbnQoInN0
eWxlU2hlZXRBZGRlZCIpOwotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5j
bGVhcigpOwotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuY2xlYXIoKTsKLSAg
ICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OwotICAgIH0KLQotICAgIF9yZXNvdXJjZUFk
ZGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGlu
c3RhbmNlb2YgV0kuRnJhbWUpOwotCi0gICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRhdGEu
cmVzb3VyY2U7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKLQotICAgICAgICBp
ZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2NsZWFyU3R5bGVTaGVldHNGb3JSZXNvdXJj
ZShyZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgX3Jlc291cmNlVHlwZURpZENoYW5nZShldmVudCkK
LSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJ
LlJlc291cmNlKTsKLQotICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJnZXQ7Ci0gICAg
ICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY2xlYXJTdHlsZVNoZWV0c0ZvclJl
c291cmNlKHJlc291cmNlKTsKLSAgICB9Ci0KLSAgICBfY2xlYXJTdHlsZVNoZWV0c0ZvclJlc291
cmNlKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgLy8gQ2xlYXIga25vd24gc3R5bGVzaGVldHMg
Zm9yIHRoaXMgVVJMIGFuZCBmcmFtZS4gVGhpcyB3aWxsIGNhdXNlIHRoZSBzdHlsZXNoZWV0cyB0
bwotICAgICAgICAvLyBiZSB1cGRhdGVkIG5leHQgdGltZSBfZmV0Y2hJbmZvRm9yQWxsU3R5bGVT
aGVldHMgaXMgY2FsbGVkLgotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5k
ZWxldGUodGhpcy5fZnJhbWVVUkxNYXBLZXkocmVzb3VyY2UucGFyZW50RnJhbWUsIHJlc291cmNl
LnVybCkpOwotICAgIH0KLQotICAgIF9mcmFtZVVSTE1hcEtleShmcmFtZSwgdXJsKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZyYW1lLmlkICsgIjoiICsgdXJsOwotICAgIH0KLQotICAgIF9sb29r
dXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldChyZXNvdXJjZS5wYXJlbnRGcmFtZSwgcmVzb3VyY2Uu
dXJsLCBjYWxsYmFjayk7Ci0gICAgfQotCi0gICAgX2xvb2t1cFN0eWxlU2hlZXQoZnJhbWUsIHVy
bCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSBpbnN0YW5j
ZW9mIFdJLkZyYW1lKTsKLQotICAgICAgICBsZXQga2V5ID0gdGhpcy5fZnJhbWVVUkxNYXBLZXko
ZnJhbWUsIHVybCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gc3R5bGVTaGVldHNGZXRjaGVkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFw
LmdldChrZXkpIHx8IG51bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHN0eWxlU2hlZXQg
PSB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuZ2V0KGtleSkgfHwgbnVsbDsKLSAgICAgICAg
aWYgKHN0eWxlU2hlZXQpCi0gICAgICAgICAgICBjYWxsYmFjayhzdHlsZVNoZWV0KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMoc3R5
bGVTaGVldHNGZXRjaGVkLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIF9mZXRjaEluZm9Gb3JB
bGxTdHlsZVNoZWV0cyhjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvY2Vz
c1N0eWxlU2hlZXRzKGVycm9yLCBzdHlsZVNoZWV0cykKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLmNsZWFyKCk7Ci0KLSAgICAgICAgICAgIGlmIChl
cnJvcikgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0SW5m
byBvZiBzdHlsZVNoZWV0cykgewotICAgICAgICAgICAgICAgIGxldCBwYXJlbnRGcmFtZSA9IFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5mby5m
cmFtZUlkKTsKLSAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID0gV0kuQ1NTU3R5bGVNYW5hZ2Vy
LnByb3RvY29sU3R5bGVTaGVldE9yaWdpblRvRW51bShzdHlsZVNoZWV0SW5mby5vcmlnaW4pOwot
Ci0gICAgICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBUaGUgaW5mbyBkaWQg
bm90IGhhdmUgJ2lzSW5saW5lJywgJ3N0YXJ0TGluZScsIGFuZCAnc3RhcnRDb2x1bW4nLCBzbyBt
YWtlIGZhbHNlIGFuZCAwIGluIHRoZXNlIGNhc2VzLgotICAgICAgICAgICAgICAgIGxldCBpc0lu
bGluZSA9IHN0eWxlU2hlZXRJbmZvLmlzSW5saW5lIHx8IGZhbHNlOwotICAgICAgICAgICAgICAg
IGxldCBzdGFydExpbmUgPSBzdHlsZVNoZWV0SW5mby5zdGFydExpbmUgfHwgMDsKLSAgICAgICAg
ICAgICAgICBsZXQgc3RhcnRDb2x1bW4gPSBzdHlsZVNoZWV0SW5mby5zdGFydENvbHVtbiB8fCAw
OwotCi0gICAgICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLnN0eWxlU2hlZXRGb3JJ
ZGVudGlmaWVyKHN0eWxlU2hlZXRJbmZvLnN0eWxlU2hlZXRJZCk7Ci0gICAgICAgICAgICAgICAg
c3R5bGVTaGVldC51cGRhdGVJbmZvKHN0eWxlU2hlZXRJbmZvLnNvdXJjZVVSTCwgcGFyZW50RnJh
bWUsIG9yaWdpbiwgaXNJbmxpbmUsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pOwotCi0gICAgICAg
ICAgICAgICAgbGV0IGtleSA9IHRoaXMuX2ZyYW1lVVJMTWFwS2V5KHBhcmVudEZyYW1lLCBzdHls
ZVNoZWV0SW5mby5zb3VyY2VVUkwpOwotICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRG
cmFtZVVSTE1hcC5zZXQoa2V5LCBzdHlsZVNoZWV0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIENTU0FnZW50LmdldEFsbFN0
eWxlU2hlZXRzKHByb2Nlc3NTdHlsZVNoZWV0cy5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBf
cmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBpZiAocmVzb3VyY2UgPT09IHRoaXMuX2lnbm9y
ZVJlc291cmNlQ29udGVudERpZENoYW5nZUV2ZW50Rm9yUmVzb3VyY2UpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgLy8gSWdub3JlIGlmIGl0IGlzbid0IGEgQ1NTIHN0eWxlc2hlZXQu
Ci0gICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQgfHwgcmVzb3VyY2Uuc3ludGhldGljTUlNRVR5cGUgIT09ICJ0ZXh0L2NzcyIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRGb3VuZChzdHlsZVNo
ZWV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc291cmNlLl9fcGVuZGluZ0No
YW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZVNoZWV0KTsKLSAgICAgICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIC8vIFRvIHByZXZlbnQgdXBk
YXRpbmcgYSBUZXh0RWRpdG9yJ3MgY29udGVudCB3aGlsZSB0aGUgdXNlciBpcyB0eXBpbmcgaW4g
aXQgd2Ugd2FudCB0bwotICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB0aGUgbmV4dCBfdXBkYXRl
UmVzb3VyY2VDb250ZW50IGNhbGwuCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UuX19pZ25vcmVO
ZXh0VXBkYXRlUmVzb3VyY2VDb250ZW50ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIFdJLmJy
YW5jaE1hbmFnZXIuY3VycmVudEJyYW5jaC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHN0
eWxlU2hlZXQpLmNvbnRlbnQgPSByZXNvdXJjZS5jb250ZW50OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB0aGlzLl9sb29rdXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVzb3VyY2UsIHN0
eWxlU2hlZXRGb3VuZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXNv
dXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHJl
c291cmNlLl9fcGVuZGluZ0NoYW5nZVRpbWVvdXQpOwotICAgICAgICByZXNvdXJjZS5fX3BlbmRp
bmdDaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91dChhcHBseVN0eWxlU2hlZXRDaGFuZ2VzLmJpbmQo
dGhpcyksIDUwMCk7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVJlc291cmNlQ29udGVudChzdHlsZVNo
ZWV0KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCk7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gZmV0Y2hlZFN0eWxlU2hlZXRDb250ZW50KHBhcmFtZXRlcnMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGxldCByZXByZXNlbnRlZE9iamVjdCA9IHBhcmFtZXRlcnMuc291cmNl
Q29kZTsKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9fcGVuZGluZ0NoYW5nZVRpbWVv
dXQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVk
T2JqZWN0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0LnVybCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmICghc3R5bGVTaGVldC5pc0lu
c3BlY3RvclN0eWxlU2hlZXQoKSkgewotICAgICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0
ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWUucmVzb3VyY2VGb3JVUkwocmVwcmVzZW50
ZWRPYmplY3QudXJsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0KQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAvLyBPbmx5IHRy
eSB0byB1cGRhdGUgc3R5bGVzaGVldCByZXNvdXJjZXMuIE90aGVyIHJlc291cmNlcywgbGlrZSBk
b2N1bWVudHMsIGNhbiBjb250YWluCi0gICAgICAgICAgICAgICAgLy8gbXVsdGlwbGUgc3R5bGVz
aGVldHMgYW5kIHdlIGRvbid0IGhhdmUgdGhlIHNvdXJjZSByYW5nZXMgdG8gdXBkYXRlIHRob3Nl
LgotICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC50eXBlICE9PSBXSS5SZXNv
dXJjZS5UeXBlLlN0eWxlc2hlZXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0Ll9faWdub3JlTmV4
dFVwZGF0ZVJlc291cmNlQ29udGVudCkgewotICAgICAgICAgICAgICAgIHJlcHJlc2VudGVkT2Jq
ZWN0Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVudCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5faWdub3Jl
UmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlRXZlbnRGb3JSZXNvdXJjZSA9IHJlcHJlc2VudGVkT2Jq
ZWN0OwotCi0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBXSS5icmFuY2hNYW5hZ2VyLmN1cnJl
bnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7
Ci0gICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSkgewot
ICAgICAgICAgICAgICAgIHJldmlzaW9uLmNvbnRlbnQgPSByZXByZXNlbnRlZE9iamVjdC5jb250
ZW50OwotICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICByZXZpc2lvbi5jb250ZW50ID0gcGFyYW1ldGVycy5jb250ZW50
OwotCi0gICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2VFdmVu
dEZvclJlc291cmNlID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN0eWxl
U2hlZXRSZWFkeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0eWxlU2hlZXQucmVxdWVzdENv
bnRlbnQoKS50aGVuKGZldGNoZWRTdHlsZVNoZWV0Q29udGVudC5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGx5U3R5bGVTaGVldENoYW5nZXMoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoc3R5bGVTaGVldC51cmwpCi0gICAgICAgICAgICAgICAgc3R5
bGVTaGVldFJlYWR5LmNhbGwodGhpcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGhpcy5fZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMoc3R5bGVTaGVldFJlYWR5LmJpbmQo
dGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0eWxlU2hlZXQuX19wZW5kaW5nQ2hh
bmdlVGltZW91dCkKLSAgICAgICAgICAgIGNsZWFyVGltZW91dChzdHlsZVNoZWV0Ll9fcGVuZGlu
Z0NoYW5nZVRpbWVvdXQpOwotICAgICAgICBzdHlsZVNoZWV0Ll9fcGVuZGluZ0NoYW5nZVRpbWVv
dXQgPSBzZXRUaW1lb3V0KGFwcGx5U3R5bGVTaGVldENoYW5nZXMuYmluZCh0aGlzKSwgNTAwKTsK
LSAgICB9Ci19OwotCi1XSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgU3R5bGVTaGVl
dEFkZGVkOiAiY3NzLXN0eWxlLW1hbmFnZXItc3R5bGUtc2hlZXQtYWRkZWQiLAotICAgIFN0eWxl
U2hlZXRSZW1vdmVkOiAiY3NzLXN0eWxlLW1hbmFnZXItc3R5bGUtc2hlZXQtcmVtb3ZlZCIsCi19
OwotCi1XSS5DU1NTdHlsZU1hbmFnZXIuUHNldWRvRWxlbWVudE5hbWVzID0gWyJiZWZvcmUiLCAi
YWZ0ZXIiXTsKLVdJLkNTU1N0eWxlTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzID0gWyJh
Y3RpdmUiLCAiZm9jdXMiLCAiaG92ZXIiLCAidmlzaXRlZCJdOwotV0kuQ1NTU3R5bGVNYW5hZ2Vy
LlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1ib2wgPSBTeW1ib2woImNzcy1zdHlsZS1t
YW5hZ2VyLXByZWZlcnJlZC1pbnNwZWN0b3Itc3R5bGVzaGVldCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9D
b25zb2xlTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDU0ZjQ4ZWZjY2ZlNTlkN2NkN2JmYWU2MDk1
NWQ1YTY4ZmQxMGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMKQEAgLTAsMCArMSwxNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRvYmlhcyBSZWlzcyA8dG9iaSt3ZWJraXRAYmFz
ZWNvZGUuZGU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dJLkNvbnNvbGVNYW5hZ2VyID0gY2xhc3MgQ29uc29sZU1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBm
YWxzZTsKKyAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBmYWxzZTsKKworICAgICAg
ICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURp
ZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0
aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHMgPSBbXTsKKyAgICAgICAgdGhpcy5fbG9nZ2luZ0No
YW5uZWxTb3VyY2VzID0gW107CisKKyAgICAgICAgaWYgKFdJLkNvbnNvbGVNYW5hZ2VyLnN1cHBv
cnRzTG9nQ2hhbm5lbHMoKSkgeworICAgICAgICAgICAgdGhpcy5fbG9nZ2luZ0NoYW5uZWxTb3Vy
Y2VzID0gW1dJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEsIFdJLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VTb3VyY2UuV2ViUlRDXTsKKyAgICAgICAgICAgIENvbnNvbGVBZ2VudC5n
ZXRMb2dnaW5nQ2hhbm5lbHMoKGVycm9yLCBjaGFubmVscykgPT4geworICAgICAgICAgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgY2hhbm5lbCBvZiBjaGFubmVscykgeworICAgICAgICAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXMuaW5jbHVkZXMoY2hhbm5l
bC5zb3VyY2UpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLl9j
dXN0b21Mb2dnaW5nQ2hhbm5lbHMgPSBjaGFubmVscy5tYXAoV0kuTG9nZ2luZ0NoYW5uZWwuZnJv
bVBheWxvYWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBT
dGF0aWMKKworICAgIHN0YXRpYyBzdXBwb3J0c0xvZ0NoYW5uZWxzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiAhIUNvbnNvbGVBZ2VudC5nZXRMb2dnaW5nQ2hhbm5lbHM7CisgICAgfQorCisgICAg
Ly8gUHVibGljCisKKyAgICBnZXQgY3VzdG9tTG9nZ2luZ0NoYW5uZWxzKCkgeyByZXR1cm4gdGhp
cy5fY3VzdG9tTG9nZ2luZ0NoYW5uZWxzOyB9CisgICAgZ2V0IGxvZ0NoYW5uZWxTb3VyY2VzKCkg
eyByZXR1cm4gdGhpcy5fbG9nZ2luZ0NoYW5uZWxTb3VyY2VzOyB9CisKKyAgICBtZXNzYWdlV2Fz
QWRkZWQodGFyZ2V0LCBzb3VyY2UsIGxldmVsLCB0ZXh0LCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVt
biwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3RJZCkKKyAgICB7
CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkNvbnNvbGVPYnNlcnZlci4KKworICAgICAgICAv
LyBGSVhNRTogR2V0IGEgcmVxdWVzdCBmcm9tIHJlcXVlc3QgSUQuCisKKyAgICAgICAgaWYgKHBh
cmFtZXRlcnMpCisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5tYXAoKHgpID0+
IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZCh4LCB0YXJnZXQpKTsKKworICAgICAgICBsZXQg
bWVzc2FnZSA9IG5ldyBXSS5Db25zb2xlTWVzc2FnZSh0YXJnZXQsIHNvdXJjZSwgbGV2ZWwsIHRl
eHQsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3Rh
Y2tUcmFjZSwgbnVsbCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVzc2FnZX0pOworCisgICAg
ICAgIGlmIChtZXNzYWdlLmxldmVsID09PSAid2FybmluZyIgfHwgbWVzc2FnZS5sZXZlbCA9PT0g
ImVycm9yIikKKyAgICAgICAgICAgIFdJLmlzc3VlTWFuYWdlci5pc3N1ZVdhc0FkZGVkKG1lc3Nh
Z2UpOworICAgIH0KKworICAgIG1lc3NhZ2VzQ2xlYXJlZCgpCisgICAgeworICAgICAgICAvLyBD
YWxsZWQgZnJvbSBXSS5Db25zb2xlT2JzZXJ2ZXIuCisKKyAgICAgICAgV0kuQ29uc29sZUNvbW1h
bmRSZXN1bHRNZXNzYWdlLmNsZWFyTWF4aW11bVNhdmVkUmVzdWx0SW5kZXgoKTsKKworICAgICAg
ICBpZiAodGhpcy5fY2xlYXJNZXNzYWdlc1JlcXVlc3RlZCkgeworICAgICAgICAgICAgLy8gRnJv
bnRlbmQgcmVxdWVzdGVkICJjbGVhciBjb25zb2xlIiBhbmQgQmFja2VuZCBzdWNjZXNzZnVsbHkg
Y29tcGxldGVkIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdlc1Jl
cXVlc3RlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBSZWNlaXZlZCBhbiB1bnJlcXVlc3RlZCBjbGVhciBjb25zb2xlIGV2ZW50
LgorICAgICAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBmb3IgYSBuYXZpZ2F0aW9uIG9yIG90aGVy
IHJlYXNvbnMgKGxpa2UgY29uc29sZS5jbGVhcigpKS4KKyAgICAgICAgICAgIC8vIElmIHRoaXMg
d2FzIGEgcmVsb2FkLCB3ZSBtYXkgbm90IHdhbnQgdG8gZGlzcGF0Y2ggV0kuQ29uc29sZU1hbmFn
ZXIuRXZlbnQuQ2xlYXJlZC4KKyAgICAgICAgICAgIC8vIFRvIGRldGVjdCBpZiB0aGlzIGlzIGEg
cmVsb2FkIHdlIHdhaXQgYSB0dXJuIGFuZCBjaGVjayBpZiB0aGVyZSB3YXMgYSBtYWluIHJlc291
cmNlIGNoYW5nZSByZWxvYWQuCisgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuX2RlbGF5ZWRN
ZXNzYWdlc0NsZWFyZWQuYmluZCh0aGlzKSwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBf
ZGVsYXllZE1lc3NhZ2VzQ2xlYXJlZCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5faXNOZXdQ
YWdlT3JSZWxvYWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2lzTmV3UGFnZU9yUmVsb2FkID0gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmICghV0kuc2V0dGluZ3MuY2xlYXJMb2dPbk5hdmlnYXRlLnZh
bHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEEg
Y29uc29sZS5jbGVhcigpIG9yIGNvbW1hbmQgbGluZSBjbGVhcigpIGhhcHBlbmVkLgorICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5D
bGVhcmVkKTsKKyAgICB9CisKKyAgICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGNvdW50KQor
ICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ29uc29sZU9ic2VydmVyLgorCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwge2NvdW50fSk7CisgICAgfQorCisg
ICAgcmVxdWVzdENsZWFyTWVzc2FnZXMoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJNZXNz
YWdlc1JlcXVlc3RlZCA9IHRydWU7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgICAgICB0YXJnZXQuQ29uc29sZUFnZW50LmNsZWFyTWVzc2FnZXMoKTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2
ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNl
b2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQg
PSB0cnVlOworCisgICAgICAgIGxldCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpOworICAgICAgICBs
ZXQgd2FzUmVsb2FkZWQgPSBldmVudC5kYXRhLm9sZE1haW5SZXNvdXJjZSAmJiBldmVudC5kYXRh
Lm9sZE1haW5SZXNvdXJjZS51cmwgPT09IGV2ZW50LnRhcmdldC5tYWluUmVzb3VyY2UudXJsOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5F
dmVudC5TZXNzaW9uU3RhcnRlZCwge3RpbWVzdGFtcCwgd2FzUmVsb2FkZWR9KTsKKworICAgICAg
ICBXSS5Db25zb2xlQ29tbWFuZFJlc3VsdE1lc3NhZ2UuY2xlYXJNYXhpbXVtU2F2ZWRSZXN1bHRJ
bmRleCgpOworICAgIH0KK307CisKK1dJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50ID0geworICAgIFNl
c3Npb25TdGFydGVkOiAiY29uc29sZS1tYW5hZ2VyLXNlc3Npb24td2FzLXN0YXJ0ZWQiLAorICAg
IENsZWFyZWQ6ICJjb25zb2xlLW1hbmFnZXItY2xlYXJlZCIsCisgICAgTWVzc2FnZUFkZGVkOiAi
Y29uc29sZS1tYW5hZ2VyLW1lc3NhZ2UtYWRkZWQiLAorICAgIFByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZDogImNvbnNvbGUtbWFuYWdlci1wcmV2aW91cy1tZXNzYWdlLXJlcGVhdC1j
b3VudC11cGRhdGVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5q
cwppbmRleCBhODY3ZjM2MWJkZWNkZTkxM2VlODNiNGJkOGM0NmQ1MjU3YjM2OGYwLi43NzcwNTFi
MzE5MzUyN2RjMGYxZjJmYzQ4Y2UzOTcxOWYyNWI2MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC00NiwxMCArNDYsMTAgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkV2ZW50QnJlYWtwb2lu
dC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9ldmVudEJyZWFrcG9pbnREaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV0kuWEhSQnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLlhIUkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5n
ZSwgdGhpcy5feGhyQnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogCi0g
ICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFn
ZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVu
dC5Ob2RlSW5zZXJ0ZWQsIHRoaXMuX25vZGVJbnNlcnRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRv
bU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVk
LCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUlu
c2VydGVkLCB0aGlzKTsKIAotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5n
ZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVE
aWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0ku
RnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3Zl
ZCwgdGhpcy5fY2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMpOwogICAgICAgICBXSS5GcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhp
cy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTk2LDcgKzk2LDcgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICBnZXQgZG9tQnJlYWtwb2ludHMoKQogICAgIHsKLSAgICAgICAgbGV0IG1haW5G
cmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgbGV0IG1h
aW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgaWYgKCFtYWlu
RnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gW107CiAKQEAgLTM0MSw3ICszNDEsNyBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICBfZGV0YWNoRE9NQnJlYWtwb2ludChicmVha3BvaW50KQogICAgIHsKICAgICAg
ICAgbGV0IG5vZGVJZGVudGlmaWVyID0gYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcjsKLSAg
ICAgICAgbGV0IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZp
ZXIpOworICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZGVu
dGlmaWVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSwgIk1pc3NpbmcgRE9NIG5vZGUg
Zm9yIGJyZWFrcG9pbnQuIiwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM4NCw3ICszODQsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIg
PSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9zcGVj
dWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnRzKCkKICAgICB7Ci0gICAgICAgIGxldCBtYWluRnJh
bWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIGxldCBtYWlu
RnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAgICAgIGlmICghbWFpbkZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTQsNyArMzk0LDcgQEAgV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnQucGF0aCwgKG5vZGVJZGVu
dGlmaWVyKSA9PiB7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5wdXNoTm9kZUJ5UGF0
aFRvRnJvbnRlbmQoYnJlYWtwb2ludC5wYXRoLCAobm9kZUlkZW50aWZpZXIpID0+IHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFub2RlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNDEyLDcgKzQxMiw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX3Jlc29s
dmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIG5vZGVJZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgbGV0IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXIp
OworICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZGVudGlm
aWVyKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSwgIk1pc3NpbmcgRE9NIG5vZGUgZm9y
IG5vZGVJZGVudGlmaWVyLiIsIG5vZGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFub2RlKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDkwZDdkMTdiOWJmMzc0ZjJmM2E2MmQ2NjM5NGMwY2Y4ZDMwNjg0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1h
bmFnZXIuanMKQEAgLTAsMCArMSw2NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBKb3NlcGggUGVjb3Jhcm8KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlID0ge307CisgICAgICAgIHRoaXMuX2RvY3VtZW50ID0g
bnVsbDsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMgPSB7fTsKKyAgICAgICAg
dGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCA9IHRydWU7CisgICAgICAgIHRoaXMu
X2xvYWROb2RlQXR0cmlidXRlc1RpbWVvdXQgPSAwOworICAgICAgICB0aGlzLl9pbnNwZWN0ZWRO
b2RlID0gbnVsbDsKKworICAgICAgICB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJz
ID0gbmV3IE1hcDsKKworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1l
LkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBldmVudExpc3RlbmVy
QnJlYWtwb2ludHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fYnJl
YWtwb2ludHNGb3JFdmVudExpc3RlbmVycy52YWx1ZXMoKSk7CisgICAgfQorCisgICAgcmVxdWVz
dERvY3VtZW50KGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50KSB7
CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVz
dENhbGxiYWNrcykgeworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENh
bGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBbY2FsbGJh
Y2tdOworCisgICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUoZXJyb3IsIHJvb3Qp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICAgICAgdGhp
cy5fc2V0RG9jdW1lbnQocm9vdCk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9m
IHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MpCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sodGhpcy5fZG9jdW1lbnQpOworCisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRG9j
dW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIERPTUFn
ZW50LmdldERvY3VtZW50KG9uRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgfQor
CisgICAgZW5zdXJlRG9jdW1lbnQoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXF1ZXN0RG9jdW1l
bnQoZnVuY3Rpb24oKXt9KTsKKyAgICB9CisKKyAgICBwdXNoTm9kZVRvRnJvbnRlbmQob2JqZWN0
SWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hXaGVuRG9jdW1lbnRB
dmFpbGFibGUoRE9NQWdlbnQucmVxdWVzdE5vZGUuYmluZChET01BZ2VudCwgb2JqZWN0SWQpLCBj
YWxsYmFjayk7CisgICAgfQorCisgICAgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hXaGVuRG9jdW1lbnRBdmFpbGFi
bGUoRE9NQWdlbnQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kLmJpbmQoRE9NQWdlbnQsIHBhdGgp
LCBjYWxsYmFjayk7CisgICAgfQorCisgICAgZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpCisg
ICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KKworICAgICAgICBs
ZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCk7CisgICAgfQorCisg
ICAgd2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZUlkKQorICAgIHsKKyAgICAgICAgLy8gQ2Fs
bGVkIGZyb20gV0kuRE9NT2JzZXJ2ZXIuCisKKyAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9pZFRv
RE9NTm9kZVtub2RlSWRdOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZS5FdmVu
dC5FdmVudExpc3RlbmVyc0NoYW5nZWQpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIWNhbGxi
YWNrKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KGVycm9yLCByZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJFcnJvciBkdXJpbmcgRE9NQWdlbnQgb3BlcmF0aW9uOiAiICsgZXJy
b3IpOworICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBudWxsIDogcmVzdWx0KTsKKyAgICAg
ICAgfTsKKyAgICB9CisKKyAgICBfZGlzcGF0Y2hXaGVuRG9jdW1lbnRBdmFpbGFibGUoZnVuYywg
Y2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgY2FsbGJhY2tXcmFwcGVyID0gdGhpcy5fd3Jh
cENsaWVudENhbGxiYWNrKGNhbGxiYWNrKTsKKworICAgICAgICBmdW5jdGlvbiBvbkRvY3VtZW50
QXZhaWxhYmxlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50KQor
ICAgICAgICAgICAgICAgIGZ1bmMoY2FsbGJhY2tXcmFwcGVyKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja1dyYXBwZXIpCisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrV3JhcHBlcigiTm8gZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICB0aGlzLnJlcXVlc3REb2N1bWVudChvbkRvY3VtZW50QXZhaWxhYmxlLmJp
bmQodGhpcykpOworICAgIH0KKworICAgIF9hdHRyaWJ1dGVNb2RpZmllZChub2RlSWQsIG5hbWUs
IHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2Rl
SWRdOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bm9kZS5fc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25v
ZGUsIG5hbWV9KTsKKyAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
Tm9kZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25hbWV9KTsKKyAgICB9CisKKyAgICBfYXR0
cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBub2RlLl9yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0cmli
dXRlUmVtb3ZlZCwge25vZGUsIG5hbWV9KTsKKyAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRE9NTm9kZS5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB7bmFtZX0pOworICAg
IH0KKworICAgIF9pbmxpbmVTdHlsZUludmFsaWRhdGVkKG5vZGVJZHMpCisgICAgeworICAgICAg
ICBmb3IgKHZhciBub2RlSWQgb2Ygbm9kZUlkcykKKyAgICAgICAgICAgIHRoaXMuX2F0dHJpYnV0
ZUxvYWROb2RlSWRzW25vZGVJZF0gPSB0cnVlOworICAgICAgICBpZiAodGhpcy5fbG9hZE5vZGVB
dHRyaWJ1dGVzVGltZW91dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fbG9h
ZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fbG9hZE5vZGVBdHRyaWJ1
dGVzLmJpbmQodGhpcyksIDApOworICAgIH0KKworICAgIF9sb2FkTm9kZUF0dHJpYnV0ZXMoKQor
ICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobm9kZUlkLCBlcnJvciwgYXR0cmlidXRl
cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiRXJyb3IgZHVyaW5nIERPTUFnZW50IG9wZXJhdGlvbjogIiArIGVycm9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2
YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgICAgICBpZiAobm9k
ZSkgeworICAgICAgICAgICAgICAgIG5vZGUuX3NldEF0dHJpYnV0ZXNQYXlsb2FkKGF0dHJpYnV0
ZXMpOworICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRP
TU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHtub2RlLCBuYW1lOiAic3R5bGUifSk7
CisgICAgICAgICAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9k
ZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25hbWU6ICJzdHlsZSJ9KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2xvYWROb2RlQXR0cmlidXRlc1RpbWVvdXQg
PSAwOworCisgICAgICAgIGZvciAodmFyIG5vZGVJZCBpbiB0aGlzLl9hdHRyaWJ1dGVMb2FkTm9k
ZUlkcykgeworICAgICAgICAgICAgdmFyIG5vZGVJZEFzTnVtYmVyID0gcGFyc2VJbnQobm9kZUlk
KTsKKyAgICAgICAgICAgIERPTUFnZW50LmdldEF0dHJpYnV0ZXMobm9kZUlkQXNOdW1iZXIsIGNh
bGxiYWNrLmJpbmQodGhpcywgbm9kZUlkQXNOdW1iZXIpKTsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9hdHRyaWJ1dGVMb2FkTm9kZUlkcyA9IHt9OworICAgIH0KKworICAgIF9jaGFyYWN0ZXJE
YXRhTW9kaWZpZWQobm9kZUlkLCBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0g
dGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgbm9kZS5fbm9kZVZhbHVlID0gbmV3
VmFsdWU7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFn
ZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB7bm9kZX0pOworICAgIH0KKworICAgIG5v
ZGVGb3JJZChub2RlSWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWRUb0RPTU5vZGVb
bm9kZUlkXTsKKyAgICB9CisKKyAgICBfZG9jdW1lbnRVcGRhdGVkKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3NldERvY3VtZW50KG51bGwpOworICAgIH0KKworICAgIF9zZXREb2N1bWVudChwYXls
b2FkKQorICAgIHsKKyAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKKyAgICAgICAgdGhp
cy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5jbGVhcigpOworCisgICAgICAgIGxldCBu
ZXdEb2N1bWVudCA9IG51bGw7CisgICAgICAgIGlmIChwYXlsb2FkICYmICJub2RlSWQiIGluIHBh
eWxvYWQpCisgICAgICAgICAgICBuZXdEb2N1bWVudCA9IG5ldyBXSS5ET01Ob2RlKHRoaXMsIG51
bGwsIGZhbHNlLCBwYXlsb2FkKTsKKworICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQgPT09IG5l
d0RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2RvY3VtZW50
ID0gbmV3RG9jdW1lbnQ7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLCB7ZG9jdW1lbnQ6IHRoaXMuX2RvY3Vt
ZW50fSk7CisgICAgfQorCisgICAgX3NldERldGFjaGVkUm9vdChwYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgbmV3IFdJLkRPTU5vZGUodGhpcywgbnVsbCwgZmFsc2UsIHBheWxvYWQpOworICAgIH0K
KworICAgIF9zZXRDaGlsZE5vZGVzKHBhcmVudElkLCBwYXlsb2FkcykKKyAgICB7CisgICAgICAg
IGlmICghcGFyZW50SWQgJiYgcGF5bG9hZHMubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLl9z
ZXREZXRhY2hlZFJvb3QocGF5bG9hZHNbMF0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuX2lkVG9ET01Ob2RlW3BhcmVudElkXTsK
KyAgICAgICAgcGFyZW50Ll9zZXRDaGlsZHJlblBheWxvYWQocGF5bG9hZHMpOworICAgIH0KKwor
ICAgIF9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBuZXdWYWx1ZSkKKyAgICB7CisgICAg
ICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgbm9kZS5j
aGlsZE5vZGVDb3VudCA9IG5ld1ZhbHVlOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50LkNoaWxkTm9kZUNvdW50VXBkYXRlZCwgbm9kZSk7
CisgICAgfQorCisgICAgX2NoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHBheWxv
YWQpCisgICAgeworICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50
SWRdOworICAgICAgICB2YXIgcHJldiA9IHRoaXMuX2lkVG9ET01Ob2RlW3ByZXZJZF07CisgICAg
ICAgIHZhciBub2RlID0gcGFyZW50Ll9pbnNlcnRDaGlsZChwcmV2LCBwYXlsb2FkKTsKKyAgICAg
ICAgdGhpcy5faWRUb0RPTU5vZGVbbm9kZS5pZF0gPSBub2RlOworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25v
ZGUsIHBhcmVudH0pOworICAgIH0KKworICAgIF9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBu
b2RlSWQpCisgICAgeworICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFy
ZW50SWRdOworICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Cisg
ICAgICAgIHBhcmVudC5fcmVtb3ZlQ2hpbGQobm9kZSk7CisgICAgICAgIHRoaXMuX3VuYmluZChu
b2RlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdl
ci5FdmVudC5Ob2RlUmVtb3ZlZCwge25vZGUsIHBhcmVudH0pOworICAgIH0KKworICAgIF9jdXN0
b21FbGVtZW50U3RhdGVDaGFuZ2VkKGVsZW1lbnRJZCwgbmV3U3RhdGUpCisgICAgeworICAgICAg
ICBjb25zdCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbZWxlbWVudElkXTsKKyAgICAgICAgbm9k
ZS5fY3VzdG9tRWxlbWVudFN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ3VzdG9tRWxlbWVudFN0YXRlQ2hh
bmdlZCwge25vZGV9KTsKKyAgICB9CisKKyAgICBfcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudElk
LCBwc2V1ZG9FbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuX2lkVG9E
T01Ob2RlW3BhcmVudElkXTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLCBwYXJlbnQub3du
ZXJEb2N1bWVudCwgZmFsc2UsIHBzZXVkb0VsZW1lbnQpOworICAgICAgICBub2RlLnBhcmVudE5v
ZGUgPSBwYXJlbnQ7CisgICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlW25vZGUuaWRdID0gbm9kZTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoIXBhcmVudC5wc2V1ZG9FbGVtZW50cygpLmdldChub2Rl
LnBzZXVkb1R5cGUoKSkpOworICAgICAgICBwYXJlbnQucHNldWRvRWxlbWVudHMoKS5zZXQobm9k
ZS5wc2V1ZG9UeXBlKCksIG5vZGUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBhcmVudH0pOwor
ICAgIH0KKworICAgIF9wc2V1ZG9FbGVtZW50UmVtb3ZlZChwYXJlbnRJZCwgcHNldWRvRWxlbWVu
dElkKQorICAgIHsKKyAgICAgICAgdmFyIHBzZXVkb0VsZW1lbnQgPSB0aGlzLl9pZFRvRE9NTm9k
ZVtwc2V1ZG9FbGVtZW50SWRdOworICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHBhcmVudCA9IHBzZXVkb0VsZW1lbnQucGFyZW50
Tm9kZTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50KTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQocGFyZW50LmlkID09PSBwYXJlbnRJZCk7CisgICAgICAgIGlmICghcGFyZW50KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBhcmVudC5fcmVtb3ZlQ2hpbGQocHNldWRvRWxl
bWVudCk7CisgICAgICAgIHRoaXMuX3VuYmluZChwc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5Ob2RlUmVtb3Zl
ZCwge25vZGU6IHBzZXVkb0VsZW1lbnQsIHBhcmVudH0pOworICAgIH0KKworICAgIF91bmJpbmQo
bm9kZSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlLmlkXTsK
KworICAgICAgICBmb3IgKGxldCBpID0gMDsgbm9kZS5jaGlsZHJlbiAmJiBpIDwgbm9kZS5jaGls
ZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3VuYmluZChub2RlLmNoaWxkcmVu
W2ldKTsKKworICAgICAgICBsZXQgdGVtcGxhdGVDb250ZW50ID0gbm9kZS50ZW1wbGF0ZUNvbnRl
bnQoKTsKKyAgICAgICAgaWYgKHRlbXBsYXRlQ29udGVudCkKKyAgICAgICAgICAgIHRoaXMuX3Vu
YmluZCh0ZW1wbGF0ZUNvbnRlbnQpOworCisgICAgICAgIGZvciAobGV0IHBzZXVkb0VsZW1lbnQg
b2Ygbm9kZS5wc2V1ZG9FbGVtZW50cygpLnZhbHVlcygpKQorICAgICAgICAgICAgdGhpcy5fdW5i
aW5kKHBzZXVkb0VsZW1lbnQpOworCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgc2hhZG93IHJv
b3RzLgorICAgIH0KKworICAgIGdldCByZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkOwor
ICAgIH0KKworICAgIGluc3BlY3RFbGVtZW50KG5vZGVJZCkKKyAgICB7CisgICAgICAgIHZhciBu
b2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgaWYgKCFub2RlIHx8ICFu
b2RlLm93bmVyRG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5ET01Ob2RlV2FzSW5z
cGVjdGVkLCB7bm9kZX0pOworCisgICAgICAgIHRoaXMuX2luc3BlY3RNb2RlRW5hYmxlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2Vy
LkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsKKyAgICB9CisKKyAgICBpbnNwZWN0Tm9k
ZU9iamVjdChyZW1vdGVPYmplY3QpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0
ZWROb2RlSXNBbGxvd2VkID0gZmFsc2U7CisKKyAgICAgICAgZnVuY3Rpb24gbm9kZUF2YWlsYWJs
ZShub2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7
CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVJZCk7CisgICAgICAgICAgICBpZiAo
IW5vZGVJZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuaW5z
cGVjdEVsZW1lbnQobm9kZUlkKTsKKworICAgICAgICAgICAgLy8gUmUtcmVzb2x2ZSB0aGUgbm9k
ZSBpbiB0aGUgY29uc29sZSdzIG9iamVjdCBncm91cCB3aGVuIGFkZGluZyB0byB0aGUgY29uc29s
ZS4KKyAgICAgICAgICAgIGxldCBkb21Ob2RlID0gdGhpcy5ub2RlRm9ySWQobm9kZUlkKTsKKyAg
ICAgICAgICAgIFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZShkb21Ob2RlLCBXSS5SdW50aW1l
TWFuYWdlci5Db25zb2xlT2JqZWN0R3JvdXApLnRoZW4oKHJlbW90ZU9iamVjdCkgPT4geworICAg
ICAgICAgICAgICAgIGNvbnN0IHNwZWNpYWxMb2dTdHlsZXMgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGNvbnN0IHNob3VsZFJldmVhbENvbnNvbGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBX
SS5jb25zb2xlTG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJl
c3VsdChXSS5VSVN0cmluZygiU2VsZWN0ZWQgRWxlbWVudCIpLCByZW1vdGVPYmplY3QsIHNwZWNp
YWxMb2dTdHlsZXMsIHNob3VsZFJldmVhbENvbnNvbGUpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5kKG5vZGVBdmFp
bGFibGUuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgcGVyZm9ybVNlYXJjaChxdWVyeSwgc2Vh
cmNoQ2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpOworCisgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHNlYXJjaElkOworICAgICAgICAg
ICAgc2VhcmNoQ2FsbGJhY2socmVzdWx0c0NvdW50KTsKKyAgICAgICAgfQorICAgICAgICBET01B
Z2VudC5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9CisK
KyAgICBzZWFyY2hSZXN1bHQoaW5kZXgsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rp
b24gbXljYWxsYmFjayhlcnJvciwgbm9kZUlkcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoICE9PSAxKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5faWRUb0RPTU5vZGVb
bm9kZUlkc1swXV0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaElkKQor
ICAgICAgICAgICAgRE9NQWdlbnQuZ2V0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFyY2hJZCwgaW5k
ZXgsIGluZGV4ICsgMSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgfQorCisgICAgY2FuY2VsU2VhcmNoKCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hJZCkgeworICAgICAgICAgICAgRE9NQWdlbnQu
ZGlzY2FyZFNlYXJjaFJlc3VsdHModGhpcy5fc2VhcmNoSWQpOworICAgICAgICAgICAgdGhpcy5f
c2VhcmNoSWQgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBxdWVyeVNlbGVj
dG9yKG5vZGVPck5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbGV0
IG5vZGVJZCA9IG5vZGVPck5vZGVJZCBpbnN0YW5jZW9mIFdJLkRPTU5vZGUgPyBub2RlT3JOb2Rl
SWQuaWQgOiBub2RlT3JOb2RlSWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBub2Rl
SWQgPT09ICJudW1iZXIiKTsKKworICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVu
Y3Rpb24iKQorICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rvcihub2RlSWQsIHNlbGVj
dG9yLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3Iobm9kZUlkLCBzZWxlY3Rv
cikudGhlbigoe25vZGVJZH0pID0+IG5vZGVJZCk7CisgICAgfQorCisgICAgcXVlcnlTZWxlY3Rv
ckFsbChub2RlT3JOb2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGxl
dCBub2RlSWQgPSBub2RlT3JOb2RlSWQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlID8gbm9kZU9yTm9k
ZUlkLmlkIDogbm9kZU9yTm9kZUlkOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygbm9k
ZUlkID09PSAibnVtYmVyIik7CisKKyAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1
bmN0aW9uIikKKyAgICAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBz
ZWxlY3RvciwgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiBET01BZ2VudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwg
c2VsZWN0b3IpLnRoZW4oKHtub2RlSWRzfSkgPT4gbm9kZUlkcyk7CisgICAgfQorCisgICAgaGln
aGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5faGlk
ZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KTsKKyAgICAgICAgICAgIHRoaXMuX2hpZGVE
T01Ob2RlSGlnaGxpZ2h0VGltZW91dCA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAg
IHRoaXMuX2hpZ2hsaWdodGVkRE9NTm9kZUlkID0gbm9kZUlkOworICAgICAgICBpZiAobm9kZUlk
KQorICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZS5pbnZva2Uoe25vZGVJZCwgaGln
aGxpZ2h0Q29uZmlnOiB0aGlzLl9idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlKX0pOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7CisgICAgfQorCisg
ICAgaGlnaGxpZ2h0RE9NTm9kZUxpc3Qobm9kZUlkcywgbW9kZSkKKyAgICB7CisgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMSk6IERPTS5oaWdobGlnaHROb2RlTGlzdCBkaWQgbm90IGV4
aXN0LgorICAgICAgICBpZiAoIURPTUFnZW50LmhpZ2hsaWdodE5vZGVMaXN0KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVv
dXQpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdo
dFRpbWVvdXQpOworICAgICAgICAgICAgdGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0
ID0gdW5kZWZpbmVkOworICAgICAgICB9CisKKyAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9k
ZUxpc3Qobm9kZUlkcywgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25maWcobW9kZSkpOworICAgIH0K
KworICAgIGhpZ2hsaWdodFNlbGVjdG9yKHNlbGVjdG9yVGV4dCwgZnJhbWVJZCwgbW9kZSkKKyAg
ICB7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogRE9NLmhpZ2hsaWdodFNlbGVj
dG9yIGRpZCBub3QgZXhpc3QuCisgICAgICAgIGlmICghRE9NQWdlbnQuaGlnaGxpZ2h0U2VsZWN0
b3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX2hpZGVET01Ob2Rl
SGlnaGxpZ2h0VGltZW91dCkgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVE
T01Ob2RlSGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICB0aGlzLl9oaWRlRE9NTm9kZUhp
Z2hsaWdodFRpbWVvdXQgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAgICAgICBET01BZ2Vu
dC5oaWdobGlnaHRTZWxlY3Rvcih0aGlzLl9idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlKSwgc2Vs
ZWN0b3JUZXh0LCBmcmFtZUlkKTsKKyAgICB9CisKKyAgICBoaWdobGlnaHRSZWN0KHJlY3QsIHVz
ZVBhZ2VDb29yZGluYXRlcykKKyAgICB7CisgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFJlY3Qu
aW52b2tlKHsKKyAgICAgICAgICAgIHg6IHJlY3QueCwKKyAgICAgICAgICAgIHk6IHJlY3QueSwK
KyAgICAgICAgICAgIHdpZHRoOiByZWN0LndpZHRoLAorICAgICAgICAgICAgaGVpZ2h0OiByZWN0
LmhlaWdodCwKKyAgICAgICAgICAgIGNvbG9yOiB7cjogMTExLCBnOiAxNjgsIGI6IDIyMCwgYTog
MC42Nn0sCisgICAgICAgICAgICBvdXRsaW5lQ29sb3I6IHtyOiAyNTUsIGc6IDIyOSwgYjogMTUz
LCBhOiAwLjY2fSwKKyAgICAgICAgICAgIHVzZVBhZ2VDb29yZGluYXRlcworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpCisgICAgeworICAgICAgICB0aGlz
LmhpZ2hsaWdodERPTU5vZGUoMCk7CisgICAgfQorCisgICAgaGlnaGxpZ2h0RE9NTm9kZUZvclR3
b1NlY29uZHMobm9kZUlkKQorICAgIHsKKyAgICAgICAgdGhpcy5oaWdobGlnaHRET01Ob2RlKG5v
ZGVJZCk7CisgICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCA9IHNldFRp
bWVvdXQodGhpcy5oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKHRoaXMpLCAyMDAwKTsKKyAgICB9
CisKKyAgICBnZXQgaW5zcGVjdE1vZGVFbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9pbnNwZWN0TW9kZUVuYWJsZWQ7CisgICAgfQorCisgICAgc2V0IGluc3BlY3RNb2RlRW5h
YmxlZChlbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYgKGVuYWJsZWQgPT09IHRoaXMuX2luc3Bl
Y3RNb2RlRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBET01BZ2VudC5z
ZXRJbnNwZWN0TW9kZUVuYWJsZWQoZW5hYmxlZCwgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25maWco
KSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9pbnNwZWN0TW9kZUVuYWJsZWQgPSBl
cnJvciA/IGZhbHNlIDogZW5hYmxlZDsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzZXRJbnNwZWN0ZWROb2RlKG5vZGUpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSk7CisgICAg
ICAgIGlmIChub2RlID09PSB0aGlzLl9pbnNwZWN0ZWROb2RlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGxldCBjYWxsYmFjayA9IChlcnJvcikgPT4geworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIWVycm9yLCBlcnJvcik7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9pbnNwZWN0ZWROb2RlID0g
bm9kZTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEpOiBE
T00uc2V0SW5zcGVjdGVkTm9kZSBkaWQgbm90IGV4aXN0LgorICAgICAgICBpZiAoIURPTUFnZW50
LnNldEluc3BlY3RlZE5vZGUpIHsKKyAgICAgICAgICAgIENvbnNvbGVBZ2VudC5hZGRJbnNwZWN0
ZWROb2RlKG5vZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIERPTUFnZW50LnNldEluc3BlY3RlZE5vZGUobm9kZS5pZCwgY2FsbGJhY2sp
OworICAgIH0KKworICAgIGdldFN1cHBvcnRlZEV2ZW50TmFtZXMoY2FsbGJhY2spCisgICAgewor
ICAgICAgICBpZiAoIURPTUFnZW50LmdldFN1cHBvcnRlZEV2ZW50TmFtZXMpCisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBTZXQpOworCisgICAgICAgIGlmICghdGhpcy5f
Z2V0U3VwcG9ydGVkRXZlbnROYW1lc1Byb21pc2UpIHsKKyAgICAgICAgICAgIHRoaXMuX2dldFN1
cHBvcnRlZEV2ZW50TmFtZXNQcm9taXNlID0gRE9NQWdlbnQuZ2V0U3VwcG9ydGVkRXZlbnROYW1l
cygpCisgICAgICAgICAgICAudGhlbigoe2V2ZW50TmFtZXN9KSA9PiBuZXcgU2V0KGV2ZW50TmFt
ZXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLl9nZXRTdXBwb3J0ZWRFdmVu
dE5hbWVzUHJvbWlzZTsKKyAgICB9CisKKyAgICBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoZXZl
bnRMaXN0ZW5lciwgZGlzYWJsZWQpCisgICAgeworICAgICAgICBET01BZ2VudC5zZXRFdmVudExp
c3RlbmVyRGlzYWJsZWQoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsIGRpc2FibGVkLCAo
ZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lcikKKyAgICB7CisgICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5M
aXN0ZW5lciwgZXZlbnRMaXN0ZW5lci50eXBlLCB7ZXZlbnRMaXN0ZW5lcn0pOworICAgICAgICB0
aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJzLnNldChldmVudExpc3RlbmVyLmV2ZW50
TGlzdGVuZXJJZCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgRE9NQWdlbnQuc2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsIChlcnJvcikg
PT4geworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5l
cnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwge2JyZWFr
cG9pbnR9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcmVtb3ZlQnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lcikKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50
ID0gdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5nZXQoZXZlbnRMaXN0ZW5lci5l
dmVudExpc3RlbmVySWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50KTsKKwor
ICAgICAgICB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudExp
c3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7CisKKyAgICAgICAgRE9NQWdlbnQucmVtb3ZlQnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsIChlcnJv
cikgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5FdmVudC5FdmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcklkKGV2ZW50TGlzdGVu
ZXJJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlz
dGVuZXJzLmdldChldmVudExpc3RlbmVySWQpIHx8IG51bGw7CisgICAgfQorCisgICAgX2J1aWxk
SGlnaGxpZ2h0Q29uZmlnKG1vZGUgPSAiYWxsIikKKyAgICB7CisgICAgICAgIGxldCBoaWdobGln
aHRDb25maWcgPSB7c2hvd0luZm86IG1vZGUgPT09ICJhbGwifTsKKworICAgICAgICBpZiAobW9k
ZSA9PT0gImFsbCIgfHwgbW9kZSA9PT0gImNvbnRlbnQiKQorICAgICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLmNvbnRlbnRDb2xvciA9IHtyOiAxMTEsIGc6IDE2OCwgYjogMjIwLCBhOiAwLjY2fTsK
KworICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9PT0gInBhZGRpbmciKQorICAg
ICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLnBhZGRpbmdDb2xvciA9IHtyOiAxNDcsIGc6IDE5Niwg
YjogMTI1LCBhOiAwLjY2fTsKKworICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9
PT0gImJvcmRlciIpCisgICAgICAgICAgICBoaWdobGlnaHRDb25maWcuYm9yZGVyQ29sb3IgPSB7
cjogMjU1LCBnOiAyMjksIGI6IDE1MywgYTogMC42Nn07CisKKyAgICAgICAgaWYgKG1vZGUgPT09
ICJhbGwiIHx8IG1vZGUgPT09ICJtYXJnaW4iKQorICAgICAgICAgICAgaGlnaGxpZ2h0Q29uZmln
Lm1hcmdpbkNvbG9yID0ge3I6IDI0NiwgZzogMTc4LCBiOiAxMDcsIGE6IDAuNjZ9OworCisgICAg
ICAgIHJldHVybiBoaWdobGlnaHRDb25maWc7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVu
dC50YXJnZXQuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rl
ZE5vZGVJc0FsbG93ZWQgPSB0cnVlOworICAgIH0KK307CisKK1dJLkRPTU1hbmFnZXIuRXZlbnQg
PSB7CisgICAgQXR0cmlidXRlTW9kaWZpZWQ6ICJkb20tbWFuYWdlci1hdHRyaWJ1dGUtbW9kaWZp
ZWQiLAorICAgIEF0dHJpYnV0ZVJlbW92ZWQ6ICJkb20tbWFuYWdlci1hdHRyaWJ1dGUtcmVtb3Zl
ZCIsCisgICAgQ2hhcmFjdGVyRGF0YU1vZGlmaWVkOiAiZG9tLW1hbmFnZXItY2hhcmFjdGVyLWRh
dGEtbW9kaWZpZWQiLAorICAgIE5vZGVJbnNlcnRlZDogImRvbS1tYW5hZ2VyLW5vZGUtaW5zZXJ0
ZWQiLAorICAgIE5vZGVSZW1vdmVkOiAiZG9tLW1hbmFnZXItbm9kZS1yZW1vdmVkIiwKKyAgICBD
dXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkOiAiZG9tLW1hbmFnZXItY3VzdG9tLWVsZW1lbnQtc3Rh
dGUtY2hhbmdlZCIsCisgICAgRG9jdW1lbnRVcGRhdGVkOiAiZG9tLW1hbmFnZXItZG9jdW1lbnQt
dXBkYXRlZCIsCisgICAgQ2hpbGROb2RlQ291bnRVcGRhdGVkOiAiZG9tLW1hbmFnZXItY2hpbGQt
bm9kZS1jb3VudC11cGRhdGVkIiwKKyAgICBET01Ob2RlV2FzSW5zcGVjdGVkOiAiZG9tLW1hbmFn
ZXItZG9tLW5vZGUtd2FzLWluc3BlY3RlZCIsCisgICAgSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQ6
ICJkb20tbWFuYWdlci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdlZCIsCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3Rv
cmFnZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9ET01TdG9yYWdlTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmE3Y2ZjZWZkMTc4NjI0
NTgzNTk2NjdhY2Y1YjQyZGJjMmNiZmYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMK
QEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkRPTVN0b3JhZ2VNYW5h
Z2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGlmICh3aW5k
b3cuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAgRE9NU3RvcmFnZUFnZW50LmVuYWJsZSgp
OworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5
T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisK
KyAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBpbml0aWFsaXplKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzID0g
W107CisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307CisgICAgfQorCisg
ICAgZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9k
b21TdG9yYWdlT2JqZWN0czsKKyAgICB9CisKKyAgICBnZXQgY29va2llU3RvcmFnZU9iamVjdHMo
KQorICAgIHsKKyAgICAgICAgdmFyIGNvb2tpZVN0b3JhZ2VPYmplY3RzID0gW107CisgICAgICAg
IGZvciAodmFyIGhvc3QgaW4gdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMpCisgICAgICAgICAg
ICBjb29raWVTdG9yYWdlT2JqZWN0cy5wdXNoKHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2hv
c3RdKTsKKyAgICAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPYmplY3RzOworICAgIH0KKworICAg
IGRvbVN0b3JhZ2VXYXNBZGRlZChpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCisgICAgeworICAg
ICAgICB2YXIgZG9tU3RvcmFnZSA9IG5ldyBXSS5ET01TdG9yYWdlT2JqZWN0KGlkLCBob3N0LCBp
c0xvY2FsU3RvcmFnZSk7CisKKyAgICAgICAgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMucHVzaChk
b21TdG9yYWdlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
U3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7ZG9tU3RvcmFn
ZX0pOworICAgIH0KKworICAgIGl0ZW1zQ2xlYXJlZChzdG9yYWdlSWQpCisgICAgeworICAgICAg
ICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCisKKyAgICAgICAgbGV0IGRv
bVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOworICAg
ICAgICBpZiAoZG9tU3RvcmFnZSkKKyAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbXNDbGVhcmVk
KHN0b3JhZ2VJZCk7CisgICAgfQorCisgICAgaXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpCisg
ICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCisKKyAg
ICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9y
YWdlSWQpOworICAgICAgICBpZiAoZG9tU3RvcmFnZSkKKyAgICAgICAgICAgIGRvbVN0b3JhZ2Uu
aXRlbVJlbW92ZWQoa2V5KTsKKyAgICB9CisKKyAgICBpdGVtQWRkZWQoc3RvcmFnZUlkLCBrZXks
IHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2Vy
dmVyLgorCisgICAgICAgIGxldCBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50
aWZpZXIoc3RvcmFnZUlkKTsKKyAgICAgICAgaWYgKGRvbVN0b3JhZ2UpCisgICAgICAgICAgICBk
b21TdG9yYWdlLml0ZW1BZGRlZChrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpdGVtVXBkYXRl
ZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gQ2Fs
bGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2VydmVyLgorCisgICAgICAgIGxldCBkb21TdG9yYWdl
ID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlkKTsKKyAgICAgICAgaWYg
KGRvbVN0b3JhZ2UpCisgICAgICAgICAgICBkb21TdG9yYWdlLml0ZW1VcGRhdGVkKGtleSwgb2xk
VmFsdWUsIHZhbHVlKTsKKyAgICB9CisKKyAgICBpbnNwZWN0RE9NU3RvcmFnZShpZCkKKyAgICB7
CisgICAgICAgIHZhciBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIo
aWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChkb21TdG9yYWdlKTsKKyAgICAgICAgaWYgKCFk
b21TdG9yYWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0
V2FzSW5zcGVjdGVkLCB7ZG9tU3RvcmFnZX0pOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwor
ICAgIF9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IHN0b3JhZ2VPYmplY3Qgb2YgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBpZCBpcyBhbiBvYmplY3QsIHNvIHdlIG5lZWQgdG8gY29tcGFyZSB0aGUgcHJvcGVy
dGllcyB1c2luZyBPYmplY3Quc2hhbGxvd0VxdWFsLgorICAgICAgICAgICAgaWYgKE9iamVjdC5z
aGFsbG93RXF1YWwoc3RvcmFnZU9iamVjdC5pZCwgaWQpKQorICAgICAgICAgICAgICAgIHJldHVy
biBzdG9yYWdlT2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fQorCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAg
ICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGFyZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxp
c3Qgb2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgor
ICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKKwor
ICAgICAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGV2ZW50LnRhcmdldCk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBBZGQgdGhlIGhvc3Qgb2YgdGhlIGZyYW1lIHRoYXQgY2hh
bmdlZCB0aGUgbWFpbiByZXNvdXJjZSB0byB0aGUgbGlzdCBvZiBob3N0cyB0aGVyZSBjb3VsZCBi
ZSBjb29raWVzIGZvci4KKyAgICAgICAgdmFyIGhvc3QgPSBwYXJzZVVSTChldmVudC50YXJnZXQu
dXJsKS5ob3N0OworICAgICAgICBpZiAoIWhvc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2hvc3RdKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2hvc3RdID0gbmV3
IFdJLkNvb2tpZVN0b3JhZ2VPYmplY3QoaG9zdCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3JhZ2VPYmpl
Y3RXYXNBZGRlZCwge2Nvb2tpZVN0b3JhZ2U6IHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2hv
c3RdfSk7CisgICAgfQorCisgICAgX2FkZERPTVN0b3JhZ2VJZk5lZWRlZChmcmFtZSkKKyAgICB7
CisgICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNl
Y3VyaXR5IG9yaWdpbiAoYWJvdXQ6YmxhbmspLgorICAgICAgICBpZiAoIWZyYW1lLnNlY3VyaXR5
T3JpZ2luIHx8IGZyYW1lLnNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgcGFzc2luZyB0aGUgb3RoZXIgcGFy
dHMgb2YgdGhlIG9yaWdpbiBhbG9uZyB0byBkb21TdG9yYWdlV2FzQWRkZWQuCisKKyAgICAgICAg
dmFyIGxvY2FsU3RvcmFnZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmlnaW46IGZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogdHJ1ZX07CisgICAgICAgIGlmICghdGhpcy5fZG9t
U3RvcmFnZUZvcklkZW50aWZpZXIobG9jYWxTdG9yYWdlSWRlbnRpZmllcikpCisgICAgICAgICAg
ICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChsb2NhbFN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5t
YWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCB0cnVlKTsKKworICAgICAgICB2YXIgc2Vz
c2lvblN0b3JhZ2VJZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9y
aWdpbiwgaXNMb2NhbFN0b3JhZ2U6IGZhbHNlfTsKKyAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9y
YWdlRm9ySWRlbnRpZmllcihzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIpKQorICAgICAgICAgICAg
dGhpcy5kb21TdG9yYWdlV2FzQWRkZWQoc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5t
YWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBmYWxzZSk7CisgICAgfQorCisgICAgX3Nl
Y3VyaXR5T3JpZ2luRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIHRoaXMuX2Fk
ZERPTVN0b3JhZ2VJZk5lZWRlZChldmVudC50YXJnZXQpOworICAgIH0KK307CisKK1dJLkRPTVN0
b3JhZ2VNYW5hZ2VyLkV2ZW50ID0geworICAgIENvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZDog
ImRvbS1zdG9yYWdlLW1hbmFnZXItY29va2llLXN0b3JhZ2Utb2JqZWN0LXdhcy1hZGRlZCIsCisg
ICAgRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkOiAiZG9tLXN0b3JhZ2UtbWFuYWdlci1kb20tc3Rv
cmFnZS1vYmplY3Qtd2FzLWFkZGVkIiwKKyAgICBET01TdG9yYWdlT2JqZWN0V2FzSW5zcGVjdGVk
OiAiZG9tLXN0b3JhZ2UtbWFuYWdlci1kb20tc3RvcmFnZS1vYmplY3Qtd2FzLWluc3BlY3RlZCIs
CisgICAgQ2xlYXJlZDogImRvbS1zdG9yYWdlLW1hbmFnZXItY2xlYXJlZCIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01U
cmVlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
YmZkYTkzYmM3OWU5MDlhZTBiZDM1YzQyZTExMjE5NmQ5MTg0YzAyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVj
b3Jhcm8KLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
V0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBET01UcmVlTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAotewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCk7Ci0KLSAgICAg
ICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKLSAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBudWxs
OwotICAgICAgICB0aGlzLl9hdHRyaWJ1dGVMb2FkTm9kZUlkcyA9IHt9OwotICAgICAgICB0aGlz
Ll9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fbG9h
ZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IDA7Ci0gICAgICAgIHRoaXMuX2luc3BlY3RlZE5vZGUg
PSBudWxsOwotCi0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5lcnMgPSBu
ZXcgTWFwOwotCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IGV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50cygpCi0gICAgewotICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9icmVha3Bv
aW50c0ZvckV2ZW50TGlzdGVuZXJzLnZhbHVlcygpKTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0RG9j
dW1lbnQoY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQpIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2RvY3VtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2Fs
bGJhY2tzKSB7Ci0gICAgICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJh
Y2tzLnB1c2goY2FsbGJhY2spOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107
Ci0KLSAgICAgICAgZnVuY3Rpb24gb25Eb2N1bWVudEF2YWlsYWJsZShlcnJvciwgcm9vdCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgICAgICB0aGlzLl9z
ZXREb2N1bWVudChyb290KTsKLQotICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgdGhp
cy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcykKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayh0aGlzLl9kb2N1bWVudCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVu
dFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgRE9NQWdlbnQu
Z2V0RG9jdW1lbnQob25Eb2N1bWVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAg
ICBlbnN1cmVEb2N1bWVudCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcXVlc3REb2N1bWVudChm
dW5jdGlvbigpe30pOwotICAgIH0KLQotICAgIHB1c2hOb2RlVG9Gcm9udGVuZChvYmplY3RJZCwg
Y2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWls
YWJsZShET01BZ2VudC5yZXF1ZXN0Tm9kZS5iaW5kKERPTUFnZW50LCBvYmplY3RJZCksIGNhbGxi
YWNrKTsKLSAgICB9Ci0KLSAgICBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQocGF0aCwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICB0aGlzLl9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShE
T01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQuYmluZChET01BZ2VudCwgcGF0aCksIGNh
bGxiYWNrKTsKLSAgICB9Ci0KLSAgICBkaWRBZGRFdmVudExpc3RlbmVyKG5vZGVJZCkKLSAgICB7
Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTU9ic2VydmVyLgotCi0gICAgICAgIGxldCBu
b2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKLSAgICAgICAgaWYgKCFub2RlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG5vZGUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5lcnNDaGFuZ2VkKTsKLSAgICB9Ci0KLSAgICB3
aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5ET01PYnNlcnZlci4KLQotICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01O
b2RlW25vZGVJZF07Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkV2
ZW50TGlzdGVuZXJzQ2hhbmdlZCk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3dy
YXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICghY2FsbGJhY2sp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXJy
b3IsIHJlc3VsdCkgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIkVycm9yIGR1cmluZyBET01BZ2VudCBvcGVyYXRpb246ICIgKyBlcnJvcik7
Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiByZXN1bHQpOwotICAgICAgICB9
OwotICAgIH0KLQotICAgIF9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShmdW5jLCBjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja1dyYXBwZXIgPSB0aGlzLl93cmFwQ2xp
ZW50Q2FsbGJhY2soY2FsbGJhY2spOwotCi0gICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFp
bGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQpCi0gICAg
ICAgICAgICAgICAgZnVuYyhjYWxsYmFja1dyYXBwZXIpOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrV3JhcHBlcikKLSAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2tXcmFwcGVyKCJObyBkb2N1bWVudCIpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIHRoaXMucmVxdWVzdERvY3VtZW50KG9uRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0
aGlzKSk7Ci0gICAgfQotCi0gICAgX2F0dHJpYnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFs
dWUpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07
Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBub2Rl
Ll9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25v
ZGUsIG5hbWV9KTsKLSAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
Tm9kZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25hbWV9KTsKLSAgICB9Ci0KLSAgICBfYXR0
cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBub2RlLl9yZW1vdmVBdHRyaWJ1dGUobmFtZSk7Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0
dHJpYnV0ZVJlbW92ZWQsIHtub2RlLCBuYW1lfSk7Ci0gICAgICAgIG5vZGUuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwge25hbWV9KTsK
LSAgICB9Ci0KLSAgICBfaW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKQotICAgIHsKLSAg
ICAgICAgZm9yICh2YXIgbm9kZUlkIG9mIG5vZGVJZHMpCi0gICAgICAgICAgICB0aGlzLl9hdHRy
aWJ1dGVMb2FkTm9kZUlkc1tub2RlSWRdID0gdHJ1ZTsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWRO
b2RlQXR0cmlidXRlc1RpbWVvdXQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMu
X2xvYWROb2RlQXR0cmlidXRlc1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX2xvYWROb2RlQXR0
cmlidXRlcy5iaW5kKHRoaXMpLCAwKTsKLSAgICB9Ci0KLSAgICBfbG9hZE5vZGVBdHRyaWJ1dGVz
KCkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwgZXJyb3IsIGF0dHJp
YnV0ZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGR1cmluZyBET01BZ2VudCBvcGVyYXRpb246ICIgKyBl
cnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwotICAgICAgICAgICAgaWYg
KG5vZGUpIHsKLSAgICAgICAgICAgICAgICBub2RlLl9zZXRBdHRyaWJ1dGVzUGF5bG9hZChhdHRy
aWJ1dGVzKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25vZGUsIG5hbWU6ICJz
dHlsZSJ9KTsKLSAgICAgICAgICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5ET01Ob2RlLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB7bmFtZTogInN0eWxlIn0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVz
VGltZW91dCA9IDA7Ci0KLSAgICAgICAgZm9yICh2YXIgbm9kZUlkIGluIHRoaXMuX2F0dHJpYnV0
ZUxvYWROb2RlSWRzKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZUlkQXNOdW1iZXIgPSBwYXJzZUlu
dChub2RlSWQpOwotICAgICAgICAgICAgRE9NQWdlbnQuZ2V0QXR0cmlidXRlcyhub2RlSWRBc051
bWJlciwgY2FsbGJhY2suYmluZCh0aGlzLCBub2RlSWRBc051bWJlcikpOwotICAgICAgICB9Ci0g
ICAgICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzID0ge307Ci0gICAgfQotCi0gICAgX2No
YXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIG5ld1ZhbHVlKQotICAgIHsKLSAgICAgICAgdmFy
IG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwotICAgICAgICBub2RlLl9ub2RlVmFs
dWUgPSBuZXdWYWx1ZTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB7bm9kZX0pOwotICAg
IH0KLQotICAgIG5vZGVGb3JJZChub2RlSWQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
aWRUb0RPTU5vZGVbbm9kZUlkXTsKLSAgICB9Ci0KLSAgICBfZG9jdW1lbnRVcGRhdGVkKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3NldERvY3VtZW50KG51bGwpOwotICAgIH0KLQotICAgIF9zZXRE
b2N1bWVudChwYXlsb2FkKQotICAgIHsKLSAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsK
LSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5jbGVhcigpOwotCi0g
ICAgICAgIGxldCBuZXdEb2N1bWVudCA9IG51bGw7Ci0gICAgICAgIGlmIChwYXlsb2FkICYmICJu
b2RlSWQiIGluIHBheWxvYWQpCi0gICAgICAgICAgICBuZXdEb2N1bWVudCA9IG5ldyBXSS5ET01O
b2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2FkKTsKLQotICAgICAgICBpZiAodGhpcy5fZG9j
dW1lbnQgPT09IG5ld0RvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRo
aXMuX2RvY3VtZW50ID0gbmV3RG9jdW1lbnQ7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwge2RvY3Vt
ZW50OiB0aGlzLl9kb2N1bWVudH0pOwotICAgIH0KLQotICAgIF9zZXREZXRhY2hlZFJvb3QocGF5
bG9hZCkKLSAgICB7Ci0gICAgICAgIG5ldyBXSS5ET01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBw
YXlsb2FkKTsKLSAgICB9Ci0KLSAgICBfc2V0Q2hpbGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMp
Ci0gICAgewotICAgICAgICBpZiAoIXBhcmVudElkICYmIHBheWxvYWRzLmxlbmd0aCkgewotICAg
ICAgICAgICAgdGhpcy5fc2V0RGV0YWNoZWRSb290KHBheWxvYWRzWzBdKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLl9pZFRvRE9N
Tm9kZVtwYXJlbnRJZF07Ci0gICAgICAgIHBhcmVudC5fc2V0Q2hpbGRyZW5QYXlsb2FkKHBheWxv
YWRzKTsKLSAgICB9Ci0KLSAgICBfY2hpbGROb2RlQ291bnRVcGRhdGVkKG5vZGVJZCwgbmV3VmFs
dWUpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07
Ci0gICAgICAgIG5vZGUuY2hpbGROb2RlQ291bnQgPSBuZXdWYWx1ZTsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hpbGROb2Rl
Q291bnRVcGRhdGVkLCBub2RlKTsKLSAgICB9Ci0KLSAgICBfY2hpbGROb2RlSW5zZXJ0ZWQocGFy
ZW50SWQsIHByZXZJZCwgcGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXJlbnQgPSB0aGlz
Ll9pZFRvRE9NTm9kZVtwYXJlbnRJZF07Ci0gICAgICAgIHZhciBwcmV2ID0gdGhpcy5faWRUb0RP
TU5vZGVbcHJldklkXTsKLSAgICAgICAgdmFyIG5vZGUgPSBwYXJlbnQuX2luc2VydENoaWxkKHBy
ZXYsIHBheWxvYWQpOwotICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtub2RlLmlkXSA9IG5vZGU7
Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBhcmVudH0pOwotICAgIH0KLQotICAgIF9jaGls
ZE5vZGVSZW1vdmVkKHBhcmVudElkLCBub2RlSWQpCi0gICAgewotICAgICAgICB2YXIgcGFyZW50
ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOwotICAgICAgICB2YXIgbm9kZSA9IHRoaXMu
X2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIHBhcmVudC5fcmVtb3ZlQ2hpbGQobm9kZSk7
Ci0gICAgICAgIHRoaXMuX3VuYmluZChub2RlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtub2RlLCBw
YXJlbnR9KTsKLSAgICB9Ci0KLSAgICBfY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChlbGVtZW50
SWQsIG5ld1N0YXRlKQotICAgIHsKLSAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX2lkVG9ET01O
b2RlW2VsZW1lbnRJZF07Ci0gICAgICAgIG5vZGUuX2N1c3RvbUVsZW1lbnRTdGF0ZSA9IG5ld1N0
YXRlOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVlTWFu
YWdlci5FdmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLCB7bm9kZX0pOwotICAgIH0KLQot
ICAgIF9wc2V1ZG9FbGVtZW50QWRkZWQocGFyZW50SWQsIHBzZXVkb0VsZW1lbnQpCi0gICAgewot
ICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOwotICAgICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgbm9kZSA9
IG5ldyBXSS5ET01Ob2RlKHRoaXMsIHBhcmVudC5vd25lckRvY3VtZW50LCBmYWxzZSwgcHNldWRv
RWxlbWVudCk7Ci0gICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IHBhcmVudDsKLSAgICAgICAgdGhp
cy5faWRUb0RPTU5vZGVbbm9kZS5pZF0gPSBub2RlOwotICAgICAgICBjb25zb2xlLmFzc2VydCgh
cGFyZW50LnBzZXVkb0VsZW1lbnRzKCkuZ2V0KG5vZGUucHNldWRvVHlwZSgpKSk7Ci0gICAgICAg
IHBhcmVudC5wc2V1ZG9FbGVtZW50cygpLnNldChub2RlLnBzZXVkb1R5cGUoKSwgbm9kZSk7Ci0g
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2
ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBhcmVudH0pOwotICAgIH0KLQotICAgIF9wc2V1ZG9F
bGVtZW50UmVtb3ZlZChwYXJlbnRJZCwgcHNldWRvRWxlbWVudElkKQotICAgIHsKLSAgICAgICAg
dmFyIHBzZXVkb0VsZW1lbnQgPSB0aGlzLl9pZFRvRE9NTm9kZVtwc2V1ZG9FbGVtZW50SWRdOwot
ICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHBhcmVudCA9IHBzZXVkb0VsZW1lbnQucGFyZW50Tm9kZTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQocGFyZW50KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50LmlkID09PSBw
YXJlbnRJZCk7Ci0gICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHBhcmVudC5fcmVtb3ZlQ2hpbGQocHNldWRvRWxlbWVudCk7Ci0gICAgICAgIHRoaXMu
X3VuYmluZChwc2V1ZG9FbGVtZW50KTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtub2RlOiBwc2V1ZG9F
bGVtZW50LCBwYXJlbnR9KTsKLSAgICB9Ci0KLSAgICBfdW5iaW5kKG5vZGUpCi0gICAgewotICAg
ICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVbbm9kZS5pZF07Ci0KLSAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IG5vZGUuY2hpbGRyZW4gJiYgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICB0aGlzLl91bmJpbmQobm9kZS5jaGlsZHJlbltpXSk7Ci0KLSAgICAgICAg
bGV0IHRlbXBsYXRlQ29udGVudCA9IG5vZGUudGVtcGxhdGVDb250ZW50KCk7Ci0gICAgICAgIGlm
ICh0ZW1wbGF0ZUNvbnRlbnQpCi0gICAgICAgICAgICB0aGlzLl91bmJpbmQodGVtcGxhdGVDb250
ZW50KTsKLQotICAgICAgICBmb3IgKGxldCBwc2V1ZG9FbGVtZW50IG9mIG5vZGUucHNldWRvRWxl
bWVudHMoKS52YWx1ZXMoKSkKLSAgICAgICAgICAgIHRoaXMuX3VuYmluZChwc2V1ZG9FbGVtZW50
KTsKLQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHNoYWRvdyByb290cy4KLSAgICB9Ci0KLSAg
ICBnZXQgcmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZDsKLSAgICB9Ci0KLSAgICBpbnNw
ZWN0RWxlbWVudChub2RlSWQpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9E
T01Ob2RlW25vZGVJZF07Ci0gICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS5vd25lckRvY3VtZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIHtub2Rl
fSk7Ci0KLSAgICAgICAgdGhpcy5faW5zcGVjdE1vZGVFbmFibGVkID0gZmFsc2U7Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lklu
c3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsKLSAgICB9Ci0KLSAgICBpbnNwZWN0Tm9kZU9iamVjdChy
ZW1vdGVPYmplY3QpCi0gICAgewotICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNB
bGxvd2VkID0gZmFsc2U7Ci0KLSAgICAgICAgZnVuY3Rpb24gbm9kZUF2YWlsYWJsZShub2RlSWQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7Ci0KLSAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoIW5vZGVJZCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuaW5zcGVjdEVsZW1l
bnQobm9kZUlkKTsKLQotICAgICAgICAgICAgLy8gUmUtcmVzb2x2ZSB0aGUgbm9kZSBpbiB0aGUg
Y29uc29sZSdzIG9iamVjdCBncm91cCB3aGVuIGFkZGluZyB0byB0aGUgY29uc29sZS4KLSAgICAg
ICAgICAgIGxldCBkb21Ob2RlID0gdGhpcy5ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgICAg
IFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZShkb21Ob2RlLCBXSS5SdW50aW1lTWFuYWdlci5D
b25zb2xlT2JqZWN0R3JvdXApLnRoZW4oKHJlbW90ZU9iamVjdCkgPT4gewotICAgICAgICAgICAg
ICAgIGNvbnN0IHNwZWNpYWxMb2dTdHlsZXMgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0
IHNob3VsZFJldmVhbENvbnNvbGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBXSS5jb25zb2xl
TG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJlc3VsdChXSS5V
SVN0cmluZygiU2VsZWN0ZWQgRWxlbWVudCIpLCByZW1vdGVPYmplY3QsIHNwZWNpYWxMb2dTdHls
ZXMsIHNob3VsZFJldmVhbENvbnNvbGUpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5kKG5vZGVBdmFpbGFibGUuYmlu
ZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgcGVyZm9ybVNlYXJjaChxdWVyeSwgc2VhcmNoQ2FsbGJh
Y2spCi0gICAgewotICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpOwotCi0gICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrKGVycm9yLCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHNlYXJjaElkOwotICAgICAgICAgICAgc2VhcmNo
Q2FsbGJhY2socmVzdWx0c0NvdW50KTsKLSAgICAgICAgfQotICAgICAgICBET01BZ2VudC5wZXJm
b3JtU2VhcmNoKHF1ZXJ5LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBzZWFy
Y2hSZXN1bHQoaW5kZXgsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gbXljYWxs
YmFjayhlcnJvciwgbm9kZUlkcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAg
Y2FsbGJhY2sobnVsbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoICE9PSAxKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkc1sw
XV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX3NlYXJjaElkKQotICAgICAgICAg
ICAgRE9NQWdlbnQuZ2V0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFyY2hJZCwgaW5kZXgsIGluZGV4
ICsgMSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y2FsbGJhY2sobnVsbCk7Ci0gICAgfQotCi0gICAgY2FuY2VsU2VhcmNoKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9zZWFyY2hJZCkgewotICAgICAgICAgICAgRE9NQWdlbnQuZGlzY2FyZFNl
YXJjaFJlc3VsdHModGhpcy5fc2VhcmNoSWQpOwotICAgICAgICAgICAgdGhpcy5fc2VhcmNoSWQg
PSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBxdWVyeVNlbGVjdG9yKG5vZGVP
ck5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbGV0IG5vZGVJZCA9
IG5vZGVPck5vZGVJZCBpbnN0YW5jZW9mIFdJLkRPTU5vZGUgPyBub2RlT3JOb2RlSWQuaWQgOiBu
b2RlT3JOb2RlSWQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBub2RlSWQgPT09ICJu
dW1iZXIiKTsKLQotICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQot
ICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rvcihub2RlSWQsIHNlbGVjdG9yLCB0aGlz
Ll93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3Iobm9kZUlkLCBzZWxlY3RvcikudGhlbigo
e25vZGVJZH0pID0+IG5vZGVJZCk7Ci0gICAgfQotCi0gICAgcXVlcnlTZWxlY3RvckFsbChub2Rl
T3JOb2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGxldCBub2RlSWQg
PSBub2RlT3JOb2RlSWQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlID8gbm9kZU9yTm9kZUlkLmlkIDog
bm9kZU9yTm9kZUlkOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygbm9kZUlkID09PSAi
bnVtYmVyIik7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikK
LSAgICAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBzZWxlY3Rvciwg
dGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBET01BZ2VudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0b3Ip
LnRoZW4oKHtub2RlSWRzfSkgPT4gbm9kZUlkcyk7Ci0gICAgfQotCi0gICAgaGlnaGxpZ2h0RE9N
Tm9kZShub2RlSWQsIG1vZGUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5faGlkZURPTU5vZGVI
aWdobGlnaHRUaW1lb3V0KSB7Ci0gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZURP
TU5vZGVIaWdobGlnaHRUaW1lb3V0KTsKLSAgICAgICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGln
aGxpZ2h0VGltZW91dCA9IHVuZGVmaW5lZDsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2hp
Z2hsaWdodGVkRE9NTm9kZUlkID0gbm9kZUlkOwotICAgICAgICBpZiAobm9kZUlkKQotICAgICAg
ICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZS5pbnZva2Uoe25vZGVJZCwgaGlnaGxpZ2h0Q29u
ZmlnOiB0aGlzLl9idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlKX0pOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7Ci0gICAgfQotCi0gICAgaGlnaGxp
Z2h0RE9NTm9kZUxpc3Qobm9kZUlkcywgbW9kZSkKLSAgICB7Ci0gICAgICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyAxMSk6IERPTS5oaWdobGlnaHROb2RlTGlzdCBkaWQgbm90IGV4aXN0LgotICAg
ICAgICBpZiAoIURPTUFnZW50LmhpZ2hsaWdodE5vZGVMaXN0KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGlmICh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQpIHsKLSAg
ICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQp
OwotICAgICAgICAgICAgdGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0ID0gdW5kZWZp
bmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZUxpc3Qobm9k
ZUlkcywgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25maWcobW9kZSkpOwotICAgIH0KLQotICAgIGhp
Z2hsaWdodFNlbGVjdG9yKHNlbGVjdG9yVGV4dCwgZnJhbWVJZCwgbW9kZSkKLSAgICB7Ci0gICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogRE9NLmhpZ2hsaWdodFNlbGVjdG9yIGRpZCBu
b3QgZXhpc3QuCi0gICAgICAgIGlmICghRE9NQWdlbnQuaGlnaGxpZ2h0U2VsZWN0b3IpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0
VGltZW91dCkgewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVET01Ob2RlSGln
aGxpZ2h0VGltZW91dCk7Ci0gICAgICAgICAgICB0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRp
bWVvdXQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBET01BZ2VudC5oaWdobGln
aHRTZWxlY3Rvcih0aGlzLl9idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlKSwgc2VsZWN0b3JUZXh0
LCBmcmFtZUlkKTsKLSAgICB9Ci0KLSAgICBoaWdobGlnaHRSZWN0KHJlY3QsIHVzZVBhZ2VDb29y
ZGluYXRlcykKLSAgICB7Ci0gICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFJlY3QuaW52b2tlKHsK
LSAgICAgICAgICAgIHg6IHJlY3QueCwKLSAgICAgICAgICAgIHk6IHJlY3QueSwKLSAgICAgICAg
ICAgIHdpZHRoOiByZWN0LndpZHRoLAotICAgICAgICAgICAgaGVpZ2h0OiByZWN0LmhlaWdodCwK
LSAgICAgICAgICAgIGNvbG9yOiB7cjogMTExLCBnOiAxNjgsIGI6IDIyMCwgYTogMC42Nn0sCi0g
ICAgICAgICAgICBvdXRsaW5lQ29sb3I6IHtyOiAyNTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2
fSwKLSAgICAgICAgICAgIHVzZVBhZ2VDb29yZGluYXRlcwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpCi0gICAgewotICAgICAgICB0aGlzLmhpZ2hsaWdo
dERPTU5vZGUoMCk7Ci0gICAgfQotCi0gICAgaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMo
bm9kZUlkKQotICAgIHsKLSAgICAgICAgdGhpcy5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCk7Ci0g
ICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCA9IHNldFRpbWVvdXQodGhp
cy5oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKHRoaXMpLCAyMDAwKTsKLSAgICB9Ci0KLSAgICBn
ZXQgaW5zcGVjdE1vZGVFbmFibGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pbnNw
ZWN0TW9kZUVuYWJsZWQ7Ci0gICAgfQotCi0gICAgc2V0IGluc3BlY3RNb2RlRW5hYmxlZChlbmFi
bGVkKQotICAgIHsKLSAgICAgICAgaWYgKGVuYWJsZWQgPT09IHRoaXMuX2luc3BlY3RNb2RlRW5h
YmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBET01BZ2VudC5zZXRJbnNwZWN0
TW9kZUVuYWJsZWQoZW5hYmxlZCwgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25maWcoKSwgKGVycm9y
KSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9pbnNwZWN0TW9kZUVuYWJsZWQgPSBlcnJvciA/IGZh
bHNlIDogZW5hYmxlZDsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotCi0gICAgc2V0SW5zcGVjdGVkTm9kZShub2RlKQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUpOwotICAgICAgICBp
ZiAobm9kZSA9PT0gdGhpcy5faW5zcGVjdGVkTm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBsZXQgY2FsbGJhY2sgPSAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFlcnJvciwgZXJyb3IpOwotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5faW5zcGVjdGVkTm9kZSA9IG5vZGU7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDExKTogRE9NLnNl
dEluc3BlY3RlZE5vZGUgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgKCFET01BZ2VudC5zZXRJ
bnNwZWN0ZWROb2RlKSB7Ci0gICAgICAgICAgICBDb25zb2xlQWdlbnQuYWRkSW5zcGVjdGVkTm9k
ZShub2RlLmlkLCBjYWxsYmFjayk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBET01BZ2VudC5zZXRJbnNwZWN0ZWROb2RlKG5vZGUuaWQsIGNhbGxiYWNrKTsKLSAg
ICB9Ci0KLSAgICBnZXRTdXBwb3J0ZWRFdmVudE5hbWVzKGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgaWYgKCFET01BZ2VudC5nZXRTdXBwb3J0ZWRFdmVudE5hbWVzKQotICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZShuZXcgU2V0KTsKLQotICAgICAgICBpZiAoIXRoaXMuX2dldFN1
cHBvcnRlZEV2ZW50TmFtZXNQcm9taXNlKSB7Ci0gICAgICAgICAgICB0aGlzLl9nZXRTdXBwb3J0
ZWRFdmVudE5hbWVzUHJvbWlzZSA9IERPTUFnZW50LmdldFN1cHBvcnRlZEV2ZW50TmFtZXMoKQot
ICAgICAgICAgICAgLnRoZW4oKHtldmVudE5hbWVzfSkgPT4gbmV3IFNldChldmVudE5hbWVzKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U3VwcG9ydGVkRXZlbnROYW1l
c1Byb21pc2U7Ci0gICAgfQotCi0gICAgc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKGV2ZW50TGlz
dGVuZXIsIGRpc2FibGVkKQotICAgIHsKLSAgICAgICAgRE9NQWdlbnQuc2V0RXZlbnRMaXN0ZW5l
ckRpc2FibGVkKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCBkaXNhYmxlZCwgKGVycm9y
KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29sZS5l
cnJvcihlcnJvcik7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHNldEJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIpCi0gICAgewotICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVu
ZXIsIGV2ZW50TGlzdGVuZXIudHlwZSwge2V2ZW50TGlzdGVuZXJ9KTsKLSAgICAgICAgdGhpcy5f
YnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5zZXQoZXZlbnRMaXN0ZW5lci5ldmVudExpc3Rl
bmVySWQsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIERPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCAoZXJyb3IpID0+IHsK
LSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
ZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5E
T01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50
fSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVyKGV2ZW50TGlzdGVuZXIpCi0gICAgewotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IHRo
aXMuX2JyZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TGlzdGVuZXIuZXZlbnRM
aXN0ZW5lcklkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCk7Ci0KLSAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5kZWxldGUoZXZlbnRMaXN0ZW5l
ci5ldmVudExpc3RlbmVySWQpOwotCi0gICAgICAgIERPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCAoZXJyb3IpID0+
IHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgYnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXJJZChldmVudExpc3RlbmVySWQp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVy
cy5nZXQoZXZlbnRMaXN0ZW5lcklkKSB8fCBudWxsOwotICAgIH0KLQotICAgIF9idWlsZEhpZ2hs
aWdodENvbmZpZyhtb2RlID0gImFsbCIpCi0gICAgewotICAgICAgICBsZXQgaGlnaGxpZ2h0Q29u
ZmlnID0ge3Nob3dJbmZvOiBtb2RlID09PSAiYWxsIn07Ci0KLSAgICAgICAgaWYgKG1vZGUgPT09
ICJhbGwiIHx8IG1vZGUgPT09ICJjb250ZW50IikKLSAgICAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy5jb250ZW50Q29sb3IgPSB7cjogMTExLCBnOiAxNjgsIGI6IDIyMCwgYTogMC42Nn07Ci0KLSAg
ICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJwYWRkaW5nIikKLSAgICAgICAg
ICAgIGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nQ29sb3IgPSB7cjogMTQ3LCBnOiAxOTYsIGI6IDEy
NSwgYTogMC42Nn07Ci0KLSAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJi
b3JkZXIiKQotICAgICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLmJvcmRlckNvbG9yID0ge3I6IDI1
NSwgZzogMjI5LCBiOiAxNTMsIGE6IDAuNjZ9OwotCi0gICAgICAgIGlmIChtb2RlID09PSAiYWxs
IiB8fCBtb2RlID09PSAibWFyZ2luIikKLSAgICAgICAgICAgIGhpZ2hsaWdodENvbmZpZy5tYXJn
aW5Db2xvciA9IHtyOiAyNDYsIGc6IDE3OCwgYjogMTA3LCBhOiAwLjY2fTsKLQotICAgICAgICBy
ZXR1cm4gaGlnaGxpZ2h0Q29uZmlnOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2Rl
SXNBbGxvd2VkID0gdHJ1ZTsKLSAgICB9Ci19OwotCi1XSS5ET01UcmVlTWFuYWdlci5FdmVudCA9
IHsKLSAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRvbS10cmVlLW1hbmFnZXItYXR0cmlidXRlLW1v
ZGlmaWVkIiwKLSAgICBBdHRyaWJ1dGVSZW1vdmVkOiAiZG9tLXRyZWUtbWFuYWdlci1hdHRyaWJ1
dGUtcmVtb3ZlZCIsCi0gICAgQ2hhcmFjdGVyRGF0YU1vZGlmaWVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZCIsCi0gICAgTm9kZUluc2VydGVkOiAiZG9tLXRyZWUt
bWFuYWdlci1ub2RlLWluc2VydGVkIiwKLSAgICBOb2RlUmVtb3ZlZDogImRvbS10cmVlLW1hbmFn
ZXItbm9kZS1yZW1vdmVkIiwKLSAgICBDdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkOiAiZG9tLXRy
ZWUtbWFuYWdlci1jdXN0b20tZWxlbWVudC1zdGF0ZS1jaGFuZ2VkIiwKLSAgICBEb2N1bWVudFVw
ZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvY3VtZW50LXVwZGF0ZWQiLAotICAgIENoaWxkTm9k
ZUNvdW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItY2hpbGQtbm9kZS1jb3VudC11cGRhdGVk
IiwKLSAgICBET01Ob2RlV2FzSW5zcGVjdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1kb20tbm9kZS13
YXMtaW5zcGVjdGVkIiwKLSAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1h
bmFnZXItaW5zcGVjdC1tb2RlLXN0YXRlLWNoYW5nZWQiLAotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
YXNoYm9hcmRNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Q2M2Rh
YzhhZmQyYzdiNjAzZmU4OWY1NzNiMjE3MTAzZGVkNDgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuRGFzaGJvYXJkTWFuYWdlciA9IGNsYXNz
IERhc2hib2FyZE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3Rvcigp
Ci0gICAgewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX2Rhc2hib2FyZHMgPSB7
fTsKLSAgICAgICAgdGhpcy5fZGFzaGJvYXJkcy5kZWZhdWx0ID0gbmV3IFdJLkRlZmF1bHREYXNo
Ym9hcmQ7Ci0gICAgICAgIHRoaXMuX2Rhc2hib2FyZHMuZGVidWdnZXIgPSBuZXcgV0kuRGVidWdn
ZXJEYXNoYm9hcmQ7Ci0gICAgfQotCi0gICAgZ2V0IGRhc2hib2FyZHMoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZHM7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rh
dGFiYXNlTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDg0ZTFhMDYyMzAzNWNkYjJmODhmMmU3NDFk
NGUyNTAwYTFkZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2VyLmpzCkBAIC0wLDAgKzEsMTAw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EYXRhYmFzZU1hbmFnZXIgPSBjbGFzcyBEYXRh
YmFzZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAg
eworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGlmICh3aW5kb3cuRGF0YWJhc2VBZ2VudCkK
KyAgICAgICAgICAgIERhdGFiYXNlQWdlbnQuZW5hYmxlKCk7CisKKyAgICAgICAgV0kuRnJhbWUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5pbml0aWFs
aXplKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBpbml0aWFsaXplKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0cyA9IFtdOworICAgIH0KKworICAgIGdldCBk
YXRhYmFzZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlT2JqZWN0czsK
KyAgICB9CisKKyAgICBkYXRhYmFzZVdhc0FkZGVkKGlkLCBob3N0LCBuYW1lLCB2ZXJzaW9uKQor
ICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRGF0YWJhc2VPYnNlcnZlci4KKworICAg
ICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV0kuRGF0YWJhc2VPYmplY3QoaWQsIGhvc3QsIG5hbWUs
IHZlcnNpb24pOworCisgICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0cy5wdXNoKGRhdGFiYXNl
KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5h
Z2VyLkV2ZW50LkRhdGFiYXNlV2FzQWRkZWQsIHtkYXRhYmFzZX0pOworICAgIH0KKworICAgIGlu
c3BlY3REYXRhYmFzZShpZCkKKyAgICB7CisgICAgICAgIHZhciBkYXRhYmFzZSA9IHRoaXMuX2Rh
dGFiYXNlRm9ySWRlbnRpZmllcihpZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFiYXNl
KTsKKyAgICAgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkRh
dGFiYXNlV2FzSW5zcGVjdGVkLCB7ZGF0YWJhc2V9KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRl
CisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAg
IGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgLy8gSWYgd2Ug
YXJlIGRlYWxpbmcgd2l0aCB0aGUgbWFpbiBmcmFtZSwgd2Ugd2FudCB0byBjbGVhciBvdXIgbGlz
dCBvZiBvYmplY3RzLCBiZWNhdXNlIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCisg
ICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIF9kYXRhYmFzZUZvcklkZW50aWZpZXIoaWQpCisgICAgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlT2JqZWN0cy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFiYXNlT2JqZWN0c1tpXS5pZCA9PT0gaWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlT2JqZWN0c1tpXTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK307CisKK1dJLkRhdGFiYXNlTWFu
YWdlci5FdmVudCA9IHsKKyAgICBEYXRhYmFzZVdhc0FkZGVkOiAiZGF0YWJhc2UtbWFuYWdlci1k
YXRhYmFzZS13YXMtYWRkZWQiLAorICAgIERhdGFiYXNlV2FzSW5zcGVjdGVkOiAiZGF0YWJhc2Ut
bWFuYWdlci1kYXRhYmFzZS13YXMtaW5zcGVjdGVkIiwKKyAgICBDbGVhcmVkOiAiZGF0YWJhc2Ut
bWFuYWdlci1jbGVhcmVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTIyNGM4Yzk4NjVmNzJk
ODkzMjlkYTFmYmU5NzMxNjFhNzBlNGMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzgzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1XSS5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1l
UmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoKQot
ICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJN
YXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBudWxsOwotICAgICAgICB0
aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKLSAgICAgICAgdGhp
cy5fb3JwaGFuZWRSZXNvdXJjZXMgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl93ZWJTb2NrZXRJ
ZGVudGlmaWVyVG9VUkwgPSBuZXcgTWFwOwotCi0gICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWlu
RnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gdHJ1ZTsKLQotICAgICAgICBpZiAod2luZG93LlBh
Z2VBZ2VudCkgewotICAgICAgICAgICAgUGFnZUFnZW50LmVuYWJsZSgpOwotICAgICAgICAgICAg
UGFnZUFnZW50LmdldFJlc291cmNlVHJlZSh0aGlzLl9wcm9jZXNzTWFpbkZyYW1lUmVzb3VyY2VU
cmVlUGF5bG9hZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3aW5kb3cu
U2VydmljZVdvcmtlckFnZW50KQotICAgICAgICAgICAgU2VydmljZVdvcmtlckFnZW50LmdldElu
aXRpYWxpemF0aW9uSW5mbyh0aGlzLl9wcm9jZXNzU2VydmljZVdvcmtlckNvbmZpZ3VyYXRpb24u
YmluZCh0aGlzKSk7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQpCi0gICAgICAg
ICAgICBOZXR3b3JrQWdlbnQuZW5hYmxlKCk7Ci0KLSAgICAgICAgV0kubm90aWZpY2F0aW9ucy5h
ZGRFdmVudExpc3RlbmVyKFdJLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRo
aXMuX2V4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcyk7Ci0gICAgfQotCi0gICAgLy8gUHVibGlj
Ci0KLSAgICBnZXQgbWFpbkZyYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9tYWlu
RnJhbWU7Ci0gICAgfQotCi0gICAgZ2V0IGZyYW1lcygpCi0gICAgewotICAgICAgICByZXR1cm4g
Wy4uLnRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC52YWx1ZXMoKV07Ci0gICAgfQotCi0gICAgZnJh
bWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZnJh
bWVJZGVudGlmaWVyTWFwLmdldChmcmFtZUlkKSB8fCBudWxsOwotICAgIH0KLQotICAgIHJlc291
cmNlRm9yUmVxdWVzdElkZW50aWZpZXIocmVxdWVzdElkZW50aWZpZXIpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElk
ZW50aWZpZXIpIHx8IG51bGw7Ci0gICAgfQotCi0gICAgZnJhbWVEaWROYXZpZ2F0ZShmcmFtZVBh
eWxvYWQpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCi0K
LSAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1l
L3Jlc291cmNlIHRyZWUuCi0gICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVz
b3VyY2VUcmVlUGF5bG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgZnJh
bWVXYXNMb2FkZWRJbnN0YW50bHkgPSBmYWxzZTsKLQotICAgICAgICB2YXIgZnJhbWUgPSB0aGlz
LmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZVBheWxvYWQuaWQpOwotICAgICAgICBpZiAoIWZyYW1l
KSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgZnJhbWUgd2Fzbid0IGtub3duIGJlZm9yZSBub3cs
IHRoZW4gdGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBpbnN0YW50bHkgKGFib3V0OmJsYW5r
LCBldGMuKQotICAgICAgICAgICAgLy8gTWFrZSBhIG5ldyByZXNvdXJjZSAod2hpY2ggd2lsbCBt
YWtlIHRoZSBmcmFtZSkuIE1hcmsgd2lsbCBtYXJrIGl0IGFzIGxvYWRlZCBhdCB0aGUgZW5kIHRv
byBzaW5jZSB3ZQotICAgICAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IGFueSBtb3JlIGV2ZW50cyBh
Ym91dCB0aGUgbG9hZCBmaW5pc2hpbmcgZm9yIHRoZXNlIGZyYW1lcy4KLSAgICAgICAgICAgIHZh
ciBmcmFtZVJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQobnVs
bCwgZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVBheWxvYWQubG9hZGVySWQsIGZyYW1lUGF5bG9hZC51
cmwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIGZyYW1lUGF5bG9hZC5uYW1l
LCBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4pOwotICAgICAgICAgICAgZnJhbWUgPSBmcmFt
ZVJlc291cmNlLnBhcmVudEZyYW1lOwotICAgICAgICAgICAgZnJhbWVXYXNMb2FkZWRJbnN0YW50
bHkgPSB0cnVlOwotCi0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7Ci0gICAgICAg
ICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChmcmFtZVBheWxvYWQubG9hZGVySWQgPT09IGZyYW1lLnByb3Zpc2lvbmFsTG9h
ZGVySWRlbnRpZmllcikgewotICAgICAgICAgICAgLy8gVGhlcmUgd2FzIGEgcHJvdmlzaW9uYWwg
bG9hZCBpbiBwcm9ncmVzcywgY29tbWl0IGl0LgotICAgICAgICAgICAgZnJhbWUuY29tbWl0UHJv
dmlzaW9uYWxMb2FkKGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAoZnJhbWUubWFpblJlc291cmNlLnVybCAhPT0gZnJhbWVQYXls
b2FkLnVybCB8fCBmcmFtZS5sb2FkZXJJZGVudGlmaWVyICE9PSBmcmFtZVBheWxvYWQubG9hZGVy
SWQpIHsKLSAgICAgICAgICAgICAgICAvLyBOYXZpZ2F0aW9ucyBsaWtlIGJhY2svZm9yd2FyZCBk
byBub3QgaGF2ZSBwcm92aXNpb25hbCBsb2Fkcywgc28gY3JlYXRlIGEgbmV3IG1haW4gcmVzb3Vy
Y2UgaGVyZS4KLSAgICAgICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0gbmV3IFdJLlJlc291
cmNlKGZyYW1lUGF5bG9hZC51cmwsIGZyYW1lUGF5bG9hZC5taW1lVHlwZSwgbnVsbCwgZnJhbWVQ
YXlsb2FkLmxvYWRlcklkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
Ly8gVGhlIG1haW4gcmVzb3VyY2UgaXMgYWxyZWFkeSBjb3JyZWN0LCBzbyByZXVzZSBpdC4KLSAg
ICAgICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0gZnJhbWUubWFpblJlc291cmNlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmcmFtZS5pbml0aWFsaXplKGZyYW1lUGF5bG9hZC5u
YW1lLCBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4sIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCwg
bWFpblJlc291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBvbGRNYWluRnJhbWUgPSB0
aGlzLl9tYWluRnJhbWU7Ci0KLSAgICAgICAgaWYgKGZyYW1lUGF5bG9hZC5wYXJlbnRJZCkgewot
ICAgICAgICAgICAgdmFyIHBhcmVudEZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJh
bWVQYXlsb2FkLnBhcmVudElkKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudEZy
YW1lKTsKLQotICAgICAgICAgICAgaWYgKGZyYW1lID09PSB0aGlzLl9tYWluRnJhbWUpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gbnVsbDsKLQotICAgICAgICAgICAgaWYgKGZy
YW1lLnBhcmVudEZyYW1lICE9PSBwYXJlbnRGcmFtZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRG
cmFtZS5hZGRDaGlsZEZyYW1lKGZyYW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKLSAgICAgICAgICAgICAgICBmcmFtZS5wYXJlbnRGcmFt
ZS5yZW1vdmVDaGlsZEZyYW1lKGZyYW1lKTsKLSAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZSA9
IGZyYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX21haW5GcmFtZSAhPT0gb2xk
TWFpbkZyYW1lKQotICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG9sZE1haW5G
cmFtZSk7Ci0KLSAgICAgICAgaWYgKGZyYW1lV2FzTG9hZGVkSW5zdGFudGx5KQotICAgICAgICAg
ICAgZnJhbWUubWFpblJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKCk7Ci0gICAgfQotCi0gICAgZnJh
bWVEaWREZXRhY2goZnJhbWVJZCkKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlBh
Z2VPYnNlcnZlci4KLQotICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0
aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdG
b3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOwotICAg
ICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChmcmFt
ZS5wYXJlbnRGcmFtZSkKLSAgICAgICAgICAgIGZyYW1lLnBhcmVudEZyYW1lLnJlbW92ZUNoaWxk
RnJhbWUoZnJhbWUpOwotCi0gICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUo
ZnJhbWUuaWQpOwotCi0gICAgICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7
Ci0KLSAgICAgICAgaWYgKGZyYW1lID09PSB0aGlzLl9tYWluRnJhbWUpCi0gICAgICAgICAgICB0
aGlzLl9tYWluRnJhbWUgPSBudWxsOwotCi0gICAgICAgIGZyYW1lLmNsZWFyRXhlY3V0aW9uQ29u
dGV4dHMoKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5GcmFt
ZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdhc1JlbW92ZWQsIHtmcmFtZX0pOwotCi0gICAg
ICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKLSAgICAgICAgICAgIHRo
aXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOwotICAgIH0KLQotICAgIHJlc291
cmNlUmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwg
bG9hZGVySWRlbnRpZmllciwgcmVxdWVzdCwgdHlwZSwgcmVkaXJlY3RSZXNwb25zZSwgdGltZXN0
YW1wLCB3YWxsdGltZSwgaW5pdGlhdG9yLCB0YXJnZXRJZCkKLSAgICB7Ci0gICAgICAgIC8vIENh
bGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNlcnZlci4KLQotICAgICAgICAvLyBJZ25vcmUgdGhpcyB3
aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KLSAgICAgICAg
aWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogVGltZWxp
bmUgdGltZXN0YW1wcyBmb3IgbGVnYWN5IGJhY2tlbmRzIGFyZSBjb21wdXRlZAotICAgICAgICAv
LyBkeW5hbWljYWxseSBmcm9tIHRoZSBmaXJzdCBiYWNrZW5kIHRpbWVzdGFtcCByZWNlaXZlZC4g
Rm9yIG5hdmlnYXRpb25zIHdlCi0gICAgICAgIC8vIG5lZWQgdG8gcmVzZXQgdGhhdCBiYXNlIHRp
bWVzdGFtcCwgYW5kIGFuIGFwcHJvcHJpYXRlIHRpbWVzdGFtcCB0byB1c2UgaXMKLSAgICAgICAg
Ly8gdGhlIG5ldyBtYWluIHJlc291cmNlJ3Mgd2lsbCBiZSBzZW50IHRpbWVzdGFtcC4gU28gc2F2
ZSB0aGlzIHZhbHVlIG9uIHRoZQotICAgICAgICAvLyByZXNvdXJjZSBpbiBjYXNlIGl0IGJlY29t
ZXMgYSBtYWluIHJlc291cmNlLgotICAgICAgICB2YXIgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2Vu
dFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLQotICAgICAgICB2YXIgZWxhcHNlZFRpbWUgPSBXSS50
aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7Ci0gICAgICAgIGxl
dCByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVl
c3RJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIGlzIGFuIGV4aXN0aW5nIHJlcXVlc3Qgd2hpY2ggaXMgYmVpbmcgcmVkaXJlY3RlZCwgdXBk
YXRlIHRoZSByZXNvdXJjZS4KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlZGlyZWN0UmVz
cG9uc2UpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhcmdldElkKTsKLSAgICAgICAg
ICAgIHJlc291cmNlLnVwZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2UocmVxdWVzdC51cmwsIHJlcXVl
c3QuaGVhZGVycywgZWxhcHNlZFRpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRp
YXRvclNvdXJjZUNvZGVMb2NhdGlvbkZyb21QYXlsb2FkKGluaXRpYXRvcik7Ci0KLSAgICAgICAg
Ly8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0LCBtYWtlIGEgbmV3IHJlc291cmNlIGFuZCBhZGQgaXQg
dG8gdGhlIHJpZ2h0IGZyYW1lLgotICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291
cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxv
YWRlcklkZW50aWZpZXIsIHJlcXVlc3QudXJsLCB0eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVxdWVz
dC5oZWFkZXJzLCByZXF1ZXN0LnBvc3REYXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIG51bGws
IG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJl
U2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpOwotCi0gICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVz
b3VyY2Ugd2l0aCB0aGUgcmVxdWVzdElkZW50aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1
dHVyZSBsb2FkaW5nIGV2ZW50cy4KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRp
Zmllck1hcC5zZXQocmVxdWVzdElkZW50aWZpZXIsIHJlc291cmNlKTsKLSAgICB9Ci0KLSAgICB3
ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwgdXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5fd2Vi
U29ja2V0SWRlbnRpZmllclRvVVJMLnNldChyZXF1ZXN0SWQsIHVybCk7Ci0gICAgfQotCi0gICAg
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KHJlcXVlc3RJZCwgdGltZXN0YW1wLCB3
YWxsdGltZSwgcmVxdWVzdCkKLSAgICB7Ci0gICAgICAgIGxldCB1cmwgPSB0aGlzLl93ZWJTb2Nr
ZXRJZGVudGlmaWVyVG9VUkwuZ2V0KHJlcXVlc3RJZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHVybCk7Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IC8vIENPTVBBVElCSUxJVFkoaU9TIDEwLjMpOiBgd2FsbHRpbWVgIGRpZCBub3QgZXhpc3QgaW4g
MTAuMyBhbmQgZWFybGllci4KLSAgICAgICAgaWYgKCFOZXR3b3JrQWdlbnQuaGFzRXZlbnRQYXJh
bWV0ZXIoIndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdCIsICJ3YWxsdGltZSIpKSB7
Ci0gICAgICAgICAgICByZXF1ZXN0ID0gYXJndW1lbnRzWzJdOwotICAgICAgICAgICAgd2FsbHRp
bWUgPSBOYU47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8x
Njg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5IGlmcmFtZSdzIGFuZCB3b3Jr
ZXIncyBXZWJTb2NrZXRzCi0gICAgICAgIGxldCBmcmFtZUlkZW50aWZpZXIgPSBXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQ7Ci0gICAgICAgIGxldCBsb2FkZXJJZGVudGlmaWVy
ID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkOwotICAgICAgICBsZXQgdGFy
Z2V0SWQ7Ci0KLSAgICAgICAgbGV0IGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJh
bWVJZGVudGlmaWVyKTsKLSAgICAgICAgbGV0IHJlcXVlc3REYXRhID0gbnVsbDsKLSAgICAgICAg
bGV0IGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0
aW1lc3RhbXApOwotICAgICAgICBsZXQgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uID0gbnVs
bDsKLQotICAgICAgICBsZXQgcmVzb3VyY2UgPSBuZXcgV0kuV2ViU29ja2V0UmVzb3VyY2UodXJs
LCBsb2FkZXJJZGVudGlmaWVyLCB0YXJnZXRJZCwgcmVxdWVzdElkLCByZXF1ZXN0LmhlYWRlcnMs
IHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9y
U291cmNlQ29kZUxvY2F0aW9uKTsKLQotICAgICAgICBmcmFtZS5hZGRSZXNvdXJjZShyZXNvdXJj
ZSk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5zZXQocmVx
dWVzdElkLCByZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCi0gICAgewotICAgICAg
ICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChy
ZXF1ZXN0SWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7Ci0gICAgICAgIGlm
ICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UucmVh
ZHlTdGF0ZSA9IFdJLldlYlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUuT3BlbjsKLQotICAgICAg
ICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1l
KHRpbWVzdGFtcCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY5MTY2PiBX
ZWIgSW5zcGVjdG9yOiBXZWJTb2NrZXRzOiBJbXBsZW1lbnQgdGltaW5nIGluZm9ybWF0aW9uCi0g
ICAgICAgIGxldCByZXNwb25zZVRpbWluZyA9IHJlc3BvbnNlLnRpbWluZyB8fCBudWxsOwotCi0g
ICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJlc291cmNlLnVybCwgcmVzb3VyY2Uu
bWltZVR5cGUsIHJlc291cmNlLnR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNlLnN0YXR1
cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJlc3BvbnNlVGltaW5nKTsKLQot
ICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSk7Ci0gICAgfQotCi0g
ICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2Up
Ci0gICAgewotICAgICAgICB0aGlzLl93ZWJTb2NrZXRGcmFtZVJlY2VpdmVkT3JTZW50KHJlcXVl
c3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7Ci0gICAgfQotCi0gICAgd2ViU29ja2V0RnJhbWVT
ZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3dlYlNvY2tldEZyYW1lUmVjZWl2ZWRPclNlbnQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3Bv
bnNlKTsKLSAgICB9Ci0KLSAgICB3ZWJTb2NrZXRDbG9zZWQocmVxdWVzdElkLCB0aW1lc3RhbXAp
Ci0gICAgewotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVu
dGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJj
ZSk7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdJLldlYlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUu
Q2xvc2VkOwotCi0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5j
b21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmlu
aXNoZWQoZWxhcHNlZFRpbWUpOwotCi0gICAgICAgIHRoaXMuX3dlYlNvY2tldElkZW50aWZpZXJU
b1VSTC5kZWxldGUocmVxdWVzdElkKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRl
bnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkKTsKLSAgICB9Ci0KLSAgICBfd2ViU29ja2V0RnJh
bWVSZWNlaXZlZE9yU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCi0gICAgewot
ICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
LmdldChyZXF1ZXN0SWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7Ci0gICAg
ICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gRGF0
YSBnb2luZyBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciBpcyBhbHdheXMgbWFza2VkLgot
ICAgICAgICBsZXQgaXNPdXRnb2luZyA9ICEhcmVzcG9uc2UubWFzazsKLQotICAgICAgICBsZXQg
e3BheWxvYWREYXRhLCBwYXlsb2FkTGVuZ3RoLCBvcGNvZGV9ID0gcmVzcG9uc2U7Ci0gICAgICAg
IGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUo
dGltZXN0YW1wKTsKLQotICAgICAgICByZXNvdXJjZS5hZGRGcmFtZShwYXlsb2FkRGF0YSwgcGF5
bG9hZExlbmd0aCwgaXNPdXRnb2luZywgb3Bjb2RlLCB0aW1lc3RhbXAsIGVsYXBzZWRUaW1lKTsK
LSAgICB9Ci0KLSAgICBtYXJrUmVzb3VyY2VSZXF1ZXN0QXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUo
cmVxdWVzdElkZW50aWZpZXIpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3
b3JrT2JzZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3Ig
dGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0gICAgICAgIGlmICh0aGlzLl93YWl0aW5n
Rm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
LmdldChyZXF1ZXN0SWRlbnRpZmllcik7Ci0KLSAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUg
YSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVuZWQgZHVyaW5nIHRoZSBwYWdlIGxv
YWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgaXMgY2FsbGVkKS4KLSAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4gdGhpcyBjYXNlIHNpbmNlIHdlIGRvIGxpa2Vs
eSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUuIFRoZSBS
ZXNvdXJjZQotICAgICAgICAvLyBqdXN0IGRvZXNuJ3QgaGF2ZSBhIHJlcXVlc3RJZGVudGlmaWVy
IGZvciB1cyB0byBsb29rIGl0IHVwLgotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLmxlZ2FjeU1hcmtTZXJ2ZWRGcm9tTWVtb3J5
Q2FjaGUoKTsKLSAgICB9Ci0KLSAgICByZXNvdXJjZVJlcXVlc3RXYXNTZXJ2ZWRGcm9tTWVtb3J5
Q2FjaGUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmll
ciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLCB0aW1lc3RhbXAsIGluaXRpYXRvcikKLSAgICB7Ci0g
ICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNlcnZlci4KLQotICAgICAgICAvLyBJ
Z25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJl
ZS4KLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXls
b2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmhhcyhyZXF1ZXN0SWRlbnRpZmllcikpOwot
Ci0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxh
cHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgbGV0IGluaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbkZyb21QYXlsb2FkKGluaXRp
YXRvcik7Ci0gICAgICAgIGxldCByZXNwb25zZSA9IGNhY2hlZFJlc291cmNlUGF5bG9hZC5yZXNw
b25zZTsKLSAgICAgICAgY29uc3QgcmVzcG9uc2VTb3VyY2UgPSBOZXR3b3JrQWdlbnQuUmVzcG9u
c2VTb3VyY2UuTWVtb3J5Q2FjaGU7Ci0KLSAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fYWRk
TmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRp
ZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnR5cGUsICJHRVQiLCBudWxsLCBudWxsLCBlbGFwc2VkVGltZSwgbnVs
bCwgbnVsbCwgbnVsbCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgcmVz
b3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9u
c2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJz
LCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNw
b25zZS50aW1pbmcsIHJlc3BvbnNlU291cmNlKTsKLSAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VT
aXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSwgZWxhcHNlZFRpbWUpOwotICAgICAg
ICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6ZShjYWNoZWRSZXNvdXJjZVBheWxvYWQuYm9k
eVNpemUpOwotICAgICAgICByZXNvdXJjZS5zZXRDYWNoZWRSZXNwb25zZUJvZHlTaXplKGNhY2hl
ZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSk7Ci0gICAgICAgIHJlc291cmNlLm1hcmtBc0Zpbmlz
aGVkKGVsYXBzZWRUaW1lKTsKLQotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZS5jYWNo
ZWQsICJUaGlzIHJlc291cmNlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGNhY2hlZCBzaW5jZSBp
dCB3YXMgc2VydmVkIGZyb20gdGhlIE1lbW9yeUNhY2hlIiwgcmVzb3VyY2UpOwotCi0gICAgICAg
IGlmIChjYWNoZWRSZXNvdXJjZVBheWxvYWQuc291cmNlTWFwVVJMKQotICAgICAgICAgICAgV0ku
c291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJjZU1hcChjYWNoZWRSZXNvdXJjZVBheWxvYWQu
c291cmNlTWFwVVJMLCByZXNvdXJjZS51cmwsIHJlc291cmNlKTsKLQotICAgICAgICAvLyBObyBu
ZWVkIHRvIGFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgcmVxdWVzdElkZW50aWZpZXIs
IHNpbmNlIHRoaXMgaXMgdGhlIG9ubHkgZXZlbnQKLSAgICAgICAgLy8gc2VudCBmb3IgbWVtb3J5
IGNhY2hlIHJlc291cmNlIGxvYWRzLgotICAgIH0KLQotICAgIHJlc291cmNlUmVxdWVzdERpZFJl
Y2VpdmVSZXNwb25zZShyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJ
ZGVudGlmaWVyLCB0eXBlLCByZXNwb25zZSwgdGltZXN0YW1wKQotICAgIHsKLSAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuTmV0d29ya09ic2VydmVyLgotCi0gICAgICAgIC8vIElnbm9yZSB0aGlz
IHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9yZXNvdXJjZSB0cmVlLgotICAgICAg
ICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVN
YW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwotICAgICAgICBsZXQgcmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRp
Zmllcik7Ci0KLSAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUg
aW5zcGVjdG9yIHdhcyBvcGVuZWQgZHVyaW5nIHRoZSBwYWdlIGxvYWQgKGFmdGVyIHJlc291cmNl
UmVxdWVzdFdpbGxCZVNlbnQgaXMgY2FsbGVkKS4KLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBhc3NlcnQgaW4gdGhpcyBjYXNlIHNpbmNlIHdlIGRvIGxpa2VseSBoYXZlIHRoZSByZXNvdXJj
ZSwgdmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUuIFRoZSBSZXNvdXJjZQotICAgICAgICAv
LyBqdXN0IGRvZXNuJ3QgaGF2ZSBhIHJlcXVlc3RJZGVudGlmaWVyIGZvciB1cyB0byBsb29rIGl0
IHVwLCBidXQgd2UgY2FuIHRyeSB0byBsb29rIGl0IHVwIGJ5IGl0cyBVUkwuCi0gICAgICAgIGlm
ICghcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVu
dGlmaWVyKGZyYW1lSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAg
ICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5yZXNvdXJjZUZvclVSTChyZXNwb25zZS51cmwpOwot
Ci0gICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIHRoZSByZXNvdXJjZSB0aGlzIHdheSB3ZSBoYWQg
bWFya2VkIGl0IGVhcmxpZXIgYXMgZmluaXNoZWQgdmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRy
ZWUuCi0gICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHJlcXVl
c3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBmdXR1cmUgbG9hZGluZyBldmVudHMu
Ci0gICAgICAgICAgICAvLyBhbmQgcm9sbCBpdCBiYWNrIHRvIGFuIHVuZmluaXNoZWQgc3RhdGUs
IHdlIGtub3cgbm93IGl0IGlzIHN0aWxsIGxvYWRpbmcuCi0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2UpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
LnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIHJlc291
cmNlLnJldmVydE1hcmtBc0ZpbmlzaGVkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5kIGFuIGV4aXN0aW5nIFJlc291cmNlIGJ5IG5v
dywgdGhlbiBpdCBpcyBhIHJlc291cmNlIHRoYXQgd2FzIGxvYWRpbmcgd2hlbiB0aGUgaW5zcGVj
dG9yCi0gICAgICAgIC8vIG9wZW5lZCBhbmQgd2UganVzdCBtaXNzZWQgdGhlIHJlc291cmNlUmVx
dWVzdFdpbGxCZVNlbnQgZm9yIGl0LiBTbyBtYWtlIGEgbmV3IHJlc291cmNlIGFuZCBhZGQgaXQu
Ci0gICAgICAgIGlmICghcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gdGhpcy5f
YWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRl
bnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVzcG9uc2UudXJsLCB0eXBlLCBudWxsLCByZXNw
b25zZS5yZXF1ZXN0SGVhZGVycywgbnVsbCwgZWxhcHNlZFRpbWUsIG51bGwsIG51bGwsIG51bGws
IG51bGwpOwotCi0gICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlc291cmNlIHdpdGggdGhl
IHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBmdXR1cmUgbG9hZGluZyBl
dmVudHMuCi0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLnNl
dChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
Q09NUEFUSUJJTElUWSAoaU9TIDEwLjMpOiBgZnJvbURpc2tDYWNoZWAgaXMgbGVnYWN5LCByZXBs
YWNlZCBieSBgc291cmNlYC4KLSAgICAgICAgaWYgKHJlc3BvbnNlLmZyb21EaXNrQ2FjaGUpCi0g
ICAgICAgICAgICByZXNvdXJjZS5sZWdhY3lNYXJrU2VydmVkRnJvbURpc2tDYWNoZSgpOwotCi0g
ICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJlc3BvbnNlLnVybCwgcmVzcG9uc2Uu
bWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9u
c2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJlc3BvbnNlLnRpbWluZywgcmVzcG9uc2Uuc291
cmNlKTsKLSAgICB9Ci0KLSAgICByZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0
SWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIHRpbWVzdGFtcCkKLSAg
ICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNlcnZlci4KLQotICAgICAg
ICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3Vy
Y2UgdHJlZS4KLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRy
ZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCByZXNvdXJjZSA9
IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVlc3RJZGVudGlmaWVy
KTsKLSAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVF
bGFwc2VkVGltZSh0aW1lc3RhbXApOwotCi0gICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEg
cmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMgb3BlbmVkIGR1cmluZyB0aGUgcGFnZSBsb2Fk
IChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGlzIGNhbGxlZCkuCi0gICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gYXNzZXJ0IGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBkbyBsaWtlbHkg
aGF2ZSB0aGUgcmVzb3VyY2UsIHZpYSBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLiBUaGUgUmVz
b3VyY2UKLSAgICAgICAgLy8ganVzdCBkb2Vzbid0IGhhdmUgYSByZXF1ZXN0SWRlbnRpZmllciBm
b3IgdXMgdG8gbG9vayBpdCB1cC4KLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVNpemUoZGF0YUxlbmd0aCwgZWxh
cHNlZFRpbWUpOwotCi0gICAgICAgIGlmIChlbmNvZGVkRGF0YUxlbmd0aCAhPT0gLTEpCi0gICAg
ICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6ZShlbmNvZGVkRGF0YUxlbmd0aCk7
Ci0gICAgfQotCi0gICAgcmVzb3VyY2VSZXF1ZXN0RGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0SWRl
bnRpZmllciwgdGltZXN0YW1wLCBzb3VyY2VNYXBVUkwsIG1ldHJpY3MpCi0gICAgewotICAgICAg
ICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3Jl
IHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0g
ICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBCeSBub3cgd2Ugc2hvdWxkIGFsd2F5
cyBoYXZlIHRoZSBSZXNvdXJjZS4gRWl0aGVyIGl0IHdhcyBmZXRjaGVkIHdoZW4gdGhlIGluc3Bl
Y3RvciBmaXJzdCBvcGVuZWQgd2l0aAotICAgICAgICAvLyBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VU
cmVlLCBvciBpdCB3YXMgYSBjdXJyZW50bHkgbG9hZGluZyByZXNvdXJjZSB0aGF0IHdlIGxlYXJu
ZWQgYWJvdXQgaW4gcmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZVJlc3BvbnNlLgotICAgICAgICBs
ZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1
ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKLSAgICAg
ICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAobWV0
cmljcykKLSAgICAgICAgICAgIHJlc291cmNlLnVwZGF0ZVdpdGhNZXRyaWNzKG1ldHJpY3MpOwot
Ci0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxh
cHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxh
cHNlZFRpbWUpOwotCi0gICAgICAgIGlmIChzb3VyY2VNYXBVUkwpCi0gICAgICAgICAgICBXSS5z
b3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNlTWFwKHNvdXJjZU1hcFVSTCwgcmVzb3VyY2Uu
dXJsLCByZXNvdXJjZSk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmll
ck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIpOwotICAgIH0KLQotICAgIHJlc291cmNlUmVx
dWVzdERpZEZhaWxMb2FkaW5nKHJlcXVlc3RJZGVudGlmaWVyLCBjYW5jZWxlZCwgdGltZXN0YW1w
LCBlcnJvclRleHQpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdo
b2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0gICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFp
bkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAvLyBCeSBub3cgd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBSZXNvdXJjZS4gRWl0aGVyIGl0
IHdhcyBmZXRjaGVkIHdoZW4gdGhlIGluc3BlY3RvciBmaXJzdCBvcGVuZWQgd2l0aAotICAgICAg
ICAvLyBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLCBvciBpdCB3YXMgYSBjdXJyZW50bHkgbG9h
ZGluZyByZXNvdXJjZSB0aGF0IHdlIGxlYXJuZWQgYWJvdXQgaW4gcmVzb3VyY2VSZXF1ZXN0RGlk
UmVjZWl2ZVJlc3BvbnNlLgotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJl
cXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlc291cmNlKTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIu
Y29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7Ci0gICAgICAgIHJlc291cmNlLm1hcmtBc0Zh
aWxlZChjYW5jZWxlZCwgZWxhcHNlZFRpbWUsIGVycm9yVGV4dCk7Ci0KLSAgICAgICAgaWYgKHJl
c291cmNlLnBhcmVudEZyYW1lICYmIHJlc291cmNlID09PSByZXNvdXJjZS5wYXJlbnRGcmFtZS5w
cm92aXNpb25hbE1haW5SZXNvdXJjZSkKLSAgICAgICAgICAgIHJlc291cmNlLnBhcmVudEZyYW1l
LmNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0
SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIpOwotICAgIH0KLQotICAgIGV4
ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2FkKQotICAgIHsKLSAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuUnVudGltZU9ic2VydmVyLgotCi0gICAgICAgIHZhciBmcmFtZSA9IHRo
aXMuZnJhbWVGb3JJZGVudGlmaWVyKGNvbnRleHRQYXlsb2FkLmZyYW1lSWQpOwotICAgICAgICBj
b25zb2xlLmFzc2VydChmcmFtZSk7Ci0gICAgICAgIGlmICghZnJhbWUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gY29udGV4dFBheWxvYWQubmFtZSB8
fCBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWU7Ci0gICAgICAgIHZhciBleGVjdXRpb25D
b250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQoV0kubWFpblRhcmdldCwgY29udGV4dFBh
eWxvYWQuaWQsIGRpc3BsYXlOYW1lLCBjb250ZXh0UGF5bG9hZC5pc1BhZ2VDb250ZXh0LCBmcmFt
ZSk7Ci0gICAgICAgIGZyYW1lLmFkZEV4ZWN1dGlvbkNvbnRleHQoZXhlY3V0aW9uQ29udGV4dCk7
Ci0gICAgfQotCi0gICAgcmVzb3VyY2VGb3JVUkwodXJsKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9tYWluRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBpZiAo
dGhpcy5fbWFpbkZyYW1lLm1haW5SZXNvdXJjZS51cmwgPT09IHVybCkKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9tYWluRnJhbWUubWFpblJlc291cmNlOwotCi0gICAgICAgIHJldHVybiB0aGlz
Ll9tYWluRnJhbWUucmVzb3VyY2VGb3JVUkwodXJsLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBhZG9w
dE9ycGhhbmVkUmVzb3VyY2VzRm9yVGFyZ2V0KHRhcmdldCkKLSAgICB7Ci0gICAgICAgIGxldCBy
ZXNvdXJjZXMgPSB0aGlzLl9vcnBoYW5lZFJlc291cmNlcy50YWtlKHRhcmdldC5pZGVudGlmaWVy
KTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgcmVzb3VyY2VzKQotICAgICAgICAgICAgdGFyZ2V0LmFk
b3B0UmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9h
ZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVu
dGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1cmwsIHR5cGUsIHJlcXVlc3RNZXRob2QsIHJlcXVl
c3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIHdhbGx0aW1lLCBmcmFtZU5hbWUs
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2lu
YWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpCi0gICAgewotICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxv
YWQpOwotCi0gICAgICAgIGxldCByZXNvdXJjZSA9IG51bGw7Ci0KLSAgICAgICAgaWYgKCFmcmFt
ZUlkZW50aWZpZXIgJiYgdGFyZ2V0SWQpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcg
cmVzb3VyY2UgZm9yIGEgU2VydmljZVdvcmtlciB0YXJnZXQuCi0gICAgICAgICAgICBjb25zb2xl
LmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBl
LlNlcnZpY2VXb3JrZXIpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0SWQgPT09
IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcik7Ci0gICAgICAgICAgICByZXNvdXJjZSA9IG5ldyBX
SS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElkLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3RE
YXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwg
b3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7Ci0gICAgICAgICAgICByZXNvdXJj
ZS50YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAgICAgcmV0dXJuIHJlc291
cmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50
aWZpZXIoZnJhbWVJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9yIGFuIGV4aXN0aW5nIGZyYW1lLCB3aGljaCBt
aWdodCBiZSB0aGUgbWFpbiByZXNvdXJjZSBvciBhIG5ldyByZXNvdXJjZS4KLSAgICAgICAgICAg
IGlmICh0eXBlID09PSAiRG9jdW1lbnQiICYmIGZyYW1lLm1haW5SZXNvdXJjZS51cmwgPT09IHVy
bCAmJiBmcmFtZS5sb2FkZXJJZGVudGlmaWVyID09PSBsb2FkZXJJZGVudGlmaWVyKQotICAgICAg
ICAgICAgICAgIHJlc291cmNlID0gZnJhbWUubWFpblJlc291cmNlOwotICAgICAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PT0gIkRvY3VtZW50IiAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJj
ZSAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZS51cmwgPT09IHVybCAmJiBmcmFtZS5w
cm92aXNpb25hbExvYWRlcklkZW50aWZpZXIgPT09IGxvYWRlcklkZW50aWZpZXIpCi0gICAgICAg
ICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZTsKLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdJLlJlc291cmNl
KHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBz
ZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJl
cXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2Uu
dGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRS
ZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChyZXNvdXJjZS50YXJnZXQpCi0gICAgICAgICAgICAgICAgICAgIHJlc291cmNlLnRhcmdldC5h
ZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9hZGRPcnBoYW5lZFJlc291cmNlKHJlc291cmNlLCB0YXJnZXRJZCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEg
bmV3IHJlcXVlc3QgZm9yIGEgbmV3IGZyYW1lLCB3aGljaCBpcyBhbHdheXMgdGhlIG1haW4gcmVz
b3VyY2UuCi0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJs
ZVR5cGUgIT09IFdJLkRlYnVnZ2FibGVUeXBlLlNlcnZpY2VXb3JrZXIpOwotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRhcmdldElkKTsKLSAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdJ
LlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJl
cXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERh
dGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBv
cmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKLSAgICAgICAgICAgIGZyYW1lID0g
bmV3IFdJLkZyYW1lKGZyYW1lSWRlbnRpZmllciwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBsb2FkZXJJZGVudGlmaWVyLCByZXNvdXJjZSk7Ci0gICAgICAgICAgICB0aGlzLl9mcmFt
ZUlkZW50aWZpZXJNYXAuc2V0KGZyYW1lLmlkLCBmcmFtZSk7Ci0KLSAgICAgICAgICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSBtYWluIGZyYW1lLCBhc3N1bWUgdGhpcyBpcyBpdC4gVGhpcyBjYW4g
Y2hhbmdlIGxhdGVyIGluCi0gICAgICAgICAgICAvLyBmcmFtZURpZE5hdmlnYXRlIHdoZW4gdGhl
IHBhcmVudCBmcmFtZSBpcyBrbm93bi4KLSAgICAgICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1l
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gZnJhbWU7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG51bGwpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEZyYW1lV2FzQWRkZWRFdmVudChmcmFtZSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7Ci0KLSAgICAgICAgcmV0
dXJuIHJlc291cmNlOwotICAgIH0KLQotICAgIF9hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJl
c291cmNlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dhaXRpbmdGb3JN
YWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsKLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdG
b3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVz
b3VyY2UpOwotCi0gICAgICAgIGlmIChyZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyICE9PSBmcmFt
ZS5sb2FkZXJJZGVudGlmaWVyICYmICFmcmFtZS5wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIp
IHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcHJvdmlzaW9uYWwgbG9h
ZCB3aGljaCBoYXBwZW5zIGJlZm9yZSBmcmFtZURpZE5hdmlnYXRlIGlzIGNhbGxlZC4KLSAgICAg
ICAgICAgIC8vIFRoaXMgcmVzb3VyY2Ugd2lsbCBiZSB0aGUgbmV3IG1haW5SZXNvdXJjZSBpZiBm
cmFtZURpZE5hdmlnYXRlIGlzIGNhbGxlZC4KLSAgICAgICAgICAgIGZyYW1lLnN0YXJ0UHJvdmlz
aW9uYWxMb2FkKHJlc291cmNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFRoaXMgaXMganVzdCBhbm90aGVyIHJlc291cmNlLCBlaXRoZXIgZm9yIHRoZSBt
YWluIGxvYWRlciBvciB0aGUgcHJvdmlzaW9uYWwgbG9hZGVyLgotICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyID09PSBmcmFtZS5sb2FkZXJJZGVudGlmaWVy
IHx8IHJlc291cmNlLmxvYWRlcklkZW50aWZpZXIgPT09IGZyYW1lLnByb3Zpc2lvbmFsTG9hZGVy
SWRlbnRpZmllcik7Ci0gICAgICAgIGZyYW1lLmFkZFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9
Ci0KLSAgICBfYWRkUmVzb3VyY2VUb1RhcmdldCh0YXJnZXQsIHJlc291cmNlKQotICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ICE9PSBXSS5wYWdlVGFyZ2V0KTsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwotCi0gICAgICAgIHRhcmdldC5hZGRSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgX2luaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbkZyb21Q
YXlsb2FkKGluaXRpYXRvclBheWxvYWQpCi0gICAgewotICAgICAgICBpZiAoIWluaXRpYXRvclBh
eWxvYWQpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICB2YXIgdXJsID0gbnVs
bDsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBOYU47Ci0gICAgICAgIHZhciBjb2x1bW5OdW1i
ZXIgPSAwOwotCi0gICAgICAgIGlmIChpbml0aWF0b3JQYXlsb2FkLnN0YWNrVHJhY2UgJiYgaW5p
dGlhdG9yUGF5bG9hZC5zdGFja1RyYWNlLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIHN0YWNr
VHJhY2VQYXlsb2FkID0gaW5pdGlhdG9yUGF5bG9hZC5zdGFja1RyYWNlOwotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzdGFja1RyYWNlUGF5bG9hZC5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgICAgIHZhciBjYWxsRnJhbWVQYXlsb2FkID0gc3RhY2tUcmFjZVBheWxvYWRbaV07
Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsRnJhbWVQYXlsb2FkLnVybCB8fCBjYWxsRnJhbWVQ
YXlsb2FkLnVybCA9PT0gIltuYXRpdmUgY29kZV0iKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgIHVybCA9IGNhbGxGcmFtZVBheWxvYWQudXJsOwotCi0g
ICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMgMS1iYXNlZCwgYnV0IHdlIGV4cGVj
dCAwLWJhc2VkLgotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBjYWxsRnJhbWVQYXlsb2Fk
LmxpbmVOdW1iZXIgLSAxOwotCi0gICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyID0gY2FsbEZy
YW1lUGF5bG9hZC5jb2x1bW5OdW1iZXI7Ci0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpbml0aWF0b3JQYXlsb2FkLnVybCkgewotICAg
ICAgICAgICAgdXJsID0gaW5pdGlhdG9yUGF5bG9hZC51cmw7Ci0KLSAgICAgICAgICAgIC8vIFRo
ZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KLSAgICAgICAg
ICAgIGxpbmVOdW1iZXIgPSBpbml0aWF0b3JQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCF1cmwgfHwgaXNOYU4obGluZU51bWJlcikgfHwgbGluZU51bWJl
ciA8IDApCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICB2YXIgc291cmNlQ29k
ZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7Ci0gICAgICAg
IGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgIHNvdXJjZUNvZGUgPSBXSS5kZWJ1Z2dlck1h
bmFnZXIuc2NyaXB0c0ZvclVSTCh1cmwsIFdJLm1haW5UYXJnZXQpWzBdOwotCi0gICAgICAgIGlm
ICghc291cmNlQ29kZSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHJldHVy
biBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOwotICAgIH0KLQotICAgIF9wcm9jZXNzU2VydmljZVdvcmtlckNvbmZpZ3VyYXRpb24o
ZXJyb3IsIGluaXRpYWxpemF0aW9uUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsKLSAgICAg
ICAgdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQgPSBmYWxzZTsK
LQotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5z
dHJpbmdpZnkoZXJyb3IpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGluaXRpYWxpemF0aW9uUGF5bG9hZC50YXJnZXRJZC5zdGFydHNX
aXRoKCJzZXJ2aWNld29ya2VyOiIpKTsKLQotICAgICAgICBXSS5tYWluVGFyZ2V0LmlkZW50aWZp
ZXIgPSBpbml0aWFsaXphdGlvblBheWxvYWQudGFyZ2V0SWQ7Ci0gICAgICAgIFdJLm1haW5UYXJn
ZXQubmFtZSA9IGluaXRpYWxpemF0aW9uUGF5bG9hZC51cmw7Ci0KLSAgICAgICAgLy8gQ3JlYXRl
IGEgbWFpbiByZXNvdXJjZSB3aXRoIHRoaXMgY29udGVudCBpbiBjYXNlIHRoZSBjb250ZW50IG5l
dmVyIHNob3dzIHVwIGFzIGEgV0kuU2NyaXB0LgotICAgICAgICBjb25zdCB0eXBlID0gV0kuU2Ny
aXB0LlNvdXJjZVR5cGUuUHJvZ3JhbTsKLSAgICAgICAgbGV0IHNjcmlwdCA9IG5ldyBXSS5Mb2Nh
bFNjcmlwdChXSS5tYWluVGFyZ2V0LCBpbml0aWFsaXphdGlvblBheWxvYWQudXJsLCB0eXBlLCBp
bml0aWFsaXphdGlvblBheWxvYWQuY29udGVudCk7Ci0gICAgICAgIFdJLm1haW5UYXJnZXQubWFp
blJlc291cmNlID0gc2NyaXB0OwotCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcygoKSA9PiB7Ci0gICAgICAgICAgICBpZiAoV0kubWFpblRhcmdldC5t
YWluUmVzb3VyY2UgPT09IHNjcmlwdCkgewotICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIG5vdyBy
ZWNlaXZlZCBhbGwgdGhlIHNjcmlwdHMsIGlmIHdlIGRvbid0IGhhdmUgYSBiZXR0ZXIgbWFpbiBy
ZXNvdXJjZSB1c2UgdGhpcyBMb2NhbFNjcmlwdC4KLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5tYWluVGFyZ2V0KS5hZGRTY3JpcHQoc2NyaXB0KTsK
LSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwge3NjcmlwdH0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBfcHJvY2Vzc01haW5GcmFtZVJl
c291cmNlVHJlZVBheWxvYWQoZXJyb3IsIG1haW5GcmFtZVBheWxvYWQpCi0gICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5
bG9hZCk7Ci0gICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXls
b2FkID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjb25zb2xl
LmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChtYWluRnJhbWVQYXlsb2FkKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQobWFpbkZyYW1lUGF5bG9hZC5mcmFtZSk7Ci0KLSAgICAgICAgdGhp
cy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcCA9IG5ldyBNYXA7Ci0gICAgICAgIHRoaXMu
X2ZyYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7Ci0KLSAgICAgICAgdmFyIG9sZE1haW5GcmFt
ZSA9IHRoaXMuX21haW5GcmFtZTsKLQotICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSB0aGlzLl9h
ZGRGcmFtZVRyZWVGcm9tRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKG1haW5GcmFtZVBheWxvYWQs
IHRydWUpOwotCi0gICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkK
LSAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOwotICAg
IH0KLQotICAgIF9jcmVhdGVGcmFtZShwYXlsb2FkKQotICAgIHsKLSAgICAgICAgLy8gSWYgcGF5
bG9hZC51cmwgaXMgbWlzc2luZyBvciBlbXB0eSB0aGVuIHRoaXMgcGFnZSBpcyBsaWtlbHkgdGhl
IHNwZWNpYWwgZW1wdHkgcGFnZS4gSW4gdGhhdCBjYXNlCi0gICAgICAgIC8vIHdlIHdpbGwganVz
dCBzYXkgaXQgaXMgImFib3V0OmJsYW5rIiBzbyB3ZSBoYXZlIGEgVVJMLCB3aGljaCBpcyByZXF1
aXJlZCBmb3IgcmVzb3VyY2VzLgotICAgICAgICB2YXIgbWFpblJlc291cmNlID0gbmV3IFdJLlJl
c291cmNlKHBheWxvYWQudXJsIHx8ICJhYm91dDpibGFuayIsIHBheWxvYWQubWltZVR5cGUsIG51
bGwsIHBheWxvYWQubG9hZGVySWQpOwotICAgICAgICB2YXIgZnJhbWUgPSBuZXcgV0kuRnJhbWUo
cGF5bG9hZC5pZCwgcGF5bG9hZC5uYW1lLCBwYXlsb2FkLnNlY3VyaXR5T3JpZ2luLCBwYXlsb2Fk
LmxvYWRlcklkLCBtYWluUmVzb3VyY2UpOwotCi0gICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmll
ck1hcC5zZXQoZnJhbWUuaWQsIGZyYW1lKTsKLQotICAgICAgICBtYWluUmVzb3VyY2UubWFya0Fz
RmluaXNoZWQoKTsKLQotICAgICAgICByZXR1cm4gZnJhbWU7Ci0gICAgfQotCi0gICAgX2NyZWF0
ZVJlc291cmNlKHBheWxvYWQsIGZyYW1lUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNv
dXJjZSA9IG5ldyBXSS5SZXNvdXJjZShwYXlsb2FkLnVybCwgcGF5bG9hZC5taW1lVHlwZSwgcGF5
bG9hZC50eXBlLCBmcmFtZVBheWxvYWQubG9hZGVySWQsIHBheWxvYWQudGFyZ2V0SWQpOwotCi0g
ICAgICAgIGlmIChwYXlsb2FkLnNvdXJjZU1hcFVSTCkKLSAgICAgICAgICAgIFdJLnNvdXJjZU1h
cE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAocGF5bG9hZC5zb3VyY2VNYXBVUkwsIHJlc291cmNl
LnVybCwgcmVzb3VyY2UpOwotCi0gICAgICAgIHJldHVybiByZXNvdXJjZTsKLSAgICB9Ci0KLSAg
ICBfYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZChwYXlsb2FkLCBpc01h
aW5GcmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBmcmFtZSA9IHRoaXMuX2NyZWF0ZUZyYW1lKHBh
eWxvYWQuZnJhbWUpOwotICAgICAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAgICAgICAgICBmcmFt
ZS5tYXJrQXNNYWluRnJhbWUoKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgcGF5bG9hZC5j
aGlsZEZyYW1lcyAmJiBpIDwgcGF5bG9hZC5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIGZyYW1lLmFkZENoaWxkRnJhbWUodGhpcy5fYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVz
b3VyY2VUcmVlUGF5bG9hZChwYXlsb2FkLmNoaWxkRnJhbWVzW2ldLCBmYWxzZSkpOwotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBwYXlsb2FkLnJlc291cmNlcyAmJiBpIDwgcGF5bG9hZC5yZXNv
dXJjZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZVBheWxvYWQgPSBw
YXlsb2FkLnJlc291cmNlc1tpXTsKLQotICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2Ug
aXMgaW5jbHVkZWQgYXMgYSByZXNvdXJjZS4gV2UgY2FuIHNraXAgaXQgc2luY2Ugd2UgYWxyZWFk
eSBjcmVhdGVkCi0gICAgICAgICAgICAvLyBhIG1haW4gcmVzb3VyY2Ugd2hlbiB3ZSBjcmVhdGVk
IHRoZSBGcmFtZS4gVGhlIHJlc291cmNlIHBheWxvYWQgZG9lcyBub3QgaW5jbHVkZSBhbnl0aGlu
ZwotICAgICAgICAgICAgLy8gZGlkbid0IGFscmVhZHkgZ2V0IGZyb20gdGhlIGZyYW1lIHBheWxv
YWQuCi0gICAgICAgICAgICBpZiAocmVzb3VyY2VQYXlsb2FkLnR5cGUgPT09ICJEb2N1bWVudCIg
JiYgcmVzb3VyY2VQYXlsb2FkLnVybCA9PT0gcGF5bG9hZC5mcmFtZS51cmwpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0
ZVJlc291cmNlKHJlc291cmNlUGF5bG9hZCwgcGF5bG9hZCk7Ci0gICAgICAgICAgICBpZiAocmVz
b3VyY2UudGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQotICAgICAgICAgICAgICAgIGZyYW1lLmFk
ZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc291cmNlLnRhcmdl
dCkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS50YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZE9ycGhhbmVkUmVz
b3VyY2UocmVzb3VyY2UsIHJlc291cmNlUGF5bG9hZC50YXJnZXRJZCk7Ci0KLSAgICAgICAgICAg
IGlmIChyZXNvdXJjZVBheWxvYWQuZmFpbGVkIHx8IHJlc291cmNlUGF5bG9hZC5jYW5jZWxlZCkK
LSAgICAgICAgICAgICAgICByZXNvdXJjZS5tYXJrQXNGYWlsZWQocmVzb3VyY2VQYXlsb2FkLmNh
bmNlbGVkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5tYXJr
QXNGaW5pc2hlZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fZGlzcGF0Y2hGcmFtZVdh
c0FkZGVkRXZlbnQoZnJhbWUpOwotCi0gICAgICAgIHJldHVybiBmcmFtZTsKLSAgICB9Ci0KLSAg
ICBfYWRkT3JwaGFuZWRSZXNvdXJjZShyZXNvdXJjZSwgdGFyZ2V0SWQpCi0gICAgewotICAgICAg
ICBsZXQgcmVzb3VyY2VzID0gdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMuZ2V0KHRhcmdldElkKTsK
LSAgICAgICAgaWYgKCFyZXNvdXJjZXMpIHsKLSAgICAgICAgICAgIHJlc291cmNlcyA9IFtdOwot
ICAgICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMuc2V0KHRhcmdldElkLCByZXNvdXJj
ZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpOwotICAg
IH0KLQotICAgIF9kaXNwYXRjaEZyYW1lV2FzQWRkZWRFdmVudChmcmFtZSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LkV2ZW50LkZyYW1lV2FzQWRkZWQsIHtmcmFtZX0pOwotICAgIH0KLQotICAgIF9tYWluRnJhbWVE
aWRDaGFuZ2Uob2xkTWFpbkZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgKG9sZE1haW5GcmFtZSkK
LSAgICAgICAgICAgIG9sZE1haW5GcmFtZS51bm1hcmtBc01haW5GcmFtZSgpOwotICAgICAgICBp
ZiAodGhpcy5fbWFpbkZyYW1lKQotICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lLm1hcmtBc01h
aW5GcmFtZSgpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwge29sZE1haW5GcmFt
ZX0pOwotICAgIH0KLQotICAgIF9leHRyYURvbWFpbnNBY3RpdmF0ZWQoZXZlbnQpCi0gICAgewot
ICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb21haW5zLmluY2x1ZGVzKCJQYWdlIikgJiYgd2luZG93
LlBhZ2VBZ2VudCkKLSAgICAgICAgICAgIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUodGhpcy5f
cHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQuYmluZCh0aGlzKSk7Ci0gICAgfQot
fTsKLQotV0kuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgRnJhbWVXYXNBZGRl
ZDogImZyYW1lLXJlc291cmNlLW1hbmFnZXItZnJhbWUtd2FzLWFkZGVkIiwKLSAgICBGcmFtZVdh
c1JlbW92ZWQ6ICJmcmFtZS1yZXNvdXJjZS1tYW5hZ2VyLWZyYW1lLXdhcy1yZW1vdmVkIiwKLSAg
ICBNYWluRnJhbWVEaWRDaGFuZ2U6ICJmcmFtZS1yZXNvdXJjZS1tYW5hZ2VyLW1haW4tZnJhbWUt
ZGlkLWNoYW5nZSIsCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvSEFSQnVpbGRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMKaW5kZXggNmZiZmU0OTUy
NjM2ZmIyOTE4NjJjY2UwZDUxNzZmM2Q4NGRlMDU2Zi4uMWMwMzg3NjM4ODI3OGUxZWEyMWYyYmI1
YzdlZTQzMzk3NWFjZGVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvSEFSQnVpbGRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IQVJCdWlsZGVyLmpzCkBAIC02Nyw5ICs2
Nyw5IEBAIFdJLkhBUkJ1aWxkZXIgPSBjbGFzcyBIQVJCdWlsZGVyCiAgICAgc3RhdGljIHBhZ2Vz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBbewotICAgICAgICAgICAgc3RhcnRlZERhdGVUaW1l
OiBIQVJCdWlsZGVyLmRhdGUoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5S
ZXNvdXJjZS5yZXF1ZXN0U2VudERhdGUpLAorICAgICAgICAgICAgc3RhcnRlZERhdGVUaW1lOiBI
QVJCdWlsZGVyLmRhdGUoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5y
ZXF1ZXN0U2VudERhdGUpLAogICAgICAgICAgICAgaWQ6ICJwYWdlXzAiLAotICAgICAgICAgICAg
dGl0bGU6IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS51cmwgfHwgIiIsCisgICAg
ICAgICAgICB0aXRsZTogV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybCB8fCAiIiwKICAg
ICAgICAgICAgIHBhZ2VUaW1pbmdzOiBIQVJCdWlsZGVyLnBhZ2VUaW1pbmdzKCksCiAgICAgICAg
IH1dOwogICAgIH0KQEAgLTc4LDExICs3OCwxMSBAQCBXSS5IQVJCdWlsZGVyID0gY2xhc3MgSEFS
QnVpbGRlcgogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogCi0gICAgICAgIGxldCBk
b21Db250ZW50UmVhZHlFdmVudFRpbWVzdGFtcCA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1h
aW5GcmFtZS5kb21Db250ZW50UmVhZHlFdmVudFRpbWVzdGFtcDsKKyAgICAgICAgbGV0IGRvbUNv
bnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmRv
bUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wOwogICAgICAgICBpZiAoIWlzTmFOKGRvbUNvbnRl
bnRSZWFkeUV2ZW50VGltZXN0YW1wKSkKICAgICAgICAgICAgIHJlc3VsdC5vbkNvbnRlbnRMb2Fk
ID0gZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgKiAxMDAwOwogCi0gICAgICAgIGxldCBs
b2FkRXZlbnRUaW1lc3RhbXAgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubG9h
ZEV2ZW50VGltZXN0YW1wOworICAgICAgICBsZXQgbG9hZEV2ZW50VGltZXN0YW1wID0gV0kubmV0
d29ya01hbmFnZXIubWFpbkZyYW1lLmxvYWRFdmVudFRpbWVzdGFtcDsKICAgICAgICAgaWYgKCFp
c05hTihsb2FkRXZlbnRUaW1lc3RhbXApKQogICAgICAgICAgICAgcmVzdWx0Lm9uTG9hZCA9IGxv
YWRFdmVudFRpbWVzdGFtcCAqIDEwMDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5h
Z2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAxY2Y3NjgxNzBmMGNlYWQzY2ZiNGEwMWZjODk0ZDMzNGU5MWYw
ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzCkBAIC0wLDAgKzEsMTkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXSS5JbmRleGVkREJNYW5hZ2VyID0gY2xhc3MgSW5kZXhlZERCTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5JbmRleGVkREJBZ2VudCkKKyAgICAg
ICAgICAgIEluZGV4ZWREQkFnZW50LmVuYWJsZSgpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1
cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7
CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBpbml0aWFsaXplKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZXMgPSBbXTsKKyAgICB9CisKKyAgICBnZXQgaW5kZXhl
ZERhdGFiYXNlcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNl
czsKKyAgICB9CisKKyAgICByZXF1ZXN0SW5kZXhlZERhdGFiYXNlRGF0YShvYmplY3RTdG9yZSwg
b2JqZWN0U3RvcmVJbmRleCwgc3RhcnRFbnRyeUluZGV4LCBtYXhpbXVtRW50cnlDb3VudCwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh3aW5kb3cuSW5kZXhlZERCQWdl
bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3RTdG9yZSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNhbGxiYWNrKTsKKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzRGF0YShlcnJv
ciwgZW50cnlQYXlsb2FkcywgbW9yZUF2YWlsYWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmFsc2UpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGVu
dHJpZXMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgZW50cnlQYXlsb2FkIG9mIGVudHJ5
UGF5bG9hZHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB7fTsKKyAgICAgICAgICAg
ICAgICBlbnRyeS5wcmltYXJ5S2V5ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGVudHJ5
UGF5bG9hZC5wcmltYXJ5S2V5KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBXSS5SZW1v
dGVPYmplY3QuZnJvbVBheWxvYWQoZW50cnlQYXlsb2FkLmtleSk7CisgICAgICAgICAgICAgICAg
ZW50cnkudmFsdWUgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZW50cnlQYXlsb2FkLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50cnkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVzLCBtb3JlQXZhaWxhYmxlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciByZXF1ZXN0QXJndW1lbnRzID0geworICAgICAgICAgICAgc2Vj
dXJpdHlPcmlnaW46IG9iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLnNlY3VyaXR5T3JpZ2luLAor
ICAgICAgICAgICAgZGF0YWJhc2VOYW1lOiBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1l
LAorICAgICAgICAgICAgb2JqZWN0U3RvcmVOYW1lOiBvYmplY3RTdG9yZS5uYW1lLAorICAgICAg
ICAgICAgaW5kZXhOYW1lOiBvYmplY3RTdG9yZUluZGV4ICYmIG9iamVjdFN0b3JlSW5kZXgubmFt
ZSB8fCAiIiwKKyAgICAgICAgICAgIHNraXBDb3VudDogc3RhcnRFbnRyeUluZGV4IHx8IDAsCisg
ICAgICAgICAgICBwYWdlU2l6ZTogbWF4aW11bUVudHJ5Q291bnQgfHwgMTAwCisgICAgICAgIH07
CisKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEuaW52b2tlKHJlcXVlc3RBcmd1
bWVudHMsIHByb2Nlc3NEYXRhKTsKKyAgICB9CisKKyAgICBjbGVhck9iamVjdFN0b3JlKG9iamVj
dFN0b3JlKQorICAgIHsKKyAgICAgICAgbGV0IHNlY3VyaXR5T3JpZ2luID0gb2JqZWN0U3RvcmUu
cGFyZW50RGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIGxldCBkYXRhYmFzZU5hbWUg
PSBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1lOworICAgICAgICBsZXQgb2JqZWN0U3Rv
cmVOYW1lID0gb2JqZWN0U3RvcmUubmFtZTsKKworICAgICAgICBJbmRleGVkREJBZ2VudC5jbGVh
ck9iamVjdFN0b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFt
ZSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX21haW5SZXNvdXJjZURpZENoYW5n
ZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0
YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1l
KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJh
bWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qgb2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUg
bmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5JbmRleGVkREJN
YW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworCisgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVkREJE
YXRhYmFzZXNJZk5lZWRlZChldmVudC50YXJnZXQpOworICAgICAgICB9CisgICAgfQorCisgICAg
X2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVkKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYg
KCF3aW5kb3cuSW5kZXhlZERCQWdlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luID0gZnJhbWUuc2VjdXJpdHlPcmlnaW47CisKKyAgICAgICAgLy8g
RG9uJ3Qgc2hvdyBzdG9yYWdlIGlmIHdlIGRvbid0IGhhdmUgYSBzZWN1cml0eSBvcmlnaW4gKGFi
b3V0OmJsYW5rKS4KKyAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbiB8fCBzZWN1cml0eU9yaWdp
biA9PT0gIjovLyIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24gcHJv
Y2Vzc0RhdGFiYXNlTmFtZXMoZXJyb3IsIG5hbWVzKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoZXJyb3IgfHwgIW5hbWVzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgZm9yICh2YXIgbmFtZSBvZiBuYW1lcykKKyAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2Vu
dC5yZXF1ZXN0RGF0YWJhc2Uoc2VjdXJpdHlPcmlnaW4sIG5hbWUsIHByb2Nlc3NEYXRhYmFzZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhYmFz
ZShlcnJvciwgZGF0YWJhc2VQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJy
b3IgfHwgIWRhdGFiYXNlUGF5bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIHZhciBvYmplY3RTdG9yZXMgPSBkYXRhYmFzZVBheWxvYWQub2JqZWN0U3RvcmVzLm1h
cChwcm9jZXNzT2JqZWN0U3RvcmUpOworICAgICAgICAgICAgdmFyIGluZGV4ZWREYXRhYmFzZSA9
IG5ldyBXSS5JbmRleGVkRGF0YWJhc2UoZGF0YWJhc2VQYXlsb2FkLm5hbWUsIHNlY3VyaXR5T3Jp
Z2luLCBkYXRhYmFzZVBheWxvYWQudmVyc2lvbiwgb2JqZWN0U3RvcmVzKTsKKworICAgICAgICAg
ICAgdGhpcy5faW5kZXhlZERhdGFiYXNlcy5wdXNoKGluZGV4ZWREYXRhYmFzZSk7CisgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5JbmRleGVkREJNYW5hZ2VyLkV2
ZW50LkluZGV4ZWREYXRhYmFzZVdhc0FkZGVkLCB7aW5kZXhlZERhdGFiYXNlfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzS2V5UGF0aChrZXlQYXRoUGF5bG9hZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChrZXlQYXRoUGF5bG9hZC50eXBlKSB7CisgICAg
ICAgICAgICBjYXNlIEluZGV4ZWREQkFnZW50LktleVBhdGhUeXBlLk51bGw6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICBjYXNlIEluZGV4ZWREQkFnZW50LktleVBh
dGhUeXBlLlN0cmluZzoKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5UGF0aFBheWxvYWQuc3Ry
aW5nOworICAgICAgICAgICAgY2FzZSBJbmRleGVkREJBZ2VudC5LZXlQYXRoVHlwZS5BcnJheToK
KyAgICAgICAgICAgICAgICByZXR1cm4ga2V5UGF0aFBheWxvYWQuYXJyYXk7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gS2V5UGF0
aCB0eXBlOiIsIGtleVBhdGhQYXlsb2FkLnR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vz
c09iamVjdFN0b3JlKG9iamVjdFN0b3JlUGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGtleVBhdGggPSBwcm9jZXNzS2V5UGF0aChvYmplY3RTdG9yZVBheWxvYWQua2V5UGF0aCk7
CisgICAgICAgICAgICB2YXIgaW5kZXhlcyA9IG9iamVjdFN0b3JlUGF5bG9hZC5pbmRleGVzLm1h
cChwcm9jZXNzT2JqZWN0U3RvcmVJbmRleCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlUGF5bG9hZC5uYW1lLCBrZXlQYXRo
LCBvYmplY3RTdG9yZVBheWxvYWQuYXV0b0luY3JlbWVudCwgaW5kZXhlcyk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzT2JqZWN0U3RvcmVJbmRleChvYmplY3RTdG9yZUlu
ZGV4UGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGtleVBhdGggPSBwcm9jZXNz
S2V5UGF0aChvYmplY3RTdG9yZUluZGV4UGF5bG9hZC5rZXlQYXRoKTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleChvYmplY3RTdG9yZUlu
ZGV4UGF5bG9hZC5uYW1lLCBrZXlQYXRoLCBvYmplY3RTdG9yZUluZGV4UGF5bG9hZC51bmlxdWUs
IG9iamVjdFN0b3JlSW5kZXhQYXlsb2FkLm11bHRpRW50cnkpOworICAgICAgICB9CisKKyAgICAg
ICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4sIHBy
b2Nlc3NEYXRhYmFzZU5hbWVzLmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9zZWN1cml0eU9y
aWdpbkRpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50
LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICB0aGlzLl9hZGRJbmRleGVk
REJEYXRhYmFzZXNJZk5lZWRlZChldmVudC50YXJnZXQpOworICAgIH0KK307CisKK1dJLkluZGV4
ZWREQk1hbmFnZXIuRXZlbnQgPSB7CisgICAgSW5kZXhlZERhdGFiYXNlV2FzQWRkZWQ6ICJpbmRl
eGVkLWRiLW1hbmFnZXItaW5kZXhlZC1kYXRhYmFzZS13YXMtYWRkZWQiLAorICAgIENsZWFyZWQ6
ICJpbmRleGVkLWRiLW1hbmFnZXItY2xlYXJlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Jc3N1ZU1hbmFn
ZXIuanMKaW5kZXggYzhiNTVhZGFlMjFiM2ZiODJhZWM2MTRiNDcyYzk3NDdkODUwNTMyZi4uOTk0
ODg5YjFiNWI2MGRhOTg0YzVhNjIzMWZlMjE3YWRmM2MwMzQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lz
c3VlTWFuYWdlci5qcwpAQCAtMzAsNyArMzAsNyBAQCBXSS5Jc3N1ZU1hbmFnZXIgPSBjbGFzcyBJ
c3N1ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgc3VwZXIoKTsKIAogICAgICAg
ICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURp
ZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0ku
bG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwg
dGhpcy5fbG9nQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fbG9nQ2xl
YXJlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2
YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCmluZGV4
IGNmNTA3Y2FkNjY3MzE5MmViOGNjYzRiNDZmNzg4OTk5YTM4ZWUzMjIuLmQyOTNjMTRhMmY4MzA0
OTcxMjViODY1NmJlOTYzNWI4MWU0MGZmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMKQEAgLTE4OCw3ICsxODgsNyBAQCBXSS5K
YXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIgPSBjbGFzcyBKYXZhU2NyaXB0TG9nVmlld0NvbnRy
b2xsZXIgZXh0ZW5kcyBXSS5PYgogCiAgICAgcmVxdWVzdENsZWFyTWVzc2FnZXMoKQogICAgIHsK
LSAgICAgICAgV0kubG9nTWFuYWdlci5yZXF1ZXN0Q2xlYXJNZXNzYWdlcygpOworICAgICAgICBX
SS5jb25zb2xlTWFuYWdlci5yZXF1ZXN0Q2xlYXJNZXNzYWdlcygpOwogICAgIH0KIAogICAgIC8v
IFByb3RlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvTG9nTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFnZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEwYzUzZjgwN2I1YmZiY2U3MmY1ZDcwNmFlNzZhMjU5MjZjY2M4NzYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTG9nTWFuYWdlci5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBUb2JpYXMgUmVp
c3MgPHRvYmkrd2Via2l0QGJhc2Vjb2RlLmRlPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5Mb2dNYW5hZ2VyID0g
Y2xhc3MgTG9nTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAotewotICAgIGNvbnN0cnVjdG9yKCkK
LSAgICB7Ci0gICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdlc1Jl
cXVlc3RlZCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9pc05ld1BhZ2VPclJlbG9hZCA9IGZhbHNl
OwotCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwot
Ci0gICAgICAgIHRoaXMuX2N1c3RvbUxvZ2dpbmdDaGFubmVscyA9IFtdOwotICAgICAgICB0aGlz
Ll9sb2dnaW5nQ2hhbm5lbFNvdXJjZXMgPSBbXTsKLQotICAgICAgICBpZiAoV0kuTG9nTWFuYWdl
ci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCkpIHsKLSAgICAgICAgICAgIHRoaXMuX2xvZ2dpbmdDaGFu
bmVsU291cmNlcyA9IFtXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk1lZGlhLCBXSS5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLldlYlJUQ107Ci0gICAgICAgICAgICBDb25zb2xl
QWdlbnQuZ2V0TG9nZ2luZ0NoYW5uZWxzKChlcnJvciwgY2hhbm5lbHMpID0+IHsKLSAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgb2YgY2hhbm5lbHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbG9nZ2luZ0NoYW5uZWxTb3VyY2VzLmluY2x1ZGVz
KGNoYW5uZWwuc291cmNlKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
dGhpcy5fY3VzdG9tTG9nZ2luZ0NoYW5uZWxzID0gY2hhbm5lbHMubWFwKFdJLkxvZ2dpbmdDaGFu
bmVsLmZyb21QYXlsb2FkKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgLy8gU3RhdGljCi0KLSAgICBzdGF0aWMgc3VwcG9ydHNMb2dDaGFubmVscygpCi0gICAgewot
ICAgICAgICByZXR1cm4gISFDb25zb2xlQWdlbnQuZ2V0TG9nZ2luZ0NoYW5uZWxzOwotICAgIH0K
LQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IGN1c3RvbUxvZ2dpbmdDaGFubmVscygpIHsgcmV0
dXJuIHRoaXMuX2N1c3RvbUxvZ2dpbmdDaGFubmVsczsgfQotICAgIGdldCBsb2dDaGFubmVsU291
cmNlcygpIHsgcmV0dXJuIHRoaXMuX2xvZ2dpbmdDaGFubmVsU291cmNlczsgfQotCi0gICAgbWVz
c2FnZVdhc0FkZGVkKHRhcmdldCwgc291cmNlLCBsZXZlbCwgdGV4dCwgdHlwZSwgdXJsLCBsaW5l
LCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0SWQp
Ci0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5Db25zb2xlT2JzZXJ2ZXIuCi0KLSAg
ICAgICAgLy8gRklYTUU6IEdldCBhIHJlcXVlc3QgZnJvbSByZXF1ZXN0IElELgotCi0gICAgICAg
IGlmIChwYXJhbWV0ZXJzKQotICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMubWFw
KCh4KSA9PiBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoeCwgdGFyZ2V0KSk7Ci0KLSAgICAg
ICAgbGV0IG1lc3NhZ2UgPSBuZXcgV0kuQ29uc29sZU1lc3NhZ2UodGFyZ2V0LCBzb3VyY2UsIGxl
dmVsLCB0ZXh0LCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRl
cnMsIHN0YWNrVHJhY2UsIG51bGwpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVzc2FnZX0pOwotCi0g
ICAgICAgIGlmIChtZXNzYWdlLmxldmVsID09PSAid2FybmluZyIgfHwgbWVzc2FnZS5sZXZlbCA9
PT0gImVycm9yIikKLSAgICAgICAgICAgIFdJLmlzc3VlTWFuYWdlci5pc3N1ZVdhc0FkZGVkKG1l
c3NhZ2UpOwotICAgIH0KLQotICAgIG1lc3NhZ2VzQ2xlYXJlZCgpCi0gICAgewotICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5Db25zb2xlT2JzZXJ2ZXIuCi0KLSAgICAgICAgV0kuQ29uc29sZUNv
bW1hbmRSZXN1bHRNZXNzYWdlLmNsZWFyTWF4aW11bVNhdmVkUmVzdWx0SW5kZXgoKTsKLQotICAg
ICAgICBpZiAodGhpcy5fY2xlYXJNZXNzYWdlc1JlcXVlc3RlZCkgewotICAgICAgICAgICAgLy8g
RnJvbnRlbmQgcmVxdWVzdGVkICJjbGVhciBjb25zb2xlIiBhbmQgQmFja2VuZCBzdWNjZXNzZnVs
bHkgY29tcGxldGVkIHRoZSByZXF1ZXN0LgotICAgICAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdl
c1JlcXVlc3RlZCA9IGZhbHNlOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIFJlY2VpdmVkIGFuIHVucmVxdWVzdGVkIGNsZWFyIGNvbnNvbGUgZXZlbnQu
Ci0gICAgICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGZvciBhIG5hdmlnYXRpb24gb3Igb3RoZXIg
cmVhc29ucyAobGlrZSBjb25zb2xlLmNsZWFyKCkpLgotICAgICAgICAgICAgLy8gSWYgdGhpcyB3
YXMgYSByZWxvYWQsIHdlIG1heSBub3Qgd2FudCB0byBkaXNwYXRjaCBXSS5Mb2dNYW5hZ2VyLkV2
ZW50LkNsZWFyZWQuCi0gICAgICAgICAgICAvLyBUbyBkZXRlY3QgaWYgdGhpcyBpcyBhIHJlbG9h
ZCB3ZSB3YWl0IGEgdHVybiBhbmQgY2hlY2sgaWYgdGhlcmUgd2FzIGEgbWFpbiByZXNvdXJjZSBj
aGFuZ2UgcmVsb2FkLgotICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9kZWxheWVkTWVzc2Fn
ZXNDbGVhcmVkLmJpbmQodGhpcyksIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX2RlbGF5
ZWRNZXNzYWdlc0NsZWFyZWQoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2lzTmV3UGFnZU9y
UmVsb2FkKSB7Ci0gICAgICAgICAgICB0aGlzLl9pc05ld1BhZ2VPclJlbG9hZCA9IGZhbHNlOwot
Ci0gICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLmNsZWFyTG9nT25OYXZpZ2F0ZS52YWx1ZSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBIGNvbnNv
bGUuY2xlYXIoKSBvciBjb21tYW5kIGxpbmUgY2xlYXIoKSBoYXBwZW5lZC4KLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVkKTsK
LSAgICB9Ci0KLSAgICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGNvdW50KQotICAgIHsKLSAg
ICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ29uc29sZU9ic2VydmVyLgotCi0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNz
YWdlUmVwZWF0Q291bnRVcGRhdGVkLCB7Y291bnR9KTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0Q2xl
YXJNZXNzYWdlcygpCi0gICAgewotICAgICAgICB0aGlzLl9jbGVhck1lc3NhZ2VzUmVxdWVzdGVk
ID0gdHJ1ZTsKLQotICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAg
ICAgICAgIHRhcmdldC5Db25zb2xlQWdlbnQuY2xlYXJNZXNzYWdlcygpOwotICAgIH0KLQotICAg
IC8vIFByaXZhdGUKLQotICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7
Ci0KLSAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl9pc05ld1BhZ2VPclJlbG9hZCA9IHRydWU7Ci0KLSAg
ICAgICAgbGV0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7Ci0gICAgICAgIGxldCB3YXNSZWxvYWRl
ZCA9IGV2ZW50LmRhdGEub2xkTWFpblJlc291cmNlICYmIGV2ZW50LmRhdGEub2xkTWFpblJlc291
cmNlLnVybCA9PT0gZXZlbnQudGFyZ2V0Lm1haW5SZXNvdXJjZS51cmw7Ci0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lvblN0YXJ0
ZWQsIHt0aW1lc3RhbXAsIHdhc1JlbG9hZGVkfSk7Ci0KLSAgICAgICAgV0kuQ29uc29sZUNvbW1h
bmRSZXN1bHRNZXNzYWdlLmNsZWFyTWF4aW11bVNhdmVkUmVzdWx0SW5kZXgoKTsKLSAgICB9Ci19
OwotCi1XSS5Mb2dNYW5hZ2VyLkV2ZW50ID0gewotICAgIFNlc3Npb25TdGFydGVkOiAibG9nLW1h
bmFnZXItc2Vzc2lvbi13YXMtc3RhcnRlZCIsCi0gICAgQ2xlYXJlZDogImxvZy1tYW5hZ2VyLWNs
ZWFyZWQiLAotICAgIE1lc3NhZ2VBZGRlZDogImxvZy1tYW5hZ2VyLW1lc3NhZ2UtYWRkZWQiLAot
ICAgIFByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZDogImxvZy1tYW5hZ2VyLXByZXZp
b3VzLW1lc3NhZ2UtcmVwZWF0LWNvdW50LXVwZGF0ZWQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTQxYmZiNTUzY2ZkNmJjNmI2ODRlOTc0NGQ5YTA3
ZGFlOGY4N2UxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKQEAgLTAsMCArMSw3ODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOworICAg
ICAgICB0aGlzLl9tYWluRnJhbWUgPSBudWxsOworICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVl
c3RJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJj
ZXMgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwgPSBu
ZXcgTWFwOworCisgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQ
YXlsb2FkID0gdHJ1ZTsKKworICAgICAgICBpZiAod2luZG93LlBhZ2VBZ2VudCkgeworICAgICAg
ICAgICAgUGFnZUFnZW50LmVuYWJsZSgpOworICAgICAgICAgICAgUGFnZUFnZW50LmdldFJlc291
cmNlVHJlZSh0aGlzLl9wcm9jZXNzTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZC5iaW5kKHRo
aXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cuU2VydmljZVdvcmtlckFnZW50
KQorICAgICAgICAgICAgU2VydmljZVdvcmtlckFnZW50LmdldEluaXRpYWxpemF0aW9uSW5mbyh0
aGlzLl9wcm9jZXNzU2VydmljZVdvcmtlckNvbmZpZ3VyYXRpb24uYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgaWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQpCisgICAgICAgICAgICBOZXR3b3JrQWdlbnQu
ZW5hYmxlKCk7CisKKyAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJ
Lk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMuX2V4dHJhRG9tYWluc0Fj
dGl2YXRlZCwgdGhpcyk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgbWFpbkZy
YW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWU7CisgICAgfQorCisg
ICAgZ2V0IGZyYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gWy4uLnRoaXMuX2ZyYW1lSWRl
bnRpZmllck1hcC52YWx1ZXMoKV07CisgICAgfQorCisgICAgZnJhbWVGb3JJZGVudGlmaWVyKGZy
YW1lSWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwLmdl
dChmcmFtZUlkKSB8fCBudWxsOworICAgIH0KKworICAgIHJlc291cmNlRm9yUmVxdWVzdElkZW50
aWZpZXIocmVxdWVzdElkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVz
b3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpIHx8IG51bGw7
CisgICAgfQorCisgICAgZnJhbWVEaWROYXZpZ2F0ZShmcmFtZVBheWxvYWQpCisgICAgeworICAg
ICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCisKKyAgICAgICAgLy8gSWdub3Jl
IHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCisg
ICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZnJhbWVXYXNMb2FkZWRJbnN0YW50
bHkgPSBmYWxzZTsKKworICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLmZyYW1lRm9ySWRlbnRpZmll
cihmcmFtZVBheWxvYWQuaWQpOworICAgICAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgICAgICAv
LyBJZiB0aGUgZnJhbWUgd2Fzbid0IGtub3duIGJlZm9yZSBub3csIHRoZW4gdGhlIG1haW4gcmVz
b3VyY2Ugd2FzIGxvYWRlZCBpbnN0YW50bHkgKGFib3V0OmJsYW5rLCBldGMuKQorICAgICAgICAg
ICAgLy8gTWFrZSBhIG5ldyByZXNvdXJjZSAod2hpY2ggd2lsbCBtYWtlIHRoZSBmcmFtZSkuIE1h
cmsgd2lsbCBtYXJrIGl0IGFzIGxvYWRlZCBhdCB0aGUgZW5kIHRvbyBzaW5jZSB3ZQorICAgICAg
ICAgICAgLy8gZG9uJ3QgZXhwZWN0IGFueSBtb3JlIGV2ZW50cyBhYm91dCB0aGUgbG9hZCBmaW5p
c2hpbmcgZm9yIHRoZXNlIGZyYW1lcy4KKyAgICAgICAgICAgIHZhciBmcmFtZVJlc291cmNlID0g
dGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQobnVsbCwgZnJhbWVQYXlsb2FkLmlk
LCBmcmFtZVBheWxvYWQubG9hZGVySWQsIGZyYW1lUGF5bG9hZC51cmwsIG51bGwsIG51bGwsIG51
bGwsIG51bGwsIG51bGwsIG51bGwsIGZyYW1lUGF5bG9hZC5uYW1lLCBmcmFtZVBheWxvYWQuc2Vj
dXJpdHlPcmlnaW4pOworICAgICAgICAgICAgZnJhbWUgPSBmcmFtZVJlc291cmNlLnBhcmVudEZy
YW1lOworICAgICAgICAgICAgZnJhbWVXYXNMb2FkZWRJbnN0YW50bHkgPSB0cnVlOworCisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7CisgICAgICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmcmFtZVBh
eWxvYWQubG9hZGVySWQgPT09IGZyYW1lLnByb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcikgewor
ICAgICAgICAgICAgLy8gVGhlcmUgd2FzIGEgcHJvdmlzaW9uYWwgbG9hZCBpbiBwcm9ncmVzcywg
Y29tbWl0IGl0LgorICAgICAgICAgICAgZnJhbWUuY29tbWl0UHJvdmlzaW9uYWxMb2FkKGZyYW1l
UGF5bG9hZC5zZWN1cml0eU9yaWdpbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoZnJhbWUubWFpblJlc291cmNlLnVybCAhPT0gZnJhbWVQYXlsb2FkLnVybCB8fCBmcmFtZS5s
b2FkZXJJZGVudGlmaWVyICE9PSBmcmFtZVBheWxvYWQubG9hZGVySWQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBOYXZpZ2F0aW9ucyBsaWtlIGJhY2svZm9yd2FyZCBkbyBub3QgaGF2ZSBwcm92aXNp
b25hbCBsb2Fkcywgc28gY3JlYXRlIGEgbmV3IG1haW4gcmVzb3VyY2UgaGVyZS4KKyAgICAgICAg
ICAgICAgICB2YXIgbWFpblJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKGZyYW1lUGF5bG9hZC51
cmwsIGZyYW1lUGF5bG9hZC5taW1lVHlwZSwgbnVsbCwgZnJhbWVQYXlsb2FkLmxvYWRlcklkKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3Vy
Y2UgaXMgYWxyZWFkeSBjb3JyZWN0LCBzbyByZXVzZSBpdC4KKyAgICAgICAgICAgICAgICB2YXIg
bWFpblJlc291cmNlID0gZnJhbWUubWFpblJlc291cmNlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmcmFtZS5pbml0aWFsaXplKGZyYW1lUGF5bG9hZC5uYW1lLCBmcmFtZVBheWxvYWQu
c2VjdXJpdHlPcmlnaW4sIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCwgbWFpblJlc291cmNlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7CisK
KyAgICAgICAgaWYgKGZyYW1lUGF5bG9hZC5wYXJlbnRJZCkgeworICAgICAgICAgICAgdmFyIHBh
cmVudEZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVQYXlsb2FkLnBhcmVudElk
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudEZyYW1lKTsKKworICAgICAgICAg
ICAgaWYgKGZyYW1lID09PSB0aGlzLl9tYWluRnJhbWUpCisgICAgICAgICAgICAgICAgdGhpcy5f
bWFpbkZyYW1lID0gbnVsbDsKKworICAgICAgICAgICAgaWYgKGZyYW1lLnBhcmVudEZyYW1lICE9
PSBwYXJlbnRGcmFtZSkKKyAgICAgICAgICAgICAgICBwYXJlbnRGcmFtZS5hZGRDaGlsZEZyYW1l
KGZyYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS5wYXJlbnRG
cmFtZSkKKyAgICAgICAgICAgICAgICBmcmFtZS5wYXJlbnRGcmFtZS5yZW1vdmVDaGlsZEZyYW1l
KGZyYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZSA9IGZyYW1lOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRoaXMuX21haW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQorICAgICAg
ICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSk7CisKKyAgICAgICAg
aWYgKGZyYW1lV2FzTG9hZGVkSW5zdGFudGx5KQorICAgICAgICAgICAgZnJhbWUubWFpblJlc291
cmNlLm1hcmtBc0ZpbmlzaGVkKCk7CisgICAgfQorCisgICAgZnJhbWVEaWREZXRhY2goZnJhbWVJ
ZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlBhZ2VPYnNlcnZlci4KKworICAg
ICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVz
b3VyY2UgdHJlZS4KKyAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJj
ZVRyZWVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmcmFtZSA9
IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOworICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKKyAg
ICAgICAgICAgIGZyYW1lLnBhcmVudEZyYW1lLnJlbW92ZUNoaWxkRnJhbWUoZnJhbWUpOworCisg
ICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUoZnJhbWUuaWQpOworCisgICAg
ICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7CisKKyAgICAgICAgaWYgKGZy
YW1lID09PSB0aGlzLl9tYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBu
dWxsOworCisgICAgICAgIGZyYW1lLmNsZWFyRXhlY3V0aW9uQ29udGV4dHMoKTsKKworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5G
cmFtZVdhc1JlbW92ZWQsIHtmcmFtZX0pOworCisgICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUg
IT09IG9sZE1haW5GcmFtZSkKKyAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShv
bGRNYWluRnJhbWUpOworICAgIH0KKworICAgIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQocmVx
dWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVz
dCwgdHlwZSwgcmVkaXJlY3RSZXNwb25zZSwgdGltZXN0YW1wLCB3YWxsdGltZSwgaW5pdGlhdG9y
LCB0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNl
cnZlci4KKworICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hv
bGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KKyAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWlu
RnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogVGltZWxpbmUgdGltZXN0YW1wcyBmb3IgbGVnYWN5
IGJhY2tlbmRzIGFyZSBjb21wdXRlZAorICAgICAgICAvLyBkeW5hbWljYWxseSBmcm9tIHRoZSBm
aXJzdCBiYWNrZW5kIHRpbWVzdGFtcCByZWNlaXZlZC4gRm9yIG5hdmlnYXRpb25zIHdlCisgICAg
ICAgIC8vIG5lZWQgdG8gcmVzZXQgdGhhdCBiYXNlIHRpbWVzdGFtcCwgYW5kIGFuIGFwcHJvcHJp
YXRlIHRpbWVzdGFtcCB0byB1c2UgaXMKKyAgICAgICAgLy8gdGhlIG5ldyBtYWluIHJlc291cmNl
J3Mgd2lsbCBiZSBzZW50IHRpbWVzdGFtcC4gU28gc2F2ZSB0aGlzIHZhbHVlIG9uIHRoZQorICAg
ICAgICAvLyByZXNvdXJjZSBpbiBjYXNlIGl0IGJlY29tZXMgYSBtYWluIHJlc291cmNlLgorICAg
ICAgICB2YXIgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsK
KworICAgICAgICB2YXIgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVs
YXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgIGxldCByZXNvdXJjZSA9IHRoaXMuX3Jlc291
cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGV4aXN0aW5nIHJlcXVl
c3Qgd2hpY2ggaXMgYmVpbmcgcmVkaXJlY3RlZCwgdXBkYXRlIHRoZSByZXNvdXJjZS4KKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRhcmdldElkKTsKKyAgICAgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJl
ZGlyZWN0UmVzcG9uc2UocmVxdWVzdC51cmwsIHJlcXVlc3QuaGVhZGVycywgZWxhcHNlZFRpbWUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGluaXRpYXRv
clNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbkZy
b21QYXlsb2FkKGluaXRpYXRvcik7CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0
LCBtYWtlIGEgbmV3IHJlc291cmNlIGFuZCBhZGQgaXQgdG8gdGhlIHJpZ2h0IGZyYW1lLgorICAg
ICAgICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVl
c3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3Qu
dXJsLCB0eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC5oZWFkZXJzLCByZXF1ZXN0LnBvc3RE
YXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNv
ZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQp
OworCisgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgcmVxdWVzdElk
ZW50aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2FkaW5nIGV2ZW50cy4KKyAg
ICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkZW50
aWZpZXIsIHJlc291cmNlKTsKKyAgICB9CisKKyAgICB3ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJ
ZCwgdXJsKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMLnNl
dChyZXF1ZXN0SWQsIHVybCk7CisgICAgfQorCisgICAgd2ViU29ja2V0V2lsbFNlbmRIYW5kc2hh
a2VSZXF1ZXN0KHJlcXVlc3RJZCwgdGltZXN0YW1wLCB3YWxsdGltZSwgcmVxdWVzdCkKKyAgICB7
CisgICAgICAgIGxldCB1cmwgPSB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwuZ2V0KHJl
cXVlc3RJZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CisgICAgICAgIGlmICghdXJs
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEw
LjMpOiBgd2FsbHRpbWVgIGRpZCBub3QgZXhpc3QgaW4gMTAuMyBhbmQgZWFybGllci4KKyAgICAg
ICAgaWYgKCFOZXR3b3JrQWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoIndlYlNvY2tldFdpbGxTZW5k
SGFuZHNoYWtlUmVxdWVzdCIsICJ3YWxsdGltZSIpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0g
YXJndW1lbnRzWzJdOworICAgICAgICAgICAgd2FsbHRpbWUgPSBOYU47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENv
cnJlY3RseSBkaXNwbGF5IGlmcmFtZSdzIGFuZCB3b3JrZXIncyBXZWJTb2NrZXRzCisgICAgICAg
IGxldCBmcmFtZUlkZW50aWZpZXIgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQ7Cisg
ICAgICAgIGxldCBsb2FkZXJJZGVudGlmaWVyID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LmlkOworICAgICAgICBsZXQgdGFyZ2V0SWQ7CisKKyAgICAgICAgbGV0IGZyYW1lID0gdGhpcy5m
cmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgbGV0IHJlcXVlc3RE
YXRhID0gbnVsbDsKKyAgICAgICAgbGV0IGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2Vy
LmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOworICAgICAgICBsZXQgaW5pdGlhdG9yU291
cmNlQ29kZUxvY2F0aW9uID0gbnVsbDsKKworICAgICAgICBsZXQgcmVzb3VyY2UgPSBuZXcgV0ku
V2ViU29ja2V0UmVzb3VyY2UodXJsLCBsb2FkZXJJZGVudGlmaWVyLCB0YXJnZXRJZCwgcmVxdWVz
dElkLCByZXF1ZXN0LmhlYWRlcnMsIHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCBl
bGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKKworICAgICAgICBmcmFt
ZS5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0
SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkLCByZXNvdXJjZSk7CisgICAgfQorCisgICAgd2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVz
cG9uc2UpCisgICAgeworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVl
c3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXNvdXJjZSk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdJLldlYlNvY2tldFJlc291cmNlLlJlYWR5
U3RhdGUuT3BlbjsKKworICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFn
ZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisKKyAgICAgICAgLy8gRklYTUU6IDx3
ZWJraXQub3JnL2IvMTY5MTY2PiBXZWIgSW5zcGVjdG9yOiBXZWJTb2NrZXRzOiBJbXBsZW1lbnQg
dGltaW5nIGluZm9ybWF0aW9uCisgICAgICAgIGxldCByZXNwb25zZVRpbWluZyA9IHJlc3BvbnNl
LnRpbWluZyB8fCBudWxsOworCisgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJl
c291cmNlLnVybCwgcmVzb3VyY2UubWltZVR5cGUsIHJlc291cmNlLnR5cGUsIHJlc3BvbnNlLmhl
YWRlcnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUs
IHJlc3BvbnNlVGltaW5nKTsKKworICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZChlbGFw
c2VkVGltZSk7CisgICAgfQorCisgICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQs
IHRpbWVzdGFtcCwgcmVzcG9uc2UpCisgICAgeworICAgICAgICB0aGlzLl93ZWJTb2NrZXRGcmFt
ZVJlY2VpdmVkT3JTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7CisgICAgfQor
CisgICAgd2ViU29ja2V0RnJhbWVTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX3dlYlNvY2tldEZyYW1lUmVjZWl2ZWRPclNlbnQocmVxdWVz
dElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKTsKKyAgICB9CisKKyAgICB3ZWJTb2NrZXRDbG9zZWQo
cmVxdWVzdElkLCB0aW1lc3RhbXApCisgICAgeworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlz
Ll9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOworICAgICAgICBj
b25zb2xlLmFzc2VydChyZXNvdXJjZSk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdJLldlYlNvY2tl
dFJlc291cmNlLlJlYWR5U3RhdGUuQ2xvc2VkOworCisgICAgICAgIGxldCBlbGFwc2VkVGltZSA9
IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKyAgICAg
ICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOworCisgICAgICAgIHRoaXMu
X3dlYlNvY2tldElkZW50aWZpZXJUb1VSTC5kZWxldGUocmVxdWVzdElkKTsKKyAgICAgICAgdGhp
cy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkKTsKKyAgICB9
CisKKyAgICBfd2ViU29ja2V0RnJhbWVSZWNlaXZlZE9yU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFt
cCwgcmVzcG9uc2UpCisgICAgeworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOworICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNvdXJjZSk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gRGF0YSBnb2luZyBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZl
ciBpcyBhbHdheXMgbWFza2VkLgorICAgICAgICBsZXQgaXNPdXRnb2luZyA9ICEhcmVzcG9uc2Uu
bWFzazsKKworICAgICAgICBsZXQge3BheWxvYWREYXRhLCBwYXlsb2FkTGVuZ3RoLCBvcGNvZGV9
ID0gcmVzcG9uc2U7CisgICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdl
ci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKworICAgICAgICByZXNvdXJjZS5hZGRG
cmFtZShwYXlsb2FkRGF0YSwgcGF5bG9hZExlbmd0aCwgaXNPdXRnb2luZywgb3Bjb2RlLCB0aW1l
c3RhbXAsIGVsYXBzZWRUaW1lKTsKKyAgICB9CisKKyAgICBtYXJrUmVzb3VyY2VSZXF1ZXN0QXNT
ZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkZW50aWZpZXIpCisgICAgeworICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIuCisKKyAgICAgICAgLy8gSWdub3JlIHRo
aXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCisgICAg
ICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7CisKKyAgICAgICAg
Ly8gV2UgbWlnaHQgbm90IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVu
ZWQgZHVyaW5nIHRoZSBwYWdlIGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQg
aXMgY2FsbGVkKS4KKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4gdGhpcyBj
YXNlIHNpbmNlIHdlIGRvIGxpa2VseSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VBZ2VudC5n
ZXRSZXNvdXJjZVRyZWUuIFRoZSBSZXNvdXJjZQorICAgICAgICAvLyBqdXN0IGRvZXNuJ3QgaGF2
ZSBhIHJlcXVlc3RJZGVudGlmaWVyIGZvciB1cyB0byBsb29rIGl0IHVwLgorICAgICAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLmxlZ2Fj
eU1hcmtTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUoKTsKKyAgICB9CisKKyAgICByZXNvdXJjZVJlcXVl
c3RXYXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRp
ZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLCB0aW1lc3RhbXAs
IGluaXRpYXRvcikKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNl
cnZlci4KKworICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hv
bGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KKyAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWlu
RnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmhhcyhy
ZXF1ZXN0SWRlbnRpZmllcikpOworCisgICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVs
aW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKyAgICAgICAgbGV0IGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbkZyb21QYXlsb2FkKGluaXRpYXRvcik7CisgICAgICAgIGxldCByZXNwb25zZSA9IGNhY2hl
ZFJlc291cmNlUGF5bG9hZC5yZXNwb25zZTsKKyAgICAgICAgY29uc3QgcmVzcG9uc2VTb3VyY2Ug
PSBOZXR3b3JrQWdlbnQuUmVzcG9uc2VTb3VyY2UuTWVtb3J5Q2FjaGU7CisKKyAgICAgICAgbGV0
IHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElk
ZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3Vy
Y2VQYXlsb2FkLnVybCwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnR5cGUsICJHRVQiLCBudWxsLCBu
dWxsLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCwgbnVsbCwgaW5pdGlhdG9yU291cmNlQ29kZUxv
Y2F0aW9uKTsKKyAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVkUmVzb3Vy
Y2VQYXlsb2FkLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50
eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1Rl
eHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZS50aW1pbmcsIHJlc3BvbnNlU291cmNlKTsKKyAgICAg
ICAgcmVzb3VyY2UuaW5jcmVhc2VTaXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSwg
ZWxhcHNlZFRpbWUpOworICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6ZShjYWNo
ZWRSZXNvdXJjZVBheWxvYWQuYm9keVNpemUpOworICAgICAgICByZXNvdXJjZS5zZXRDYWNoZWRS
ZXNwb25zZUJvZHlTaXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSk7CisgICAgICAg
IHJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKKworICAgICAgICBjb25zb2xl
LmFzc2VydChyZXNvdXJjZS5jYWNoZWQsICJUaGlzIHJlc291cmNlIHNob3VsZCBiZSBjbGFzc2lm
aWVkIGFzIGNhY2hlZCBzaW5jZSBpdCB3YXMgc2VydmVkIGZyb20gdGhlIE1lbW9yeUNhY2hlIiwg
cmVzb3VyY2UpOworCisgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZVBheWxvYWQuc291cmNlTWFw
VVJMKQorICAgICAgICAgICAgV0kuc291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJjZU1hcChj
YWNoZWRSZXNvdXJjZVBheWxvYWQuc291cmNlTWFwVVJMLCByZXNvdXJjZS51cmwsIHJlc291cmNl
KTsKKworICAgICAgICAvLyBObyBuZWVkIHRvIGFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0
aGUgcmVxdWVzdElkZW50aWZpZXIsIHNpbmNlIHRoaXMgaXMgdGhlIG9ubHkgZXZlbnQKKyAgICAg
ICAgLy8gc2VudCBmb3IgbWVtb3J5IGNhY2hlIHJlc291cmNlIGxvYWRzLgorICAgIH0KKworICAg
IHJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SWRlbnRpZmllciwgZnJh
bWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB0eXBlLCByZXNwb25zZSwgdGltZXN0YW1w
KQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuTmV0d29ya09ic2VydmVyLgorCisg
ICAgICAgIC8vIElnbm9yZSB0aGlzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9y
ZXNvdXJjZSB0cmVlLgorICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291
cmNlVHJlZVBheWxvYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGVsYXBz
ZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXAp
OworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVy
TWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhh
dmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVuZWQgZHVyaW5nIHRoZSBwYWdl
IGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgaXMgY2FsbGVkKS4KKyAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4gdGhpcyBjYXNlIHNpbmNlIHdlIGRvIGxp
a2VseSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUuIFRo
ZSBSZXNvdXJjZQorICAgICAgICAvLyBqdXN0IGRvZXNuJ3QgaGF2ZSBhIHJlcXVlc3RJZGVudGlm
aWVyIGZvciB1cyB0byBsb29rIGl0IHVwLCBidXQgd2UgY2FuIHRyeSB0byBsb29rIGl0IHVwIGJ5
IGl0cyBVUkwuCisgICAgICAgIGlmICghcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHZhciBmcmFt
ZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcik7CisgICAgICAgICAg
ICBpZiAoZnJhbWUpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5yZXNvdXJjZUZv
clVSTChyZXNwb25zZS51cmwpOworCisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIHRoZSByZXNv
dXJjZSB0aGlzIHdheSB3ZSBoYWQgbWFya2VkIGl0IGVhcmxpZXIgYXMgZmluaXNoZWQgdmlhIFBh
Z2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUuCisgICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJl
c291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBm
dXR1cmUgbG9hZGluZyBldmVudHMuCisgICAgICAgICAgICAvLyBhbmQgcm9sbCBpdCBiYWNrIHRv
IGFuIHVuZmluaXNoZWQgc3RhdGUsIHdlIGtub3cgbm93IGl0IGlzIHN0aWxsIGxvYWRpbmcuCisg
ICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXNvdXJj
ZVJlcXVlc3RJZGVudGlmaWVyTWFwLnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2UpOwor
ICAgICAgICAgICAgICAgIHJlc291cmNlLnJldmVydE1hcmtBc0ZpbmlzaGVkKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5kIGFuIGV4
aXN0aW5nIFJlc291cmNlIGJ5IG5vdywgdGhlbiBpdCBpcyBhIHJlc291cmNlIHRoYXQgd2FzIGxv
YWRpbmcgd2hlbiB0aGUgaW5zcGVjdG9yCisgICAgICAgIC8vIG9wZW5lZCBhbmQgd2UganVzdCBt
aXNzZWQgdGhlIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgZm9yIGl0LiBTbyBtYWtlIGEgbmV3
IHJlc291cmNlIGFuZCBhZGQgaXQuCisgICAgICAgIGlmICghcmVzb3VyY2UpIHsKKyAgICAgICAg
ICAgIHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVz
dElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVzcG9uc2Uu
dXJsLCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0SGVhZGVycywgbnVsbCwgZWxhcHNlZFRp
bWUsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworCisgICAgICAgICAgICAvLyBBc3NvY2lhdGUg
dGhlIHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3Vu
ZCBpbiBmdXR1cmUgbG9hZGluZyBldmVudHMuCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVJl
cXVlc3RJZGVudGlmaWVyTWFwLnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2UpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwLjMpOiBgZnJvbURpc2tD
YWNoZWAgaXMgbGVnYWN5LCByZXBsYWNlZCBieSBgc291cmNlYC4KKyAgICAgICAgaWYgKHJlc3Bv
bnNlLmZyb21EaXNrQ2FjaGUpCisgICAgICAgICAgICByZXNvdXJjZS5sZWdhY3lNYXJrU2VydmVk
RnJvbURpc2tDYWNoZSgpOworCisgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJl
c3BvbnNlLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJl
c3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJlc3BvbnNl
LnRpbWluZywgcmVzcG9uc2Uuc291cmNlKTsKKyAgICB9CisKKyAgICByZXNvdXJjZVJlcXVlc3RE
aWRSZWNlaXZlRGF0YShyZXF1ZXN0SWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgsIHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdv
cmtPYnNlcnZlci4KKworICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0
aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KKyAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdG
b3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGxldCByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAu
Z2V0KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV0kudGlt
ZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOworCisgICAgICAgIC8v
IFdlIG1pZ2h0IG5vdCBoYXZlIGEgcmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMgb3BlbmVk
IGR1cmluZyB0aGUgcGFnZSBsb2FkIChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGlz
IGNhbGxlZCkuCisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYXNzZXJ0IGluIHRoaXMgY2Fz
ZSBzaW5jZSB3ZSBkbyBsaWtlbHkgaGF2ZSB0aGUgcmVzb3VyY2UsIHZpYSBQYWdlQWdlbnQuZ2V0
UmVzb3VyY2VUcmVlLiBUaGUgUmVzb3VyY2UKKyAgICAgICAgLy8ganVzdCBkb2Vzbid0IGhhdmUg
YSByZXF1ZXN0SWRlbnRpZmllciBmb3IgdXMgdG8gbG9vayBpdCB1cC4KKyAgICAgICAgaWYgKCFy
ZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5pbmNyZWFz
ZVNpemUoZGF0YUxlbmd0aCwgZWxhcHNlZFRpbWUpOworCisgICAgICAgIGlmIChlbmNvZGVkRGF0
YUxlbmd0aCAhPT0gLTEpCisgICAgICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6
ZShlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgfQorCisgICAgcmVzb3VyY2VSZXF1ZXN0RGlkRmlu
aXNoTG9hZGluZyhyZXF1ZXN0SWRlbnRpZmllciwgdGltZXN0YW1wLCBzb3VyY2VNYXBVUkwsIG1l
dHJpY3MpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIu
CisKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZy
YW1lL3Jlc291cmNlIHRyZWUuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1l
UmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBC
eSBub3cgd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBSZXNvdXJjZS4gRWl0aGVyIGl0IHdhcyBm
ZXRjaGVkIHdoZW4gdGhlIGluc3BlY3RvciBmaXJzdCBvcGVuZWQgd2l0aAorICAgICAgICAvLyBQ
YWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLCBvciBpdCB3YXMgYSBjdXJyZW50bHkgbG9hZGluZyBy
ZXNvdXJjZSB0aGF0IHdlIGxlYXJuZWQgYWJvdXQgaW4gcmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2
ZVJlc3BvbnNlLgorICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJ
ZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlc291cmNlKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAobWV0cmljcykKKyAgICAgICAgICAgIHJlc291cmNlLnVwZGF0ZVdp
dGhNZXRyaWNzKG1ldHJpY3MpOworCisgICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVs
aW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKyAgICAgICAgcmVzb3Vy
Y2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOworCisgICAgICAgIGlmIChzb3VyY2VNYXBV
UkwpCisgICAgICAgICAgICBXSS5zb3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNlTWFwKHNv
dXJjZU1hcFVSTCwgcmVzb3VyY2UudXJsLCByZXNvdXJjZSk7CisKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIpOworICAg
IH0KKworICAgIHJlc291cmNlUmVxdWVzdERpZEZhaWxMb2FkaW5nKHJlcXVlc3RJZGVudGlmaWVy
LCBjYW5jZWxlZCwgdGltZXN0YW1wLCBlcnJvclRleHQpCisgICAgeworICAgICAgICAvLyBDYWxs
ZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIuCisKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hp
bGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCisgICAgICAgIGlm
ICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAvLyBCeSBub3cgd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHRo
ZSBSZXNvdXJjZS4gRWl0aGVyIGl0IHdhcyBmZXRjaGVkIHdoZW4gdGhlIGluc3BlY3RvciBmaXJz
dCBvcGVuZWQgd2l0aAorICAgICAgICAvLyBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLCBvciBp
dCB3YXMgYSBjdXJyZW50bHkgbG9hZGluZyByZXNvdXJjZSB0aGF0IHdlIGxlYXJuZWQgYWJvdXQg
aW4gcmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZVJlc3BvbnNlLgorICAgICAgICBsZXQgcmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRp
Zmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKKyAgICAgICAgaWYgKCFy
ZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgZWxhcHNlZFRpbWUg
PSBXSS50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAg
ICAgIHJlc291cmNlLm1hcmtBc0ZhaWxlZChjYW5jZWxlZCwgZWxhcHNlZFRpbWUsIGVycm9yVGV4
dCk7CisKKyAgICAgICAgaWYgKHJlc291cmNlLnBhcmVudEZyYW1lICYmIHJlc291cmNlID09PSBy
ZXNvdXJjZS5wYXJlbnRGcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSkKKyAgICAgICAgICAg
IHJlc291cmNlLnBhcmVudEZyYW1lLmNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CisKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZp
ZXIpOworICAgIH0KKworICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2Fk
KQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuUnVudGltZU9ic2VydmVyLgorCisg
ICAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGNvbnRleHRQYXlsb2Fk
LmZyYW1lSWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7CisgICAgICAgIGlmICgh
ZnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0g
Y29udGV4dFBheWxvYWQubmFtZSB8fCBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWU7Cisg
ICAgICAgIHZhciBleGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQoV0ku
bWFpblRhcmdldCwgY29udGV4dFBheWxvYWQuaWQsIGRpc3BsYXlOYW1lLCBjb250ZXh0UGF5bG9h
ZC5pc1BhZ2VDb250ZXh0LCBmcmFtZSk7CisgICAgICAgIGZyYW1lLmFkZEV4ZWN1dGlvbkNvbnRl
eHQoZXhlY3V0aW9uQ29udGV4dCk7CisgICAgfQorCisgICAgcmVzb3VyY2VGb3JVUkwodXJsKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9tYWluRnJhbWUpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKworICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lLm1haW5SZXNvdXJjZS51cmwgPT09
IHVybCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWUubWFpblJlc291cmNlOwor
CisgICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWUucmVzb3VyY2VGb3JVUkwodXJsLCB0cnVl
KTsKKyAgICB9CisKKyAgICBhZG9wdE9ycGhhbmVkUmVzb3VyY2VzRm9yVGFyZ2V0KHRhcmdldCkK
KyAgICB7CisgICAgICAgIGxldCByZXNvdXJjZXMgPSB0aGlzLl9vcnBoYW5lZFJlc291cmNlcy50
YWtlKHRhcmdldC5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgcmVzb3VyY2VzKQor
ICAgICAgICAgICAgdGFyZ2V0LmFkb3B0UmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0KKworICAg
IC8vIFByaXZhdGUKKworICAgIF9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChyZXF1ZXN0
SWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1cmwsIHR5cGUs
IHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUs
IHdhbGx0aW1lLCBmcmFtZU5hbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGluaXRpYXRvclNvdXJj
ZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0
SWQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fd2FpdGluZ0Zvck1haW5G
cmFtZVJlc291cmNlVHJlZVBheWxvYWQpOworCisgICAgICAgIGxldCByZXNvdXJjZSA9IG51bGw7
CisKKyAgICAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIgJiYgdGFyZ2V0SWQpIHsKKyAgICAgICAg
ICAgIC8vIFRoaXMgaXMgYSBuZXcgcmVzb3VyY2UgZm9yIGEgU2VydmljZVdvcmtlciB0YXJnZXQu
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUg
PT09IFdJLkRlYnVnZ2FibGVUeXBlLlNlcnZpY2VXb3JrZXIpOworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGFyZ2V0SWQgPT09IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcik7CisgICAgICAg
ICAgICByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklk
ZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVx
dWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIGluaXRpYXRv
clNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7
CisgICAgICAgICAgICByZXNvdXJjZS50YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2UpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZyYW1l
ID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgaWYg
KGZyYW1lKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9yIGFuIGV4
aXN0aW5nIGZyYW1lLCB3aGljaCBtaWdodCBiZSB0aGUgbWFpbiByZXNvdXJjZSBvciBhIG5ldyBy
ZXNvdXJjZS4KKyAgICAgICAgICAgIGlmICh0eXBlID09PSAiRG9jdW1lbnQiICYmIGZyYW1lLm1h
aW5SZXNvdXJjZS51cmwgPT09IHVybCAmJiBmcmFtZS5sb2FkZXJJZGVudGlmaWVyID09PSBsb2Fk
ZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHJlc291cmNlID0gZnJhbWUubWFpblJlc291
cmNlOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gIkRvY3VtZW50IiAmJiBmcmFtZS5w
cm92aXNpb25hbE1haW5SZXNvdXJjZSAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZS51
cmwgPT09IHVybCAmJiBmcmFtZS5wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIgPT09IGxvYWRl
cklkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5wcm92aXNpb25h
bE1haW5SZXNvdXJjZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlc291
cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwg
dGFyZ2V0SWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVy
cywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9yU291cmNlQ29k
ZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKKyAgICAgICAg
ICAgICAgICBpZiAocmVzb3VyY2UudGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQorICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJlc291cmNlKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChyZXNvdXJjZS50YXJnZXQpCisgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlLnRhcmdldC5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRPcnBoYW5lZFJlc291cmNlKHJl
c291cmNlLCB0YXJnZXRJZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9yIGEgbmV3IGZyYW1lLCB3aGljaCBp
cyBhbHdheXMgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChX
SS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgIT09IFdJLkRlYnVnZ2FibGVUeXBlLlNlcnZpY2VX
b3JrZXIpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhcmdldElkKTsKKyAgICAgICAg
ICAgIHJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRl
bnRpZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1
ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9y
U291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsK
KyAgICAgICAgICAgIGZyYW1lID0gbmV3IFdJLkZyYW1lKGZyYW1lSWRlbnRpZmllciwgZnJhbWVO
YW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCByZXNvdXJjZSk7Cisg
ICAgICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAuc2V0KGZyYW1lLmlkLCBmcmFtZSk7
CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBtYWluIGZyYW1lLCBhc3N1bWUg
dGhpcyBpcyBpdC4gVGhpcyBjYW4gY2hhbmdlIGxhdGVyIGluCisgICAgICAgICAgICAvLyBmcmFt
ZURpZE5hdmlnYXRlIHdoZW4gdGhlIHBhcmVudCBmcmFtZSBpcyBrbm93bi4KKyAgICAgICAgICAg
IGlmICghdGhpcy5fbWFpbkZyYW1lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1l
ID0gZnJhbWU7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG51bGwp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEZyYW1lV2FzQWRk
ZWRFdmVudChmcmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNv
dXJjZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgIH0KKworICAgIF9hZGRSZXNv
dXJjZVRvRnJhbWUoZnJhbWUsIHJlc291cmNlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsKKyAgICAg
ICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOworCisgICAgICAgIGlmIChyZXNvdXJjZS5sb2Fk
ZXJJZGVudGlmaWVyICE9PSBmcmFtZS5sb2FkZXJJZGVudGlmaWVyICYmICFmcmFtZS5wcm92aXNp
b25hbExvYWRlcklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0
IG9mIGEgcHJvdmlzaW9uYWwgbG9hZCB3aGljaCBoYXBwZW5zIGJlZm9yZSBmcmFtZURpZE5hdmln
YXRlIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIC8vIFRoaXMgcmVzb3VyY2Ugd2lsbCBiZSB0aGUg
bmV3IG1haW5SZXNvdXJjZSBpZiBmcmFtZURpZE5hdmlnYXRlIGlzIGNhbGxlZC4KKyAgICAgICAg
ICAgIGZyYW1lLnN0YXJ0UHJvdmlzaW9uYWxMb2FkKHJlc291cmNlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoaXMgaXMganVzdCBhbm90aGVyIHJlc291
cmNlLCBlaXRoZXIgZm9yIHRoZSBtYWluIGxvYWRlciBvciB0aGUgcHJvdmlzaW9uYWwgbG9hZGVy
LgorICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyID09PSBm
cmFtZS5sb2FkZXJJZGVudGlmaWVyIHx8IHJlc291cmNlLmxvYWRlcklkZW50aWZpZXIgPT09IGZy
YW1lLnByb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcik7CisgICAgICAgIGZyYW1lLmFkZFJlc291
cmNlKHJlc291cmNlKTsKKyAgICB9CisKKyAgICBfYWRkUmVzb3VyY2VUb1RhcmdldCh0YXJnZXQs
IHJlc291cmNlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ICE9PSBXSS5w
YWdlVGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOworCisgICAgICAg
IHRhcmdldC5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfQorCisgICAgX2luaXRpYXRvclNv
dXJjZUNvZGVMb2NhdGlvbkZyb21QYXlsb2FkKGluaXRpYXRvclBheWxvYWQpCisgICAgeworICAg
ICAgICBpZiAoIWluaXRpYXRvclBheWxvYWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICB2YXIgdXJsID0gbnVsbDsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBOYU47Cisg
ICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOworCisgICAgICAgIGlmIChpbml0aWF0b3JQYXls
b2FkLnN0YWNrVHJhY2UgJiYgaW5pdGlhdG9yUGF5bG9hZC5zdGFja1RyYWNlLmxlbmd0aCkgewor
ICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2VQYXlsb2FkID0gaW5pdGlhdG9yUGF5bG9hZC5zdGFj
a1RyYWNlOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFja1RyYWNlUGF5bG9h
ZC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBjYWxsRnJhbWVQYXlsb2FkID0g
c3RhY2tUcmFjZVBheWxvYWRbaV07CisgICAgICAgICAgICAgICAgaWYgKCFjYWxsRnJhbWVQYXls
b2FkLnVybCB8fCBjYWxsRnJhbWVQYXlsb2FkLnVybCA9PT0gIltuYXRpdmUgY29kZV0iKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHVybCA9IGNhbGxG
cmFtZVBheWxvYWQudXJsOworCisgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMg
MS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgorICAgICAgICAgICAgICAgIGxpbmVOdW1i
ZXIgPSBjYWxsRnJhbWVQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOworCisgICAgICAgICAgICAgICAg
Y29sdW1uTnVtYmVyID0gY2FsbEZyYW1lUGF5bG9hZC5jb2x1bW5OdW1iZXI7CisKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpbml0aWF0
b3JQYXlsb2FkLnVybCkgeworICAgICAgICAgICAgdXJsID0gaW5pdGlhdG9yUGF5bG9hZC51cmw7
CisKKyAgICAgICAgICAgIC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBl
Y3QgMC1iYXNlZC4KKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBpbml0aWF0b3JQYXlsb2FkLmxp
bmVOdW1iZXIgLSAxOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF1cmwgfHwgaXNOYU4obGlu
ZU51bWJlcikgfHwgbGluZU51bWJlciA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwor
ICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJM
KHVybCk7CisgICAgICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgIHNvdXJjZUNvZGUg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTCh1cmwsIFdJLm1haW5UYXJnZXQpWzBd
OworCisgICAgICAgIGlmICghc291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
CisgICAgICAgIHJldHVybiBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIH0KKworICAgIF9wcm9jZXNzU2VydmljZVdvcmtl
ckNvbmZpZ3VyYXRpb24oZXJyb3IsIGluaXRpYWxpemF0aW9uUGF5bG9hZCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQ
YXlsb2FkKTsKKyAgICAgICAgdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBh
eWxvYWQgPSBmYWxzZTsKKworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluaXRpYWxpemF0aW9uUGF5bG9hZC50
YXJnZXRJZC5zdGFydHNXaXRoKCJzZXJ2aWNld29ya2VyOiIpKTsKKworICAgICAgICBXSS5tYWlu
VGFyZ2V0LmlkZW50aWZpZXIgPSBpbml0aWFsaXphdGlvblBheWxvYWQudGFyZ2V0SWQ7CisgICAg
ICAgIFdJLm1haW5UYXJnZXQubmFtZSA9IGluaXRpYWxpemF0aW9uUGF5bG9hZC51cmw7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIGEgbWFpbiByZXNvdXJjZSB3aXRoIHRoaXMgY29udGVudCBpbiBjYXNl
IHRoZSBjb250ZW50IG5ldmVyIHNob3dzIHVwIGFzIGEgV0kuU2NyaXB0LgorICAgICAgICBjb25z
dCB0eXBlID0gV0kuU2NyaXB0LlNvdXJjZVR5cGUuUHJvZ3JhbTsKKyAgICAgICAgbGV0IHNjcmlw
dCA9IG5ldyBXSS5Mb2NhbFNjcmlwdChXSS5tYWluVGFyZ2V0LCBpbml0aWFsaXphdGlvblBheWxv
YWQudXJsLCB0eXBlLCBpbml0aWFsaXphdGlvblBheWxvYWQuY29udGVudCk7CisgICAgICAgIFdJ
Lm1haW5UYXJnZXQubWFpblJlc291cmNlID0gc2NyaXB0OworCisgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcygoKSA9PiB7CisgICAgICAgICAgICBpZiAo
V0kubWFpblRhcmdldC5tYWluUmVzb3VyY2UgPT09IHNjcmlwdCkgeworICAgICAgICAgICAgICAg
IC8vIFdlJ3ZlIG5vdyByZWNlaXZlZCBhbGwgdGhlIHNjcmlwdHMsIGlmIHdlIGRvbid0IGhhdmUg
YSBiZXR0ZXIgbWFpbiByZXNvdXJjZSB1c2UgdGhpcyBMb2NhbFNjcmlwdC4KKyAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5tYWluVGFyZ2V0KS5hZGRT
Y3JpcHQoc2NyaXB0KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwg
e3NjcmlwdH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBfcHJv
Y2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQoZXJyb3IsIG1haW5GcmFtZVBheWxvYWQp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1l
UmVzb3VyY2VUcmVlUGF5bG9hZCk7CisgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVS
ZXNvdXJjZVRyZWVQYXlsb2FkID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChtYWluRnJhbWVQ
YXlsb2FkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobWFpbkZyYW1lUGF5bG9hZC5mcmFtZSk7
CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcCA9IG5ldyBNYXA7
CisgICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7CisKKyAgICAgICAg
dmFyIG9sZE1haW5GcmFtZSA9IHRoaXMuX21haW5GcmFtZTsKKworICAgICAgICB0aGlzLl9tYWlu
RnJhbWUgPSB0aGlzLl9hZGRGcmFtZVRyZWVGcm9tRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKG1h
aW5GcmFtZVBheWxvYWQsIHRydWUpOworCisgICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09
IG9sZE1haW5GcmFtZSkKKyAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShvbGRN
YWluRnJhbWUpOworICAgIH0KKworICAgIF9jcmVhdGVGcmFtZShwYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgLy8gSWYgcGF5bG9hZC51cmwgaXMgbWlzc2luZyBvciBlbXB0eSB0aGVuIHRoaXMgcGFn
ZSBpcyBsaWtlbHkgdGhlIHNwZWNpYWwgZW1wdHkgcGFnZS4gSW4gdGhhdCBjYXNlCisgICAgICAg
IC8vIHdlIHdpbGwganVzdCBzYXkgaXQgaXMgImFib3V0OmJsYW5rIiBzbyB3ZSBoYXZlIGEgVVJM
LCB3aGljaCBpcyByZXF1aXJlZCBmb3IgcmVzb3VyY2VzLgorICAgICAgICB2YXIgbWFpblJlc291
cmNlID0gbmV3IFdJLlJlc291cmNlKHBheWxvYWQudXJsIHx8ICJhYm91dDpibGFuayIsIHBheWxv
YWQubWltZVR5cGUsIG51bGwsIHBheWxvYWQubG9hZGVySWQpOworICAgICAgICB2YXIgZnJhbWUg
PSBuZXcgV0kuRnJhbWUocGF5bG9hZC5pZCwgcGF5bG9hZC5uYW1lLCBwYXlsb2FkLnNlY3VyaXR5
T3JpZ2luLCBwYXlsb2FkLmxvYWRlcklkLCBtYWluUmVzb3VyY2UpOworCisgICAgICAgIHRoaXMu
X2ZyYW1lSWRlbnRpZmllck1hcC5zZXQoZnJhbWUuaWQsIGZyYW1lKTsKKworICAgICAgICBtYWlu
UmVzb3VyY2UubWFya0FzRmluaXNoZWQoKTsKKworICAgICAgICByZXR1cm4gZnJhbWU7CisgICAg
fQorCisgICAgX2NyZWF0ZVJlc291cmNlKHBheWxvYWQsIGZyYW1lUGF5bG9hZCkKKyAgICB7Cisg
ICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZShwYXlsb2FkLnVybCwgcGF5bG9h
ZC5taW1lVHlwZSwgcGF5bG9hZC50eXBlLCBmcmFtZVBheWxvYWQubG9hZGVySWQsIHBheWxvYWQu
dGFyZ2V0SWQpOworCisgICAgICAgIGlmIChwYXlsb2FkLnNvdXJjZU1hcFVSTCkKKyAgICAgICAg
ICAgIFdJLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAocGF5bG9hZC5zb3VyY2VN
YXBVUkwsIHJlc291cmNlLnVybCwgcmVzb3VyY2UpOworCisgICAgICAgIHJldHVybiByZXNvdXJj
ZTsKKyAgICB9CisKKyAgICBfYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVlUGF5bG9h
ZChwYXlsb2FkLCBpc01haW5GcmFtZSkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZSA9IHRoaXMu
X2NyZWF0ZUZyYW1lKHBheWxvYWQuZnJhbWUpOworICAgICAgICBpZiAoaXNNYWluRnJhbWUpCisg
ICAgICAgICAgICBmcmFtZS5tYXJrQXNNYWluRnJhbWUoKTsKKworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgcGF5bG9hZC5jaGlsZEZyYW1lcyAmJiBpIDwgcGF5bG9hZC5jaGlsZEZyYW1lcy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIGZyYW1lLmFkZENoaWxkRnJhbWUodGhpcy5fYWRkRnJhbWVU
cmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZChwYXlsb2FkLmNoaWxkRnJhbWVzW2ldLCBm
YWxzZSkpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBwYXlsb2FkLnJlc291cmNlcyAmJiBp
IDwgcGF5bG9hZC5yZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZXNv
dXJjZVBheWxvYWQgPSBwYXlsb2FkLnJlc291cmNlc1tpXTsKKworICAgICAgICAgICAgLy8gVGhl
IG1haW4gcmVzb3VyY2UgaXMgaW5jbHVkZWQgYXMgYSByZXNvdXJjZS4gV2UgY2FuIHNraXAgaXQg
c2luY2Ugd2UgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICAvLyBhIG1haW4gcmVzb3VyY2Ug
d2hlbiB3ZSBjcmVhdGVkIHRoZSBGcmFtZS4gVGhlIHJlc291cmNlIHBheWxvYWQgZG9lcyBub3Qg
aW5jbHVkZSBhbnl0aGluZworICAgICAgICAgICAgLy8gZGlkbid0IGFscmVhZHkgZ2V0IGZyb20g
dGhlIGZyYW1lIHBheWxvYWQuCisgICAgICAgICAgICBpZiAocmVzb3VyY2VQYXlsb2FkLnR5cGUg
PT09ICJEb2N1bWVudCIgJiYgcmVzb3VyY2VQYXlsb2FkLnVybCA9PT0gcGF5bG9hZC5mcmFtZS51
cmwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKHJlc291cmNlUGF5bG9hZCwgcGF5bG9hZCk7CisgICAg
ICAgICAgICBpZiAocmVzb3VyY2UudGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQorICAgICAgICAg
ICAgICAgIGZyYW1lLmFkZFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlc291cmNlLnRhcmdldCkKKyAgICAgICAgICAgICAgICByZXNvdXJjZS50YXJnZXQuYWRkUmVz
b3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMu
X2FkZE9ycGhhbmVkUmVzb3VyY2UocmVzb3VyY2UsIHJlc291cmNlUGF5bG9hZC50YXJnZXRJZCk7
CisKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZVBheWxvYWQuZmFpbGVkIHx8IHJlc291cmNlUGF5
bG9hZC5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5tYXJrQXNGYWlsZWQocmVz
b3VyY2VQYXlsb2FkLmNhbmNlbGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZCgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
ZGlzcGF0Y2hGcmFtZVdhc0FkZGVkRXZlbnQoZnJhbWUpOworCisgICAgICAgIHJldHVybiBmcmFt
ZTsKKyAgICB9CisKKyAgICBfYWRkT3JwaGFuZWRSZXNvdXJjZShyZXNvdXJjZSwgdGFyZ2V0SWQp
CisgICAgeworICAgICAgICBsZXQgcmVzb3VyY2VzID0gdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMu
Z2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXMpIHsKKyAgICAgICAgICAgIHJl
c291cmNlcyA9IFtdOworICAgICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMuc2V0KHRh
cmdldElkLCByZXNvdXJjZXMpOworICAgICAgICB9CisKKyAgICAgICAgcmVzb3VyY2VzLnB1c2go
cmVzb3VyY2UpOworICAgIH0KKworICAgIF9kaXNwYXRjaEZyYW1lV2FzQWRkZWRFdmVudChmcmFt
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHtmcmFtZX0pOworICAgIH0KKworICAgIF9t
YWluRnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG9sZE1h
aW5GcmFtZSkKKyAgICAgICAgICAgIG9sZE1haW5GcmFtZS51bm1hcmtBc01haW5GcmFtZSgpOwor
ICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lKQorICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1l
Lm1hcmtBc01haW5GcmFtZSgpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwge29sZE1haW5G
cmFtZX0pOworICAgIH0KKworICAgIF9leHRyYURvbWFpbnNBY3RpdmF0ZWQoZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb21haW5zLmluY2x1ZGVzKCJQYWdlIikgJiYgd2lu
ZG93LlBhZ2VBZ2VudCkKKyAgICAgICAgICAgIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUodGhp
cy5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQuYmluZCh0aGlzKSk7CisgICAg
fQorfTsKKworV0kuTmV0d29ya01hbmFnZXIuRXZlbnQgPSB7CisgICAgRnJhbWVXYXNBZGRlZDog
Im5ldHdvcmstbWFuYWdlci1mcmFtZS13YXMtYWRkZWQiLAorICAgIEZyYW1lV2FzUmVtb3ZlZDog
Im5ldHdvcmstbWFuYWdlci1mcmFtZS13YXMtcmVtb3ZlZCIsCisgICAgTWFpbkZyYW1lRGlkQ2hh
bmdlOiAibmV0d29yay1tYW5hZ2VyLW1haW4tZnJhbWUtZGlkLWNoYW5nZSIsCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU291
cmNlTWFwTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1NvdXJjZU1hcE1hbmFnZXIuanMKaW5kZXggNzMyMzUyNzgyNjczMWVjMWU2OTlk
ZmIxMzYxOWYyOWE1NzY5OWE5NS4uZjU5NGZmZTgyYWUwMWMxZTAxMzQ1Njc3YjJmM2Q3OTZjMjM1
MzlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzCkBAIC00Niw4ICs0
Niw4IEBAIFdJLlNvdXJjZU1hcE1hbmFnZXIgPSBjbGFzcyBTb3VyY2VNYXBNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBUaGUgYmFzZVVSTCBjb3VsZCBoYXZlIGNv
bWUgZnJvbSBhICIvLyMgc291cmNlVVJMIi4gQXR0ZW1wdCB0byBnZXQgYQogICAgICAgICAvLyBy
ZWFzb25hYmxlIGFic29sdXRlIFVSTCBmb3IgdGhlIGJhc2UgYnkgdXNpbmcgdGhlIG1haW4gcmVz
b3VyY2UncyBVUkwuCi0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUpCi0gICAgICAgICAgICBiYXNlVVJMID0gYWJzb2x1dGVVUkwoYmFzZVVSTCwgV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnVybCk7CisgICAgICAgIGlmIChXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUpCisgICAgICAgICAgICBiYXNlVVJMID0gYWJzb2x1dGVVUkwoYmFzZVVS
TCwgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybCk7CiAKICAgICAgICAgaWYgKHNvdXJj
ZU1hcFVSTC5zdGFydHNXaXRoKCJkYXRhOiIpKSB7CiAgICAgICAgICAgICB0aGlzLl9sb2FkQW5k
UGFyc2VTb3VyY2VNYXAoc291cmNlTWFwVVJMLCBiYXNlVVJMLCBvcmlnaW5hbFNvdXJjZUNvZGUp
OwpAQCAtNzUsNyArNzUsNyBAQCBXSS5Tb3VyY2VNYXBNYW5hZ2VyID0gY2xhc3MgU291cmNlTWFw
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5fbG9hZEFuZFBhcnNl
U291cmNlTWFwKHNvdXJjZU1hcFVSTCwgYmFzZVVSTCwgb3JpZ2luYWxTb3VyY2VDb2RlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
KSB7CisgICAgICAgIGlmICghV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lKSB7CiAgICAgICAg
ICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgbWFpbiBmcmFtZSwgdGhlbiB3ZSBhcmUgbGlrZWx5
IGluIHRoZSBtaWRkbGUgb2YgYnVpbGRpbmcgdGhlIHJlc291cmNlIHRyZWUuCiAgICAgICAgICAg
ICAvLyBEZWxheWluZyB1bnRpbCB0aGUgbmV4dCBydW5sb29wIGlzIGVub3VnaCBpbiB0aGlzIGNh
c2UgdG8gdGhlbiBzdGFydCBsb2FkaW5nIHRoZSBzb3VyY2UgbWFwLgogICAgICAgICAgICAgc2V0
VGltZW91dChsb2FkQW5kUGFyc2VTb3VyY2VNYXAuYmluZCh0aGlzKSwgMCk7CkBAIC0xMzUsNyAr
MTM1LDcgQEAgV0kuU291cmNlTWFwTWFuYWdlciA9IGNsYXNzIFNvdXJjZU1hcE1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGZyYW1lSWRlbnRpZmllciA9IG9yaWdpbmFsU291
cmNlQ29kZS5wYXJlbnRGcmFtZS5pZDsKIAogICAgICAgICBpZiAoIWZyYW1lSWRlbnRpZmllcikK
LSAgICAgICAgICAgIGZyYW1lSWRlbnRpZmllciA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1h
aW5GcmFtZSA/IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCA6ICIiOworICAg
ICAgICAgICAgZnJhbWVJZGVudGlmaWVyID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lID8g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkIDogIiI7CiAKICAgICAgICAgTmV0d29ya0Fn
ZW50LmxvYWRSZXNvdXJjZShmcmFtZUlkZW50aWZpZXIsIHNvdXJjZU1hcFVSTCwgc291cmNlTWFw
TG9hZGVkLmJpbmQodGhpcykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTY4Y2I1ZDAxNDI5YmZmYjE3NjJl
MzIxMGE3NjNmMmMzOTM1YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
U3RvcmFnZU1hbmFnZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotV0kuU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBTdG9yYWdlTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAotewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHN1
cGVyKCk7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy5ET01TdG9yYWdlQWdlbnQpCi0gICAgICAgICAg
ICBET01TdG9yYWdlQWdlbnQuZW5hYmxlKCk7Ci0gICAgICAgIGlmICh3aW5kb3cuRGF0YWJhc2VB
Z2VudCkKLSAgICAgICAgICAgIERhdGFiYXNlQWdlbnQuZW5hYmxlKCk7Ci0gICAgICAgIGlmICh3
aW5kb3cuSW5kZXhlZERCQWdlbnQpCi0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5lbmFibGUo
KTsKLQotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsK
LSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5TZWN1cml0
eU9yaWdpbkRpZENoYW5nZSwgdGhpcy5fc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMpOwot
Ci0gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0g
ICAgaW5pdGlhbGl6ZSgpCi0gICAgewotICAgICAgICB0aGlzLl9kb21TdG9yYWdlT2JqZWN0cyA9
IFtdOwotICAgICAgICB0aGlzLl9kYXRhYmFzZU9iamVjdHMgPSBbXTsKLSAgICAgICAgdGhpcy5f
aW5kZXhlZERhdGFiYXNlcyA9IFtdOwotICAgICAgICB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0
cyA9IHt9OwotICAgIH0KLQotICAgIGdldCBkb21TdG9yYWdlT2JqZWN0cygpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZG9tU3RvcmFnZU9iamVjdHM7Ci0gICAgfQotCi0gICAgZ2V0IGRh
dGFiYXNlcygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VPYmplY3RzOwot
ICAgIH0KLQotICAgIGdldCBpbmRleGVkRGF0YWJhc2VzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9pbmRleGVkRGF0YWJhc2VzOwotICAgIH0KLQotICAgIGdldCBjb29raWVTdG9yYWdl
T2JqZWN0cygpCi0gICAgewotICAgICAgICB2YXIgY29va2llU3RvcmFnZU9iamVjdHMgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgaG9zdCBpbiB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0cykKLSAg
ICAgICAgICAgIGNvb2tpZVN0b3JhZ2VPYmplY3RzLnB1c2godGhpcy5fY29va2llU3RvcmFnZU9i
amVjdHNbaG9zdF0pOwotICAgICAgICByZXR1cm4gY29va2llU3RvcmFnZU9iamVjdHM7Ci0gICAg
fQotCi0gICAgZG9tU3RvcmFnZVdhc0FkZGVkKGlkLCBob3N0LCBpc0xvY2FsU3RvcmFnZSkKLSAg
ICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdJLkRPTVN0b3JhZ2VPYmplY3QoaWQs
IGhvc3QsIGlzTG9jYWxTdG9yYWdlKTsKLQotICAgICAgICB0aGlzLl9kb21TdG9yYWdlT2JqZWN0
cy5wdXNoKGRvbVN0b3JhZ2UpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHtkb21T
dG9yYWdlfSk7Ci0gICAgfQotCi0gICAgZGF0YWJhc2VXYXNBZGRlZChpZCwgaG9zdCwgbmFtZSwg
dmVyc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBkYXRhYmFzZSA9IG5ldyBXSS5EYXRhYmFzZU9i
amVjdChpZCwgaG9zdCwgbmFtZSwgdmVyc2lvbik7Ci0KLSAgICAgICAgdGhpcy5fZGF0YWJhc2VP
YmplY3RzLnB1c2goZGF0YWJhc2UpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0FkZGVkLCB7ZGF0YWJhc2V9
KTsKLSAgICB9Ci0KLSAgICBpdGVtc0NsZWFyZWQoc3RvcmFnZUlkKQotICAgIHsKLSAgICAgICAg
bGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQp
OwotICAgICAgICBpZiAoZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbXND
bGVhcmVkKHN0b3JhZ2VJZCk7Ci0gICAgfQotCi0gICAgaXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBr
ZXkpCi0gICAgewotICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJ
ZGVudGlmaWVyKHN0b3JhZ2VJZCk7Ci0gICAgICAgIGlmIChkb21TdG9yYWdlKQotICAgICAgICAg
ICAgZG9tU3RvcmFnZS5pdGVtUmVtb3ZlZChrZXkpOwotICAgIH0KLQotICAgIGl0ZW1BZGRlZChz
dG9yYWdlSWQsIGtleSwgdmFsdWUpCi0gICAgewotICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRo
aXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHN0b3JhZ2VJZCk7Ci0gICAgICAgIGlmIChkb21T
dG9yYWdlKQotICAgICAgICAgICAgZG9tU3RvcmFnZS5pdGVtQWRkZWQoa2V5LCB2YWx1ZSk7Ci0g
ICAgfQotCi0gICAgaXRlbVVwZGF0ZWQoc3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIGxldCBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50
aWZpZXIoc3RvcmFnZUlkKTsKLSAgICAgICAgaWYgKGRvbVN0b3JhZ2UpCi0gICAgICAgICAgICBk
b21TdG9yYWdlLml0ZW1VcGRhdGVkKGtleSwgb2xkVmFsdWUsIHZhbHVlKTsKLSAgICB9Ci0KLSAg
ICBpbnNwZWN0RGF0YWJhc2UoaWQpCi0gICAgewotICAgICAgICB2YXIgZGF0YWJhc2UgPSB0aGlz
Ll9kYXRhYmFzZUZvcklkZW50aWZpZXIoaWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChkYXRh
YmFzZSk7Ci0gICAgICAgIGlmICghZGF0YWJhc2UpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50
LkRhdGFiYXNlV2FzSW5zcGVjdGVkLCB7ZGF0YWJhc2V9KTsKLSAgICB9Ci0KLSAgICBpbnNwZWN0
RE9NU3RvcmFnZShpZCkKLSAgICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gdGhpcy5fZG9t
U3RvcmFnZUZvcklkZW50aWZpZXIoaWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChkb21TdG9y
YWdlKTsKLSAgICAgICAgaWYgKCFkb21TdG9yYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5TdG9yYWdlTWFuYWdlci5FdmVu
dC5ET01TdG9yYWdlT2JqZWN0V2FzSW5zcGVjdGVkLCB7ZG9tU3RvcmFnZX0pOwotICAgIH0KLQot
ICAgIHJlcXVlc3RJbmRleGVkRGF0YWJhc2VEYXRhKG9iamVjdFN0b3JlLCBvYmplY3RTdG9yZUlu
ZGV4LCBzdGFydEVudHJ5SW5kZXgsIG1heGltdW1FbnRyeUNvdW50LCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5JbmRleGVkREJBZ2VudCk7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KG9iamVjdFN0b3JlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY2Fs
bGJhY2spOwotCi0gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGVycm9yLCBlbnRyeVBheWxv
YWRzLCBtb3JlQXZhaWxhYmxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOwot
Ci0gICAgICAgICAgICBmb3IgKHZhciBlbnRyeVBheWxvYWQgb2YgZW50cnlQYXlsb2Fkcykgewot
ICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHt9OwotICAgICAgICAgICAgICAgIGVudHJ5LnBy
aW1hcnlLZXkgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZW50cnlQYXlsb2FkLnByaW1h
cnlLZXkpOwotICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFdJLlJlbW90ZU9iamVjdC5mcm9t
UGF5bG9hZChlbnRyeVBheWxvYWQua2V5KTsKLSAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9
IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChlbnRyeVBheWxvYWQudmFsdWUpOwotICAgICAg
ICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJpZXMsIG1vcmVBdmFpbGFibGUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIHJlcXVlc3RBcmd1bWVudHMgPSB7Ci0gICAgICAgICAgICBzZWN1cml0eU9yaWdpbjog
b2JqZWN0U3RvcmUucGFyZW50RGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4sCi0gICAgICAgICAgICBk
YXRhYmFzZU5hbWU6IG9iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLm5hbWUsCi0gICAgICAgICAg
ICBvYmplY3RTdG9yZU5hbWU6IG9iamVjdFN0b3JlLm5hbWUsCi0gICAgICAgICAgICBpbmRleE5h
bWU6IG9iamVjdFN0b3JlSW5kZXggJiYgb2JqZWN0U3RvcmVJbmRleC5uYW1lIHx8ICIiLAotICAg
ICAgICAgICAgc2tpcENvdW50OiBzdGFydEVudHJ5SW5kZXggfHwgMCwKLSAgICAgICAgICAgIHBh
Z2VTaXplOiBtYXhpbXVtRW50cnlDb3VudCB8fCAxMDAKLSAgICAgICAgfTsKLQotICAgICAgICBJ
bmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YS5pbnZva2UocmVxdWVzdEFyZ3VtZW50cywgcHJvY2Vz
c0RhdGEpOwotICAgIH0KLQotICAgIGNsZWFyT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCi0gICAg
ewotICAgICAgICBsZXQgc2VjdXJpdHlPcmlnaW4gPSBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFz
ZS5zZWN1cml0eU9yaWdpbjsKLSAgICAgICAgbGV0IGRhdGFiYXNlTmFtZSA9IG9iamVjdFN0b3Jl
LnBhcmVudERhdGFiYXNlLm5hbWU7Ci0gICAgICAgIGxldCBvYmplY3RTdG9yZU5hbWUgPSBvYmpl
Y3RTdG9yZS5uYW1lOwotCi0gICAgICAgIEluZGV4ZWREQkFnZW50LmNsZWFyT2JqZWN0U3RvcmUo
c2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lKTsKLSAgICB9Ci0K
LSAgICAvLyBQcml2YXRlCi0KLSAgICBfZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoaWQpCi0gICAg
ewotICAgICAgICBmb3IgKHZhciBzdG9yYWdlT2JqZWN0IG9mIHRoaXMuX2RvbVN0b3JhZ2VPYmpl
Y3RzKSB7Ci0gICAgICAgICAgICAvLyBUaGUgaWQgaXMgYW4gb2JqZWN0LCBzbyB3ZSBuZWVkIHRv
IGNvbXBhcmUgdGhlIHByb3BlcnRpZXMgdXNpbmcgT2JqZWN0LnNoYWxsb3dFcXVhbC4KLSAgICAg
ICAgICAgIGlmIChPYmplY3Quc2hhbGxvd0VxdWFsKHN0b3JhZ2VPYmplY3QuaWQsIGlkKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RvcmFnZU9iamVjdDsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBudWxsOwotICAgIH0KLQotICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQp
Ci0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBX
SS5GcmFtZSk7Ci0KLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0g
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3
YW50IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRp
bmcgdG8gYSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuQ2xlYXJlZCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2FkZERPTVN0b3JhZ2VJZk5lZWRlZChl
dmVudC50YXJnZXQpOwotICAgICAgICAgICAgdGhpcy5fYWRkSW5kZXhlZERCRGF0YWJhc2VzSWZO
ZWVkZWQoZXZlbnQudGFyZ2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFkZCB0aGUgaG9z
dCBvZiB0aGUgZnJhbWUgdGhhdCBjaGFuZ2VkIHRoZSBtYWluIHJlc291cmNlIHRvIHRoZSBsaXN0
IG9mIGhvc3RzIHRoZXJlIGNvdWxkIGJlIGNvb2tpZXMgZm9yLgotICAgICAgICB2YXIgaG9zdCA9
IHBhcnNlVVJMKGV2ZW50LnRhcmdldC51cmwpLmhvc3Q7Ci0gICAgICAgIGlmICghaG9zdCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5fY29va2llU3RvcmFnZU9iamVj
dHNbaG9zdF0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY29va2llU3Rv
cmFnZU9iamVjdHNbaG9zdF0gPSBuZXcgV0kuQ29va2llU3RvcmFnZU9iamVjdChob3N0KTsKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7Y29va2llU3RvcmFnZTogdGhpcy5fY29v
a2llU3RvcmFnZU9iamVjdHNbaG9zdF19KTsKLSAgICB9Ci0KLSAgICBfYWRkRE9NU3RvcmFnZUlm
TmVlZGVkKGZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFnZUFnZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIERvbid0IHNob3cgc3RvcmFnZSBp
ZiB3ZSBkb24ndCBoYXZlIGEgc2VjdXJpdHkgb3JpZ2luIChhYm91dDpibGFuaykuCi0gICAgICAg
IGlmICghZnJhbWUuc2VjdXJpdHlPcmlnaW4gfHwgZnJhbWUuc2VjdXJpdHlPcmlnaW4gPT09ICI6
Ly8iKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBw
YXNzaW5nIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3JpZ2luIGFsb25nIHRvIGRvbVN0b3JhZ2VX
YXNBZGRlZC4KLQotICAgICAgICB2YXIgbG9jYWxTdG9yYWdlSWRlbnRpZmllciA9IHtzZWN1cml0
eU9yaWdpbjogZnJhbWUuc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiB0cnVlfTsKLSAg
ICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihsb2NhbFN0b3JhZ2VJZGVu
dGlmaWVyKSkKLSAgICAgICAgICAgIHRoaXMuZG9tU3RvcmFnZVdhc0FkZGVkKGxvY2FsU3RvcmFn
ZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3QsIHRydWUp
OwotCi0gICAgICAgIHZhciBzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmln
aW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogZmFsc2V9OwotICAgICAg
ICBpZiAoIXRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHNlc3Npb25TdG9yYWdlSWRlbnRp
ZmllcikpCi0gICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChzZXNzaW9uU3RvcmFn
ZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3QsIGZhbHNl
KTsKLSAgICB9Ci0KLSAgICBfYWRkSW5kZXhlZERCRGF0YWJhc2VzSWZOZWVkZWQoZnJhbWUpCi0g
ICAgewotICAgICAgICBpZiAoIXdpbmRvdy5JbmRleGVkREJBZ2VudCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBmcmFtZS5zZWN1cml0eU9yaWdp
bjsKLQotICAgICAgICAvLyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNl
Y3VyaXR5IG9yaWdpbiAoYWJvdXQ6YmxhbmspLgotICAgICAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
IHx8IHNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBmdW5jdGlvbiBwcm9jZXNzRGF0YWJhc2VOYW1lcyhlcnJvciwgbmFtZXMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZXMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBmb3IgKHZhciBuYW1lIG9mIG5hbWVzKQotICAgICAgICAgICAg
ICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShzZWN1cml0eU9yaWdpbiwgbmFtZSwg
cHJvY2Vzc0RhdGFiYXNlLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gcHJvY2Vzc0RhdGFiYXNlKGVycm9yLCBkYXRhYmFzZVBheWxvYWQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChlcnJvciB8fCAhZGF0YWJhc2VQYXlsb2FkKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgdmFyIG9iamVjdFN0b3JlcyA9IGRhdGFiYXNlUGF5bG9h
ZC5vYmplY3RTdG9yZXMubWFwKHByb2Nlc3NPYmplY3RTdG9yZSk7Ci0gICAgICAgICAgICB2YXIg
aW5kZXhlZERhdGFiYXNlID0gbmV3IFdJLkluZGV4ZWREYXRhYmFzZShkYXRhYmFzZVBheWxvYWQu
bmFtZSwgc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlUGF5bG9hZC52ZXJzaW9uLCBvYmplY3RTdG9y
ZXMpOwotCi0gICAgICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VzLnB1c2goaW5kZXhlZERh
dGFiYXNlKTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlN0
b3JhZ2VNYW5hZ2VyLkV2ZW50LkluZGV4ZWREYXRhYmFzZVdhc0FkZGVkLCB7aW5kZXhlZERhdGFi
YXNlfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBwcm9jZXNzS2V5UGF0aChrZXlQ
YXRoUGF5bG9hZCkKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChrZXlQYXRoUGF5bG9h
ZC50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEluZGV4ZWREQkFnZW50LktleVBhdGhUeXBlLk51
bGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICBjYXNlIEluZGV4
ZWREQkFnZW50LktleVBhdGhUeXBlLlN0cmluZzoKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5
UGF0aFBheWxvYWQuc3RyaW5nOwotICAgICAgICAgICAgY2FzZSBJbmRleGVkREJBZ2VudC5LZXlQ
YXRoVHlwZS5BcnJheToKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5UGF0aFBheWxvYWQuYXJy
YXk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IlVua25vd24gS2V5UGF0aCB0eXBlOiIsIGtleVBhdGhQYXlsb2FkLnR5cGUpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc09iamVjdFN0b3JlKG9iamVjdFN0b3JlUGF5bG9hZCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdmFyIGtleVBhdGggPSBwcm9jZXNzS2V5UGF0aChvYmplY3RTdG9yZVBh
eWxvYWQua2V5UGF0aCk7Ci0gICAgICAgICAgICB2YXIgaW5kZXhlcyA9IG9iamVjdFN0b3JlUGF5
bG9hZC5pbmRleGVzLm1hcChwcm9jZXNzT2JqZWN0U3RvcmVJbmRleCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlUGF5bG9h
ZC5uYW1lLCBrZXlQYXRoLCBvYmplY3RTdG9yZVBheWxvYWQuYXV0b0luY3JlbWVudCwgaW5kZXhl
cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBwcm9jZXNzT2JqZWN0U3RvcmVJbmRl
eChvYmplY3RTdG9yZUluZGV4UGF5bG9hZCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGtl
eVBhdGggPSBwcm9jZXNzS2V5UGF0aChvYmplY3RTdG9yZUluZGV4UGF5bG9hZC5rZXlQYXRoKTsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eChvYmplY3RTdG9yZUluZGV4UGF5bG9hZC5uYW1lLCBrZXlQYXRoLCBvYmplY3RTdG9yZUluZGV4
UGF5bG9hZC51bmlxdWUsIG9iamVjdFN0b3JlSW5kZXhQYXlsb2FkLm11bHRpRW50cnkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2Vj
dXJpdHlPcmlnaW4sIHByb2Nlc3NEYXRhYmFzZU5hbWVzLmJpbmQodGhpcykpOwotICAgIH0KLQot
ICAgIF9zZWN1cml0eU9yaWdpbkRpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKLQotICAgICAgICB0
aGlzLl9hZGRET01TdG9yYWdlSWZOZWVkZWQoZXZlbnQudGFyZ2V0KTsKLSAgICAgICAgdGhpcy5f
YWRkSW5kZXhlZERCRGF0YWJhc2VzSWZOZWVkZWQoZXZlbnQudGFyZ2V0KTsKLSAgICB9Ci0KLSAg
ICBfZGF0YWJhc2VGb3JJZGVudGlmaWVyKGlkKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9kYXRhYmFzZU9iamVjdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGlmICh0aGlzLl9kYXRhYmFzZU9iamVjdHNbaV0uaWQgPT09IGlkKQotICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9kYXRhYmFzZU9iamVjdHNbaV07Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gbnVsbDsKLSAgICB9Ci19OwotCi1XSS5TdG9yYWdlTWFuYWdlci5FdmVudCA9IHsKLSAg
ICBDb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQ6ICJzdG9yYWdlLW1hbmFnZXItY29va2llLXN0
b3JhZ2Utb2JqZWN0LXdhcy1hZGRlZCIsCi0gICAgRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkOiAi
c3RvcmFnZS1tYW5hZ2VyLWRvbS1zdG9yYWdlLW9iamVjdC13YXMtYWRkZWQiLAotICAgIERPTVN0
b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQ6ICJzdG9yYWdlLWRvbS1vYmplY3Qtd2FzLWluc3BlY3Rl
ZCIsCi0gICAgRGF0YWJhc2VXYXNBZGRlZDogInN0b3JhZ2UtbWFuYWdlci1kYXRhYmFzZS13YXMt
YWRkZWQiLAotICAgIERhdGFiYXNlV2FzSW5zcGVjdGVkOiAic3RvcmFnZS1vYmplY3Qtd2FzLWlu
c3BlY3RlZCIsCi0gICAgSW5kZXhlZERhdGFiYXNlV2FzQWRkZWQ6ICJzdG9yYWdlLW1hbmFnZXIt
aW5kZXhlZC1kYXRhYmFzZS13YXMtYWRkZWQiLAotICAgIENsZWFyZWQ6ICJzdG9yYWdlLW1hbmFn
ZXItY2xlYXJlZCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXgg
MjViOThmMzNjNmIwMDZiNjBhYzNjNmU3ZTBkOGFiNDUzZWFkY2RmZi4uOGUzNWZiZDUyODMwZGI4
Njg1YzMzNDViMThiNjZmNTkzZGEwN2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFu
YWdlci5qcwpAQCAtMzc3LDExICszNzcsMTEgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3Mg
VGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIC8vIENhbGxlZCBmcm9t
IFdJLlBhZ2VPYnNlcnZlci4KIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3RpdmVS
ZWNvcmRpbmcpOwotICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUuZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXApKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoaXNOYU4oV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmRvbUNv
bnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wKSk7CiAKICAgICAgICAgbGV0IGNvbXB1dGVkVGltZXN0
YW1wID0gdGhpcy5hY3RpdmVSZWNvcmRpbmcuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7
CiAKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1hcmtET01Db250
ZW50UmVhZHlFdmVudChjb21wdXRlZFRpbWVzdGFtcCk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZS5tYXJrRE9NQ29udGVudFJlYWR5RXZlbnQoY29tcHV0ZWRUaW1lc3RhbXAp
OwogCiAgICAgICAgIGxldCBldmVudE1hcmtlciA9IG5ldyBXSS5UaW1lbGluZU1hcmtlcihjb21w
dXRlZFRpbWVzdGFtcCwgV0kuVGltZWxpbmVNYXJrZXIuVHlwZS5ET01Db250ZW50RXZlbnQpOwog
ICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcuYWRkRXZlbnRNYXJrZXIoZXZlbnRNYXJrZXIp
OwpAQCAtMzkyLDExICszOTIsMTEgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxp
bmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlBh
Z2VPYnNlcnZlci4KIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hY3RpdmVSZWNvcmRp
bmcpOwotICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihXSS5mcmFtZVJlc291cmNlTWFuYWdl
ci5tYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wKSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGlzTmFOKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXApKTsK
IAogICAgICAgICBsZXQgY29tcHV0ZWRUaW1lc3RhbXAgPSB0aGlzLmFjdGl2ZVJlY29yZGluZy5j
b21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKIAotICAgICAgICBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUubWFya0xvYWRFdmVudChjb21wdXRlZFRpbWVzdGFtcCk7CisgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYXJrTG9hZEV2ZW50KGNvbXB1dGVkVGlt
ZXN0YW1wKTsKIAogICAgICAgICBsZXQgZXZlbnRNYXJrZXIgPSBuZXcgV0kuVGltZWxpbmVNYXJr
ZXIoY29tcHV0ZWRUaW1lc3RhbXAsIFdJLlRpbWVsaW5lTWFya2VyLlR5cGUuTG9hZEV2ZW50KTsK
ICAgICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmFkZEV2ZW50TWFya2VyKGV2ZW50TWFya2Vy
KTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGlu
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQu
RXZlbnRUeXBlLkV2YWx1YXRlU2NyaXB0OgogICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9j
YXRpb24pIHsKLSAgICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICAgICAgICAgIHZhciBtYWluRnJhbWUgPSBXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAgICAgICAgICAgICAgdmFyIHNjcmlwdFJlc291
cmNlID0gbWFpbkZyYW1lLnVybCA9PT0gcmVjb3JkUGF5bG9hZC5kYXRhLnVybCA/IG1haW5GcmFt
ZS5tYWluUmVzb3VyY2UgOiBtYWluRnJhbWUucmVzb3VyY2VGb3JVUkwocmVjb3JkUGF5bG9hZC5k
YXRhLnVybCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdFJlc291cmNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBl
eHBlY3QgMC1iYXNlZC4KQEAgLTU1Miw3ICs1NTIsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBj
bGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pIHsKLSAgICAgICAgICAgICAgICB2
YXIgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAg
ICAgICAgICAgIHZhciBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAg
ICAgICAgICAgICAgICAgdmFyIHNjcmlwdFJlc291cmNlID0gbWFpbkZyYW1lLnVybCA9PT0gcmVj
b3JkUGF5bG9hZC5kYXRhLnNjcmlwdE5hbWUgPyBtYWluRnJhbWUubWFpblJlc291cmNlIDogbWFp
bkZyYW1lLnJlc291cmNlRm9yVVJMKHJlY29yZFBheWxvYWQuZGF0YS5zY3JpcHROYW1lLCB0cnVl
KTsKICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2UpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIGxpbmVOdW1iZXIgaXMgMS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2Vk
LgpAQCAtNzAxLDcgKzcwMSw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5l
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcu
YWRkUmVjb3JkKHJlY29yZCk7CiAKICAgICAgICAgLy8gT25seSB3b3JyeSBhYm91dCBkZWFkIHRp
bWUgYWZ0ZXIgdGhlIGxvYWQgZXZlbnQuCi0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUgJiYgaXNOYU4oV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
LmxvYWRFdmVudFRpbWVzdGFtcCkpCisgICAgICAgIGlmIChXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWUgJiYgaXNOYU4oV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmxvYWRFdmVudFRpbWVz
dGFtcCkpCiAgICAgICAgICAgICB0aGlzLl9yZXNldEF1dG9SZWNvcmRpbmdEZWFkVGltZVRpbWVv
dXQoKTsKICAgICB9CiAKQEAgLTgyMiw3ICs4MjIsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBj
bGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAvLyBJZ25v
cmUgcmVzb3VyY2UgZXZlbnRzIHdoZW4gdGhlcmUgaXNuJ3QgYSBtYWluIGZyYW1lIHlldC4gVGhv
c2UgZXZlbnRzIGFyZSB0cmlnZ2VyZWQgYnkKICAgICAgICAgLy8gbG9hZGluZyB0aGUgY2FjaGVk
IHJlc291cmNlcyB3aGVuIHRoZSBpbnNwZWN0b3Igb3BlbnMsIGFuZCB0aGV5IGRvIG5vdCBoYXZl
IHRpbWluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgaWYgKCFXSS5mcmFtZVJlc291cmNlTWFuYWdl
ci5tYWluRnJhbWUpCisgICAgICAgIGlmICghV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0QXV0b0NhcHR1
cmluZ0ZvckZyYW1lKGZyYW1lKSkKQEAgLTg0NSw3ICs4NDUsNyBAQCBXSS5UaW1lbGluZU1hbmFn
ZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAv
LyBJZ25vcmUgcmVzb3VyY2UgZXZlbnRzIHdoZW4gdGhlcmUgaXNuJ3QgYSBtYWluIGZyYW1lIHll
dC4gVGhvc2UgZXZlbnRzIGFyZSB0cmlnZ2VyZWQgYnkKICAgICAgICAgLy8gbG9hZGluZyB0aGUg
Y2FjaGVkIHJlc291cmNlcyB3aGVuIHRoZSBpbnNwZWN0b3Igb3BlbnMsIGFuZCB0aGV5IGRvIG5v
dCBoYXZlIHRpbWluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgaWYgKCFXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUpCisgICAgICAgIGlmICghV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghdGhpcy5faXNDYXB0dXJp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1
Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9ydGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcwppbmRleCAwODgy
MGQ1MGZlOTdmZWRiM2NjNTkyZDJiMDU1ZjRjNjRkZjhjY2ViLi40YzdkYTkyOWUwM2JhYjVhZDAy
NWYyZjY2NGM3MmJjMDAzMjEzMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9ydGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL1VuY2F1Z2h0RXhjZXB0aW9u
UmVwb3J0ZXIuanMKQEAgLTE5Niw3ICsxOTYsNyBAQCBmdW5jdGlvbiBjcmVhdGVFcnJvclNoZWV0
KCkgewogCiAgICAgbGV0IGluc3BlY3RlZFBhZ2VVUkwgPSBudWxsOwogICAgIHRyeSB7Ci0gICAg
ICAgIGluc3BlY3RlZFBhZ2VVUkwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUu
dXJsOworICAgICAgICBpbnNwZWN0ZWRQYWdlVVJMID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLnVybDsKICAgICB9IGNhdGNoIHsgfQogCiAgICAgbGV0IHRvcExldmVsSXRlbXMgPSBbCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggM2M5
YmY5NGU1ZGMyNmY0ODk1NDczYTYwZWVlZjZkNGU5Njg0M2U2NC4uNzY0OTc0YTkzZTc2MGFkNWQ5
ZGNmOTE3ZmRiZjUxN2RhYmJlNjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbApAQCAtNzc5LDcgKzc3OSw3IEBACiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0JyYW5jaE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NhbGxGcmFtZVRyZWVD
b250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2Fu
dmFzTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KQEAgLTc5MCwyNyAr
NzkwLDI4IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JTcHJpbmdF
ZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JUZXh0S2lsbENvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db25zb2xlTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFu
YWdlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTVRyZWVN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRGFzaGJv
YXJkTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RP
TU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01T
dG9yYWdlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0RhdGFiYXNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0RyYWdUb0FkanVzdENvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJDb250cm9sbGVycy9Gb3JtYXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9Gb3JtYXR0ZXJTb3VyY2VNYXAuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IZWFwTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2NyaXB0UnVu
dGltZUNvbXBsZXRpb25Qcm92aWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1NvdXJjZU1hcE1hbmFnZXIuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3Iu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzCmluZGV4IGVkODQ2MGNkY2RmMWY2MTlhN2Nl
MTM1YzliZWU0ZWMxNTI2MmE0ZDIuLjBmOWFlZTM3YmVhMTg5YTZlZmRmNjYyYTZkNmUwNGU5NjE5
NDZhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9DU1NQcm9wZXJ0eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanMKQEAgLTE4Myw3ICsxODMsNyBAQCBXSS5DU1NQcm9w
ZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0
aGlzLl9jYW5vbmljYWxOYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nhbm9uaWNhbE5h
bWU7CiAKLSAgICAgICAgdGhpcy5fY2Fub25pY2FsTmFtZSA9IFdJLmNzc1N0eWxlTWFuYWdlci5j
YW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKHRoaXMubmFtZSk7CisgICAgICAgIHRoaXMuX2Nh
bm9uaWNhbE5hbWUgPSBXSS5jc3NNYW5hZ2VyLmNhbm9uaWNhbE5hbWVGb3JQcm9wZXJ0eU5hbWUo
dGhpcy5uYW1lKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY2Fub25pY2FsTmFtZTsKICAgICB9
CkBAIC0zMjAsNyArMzIwLDcgQEAgV0kuQ1NTUHJvcGVydHkgPSBjbGFzcyBDU1NQcm9wZXJ0eSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIl9oYXNPdGhlclZlbmRvck5hbWVPcktleXdv
cmQiIGluIHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzT3RoZXJWZW5kb3JOYW1l
T3JLZXl3b3JkOwogCi0gICAgICAgIHRoaXMuX2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZCA9
IFdJLmNzc1N0eWxlTWFuYWdlci5wcm9wZXJ0eU5hbWVIYXNPdGhlclZlbmRvclByZWZpeCh0aGlz
Lm5hbWUpIHx8IFdJLmNzc1N0eWxlTWFuYWdlci5wcm9wZXJ0eVZhbHVlSGFzT3RoZXJWZW5kb3JL
ZXl3b3JkKHRoaXMudmFsdWUpOworICAgICAgICB0aGlzLl9oYXNPdGhlclZlbmRvck5hbWVPcktl
eXdvcmQgPSBXSS5jc3NNYW5hZ2VyLnByb3BlcnR5TmFtZUhhc090aGVyVmVuZG9yUHJlZml4KHRo
aXMubmFtZSkgfHwgV0kuY3NzTWFuYWdlci5wcm9wZXJ0eVZhbHVlSGFzT3RoZXJWZW5kb3JLZXl3
b3JkKHRoaXMudmFsdWUpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9oYXNPdGhlclZlbmRvck5h
bWVPcktleXdvcmQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzCmluZGV4IGJkMzliODZhMGRiMmI1
YzNmMGNhMzFiNzk3ODNlNmE1YWZlNDQ5NTQuLjM2ZGEyN2Y2ZGY5YmY4MDM5OWVkODdlYmQ3ZDE4
MDVjNDA5ZTRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTU2VsZWN0b3IuanMKQEAgLTQyLDYgKzQyLDYgQEAgV0kuQ1NT
U2VsZWN0b3IgPSBjbGFzcyBDU1NTZWxlY3RvcgogCiAgICAgaXNQc2V1ZG9FbGVtZW50U2VsZWN0
b3IoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLkNTU1N0eWxlTWFuYWdlci5Qc2V1ZG9FbGVt
ZW50TmFtZXMuc29tZSgobmFtZSkgPT4gdGhpcy5fdGV4dC5pbmNsdWRlcyhgOiR7bmFtZX1gKSk7
CisgICAgICAgIHJldHVybiBXSS5DU1NNYW5hZ2VyLlBzZXVkb0VsZW1lbnROYW1lcy5zb21lKChu
YW1lKSA9PiB0aGlzLl90ZXh0LmluY2x1ZGVzKGA6JHtuYW1lfWApKTsKICAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxG
cmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYWxs
RnJhbWUuanMKaW5kZXggOTYyYjAyY2MxMzE5MzM3YmJkYWZmY2JjNGY5YWIyNTljYjY4YzgwYi4u
MTRhMWU1ZTEzNTdhZDU4MzgzNzgxNWIzYzRkYjg3ZjlhNmMwNTVkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FsbEZyYW1lLmpz
CkBAIC0yMzMsNyArMjMzLDcgQEAgV0kuQ2FsbEZyYW1lID0gY2xhc3MgQ2FsbEZyYW1lCiAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLnJlc291cmNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQotICAgICAgICAgICAgICAgIHNv
dXJjZUNvZGUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwor
ICAgICAgICAgICAgICAgIHNvdXJjZUNvZGUgPSBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZv
clVSTCh1cmwpOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQogICAgICAgICAgICAgICAg
IHNvdXJjZUNvZGUgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTCh1cmwsIHRhcmdl
dClbMF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DYW52YXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ2FudmFzLmpzCmluZGV4IDc2YTBlMGZhZWJhM2NjM2E5ZjNmYmFiODQ4NGQ5ZjVhY2U0
MDYyNWEuLjRlZmRjNTEyZWI4NWJhNjRmYzM0Y2Q1YjEwNjU2ZWVmYjFkYjVkYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5q
cwpAQCAtNzYsNyArNzYsNyBAQCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgV0kuQ2FudmFzKHBheWxvYWQu
Y2FudmFzSWQsIGNvbnRleHRUeXBlLCB7Ci0gICAgICAgICAgICBkb21Ob2RlOiBwYXlsb2FkLm5v
ZGVJZCA/IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChwYXlsb2FkLm5vZGVJZCkgOiBudWxs
LAorICAgICAgICAgICAgZG9tTm9kZTogcGF5bG9hZC5ub2RlSWQgPyBXSS5kb21NYW5hZ2VyLm5v
ZGVGb3JJZChwYXlsb2FkLm5vZGVJZCkgOiBudWxsLAogICAgICAgICAgICAgY3NzQ2FudmFzTmFt
ZTogcGF5bG9hZC5jc3NDYW52YXNOYW1lLAogICAgICAgICAgICAgY29udGV4dEF0dHJpYnV0ZXM6
IHBheWxvYWQuY29udGV4dEF0dHJpYnV0ZXMsCiAgICAgICAgICAgICBtZW1vcnlDb3N0OiBwYXls
b2FkLm1lbW9yeUNvc3QsCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBXSS5DYW52YXMgPSBjbGFzcyBD
YW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVxdWVz
dE5vZGVQcm9taXNlKSB7CiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Tm9kZVByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIuZW5zdXJlRG9jdW1lbnQoKTsKKyAgICAgICAgICAgICAgICBXSS5kb21NYW5h
Z2VyLmVuc3VyZURvY3VtZW50KCk7CiAKICAgICAgICAgICAgICAgICBDYW52YXNBZ2VudC5yZXF1
ZXN0Tm9kZSh0aGlzLl9pZGVudGlmaWVyKS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChyZXN1
bHQubm9kZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZG9tTm9kZSA9IFdJLmRvbU1h
bmFnZXIubm9kZUZvcklkKHJlc3VsdC5ub2RlSWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXRoaXMuX2RvbU5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChgTm8gRE9N
IG5vZGUgZm9yIGlkZW50aWZpZXI6ICR7cmVzdWx0Lm5vZGVJZH0uYCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgV0kuQ2FudmFzID0gY2xhc3Mg
Q2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOworICAgICAgICBX
SS5kb21NYW5hZ2VyLmVuc3VyZURvY3VtZW50KCk7CiAKICAgICAgICAgQ2FudmFzQWdlbnQucmVx
dWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKHRoaXMuX2lkZW50aWZpZXIsIChlcnJvciwgY2xpZW50
Tm9kZUlkcykgPT4gewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC0yMDAsNyArMjAwLDcg
QEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGNsaWVudE5vZGVJZHMgPSBBcnJheS5pc0FycmF5KGNsaWVudE5v
ZGVJZHMpID8gY2xpZW50Tm9kZUlkcyA6IFtdOwotICAgICAgICAgICAgdGhpcy5fY3NzQ2FudmFz
Q2xpZW50Tm9kZXMgPSBjbGllbnROb2RlSWRzLm1hcCgoY2xpZW50Tm9kZUlkKSA9PiBXSS5kb21U
cmVlTWFuYWdlci5ub2RlRm9ySWQoY2xpZW50Tm9kZUlkKSk7CisgICAgICAgICAgICB0aGlzLl9j
c3NDYW52YXNDbGllbnROb2RlcyA9IGNsaWVudE5vZGVJZHMubWFwKChjbGllbnROb2RlSWQpID0+
IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGNsaWVudE5vZGVJZCkpOwogICAgICAgICAgICAgY2Fs
bGJhY2sodGhpcy5fY3NzQ2FudmFzQ2xpZW50Tm9kZXMpOwogICAgICAgICB9KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29u
c29sZU1lc3NhZ2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ29uc29sZU1lc3NhZ2UuanMKaW5kZXggZDE0ODQwOWI3MjU4MTZiZGVjOGQzYmQyYjBkODVl
NDdkNjljZjFmYS4uZDA2MWQ1MmZkNTUxNzE0MTllODdiNzdmZjg0NDE0OGRiYjIwYzE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnNv
bGVNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Db25zb2xlTWVzc2FnZS5qcwpAQCAtODMsNyArODMsNyBAQCBXSS5Db25zb2xlTWVzc2Fn
ZSA9IGNsYXNzIENvbnNvbGVNZXNzYWdlCiAgICAgICAgIC8vIElmIHRoYXQgZG9lc24ndCBleGlz
dCB0cnkgdG8gZ2V0IGEgbG9jYXRpb24gZnJvbSB0aGUgdXJsL2xpbmUvY29sdW1uIGluIHRoZSBD
b25zb2xlTWVzc2FnZS4KICAgICAgICAgLy8gRklYTUUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzY0
MDQ+OiBSZW1vdmUgdGhlIHN0cmluZyBlcXVhbGl0eSBjaGVja3MgZm9yIHVuZGVmaW5lZCBvbmNl
IHdlIGRvbid0IGdldCB0aGF0IHZhbHVlIGFueW1vcmUuCiAgICAgICAgIGlmICh0aGlzLl91cmwg
JiYgdGhpcy5fdXJsICE9PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgbGV0IHNvdXJjZUNv
ZGUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh0aGlzLl91cmwpOwor
ICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZv
clVSTCh0aGlzLl91cmwpOwogICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGUpIHsKICAgICAgICAg
ICAgICAgICBsZXQgbGluZU51bWJlciA9IHRoaXMuX2xpbmUgPiAwID8gdGhpcy5fbGluZSAtIDEg
OiAwOwogICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OdW1iZXIgPSB0aGlzLl9jb2x1bW4gPiAw
ID8gdGhpcy5fY29sdW1uIC0gMSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCmluZGV4IDIzZmNl
MDUyMWZhY2NiZGQwMTUyMWFmYzFjZTZkNjNkYjYxYjEwNGEuLjkzNzFiMTU1ZTBmMjg3ZTczNDgy
Y2FiMTMxNjZiODFkNGQ2YTVlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCkBAIC0zNCw4ICsz
NCw4IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSkg
ewogICAgICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2RlT3JJbmZvLmlk
OwogICAgICAgICAgICAgdGhpcy5fcGF0aCA9IGRvbU5vZGVPckluZm8ucGF0aCgpOwotICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsK
LSAgICAgICAgICAgIHRoaXMuX3VybCA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFt
ZS51cmw7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWUpOworICAgICAgICAgICAgdGhpcy5fdXJsID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLnVybDsKICAgICAgICAgfSBlbHNlIGlmIChkb21Ob2RlT3JJbmZvICYmIHR5cGVvZiBkb21O
b2RlT3JJbmZvID09PSAib2JqZWN0IikgewogICAgICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50
aWZpZXIgPSBudWxsOwogICAgICAgICAgICAgdGhpcy5fcGF0aCA9IGRvbU5vZGVPckluZm8ucGF0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGUuanMKaW5kZXggYTU2YWFkZGM5YzZlYjNmMmEzYzIzMGYyYmNkYmVmMjQwZGJmYzUy
MS4uNmM5YjYwNjc1YmM2ZWY3MmZjMDQwMThhNTk3YTM1Zjg4ZmE0OGQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMK
QEAgLTMyLDE1ICszMiwxNSBAQAogCiBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRz
IFdJLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKGRvbVRyZWVNYW5hZ2VyLCBkb2MsIGlzSW5T
aGFkb3dUcmVlLCBwYXlsb2FkKQorICAgIGNvbnN0cnVjdG9yKGRvbU1hbmFnZXIsIGRvYywgaXNJ
blNoYWRvd1RyZWUsIHBheWxvYWQpCiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAg
IHRoaXMuX2RvbVRyZWVNYW5hZ2VyID0gZG9tVHJlZU1hbmFnZXI7CisgICAgICAgIHRoaXMuX2Rv
bU1hbmFnZXIgPSBkb21NYW5hZ2VyOwogICAgICAgICB0aGlzLl9pc0luU2hhZG93VHJlZSA9IGlz
SW5TaGFkb3dUcmVlOwogCiAgICAgICAgIHRoaXMuaWQgPSBwYXlsb2FkLm5vZGVJZDsKLSAgICAg
ICAgdGhpcy5fZG9tVHJlZU1hbmFnZXIuX2lkVG9ET01Ob2RlW3RoaXMuaWRdID0gdGhpczsKKyAg
ICAgICAgdGhpcy5fZG9tTWFuYWdlci5faWRUb0RPTU5vZGVbdGhpcy5pZF0gPSB0aGlzOwogCiAg
ICAgICAgIHRoaXMuX25vZGVUeXBlID0gcGF5bG9hZC5ub2RlVHlwZTsKICAgICAgICAgdGhpcy5f
bm9kZU5hbWUgPSBwYXlsb2FkLm5vZGVOYW1lOwpAQCAtODAsNyArODAsNyBAQCBXSS5ET01Ob2Rl
ID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAocGF5bG9hZC5z
aGFkb3dSb290cykgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXlsb2FkLnNo
YWRvd1Jvb3RzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIHJvb3QgPSBwYXls
b2FkLnNoYWRvd1Jvb3RzW2ldOwotICAgICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdJLkRP
TU5vZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIHRoaXMub3duZXJEb2N1bWVudCwgdHJ1ZSwgcm9v
dCk7CisgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLl9kb21N
YW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQsIHRydWUsIHJvb3QpOwogICAgICAgICAgICAgICAg
IG5vZGUucGFyZW50Tm9kZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2hhZG93Um9v
dHMucHVzaChub2RlKTsKICAgICAgICAgICAgIH0KQEAgLTk3LDIxICs5NywyMSBAQCBXSS5ET01O
b2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5f
Y3VzdG9tRWxlbWVudFN0YXRlID0gbnVsbDsKIAogICAgICAgICBpZiAocGF5bG9hZC50ZW1wbGF0
ZUNvbnRlbnQpIHsKLSAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlQ29udGVudCA9IG5ldyBXSS5E
T01Ob2RlKHRoaXMuX2RvbVRyZWVNYW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBw
YXlsb2FkLnRlbXBsYXRlQ29udGVudCk7CisgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZUNvbnRl
bnQgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLl9kb21NYW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQs
IGZhbHNlLCBwYXlsb2FkLnRlbXBsYXRlQ29udGVudCk7CiAgICAgICAgICAgICB0aGlzLl90ZW1w
bGF0ZUNvbnRlbnQucGFyZW50Tm9kZSA9IHRoaXM7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9wc2V1ZG9FbGVtZW50cyA9IG5ldyBNYXA7CiAgICAgICAgIGlmIChwYXlsb2FkLnBzZXVkb0Vs
ZW1lbnRzKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWQucHNldWRv
RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBX
SS5ET01Ob2RlKHRoaXMuX2RvbVRyZWVNYW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQsIHRoaXMu
X2lzSW5TaGFkb3dUcmVlLCBwYXlsb2FkLnBzZXVkb0VsZW1lbnRzW2ldKTsKKyAgICAgICAgICAg
ICAgICB2YXIgbm9kZSA9IG5ldyBXSS5ET01Ob2RlKHRoaXMuX2RvbU1hbmFnZXIsIHRoaXMub3du
ZXJEb2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUsIHBheWxvYWQucHNldWRvRWxlbWVudHNb
aV0pOwogICAgICAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IHRoaXM7CiAgICAgICAgICAg
ICAgICAgdGhpcy5fcHNldWRvRWxlbWVudHMuc2V0KG5vZGUucHNldWRvVHlwZSgpLCBub2RlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChwYXlsb2FkLmNvbnRlbnRE
b2N1bWVudCkgewotICAgICAgICAgICAgdGhpcy5fY29udGVudERvY3VtZW50ID0gbmV3IFdJLkRP
TU5vZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIG51bGwsIGZhbHNlLCBwYXlsb2FkLmNvbnRlbnRE
b2N1bWVudCk7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50RG9jdW1lbnQgPSBuZXcgV0kuRE9N
Tm9kZSh0aGlzLl9kb21NYW5hZ2VyLCBudWxsLCBmYWxzZSwgcGF5bG9hZC5jb250ZW50RG9jdW1l
bnQpOwogICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbdGhpcy5fY29udGVudERvY3VtZW50
XTsKICAgICAgICAgICAgIHRoaXMuX3JlbnVtYmVyKCk7CiAgICAgICAgIH0KQEAgLTE0OSw3ICsx
NDksNyBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAg
IGdldCBmcmFtZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lKQotICAgICAgICAg
ICAgdGhpcy5fZnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50aWZp
ZXIodGhpcy5mcmFtZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fZnJhbWUgPSBXSS5u
ZXR3b3JrTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIodGhpcy5mcmFtZUlkZW50aWZpZXIpOwog
ICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7CiAgICAgfQogCkBAIC03MDcsNyArNzA3LDcgQEAg
V0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9pbnNl
cnRDaGlsZChwcmV2LCBwYXlsb2FkKQogICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0ku
RE9NTm9kZSh0aGlzLl9kb21UcmVlTWFuYWdlciwgdGhpcy5vd25lckRvY3VtZW50LCB0aGlzLl9p
c0luU2hhZG93VHJlZSwgcGF5bG9hZCk7CisgICAgICAgIHZhciBub2RlID0gbmV3IFdJLkRPTU5v
ZGUodGhpcy5fZG9tTWFuYWdlciwgdGhpcy5vd25lckRvY3VtZW50LCB0aGlzLl9pc0luU2hhZG93
VHJlZSwgcGF5bG9hZCk7CiAgICAgICAgIGlmICghcHJldikgewogICAgICAgICAgICAgaWYgKCF0
aGlzLl9jaGlsZHJlbikgewogICAgICAgICAgICAgICAgIC8vIEZpcnN0IG5vZGUKQEAgLTc0MSw3
ICs3NDEsNyBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gdGhpcy5fc2hhZG93Um9vdHMuc2xpY2UoKTsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXlsb2Fkcy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLl9kb21UcmVlTWFuYWdlciwgdGhp
cy5vd25lckRvY3VtZW50LCB0aGlzLl9pc0luU2hhZG93VHJlZSwgcGF5bG9hZHNbaV0pOworICAg
ICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLl9kb21NYW5hZ2VyLCB0aGlz
Lm93bmVyRG9jdW1lbnQsIHRoaXMuX2lzSW5TaGFkb3dUcmVlLCBwYXlsb2Fkc1tpXSk7CiAgICAg
ICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKG5vZGUpOwogICAgICAgICB9CiAgICAgICAgIHRo
aXMuX3JlbnVtYmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCmluZGV4IDczNDFkM2M3NDcxNGRm
NGMxZmMzODM5NGY1YzY2NmNkZTQ0MDBkZWMuLjg2MjZlMzJiY2JmM2NiNmZhNmFlMmE0YTk3MDNl
YWQ5ZjRlNzhhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBAIC0xNjgsNyArMTY4LDcgQEAg
V0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBjb21wdXRlZFByb3BlcnRpZXNQYXlsb2FkICYm
IGkgPCBjb21wdXRlZFByb3BlcnRpZXNQYXlsb2FkLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgdmFyIHByb3BlcnR5UGF5bG9hZCA9IGNvbXB1dGVkUHJvcGVydGllc1BheWxvYWRbaV07
CiAKLSAgICAgICAgICAgICAgICB2YXIgY2Fub25pY2FsTmFtZSA9IFdJLmNzc1N0eWxlTWFuYWdl
ci5jYW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKHByb3BlcnR5UGF5bG9hZC5uYW1lKTsKKyAg
ICAgICAgICAgICAgICB2YXIgY2Fub25pY2FsTmFtZSA9IFdJLmNzc01hbmFnZXIuY2Fub25pY2Fs
TmFtZUZvclByb3BlcnR5TmFtZShwcm9wZXJ0eVBheWxvYWQubmFtZSk7CiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlQYXlsb2FkLmltcGxpY2l0ID0gIXRoaXMuX3Byb3BlcnR5TmFtZVRvRWZmZWN0
aXZlUHJvcGVydHlNYXBbY2Fub25pY2FsTmFtZV07CiAKICAgICAgICAgICAgICAgICB2YXIgcHJv
cGVydHkgPSB0aGlzLl9wYXJzZVN0eWxlUHJvcGVydHlQYXlsb2FkKHByb3BlcnR5UGF5bG9hZCwg
TmFOLCB0aGlzLl9jb21wdXRlZFN0eWxlKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBXSS5ET01Ob2Rl
U3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9
CiAKICAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gcHVzaGluZyBTdHlsZVNoZWV0IGluZm9y
bWF0aW9uIHRvIHRoZSBmcm9udGVuZC4gPHJkYXI6Ly9wcm9ibGVtLzEzMjEzNjgwPgotICAgICAg
ICBXSS5jc3NTdHlsZU1hbmFnZXIuZmV0Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCk7CisgICAgICAg
IFdJLmNzc01hbmFnZXIuZmV0Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCk7CiAKICAgICAgICAgQ1NT
QWdlbnQuZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25vZGUu
aWQsIGluY2x1ZGVQc2V1ZG86IHRydWUsIGluY2x1ZGVJbmhlcml0ZWQ6IHRydWV9LCB3cmFwLmNh
bGwodGhpcywgZmV0Y2hlZE1hdGNoZWRTdHlsZXMsIGZldGNoZWRNYXRjaGVkU3R5bGVzUHJvbWlz
ZSkpOwogICAgICAgICBDU1NBZ2VudC5nZXRJbmxpbmVTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9k
ZUlkOiB0aGlzLl9ub2RlLmlkfSwgd3JhcC5jYWxsKHRoaXMsIGZldGNoZWRJbmxpbmVTdHlsZXMs
IGZldGNoZWRJbmxpbmVTdHlsZXNQcm9taXNlKSk7CkBAIC0zMTIsOSArMzEyLDkgQEAgV0kuRE9N
Tm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzdHlsZVNoZWV0SWQpCi0gICAgICAgICAgICBpbnNwZWN0b3JT
dHlsZVNoZWV0QXZhaWxhYmxlLmNhbGwodGhpcywgV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hl
ZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZCkpOworICAgICAgICAgICAgaW5zcGVjdG9yU3R5
bGVTaGVldEF2YWlsYWJsZS5jYWxsKHRoaXMsIFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldEZvcklk
ZW50aWZpZXIoc3R5bGVTaGVldElkKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdJLmNz
c1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUodGhpcy5f
bm9kZS5mcmFtZSwgaW5zcGVjdG9yU3R5bGVTaGVldEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZy
YW1lKHRoaXMuX25vZGUuZnJhbWUsIGluc3BlY3RvclN0eWxlU2hlZXRBdmFpbGFibGUuYmluZCh0
aGlzKSk7CiAgICAgfQogCiAgICAgcnVsZXNGb3JTZWxlY3RvcihzZWxlY3RvcikKQEAgLTM3NCw3
ICszNzQsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAocHJvcGVydHkpCiAgICAgICAgICAgICByZXR1cm4gcHJv
cGVydHk7CiAKLSAgICAgICAgbGV0IGNhbm9uaWNhbE5hbWUgPSBXSS5jc3NTdHlsZU1hbmFnZXIu
Y2Fub25pY2FsTmFtZUZvclByb3BlcnR5TmFtZShuYW1lKTsKKyAgICAgICAgbGV0IGNhbm9uaWNh
bE5hbWUgPSBXSS5jc3NNYW5hZ2VyLmNhbm9uaWNhbE5hbWVGb3JQcm9wZXJ0eU5hbWUobmFtZSk7
CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVByb3BlcnR5TWFw
W2Nhbm9uaWNhbE5hbWVdIHx8IG51bGw7CiAgICAgfQogCkBAIC00NTIsNyArNDUyLDcgQEAgV0ku
RE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgICAgICAvLyBUcnkgdG8gdXNlIHRoZSBub2RlIHRvIGZpbmQgdGhlIGZyYW1lIHdoaWNoIGhh
cyB0aGUgY29ycmVjdCByZXNvdXJjZSBmaXJzdC4KICAgICAgICAgaWYgKHRoaXMuX25vZGUub3du
ZXJEb2N1bWVudCkgewotICAgICAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IFdJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHRoaXMuX25vZGUub3duZXJEb2N1bWVudC5kb2N1
bWVudFVSTCk7CisgICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0gV0kubmV0d29ya01hbmFn
ZXIucmVzb3VyY2VGb3JVUkwodGhpcy5fbm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsK
ICAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICB2YXIgcGFy
ZW50RnJhbWUgPSBtYWluUmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAgICAgICAgICAgc291
cmNlQ29kZSA9IHBhcmVudEZyYW1lLnJlc291cmNlRm9yVVJMKHNvdXJjZVVSTCk7CkBAIC00NjEs
NyArNDYxLDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgICAgICAvLyBJZiB0aGF0IGRpZG4ndCBmaW5kIHRoZSByZXNvdXJj
ZSwgdGhlbiBzZWFyY2ggYWxsIGZyYW1lcy4KICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQotICAg
ICAgICAgICAgc291cmNlQ29kZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9y
VVJMKHNvdXJjZVVSTCk7CisgICAgICAgICAgICBzb3VyY2VDb2RlID0gV0kubmV0d29ya01hbmFn
ZXIucmVzb3VyY2VGb3JVUkwoc291cmNlVVJMKTsKIAogICAgICAgICBpZiAoIXNvdXJjZUNvZGUp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBXSS5ET01Ob2Rl
U3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAg
ICAgcmV0dXJuIHN0eWxlRGVjbGFyYXRpb247CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc3R5
bGVTaGVldCA9IGlkID8gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVy
KGlkLnN0eWxlU2hlZXRJZCkgOiBudWxsOworICAgICAgICB2YXIgc3R5bGVTaGVldCA9IGlkID8g
V0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihpZC5zdHlsZVNoZWV0SWQpIDog
bnVsbDsKICAgICAgICAgaWYgKHN0eWxlU2hlZXQpIHsKICAgICAgICAgICAgIGlmICh0eXBlID09
PSBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lKQogICAgICAgICAgICAgICAgIHN0
eWxlU2hlZXQubWFya0FzSW5saW5lU3R5bGVBdHRyaWJ1dGVTdHlsZVNoZWV0KCk7CkBAIC03MTQs
MTEgKzcxNCwxMSBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIG51
bGw7CiAKLSAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBpZCA/IFdJLmNzc1N0eWxlTWFuYWdlci5z
dHlsZVNoZWV0Rm9ySWRlbnRpZmllcihpZC5zdHlsZVNoZWV0SWQpIDogbnVsbDsKKyAgICAgICAg
dmFyIHN0eWxlU2hlZXQgPSBpZCA/IFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZp
ZXIoaWQuc3R5bGVTaGVldElkKSA6IG51bGw7CiAKICAgICAgICAgdmFyIHNlbGVjdG9yVGV4dCA9
IHBheWxvYWQuc2VsZWN0b3JMaXN0LnRleHQ7CiAgICAgICAgIHZhciBzZWxlY3RvcnMgPSB0aGlz
Ll9wYXJzZVNlbGVjdG9yTGlzdFBheWxvYWQocGF5bG9hZC5zZWxlY3Rvckxpc3QpOwotICAgICAg
ICB2YXIgdHlwZSA9IFdJLkNTU1N0eWxlTWFuYWdlci5wcm90b2NvbFN0eWxlU2hlZXRPcmlnaW5U
b0VudW0ocGF5bG9hZC5vcmlnaW4pOworICAgICAgICB2YXIgdHlwZSA9IFdJLkNTU01hbmFnZXIu
cHJvdG9jb2xTdHlsZVNoZWV0T3JpZ2luVG9FbnVtKHBheWxvYWQub3JpZ2luKTsKIAogICAgICAg
ICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gbnVsbDsKICAgICAgICAgdmFyIHNvdXJjZVJhbmdl
ID0gcGF5bG9hZC5zZWxlY3Rvckxpc3QucmFuZ2U7CkBAIC03MzksNyArNzM5LDcgQEAgV0kuRE9N
Tm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgdmFyIG1lZGlhTGlzdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgcGF5bG9hZC5t
ZWRpYSAmJiBpIDwgcGF5bG9hZC5tZWRpYS5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFy
IG1lZGlhSXRlbSA9IHBheWxvYWQubWVkaWFbaV07Ci0gICAgICAgICAgICB2YXIgbWVkaWFUeXBl
ID0gV0kuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvY29sTWVkaWFTb3VyY2VUb0VudW0obWVkaWFJdGVt
LnNvdXJjZSk7CisgICAgICAgICAgICB2YXIgbWVkaWFUeXBlID0gV0kuQ1NTTWFuYWdlci5wcm90
b2NvbE1lZGlhU291cmNlVG9FbnVtKG1lZGlhSXRlbS5zb3VyY2UpOwogICAgICAgICAgICAgdmFy
IG1lZGlhVGV4dCA9IG1lZGlhSXRlbS50ZXh0OwogICAgICAgICAgICAgdmFyIG1lZGlhU291cmNl
Q29kZUxvY2F0aW9uID0gdGhpcy5fY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKG1lZGlhSXRlbS5z
b3VyY2VVUkwsIG1lZGlhSXRlbS5zb3VyY2VMaW5lKTsKICAgICAgICAgICAgIGlmIChzdHlsZVNo
ZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTVRyZWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NVHJlZS5qcwppbmRleCA4NGE2MzllZjMzOWExZjhlNmY2NjA4ODc4MDUyMWMxY2ExNzVh
YjY4Li4zNWQzYTk3NDQ5MzczZDBiZjQxYjkwNzI1MzkxMGQ5NzJhYTljNDBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5q
cwpAQCAtMzYsMTEgKzM2LDExIEBAIFdJLkRPTVRyZWUgPSBjbGFzcyBET01UcmVlIGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFt
ZS5FdmVudC5QYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMuX2ZyYW1lUGFnZUV4ZWN1
dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzKTsKIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwg
dGhpcy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLCB0aGlzLl9k
b2N1bWVudFVwZGF0ZWQsIHRoaXMpOwogCiAgICAgICAgIC8vIE9ubHkgYWRkIGV4dHJhIGV2ZW50
IGxpc3RlbmVycyB3aGVuIG5vdCB0aGUgbWFpbiBmcmFtZS4gU2luY2UgRG9jdW1lbnRVcGRhdGVk
IGlzIGVub3VnaCBmb3IgdGhlIG1haW4gZnJhbWUuCiAgICAgICAgIGlmICghdGhpcy5fZnJhbWUu
aXNNYWluRnJhbWUoKSkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJl
bW92ZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlz
KTsKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9mcmFtZU1haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIFdJLkRPTVRyZWUg
PSBjbGFzcyBET01UcmVlIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBkaXNjb25uZWN0KCkKICAg
ICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
dWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgdGhpcy5fZnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBXSS5ET01U
cmVlID0gY2xhc3MgRE9NVHJlZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGhpcy5fcm9vdERPTU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgIHRoaXMuX3Jv
b3RET01Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKIAogICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcm9vdERPTU5vZGUpOwogICAgICAgICAgICAgaWYgKCF0
aGlzLl9yb290RE9NTm9kZSkgewpAQCAtMTg1LDcgKzE4NSw3IEBAIFdJLkRPTVRyZWUgPSBjbGFz
cyBET01UcmVlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIC8vIGEgc3BlY2lmaWMgd2F5IHRv
IHJlcXVlc3QgYSBkb2N1bWVudCBnaXZlbiBhIGZyYW1lIGlkZW50aWZpZXIuIFRoZSBjaGlsZCBm
cmFtZSBhcHByb2FjaAogICAgICAgICAvLyBpbnZvbHZlcyBldmFsdWF0aW5nIHRoZSBKYXZhU2Ny
aXB0ICJkb2N1bWVudCIgYW5kIHJlc29sdmluZyB0aGF0IGludG8gYSBET01Ob2RlLgogICAgICAg
ICBpZiAodGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnJlcXVlc3REb2N1bWVudChtYWluRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7
CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChtYWluRG9jdW1lbnRB
dmFpbGFibGUuYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdmFyIGNv
bnRleHRJZCA9IHRoaXMuX2ZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0LmlkOwogICAgICAgICAg
ICAgUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogYXBwZW5kV2ViSW5z
cGVjdG9yU291cmNlVVJMKCJkb2N1bWVudCIpLCBvYmplY3RHcm91cDogIiIsIGluY2x1ZGVDb21t
YW5kTGluZUFQSTogZmFsc2UsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTog
dHJ1ZSwgY29udGV4dElkLCByZXR1cm5CeVZhbHVlOiBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3OiBm
YWxzZX0sIHJvb3RPYmplY3RBdmFpbGFibGUuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFz
aGJvYXJkLmpzCmluZGV4IGUwYzBmMzIyNTI0ZDA4YjEyNWZiMjI0NmJmNmEyYjBiNDBmM2NjZDQu
LmIyM2IxNGE3YTNhNWIwZmMyNDMxZjEyNjEyYmYxNjgzZDg5ZTE4NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJk
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZh
dWx0RGFzaGJvYXJkLmpzCkBAIC0zOCwxMyArMzgsMTIgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9
IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gTmVj
ZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBsb2FkIG9mIHJlc291cmNlcy4KICAgICAg
ICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0Fk
ZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuVGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0LkV2ZW50LlJlc291cmNlQWRkZWQsIHRoaXMuX3Jlc291
cmNlV2FzQWRkZWQsIHRoaXMpOwotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQs
IHRoaXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRo
aXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOwogCiAgICAgICAgIC8vIE5lY2Vzc2FyeSBldmVudHMg
cmVxdWlyZWQgdG8gdHJhY2sgY29uc29sZSBtZXNzYWdlcy4KLSAgICAgICAgdmFyIGxvZ01hbmFn
ZXIgPSBXSS5sb2dNYW5hZ2VyOwotICAgICAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhp
cyk7Ci0gICAgICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2
ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7Ci0gICAg
ICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZp
b3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VXYXNSZXBl
YXRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0NsZWFyZWQs
IHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRl
ZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0
aGlzLl9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNDb3VudCA9IDA7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOwpAQCAt
MTM4LDcgKzEzNyw3IEBAIFdJLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFzcyBEZWZhdWx0RGFzaGJv
YXJkIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fdGltZSA9IDA7CiAgICAgICAg
IHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2Uuc2l6ZSB8fCAw
OworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7CiAKICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
dHJhY2sgcmVzb3VyY2Ugc2l6ZXMgb24gZnJlc2ggbG9hZHMuCiAgICAgICAgIGlmICh0aGlzLl93
YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplKSB7CkBAIC0yMTIs
NyArMjExLDcgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZp
ZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyksIHRoaXMuX3RpbWVJ
bnRlcnZhbERlbGF5KTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBtYWluRnJhbWUgPSBXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIHZhciBtYWluRnJhbWUgPSBX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAgICAgIHZhciBtYWluRnJhbWVTdGFydFRp
bWUgPSBtYWluRnJhbWUubWFpblJlc291cmNlLmZpcnN0VGltZXN0YW1wOwogICAgICAgICB2YXIg
bWFpbkZyYW1lTG9hZEV2ZW50VGltZSA9IG1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9T
Y3JpcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2Ny
aXB0LmpzCmluZGV4IDA0ZWYwNjg4YzcyZjUxNjAzYTRlZTZmZDVlZjNiNjZiZThkNmE5YmIuLjMx
ODk3ZWQzZWViMmM5ZTI5OTMyM2U3OTc4ZGYxMDIwOTA4ZjJjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcwpAQCAtMjQx
LDcgKzI0MSw3IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNv
ZGUKICAgICAgICAgaWYgKCF0aGlzLl91cmwpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAot
ICAgICAgICBsZXQgcmVzb2x2ZXIgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlcjsKKyAgICAgICAg
bGV0IHJlc29sdmVyID0gV0kubmV0d29ya01hbmFnZXI7CiAgICAgICAgIGlmICh0aGlzLl90YXJn
ZXQgIT09IFdJLm1haW5UYXJnZXQpCiAgICAgICAgICAgICByZXNvbHZlciA9IHRoaXMuX3Rhcmdl
dC5yZXNvdXJjZUNvbGxlY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5q
cwppbmRleCA4OGRjMDZiNmVjOTVkY2JkM2QzMmQyMDA5YmZjMWJiZDE1ZTk0MGQ0Li41MGJjNGVj
YzUxM2ExMjhiNTg5ZjVmMDEwODIwOThhZjdmNzM5YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRp
bWVsaW5lUmVjb3JkLmpzCkBAIC0xMTEsNyArMTExLDcgQEAgV0kuU2NyaXB0VGltZWxpbmVSZWNv
cmQgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVJlY29yZCBleHRlbmRzIFdJLlRpbWVsaW5lUmVjb3Jk
CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCgiaWQiIGluIG5vZGVQYXlsb2FkKTsKIAogICAg
ICAgICAgICAgaWYgKG5vZGVQYXlsb2FkLnVybCkgewotICAgICAgICAgICAgICAgIHZhciBzb3Vy
Y2VDb2RlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwobm9kZVBheWxv
YWQudXJsKTsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdJLm5ldHdvcmtNYW5h
Z2VyLnJlc291cmNlRm9yVVJMKG5vZGVQYXlsb2FkLnVybCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFzb3VyY2VDb2RlKQogICAgICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlID0gV0kuZGVidWdn
ZXJNYW5hZ2VyLnNjcmlwdHNGb3JVUkwobm9kZVBheWxvYWQudXJsLCBXSS5hc3N1bWluZ01haW5U
YXJnZXQoKSlbMF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qcwppbmRleCAxMTA1OTdi
MTEzODJiOTk1OGY1MTU0Y2UxZTA3OTJjZGJlYzQ1OWI1Li5jZjA3NGU0ZGZjZTViZjJiZmEwOGY2
YWZjMjZkMDI0OTFiMDgxMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcFJlc291cmNlLmpzCkBAIC0x
MzksNyArMTM5LDcgQEAgV0kuU291cmNlTWFwUmVzb3VyY2UgPSBjbGFzcyBTb3VyY2VNYXBSZXNv
dXJjZSBleHRlbmRzIFdJLlJlc291cmNlCiAgICAgICAgICAgICBmcmFtZUlkZW50aWZpZXIgPSB0
aGlzLl9zb3VyY2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlLnBhcmVudEZyYW1lLmlkOwogCiAgICAg
ICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQotICAgICAgICAgICAgZnJhbWVJZGVudGlmaWVyID0g
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lID8gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLmlkIDogIiI7CisgICAgICAgICAgICBmcmFtZUlkZW50aWZpZXIgPSBXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUgPyBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQg
OiAiIjsKIAogICAgICAgICByZXR1cm4gTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShmcmFtZUlk
ZW50aWZpZXIsIHRoaXMudXJsKS50aGVuKHNvdXJjZU1hcFJlc291cmNlTG9hZGVkLmJpbmQodGhp
cykpLmNhdGNoKHNvdXJjZU1hcFJlc291cmNlTG9hZEVycm9yLmJpbmQodGhpcykpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9U
aW1lbGluZVJlY29yZGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwppbmRleCBkYTYwYWYwYzE0NjRlMzk3NjYzYjIz
MWQxMDcxMGIzODk5NjhkNDg3Li45NDc5MDVjNjJhNjAxMmE1YTE2MWE3NDE5ZWNkMWQ0NDllYzEy
OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVGltZWxpbmVSZWNvcmRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCkBAIC0yMjIsNyArMjIyLDcgQEAg
V0kuVGltZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEFkZCB0aGUgcmVjb3Jk
IHRvIHRoZSBzb3VyY2UgY29kZSB0aW1lbGluZXMuCi0gICAgICAgIHZhciBhY3RpdmVNYWluUmVz
b3VyY2UgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUucHJvdmlzaW9uYWxNYWlu
UmVzb3VyY2UgfHwgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJj
ZTsKKyAgICAgICAgdmFyIGFjdGl2ZU1haW5SZXNvdXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1h
aW5GcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSB8fCBXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWUubWFpblJlc291cmNlOwogICAgICAgICB2YXIgc291cmNlQ29kZSA9IHJlY29yZC5zb3Vy
Y2VDb2RlTG9jYXRpb24gPyByZWNvcmQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgOiBh
Y3RpdmVNYWluUmVzb3VyY2U7CiAKICAgICAgICAgdmFyIHNvdXJjZUNvZGVUaW1lbGluZXMgPSB0
aGlzLl9zb3VyY2VDb2RlVGltZWxpbmVzTWFwLmdldChzb3VyY2VDb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2Jz
ZXJ2ZXIuanMKaW5kZXggZjEzMThmNDdiMzE1YWJkYjJlYWVkZjhlNzJhYzllM2M2M2QyYTE1OC4u
ODMwMWEyYjI3YWMzN2JkN2MxMDNkN2E2NTUxOGUwMjI1Mjk1NmJlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2Jz
ZXJ2ZXIuanMKQEAgLTI5LDIyICsyOSwyMiBAQCBXSS5DU1NPYnNlcnZlciA9IGNsYXNzIENTU09i
c2VydmVyCiAKICAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCiAgICAgewotICAgICAgICBX
SS5jc3NTdHlsZU1hbmFnZXIubWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKKyAgICAgICAgV0ku
Y3NzTWFuYWdlci5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogICAgIH0KIAogICAgIHN0eWxl
U2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXRJZCkKICAgICB7Ci0gICAgICAgIFdJLmNzc1N0eWxlTWFu
YWdlci5zdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQpOworICAgICAgICBXSS5jc3NNYW5h
Z2VyLnN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXRJZCk7CiAgICAgfQogCiAgICAgc3R5bGVT
aGVldEFkZGVkKHN0eWxlU2hlZXRJbmZvKQogICAgIHsKLSAgICAgICAgV0kuY3NzU3R5bGVNYW5h
Z2VyLnN0eWxlU2hlZXRBZGRlZChzdHlsZVNoZWV0SW5mbyk7CisgICAgICAgIFdJLmNzc01hbmFn
ZXIuc3R5bGVTaGVldEFkZGVkKHN0eWxlU2hlZXRJbmZvKTsKICAgICB9CiAKICAgICBzdHlsZVNo
ZWV0UmVtb3ZlZChpZCkKICAgICB7Ci0gICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNo
ZWV0UmVtb3ZlZChpZCk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldFJlbW92ZWQo
aWQpOwogICAgIH0KIAogICAgIG5hbWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9i
c2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
Q29uc29sZU9ic2VydmVyLmpzCmluZGV4IDdhOGQ3ZDRjNmJiMmU5NTUyYTQzYWEwZDlhNzdlNGI3
ZjNkMDg5MWQuLjA0N2VlNTBhY2IwMGFkNzdhZGQyY2RjZTljZWM5M2ZmMDBkMGQzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNv
bGVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMKQEAgLTM1LDE3ICszNSwxNyBAQCBXSS5Db25zb2xl
T2JzZXJ2ZXIgPSBjbGFzcyBDb25zb2xlT2JzZXJ2ZXIKICAgICAgICAgaWYgKG1lc3NhZ2UudHlw
ZSA9PT0gImFzc2VydCIgJiYgIW1lc3NhZ2UudGV4dCkKICAgICAgICAgICAgIG1lc3NhZ2UudGV4
dCA9IFdJLlVJU3RyaW5nKCJBc3NlcnRpb24iKTsKIAotICAgICAgICBXSS5sb2dNYW5hZ2VyLm1l
c3NhZ2VXYXNBZGRlZCh0aGlzLnRhcmdldCwgbWVzc2FnZS5zb3VyY2UsIG1lc3NhZ2UubGV2ZWws
IG1lc3NhZ2UudGV4dCwgbWVzc2FnZS50eXBlLCBtZXNzYWdlLnVybCwgbWVzc2FnZS5saW5lLCBt
ZXNzYWdlLmNvbHVtbiB8fCAwLCBtZXNzYWdlLnJlcGVhdENvdW50LCBtZXNzYWdlLnBhcmFtZXRl
cnMsIG1lc3NhZ2Uuc3RhY2tUcmFjZSwgbWVzc2FnZS5uZXR3b3JrUmVxdWVzdElkKTsKKyAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIubWVzc2FnZVdhc0FkZGVkKHRoaXMudGFyZ2V0LCBtZXNzYWdl
LnNvdXJjZSwgbWVzc2FnZS5sZXZlbCwgbWVzc2FnZS50ZXh0LCBtZXNzYWdlLnR5cGUsIG1lc3Nh
Z2UudXJsLCBtZXNzYWdlLmxpbmUsIG1lc3NhZ2UuY29sdW1uIHx8IDAsIG1lc3NhZ2UucmVwZWF0
Q291bnQsIG1lc3NhZ2UucGFyYW1ldGVycywgbWVzc2FnZS5zdGFja1RyYWNlLCBtZXNzYWdlLm5l
dHdvcmtSZXF1ZXN0SWQpOwogICAgIH0KIAogICAgIG1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQo
Y291bnQpCiAgICAgewotICAgICAgICBXSS5sb2dNYW5hZ2VyLm1lc3NhZ2VSZXBlYXRDb3VudFVw
ZGF0ZWQoY291bnQpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5tZXNzYWdlUmVwZWF0Q291
bnRVcGRhdGVkKGNvdW50KTsKICAgICB9CiAKICAgICBtZXNzYWdlc0NsZWFyZWQoKQogICAgIHsK
LSAgICAgICAgV0kubG9nTWFuYWdlci5tZXNzYWdlc0NsZWFyZWQoKTsKKyAgICAgICAgV0kuY29u
c29sZU1hbmFnZXIubWVzc2FnZXNDbGVhcmVkKCk7CiAgICAgfQogCiAgICAgaGVhcFNuYXBzaG90
KHRpbWVzdGFtcCwgc25hcHNob3RTdHJpbmdEYXRhLCB0aXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIu
anMKaW5kZXggMDZjNzg2ZDVkZWJlOGI1NTNjMGM1NzQ0ZGI1M2YwNmFhNTQ1YTI2YS4uZTk5Mzcw
YTgxN2ZkYWE4NGRiOWExOTIzN2Q4MDI2OGY4OWQ5M2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIu
anMKQEAgLTI5LDg2ICsyOSw4NiBAQCBXSS5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVy
CiAKICAgICBkb2N1bWVudFVwZGF0ZWQoKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIuX2RvY3VtZW50VXBkYXRlZCgpOworICAgICAgICBXSS5kb21NYW5hZ2VyLl9kb2N1bWVudFVw
ZGF0ZWQoKTsKICAgICB9CiAKICAgICBpbnNwZWN0KG5vZGVJZCkKICAgICB7Ci0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RFbGVtZW50KG5vZGVJZCk7CisgICAgICAgIFdJLmRvbU1h
bmFnZXIuaW5zcGVjdEVsZW1lbnQobm9kZUlkKTsKICAgICB9CiAKICAgICBzZXRDaGlsZE5vZGVz
KHBhcmVudElkLCBwYXlsb2FkcykKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9z
ZXRDaGlsZE5vZGVzKHBhcmVudElkLCBwYXlsb2Fkcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIu
X3NldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxvYWRzKTsKICAgICB9CiAKICAgICBhdHRyaWJ1
dGVNb2RpZmllZChub2RlSWQsIG5hbWUsIHZhbHVlKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIuX2F0dHJpYnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFsdWUpOworICAgICAg
ICBXSS5kb21NYW5hZ2VyLl9hdHRyaWJ1dGVNb2RpZmllZChub2RlSWQsIG5hbWUsIHZhbHVlKTsK
ICAgICB9CiAKICAgICBhdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSkKICAgICB7Ci0gICAg
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9hdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSk7Cisg
ICAgICAgIFdJLmRvbU1hbmFnZXIuX2F0dHJpYnV0ZVJlbW92ZWQobm9kZUlkLCBuYW1lKTsKICAg
ICB9CiAKICAgICBpbmxpbmVTdHlsZUludmFsaWRhdGVkKG5vZGVJZHMpCiAgICAgewotICAgICAg
ICBXSS5kb21UcmVlTWFuYWdlci5faW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKTsKKyAg
ICAgICAgV0kuZG9tTWFuYWdlci5faW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKTsKICAg
ICB9CiAKICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQobm9kZUlkLCBjaGFyYWN0ZXJEYXRhKQog
ICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuX2NoYXJhY3RlckRhdGFNb2RpZmllZChu
b2RlSWQsIGNoYXJhY3RlckRhdGEpOworICAgICAgICBXSS5kb21NYW5hZ2VyLl9jaGFyYWN0ZXJE
YXRhTW9kaWZpZWQobm9kZUlkLCBjaGFyYWN0ZXJEYXRhKTsKICAgICB9CiAKICAgICBjaGlsZE5v
ZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBjaGlsZE5vZGVDb3VudCkKICAgICB7Ci0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBjaGlsZE5vZGVD
b3VudCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuX2NoaWxkTm9kZUNvdW50VXBkYXRlZChub2Rl
SWQsIGNoaWxkTm9kZUNvdW50KTsKICAgICB9CiAKICAgICBjaGlsZE5vZGVJbnNlcnRlZChwYXJl
bnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKQogICAgIHsKLSAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIuX2NoaWxkTm9kZUluc2VydGVkKHBhcmVudE5vZGVJZCwgcHJldmlvdXNOb2Rl
SWQsIHBheWxvYWQpOworICAgICAgICBXSS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVJbnNlcnRlZChw
YXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKTsKICAgICB9CiAKICAgICBjaGls
ZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKQogICAgIHsKLSAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOworICAg
ICAgICBXSS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlk
KTsKICAgICB9CiAKICAgICBzaGFkb3dSb290UHVzaGVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKQog
ICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuX2NoaWxkTm9kZUluc2VydGVkKHBhcmVu
dE5vZGVJZCwgMCwgbm9kZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hpbGROb2RlSW5z
ZXJ0ZWQocGFyZW50Tm9kZUlkLCAwLCBub2RlSWQpOwogICAgIH0KIAogICAgIHNoYWRvd1Jvb3RQ
b3BwZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCk7CisgICAgICAgIFdJ
LmRvbU1hbmFnZXIuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAg
IH0KIAogICAgIGN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQobm9kZUlkLCBjdXN0b21FbGVtZW50
U3RhdGUpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5fY3VzdG9tRWxlbWVudFN0
YXRlQ2hhbmdlZChub2RlSWQsIGN1c3RvbUVsZW1lbnRTdGF0ZSk7CisgICAgICAgIFdJLmRvbU1h
bmFnZXIuX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQobm9kZUlkLCBjdXN0b21FbGVtZW50U3Rh
dGUpOwogICAgIH0KIAogICAgIHBzZXVkb0VsZW1lbnRBZGRlZChwYXJlbnROb2RlSWQsIHBzZXVk
b0VsZW1lbnQpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5fcHNldWRvRWxlbWVu
dEFkZGVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVudCk7CisgICAgICAgIFdJLmRvbU1hbmFn
ZXIuX3BzZXVkb0VsZW1lbnRBZGRlZChwYXJlbnROb2RlSWQsIHBzZXVkb0VsZW1lbnQpOwogICAg
IH0KIAogICAgIHBzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVu
dElkKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuX3BzZXVkb0VsZW1lbnRSZW1v
dmVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVudElkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdl
ci5fcHNldWRvRWxlbWVudFJlbW92ZWQocGFyZW50Tm9kZUlkLCBwc2V1ZG9FbGVtZW50SWQpOwog
ICAgIH0KIAogICAgIGRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKQogICAgIHsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpOworICAgICAgICBX
SS5kb21NYW5hZ2VyLmRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKTsKICAgICB9CiAKICAgICB3
aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCiAgICAgewotICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpOworICAgICAgICBXSS5kb21N
YW5hZ2VyLndpbGxSZW1vdmVFdmVudExpc3RlbmVyKG5vZGVJZCk7CiAgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0
b3JhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwppbmRleCA4NzBjM2FjMmI1ODc5NWVhOTMwZGJj
Y2ZiNjViM2ZiMzM5NzQxYTJhLi5kMGFjY2JlMWYzZGQ4ZDI4NDBlNjQwOTA2YzM3NTE1YzE3ZTY0
MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCkBAIC0zMCwyMSArMzAs
MjEgQEAgV0kuRE9NU3RvcmFnZU9ic2VydmVyID0gY2xhc3MgRE9NU3RvcmFnZU9ic2VydmVyCiAK
ICAgICBkb21TdG9yYWdlSXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCkKICAgICB7Ci0gICAgICAgIFdJ
LnN0b3JhZ2VNYW5hZ2VyLml0ZW1zQ2xlYXJlZChzdG9yYWdlSWQpOworICAgICAgICBXSS5kb21T
dG9yYWdlTWFuYWdlci5pdGVtc0NsZWFyZWQoc3RvcmFnZUlkKTsKICAgICB9CiAKICAgICBkb21T
dG9yYWdlSXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpCiAgICAgewotICAgICAgICBXSS5zdG9y
YWdlTWFuYWdlci5pdGVtUmVtb3ZlZChzdG9yYWdlSWQsIGtleSk7CisgICAgICAgIFdJLmRvbVN0
b3JhZ2VNYW5hZ2VyLml0ZW1SZW1vdmVkKHN0b3JhZ2VJZCwga2V5KTsKICAgICB9CiAKICAgICBk
b21TdG9yYWdlSXRlbUFkZGVkKHN0b3JhZ2VJZCwga2V5LCB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IFdJLnN0b3JhZ2VNYW5hZ2VyLml0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUpOworICAg
ICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5pdGVtQWRkZWQoc3RvcmFnZUlkLCBrZXksIHZhbHVl
KTsKICAgICB9CiAKICAgICBkb21TdG9yYWdlSXRlbVVwZGF0ZWQoc3RvcmFnZUlkLCBrZXksIG9s
ZFZhbHVlLCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLml0ZW1VcGRh
dGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICBXSS5kb21TdG9y
YWdlTWFuYWdlci5pdGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKTsK
ICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMKaW5kZXggMTFjZTZmZjE0
M2E3Mjc4MmI5YzEyNzJkNGU2N2U1OWUxOGQyZDQ0OC4uYzQ5MDhjNmRiOTFiOTExN2Q3NjM1OTAw
OGFlMGE4NTg4MTdiNzI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCkBAIC0y
OSw2ICsyOSw2IEBAIFdJLkRhdGFiYXNlT2JzZXJ2ZXIgPSBjbGFzcyBEYXRhYmFzZU9ic2VydmVy
CiAKICAgICBhZGREYXRhYmFzZShkYXRhYmFzZSkKICAgICB7Ci0gICAgICAgIFdJLnN0b3JhZ2VN
YW5hZ2VyLmRhdGFiYXNlV2FzQWRkZWQoZGF0YWJhc2UuaWQsIGRhdGFiYXNlLmRvbWFpbiwgZGF0
YWJhc2UubmFtZSwgZGF0YWJhc2UudmVyc2lvbik7CisgICAgICAgIFdJLmRhdGFiYXNlTWFuYWdl
ci5kYXRhYmFzZVdhc0FkZGVkKGRhdGFiYXNlLmlkLCBkYXRhYmFzZS5kb21haW4sIGRhdGFiYXNl
Lm5hbWUsIGRhdGFiYXNlLnZlcnNpb24pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQ
SS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDJmYTk4MTY1ZjJlOGZmODA5ZjVmMGY2NGVhOTdkYjhm
NDY3NzU0OGQuLmYzMmYyODM1YWYxNWFiOTk0OGJmYmIxN2VlYjMxY2M2OWNhNTFkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC01NSw3ICs1NSw3IEBAIElu
c3BlY3RvckZyb250ZW5kQVBJID0gewogCiAgICAgc2V0RWxlbWVudFNlbGVjdGlvbkVuYWJsZWQ6
IGZ1bmN0aW9uKGVuYWJsZWQpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5pbnNw
ZWN0TW9kZUVuYWJsZWQgPSBlbmFibGVkOworICAgICAgICBXSS5kb21NYW5hZ2VyLmluc3BlY3RN
b2RlRW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgfSwKIAogICAgIHNldERvY2tpbmdVbmF2YWlsYWJs
ZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpz
CmluZGV4IGQwOTM4NTFiYjkzOWEwZTJhMTY3ZjcyNmJmMGM4ZDdjYzk0YzA5NzcuLjc4ZjJhZTY4
YmU3ODY4MjgxNGY2ZmVjNzA5NzM0YzdkMDZiODYzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ck9ic2VydmVyLmpzCkBAIC00MSw3ICs0MSw3IEBAIFdJLkluc3BlY3Rvck9ic2VydmVyID0gY2xh
c3MgSW5zcGVjdG9yT2JzZXJ2ZXIKICAgICB7CiAgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBX
SS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZCwgV0kubWFpblRhcmdldCk7CiAgICAg
ICAgIGlmIChyZW1vdGVPYmplY3Quc3VidHlwZSA9PT0gIm5vZGUiKSB7Ci0gICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5pbnNwZWN0Tm9kZU9iamVjdChyZW1vdGVPYmplY3QpOworICAgICAg
ICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0Tm9kZU9iamVjdChyZW1vdGVPYmplY3QpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU5LDkgKzU5LDkgQEAgV0kuSW5zcGVj
dG9yT2JzZXJ2ZXIgPSBjbGFzcyBJbnNwZWN0b3JPYnNlcnZlcgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGhpbnRzLmRhdGFiYXNlSWQpCi0gICAgICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5p
bnNwZWN0RGF0YWJhc2UoaGludHMuZGF0YWJhc2VJZCk7CisgICAgICAgICAgICBXSS5kYXRhYmFz
ZU1hbmFnZXIuaW5zcGVjdERhdGFiYXNlKGhpbnRzLmRhdGFiYXNlSWQpOwogICAgICAgICBlbHNl
IGlmIChoaW50cy5kb21TdG9yYWdlSWQpCi0gICAgICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5p
bnNwZWN0RE9NU3RvcmFnZShoaW50cy5kb21TdG9yYWdlSWQpOworICAgICAgICAgICAgV0kuZG9t
U3RvcmFnZU1hbmFnZXIuaW5zcGVjdERPTVN0b3JhZ2UoaGludHMuZG9tU3RvcmFnZUlkKTsKIAog
ICAgICAgICByZW1vdGVPYmplY3QucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0Lmpz
CmluZGV4IDhhMzY3NDBlM2VlY2U2ODFlZTgwOGQ1NTM3OWQzNDg0OGU2M2IwYmUuLjQ2ZTZjOWFj
N2IyNWQ4NjYyMzlmMzc1ZGNhMTU0ODI1NjY1NWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcwpA
QCAtNzEsNyArNzEsNyBAQCBXSS5NYWluVGFyZ2V0ID0gY2xhc3MgTWFpblRhcmdldCBleHRlbmRz
IFdJLlRhcmdldAogICAgICAgICBpZiAodGhpcy5fbWFpblJlc291cmNlKQogICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX21haW5SZXNvdXJjZTsKIAotICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICBsZXQgbWFpbkZyYW1lID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgICAgICByZXR1cm4gbWFpbkZyYW1lID8g
bWFpbkZyYW1lLm1haW5SZXNvdXJjZSA6IG51bGw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3Jr
T2JzZXJ2ZXIuanMKaW5kZXggYTUyZDFlMTBhMWUyODI4MDY4NDRlYTlkODU4YjUwYjEyZjg2N2Zk
My4uYTNjODY5NmEyOGVmYzlkNzI3OTk0N2NmMWQwMjJlOGQ3MzY0OWM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2Vy
dmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMzgsNjggKzM4LDY4IEBAIFdJLk5ldHdvcmtPYnNlcnZl
ciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZlcgogICAgICAgICAgICAgdGFyZ2V0SWQgPSBhcmd1bWVu
dHNbOV07CiAgICAgICAgIH0KIAotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNv
dXJjZVJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHJlcXVl
c3QsIHR5cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIGluaXRpYXRv
ciwgdGFyZ2V0SWQpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZVJlcXVlc3RX
aWxsQmVTZW50KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHJlcXVlc3QsIHR5cGUsIHJl
ZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIGluaXRpYXRvciwgdGFyZ2V0SWQp
OwogICAgIH0KIAogICAgIHJlcXVlc3RTZXJ2ZWRGcm9tQ2FjaGUocmVxdWVzdElkKQogICAgIHsK
ICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwLjMpOiBUaGUgYmFja2VuZCBubyBsb25n
ZXIgc2VuZHMgdGhpcy4KLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFya1Jlc291
cmNlUmVxdWVzdEFzU2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCk7CisgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1hcmtSZXNvdXJjZVJlcXVlc3RBc1NlcnZlZEZyb21NZW1vcnlDYWNo
ZShyZXF1ZXN0SWQpOwogICAgIH0KIAogICAgIHJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBm
cmFtZUlkLCBsb2FkZXJJZCwgdGltZXN0YW1wLCB0eXBlLCByZXNwb25zZSkKICAgICB7Ci0gICAg
ICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNw
b25zZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0eXBlLCByZXNwb25zZSwgdGltZXN0
YW1wKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2
ZVJlc3BvbnNlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIHJlc3BvbnNlLCB0
aW1lc3RhbXApOwogICAgIH0KIAogICAgIGRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFt
cCwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgewotICAgICAgICBXSS5mcmFt
ZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0SWQs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCB0aW1lc3RhbXApOworICAgICAgICBXSS5u
ZXR3b3JrTWFuYWdlci5yZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0SWQsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCB0aW1lc3RhbXApOwogICAgIH0KIAogICAgIGxv
YWRpbmdGaW5pc2hlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMLCBtZXRyaWNz
KQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0
RGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMLCBtZXRy
aWNzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkRmluaXNo
TG9hZGluZyhyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMLCBtZXRyaWNzKTsKICAg
ICB9CiAKICAgICBsb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBlcnJvclRleHQs
IGNhbmNlbGVkKQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3Vy
Y2VSZXF1ZXN0RGlkRmFpbExvYWRpbmcocmVxdWVzdElkLCBjYW5jZWxlZCwgdGltZXN0YW1wLCBl
cnJvclRleHQpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZVJlcXVlc3REaWRG
YWlsTG9hZGluZyhyZXF1ZXN0SWQsIGNhbmNlbGVkLCB0aW1lc3RhbXAsIGVycm9yVGV4dCk7CiAg
ICAgfQogCiAgICAgcmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwgdGltZXN0YW1wLCBpbml0aWF0b3IsIHJlc291cmNl
KQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0
V2FzU2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHJl
c291cmNlLCB0aW1lc3RhbXAsIGluaXRpYXRvcik7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LnJlc291cmNlUmVxdWVzdFdhc1NlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCByZXNvdXJjZSwgdGltZXN0YW1wLCBpbml0aWF0b3IpOwogICAgIH0KIAog
ICAgIHdlYlNvY2tldENyZWF0ZWQocmVxdWVzdElkLCB1cmwpCiAgICAgewotICAgICAgICBXSS5m
cmFtZVJlc291cmNlTWFuYWdlci53ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwgdXJsKTsKKyAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIud2ViU29ja2V0Q3JlYXRlZChyZXF1ZXN0SWQsIHVybCk7
CiAgICAgfQogCiAgICAgd2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KHJlcXVlc3RJ
ZCwgdGltZXN0YW1wLCB3YWxsdGltZSwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChyZXF1ZXN0
SWQsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIHJlcXVlc3QpOworICAgICAgICBXSS5uZXR3b3JrTWFu
YWdlci53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QocmVxdWVzdElkLCB0aW1lc3Rh
bXAsIHdhbGx0aW1lLCByZXF1ZXN0KTsKICAgICB9CiAKICAgICB3ZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKICAgICB7Ci0g
ICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
UmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKTsKKyAgICAgICAgV0kubmV0
d29ya01hbmFnZXIud2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQs
IHRpbWVzdGFtcCwgcmVzcG9uc2UpOwogICAgIH0KIAogICAgIHdlYlNvY2tldENsb3NlZChyZXF1
ZXN0SWQsIHRpbWVzdGFtcCkKICAgICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LndlYlNvY2tldENsb3NlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCk7CisgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLndlYlNvY2tldENsb3NlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCk7CiAgICAgfQog
CiAgICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9u
c2UpCiAgICAgewotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci53ZWJTb2NrZXRGcmFt
ZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7CisgICAgICAgIFdJLm5l
dHdvcmtNYW5hZ2VyLndlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAs
IHJlc3BvbnNlKTsKICAgICB9CiAKICAgICB3ZWJTb2NrZXRGcmFtZVNlbnQocmVxdWVzdElkLCB0
aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIud2ViU29ja2V0RnJhbWVTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7Cisg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLndlYlNvY2tldEZyYW1lU2VudChyZXF1ZXN0SWQsIHRp
bWVzdGFtcCwgcmVzcG9uc2UpOwogICAgIH0KIAogICAgIHdlYlNvY2tldEZyYW1lRXJyb3IocmVx
dWVzdElkLCB0aW1lc3RhbXAsIGVycm9yTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcwpp
bmRleCAwNTcyY2I0NjY4MTVkYWQxM2I0ZTc5OWZhNDA3MGY4NTA0MGIwZDg4Li4zMTQ2OGE3YjJh
OTI2MWYxMTE4YzYwZjVmM2IxNDI1MjFhYjgzZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpz
CkBAIC0zOSwxMiArMzksMTIgQEAgV0kuUGFnZU9ic2VydmVyID0gY2xhc3MgUGFnZU9ic2VydmVy
CiAKICAgICBmcmFtZU5hdmlnYXRlZChmcmFtZSwgbG9hZGVySWQpCiAgICAgewotICAgICAgICBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZURpZE5hdmlnYXRlKGZyYW1lLCBsb2FkZXJJZCk7
CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRGlkTmF2aWdhdGUoZnJhbWUsIGxvYWRl
cklkKTsKICAgICB9CiAKICAgICBmcmFtZURldGFjaGVkKGZyYW1lSWQpCiAgICAgewotICAgICAg
ICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZURpZERldGFjaChmcmFtZUlkKTsKKyAgICAg
ICAgV0kubmV0d29ya01hbmFnZXIuZnJhbWVEaWREZXRhY2goZnJhbWVJZCk7CiAgICAgfQogCiAg
ICAgZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCmlu
ZGV4IDM0OTExNjZlNjllN2M3NTQ1YWY1M2M3MWM1M2M2ZWE5OTQ2MjliZjEuLjYzNTY0NmVjNzBm
MTRlM2Y4YzIwODNmMDc5NGY0M2E0MzA2NjA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBXSS5SZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICBwdXNoTm9kZVRvRnJvbnRlbmQoY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fb2JqZWN0SWQpCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5wdXNoTm9kZVRvRnJv
bnRlbmQodGhpcy5fb2JqZWN0SWQsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFn
ZXIucHVzaE5vZGVUb0Zyb250ZW5kKHRoaXMuX29iamVjdElkLCBjYWxsYmFjayk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNhbGxiYWNrKDApOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVP
YnNlcnZlci5qcwppbmRleCAxMDhiZGZjNGU2ZTE0MzZiNzljNmRjMmEzMjUyZjE4NzdmYzIyNGNm
Li44ZDQxYTEzMTZiZjBmZTE2YjNjMjU5ZWQyMjZiMmU5ZGVlZWRhMzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
UnVudGltZU9ic2VydmVyLmpzCkBAIC0yOSw2ICsyOSw2IEBAIFdJLlJ1bnRpbWVPYnNlcnZlciA9
IGNsYXNzIFJ1bnRpbWVPYnNlcnZlcgogCiAgICAgZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQoY29u
dGV4dFBheWxvYWQpCiAgICAgewotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5leGVj
dXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CisgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2FkKTsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvV29ya2VyVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzCmluZGV4IDgyNmQzYmU1ZWIwYzA4M2FlNWUwNGY4NDgy
NzExZTkwYzI4ZjMxMzcuLjBkMDQ5YTIzOTEzNjJmMzEzZGMxMzRiOTY4MTI2ODM0MTQzZTA5YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1dvcmtlclRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKQEAgLTI5LDcgKzI5LDcgQEAgV0kuV29ya2VyVGFy
Z2V0ID0gY2xhc3MgV29ya2VyVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiAgICAgewogICAgICAg
ICBzdXBlcih3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0LlR5cGUuV29ya2VyLCBjb25uZWN0aW9u
KTsKIAotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZG9wdE9ycGhhbmVkUmVzb3Vy
Y2VzRm9yVGFyZ2V0KHRoaXMpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZG9wdE9ycGhh
bmVkUmVzb3VyY2VzRm9yVGFyZ2V0KHRoaXMpOwogCiAgICAgICAgIGlmICh0aGlzLlJ1bnRpbWVB
Z2VudCkgewogICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVj
dXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1
dGlvbklkZW50aWZpZXIsIHRoaXMuZGlzcGxheU5hbWUsIGZhbHNlLCBudWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAzZGEzYTRkZDFl
MDM3MmUwMGNlMTI5ZjdmZjVjZjhkNzczZjI0YzRiLi5hYzNiMjVkMDAwYTM5NWQyZWVmZDAwMjJh
Njc0YWFmYzg3NDkyNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC5odG1sCkBAIC0yMTAsMjIgKzIxMCwyMiBAQAogCiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0F1ZGl0TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvbnNvbGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01NYW5hZ2VyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9GcmFtZVJlc291cmNlTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0hBUkJ1aWxk
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IZWFwTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0lzc3VlTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0xheWVyVHJlZU1h
bmFnZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Mb2dNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTWVtb3J5TWFu
YWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL05ldHdvcmtN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUHJvYmVN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGlt
ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Tb3Vy
Y2VNYXBNYW5hZ2VyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
U3RvcmFnZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvV29ya2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggNmVmMWUwMjAwMDYyNTRkZmU4
YWY4Mjc1NTkxZDY5YTFjY2QyM2FjNy4uYWMzMzVmODcwOWZmZDBlYWIyNzIyYTUwYmEwZWQwNDlh
ZTBkODVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC9UZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QvVGVzdC5qcwpAQCAtNDksMTEgKzQ5LDExIEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAog
ICAgIC8vIEluc3RhbnRpYXRlIGNvbnRyb2xsZXJzIHVzZWQgYnkgdGVzdHMuCiAgICAgdGhpcy50
YXJnZXRNYW5hZ2VyID0gbmV3IFdJLlRhcmdldE1hbmFnZXI7Ci0gICAgdGhpcy5mcmFtZVJlc291
cmNlTWFuYWdlciA9IG5ldyBXSS5GcmFtZVJlc291cmNlTWFuYWdlcjsKLSAgICB0aGlzLnN0b3Jh
Z2VNYW5hZ2VyID0gbmV3IFdJLlN0b3JhZ2VNYW5hZ2VyOwotICAgIHRoaXMuZG9tVHJlZU1hbmFn
ZXIgPSBuZXcgV0kuRE9NVHJlZU1hbmFnZXI7Ci0gICAgdGhpcy5jc3NTdHlsZU1hbmFnZXIgPSBu
ZXcgV0kuQ1NTU3R5bGVNYW5hZ2VyOwotICAgIHRoaXMubG9nTWFuYWdlciA9IG5ldyBXSS5Mb2dN
YW5hZ2VyOworICAgIHRoaXMubmV0d29ya01hbmFnZXIgPSBuZXcgV0kuTmV0d29ya01hbmFnZXI7
CisgICAgdGhpcy5kb21TdG9yYWdlTWFuYWdlciA9IG5ldyBXSS5ET01TdG9yYWdlTWFuYWdlcjsK
KyAgICB0aGlzLmRvbU1hbmFnZXIgPSBuZXcgV0kuRE9NTWFuYWdlcjsKKyAgICB0aGlzLmNzc01h
bmFnZXIgPSBuZXcgV0kuQ1NTTWFuYWdlcjsKKyAgICB0aGlzLmNvbnNvbGVNYW5hZ2VyID0gbmV3
IFdJLkNvbnNvbGVNYW5hZ2VyOwogICAgIHRoaXMuaXNzdWVNYW5hZ2VyID0gbmV3IFdJLklzc3Vl
TWFuYWdlcjsKICAgICB0aGlzLnJ1bnRpbWVNYW5hZ2VyID0gbmV3IFdJLlJ1bnRpbWVNYW5hZ2Vy
OwogICAgIHRoaXMuaGVhcE1hbmFnZXIgPSBuZXcgV0kuSGVhcE1hbmFnZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFp
bHNTZWN0aW9uUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCAwYTZkY2MxNWI1MzQ0NzIyNTU3
OGY3ZjQxOWVkZTgxMjc5NzNkMzI5Li5hYWFjOTA0NWVkZjMzNGM0NmI0MWVhMDkwODUyMmE4ODgy
Y2RkZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanMKQEAg
LTk0LDEwICs5NCwxMCBAQCBXSS5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93ID0gY2xhc3MgQm94
TW9kZWxEZXRhaWxzU2VjdGlvblJvdyBleHRlbmRzIFdJLkRldGFpbAogICAgICAgICAgICAgaWYg
KHRoaXMuX2hpZ2hsaWdodE1vZGUgPT09IG1vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TW9kZSA9IG1vZGU7Ci0gICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCwgbW9kZSk7CisgICAgICAgICAg
ICBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUobm9kZUlkLCBtb2RlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodE1vZGUgPSBudWxsOwotICAgICAg
ICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAg
ICAgIFdJLmRvbU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyB0aGlzLl9ib3hFbGVtZW50cyAmJiBpIDwgdGhpcy5fYm94
RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNPdmVydmlld0NvbnRl
bnRWaWV3LmpzCmluZGV4IGIzMzAwYjFhODM1YzAzM2RmY2JhNDA4NWY4YmNiYzE2YjVhNTRmN2Yu
LmJiY2IyYWJhNTRhZDZlZDQ0ZjAxMTY2MDNjNmVmNmI4ZjQ2ODExZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc092ZXJ2aWV3Q29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5qcwpAQCAtNjksNyArNjksNyBAQCBXSS5DYW52
YXNPdmVydmlld0NvbnRlbnRWaWV3ID0gY2xhc3MgQ2FudmFzT3ZlcnZpZXdDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbGxlYwogCiAgICAgaGlkZGVuKCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIu
aGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAogICAgICAgICBzdXBlci5oaWRkZW4oKTsKICAgICB9
CkBAIC0xNDUsNyArMTQ1LDcgQEAgV0kuQ2FudmFzT3ZlcnZpZXdDb250ZW50VmlldyA9IGNsYXNz
IENhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xsZWMKICAgICAgICAgbGV0
IGNhbnZhcyA9IGNvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoY2Fu
dmFzLmNzc0NhbnZhc05hbWUpIHsKICAgICAgICAgICAgIGNhbnZhcy5yZXF1ZXN0Q1NTQ2FudmFz
Q2xpZW50Tm9kZXMoKGNzc0NhbnZhc0NsaWVudE5vZGVzKSA9PiB7Ci0gICAgICAgICAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUxpc3QoY3NzQ2FudmFzQ2xpZW50Tm9k
ZXMubWFwKChub2RlKSA9PiBub2RlLmlkKSk7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlTGlzdChjc3NDYW52YXNDbGllbnROb2Rlcy5tYXAoKG5vZGUpID0+
IG5vZGUuaWQpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0xNTMsMTIgKzE1MywxMiBAQCBXSS5DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3ID0g
Y2xhc3MgQ2FudmFzT3ZlcnZpZXdDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbGxlYwogICAgICAg
ICBjYW52YXMucmVxdWVzdE5vZGUoKS50aGVuKChub2RlKSA9PiB7CiAgICAgICAgICAgICBpZiAo
IW5vZGUgfHwgIW5vZGUub3duZXJEb2N1bWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGUuaWQpOwor
ICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGUuaWQpOwogICAg
ICAgICB9KTsKICAgICB9CiAKICAgICBfY29udGVudFZpZXdNb3VzZUxlYXZlKGV2ZW50KQogICAg
IHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAg
ICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52
YXNUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NhbnZhc1RyZWVFbGVtZW50LmpzCmluZGV4IDUxMDEyNmJiZTNlZTZlMzdjM2JlNzEzOTdh
MzRkNmMwMmFiZDVmNzkuLmViZTE4NmIwZmU0MmU0ZjIyNGM4M2M5MGU2OTNmZGY0NDYxMTIyNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nh
bnZhc1RyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NhbnZhc1RyZWVFbGVtZW50LmpzCkBAIC0xMTgsMjEgKzExOCwyMSBAQCBXSS5D
YW52YXNUcmVlRWxlbWVudCA9IGNsYXNzIENhbnZhc1RyZWVFbGVtZW50IGV4dGVuZHMgV0kuRm9s
ZGVyaXplZFRyZWVFbGVtZW50CiAgICAgewogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9i
amVjdC5jc3NDYW52YXNOYW1lKSB7CiAgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LnJlcXVlc3RDU1NDYW52YXNDbGllbnROb2RlcygoY3NzQ2FudmFzQ2xpZW50Tm9kZXMpID0+IHsK
LSAgICAgICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlTGlzdChj
c3NDYW52YXNDbGllbnROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuaWQpLCAiYWxsIik7CisgICAg
ICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlTGlzdChjc3NDYW52YXND
bGllbnROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuaWQpLCAiYWxsIik7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
cmVxdWVzdE5vZGUoKG5vZGUpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUub3duZXJEb2N1bWVudCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShub2RlLmlkLCAiYWxs
Iik7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGUu
aWQsICJhbGwiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCiAgICAgX2hh
bmRsZU1vdXNlT3V0KGV2ZW50KQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlk
ZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhp
Z2hsaWdodCgpOwogICAgIH0KIAogICAgIF91cGRhdGVTdGF0dXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpp
bmRleCA0MDUwYjdjODRiMzQ1MjQ0ZGVlYzUxMWVkMmI4MjMyOWRkNDQwZjI1Li5kYTkwNTU5NzNl
ZDVmNjU4NWVlNGI3NzMwN2RjODdhMDIxYmNmNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtMTIz
LDcgKzEyMyw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkZyYW1lRE9NVHJlZUNvbnRlbnRWaWV3
KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CiAKICAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRE9NU2VhcmNoTWF0Y2hPYmplY3QpIHsKLSAgICAg
ICAgICAgIHZhciByZXN1bHRWaWV3ID0gbmV3IFdJLkZyYW1lRE9NVHJlZUNvbnRlbnRWaWV3KFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5kb21UcmVlLCBleHRyYUFyZ3VtZW50cyk7
CisgICAgICAgICAgICB2YXIgcmVzdWx0VmlldyA9IG5ldyBXSS5GcmFtZURPTVRyZWVDb250ZW50
VmlldyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuZG9tVHJlZSwgZXh0cmFBcmd1bWVudHMp
OwogICAgICAgICAgICAgcmVzdWx0Vmlldy5yZXN0b3JlRnJvbUNvb2tpZSh7bm9kZVRvU2VsZWN0
OiByZXByZXNlbnRlZE9iamVjdC5kb21Ob2RlfSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
VmlldzsKICAgICAgICAgfQpAQCAtMjM1LDcgKzIzNSw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xh
c3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5ET01TZWFyY2hNYXRjaE9iamVjdCkKLSAg
ICAgICAgICAgIHJldHVybiBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuZG9tVHJl
ZTsKKyAgICAgICAgICAgIHJldHVybiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuZG9tVHJl
ZTsKIAogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Tb3VyY2VD
b2RlU2VhcmNoTWF0Y2hPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmpl
Y3Quc291cmNlQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKaW5kZXggM2Iw
ZDgyNzhmNTdiZmVlOTc0Yzc3NGQwMmM2Yjc0MjUwZmMzNDc5Yi4uMDk2YTY1YTJjNzgxYTM0NzVk
MTVkOTUwZjlmZmNmNWU0MTY3OTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMu
anMKQEAgLTEwMCw3ICsxMDAsNyBAQCBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yVVJMID0g
ZnVuY3Rpb24oY29udGV4dE1lbnUsIHVybCwgb3B0aW9ucykKICAgICAgICAgV0kub3BlblVSTCh1
cmwsIGZyYW1lLCB7YWx3YXlzT3BlbkV4dGVybmFsbHk6IHRydWV9KTsKICAgICB9KTsKIAotICAg
IGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpKSB7CisgICAg
aWYgKFdJLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCkpIHsKICAgICAgICAgaWYg
KCFXSS5pc1Nob3dpbmdSZXNvdXJjZXNUYWIoKSkgewogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIFJlc291cmNlcyBUYWIiKSwgKCkgPT4g
ewogICAgICAgICAgICAgICAgIHNob3dSZXNvdXJjZVdpdGhPcHRpb25zKHtpZ25vcmVOZXR3b3Jr
VGFiOiB0cnVlLCBpZ25vcmVTZWFyY2hUYWI6IHRydWV9KTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBX
SS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yRE9NTm9kZSA9IGZ1bmN0aW9uKGNvbnRleHRNZW51
LCBkb21Ob2RlLCBvcHRpb25zID0gewogCiAgICAgaWYgKCFvcHRpb25zLmV4Y2x1ZGVSZXZlYWxF
bGVtZW50ICYmIHdpbmRvdy5ET01BZ2VudCAmJiBkb21Ob2RlLm93bmVyRG9jdW1lbnQpIHsKICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIERPTSBU
cmVlIiksICgpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RFbGVt
ZW50KGRvbU5vZGUuaWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0RWxlbWVu
dChkb21Ob2RlLmlkKTsKICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVT
dG9yYWdlQ29udGVudFZpZXcuanMKaW5kZXggMGY2ZjYyNzE2ZmM1M2ZmYzYzYmNhZGQyNDc4NmI3
N2MwMDZlOTFmZC4uMTdhZTg2OTBjMzE4NTk4NzNmZGMxOTNlYWJkYThlMzhhNzEzZDQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2ll
U3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMTYxLDcgKzE2MSw3
IEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250
ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAgICAgICAgIH07CiAKICAgICAgICAgbGV0IGFs
bFJlc291cmNlcyA9IFtdOwotICAgICAgICBmb3IgKGxldCBmcmFtZSBvZiBXSS5mcmFtZVJlc291
cmNlTWFuYWdlci5mcmFtZXMpIHsKKyAgICAgICAgZm9yIChsZXQgZnJhbWUgb2YgV0kubmV0d29y
a01hbmFnZXIuZnJhbWVzKSB7CiAgICAgICAgICAgICAvLyBUaGUgbWFpbiByZXNvdXJjZSBpc24n
dCBpbiB0aGUgbGlzdCBvZiByZXNvdXJjZXMsIHNvIGFkZCBpdCBhcyBhIGNhbmRpZGF0ZS4KICAg
ICAgICAgICAgIGFsbFJlc291cmNlcy5wdXNoKGZyYW1lLm1haW5SZXNvdXJjZSwgLi4uZnJhbWUu
cmVzb3VyY2VDb2xsZWN0aW9uKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRl
YmFyUGFuZWwuanMKaW5kZXggOGRmMTRiNTViNmJkNzNkYzZmZGRmNThjZjllNDZhYzVhZDRjM2Vk
OS4uMDFhNmUxN2M1NzE1MjI2NWVhZDE5M2RhOTlmNDExYWM2ZmE3NzQxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01EZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xMDIsNyArMTAyLDcgQEAgV0kuRE9NRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS5EZXRhaWxzU2lkZWIKICAgICBfbW91c2VXYXNDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2RvbU5vZGUgJiYgdGhpcy5fZG9tTm9kZS5vd25lckRvY3VtZW50KSB7Ci0g
ICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVz
b3VyY2VGb3JVUkwodGhpcy5fZG9tTm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsKKyAg
ICAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZv
clVSTCh0aGlzLl9kb21Ob2RlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwpOwogICAgICAgICAg
ICAgaWYgKG1haW5SZXNvdXJjZSkKICAgICAgICAgICAgICAgICB2YXIgcGFyZW50RnJhbWUgPSBt
YWluUmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9k
ZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggZGZjMmM1YzRiZDZmZjRjMTMwMTA2YWQ5ZDQ4
ZWI1ODQ5ZTUyODg5ZC4uZmFmYTFjMWNhZGM4NjFkY2E0YjRmZTJhNjBkNWEzYjA2NTZiZTljZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTQwLDcg
KzQwLDcgQEAgV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01Ob2RlRGV0
YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRPTUQKIAogICAgIGNsb3NlZCgpCiAgICAgewot
ICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CiAKICAgICAgICAgc3VwZXIuY2xvc2VkKCk7CiAgICAgfQpAQCAtNTEsMTAg
KzUxLDEwIEBAIFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURl
dGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5ET01ECiAgICAgewogICAgICAgICBzdXBlci5p
bml0aWFsTGF5b3V0KCk7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fYXR0
cmlidXRlc0NoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMu
X2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQsIHRoaXMuX2NoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ3VzdG9t
RWxlbWVudFN0YXRlQ2hhbmdlZCwgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCwgdGhp
cyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2Vy
LkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlzLl9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2
ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQu
Q2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMp
OworICAgICAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5F
dmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLCB0aGlzLl9jdXN0b21FbGVtZW50U3RhdGVD
aGFuZ2VkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93ID0gbmV3
IFdJLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdJLlVJU3RyaW5nKCJUeXBlIikpOwogICAgICAg
ICB0aGlzLl9pZGVudGl0eU5vZGVOYW1lUm93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uU2ltcGxl
Um93KFdJLlVJU3RyaW5nKCJOYW1lIikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIFdJLkRPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXSS5ET01ECiAgICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBzQnlFdmVudChldmVu
dExpc3RlbmVycykgewogICAgICAgICAgICAgbGV0IGV2ZW50TGlzdGVuZXJUeXBlcyA9IG5ldyBN
YXA7CiAgICAgICAgICAgICBmb3IgKGxldCBldmVudExpc3RlbmVyIG9mIGV2ZW50TGlzdGVuZXJz
KSB7Ci0gICAgICAgICAgICAgICAgZXZlbnRMaXN0ZW5lci5ub2RlID0gV0kuZG9tVHJlZU1hbmFn
ZXIubm9kZUZvcklkKGV2ZW50TGlzdGVuZXIubm9kZUlkKTsKKyAgICAgICAgICAgICAgICBldmVu
dExpc3RlbmVyLm5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChldmVudExpc3RlbmVyLm5v
ZGVJZCk7CiAKICAgICAgICAgICAgICAgICBsZXQgZXZlbnRMaXN0ZW5lcnNGb3JUeXBlID0gZXZl
bnRMaXN0ZW5lclR5cGVzLmdldChldmVudExpc3RlbmVyLnR5cGUpOwogICAgICAgICAgICAgICAg
IGlmICghZXZlbnRMaXN0ZW5lcnNGb3JUeXBlKQpAQCAtMzU2LDcgKzM1Niw3IEBAIFdJLkRPTU5v
ZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXSS5ET01ECiAgICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBzQnlOb2RlKGV2
ZW50TGlzdGVuZXJzKSB7CiAgICAgICAgICAgICBsZXQgZXZlbnRMaXN0ZW5lck5vZGVzID0gbmV3
IE1hcDsKICAgICAgICAgICAgIGZvciAobGV0IGV2ZW50TGlzdGVuZXIgb2YgZXZlbnRMaXN0ZW5l
cnMpIHsKLSAgICAgICAgICAgICAgICBldmVudExpc3RlbmVyLm5vZGUgPSBXSS5kb21UcmVlTWFu
YWdlci5ub2RlRm9ySWQoZXZlbnRMaXN0ZW5lci5ub2RlSWQpOworICAgICAgICAgICAgICAgIGV2
ZW50TGlzdGVuZXIubm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGV2ZW50TGlzdGVuZXIu
bm9kZUlkKTsKIAogICAgICAgICAgICAgICAgIGxldCBldmVudExpc3RlbmVyc0Zvck5vZGUgPSBl
dmVudExpc3RlbmVyTm9kZXMuZ2V0KGV2ZW50TGlzdGVuZXIubm9kZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFldmVudExpc3RlbmVyc0Zvck5vZGUpCkBAIC00NDEsNyArNDQxLDcgQEAgV0kuRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bCBleHRlbmRzIFdJLkRPTUQKICAgICAgICAgZnVuY3Rpb24gbGlua0Zvck5vZGVJZChub2RlSWQp
IHsKICAgICAgICAgICAgIHZhciBsaW5rID0gbnVsbDsKICAgICAgICAgICAgIGlmIChub2RlSWQg
IT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygbm9kZUlkID09PSAibnVtYmVyIikgewotICAgICAgICAg
ICAgICAgIHZhciBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7Cisg
ICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQp
OwogICAgICAgICAgICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAgICAgICAgICBsaW5rID0g
V0kubGlua2lmeUFjY2Vzc2liaWxpdHlOb2RlUmVmZXJlbmNlKG5vZGUpOwogICAgICAgICAgICAg
fQpAQCAtNDYwLDcgKzQ2MCw3IEBAIFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xh
c3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5ET01ECiAgICAgICAgICAg
ICBsZXQgbGlua0xpc3QgPSBjb250YWluZXIuY3JlYXRlQ2hpbGQoInVsIiwgIm5vZGUtbGluay1s
aXN0Iik7CiAgICAgICAgICAgICBsZXQgaW5pdGlhbGx5SGlkZGVuSXRlbXMgPSBbXTsKICAgICAg
ICAgICAgIGZvciAobGV0IG5vZGVJZCBvZiBub2RlSWRzKSB7Ci0gICAgICAgICAgICAgICAgbGV0
IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAg
ICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBsZXQgbGluayA9IFdJLmxpbmtpZnlBY2Nlc3NpYmlsaXR5Tm9kZVJlZmVyZW5j
ZShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qcwppbmRleCBlMWIxMjY1YzRlNzIx
YTBkZjFlY2U0ZDIyYTcyYjUyOWZiN2FjOTBjLi41NDU0MmE0YmUyMzYyZGRiNDUyNWYwNGJmMWQ0
OWQ3NzA2YmM5MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01Ob2RlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZVRyZWVFbGVtZW50LmpzCkBAIC02Niw3ICs2
Niw3IEBAIFdJLkRPTU5vZGVUcmVlRWxlbWVudCA9IGNsYXNzIERPTU5vZGVUcmVlRWxlbWVudCBl
eHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWVudAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5n
KCJSZXZlYWwgaW4gRE9NIFRyZWUiKSwgKCkgPT4gewotICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIuaW5zcGVjdEVsZW1lbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCk7CisgICAgICAg
ICAgICBXSS5kb21NYW5hZ2VyLmluc3BlY3RFbGVtZW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
aWQpOwogICAgICAgICB9KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3Lmpz
CmluZGV4IDJkNDMwNmRkZjRjYWUzMDcwMmEyYzk5Nzk5ODI1YjNhODU0OWY4NTMuLjlkNGQ1NzZj
ZDM3MGQwZGJiY2MzNjgyNWY5ZTQ3YmE3MmFhNDEzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVu
dFZpZXcuanMKQEAgLTcwLDkgKzcwLDkgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
RE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5f
ZG9tVHJlZU91dGxpbmUuZWRpdGFibGUgPSB0cnVlOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZG9tVHJlZU91dGxpbmUuZWxlbWVudCk7CiAKLSAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRy
aWJ1dGVNb2RpZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0
dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5D
aGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0
cmlidXRlTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0ku
ZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0cmlidXRl
UmVtb3ZlZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5kb21NYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9k
aWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygibGFzdC1zZWxlY3RlZC1u
b2RlLXBhdGgiLCBudWxsKTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIFdJLkRPTVRyZWVDb250ZW50
VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAg
ICAgewogICAgICAgICBzdXBlci5oaWRkZW4oKTsKIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUo
ZmFsc2UpOwogICAgIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBAIFdJLkRPTVRyZWVDb250ZW50Vmll
dyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAg
ICAgIFdJLnNob3dTaGFkb3dET01TZXR0aW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7CiAgICAgICAgIFdJLnNldHRpbmdzLnNob3dSdWxlcnMucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgICAgIFdJLmRv
bU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7CiAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKIApAQCAtMzcyLDcgKzM3Miw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9
IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVJZGVudGlmaWVycy5sZW5ndGggPT09IDEpOwogCi0g
ICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2Rl
SWRlbnRpZmllcnNbMF0pOworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2Vy
Lm5vZGVGb3JJZChub2RlSWRlbnRpZmllcnNbMF0pOwogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZG9tTm9kZSk7CiAgICAgICAgICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzg5LDcgKzM4OSw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNz
IERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBfcmVzdG9y
ZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRlKGRvY3VtZW50VVJMLCBkZWZhdWx0Tm9kZSkKICAgICB7
Ci0gICAgICAgIGlmICghV0kuZG9tVHJlZU1hbmFnZXIucmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxs
b3dlZCkKKyAgICAgICAgaWYgKCFXSS5kb21NYW5hZ2VyLnJlc3RvcmVTZWxlY3RlZE5vZGVJc0Fs
bG93ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Tm9k
ZShsYXN0U2VsZWN0ZWROb2RlKQpAQCAtNDEyLDE0ICs0MTIsMTQgQEAgV0kuRE9NVHJlZUNvbnRl
bnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
IAogICAgICAgICBmdW5jdGlvbiBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlKG5vZGVJZCkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFXSS5kb21UcmVlTWFuYWdlci5yZXN0b3JlU2VsZWN0ZWRO
b2RlSXNBbGxvd2VkKQorICAgICAgICAgICAgaWYgKCFXSS5kb21NYW5hZ2VyLnJlc3RvcmVTZWxl
Y3RlZE5vZGVJc0FsbG93ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBzZWxlY3ROb2RlLmNhbGwodGhpcywgV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJ
ZCkpOworICAgICAgICAgICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMsIFdJLmRvbU1hbmFnZXIubm9k
ZUZvcklkKG5vZGVJZCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRvY3VtZW50VVJMICYm
IHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZy52YWx1ZSAmJiB0aGlzLl9sYXN0U2Vs
ZWN0ZWROb2RlUGF0aFNldHRpbmcudmFsdWUucGF0aCAmJiB0aGlzLl9sYXN0U2VsZWN0ZWROb2Rl
UGF0aFNldHRpbmcudmFsdWUudXJsID09PSBkb2N1bWVudFVSTC5oYXNoKQotICAgICAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX2xhc3RTZWxl
Y3RlZE5vZGVQYXRoU2V0dGluZy52YWx1ZS5wYXRoLCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJp
bmQodGhpcykpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5wdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQodGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nLnZhbHVlLnBhdGgsIHNlbGVj
dExhc3RTZWxlY3RlZE5vZGUuYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHNlbGVjdE5vZGUuY2FsbCh0aGlzKTsKICAgICB9CkBAIC00NDUsMTAgKzQ0NSwxMCBAQCBXSS5E
T01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmlldwogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9IHRoaXMuX2Rv
bVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAgICBpZiAoc2VsZWN0ZWRET01O
b2RlICYmICF0aGlzLl9kb250U2V0TGFzdFNlbGVjdGVkTm9kZVBhdGgpCi0gICAgICAgICAgICB0
aGlzLl9sYXN0U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcudmFsdWUgPSB7dXJsOiBXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUudXJsLmhhc2gsIHBhdGg6IHNlbGVjdGVkRE9NTm9kZS5w
YXRoKCl9OworICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nLnZh
bHVlID0ge3VybDogV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybC5oYXNoLCBwYXRoOiBz
ZWxlY3RlZERPTU5vZGUucGF0aCgpfTsKIAogICAgICAgICBpZiAoc2VsZWN0ZWRET01Ob2RlKQot
ICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuc2V0SW5zcGVjdGVkTm9kZShzZWxlY3RlZERP
TU5vZGUpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5zZXRJbnNwZWN0ZWROb2RlKHNlbGVj
dGVkRE9NTm9kZSk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
Q29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwogICAg
IH0KQEAgLTU3Myw3ICs1NzMsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBsZXQgbWVkaWFU
eXBlID0gV0kucHJpbnRTdHlsZXNFbmFibGVkID8gInByaW50IiA6ICIiOwogICAgICAgICBQYWdl
QWdlbnQuc2V0RW11bGF0ZWRNZWRpYShtZWRpYVR5cGUpOwogCi0gICAgICAgIFdJLmNzc1N0eWxl
TWFuYWdlci5tZWRpYVR5cGVDaGFuZ2VkKCk7CisgICAgICAgIFdJLmNzc01hbmFnZXIubWVkaWFU
eXBlQ2hhbmdlZCgpOwogICAgIH0KIAogICAgIF90b2dnbGVQcmludFN0eWxlcyhldmVudCkKQEAg
LTYxOCw3ICs2MTgsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQobm9kZUlkZW50aWZpZXJzLmxlbmd0aCA9PT0gdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRz
KTsKIAogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRlbnRpZmllcnMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWRlbnRpZmllcnNbaV0pOworICAgICAgICAgICAgICAgIHZhciBk
b21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXJzW2ldKTsKICAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWRvbU5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjY4LDcgKzY2
OCw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBfdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhub2Rl
SWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFn
ZXIubm9kZUZvcklkKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZG9tTm9k
ZSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzCmluZGV4IGQ1
YTBhYmZkZjU3OWYyMjExYTUwODk2MmY0ZjRlYjViNzVmZGFjMDAuLmI4Y2RhNWIxMDBhMGQ3MmUz
NWQxMThkYWE5ZGMyZWE1MDY1ZmM3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdyaWQuanMKQEAgLTUw
LDEzICs1MCwxMyBAQCBXSS5ET01UcmVlRGF0YUdyaWQgPSBjbGFzcyBET01UcmVlRGF0YUdyaWQg
ZXh0ZW5kcyBXSS5EYXRhR3JpZAogICAgICAgICBpZiAoIWdyaWROb2RlIHx8IHRoaXMuX3ByZXZp
b3VzSG92ZXJlZEVsZW1lbnQgPT09IGdyaWROb2RlLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBncmlkTm9kZS5kb21O
b2RlOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGdyaWROb2Rl
LmRvbU5vZGUuaWQpOworICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUoZ3Jp
ZE5vZGUuZG9tTm9kZS5pZCk7CiAgICAgfQogCiAgICAgX29ubW91c2VvdXQoZXZlbnQpIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwor
ICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRo
aXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBudWxsOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVF
bGVtZW50LmpzCmluZGV4IGMxOWQyOWEyZDI2NDQ4NjllMGRiZWJjMWM1MWM1YjhlY2RmYWFhZDUu
LjMxMDk1NzYyYTMyNTkyMTUyMDdjNGI2N2ZhYmQ1NmVmOWIwZDRjM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVF
bGVtZW50LmpzCkBAIC02MjQsNyArNjI0LDcgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBE
T01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPSB0cnVlOwogICAgICAgICB0aGlzLnRyZWVP
dXRsaW5lLnNlbGVjdERPTU5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgc2VsZWN0ZWRCeVVz
ZXIpOwogICAgICAgICBpZiAoc2VsZWN0ZWRCeVVzZXIpCi0gICAgICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQpOworICAg
ICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuaWQpOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwog
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnN1cHByZXNzUmV2ZWFsQW5kU2VsZWN0ID0gZmFsc2U7
CiAgICAgfQpAQCAtNzM5LDcgKzczOSw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9N
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogCiAgICAgICAgIGlmIChldmVudC50
YXJnZXQgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgPT09ICJBIikgewogICAgICAgICAgICAgbGV0
IHVybCA9IGV2ZW50LnRhcmdldC5ocmVmOwotICAgICAgICAgICAgbGV0IGZyYW1lID0gV0kuZnJh
bWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKG5vZGUuZnJhbWVJZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIGxldCBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRl
bnRpZmllcihub2RlLmZyYW1lSWRlbnRpZmllcik7CiAgICAgICAgICAgICBXSS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zRm9yVVJMKGNvbnRleHRNZW51LCB1cmwsIHtmcmFtZX0pOwogICAgICAgICB9
CiAKQEAgLTc3OSwxMSArNzc5LDExIEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogCiAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZFNlcGFyYXRvcigpOwogCi0gICAgICAgIGlmIChXSS5jc3NTdHlsZU1hbmFnZXIuY2FuRm9y
Y2VQc2V1ZG9DbGFzc2VzKCkpIHsKKyAgICAgICAgaWYgKFdJLmNzc01hbmFnZXIuY2FuRm9yY2VQ
c2V1ZG9DbGFzc2VzKCkpIHsKICAgICAgICAgICAgIGxldCBwc2V1ZG9TdWJNZW51ID0gY29udGV4
dE1lbnUuYXBwZW5kU3ViTWVudUl0ZW0oV0kuVUlTdHJpbmcoIkZvcmNlZCBQc2V1ZG8tQ2xhc3Nl
cyIpKTsKIAogICAgICAgICAgICAgbGV0IGVuYWJsZWRQc2V1ZG9DbGFzc2VzID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5lbmFibGVkUHNldWRvQ2xhc3NlczsKLSAgICAgICAgICAgIFdJLkNTU1N0
eWxlTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzLmZvckVhY2goKHBzZXVkb0NsYXNzKSA9
PiB7CisgICAgICAgICAgICBXSS5DU1NNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXMuZm9y
RWFjaCgocHNldWRvQ2xhc3MpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgZW5hYmxlZCA9IGVu
YWJsZWRQc2V1ZG9DbGFzc2VzLmluY2x1ZGVzKHBzZXVkb0NsYXNzKTsKICAgICAgICAgICAgICAg
ICBwc2V1ZG9TdWJNZW51LmFwcGVuZENoZWNrYm94SXRlbShwc2V1ZG9DbGFzcy5jYXBpdGFsaXpl
KCksICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5z
ZXRQc2V1ZG9DbGFzc0VuYWJsZWQocHNldWRvQ2xhc3MsICFlbmFibGVkKTsKQEAgLTExNzUsNyAr
MTE3NSw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXSS5UcmVlRWxlbWVudAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgdmFyIG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKKyAgICAgICAgICAgIHZhciBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKIAogICAgICAgICAgICAgLy8gU2VsZWN0IGl0IGFuZCBleHBhbmQgaWYgbmVjZXNzYXJ5
LiBXZSBmb3JjZSB0cmVlIHVwZGF0ZSBzbyB0aGF0IGl0IHByb2Nlc3NlcyBkb20gZXZlbnRzIGFu
ZCBpcyB1cCB0byBkYXRlLgogICAgICAgICAgICAgdHJlZU91dGxpbmUuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcwpp
bmRleCAxYzE2MWQ1MmRmZDk0YjdhMjg0Yzc4MmY2ZTAwNTlmOTM4OWM4ZmY0Li5mMzIzOTA3NDNk
N2Q3YThlZjgwOGE1NmJjYTMwNDIzNjQ0NDk0M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBXSS5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQg
ZXh0ZW5kcyBXSS5IaQogICAgIG1vdXNlT3ZlcigpCiAgICAgewogICAgICAgICB2YXIgbm9kZUlk
ID0gdGhpcy5fZG9tVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuaWQ7Ci0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUobm9kZUlkKTsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCk7CiAgICAgfQogCiAgICAgbW91c2VPdXQo
KQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQo
KTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0K
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggYjYyN2UwY2Q5NGQyMjBiYmQwN2M3NjY4
ZDQ1NTBiYWYwOTFkMjNjYi4uMTA4MmE5YjgxMzU4MjE3YTZhZmFlZTY4MzE2YTY0NWNkMzE1M2U2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTMyMiw3ICszMjIsNyBAQCBXSS5ET01UcmVl
T3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxpbmUKICAg
ICAgICAgICAgICAgICBlbGVtZW50Ll9jcmVhdGVUb29sdGlwRm9yTm9kZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShlbGVtZW50ID8g
ZWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5pZCA6IDApOworICAgICAgICBXSS5kb21NYW5hZ2Vy
LmhpZ2hsaWdodERPTU5vZGUoZWxlbWVudCA/IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuaWQg
OiAwKTsKICAgICB9CiAKICAgICBfb25tb3VzZW91dChldmVudCkKQEAgLTMzNiw3ICszMzYsNyBA
QCBXSS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJl
ZU91dGxpbmUKICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBudWxs
OwogICAgICAgICB9CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdo
bGlnaHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwog
ICAgIH0KIAogICAgIF9vbmRyYWdzdGFydChldmVudCkKQEAgLTM1NSw3ICszNTUsNyBAQCBXSS5E
T01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxp
bmUKICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAiY29weU1vdmUi
OwogICAgICAgICB0aGlzLl9ub2RlQmVpbmdEcmFnZ2VkID0gdHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3Q7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGln
aHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQyMyw3ICs0MjMsNyBAQCBXSS5ET01UcmVl
T3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxpbmUKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXMoKTsKLSAgICAgICAgICAgIHZhciBuZXdOb2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9k
ZUZvcklkKG5ld05vZGVJZCk7CisgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IFdJLmRvbU1hbmFn
ZXIubm9kZUZvcklkKG5ld05vZGVJZCk7CiAgICAgICAgICAgICBpZiAobmV3Tm9kZSkKICAgICAg
ICAgICAgICAgICB0aGlzLnNlbGVjdERPTU5vZGUobmV3Tm9kZSwgdHJ1ZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVVcGRhdGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZVVwZGF0ZXIuanMKaW5kZXggZmJkMDVmNjZmY2RlZTk1NjRkOGUzNjIzMzliYjA1
YzEyZWUzNzJjYS4uYTU0NjAyNjZlMzVkMjgxZTM2ODE2MWJhZWU2MjhlZmYyY2YxOWYxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZVVwZGF0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZVVwZGF0ZXIuanMKQEAgLTMwLDEzICszMCwxMyBAQAogCiBXSS5ET01UcmVlVXBk
YXRlciA9IGZ1bmN0aW9uKHRyZWVPdXRsaW5lKQogewotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlz
Ll9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1v
dmVkLCB0aGlzKTsKLSAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRP
TVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlzLl9hdHRyaWJ1dGVzVXBk
YXRlZCwgdGhpcyk7Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9hdHRyaWJ1dGVzVXBk
YXRlZCwgdGhpcyk7Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2NoYXJhY3Rl
ckRhdGFNb2RpZmllZCwgdGhpcyk7Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX2RvY3Vt
ZW50VXBkYXRlZCwgdGhpcyk7Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5DaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMuX2No
aWxkTm9kZUNvdW50VXBkYXRlZCwgdGhpcyk7CisgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0
ZWQsIHRoaXMpOworICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5h
Z2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgV0ku
ZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0cmlidXRl
TW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKKyAgICBXSS5kb21NYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVk
LCB0aGlzLl9hdHRyaWJ1dGVzVXBkYXRlZCwgdGhpcyk7CisgICAgV0kuZG9tTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0
aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOworICAgIFdJLmRvbU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwgdGhpcy5f
ZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKKyAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRE9NTWFuYWdlci5FdmVudC5DaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMuX2NoaWxk
Tm9kZUNvdW50VXBkYXRlZCwgdGhpcyk7CiAKICAgICB0aGlzLl90cmVlT3V0bGluZSA9IHRyZWVP
dXRsaW5lOwogCkBAIC01Myw3ICs1Myw3IEBAIFdJLkRPTVRyZWVVcGRhdGVyID0gZnVuY3Rpb24o
dHJlZU91dGxpbmUpCiBXSS5ET01UcmVlVXBkYXRlci5wcm90b3R5cGUgPSB7CiAgICAgY2xvc2U6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9LAogCiAgICAgX2RvY3VtZW50
VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xNTEsNyArMTUxLDcgQEAgV0kuRE9NVHJlZVVw
ZGF0ZXIucHJvdG90eXBlID0gewogCiAgICAgX3Jlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAgICAgICBX
SS5kb21NYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAKICAgICAgICAgdGhpcy5fcmVj
ZW50bHlJbnNlcnRlZE5vZGVzLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5RGVsZXRl
ZE5vZGVzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IGRj
MGEzZmYwYzhjMjQ3MDE0ODY4NjQ0MTYxODdiZTQ0OTYzOWYzYzguLjExYzRjZTlhOTM0YTFhOTYw
NjA4ZTcxYTkwODI2OGJmYTdmZTczZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVs
LmpzCkBAIC0yMTcsOCArMjE3LDggQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBE
ZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAg
aWYgKERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMgJiYgV0kuc2V0dGluZ3Muc2hv
d0Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC52YWx1ZSkKICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWls
dXJlc0JyZWFrcG9pbnQpOwogCi0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5t
YWluRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZXNSZWN1cnNpdmVseUZvckZy
YW1lKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CisgICAgICAgIGlmIChXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZXNS
ZWN1cnNpdmVseUZvckZyYW1lKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSk7CiAKICAgICAg
ICAgZm9yICh2YXIgc2NyaXB0IG9mIFdJLmRlYnVnZ2VyTWFuYWdlci5rbm93bk5vblJlc291cmNl
U2NyaXB0cykKICAgICAgICAgICAgIHRoaXMuX2FkZFNjcmlwdChzY3JpcHQpOwpAQCAtMjMzLDcg
KzIzMyw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgICAgICBmb3IgKGxldCBk
b21CcmVha3BvaW50IG9mIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kb21CcmVha3BvaW50cykKICAg
ICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGRvbUJyZWFrcG9pbnQpOwogCi0gICAg
ICAgICAgICBmb3IgKGxldCBldmVudExpc3RlbmVyQnJlYWtwb2ludCBvZiBXSS5kb21UcmVlTWFu
YWdlci5ldmVudExpc3RlbmVyQnJlYWtwb2ludHMpCisgICAgICAgICAgICBmb3IgKGxldCBldmVu
dExpc3RlbmVyQnJlYWtwb2ludCBvZiBXSS5kb21NYW5hZ2VyLmV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50cykKICAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGV2ZW50TGlzdGVuZXJC
cmVha3BvaW50KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgeGhyQnJlYWtwb2ludHMgb2YgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLnhockJyZWFrcG9pbnRzKQpAQCAtMjczLDggKzI3Myw4IEBAIFdJ
LkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKICAg
ICB7Ci0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsKLSAg
ICAgICAgICAgIGxldCBtYWluVHJlZUVsZW1lbnQgPSB0aGlzLl9zY3JpcHRzQ29udGVudFRyZWVP
dXRsaW5lLmZpbmRUcmVlRWxlbWVudChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUu
bWFpblJlc291cmNlKTsKKyAgICAgICAgaWYgKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkg
eworICAgICAgICAgICAgbGV0IG1haW5UcmVlRWxlbWVudCA9IHRoaXMuX3NjcmlwdHNDb250ZW50
VHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5t
YWluUmVzb3VyY2UpOwogICAgICAgICAgICAgaWYgKG1haW5UcmVlRWxlbWVudCAmJiB0aGlzLnNo
b3dEZWZhdWx0Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudChtYWluVHJlZUVsZW1lbnQpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFdJLkRl
YnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gV0kuRE9NQnJl
YWtwb2ludFRyZWVFbGVtZW50OwogCi0gICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRy
ZWVNYW5hZ2VyLm5vZGVGb3JJZChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoYnJlYWtwb2ludC5k
b21Ob2RlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudCA9IGdldERP
TU5vZGVUcmVlRWxlbWVudChkb21Ob2RlKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50
IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KSB7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rv
ciA9IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50OwpAQCAtNzA3LDcgKzcwNyw3IEBAIFdJ
LkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAgICAgdGhpcy5fc2NyaXB0c0NvbnRlbnRUcmVl
T3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwogCi0gICAgICAgIHRoaXMuX2FkZFJlc291cmNlc1Jl
Y3Vyc2l2ZWx5Rm9yRnJhbWUoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKKyAg
ICAgICAgdGhpcy5fYWRkUmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUpOwogICAgIH0KIAogICAgIF9icmVha3BvaW50QWRkZWQoZXZlbnQpCkBA
IC0xMDk5LDcgKzEwOTksNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVn
Z2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRlZCk7CiAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChwYXVzZURhdGEsICJFeHBlY3RlZCBET00gYnJlYWtwb2ludCBk
YXRhLCBidXQgZm91bmQgbm9uZS4iKTsKICAgICAgICAgICAgIGlmIChwYXVzZURhdGEgJiYgcGF1
c2VEYXRhLm5vZGVJZCkgewotICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tVHJl
ZU1hbmFnZXIubm9kZUZvcklkKHBhdXNlRGF0YS5ub2RlSWQpOworICAgICAgICAgICAgICAgIGxl
dCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQocGF1c2VEYXRhLm5vZGVJZCk7CiAg
ICAgICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRzID0gV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmRvbUJyZWFrcG9pbnRzRm9yTm9kZShkb21Ob2RlKTsKICAgICAgICAgICAgICAgICBsZXQgZG9t
QnJlYWtwb2ludDsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGRvbUJy
ZWFrcG9pbnRzKSB7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5l
bCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGVi
YQogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbVRyZWVN
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9
IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG5vZGUsICJNaXNzaW5nIG5vZGUgZm9yIGlkLiIsIG5vZGVJZCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTExNjMsNyArMTE2Myw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3Mg
RGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAg
ICAgICAgIHZhciBldmVudEJyZWFrcG9pbnQgPSBudWxsOwogICAgICAgICAgICAgaWYgKHBhdXNl
RGF0YS5ldmVudExpc3RlbmVySWQpCi0gICAgICAgICAgICAgICAgZXZlbnRCcmVha3BvaW50ID0g
V0kuZG9tVHJlZU1hbmFnZXIuYnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXJJZChwYXVzZURhdGEu
ZXZlbnRMaXN0ZW5lcklkKTsKKyAgICAgICAgICAgICAgICBldmVudEJyZWFrcG9pbnQgPSBXSS5k
b21NYW5hZ2VyLmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVySWQocGF1c2VEYXRhLmV2ZW50TGlz
dGVuZXJJZCk7CiAgICAgICAgICAgICBpZiAoIWV2ZW50QnJlYWtwb2ludCkKICAgICAgICAgICAg
ICAgICBldmVudEJyZWFrcG9pbnQgPSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZXZlbnRCcmVha3Bv
aW50Rm9yVHlwZUFuZEV2ZW50TmFtZShXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwg
cGF1c2VEYXRhLmV2ZW50TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3
LmpzCmluZGV4IDUzOTYyOWI4ZTZiZmFiMWQyZTg2YzU0MGY2MDg2Mjc5MjM1MzY4NjIuLjkzOTEx
ODYzM2M5NzgwZTNiOTk1Y2I1ODQzNGY2ZWZmM2YxYzQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVu
dHNUYWJDb250ZW50Vmlldy5qcwpAQCAtMzUsNyArMzUsNyBAQCBXSS5FbGVtZW50c1RhYkNvbnRl
bnRWaWV3ID0gY2xhc3MgRWxlbWVudHNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRC
cm93cwogCiAgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImVsZW1lbnRzIiwgImVsZW1lbnRz
IiwgdGFiQmFySXRlbSwgbnVsbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycywgdHJ1
ZSk7CiAKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21h
aW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0
aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgV0ku
RWxlbWVudHNUYWJDb250ZW50VmlldyA9IGNsYXNzIEVsZW1lbnRzVGFiQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50QnJvd3MKICAgICB7CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogCi0g
ICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCkBAIC0xMDksNyArMTA5LDcgQEAgV0kuRWxl
bWVudHNUYWJDb250ZW50VmlldyA9IGNsYXNzIEVsZW1lbnRzVGFiQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50QnJvd3MKICAgICB7CiAgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuY29u
dGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3MoKTsKIAotICAgICAgICB2YXIg
bWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICB2
YXIgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgICAgICBpZiAo
bWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChtYWluRnJhbWUuZG9tVHJlZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVh
a3BvaW50UG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0V2ZW50QnJlYWtwb2ludFBvcG92ZXIuanMKaW5kZXggYWU4Yjg3ZTZkYmFmNTQ0YmZjOWVj
MDJjODM1ZTRiMWNlNDYwNDM5Ny4uMzVjZTlhYzc1MjQ0NTE3ZTRkYzU3ZjAxNGYxZTVhNWEyN2Q1
NTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRXZlbnRCcmVha3BvaW50UG9wb3Zlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRQb3BvdmVyLmpzCkBAIC0xMDIsNyAr
MTAyLDcgQEAgV0kuRXZlbnRCcmVha3BvaW50UG9wb3ZlciA9IGNsYXNzIEV2ZW50QnJlYWtwb2lu
dFBvcG92ZXIgZXh0ZW5kcyBXSS5Qb3BvdmVyCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwog
ICAgICAgICB0aGlzLl9kb21FdmVudE5hbWVJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
aW5wdXQiLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmdldFN1
cHBvcnRlZEV2ZW50TmFtZXMoKQorICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5nZXRTdXBwb3J0
ZWRFdmVudE5hbWVzKCkKICAgICAgICAgICAgIC50aGVuKChldmVudE5hbWVzKSA9PiB7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fY3VycmVudENvbXBsZXRpb25zID0gW107CiAgICAgICAgICAgICAg
ICAgZm9yIChsZXQgZXZlbnROYW1lIG9mIGV2ZW50TmFtZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZl
bnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggN2M1YWE1NmJmNDY2ZGFhMjNjOWUzMzBj
ZTNmNzFkYTk5NzY4MThlZi4uYjVhN2RkMWE2NWE3MzliYzM3NDY4NGUzNTNjZTc0ZTc2ZjEzYzI2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTg0
LDcgKzg0LDcgQEAgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBFdmVudEJy
ZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmUKICAgICAgICAgdGhpcy5fX2RlbGV0
ZWRWaWFEZWxldGVLZXlib2FyZFNob3J0Y3V0ID0gdHJ1ZTsKIAogICAgICAgICBpZiAodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKQotICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9i
amVjdC5ldmVudExpc3RlbmVyKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3Rl
bmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJl
bW92ZUV2ZW50QnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMTQsNyArMTE0LDcgQEAgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmUKIAog
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtw
b2ludCIpLCAoKSA9PiB7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVy
KQotICAgICAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihicmVha3BvaW50
LmV2ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAg
ICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lCiAgICAg
X3RvZ2dsZUJyZWFrcG9pbnQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZXZlbnRMaXN0ZW5lcikgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVt
b3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVu
dExpc3RlbmVyKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cC5qcwppbmRleCAwYWIyMGNiMzU0ZTE3NzIxNjFhZWU1MDEyNTliNGRmOTkx
NjdmYjEwLi4xODFkMDU5ZGZkNGEyYjgwODQzYTczNzE1NDUzZjcwNWY4MjFhODZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3Rl
bmVyU2VjdGlvbkdyb3VwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKQEAgLTEzMCw3ICsxMzAsNyBA
QCBXSS5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rp
b25Hcm91cCBleHRlbmRzIFdJLkRldGFpbAogCiAgICAgICAgIHRvZ2dsZUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9ldmVu
dExpc3RlbmVyLmRpc2FibGVkID0gIXRvZ2dsZUVsZW1lbnQuY2hlY2tlZDsKLSAgICAgICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZCh0aGlzLl9ldmVudExp
c3RlbmVyLCB0aGlzLl9ldmVudExpc3RlbmVyLmRpc2FibGVkKTsKKyAgICAgICAgICAgIFdJLmRv
bU1hbmFnZXIuc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKHRoaXMuX2V2ZW50TGlzdGVuZXIsIHRo
aXMuX2V2ZW50TGlzdGVuZXIuZGlzYWJsZWQpOwogICAgICAgICAgICAgdXBkYXRlVGl0bGUoKTsK
ICAgICAgICAgfSk7CiAKQEAgLTE2MSw5ICsxNjEsOSBAQCBXSS5FdmVudExpc3RlbmVyU2VjdGlv
bkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCBleHRlbmRzIFdJLkRldGFp
bAogICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2
ZW50KSA9PiB7CiAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQg
PSAhIWNoZWNrYm94RWxlbWVudC5jaGVja2VkOwogICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50
TGlzdGVuZXIuaGFzQnJlYWtwb2ludCkKLSAgICAgICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudExpc3RlbmVyKTsKKyAg
ICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KHRoaXMuX2V2ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMu
X2V2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5fZXZlbnRMaXN0ZW5lcik7CiAKICAgICAgICAg
ICAgIHVwZGF0ZVRpdGxlKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9ybWF0dGVkVmFsdWUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qcwppbmRl
eCAxOWM3ZWZiZTAzY2IyZWQzOGViYTg3MjE0MDc3MWFhMjJlNTBlYTYyLi5kM2VlYzk1YmQ4YWRk
Njg2NWY1MGYwOGRmOTM2Y2M5MzEyMmEzOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qcwpAQCAt
NzgsNyArNzgsNyBAQCBXSS5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yTm9kZSA9IGZ1
bmN0aW9uKG9iamVjdCkKIAogICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcgV0kuRE9NVHJl
ZU91dGxpbmU7CiAgICAgICAgIHRyZWVPdXRsaW5lLnNldFZpc2libGUodHJ1ZSk7Ci0gICAgICAg
IHRyZWVPdXRsaW5lLnJvb3RET01Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5v
ZGVJZCk7CisgICAgICAgIHRyZWVPdXRsaW5lLnJvb3RET01Ob2RlID0gV0kuZG9tTWFuYWdlci5u
b2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgaWYgKCF0cmVlT3V0bGluZS5jaGlsZHJlblswXS5o
YXNDaGlsZHJlbikKICAgICAgICAgICAgIHRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic2luZ2xlLW5vZGUiKTsKICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZCh0cmVlT3V0bGluZS5l
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDY0MGI4YWRmNDVhMDNhMTI0
MDQyNDk5MTVmNjI5MDgzY2YzMTMzYmMuLjkyN2ZmMGE3M2UxMjljOTNjOWFkNzFmYjg0ZGI4YWIw
YjE1YTUyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMTE1LDEyICsxMTUsMTIg
QEAgV0kuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5SZXNvdXJjZVRyZWVFbGVtZW50CiAgICAgICAgIC8vIEltbWVkaWF0ZSBzdXBlcmNsYXNzZXMg
YXJlIHNraXBwZWQsIHNpbmNlIEZyYW1lcyBoYW5kbGUgdGhlaXIgb3duIFNvdXJjZU1hcFJlc291
cmNlcy4KICAgICAgICAgV0kuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5j
YWxsKHRoaXMpOwogCi0gICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hl
ZXRBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVk
LCB0aGlzKTsKICAgICB9CiAKICAgICBvbmRldGFjaCgpCiAgICAgewotICAgICAgICBXSS5jc3NT
dHlsZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQu
U3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWQsIHRoaXMpOworICAgICAgICBX
SS5jc3NNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRBZGRlZCwgdGhpcyk7CiAKICAgICAgICAgc3Vw
ZXIub25kZXRhY2goKTsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAgV0kuRnJhbWVUcmVlRWxl
bWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5SZXNvdXJjZVRyZWVFbGVt
ZW50CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBkb05vdENyZWF0ZUlmTWlzc2luZyA9IHRy
dWU7Ci0gICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9yRnJhbWUodGhpcy5fZnJhbWUsIHRoaXMuYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0No
aWxkUXVldWUuYmluZCh0aGlzKSwgZG9Ob3RDcmVhdGVJZk1pc3NpbmcpOworICAgICAgICBXSS5j
c3NNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZSh0aGlzLl9mcmFt
ZSwgdGhpcy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZS5iaW5kKHRoaXMpLCBk
b05vdENyZWF0ZUlmTWlzc2luZyk7CiAgICAgfQogCiAgICAgb25leHBhbmQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFN0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0dlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggOTcwOGVj
NWI4N2RkMGE0MTI1MmU2YzhiMzE5YWU0ODUwNTJkMjgyNS4uMjY2NzdlNWMzN2RlMjhiNzA5ZTc0
OTgxZTdhZWIxNTBiZjNhNmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC04NCw3ICs4NCw3IEBAIFdJLkdlbmVyYWxTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBHZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dGVuCiAKICAgICBzdHlsZURldGFpbHNQYW5lbEZvY3VzTGFzdFBzZXVkb0NsYXNzQ2hlY2ti
b3goc3R5bGVEZXRhaWxzUGFuZWwpCiAgICAgewotICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9D
bGFzc0NoZWNrYm94ZXNbV0kuQ1NTU3R5bGVNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXMu
bGFzdFZhbHVlXS5mb2N1cygpOworICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNr
Ym94ZXNbV0kuQ1NTTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzLmxhc3RWYWx1ZV0uZm9j
dXMoKTsKICAgICB9CiAKICAgICBzdHlsZURldGFpbHNQYW5lbEZvY3VzRmlsdGVyQmFyKHN0eWxl
RGV0YWlsc1BhbmVsKQpAQCAtMTMxLDEzICsxMzEsMTMgQEAgV0kuR2VuZXJhbFN0eWxlRGV0YWls
c1NpZGViYXJQYW5lbCA9IGNsYXNzIEdlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0
ZW4KIAogICAgIGluaXRpYWxMYXlvdXQoKQogICAgIHsKLSAgICAgICAgaWYgKFdJLmNzc1N0eWxl
TWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkgeworICAgICAgICBpZiAoV0kuY3NzTWFu
YWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkgewogICAgICAgICAgICAgdGhpcy5fZm9yY2Vk
UHNldWRvQ2xhc3NDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAg
ICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJw
c2V1ZG8tY2xhc3NlcyI7CiAKICAgICAgICAgICAgIGxldCBncm91cEVsZW1lbnQgPSBudWxsOwog
Ci0gICAgICAgICAgICBXSS5DU1NTdHlsZU1hbmFnZXIuRm9yY2VhYmxlUHNldWRvQ2xhc3Nlcy5m
b3JFYWNoKGZ1bmN0aW9uKHBzZXVkb0NsYXNzKSB7CisgICAgICAgICAgICBXSS5DU1NNYW5hZ2Vy
LkZvcmNlYWJsZVBzZXVkb0NsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihwc2V1ZG9DbGFzcykgewog
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGxvY2FsaXplIHRoZSBsYWJlbCBzaW5jZSBpdCBp
cyBhIENTUyBwc2V1ZG8tY2xhc3MgZnJvbSB0aGUgQ1NTIHN0YW5kYXJkLgogICAgICAgICAgICAg
ICAgIGxldCBsYWJlbCA9IHBzZXVkb0NsYXNzLmNhcGl0YWxpemUoKTsKIApAQCAtMTk3LDggKzE5
Nyw4IEBAIFdJLkdlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBHZW5lcmFs
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuCiAgICAgICAgIHRoaXMuX2FkZENsYXNzSW5w
dXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLl9hZGRDbGFzc0lucHV0S2V5UHJl
c3NlZC5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fYWRkQ2xhc3NJbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJibHVyIiwgdGhpcy5fYWRkQ2xhc3NJbnB1dEJsdXIuYmluZCh0aGlzKSk7CiAKLSAg
ICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ1NTU3R5bGVNYW5h
Z2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkT3JSZW1vdmVk
LCB0aGlzKTsKLSAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
Q1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkLCB0aGlzLl9zdHlsZVNoZWV0
QWRkZWRPclJlbW92ZWQsIHRoaXMpOworICAgICAgICBXSS5jc3NNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hl
ZXRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkLCB0aGlzLl9zdHls
ZVNoZWV0QWRkZWRPclJlbW92ZWQsIHRoaXMpOwogCiAgICAgICAgIGlmICh0aGlzLl9jbGFzc0xp
c3RDb250YWluZXJUb2dnbGVkU2V0dGluZy52YWx1ZSkKICAgICAgICAgICAgIHRoaXMuX2NsYXNz
VG9nZ2xlQnV0dG9uQ2xpY2tlZCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIFdJLkdlbmVyYWxTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBHZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuCiAKICAgICBnZXQgX2luaXRpYWxTY3JvbGxPZmZzZXQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFXSS5jc3NTdHlsZU1hbmFnZXIuY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkpCisgICAg
ICAgIGlmICghV0kuY3NzTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gdGhpcy5kb21Ob2RlICYmIHRoaXMuZG9tTm9k
ZS5lbmFibGVkUHNldWRvQ2xhc3Nlcy5sZW5ndGggPyAwIDogV0kuR2VuZXJhbFN0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQ7CiAgICAgfQpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIFdJLkdlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBj
bGFzcyBHZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuCiAgICAgICAgIGlmIChl
dmVudC5rZXkgIT09ICJUYWIiKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBw
c2V1ZG9DbGFzc2VzID0gV0kuQ1NTU3R5bGVNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXM7
CisgICAgICAgIGxldCBwc2V1ZG9DbGFzc2VzID0gV0kuQ1NTTWFuYWdlci5Gb3JjZWFibGVQc2V1
ZG9DbGFzc2VzOwogICAgICAgICBsZXQgaW5kZXggPSBwc2V1ZG9DbGFzc2VzLmluZGV4T2YocHNl
dWRvQ2xhc3MpOwogICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICAgICAgIGlm
IChpbmRleCA+IDApIHsKQEAgLTQzOCw3ICs0MzgsNyBAQCBXSS5HZW5lcmFsU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsID0gY2xhc3MgR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRl
bgogICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0No
ZWNrYm94ZXNbV0kuQ1NTU3R5bGVNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXNbMF1dLmZv
Y3VzKCk7CisgICAgICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94ZXNbV0ku
Q1NTTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzWzBdXS5mb2N1cygpOwogICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCmlu
ZGV4IGY3YjkzNDIyNDViYzE1NjE5ZDg1NzBlYWZkM2Y3Y2Y3NzcwOWJlZDkuLjgwYmQxMDUxODQ5
Y2M5MTZjZTQ2M2Q0Njc5OWRkNDgzYWYyNzkzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcwpAQCAtMTU4LDcgKzE1
OCw3IEBAIFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcgPSBjbGFzcyBJ
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlCiAKICAgICAgICAgdGhpcy5fZmV0Y2hpbmdN
b3JlRGF0YSA9IHRydWU7CiAKLSAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIucmVxdWVzdEluZGV4
ZWREYXRhYmFzZURhdGEodGhpcy5fb2JqZWN0U3RvcmUsIHRoaXMuX29iamVjdFN0b3JlSW5kZXgs
IHRoaXMuX2VudHJpZXMubGVuZ3RoLCAyNSwgcHJvY2Vzc0VudHJpZXMuYmluZCh0aGlzKSk7Cisg
ICAgICAgIFdJLmluZGV4ZWREQk1hbmFnZXIucmVxdWVzdEluZGV4ZWREYXRhYmFzZURhdGEodGhp
cy5fb2JqZWN0U3RvcmUsIHRoaXMuX29iamVjdFN0b3JlSW5kZXgsIHRoaXMuX2VudHJpZXMubGVu
Z3RoLCAyNSwgcHJvY2Vzc0VudHJpZXMuYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgX3JlZnJl
c2hCdXR0b25DbGlja2VkKCkKQEAgLTE2OSw3ICsxNjksNyBAQCBXSS5JbmRleGVkRGF0YWJhc2VP
YmplY3RTdG9yZUNvbnRlbnRWaWV3ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVD
b250ZQogCiAgICAgX2NsZWFyQnV0dG9uQ2xpY2tlZCgpCiAgICAgewotICAgICAgICBXSS5zdG9y
YWdlTWFuYWdlci5jbGVhck9iamVjdFN0b3JlKHRoaXMuX29iamVjdFN0b3JlKTsKKyAgICAgICAg
V0kuaW5kZXhlZERCTWFuYWdlci5jbGVhck9iamVjdFN0b3JlKHRoaXMuX29iamVjdFN0b3JlKTsK
ICAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRh
aWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IGU2YmVjNGVlNzUzM2Y4MDY5YTBlODI1ZWQzZDg1NmRi
ZjA4MTkzZDIuLjE1YTg4NjFkZWMxNTk3YjFmZTE2ZjE3OTUwNTlkYTc2YjM1M2YxYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0
YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTE2Miw5ICsxNjIsOSBA
QCBXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBMYXllckRldGFpbHNTaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxzUwogCiAgICAgICAgIGlmIChub2RlLmxheWVyLmlzR2Vu
ZXJhdGVkQ29udGVudCB8fCBub2RlLmxheWVyLmlzUmVmbGVjdGlvbiB8fCBub2RlLmxheWVyLmlz
QW5vbnltb3VzKSB7CiAgICAgICAgICAgICBjb25zdCB1c2VQYWdlQ29vcmRpbmF0ZXMgPSB0cnVl
OwotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0UmVjdChub2RlLmxheWVy
LmJvdW5kcywgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIu
aGlnaGxpZ2h0UmVjdChub2RlLmxheWVyLmJvdW5kcywgdXNlUGFnZUNvb3JkaW5hdGVzKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01O
b2RlKG5vZGUubGF5ZXIubm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxp
Z2h0RE9NTm9kZShub2RlLmxheWVyLm5vZGVJZCk7CiAgICAgfQogCiAgICAgX2RhdGFHcmlkTW91
c2VMZWF2ZShldmVudCkKQEAgLTE3NCw3ICsxNzQsNyBAQCBXSS5MYXllckRldGFpbHNTaWRlYmFy
UGFuZWwgPSBjbGFzcyBMYXllckRldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxz
UwogCiAgICAgX2hpZGVET01Ob2RlSGlnaGxpZ2h0KCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIu
aGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgdGhpcy5faG92ZXJlZERhdGFHcmlkTm9k
ZSA9IG51bGw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMKaW5k
ZXggMDhhZjk5YWJiOWFmMjIzZTM0MGYwOWU4MjlmOWFlOTFlZGU5OGZhYi4uMzE0YTVjNmMxMTE5
NTRkN2I5ZmUyYmU0MjAzNWYzOWZhNThkOTQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFH
cmlkTm9kZS5qcwpAQCAtNjAsNyArNjAsNyBAQCBXSS5MYXllclRyZWVEYXRhR3JpZE5vZGUgPSBj
bGFzcyBMYXllclRyZWVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXSS5EYXRhR3JpZE5vZGUKICAgICB7
CiAgICAgICAgIHRoaXMuX2xheWVyID0gbGF5ZXI7CiAKLSAgICAgICAgdmFyIGRvbU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobGF5ZXIubm9kZUlkKTsKKyAgICAgICAgdmFyIGRv
bU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChsYXllci5ub2RlSWQpOwogCiAgICAgICAg
IHRoaXMuZGF0YSA9IHsKICAgICAgICAgICAgIG5hbWU6IGRvbU5vZGUgPyBkb21Ob2RlLmRpc3Bs
YXlOYW1lIDogV0kuVUlTdHJpbmcoIlVua25vd24gbm9kZSIpLApAQCAtMTM1LDcgKzEzNSw3IEBA
IFdJLkxheWVyVHJlZURhdGFHcmlkTm9kZSA9IGNsYXNzIExheWVyVHJlZURhdGFHcmlkTm9kZSBl
eHRlbmRzIFdJLkRhdGFHcmlkTm9kZQogCiAgICAgICAgIHRoaXMuX291dGxldHMubmFtZUxhYmVs
LnRleHRDb250ZW50ID0gZGF0YTsKIAotICAgICAgICBpZiAoV0kuZG9tVHJlZU1hbmFnZXIubm9k
ZUZvcklkKGxheWVyLm5vZGVJZCkpCisgICAgICAgIGlmIChXSS5kb21NYW5hZ2VyLm5vZGVGb3JJ
ZChsYXllci5ub2RlSWQpKQogICAgICAgICAgICAgbGFiZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZv
cmUodGhpcy5fb3V0bGV0cy5nb1RvQnV0dG9uLCBsYWJlbC5wYXJlbnROb2RlLmZpcnN0Q2hpbGQp
OwogICAgICAgICBlbHNlIGlmICh0aGlzLl9vdXRsZXRzLmdvVG9CdXR0b24ucGFyZW50Tm9kZSkK
ICAgICAgICAgICAgIGxhYmVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fb3V0bGV0cy5n
b1RvQnV0dG9uKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBXSS5MYXllclRyZWVEYXRhR3JpZE5vZGUg
PSBjbGFzcyBMYXllclRyZWVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXSS5EYXRhR3JpZE5vZGUKIAog
ICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkKCkKICAgICB7Ci0gICAgICAgIHZhciBkb21Ob2RlID0g
V0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKHRoaXMuX2xheWVyLm5vZGVJZCk7CisgICAgICAg
IHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQodGhpcy5fbGF5ZXIubm9kZUlk
KTsKICAgICAgICAgV0kuc2hvd01haW5GcmFtZURPTVRyZWUoZG9tTm9kZSwge2lnbm9yZVNlYXJj
aFRhYjogdHJ1ZX0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWls
c1NpZGViYXJQYW5lbC5qcwppbmRleCA3ZjA5YTk1NjUyZmU2YjA5MDM3MzQ1NzhhMzdmMjFlMmRh
Nzk1MmZiLi4zMTBhNzhmMzA0OGEwYjk3MDgyYWJkZGI5MjljZjdjNTQ3ZmY1YWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTIwMCw3ICsy
MDAsNyBAQCBXSS5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJUcmVl
RGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLgogICAgICAgICAgICAgdGhpcy5faGlnaGxp
Z2h0U2VsZWN0ZWROb2RlKCk7CiAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclNlbGVj
dGVkTm9kZSgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlk
ZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgICAgIHRoaXMuX2hpZGVQb3BvdmVyKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMTMsNyArMjEzLDcgQEAgV0kuTGF5ZXJUcmVlRGV0YWlsc1Np
ZGViYXJQYW5lbCA9IGNsYXNzIExheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS4KIAogICAgIF9kYXRhR3JpZExvc3RGb2N1cyhldmVudCkKICAgICB7Ci0gICAgICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIFdJLmRvbU1hbmFn
ZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgdGhpcy5faGlkZVBvcG92ZXIoKTsK
ICAgICB9CiAKQEAgLTIzMSw5ICsyMzEsOSBAQCBXSS5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsID0gY2xhc3MgTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLgogCiAg
ICAgICAgIHZhciBsYXllciA9IGRhdGFHcmlkTm9kZS5sYXllcjsKICAgICAgICAgaWYgKGxheWVy
LmlzR2VuZXJhdGVkQ29udGVudCB8fCBsYXllci5pc1JlZmxlY3Rpb24gfHwgbGF5ZXIuaXNBbm9u
eW1vdXMpCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRSZWN0KGxheWVy
LmJvdW5kcywgdHJ1ZSk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodFJlY3Qo
bGF5ZXIuYm91bmRzLCB0cnVlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShsYXllci5ub2RlSWQpOworICAgICAgICAgICAgV0ku
ZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGxheWVyLm5vZGVJZCk7CiAgICAgfQogCiAgICAg
X3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJzKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMz
RENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwppbmRleCAyYjA5ODE4YTRiNjQ2MmFjZTI1OGYxZjQ1
MWZiMmQ3YjFiYTNjNzM5Li5jODE4ZjBjYmFhYzJhYWNmMDY5ODk2ZDBhMjM0OGFkMTk3ZThmNmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
YXllcnMzRENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKQEAgLTE3OCw3ICsxNzgsNyBAQCBX
SS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGlmICh0aGlzLmxheW91dFJlYXNvbiA9PT0gV0kuVmll
dy5MYXlvdXRSZWFzb24uUmVzaXplKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAgICAgICBXSS5k
b21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICAgICAgbGV0IGRv
Y3VtZW50V2FzVXBkYXRlZCA9IHRoaXMuX3VwZGF0ZURvY3VtZW50KG5vZGUpOwogCiAgICAgICAg
ICAgICBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyc0Zvck5vZGUobm9kZSwgKGxheWVycykgPT4g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCAzZDk3ODc1NWY2MWQyNmViNWFiNjVmZDUzYTQ1
OTRhYzhlNjc1Mzk0Li5kMjMwMmZmNDQ3NmZjYWIwNmE0OGU2ZmI3ZjYxNDliY2Y5M2MxNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtODYsNyArODYsNyBAQCBXSS5Mb2dDb250ZW50Vmll
dyA9IGNsYXNzIExvZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAg
dGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TY29wZUJhci5FdmVudC5TZWxlY3Rp
b25DaGFuZ2VkLCB0aGlzLl9zY29wZUJhclNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKICAg
ICAgICAgdGhpcy5faGFzTm9uRGVmYXVsdExvZ0NoYW5uZWxNZXNzYWdlID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChXSS5Mb2dNYW5hZ2VyLnN1cHBvcnRzTG9nQ2hhbm5lbHMoKSkgeworICAgICAgICBp
ZiAoV0kuQ29uc29sZU1hbmFnZXIuc3VwcG9ydHNMb2dDaGFubmVscygpKSB7CiAgICAgICAgICAg
ICBsZXQgbWVzc2FnZUNoYW5uZWxCYXJJdGVtcyA9IFsKICAgICAgICAgICAgICAgICBuZXcgV0ku
U2NvcGVCYXJJdGVtKFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGxDaGFubmVscywgV0kuVUlT
dHJpbmcoIkFsbCIpLCB0cnVlKSwKICAgICAgICAgICAgICAgICBuZXcgV0kuU2NvcGVCYXJJdGVt
KFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5NZWRpYSwgV0kuVUlTdHJpbmcoIk1lZGlhIiksIGZh
bHNlLCAibWVkaWEiKSwKQEAgLTExMSwxMCArMTExLDEwIEBAIFdJLkxvZ0NvbnRlbnRWaWV3ID0g
Y2xhc3MgTG9nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRo
aXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICAgICAgV0ku
bG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lvblN0
YXJ0ZWQsIHRoaXMuX3Nlc3Npb25TdGFydGVkLCB0aGlzKTsKLSAgICAgICAgV0kubG9nTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB0aGlz
Ll9tZXNzYWdlQWRkZWQsIHRoaXMpOwotICAgICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0
ZWQsIHRoaXMuX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcyk7Ci0gICAg
ICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LkNs
ZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVk
LCB0aGlzLl9zZXNzaW9uU3RhcnRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB0
aGlzLl9tZXNzYWdlQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZCwgdGhpcy5fcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0
aGlzKTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9sb2dDbGVhcmVkLCB0aGlzKTsKIAogICAg
ICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQsIHRoaXMuX3Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMpOwogICAgIH0K
QEAgLTQyMiw3ICs0MjIsNyBAQCBXSS5Mb2dDb250ZW50VmlldyA9IGNsYXNzIExvZ0NvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKHRoaXMuX3N0YXJ0ZWRQcm92
aXNpb25hbExvYWQpCiAgICAgICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzLnB1c2go
bWVzc2FnZSk7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9oYXNOb25EZWZhdWx0TG9nQ2hhbm5lbE1l
c3NhZ2UgJiYgV0kubG9nTWFuYWdlci5sb2dDaGFubmVsU291cmNlcy5pbmNsdWRlcyhtZXNzYWdl
LnNvdXJjZSkpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9oYXNOb25EZWZhdWx0TG9nQ2hhbm5lbE1l
c3NhZ2UgJiYgV0kuY29uc29sZU1hbmFnZXIubG9nQ2hhbm5lbFNvdXJjZXMuaW5jbHVkZXMobWVz
c2FnZS5zb3VyY2UpKSB7CiAgICAgICAgICAgICB0aGlzLl9oYXNOb25EZWZhdWx0TG9nQ2hhbm5l
bE1lc3NhZ2UgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKTsKICAgICAg
ICAgICAgIHRoaXMuX3Njb3BlQmFyLml0ZW0oV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLkluZm9z
KS5oaWRkZW4gPSBmYWxzZTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBXSS5Mb2dDb250ZW50VmlldyA9
IGNsYXNzIExvZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgIF9jbGVh
ckxvZygpCiAgICAgewotICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlcXVlc3RDbGVhck1lc3NhZ2Vz
KCk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlcXVlc3RDbGVhck1lc3NhZ2VzKCk7CiAg
ICAgfQogCiAgICAgX2dhcmJhZ2VDb2xsZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcuanMKaW5kZXggMDcwYTViZTk0ZTA0ODZjZTVkMDk1ZDJmYzY0YjMwYjk0MTZhYWE4
OC4uYzQzMmRiZTg5Nzg1YTA0ZmE4OGRlOGJmOGVmOThjN2I4OTkxN2YzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKQEAgLTEzMCw3ICsxMzAsNyBAQCBXSS5OZXR3
b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZQogICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJ
LlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0Rp
ZEZpbmlzaCwgdGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0ku
UmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZhaWwsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0RpZEZh
aWwsIHRoaXMpOwogICAgICAgICBXSS5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291
cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VUcmFuc2ZlclNp
emVEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENo
YW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29y
a01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJh
bWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJ
LnRpbWVsaW5lTWFuYWdlci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJl
Y29yZEFkZGVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSA9
IHRydWU7CkBAIC0yNDgsNyArMjQ4LDcgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBj
bGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAg
ICAgV0kuUmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAg
ICAgICAgV0kucmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRTZXR0aW5nLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLnNldHRpbmdzLmNsZWFyTmV0d29ya09u
TmF2aWdhdGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAg
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5GcmFtZVJlc291
cmNlTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
RnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIucGVyc2lz
dGVudE5ldHdvcmtUaW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlRpbWVsaW5lLkV2ZW50
LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAK
ICAgICAgICAgc3VwZXIuY2xvc2VkKCk7CkBAIC05MjYsNyArOTI2LDcgQEAgV0kuTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJ
LkNvbnRlbnRWaWUKIAogICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgewog
ICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gV0kucGFnZVRhcmdldCkKLSAgICAgICAgICAgICAg
ICBwb3B1bGF0ZVJlc291cmNlc0ZvckZyYW1lKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZSk7CisgICAgICAgICAgICAgICAgcG9wdWxhdGVSZXNvdXJjZXNGb3JGcmFtZShXSS5uZXR3
b3JrTWFuYWdlci5tYWluRnJhbWUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHBvcHVsYXRlUmVzb3VyY2VzRm9yVGFyZ2V0KHRhcmdldCk7CiAgICAgICAgIH0KQEAgLTE0MjYs
NyArMTQyNiw3IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIH0KIAogICAgICAg
ICBXSS5IQVJCdWlsZGVyLmJ1aWxkQXJjaGl2ZShyZXNvdXJjZXMpLnRoZW4oKGhhcikgPT4gewot
ICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZTsKKyAgICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWU7CiAgICAgICAgICAgICBsZXQgYXJjaGl2ZU5hbWUgPSBtYWluRnJhbWUubWFpblJlc291
cmNlLnVybENvbXBvbmVudHMuaG9zdCB8fCBtYWluRnJhbWUubWFpblJlc291cmNlLmRpc3BsYXlO
YW1lIHx8ICJBcmNoaXZlIjsKICAgICAgICAgICAgIGxldCB1cmwgPSAid2ViLWluc3BlY3Rvcjov
Ly8iICsgZW5jb2RlVVJJKGFyY2hpdmVOYW1lKSArICIuaGFyIjsKICAgICAgICAgICAgIFdJLnNh
dmVEYXRhVG9GaWxlKHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50Lmpz
CmluZGV4IDVmNTllZDlmOGU1NGMxOWMyOTAzYzQ0ZjBhZDMwNmFmZTEwZTQzZTAuLjdmOTFmNGM2
NDA3OTZlOGIzOWQxNzFmNWY0NDk3MGZlMjYwM2Q4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5qcwpAQCAtMjQ2LDcgKzI0Niw3IEBAIFdJLk9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50IGV4dGVuZHMg
V0kuR2VuZXJhCiAgICAgICAgIGlmIChyZXNvbHZlZFZhbHVlLnN1YnR5cGUgPT09ICJub2RlIikg
ewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiQ29weSBh
cyBIVE1MIiksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUucHVz
aE5vZGVUb0Zyb250ZW5kKGZ1bmN0aW9uKG5vZGVJZCkgewotICAgICAgICAgICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKS5jb3B5Tm9kZSgpOworICAgICAgICAg
ICAgICAgICAgICBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpLmNvcHlOb2RlKCk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKIApAQCAtMjU5LDcgKzI1OSw3IEBA
IFdJLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQmFzZVRyZWVF
bGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhCiAKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBET00gVHJlZSIpLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLnB1c2hOb2RlVG9Gcm9udGVuZChmdW5jdGlvbihu
b2RlSWQpIHsKLSAgICAgICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaW5zcGVjdEVs
ZW1lbnQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0
RWxlbWVudChub2RlSWQpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCmluZGV4IDQxNGY0ZjA4OGI1
NDI4MDM3ZmFkNjJkOTY0YzU4OWU2MzE0NGM2YWMuLmEwYmU4ZGI5YmNlOTdkYTQzNDdkNzM4Nzkz
OTUyN2RiMTM4ZDFmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBAIC0zNTYsOCArMzU2LDgg
QEAgV0kuT2JqZWN0VHJlZVZpZXcgPSBjbGFzcyBPYmplY3RUcmVlVmlldyBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl90cmFja2luZ0VudHJpZXMgPSB0cnVlOwogCiAgICAgICAgIGlm
ICh0aGlzLl9pbkNvbnNvbGUpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX3VudHJhY2tXZWFrRW50
cmllcywgdGhpcyk7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuTG9nTWFuYWdlci5FdmVudC5TZXNzaW9uU3RhcnRlZCwgdGhpcy5fdW50cmFja1dlYWtFbnRy
aWVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fdW50cmFja1dlYWtFbnRy
aWVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuU2Vzc2lvblN0YXJ0ZWQsIHRoaXMuX3VudHJhY2tX
ZWFrRW50cmllcywgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM3NCw4ICszNzQsOCBA
QCBXSS5PYmplY3RUcmVlVmlldyA9IGNsYXNzIE9iamVjdFRyZWVWaWV3IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX29iamVjdC5yZWxlYXNlV2Vha0NvbGxlY3Rpb25FbnRyaWVzKCk7
CiAKICAgICAgICAgaWYgKHRoaXMuX2luQ29uc29sZSkgewotICAgICAgICAgICAgV0kubG9nTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhp
cy5fdW50cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB0
aGlzLl91bnRyYWNrV2Vha0VudHJpZXMsIHRoaXMpOworICAgICAgICAgICAgV0kuY29uc29sZU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVk
LCB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMsIHRoaXMpOworICAgICAgICAgICAgV0kuY29uc29s
ZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5TZXNz
aW9uU3RhcnRlZCwgdGhpcy5fdW50cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdHJpZXMgdG8gcmVsZWFzZSB3ZWFrIGVudHJp
ZXMgaWYgdGhpcyBvYmplY3Qgd2FzIGEgV2Vha01hcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09wZW5SZXNvdXJjZURpYWxvZy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09wZW5SZXNvdXJjZURpYWxv
Zy5qcwppbmRleCBmNjM4ZjhlMGMwZjJjYmUxNjM3OTEwMjIyNjk3OTgxOGFkMGJhYmJhLi4wZDc1
YmZjM2NlN2FjZmM4OWE5YjZhNzYzNzU1NGQ5ZjBmZTRkMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PcGVuUmVzb3VyY2VEaWFsb2cuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3BlblJlc291
cmNlRGlhbG9nLmpzCkBAIC0xMzUsOCArMTM1LDggQEAgV0kuT3BlblJlc291cmNlRGlhbG9nID0g
Y2xhc3MgT3BlblJlc291cmNlRGlhbG9nIGV4dGVuZHMgV0kuRGlhbG9nCiAgICAgICAgIFdJLlRh
cmdldC5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldC5FdmVudC5SZXNvdXJjZUFkZGVkLCB0aGlz
Ll9yZXNvdXJjZVdhc0FkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlz
Ll9zY3JpcHRBZGRlZCwgdGhpcyk7CiAKLSAgICAgICAgaWYgKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZSkKLSAgICAgICAgICAgIHRoaXMuX2FkZFJlc291cmNlc0ZvckZyYW1lKFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CisgICAgICAgIGlmIChXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZXNGb3JGcmFt
ZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogCiAgICAgICAgIGZvciAobGV0IHRhcmdl
dCBvZiBXSS50YXJnZXRzKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9PSBXSS5tYWluVGFy
Z2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcwppbmRleCAyZjc2YjZjZmVjNmNm
MGJiZWY4MTk1NjZlMzljZjhiYTM5ZTI3OWIwLi5kNGEwZWE3ODAyZjc0ZDM0N2NlNjlhYWI3ZDU2
ODQ2YTliMjI4NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcwpAQCAtNTMs
MTMgKzUzLDEzIEBAIFdJLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAgICAgV0kuRnJhbWUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVu
dC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRo
aXMpOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwgdGhpcy5fc2NyaXB0V2FzQWRkZWQsIHRo
aXMpOwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0UmVtb3ZlZCwgdGhpcy5fc2NyaXB0V2FzUmVtb3ZlZCwg
dGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRzQ2xlYXJlZCwgdGhpcy5fc2NyaXB0c0NsZWFyZWQs
IHRoaXMpOwogCi0gICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRB
ZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5D
U1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0
aGlzKTsKIAogICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFy
Z2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB0aGlzLl90YXJnZXRSZW1vdmVkLCB0aGlz
KTsKIApAQCAtOTQsMTUgKzk0LDE1IEBAIFdJLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3Mg
UmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAg
IHN1cGVyLmNsb3NlZCgpOwogCiAgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAg
ICAgICBXSS5ub3RpZmljYXRpb25zLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7CiAgICAgfQogCiAgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewotICAgICAg
ICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICB0
aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CisgICAgICAgIGlmIChXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWUpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuc2hv
d0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTcsOCArMTk3LDgg
QEAgV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBl
eHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICB7CiAgICAgICAgIHN1cGVyLmluaXRpYWxM
YXlvdXQoKTsKIAotICAgICAgICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
KQotICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKFdJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CisgICAgICAgIGlmIChXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVNYWluUmVzb3VyY2VE
aWRDaGFuZ2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lKTsKIAogICAgICAgICBmb3IgKGxl
dCBzY3JpcHQgb2YgV0kuZGVidWdnZXJNYW5hZ2VyLmtub3duTm9uUmVzb3VyY2VTY3JpcHRzKSB7
CiAgICAgICAgICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKQEAgLTI2NCw3ICsyNjQsNyBA
QCBXSS5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4
dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogCiAgICAgX21haW5GcmFtZURpZENoYW5nZShldmVu
dCkKICAgICB7Ci0gICAgICAgIHRoaXMuX21haW5GcmFtZU1haW5SZXNvdXJjZURpZENoYW5nZShX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpOworICAgICAgICB0aGlzLl9tYWluRnJh
bWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lKTsKICAg
ICB9CiAKICAgICBfbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKG1haW5GcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJj
aFNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NlYXJjaFNpZGViYXJQYW5lbC5qcwppbmRleCBkZWFmNjZiY2EzZDg2YzkwYTE2OGE0YjVm
MDhmYzFiNGNkMTM0ZDIwLi5mMTdiYWI0Mzk2MGY3MjQ1ZDY5NWVkNTM0OWVjNTU4MGNmYzU1Mjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZWFyY2hTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2VhcmNoU2lkZWJhclBhbmVsLmpzCkBAIC0xNDksNyArMTQ5LDcgQEAgV0ku
U2VhcmNoU2lkZWJhclBhbmVsID0gY2xhc3MgU2VhcmNoU2lkZWJhclBhbmVsIGV4dGVuZHMgV0ku
TmF2aWdhdGlvblNpZGViYXJQYW4KICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIXJlc291
cmNlTWF0Y2hlcyB8fCAhcmVzb3VyY2VNYXRjaGVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgdmFyIGZyYW1lID0gV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOworICAgICAgICAgICAgICAgIHZh
ciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCBXSS5TZWFyY2hTaWRlYmFyUGFuZWwgPSBjbGFzcyBTZWFy
Y2hTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbgogICAgICAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fZG9tU2VhcmNoSWRlbnRpZmllciAhPT0gc2VhcmNoSWQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICAgICAgdmFy
IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZG9tTm9kZSB8fCAhZG9tTm9kZS5v
d25lckRvY3VtZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1
OSw3ICsyNTksNyBAQCBXSS5TZWFyY2hTaWRlYmFyUGFuZWwgPSBjbGFzcyBTZWFyY2hTaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbgogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBhIGZyYW1lIHRvIGRvIHJlc291cmNlRm9yVVJMLCBidXQgRE9NQWdlbnQgZG9lcyBu
b3QgcHJvdmlkZSBhIGZyYW1lSWQuCi0gICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGRvbU5vZGUub3duZXJEb2N1
bWVudC5kb2N1bWVudFVSTCk7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGRvbU5vZGUub3duZXJEb2N1bWVudC5kb2N1
bWVudFVSTCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMjg4LDcgKzI4OCw3IEBAIFdJLlNlYXJjaFNp
ZGViYXJQYW5lbCA9IGNsYXNzIFNlYXJjaFNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRp
b25TaWRlYmFyUGFuCiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2luZG93LkRPTUFnZW50KQot
ICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZW5zdXJlRG9jdW1lbnQoKTsKKyAgICAgICAg
ICAgIFdJLmRvbU1hbmFnZXIuZW5zdXJlRG9jdW1lbnQoKTsKIAogICAgICAgICBpZiAod2luZG93
LlBhZ2VBZ2VudCkKICAgICAgICAgICAgIFBhZ2VBZ2VudC5zZWFyY2hJblJlc291cmNlcyhzZWFy
Y2hRdWVyeSwgaXNDYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCByZXNvdXJjZXNDYWxsYmFjay5iaW5k
KHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGVhMWQx
NWY1Yjg5YTg1MjFiYzg5MWE0OGU1OTc2NWY3ZGJmZTQ2MTguLjE5MDQ2ODI4ZDU5ZGU1MDIyNjI2
NWUzOWFjOGMzNGFhNDMyN2UwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmll
dy5qcwpAQCAtMjEwLDcgKzIxMCw3IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAg
IHpvb21FZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nRWRpdG9yLkV2ZW50LlZhbHVl
RGlkQ2hhbmdlLCAoKSA9PiB7IFdJLnNldFpvb21GYWN0b3Ioem9vbUVkaXRvci52YWx1ZSk7IH0p
OwogICAgICAgICBXSS5zZXR0aW5ncy56b29tRmFjdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0
dGluZy5FdmVudC5DaGFuZ2VkLCAoKSA9PiB7IHpvb21FZGl0b3IudmFsdWUgPSBXSS5nZXRab29t
RmFjdG9yKCkubWF4RGVjaW1hbHMoMik7IH0pOwogCi0gICAgICAgIGlmIChXSS5Mb2dNYW5hZ2Vy
LnN1cHBvcnRzTG9nQ2hhbm5lbHMoKSkgeworICAgICAgICBpZiAoV0kuQ29uc29sZU1hbmFnZXIu
c3VwcG9ydHNMb2dDaGFubmVscygpKSB7CiAgICAgICAgICAgICBjb25zdCBsb2dMZXZlbHMgPSBb
CiAgICAgICAgICAgICAgICAgW1dJLkxvZ2dpbmdDaGFubmVsLkxldmVsLk9mZiwgV0kuVUlTdHJp
bmcoIk9mZiIpXSwKICAgICAgICAgICAgICAgICBbV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuQmFz
aWMsIFdJLlVJU3RyaW5nKCJCYXNpYyIpXSwKQEAgLTIyMSw3ICsyMjEsNyBAQCBXSS5TZXR0aW5n
c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRzIFdJ
LlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgICAgIHdlYnJ0YzogV0kuVUlTdHJpbmcoIldlYlJU
QyBMb2dnaW5nOiIpLAogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgbGV0IGNoYW5uZWxz
ID0gV0kubG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7CisgICAgICAgICAgICBsZXQg
Y2hhbm5lbHMgPSBXSS5jb25zb2xlTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7CiAgICAg
ICAgICAgICBmb3IgKGxldCBjaGFubmVsIG9mIGNoYW5uZWxzKSB7CiAgICAgICAgICAgICAgICAg
bGV0IGxvZ0VkaXRvciA9IGdlbmVyYWxTZXR0aW5nc1ZpZXcuYWRkR3JvdXBXaXRoQ3VzdG9tU2V0
dGluZyhlZGl0b3JMYWJlbHNbY2hhbm5lbC5zb3VyY2VdLCBXSS5TZXR0aW5nRWRpdG9yLlR5cGUu
U2VsZWN0LCB7dmFsdWVzOiBsb2dMZXZlbHN9KTsKICAgICAgICAgICAgICAgICBsb2dFZGl0b3Iu
dmFsdWUgPSBjaGFubmVsLmxldmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpp
bmRleCA1MmZlNzFjYTJjYjE1Mzg5MWRmZmFiZTExZWUwMWE5MzYyNmVkNDIyLi5lM2U5ZjlmNDIz
NDQ2ZGFkZDViMDUyMjVjMzU3OTJjN2ZiODc0NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4
dEVkaXRvci5qcwpAQCAtOTksNyArOTksNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogCiAgICAgICAg
IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29u
dHJvbCwgIkciLCB0aGlzLnNob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpLCB0aGlzLmVsZW1l
bnQpOwogCi0gICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5h
Z2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMpOworICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNs
ZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpA
QCAtMTkxMSwxMyArMTkxMSwxMyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNv
dXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICAgICAgICAg
IGlmICghbm9kZUlkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
ICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwor
ICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKICAgICAgICAgICAgICAgICBpZiAoIWRvbU5vZGUub3duZXJEb2N1bWVudCkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgdmFyIGdvVG9CdXR0b24g
PSB0aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV0kuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOwog
ICAgICAgICAgICAgICAgIGdvVG9CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaW5zcGVjdEVs
ZW1lbnQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0
RWxlbWVudChub2RlSWQpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldENTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uLmpzCmluZGV4IGUxMWMwYTRjZWRiZmMyMzk3OWIzYmIxNThkNDI1YjVh
ZTgwNGJlYWYuLjdmNGZjNjEzZGM0MThmYTE4Mzc5NWI2Nzg3MGUxYTUyZjViYzk5ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5qcwpAQCAtNDE0LDcgKzQxNCw3IEBAIFdJLlNwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24gPSBjbGFzcyBTcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TCiAKICAg
ICAgICAgbGV0IHVybDsKICAgICAgICAgaWYgKHNvdXJjZUNvZGUudXJsQ29tcG9uZW50cy5zY2hl
bWUgPT09ICJkYXRhIikgewotICAgICAgICAgICAgbGV0IG1haW5SZXNvdXJjZSA9IFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2U7CisgICAgICAgICAgICBsZXQg
bWFpblJlc291cmNlID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZTsK
ICAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5sYXN0UGF0aENvbXBv
bmVudC5lbmRzV2l0aCgiLmh0bWwiKSkKICAgICAgICAgICAgICAgICB1cmwgPSBtYWluUmVzb3Vy
Y2UudXJsLnJlcGxhY2UoL1wuaHRtbCQvLCAiLWRhdGEuY3NzIik7CiAgICAgICAgICAgICBlbHNl
IHsKQEAgLTQ2MywxNyArNDYzLDE3IEBAIFdJLlNwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24gPSBjbGFzcyBTcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TCiAgICAgX2hp
Z2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3R5
bGUub3duZXJSdWxlKSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRE
T01Ob2RlKHRoaXMuX3N0eWxlLm5vZGUuaWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5o
aWdobGlnaHRET01Ob2RlKHRoaXMuX3N0eWxlLm5vZGUuaWQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHNlbGVjdG9yVGV4dCA9IHRoaXMuX3NlbGVjdG9y
RWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhp
Z2hsaWdodFNlbGVjdG9yKHNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUubm9kZS5vd25lckRvY3Vt
ZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxpZ2h0U2Vs
ZWN0b3Ioc2VsZWN0b3JUZXh0LCB0aGlzLl9zdHlsZS5ub2RlLm93bmVyRG9jdW1lbnQuZnJhbWVJ
ZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBfaGlkZURPTU5vZGVIaWdobGlnaHQoKQogICAgIHsK
LSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0KIAogICAgIF9o
YW5kbGVFZGl0b3JGaWx0ZXJBcHBsaWVkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWls
c1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3By
ZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IDNhYjA5MTg3ZjYzZjYxNjU5
MWI0Y2Y0ZWZjNjA1NjYzZjVjM2JjYjEuLmUwZjVjYTgzNTAwOTAxNWQyNzI2ZDQwMmYyODExNjRm
NDMzMmFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuanMKQEAgLTEwNCw3ICsxMDQsNyBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
ZQogICAgICAgICBpZiAodGhpcy5ub2RlU3R5bGVzLm5vZGUuaXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgc3R5bGVTaGVldHMgPSBX
SS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMuZmlsdGVyKHN0eWxlU2hlZXQgPT4gc3R5bGVT
aGVldC5oYXNJbmZvKCkgJiYgIXN0eWxlU2hlZXQuaXNJbmxpbmVTdHlsZVRhZygpICYmICFzdHls
ZVNoZWV0LmlzSW5saW5lU3R5bGVBdHRyaWJ1dGVTdHlsZVNoZWV0KCkpOworICAgICAgICBsZXQg
c3R5bGVTaGVldHMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzLmZpbHRlcihzdHlsZVNoZWV0
ID0+IHN0eWxlU2hlZXQuaGFzSW5mbygpICYmICFzdHlsZVNoZWV0LmlzSW5saW5lU3R5bGVUYWco
KSAmJiAhc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpKTsKICAg
ICAgICAgaWYgKCFzdHlsZVNoZWV0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTI3OCw3ICsyNzgsNyBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBj
bGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICB9CiAKICAg
ICAgICAgbGV0IHBzZXVkb0VsZW1lbnRzID0gQXJyYXkuZnJvbSh0aGlzLm5vZGVTdHlsZXMubm9k
ZS5wc2V1ZG9FbGVtZW50cygpLnZhbHVlcygpKTsKLSAgICAgICAgUHJvbWlzZS5hbGwocHNldWRv
RWxlbWVudHMubWFwKChwc2V1ZG9FbGVtZW50KSA9PiBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVz
Rm9yTm9kZShwc2V1ZG9FbGVtZW50KS5yZWZyZXNoSWZOZWVkZWQoKSkpCisgICAgICAgIFByb21p
c2UuYWxsKHBzZXVkb0VsZW1lbnRzLm1hcCgocHNldWRvRWxlbWVudCkgPT4gV0kuY3NzTWFuYWdl
ci5zdHlsZXNGb3JOb2RlKHBzZXVkb0VsZW1lbnQpLnJlZnJlc2hJZk5lZWRlZCgpKSkKICAgICAg
ICAgLnRoZW4oKHBzZXVkb05vZGVTdHlsZXMpID0+IHsKICAgICAgICAgICAgIGZvciAobGV0IHBz
ZXVkb05vZGVTdHlsZSBvZiBwc2V1ZG9Ob2RlU3R5bGVzKSB7CiAgICAgICAgICAgICAgICAgY3Jl
YXRlSGVhZGVyKFdJLlVJU3RyaW5nKCJQc2V1ZG8gRWxlbWVudCIpLCBwc2V1ZG9Ob2RlU3R5bGUu
bm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3RvcmFnZVNpZGViYXJQYW5lbC5qcwppbmRleCBlYjNjNTA4NzI1NmYz
Yjk5MDlhZjU5MTQwNGZjNGY1NDgyMjEwNTVjLi5hZmEwYmJjYWM0Njg0NWE4YzdlYTEzOTllOWFk
ZDVkZGQyMWRlODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VTaWRlYmFyUGFuZWwuanMKQEAgLTczLDI5
ICs3MywzMSBAQCBXSS5TdG9yYWdlU2lkZWJhclBhbmVsID0gY2xhc3MgU3RvcmFnZVNpZGViYXJQ
YW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmFyUAogICAgICAgICB0aGlzLl9hcHBsaWNh
dGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fYXBwbGljYXRp
b25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0gbmV3IE1hcDsKIAotICAgICAgICBXSS5zdG9yYWdl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0
b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0
aGlzKTsKLSAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TdG9y
YWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX2RvbVN0b3Jh
Z2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7Ci0gICAgICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcyk7Ci0gICAg
ICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIu
RXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fZGF0YWJhc2VXYXNBZGRlZCwgdGhpcyk7Ci0g
ICAgICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFn
ZXIuRXZlbnQuRGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMuX2RhdGFiYXNlV2FzSW5zcGVjdGVk
LCB0aGlzKTsKLSAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5T
dG9yYWdlTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5faW5kZXhl
ZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOwotICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX3N0b3Jh
Z2VDbGVhcmVkLCB0aGlzKTsKLQorICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3JhZ2VPYmplY3RX
YXNBZGRlZCwgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzKTsKKyAgICAg
ICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01TdG9yYWdlTWFu
YWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX2RvbVN0b3JhZ2VPYmpl
Y3RXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAg
ICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NU3RvcmFnZU1h
bmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOworICAgICAg
ICBXSS5kYXRhYmFzZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EYXRhYmFzZU1hbmFnZXIu
RXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fZGF0YWJhc2VXYXNBZGRlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLmRhdGFiYXNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRhdGFiYXNlTWFu
YWdlci5FdmVudC5EYXRhYmFzZVdhc0luc3BlY3RlZCwgdGhpcy5fZGF0YWJhc2VXYXNJbnNwZWN0
ZWQsIHRoaXMpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRo
aXMpOworICAgICAgICBXSS5pbmRleGVkREJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuSW5k
ZXhlZERCTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5faW5kZXhl
ZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXSS5pbmRleGVkREJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuSW5kZXhlZERCTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9z
dG9yYWdlQ2xlYXJlZCwgdGhpcyk7CiAgICAgICAgIFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVN
YW5pZmVzdEFkZGVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMpOwogICAgICAgICBX
SS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RSZW1vdmVkLCB0aGlzLl9mcmFtZU1hbmlm
ZXN0UmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwg
dGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuY29udGVudFRyZWVP
dXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlk
Q2hhbmdlLCB0aGlzLl90cmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAgICBm
b3IgKHZhciBkb21TdG9yYWdlT2JqZWN0IG9mIFdJLnN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VP
YmplY3RzKQorICAgICAgICBmb3IgKHZhciBkb21TdG9yYWdlT2JqZWN0IG9mIFdJLmRvbVN0b3Jh
Z2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmplY3RzKQogICAgICAgICAgICAgdGhpcy5fYWRkRE9NU3Rv
cmFnZU9iamVjdChkb21TdG9yYWdlT2JqZWN0KTsKIAotICAgICAgICBmb3IgKHZhciBjb29raWVT
dG9yYWdlT2JqZWN0IG9mIFdJLnN0b3JhZ2VNYW5hZ2VyLmNvb2tpZVN0b3JhZ2VPYmplY3RzKQor
ICAgICAgICBmb3IgKHZhciBjb29raWVTdG9yYWdlT2JqZWN0IG9mIFdJLmRvbVN0b3JhZ2VNYW5h
Z2VyLmNvb2tpZVN0b3JhZ2VPYmplY3RzKQogICAgICAgICAgICAgdGhpcy5fYWRkQ29va2llU3Rv
cmFnZU9iamVjdChjb29raWVTdG9yYWdlT2JqZWN0KTsKIAotICAgICAgICBmb3IgKHZhciBkYXRh
YmFzZSBvZiBXSS5zdG9yYWdlTWFuYWdlci5kYXRhYmFzZXMpCisgICAgICAgIGZvciAodmFyIGRh
dGFiYXNlIG9mIFdJLmRhdGFiYXNlTWFuYWdlci5kYXRhYmFzZXMpCiAgICAgICAgICAgICB0aGlz
Ll9hZGREYXRhYmFzZShkYXRhYmFzZSk7CiAKLSAgICAgICAgZm9yICh2YXIgaW5kZXhlZERhdGFi
YXNlIG9mIFdJLnN0b3JhZ2VNYW5hZ2VyLmluZGV4ZWREYXRhYmFzZXMpCisgICAgICAgIGZvciAo
dmFyIGluZGV4ZWREYXRhYmFzZSBvZiBXSS5pbmRleGVkREJNYW5hZ2VyLmluZGV4ZWREYXRhYmFz
ZXMpCiAgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVkRGF0YWJhc2UoaW5kZXhlZERhdGFiYXNl
KTsKIAogICAgICAgICBmb3IgKHZhciBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0IG9mIFdJLmFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzKQpAQCAtMTE4LDcgKzEy
MCw5IEBAIFdJLlN0b3JhZ2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBTdG9yYWdlU2lkZWJhclBhbmVs
IGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYXJQCiAgICAgewogICAgICAgICBzdXBlci5jbG9z
ZWQoKTsKIAotICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgV0kuaW5kZXhl
ZERCTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAg
ICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCBkYmYz
OGViYmRlMWZjNWNkNzFhNmIwOTVhYTcwNmU4ZWRhY2MwN2ZiLi4wNTVkOWNmODQ0ZTRiNGQ0NzBl
NzE4NzBiZGY4MWMxY2ZjOGNhMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwpAQCAt
ODQsNyArODQsNyBAQCBXSS5TdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1Bh
bmVsIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50Lk5lZWRzUmVmcmVzaCwgdGhp
cy5fbm9kZVN0eWxlc05lZWRzUmVmcmVzaGVkLCB0aGlzKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JO
b2RlKGRvbU5vZGUpOworICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFn
ZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fbm9kZVN0eWxlcyk7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX25vZGVTdHlsZXMpCkBA
IC0xMjMsNyArMTIzLDcgQEAgV0kuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHlsZURldGFp
bHNQYW5lbCBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdldCBfaW5pdGlhbFNjcm9sbE9mZnNldCgp
CiAgICAgewotICAgICAgICBpZiAoIVdJLmNzc1N0eWxlTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0Ns
YXNzZXMoKSkKKyAgICAgICAgaWYgKCFXSS5jc3NNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3Nl
cygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiB0aGlzLm5vZGVTdHls
ZXMubm9kZS5lbmFibGVkUHNldWRvQ2xhc3Nlcy5sZW5ndGggPyAwIDogV0kuR2VuZXJhbFN0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQ7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZj
eHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvaiBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJ
bnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2oKaW5kZXggOWU4ZWRlODgw
ZmRmNjRhYzllODhkZGZhNmEwYjFhN2Q4YmU2Yjg1Yy4uYTU5MmY5ZWI4ODhlNGU0NmNkMWMzNDE4
YzA3NjkyNTUzMmYwNWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYklu
c3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvagorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9q
CkBAIC0zMTcsNiArMzE3LDcgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNl
XENvbnNvbGVDb21tYW5kLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcQ29uc29sZUNvbW1hbmRSZXN1bHQuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNl
ckludGVyZmFjZVxDb25zb2xlR3JvdXAuanMiIC8+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNl
ckludGVyZmFjZVxDb25zb2xlTWFuYWdlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXExlZ2FjeUNvbnNvbGVNZXNzYWdlLmpzIiAvPgogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzIiAvPgogICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29sZU9ic2VydmVyLmpzIiAvPgpA
QCAtMzQwLDE0ICszNDEsMTMgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNl
XENvbG9yUGlja2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
Q1NTQ29tcGxldGlvbnMuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFj
ZVxDU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiIC8+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNl
ckludGVyZmFjZVxDU1NNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcQ1NTTWVkaWEuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVy
ZmFjZVxDU1NPYnNlcnZlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXENTU1Byb3BlcnR5LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcQ1NTUnVsZS5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENT
U1N0eWxlRGVjbGFyYXRpb24uanMiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVy
ZmFjZVxDU1NTdHlsZU1hbmFnZXIuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxDU1NTdHlsZVNoZWV0LmpzIiAvPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcRGFzaGJvYXJkTWFuYWdlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXERhc2hib2FyZFZpZXcuY3NzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4u
XFVzZXJJbnRlcmZhY2VcRGFzaGJvYXJkVmlldy5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXERhdGFiYXNlQ29udGVudFZpZXcuY3NzIiAvPgpAQCAtMzc5LDYgKzM3
OSw3IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxEaXZpZGVyTmF2aWdh
dGlvbkl0ZW0uY3NzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRGl2
aWRlck5hdmlnYXRpb25JdGVtLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRl
cmZhY2VcRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyIgLz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXERPTU1hbmFnZXIuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5c
VXNlckludGVyZmFjZVxET01Ob2RlLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMiIC8+CiAgICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxET01Ob2RlU3R5bGVzLmpzIiAvPgpAQCAtMzg3LDYgKzM4
OCw3IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01TdG9yYWdlQ29u
dGVudFZpZXcuY3NzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRl
cmZhY2VcRE9NU3RvcmFnZUljb25zLmNzcyIgLz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2Vy
SW50ZXJmYWNlXERPTVN0b3JhZ2VNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4u
XFVzZXJJbnRlcmZhY2VcRE9NU3RvcmFnZU9iamVjdC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRl
PSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VPYnNlcnZlci5qcyIgLz4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VUcmVlRWxlbWVudC5qcyIgLz4KQEAg
LTM5NSw3ICszOTcsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9N
VHJlZUNvbnRlbnRWaWV3LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcRE9NVHJlZUVsZW1lbnQuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVy
ZmFjZVxET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMiIC8+Ci0gICAgPE5vbmUgSW5jbHVk
ZT0iLi5cVXNlckludGVyZmFjZVxET01UcmVlTWFuYWdlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNs
dWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVRyZWVPdXRsaW5lLmNzcyIgLz4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVRyZWVPdXRsaW5lLmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJlZVVwZGF0ZXIuanMiIC8+CkBAIC00NDUs
NyArNDQ2LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEZvcm1hdHRl
clNvdXJjZU1hcC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEZy
YW1lLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRnJhbWVDb250
ZW50Vmlldy5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcRnJhbWVUcmVlRWxlbWVudC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50
ZXJmYWNlXEdlbmVyYWxUcmVlRWxlbWVudC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXEdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMiIC8+CkBAIC02
ODQsNyArNjg0LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXExvZ0Nv
bnRlbnRWaWV3LmNzcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXExv
Z0NvbnRlbnRWaWV3LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
TG9nSWNvbi5jc3MiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dN
YW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTG9nT2Jq
ZWN0LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTG9nVHJlZUVs
ZW1lbnQuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxNYWluLmNz
cyIgLz4KQEAgLTcwMCw2ICs2OTksNyBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRl
cmZhY2VcTmV0d29ya0RhdGFHcmlkLmNzcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2Vy
SW50ZXJmYWNlXE5ldHdvcmtEYXRhR3JpZC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXE5ldHdvcmtHcmFwaENhbGN1bGF0b3IuanMiIC8+CisgICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxOZXR3b3JrTWFuYWdlci5qcyIgLz4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE5ldHdvcmtPYnNlcnZlci5qcyIgLz4KICAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE5ldHdvcmtUaW1lbGluZS5jc3MiIC8+CiAgICAg
PE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxPYmplY3QuanMiIC8+CkBAIC03NzksNyAr
Nzc5LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXFNvdXJjZU1hcE1h
bmFnZXIuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxTb3VyY2VN
YXBSZXNvdXJjZS5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXFNv
dXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5c
VXNlckludGVyZmFjZVxTdG9yYWdlTWFuYWdlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXFN0b3JhZ2VUcmVlRWxlbWVudC5qcyIgLz4KICAgICA8Tm9uZSBJbmNs
dWRlPSIuLlxVc2VySW50ZXJmYWNlXFN0eWxlRGV0YWlsc1BhbmVsLmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcU3R5bGVSdWxlSWNvbnMuY3NzIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5z
cGVjdG9yVUkudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3Bl
Y3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzCmluZGV4IDAxMWU1
MjIxNDZjNDA5NTBhMzg3OGIyOTI0ZjQ0YzBkZDE4MzMzZmIuLmYxZTBmOTRkYTAzYTNmZTUyYzU0
Mjk0YjE5ZDlmZWM1NGMxZmUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9X
ZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0
b3JVSS52Y3hwcm9qLmZpbHRlcnMKQEAgLTIwMSw2ICsyMDEsOSBAQAogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29sZUdyb3VwLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNl
ckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXENvbnNvbGVNYW5hZ2VyLmpzIj4KKyAgICAgIDxGaWx0ZXI+VXNlckludGVy
ZmFjZTwvRmlsdGVyPgorICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50
ZXJmYWNlXExlZ2FjeUNvbnNvbGVNZXNzYWdlLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVy
ZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KQEAgLTI3MCw2ICsyNzMsOSBAQAogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIj4KICAg
ICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KKyAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU01hbmFnZXIuanMiPgorICAgICAgPEZpbHRl
cj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CisgICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9
Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTTWVkaWEuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJm
YWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtMjg1LDE1ICsyOTEsOSBAQAogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcyI+CiAgICAg
ICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUg
SW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NTdHlsZU1hbmFnZXIuanMiPgotICAgICAgPEZp
bHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTU3R5bGVTaGVldC5qcyI+CiAgICAgICA8RmlsdGVyPlVz
ZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5c
VXNlckludGVyZmFjZVxEYXNoYm9hcmRNYW5hZ2VyLmpzIj4KLSAgICAgIDxGaWx0ZXI+VXNlcklu
dGVyZmFjZTwvRmlsdGVyPgotICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2Vy
SW50ZXJmYWNlXERhc2hib2FyZFZpZXcuY3NzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFj
ZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KQEAgLTM4Nyw2ICszODcsOSBAQAogICAgIDxOb25lIElu
Y2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+CiAgICAg
ICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+CisgICAgPE5vbmUg
SW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01NYW5hZ2VyLmpzIj4KKyAgICAgIDxGaWx0ZXI+
VXNlckludGVyZmFjZTwvRmlsdGVyPgorICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXERPTU5vZGUuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNl
PC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNDExLDYgKzQxNCw5IEBACiAgICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxET01TdG9yYWdlSWNvbnMuY3NzIj4KICAgICAgIDxGaWx0
ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KKyAgICA8Tm9uZSBJbmNsdWRl
PSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VNYW5hZ2VyLmpzIj4KKyAgICAgIDxGaWx0ZXI+
VXNlckludGVyZmFjZTwvRmlsdGVyPgorICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VPYmplY3QuanMiPgogICAgICAgPEZpbHRlcj5Vc2Vy
SW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNDM1LDkgKzQ0MSw2IEBACiAgICAg
PE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25l
PgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJlZU1hbmFnZXIuanMi
PgotICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9Ob25lPgogICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJlZU91dGxpbmUuY3NzIj4KICAg
ICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KQEAgLTUyMiw5
ICs1MjUsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRnJhbWVDb250
ZW50Vmlldy5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8
L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxGcmFtZVJlc291cmNl
TWFuYWdlci5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAgICA8
L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxGcmFtZVRyZWVFbGVt
ZW50LmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9u
ZT4KQEAgLTY0OCw5ICs2NDgsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcTG9nSWNvbi5jc3MiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAg
ICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTG9nTWFuYWdl
ci5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAgICA8L05vbmU+
CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dPYmplY3QuanMiPgogICAg
ICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNjk2LDYg
KzY5Myw5IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxOZXR3b3JrR3Jh
cGhDYWxjdWxhdG9yLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgog
ICAgIDwvTm9uZT4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE5ldHdvcmtN
YW5hZ2VyLmpzIj4KKyAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgorICAgIDwv
Tm9uZT4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE5ldHdvcmtPYnNlcnZl
ci5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+
CkBAIC05MzMsOSArOTMzLDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNl
XFNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50
ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcU3RvcmFnZU1hbmFnZXIuanMiPgotICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNl
PC9GaWx0ZXI+Ci0gICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcU3RvcmFnZVRyZWVFbGVtZW50LmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwv
RmlsdGVyPgogICAgIDwvTm9uZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZTIyNDVmY2Y0MWU2MTQzODg0M2IxOWI4MDlh
NTllYjczZTM3MjdiLi42YWE4ZTI5N2E4NDI5MDZlYjVmMmY1OWU4ZjU1YjIyMDNlN2ZkMWJjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDE4LTEwLTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgZnJvbnRlbmQgbWFu
YWdlcnMgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggYmFja2VuZCBhZ2VudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE2MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZG9tL2Nyb3NzLWRvbWFpbi1pbnNwZWN0ZWQtbm9kZS1hY2Nlc3MuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vZGlzY29ubmVjdC1kb20tdHJlZS1hZnRlci1t
YWluLWZyYW1lLW5hdmlnYXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9kb20vc2hhcGVzLXRlc3QuanM6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9oYXIvaGFyLXBhZ2UuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2xvYWRSZXNvdXJjZS1pbnNlY3VyZS1yZXNvdXJjZS5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9y
eS1jYWNoZS1yZXZhbGlkYXRlLWV4cGlyZWQtb25seS5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9yeS1jYWNo
ZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Ut
c2l6ZXMtbWVtb3J5LWNhY2hlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9zZXQtcmVzb3VyY2UtY2FjaGluZy1kaXNhYmxlZC1tZW1vcnktY2FjaGUuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZv
cmUtbG9hZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW5zcGVjdG9yL3Jlc29sdmVXZWJTb2NrZXQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY2Fu
dmFzL3JlcXVlc3ROb2RlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvZGVtaXJyb3IvcmVz
b3VyY2VzL3ByZXR0eXByaW50aW5nL3V0aWxpdGllcy5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJl
Z2lzdGVySW5pdGlhbGl6ZXIubG9hZFByZXR0eVByaW50aW5nVGVzdEFuZEV4cGVjdGVkUmVzdWx0
cyk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLndpbmRvdy5hZGRQcmV0
dHlQcmludGluZ1Rlc3RzKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NsZWFyTWVzc2FnZXMuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1hcGkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y29uc29sZS9jb25zb2xlLWNvdW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUv
Y29uc29sZS10YWJsZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUt
dGltZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL21lc3NhZ2Utc3RhY2stdHJh
Y2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlQWRkZWQtZnJvbS1u
YW1lZC1ldmFsdWF0aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL21lc3Nh
Z2VSZXBlYXRDb3VudFVwZGF0ZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9t
ZXNzYWdlc0NsZWFyZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS93ZWJjb3Jl
LWxvZ2dpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL3dlYmNv
cmUtbG9nZ2luZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUt
Y29udHJvbGxlci1pbXBvcnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29udHJvbGxlci9y
dW50aW1lLWNvbnRyb2xsZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL2FkZC1ydWxl
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Nzcy9jc3MtcHJvcGVydHkuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nz
cy9tYW5hZ2VyLXByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZS5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9jc3MvbWF0Y2hlZC1zdHlsZS1wcm9wZXJ0aWVzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2Nzcy9tb2RpZnktY3NzLXByb3BlcnR5Lmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2Nzcy9tb2RpZnktcnVsZS1zZWxlY3Rvci5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jc3MvcHNldWRvLWVsZW1lbnQtbWF0Y2hlcy1mb3ItcHNldWRvLWVsZW1lbnQtbm9kZS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jc3MvcHNldWRvLWVsZW1lbnQtbWF0Y2hlcy5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9jc3Mvc2VsZWN0b3ItZHluYW1pYy1zcGVjaWZpY2l0eS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jc3Mvc2VsZWN0b3Itc3BlY2lmaWNpdHkuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL3NoYWRvdy1zY29wZWQtc3R5bGUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWJhc2ljLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVzaGVldC5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtbXVsdGlwbGUt
ZG9jdW1lbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LXdpdGgt
bXV0YXRpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2NzcC1leGNlcHRp
b25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2pzLXN0YWNrdHJhY2UuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1wYXVzZS1sb2Nh
dGlvbi5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIud2luZG93LmZp
bmRTY3JpcHQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci53aW5kb3cu
bG9hZE1haW5QYWdlQ29udGVudCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxp
emVyLndpbmRvdy5sb2dSZXNvbHZlZEJyZWFrcG9pbnRMaW5lc1dpdGhDb250ZXh0KToKKyAgICAg
ICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIud2luZG93LmxvZ0xpbmVzV2l0aENvbnRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJv
dWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL3hoci1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20v
YnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZG9tL2NzcC1iaWc1LWhhc2guaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NzcC1oYXNo
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy1jc3NwYXRoLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMteHBhdGguaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZG9tL2dldEV2ZW50TGlzdGVuZXJzRm9yTm9kZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vZ2V0T3V0ZXJIVE1MLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWRl
SGlnaGxpZ2h0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWdobGlnaHRGcmFtZS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vaGlnaGxpZ2h0Tm9kZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kb20vaGlnaGxpZ2h0Tm9kZUxpc3QuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZG9tL2hpZ2hsaWdodFNlbGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS9pbnNlcnRBZGphY2VudEhUTUwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2luc3Bl
Y3QuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LWR5bmFtaWMu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LXN0YXRpYy5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20vcHVzaC1ub2RlLWJ5LXBhdGgtdG8tZnJvbnRlbmQu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vc2V0SW5zcGVjdGVkTm9kZS5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20vc2V0T3V0ZXJIVE1MLW5vLWRvY3VtZW50LWVsZW1lbnQuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3NldE91dGVySFRNTC5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9kb20vc2hhZG93LWFuZC1ub24tc2hhZG93LWNoaWxkcmVuLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS9zaGFkb3dSb290VHlwZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vdGVtcGxhdGUtY29udGVudC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy91dGlsaXRpZXMuanM6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyLmxvYWRGb3JtYXR0aW5nVGVzdEFuZEV4cGVjdGVkUmVzdWx0cyk6CisgICAg
ICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLndpbmRvdy5hZGRGb3JtYXR0aW5nVGVz
dHMpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcik6CisgICAgICAgICog
aW5zcGVjdG9yL2luZGV4ZWRkYi9jbGVhck9iamVjdFN0b3JlLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2luZGV4ZWRkYi9kZWxldGVEYXRhYmFzZU5hbWVzV2l0aFNwYWNlLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YS5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9sYXllcnMvbGF5ZXItdHJlZS1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L21vZGVsL2RvbS1ub2RlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL2ZyYW1lLWV4
dHJhLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvc2NyaXB0LXJlc291
cmNlLXJlbGF0aW9uc2hpcC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9zdGFjay10
cmFjZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wYWdlL2VtcHR5LW9yLW1pc3NpbmctcmVz
b3VyY2VzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6
ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVzb3VyY2UuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcnVudGltZS9jaGFuZ2UtZXhlY3V0aW9uLWNvbnRleHQt
aWRlbnRpZmllci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9ydW50aW1lL3NhdmVSZXN1bHQu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3RvcmFnZS9kb21TdG9yYWdlLWV2ZW50cy5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIvY29uc29sZS1iYXNpYy5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci93b3JrZXIvcmVzb3VyY2VzLWluLXdvcmtlci5odG1sOgorCiAyMDE4LTEw
LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBVcGRhdGUgZGVsZXRlLWVtb2ppIGV4cGVjdGVkIHJlc3VsdHMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9jcm9zcy1kb21haW4taW5zcGVj
dGVkLW5vZGUtYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
b20vY3Jvc3MtZG9tYWluLWluc3BlY3RlZC1ub2RlLWFjY2Vzcy5odG1sCmluZGV4IGI0OTlhYmNi
ZTJiZGJlM2IwMWY2ZjlmMTMzZmRjZGQ0YmM5OTEwMTkuLjgyNzVlMWJiZjg1ZjYxMmFmYzhmN2Fm
YmJjZjRmZDcwNGIyM2YyNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RvbS9jcm9zcy1kb21haW4taW5zcGVjdGVkLW5vZGUtYWNjZXNzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Nyb3NzLWRvbWFpbi1pbnNwZWN0
ZWQtbm9kZS1hY2Nlc3MuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDb21tYW5kTGlu
ZUFQSS4kMC5jcm9zcy1mcmFtZSIpOwogCi0gICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lOwogICAgIGxldCBjaGlsZEZyYW1lcyA9IEFycmF5LmZyb20obWFpbkZy
YW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KGNoaWxkRnJhbWVzLmxlbmd0aCwgMSwgIlBhZ2Ugc2hvdWxkIGhhdmUgYSBzdWJmcmFtZS4iKTsK
IApAQCAtNzgsMTEgKzc4LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7
CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkg
PT4gewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9k
ZS5pZCwgImlmcmFtZSNteWZyYW1lIiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgbGV0IGlm
cmFtZU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBXSS5k
b21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgIFdJ
LmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJpZnJhbWUjbXlmcmFt
ZSIsIChub2RlSWQpID0+IHsKKyAgICAgICAgICAgIGxldCBpZnJhbWVOb2RlID0gV0kuZG9tTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgIGxldCBpZnJhbWVEb2N1bWVudE5v
ZGVJZCA9IGlmcmFtZU5vZGUuY2hpbGRyZW5bMF0uaWQ7Ci0gICAgICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci5xdWVyeVNlbGVjdG9yKGlmcmFtZURvY3VtZW50Tm9kZUlkLCAiZGl2I3Jvb3REaXYi
LCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3Io
aWZyYW1lRG9jdW1lbnROb2RlSWQsICJkaXYjcm9vdERpdiIsIChub2RlSWQpID0+IHsKICAgICAg
ICAgICAgICAgICBub2RlSW5NYWluRnJhbWVJZCA9IGlmcmFtZU5vZGUuaWQ7CiAgICAgICAgICAg
ICAgICAgbm9kZUluU3ViRnJhbWVJZCA9IG5vZGVJZDsKICAgICAgICAgICAgICAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RvbS9kaXNjb25uZWN0LWRvbS10cmVlLWFmdGVyLW1haW4tZnJhbWUtbmF2
aWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Rpc2Nv
bm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFpbi1mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKaW5kZXggYTU1
MDQ2YmJhYzU4NmEwM2Y4NmM1ZmQ5ZDQ4NzMxZGEzNDRiZjgxNi4uNmY1NDc1ZTM0YWE4YTg1MzFl
NGZlZjdkM2M3NGRlNDk1ODM2OTM5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZG9tL2Rpc2Nvbm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFpbi1mcmFtZS1uYXZp
Z2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Rp
c2Nvbm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFpbi1mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKQEAgLTEx
LDcgKzExLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDaGVja0xhenlJbml0
aWFsaXphdGlvbk9mRE9NVHJlZSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBE
T01UcmVlIGluc3RhbmNlcyBhcmUgY3JlYXRlZCBsYXppbHkuIiwKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBpbnN0YW5jZXMgPSBXSS5kb21UcmVlTWFu
YWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOworICAgICAgICAg
ICAgbGV0IGluc3RhbmNlcyA9IFdJLmRvbU1hbmFnZXIucmV0YWluZWRPYmplY3RzV2l0aFByb3Rv
dHlwZShXSS5ET01UcmVlKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChp
bnN0YW5jZXMuc2l6ZSA9PT0gMCwgIlRoZXJlIHNob3VsZCBub3QgYmUgYSBET01UcmVlIGxpc3Rl
bmluZyB0byBET01UcmVlTWFuYWdlciBldmVudHMgaW5pdGlhbGx5LiIpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkRPTVRyZWUgaW5zdGFuY2UgY291bnQ6ICIgKyBpbnN0YW5jZXMu
c2l6ZSk7CiAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC0yMiwxMCArMjIsMTAgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDaGVja0RPTVRyZWVDb3VudEFmdGVyVXNpbmdHZXR0
ZXIiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGNvdW50IG9mIGNvbm5l
Y3RlZCBET01UcmVlcyBpcyBjb3JyZWN0IGFmdGVyIGluaXRpYWxpemluZyB0aGVtLiIsCiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0g
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICAgICAgbGV0IG1haW5G
cmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgIG1haW5GcmFt
ZS5kb21UcmVlOyAvLyBGb3JjZSBjcmVhdGlvbiBvZiB0aGUgcm9vdCBET00gdHJlZS4KIAotICAg
ICAgICAgICAgbGV0IGluc3RhbmNlcyA9IFdJLmRvbVRyZWVNYW5hZ2VyLnJldGFpbmVkT2JqZWN0
c1dpdGhQcm90b3R5cGUoV0kuRE9NVHJlZSk7CisgICAgICAgICAgICBsZXQgaW5zdGFuY2VzID0g
V0kuZG9tTWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc3RhbmNlcy5zaXplID09PSAx
LCAiVGhlcmUgc2hvdWxkIGJlIGEgb25lIERPTVRyZWUgbGlzdGVuaW5nIHRvIERPTVRyZWVNYW5h
Z2VyIGV2ZW50cyBhZnRlciBjcmVhdGlvbi4iKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJET01UcmVlIGluc3RhbmNlIGNvdW50OiAiICsgaW5zdGFuY2VzLnNpemUpOwogCkBAIC0z
OSw3ICszOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0IGNoaWxkcmVuTGV2
ZWwzID0gQXJyYXkuZnJvbShjaGlsZHJlbkxldmVsMlswXS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7
CiAgICAgICAgICAgICBjaGlsZHJlbkxldmVsM1swXS5kb21UcmVlOwogCi0gICAgICAgICAgICBp
bnN0YW5jZXMgPSBXSS5kb21UcmVlTWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBl
KFdJLkRPTVRyZWUpOworICAgICAgICAgICAgaW5zdGFuY2VzID0gV0kuZG9tTWFuYWdlci5yZXRh
aW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOwogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGluc3RhbmNlcy5zaXplID09PSA0LCAiVGhlcmUgc2hvdWxkIGJl
IGZvdXIgRE9NVHJlZXMgbGlzdGVuaW5nIHRvIERPTVRyZWVNYW5hZ2VyIGV2ZW50cyBhZnRlciB0
b3VjaGluZyBlYWNoIEZyYW1lLiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkRP
TVRyZWUgaW5zdGFuY2UgY291bnQ6ICIgKyBpbnN0YW5jZXMuc2l6ZSk7CiAKQEAgLTUzLDcgKzUz
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAg
ICAgICAgICAgICBXSS5GcmFtZS5hd2FpdEV2ZW50KFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJj
ZURpZENoYW5nZSkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAgICAg
ICAgIGxldCBpbnN0YW5jZXMgPSBXSS5kb21UcmVlTWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRo
UHJvdG90eXBlKFdJLkRPTVRyZWUpOworICAgICAgICAgICAgICAgIGxldCBpbnN0YW5jZXMgPSBX
SS5kb21NYW5hZ2VyLnJldGFpbmVkT2JqZWN0c1dpdGhQcm90b3R5cGUoV0kuRE9NVHJlZSk7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc3RhbmNlcy5zaXplID09
PSAwLCAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgRE9NVHJlZXMgbGlzdGVuaW5nIHRvIERPTVRy
ZWVNYW5hZ2VyIGV2ZW50cyBhZnRlciBhIG1haW4gZnJhbWUgbmF2aWdhdGlvbi4iKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRE9NVHJlZSBpbnN0YW5jZSBjb3VudDogIiAr
IGluc3RhbmNlcy5zaXplKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKaW5kZXggOTBhMzA1M2VmNjVl
YmI2NTU2MzQzOTRiN2UyNWZhNjMzY2E3OGM1OS4uMDQ4ZjllMzBmNmNlZDMzMTcyMWYwMWNjNTNl
ZGU5MjJiMjk5MzM3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZG9tL3NoYXBlcy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RvbS9zaGFwZXMtdGVzdC5qcwpAQCAtMyw3ICszLDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcihmdW5jdGlvbigpIHsKIEluc3BlY3RvclRlc3QuU2hhcGVzID0gewogICAgIGdl
dFNoYXBlT3V0c2lkZUluZm9Gb3JTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0b3IsIGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KHJlcXVl
c3REb2N1bWVudENhbGxiYWNrKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQocmVxdWVzdERvY3VtZW50Q2FsbGJhY2spOwogCiAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RE
b2N1bWVudENhbGxiYWNrKG5vZGUpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCAiVW5leHBlY3RlZCBhcmd1bWVudCB0byByZXF1
ZXN0RG9jdW1lbnQgY2FsbGJhY2suIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItcGFnZS5odG1sCmluZGV4IDdjMDRkNmI1
ZGZkMTE2YzIyOWNlMWRkOWI1OTg2MTQxMzYxMjEyN2QuLjg3MjcxNWUyOTdhYWVkNjkzMjc0YmVk
OTgzMjE1YzgxOGEyNjI0ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIvaGFyLXBhZ2UuaHRtbApAQCAtODgsNyArODgsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoInNldHVwKCkiKTsKICAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVu
dCgiU2V0dXBDb21wbGV0ZSIpOwogCi0gICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gW1dJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2UsIC4uLldJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb25dOworICAgICAgICAgICAg
bGV0IHJlc291cmNlcyA9IFtXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNl
LCAuLi5XSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uXTsKICAg
ICAgICAgICAgIGxldCBoYXIgPSBhd2FpdCBXSS5IQVJCdWlsZGVyLmJ1aWxkQXJjaGl2ZShyZXNv
dXJjZXMpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5qc29uKGhhciwgSEFSSlNPTkZpbHRl
cik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbGVhbnVwKCki
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bG9hZFJlc291cmNlLWluc2VjdXJlLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvYWRSZXNvdXJjZS1pbnNlY3VyZS1yZXNvdXJjZS5odG1s
CmluZGV4IDQxNGJkZjQxMTE0NzM2ZjQyOGMwZDY5N2NhMDlkYTRlN2M0ZDk2NGIuLjJmZDUxZTJk
OTIyNzIzNzRlZTk2MWZkMmQwOGVkNzVmYjljNjE4Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9hZFJlc291cmNlLWluc2VjdXJlLXJlc291
cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9s
b2FkUmVzb3VyY2UtaW5zZWN1cmUtcmVzb3VyY2UuaHRtbApAQCAtMTIsNyArMTIsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdHJ5aW5nIHRvIGxvYWQg
YW4gaHR0cHMgcmVzb3VyY2UgZnJvbSBhIHNlY3VyZSBwYWdlIHN1Y2NlZWRzLiIsCiAgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0My9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5qc29uPzEi
OwotICAgICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUuaWQsIHVybCwgKGVycm9yLCBjb250ZW50LCBtaW1lVHlwZSwgc3Rh
dHVzKSA9PiB7CisgICAgICAgICAgICBOZXR3b3JrQWdlbnQubG9hZFJlc291cmNlKFdJLm5ldHdv
cmtNYW5hZ2VyLm1haW5GcmFtZS5pZCwgdXJsLCAoZXJyb3IsIGNvbnRlbnQsIG1pbWVUeXBlLCBz
dGF0dXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWVy
cm9yLCAiU2hvdWxkIG5vdCBiZSBhbiBlcnJvciBsb2FkaW5nIGEgc2VjdXJlIHJlc291cmNlLiIp
OwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc3RhdHVzLCAyMDAs
ICJTaG91bGQgYmUgYSAyMDAgT0sgc3RhdHVzLiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9u
OiAiRW5zdXJlIHRyeWluZyB0byBsb2FkIGFuIGh0dHAgcmVzb3VyY2UgZnJvbSBhIHNlY3VyZSBw
YWdlIGZhaWxzLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAg
ICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMDo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9kYXRhLmpzb24/MiI7Ci0gICAgICAgICAgICBOZXR3b3JrQWdlbnQubG9hZFJlc291
cmNlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCwgdXJsLCAoZXJyb3IsIGNv
bnRlbnQsIG1pbWVUeXBlLCBzdGF0dXMpID0+IHsKKyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5s
b2FkUmVzb3VyY2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkLCB1cmwsIChlcnJvciwg
Y29udGVudCwgbWltZVR5cGUsIHN0YXR1cykgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBiZSBhbiBlcnJvciBsb2FkaW5nIGFuIGlu
c2VjdXJlIHJlc291cmNlLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhl
cnJvcik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25zZS1zb3VyY2Ut
bWVtb3J5LWNhY2hlLXJldmFsaWRhdGUtZXhwaXJlZC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1tZW1v
cnktY2FjaGUtcmV2YWxpZGF0ZS1leHBpcmVkLW9ubHkuaHRtbAppbmRleCBkMDMzZTdmZTVhZTZj
Y2VjMTBhNzgxNjJiYzU4NDVjOTMxMWMzN2Y4Li45NTFmODgzNjUwZDUwNTc1NzE0M2Y5YjlhNTBm
M2Q1MWM3NzQ4MjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1tZW1vcnktY2FjaGUtcmV2YWxpZGF0
ZS1leHBpcmVkLW9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1tZW1vcnktY2FjaGUtcmV2YWxpZGF0
ZS1leHBpcmVkLW9ubHkuaHRtbApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlLCByZXZh
bGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KCJMb2FkQ29tcGxldGUiKS50aGVuKChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpdGVtIG9mIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNv
bGxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5uZXR3
b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KGl0ZW0udXJsKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc291cmNlID0gaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9yeS1jYWNoZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25zZS1zb3Vy
Y2UtbWVtb3J5LWNhY2hlLmh0bWwKaW5kZXggODg4NThhMTU1NDk1ZGQwNGU0YWRlYWEwMDgyMzVk
YWY5ZDczYTdiYi4uNzllNjYwMTdhNjk1MzVjZmFlYmJmOWM0ZDFiZjhmOTViNDkzYmM4NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZS1yZXNwb25zZS1zb3VyY2UtbWVtb3J5LWNhY2hlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25zZS1zb3VyY2UtbWVtb3J5
LWNhY2hlLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZX0pOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiTG9hZENvbXBsZXRlIikudGhlbigoZXZl
bnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gbnVsbDsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5t
YWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
bGV0IGl0ZW0gb2YgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnJlc291cmNlQ29sbGVjdGlv
bikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4udGVzdChpdGVtLnVybCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IGl0ZW07CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXNpemVzLW1lbW9yeS1jYWNoZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1zaXpl
cy1tZW1vcnktY2FjaGUuaHRtbAppbmRleCAyODAxMDNjY2EzZDRhNDIxNjM1NmE0NmZiZGE0ZjNk
Zjg0ODlmNWJmLi5kNDI5MDE3MDIwMGY0MjQ0MWZhNmZiMjJmMGNlZTM5NDRhMGNiMzU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
LXNpemVzLW1lbW9yeS1jYWNoZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtbWVtb3J5LWNhY2hlLmh0bWwKQEAgLTI5LDcg
KzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9h
ZFBhZ2Uoe2lnbm9yZUNhY2hlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzfSk7CiAgICAgICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJMb2FkQ29tcGxldGUiKS50aGVuKChl
dmVudCkgPT4gewogICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAg
ICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBv
ZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuLnRlc3QoaXRlbS51cmwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvdXJjZSA9IGl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvc2V0LXJlc291cmNlLWNhY2hpbmctZGlzYWJsZWQtbWVtb3J5LWNhY2hlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3NldC1yZXNvdXJjZS1jYWNoaW5n
LWRpc2FibGVkLW1lbW9yeS1jYWNoZS5odG1sCmluZGV4IDJmNTRiMWFjZTU0NWJiYzNiZDFmMmE0
MGU3YzZkZjZhODk3NjhlMmUuLjE5OTVhZmI5M2Y0ZjU5Nzk4MjViYjFiNmFmZjMzNGI1NGFmMWRl
OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
c2V0LXJlc291cmNlLWNhY2hpbmctZGlzYWJsZWQtbWVtb3J5LWNhY2hlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9zZXQtcmVzb3VyY2UtY2FjaGlu
Zy1kaXNhYmxlZC1tZW1vcnktY2FjaGUuaHRtbApAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNh
Y2hlfSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJMb2FkQ29t
cGxldGUiKS50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzb3Vy
Y2UgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUu
cmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVy
bi50ZXN0KGl0ZW0udXJsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNl
ID0gaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2Jl
Zm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1sCmluZGV4IDYyNjI4NGY4NmZhNDM4NGFlMjVj
MTgyYWM1ZGIxMzE5ZjExMDAxNTcuLmI2ZTI0ZDI2N2I1ZDU5NmVlMWEwYTRmNDA3Y2QzNjlhYjQz
ZmZjNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbApAQCAt
NDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
IHRoYXQgdGhlIGV4aXN0aW5nIHdlYnNvY2tldCBpcyBzZW50IHRvIHRoZSBmcm9udGVuZCB3aGVu
IGl0IGlzIGZpcnN0IG9wZW5lZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewog
ICAgICAgICAgICAgY29uc3QgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaW5zcGVjdG9yL2VjaG8iOwotICAgICAgICAgICAgbGV0IHdlYlNvY2tldFJlc291
cmNlcyA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rp
b25Gb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KTsKKyAgICAgICAgICAgIGxldCB3
ZWJTb2NrZXRSZXNvdXJjZXMgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VD
b2xsZWN0aW9uRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCk7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHdlYlNvY2tldFJlc291cmNlcy5zaXplLCAxLCAi
U2hvdWxkIGhhdmUgMSBXZWJTb2NrZXRSZXNvdXJjZSIpOwogCiAgICAgICAgICAgICBsZXQgd2Vi
U29ja2V0UmVzb3VyY2UgPSBBcnJheS5mcm9tKHdlYlNvY2tldFJlc291cmNlcylbMF07CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9yZXNvbHZlV2ViU29ja2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9yZXNvbHZlV2ViU29ja2V0Lmh0bWwKaW5kZXggYjY3
YmY5NTM4ZWRhZWZlNzg5NmMyNGQ4NTE0ZDJmMmQzNWVmNmVlYi4uMjQ2NDJhOGIyZjI2YmViOThh
NTYxOTE2NzQ3YjM2YWNjNTgyMTQzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvcmVzb2x2ZVdlYlNvY2tldC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9y
L3Jlc29sdmVXZWJTb2NrZXQuaHRtbApAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgcmVzcG9uc2UgZm9y
IHRoZSBnaXZlbiByZXF1ZXN0IGlkZW50aWZpZXIuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKICAgICAgICAgICAgIGNvbnN0IHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9lY2hvIjsKLSAgICAgICAgICAgIGxldCB3ZWJT
b2NrZXRSZXNvdXJjZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVy
bCk7CisgICAgICAgICAgICBsZXQgd2ViU29ja2V0UmVzb3VyY2UgPSBXSS5uZXR3b3JrTWFuYWdl
ci5yZXNvdXJjZUZvclVSTCh1cmwpOwogICAgICAgICAgICAgaWYgKCF3ZWJTb2NrZXRSZXNvdXJj
ZSkgewogICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBXZWJTb2NrZXQgcmVzb3VyY2Uu
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nh
bnZhcy9yZXF1ZXN0Tm9kZS5odG1sCmluZGV4IDBkY2M4ZGNkZjUzODhhYTU1NzY4NTk3MjYxZWU4
MWQ4OWIyMGU3OWEuLjMyZGI3MzU1MGRjYzFjZGQ3NzAwZDY5NTUzMTg5ZDc1MmIxYzNkMjAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVzdE5vZGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3ROb2RlLmh0bWwKQEAgLTYz
LDE0ICs2MywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBjYW52YXNlcy5mb3JFYWNoKChjYW52YXMpID0+IHsKLSAgICAgICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAg
ICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+
IHsKICAgICAgICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdE5vZGUoY2FudmFzLmlk
ZW50aWZpZXIsIChlcnJvciwgbm9kZUlkKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNNYXAuc2V0KGNhbnZhcywgV0ku
ZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZXNNYXAuc2V0KGNhbnZhcywgV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXNNYXAuc2l6ZSA9PT0gZXhwZWN0ZWRM
ZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvZGVtaXJy
b3IvcmVzb3VyY2VzL3ByZXR0eXByaW50aW5nL3V0aWxpdGllcy5qcyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb2RlbWlycm9yL3Jlc291cmNlcy9wcmV0dHlwcmludGluZy91dGlsaXRpZXMuanMK
aW5kZXggM2VmMmU3NzY4NTlmYTk2YTA3NWMzNzdjYjM0ZjQ1YWRlYzVkOWM0Ni4uNGIxZDY4Mjc5
Y2Y5NDNhYzcyMDg2YTgzYTU3YzA1MzcwZTI2ZjEzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvZGVtaXJyb3IvcmVzb3VyY2VzL3ByZXR0eXByaW50aW5nL3V0aWxpdGllcy5q
cworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29kZW1pcnJvci9yZXNvdXJjZXMvcHJldHR5
cHJpbnRpbmcvdXRpbGl0aWVzLmpzCkBAIC0yLDggKzIsOCBAQCBUZXN0UGFnZS5yZWdpc3Rlcklu
aXRpYWxpemVyKGZ1bmN0aW9uKCkgewogICAgIGZ1bmN0aW9uIGxvYWRQcmV0dHlQcmludGluZ1Rl
c3RBbmRFeHBlY3RlZFJlc3VsdHModGVzdFVSTCkgewogICAgICAgICBsZXQgZXhwZWN0ZWRVUkwg
PSB0ZXN0VVJMLnJlcGxhY2UoL1wuKFteXC5dKykkLywgIi1leHBlY3RlZC4kMSIpOwogICAgICAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNv
dXJjZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQsIHRlc3RVUkwpLAotICAg
ICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5mcmFtZVJlc291cmNlTWFuYWdl
ci5tYWluRnJhbWUuaWQsIGV4cGVjdGVkVVJMKQorICAgICAgICAgICAgTmV0d29ya0FnZW50Lmxv
YWRSZXNvdXJjZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQsIHRlc3RVUkwpLAorICAg
ICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWUuaWQsIGV4cGVjdGVkVVJMKQogICAgICAgICBdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdHMp
IHsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3Rlc3RUZXh0OiByZXN1bHRz
WzBdLmNvbnRlbnQsIGV4cGVjdGVkVGV4dDogcmVzdWx0c1sxXS5jb250ZW50IH0pOwogICAgICAg
ICB9KTsKQEAgLTQ1LDcgKzQ1LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5j
dGlvbigpIHsKICAgICB9CiAKICAgICB3aW5kb3cuYWRkUHJldHR5UHJpbnRpbmdUZXN0cyA9IGZ1
bmN0aW9uKHN1aXRlLCBtb2RlLCB0ZXN0cykgewotICAgICAgICBsZXQgdGVzdFBhZ2VVUkwgPSBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnVybDsKKyAgICAg
ICAgbGV0IHRlc3RQYWdlVVJMID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNv
dXJjZS51cmw7CiAgICAgICAgIGxldCB0ZXN0UGFnZVJlc291cmNlc1VSTCA9IHRlc3RQYWdlVVJM
LnN1YnN0cmluZygwLCB0ZXN0UGFnZVVSTC5sYXN0SW5kZXhPZigiLyIpKTsgICAgICAgICAgICAK
IAogICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jbGVhck1lc3NhZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS9jbGVhck1lc3NhZ2VzLmh0bWwKaW5kZXggM2UwYjgwZTljOTQxMjgz
YWY1YWE3MWM4ZDgzZmRiMmFmM2VlMWY0NS4uZDUzMTU5ZThkYjhjNmQzZTIzZjc2MzQwNTFhZDYz
NDAwZDA4OTNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY2xl
YXJNZXNzYWdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NsZWFy
TWVzc2FnZXMuaHRtbApAQCAtMTMsMTMgKzEzLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgQ29uc29sZUFnZW50LmNsZWFy
TWVzc2FnZXMoKTsKIAotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxv
Z01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFn
ZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCiAgICAg
ICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChmYWxzZSwgIk1lc3NhZ2VBZGRlZCBldmVudCBzaG91bGQgbm90IGZpcmUuIik7CiAg
ICAgICAgICAgICB9KQogICAgICAgICAgICAgLnRoZW4ocmVqZWN0LCByZWplY3QpOwogCi0gICAg
ICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5DbGVh
cmVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5DbGVhcmVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LCAiQ2xlYXJlZCBl
dmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWwKaW5kZXggZjU4NmEyZDAy
YWQzOWZiMTRmYjBlMzRkZDNhZjgwMjIzNDkzMDIwYS4uZGExMDVlYmUwMjIzODViZTNkNzk4NzM4
ZWIyOGZjYzBhOTMzNmI5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvY29tbWFuZC1saW5lLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL2NvbW1hbmQtbGluZS1hcGkuaHRtbApAQCAtODAsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKIAogICAgIGZ1bmN0aW9uIGxpc3RlbkZvckNvbnNvbGVXYXJuaW5nKHJlc29sdmUsIHJlamVj
dCkgewogICAgICAgICAvLyBEZXRlY3QgY29uc29sZSB3YXJuaW5nIGZvciAkKCdmb28nKS4KLSAg
ICAgICAgV0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2Vy
LkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3Nh
Z2VBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRh
dGEubWVzc2FnZTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1lc3NhZ2UgaW5z
dGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgQ09OU09MRTogJHttZXNzYWdlLm1lc3NhZ2VUZXh0fWApOwpAQCAtOTAsMTQgKzkwLDE0IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNlbGVjdEVsZW1lbnRGb3JE
b2xsYXJaZXJvKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICBXSS5kb21NYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgICAgICBpZiAoIWRv
Y3VtZW50Tm9kZSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiBE
T00gbm9kZSBub3QgZm91bmQuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTZWxlY3QgZGl2I2ZvbyBmb3IgJDAuCi0g
ICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5p
ZCwgIiNmb28iLCAoY29udGVudE5vZGVJZCkgPT4geworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNmb28iLCAoY29udGVudE5vZGVJZCkg
PT4gewogICAgICAgICAgICAgICAgIGlmICghY29udGVudE5vZGVJZCkgewogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogRE9NIG5vZGUgbm90IGZvdW5kLiIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvY29uc29sZS1hcGkuaHRtbAppbmRleCBhNGM5NDE3OGU2OTI5OGE0ZWM3
YjY1YjVlMWU3NjYxNGViZTE1ZjVhLi5kNWYxZGY4MjljODgzZWIxZTQ5ZDkwOWUzOGMxOGYxZTZi
MDVjMmJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xl
LWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtYXBp
Lmh0bWwKQEAgLTU3LDcgKzU3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICB9CiAKLSAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9n
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuY29u
c29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNz
YWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBtZXNzYWdlID0gZXZlbnQu
ZGF0YS5tZXNzYWdlOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtZXNzYWdlIGluc3Rh
bmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG5T
VEVQOiAiICsgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvY29uc29sZS1jb3VudC5odG1sCmluZGV4IDAxMzA3YmJkNDRlNzU0NWQz
YzI3NjYwNmNkZTA3MDUyM2M3ODM2ZDEuLmQ2NDhhZGJiZjIwODYwYzcxZWYyN2UwOTk5OWFlOWU1
NDMwYTY3MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNv
bGUtY291bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xl
LWNvdW50Lmh0bWwKQEAgLTMxLDEyICszMSwxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBzZWVuID0gMDsKICAgICAg
ICAgICAgIGNvbnN0IGV4cGVjdGVkID0gMTY7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIp
OworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAgZnVu
Y3Rpb24gaGFuZGxlcihldmVudCkgewogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gZXZl
bnQuZGF0YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1lc3Nh
Z2UubWVzc2FnZVRleHQpOwogICAgICAgICAgICAgICAgIGlmICgrK3NlZW4gPT09IGV4cGVjdGVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAgICAgICAg
ICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29s
ZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTUyLDEy
ICs1MiwxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKICAgICAgICAgICAgIGxldCBzZWVuID0gMDsKICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVk
ID0gMjA7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9n
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOworICAgICAgICAgICAgV0kuY29u
c29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNz
YWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkg
ewogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1lc3NhZ2UubWVzc2FnZVRleHQpOwogICAg
ICAgICAgICAgICAgIGlmICgrK3NlZW4gPT09IGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2Fn
ZUFkZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlL2NvbnNvbGUtdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL2NvbnNvbGUtdGFibGUuaHRtbAppbmRleCBkZGQyYTE5MmY2ZThhMTEzNjVjMDliYzA3
ODUxNThhZjg4MjhjYWI2Li42ZjkzM2VkYTRhNmNlOTZkMGVlYjJjN2FkMDg0NTM4Mjk0MWU5NDhi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXRhYmxl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10YWJsZS5o
dG1sCkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgfQogCi0gICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01h
bmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLmNvbnNv
bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2Fn
ZUFkZGVkLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRh
dGEubWVzc2FnZTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobWVzc2FnZSBpbnN0YW5j
ZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuU1RF
UDogIiArIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdGltZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUvY29uc29sZS10aW1lLmh0bWwKaW5kZXggNTllNTJkYzc1MWMzMTdlZGU1Yjk2
ZmQ5ZTc4ZmJjZWVhM2Y3NGUwZi4uMDVmNDRjYTljMDNlM2JlYWUzYjNjZWE0ZDhjZGUxZDhlZDkw
ZDU5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10
aW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10aW1l
Lmh0bWwKQEAgLTEzLDEzICsxMywxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBzZWVuID0gMDsKICAgICAgICAgICAg
IGNvbnN0IGV4cGVjdGVkID0gMzsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAg
ICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5h
Z2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CiAgICAgICAgICAgICBmdW5jdGlvbiBo
YW5kbGVyKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBldmVudC5kYXRh
Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG1lc3Nh
Z2UudHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVGltaW5nLCAiU2hvdWxk
IHJlY2VpdmUgYSBUaW1pbmcgdHlwZSBtZXNzYWdlLiIpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChtZXNzYWdlLm1lc3NhZ2VUZXh0LmluY2x1ZGVzKCJkZWZhdWx0
IiksICJNZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSAnZGVmYXVsdCcgbGFiZWwgbmFtZSBzb21l
d2hlcmUuIik7CiAgICAgICAgICAgICAgICAgaWYgKCsrc2VlbiA9PT0gZXhwZWN0ZWQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxv
Z01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzksNyArMzksNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIlVzZXJMYWJlbHMiLAogICAgICAgICBk
ZXNjcmlwdGlvbjogIlRlc3QgdGhhdCB1c2VyIGxhYmVscyB3b3JrcyBhcyBleHBlY3RlZC4iLAog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kubG9nTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQorICAgICAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5N
ZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAg
ICAgICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZS50eXBlID09PSBXSS5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlVHlwZS5UaW1pbmcsICJTaG91bGQgcmVjZWl2ZSBhIFRpbWluZyB0eXBlIG1lc3Nh
Z2UuIik7CkBAIC01OCwxNCArNTgsMTQgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBsZXQgc2VlbiA9IDA7CiAgICAgICAgICAg
ICBjb25zdCBleHBlY3RlZCA9IDI7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOworICAg
ICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFu
YWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24g
aGFuZGxlcihldmVudCkgewogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gZXZlbnQuZGF0
YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZExhYmVsID0gc2VlbiA9PT0g
MCA/ICJteS1sYWJlbC0yIiA6ICJteS1sYWJlbC0xIjsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZS50eXBlID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5UaW1pbmcsICJTaG91bGQgcmVjZWl2ZSBhIFRpbWluZyB0eXBlIG1lc3NhZ2UuIik7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG1lc3NhZ2UubWVzc2Fn
ZVRleHQuaW5jbHVkZXMoZXhwZWN0ZWRMYWJlbCksICJNZXNzYWdlIHNob3VsZCBjb250YWluIHRo
ZSAnIiArIGV4cGVjdGVkTGFiZWwgKyAiJyBsYWJlbCBuYW1lIHNvbWV3aGVyZS4iKTsKICAgICAg
ICAgICAgICAgICBpZiAoKytzZWVuID09PSBleHBlY3RlZCkgewotICAgICAgICAgICAgICAgICAg
ICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5N
ZXNzYWdlQWRkZWQsIGhhbmRsZXIpOworICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VB
ZGRlZCwgaGFuZGxlcik7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04MSw3ICs4MSw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBuYW1lOiAiV2FybldoZW5FeGlzdGluZyIsCiAgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdCBmb3IgYSB3YXJuaW5nIHdoZW4gdHJ5aW5nIHRvIHN0YXJ0IGFuIGFscmVhZHkgc3Rh
cnRlZCB0aW1lci4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVz
c2FnZUFkZGVkLCBoYW5kbGVyKTsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVy
KTsKICAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHsKICAgICAgICAgICAgICAg
ICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgICAgICAgICBpZiAo
bWVzc2FnZS5sZXZlbCA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcp
IHsKQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uu
dHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVGltaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5h
Z2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAgICAgICAgICAgICAgICAgIFdJ
LmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZl
bnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIldhcm5XaGVuTm90RXhpc3RpbmciLAogICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZm9yIGEgd2FybmluZyB3aGVuIHRyeWluZyB0byBzdGFy
dCBhbiBhbHJlYWR5IHN0YXJ0ZWQgdGltZXIuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRFdmVudChXSS5Mb2dNYW5hZ2Vy
LkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQogICAgICAgICAgICAg
LnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBldmVudC5k
YXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG1l
c3NhZ2UudHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVGltaW5nLCAiU2hv
dWxkIHJlY2VpdmUgYSBUaW1pbmcgdHlwZSBtZXNzYWdlLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS5odG1sCmluZGV4IGRi
OGIzYmVjOWZlOTlkY2ZmNDY1ZGJmMDdiM2Q5YzdiMTQ3YzEyNGQuLmQxZDU5NmI1MWU3OGNhOGZl
ZmE5OTkyNjA5Njc0NjJiOGZiYzBhZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlL21lc3NhZ2Utc3RhY2stdHJhY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS9tZXNzYWdlLXN0YWNrLXRyYWNlLmh0bWwKQEAgLTU2LDcgKzU2LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIFdJLmxvZ01hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50
KSA9PiB7CisgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4gewogICAgICAgICBsZXQgbWVz
c2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bWVzc2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgaWYgKG1lc3Nh
Z2VDaGVja2VyICYmIG1lc3NhZ2VDaGVja2VyKG1lc3NhZ2UpKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlQWRkZWQtZnJvbS1uYW1lZC1ldmFsdWF0
aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZUFkZGVkLWZy
b20tbmFtZWQtZXZhbHVhdGlvbnMuaHRtbAppbmRleCAwMjQzNTI5ZDQ2NjA1YzQ2MTU4M2ZlMTY1
NzFhMGZiYjlhZDk5NDY5Li44NTZkZDZjYjUzOWM0OTQ3NDNiYzZjZTdkOGVjZTgxY2FkNWUxNWM1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlQWRkZWQt
ZnJvbS1uYW1lZC1ldmFsdWF0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL21lc3NhZ2VBZGRlZC1mcm9tLW5hbWVkLWV2YWx1YXRpb25zLmh0bWwKQEAgLTIxLDcg
KzIxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJUcmlnZ2VyTWVzc2FnZUZy
b21OYW1lRXZhbHVhdGlvbiIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiTWVzc2FnZSBmcm9tIG5h
bWVkIGV2YWx1YXRpb24gc2hvdWxkIGhhdmUgYSBzb3VyY2UgbG9jYXRpb24uIiwKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRF
dmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAgICAgICAgIFdJLmNv
bnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0
IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgbGV0IHRvcENh
bGxGcmFtZSA9IG1lc3NhZ2Uuc3RhY2tUcmFjZS5jYWxsRnJhbWVzWzBdOwpAQCAtMzcsNyArMzcs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIlRyaWdnZXJFeGNlcHRpb25Gcm9t
TmFtZUZ1bmN0aW9uQ29uc3RydWN0b3JFdmFsdWF0aW9uIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJFeGNlcHRpb24gbWVzc2FnZSBmcm9tIG5hbWVkIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGV2YWx1
YXRpb24gc2hvdWxkIGhhdmUgYSBzb3VyY2UgbG9jYXRpb24uIiwKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRFdmVudChXSS5M
b2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQogICAg
ICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2Ug
PSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgbGV0IHRvcENhbGxGcmFtZSA9
IG1lc3NhZ2Uuc3RhY2tUcmFjZS5jYWxsRnJhbWVzWzBdOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZC5odG1s
CmluZGV4IDdjZjg2ZjY2MjE0MDQxNjliY2E0OWExMDE5NzJmNjhkMzEzMTdjYjEuLjc0OTU2NjBi
MTVlM2JmMDM3MTA5ZWUyYWEwMGJhMDM0YmE2ZTBkOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLmh0
bWwKQEAgLTE0LDE2ICsxNCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkFk
ZFRlc3RNZXNzYWdlIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJBZGQgYSBuZXcgbWVzc2FnZSwg
aXQgc2hvdWxkIGhhdmUgYSBzaW5nbGUgcmVwZWF0IGNvdW50LiIsCiAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNz
YWdlUmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGxldCBsaXN0
ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgKGV2ZW50
KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJTaG91
bGQgbm90IGZpcmUgUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkIHlldC4iKTsKICAg
ICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBX
SS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQp
CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5h
Z2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLm1lc3Nh
Z2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSwgIk1lc3NhZ2VBZGRlZCBldmVudCBzaG91
bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZl
bnQuZGF0YS5tZXNzYWdlLnJlcGVhdENvdW50ID09PSAxLCAiQ29uc29sZU1lc3NhZ2UgcmVwZWF0
Q291bnQgaXMgMS4iKTsKLSAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVw
ZGF0ZWQsIGxpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVz
c2FnZVJlcGVhdENvdW50VXBkYXRlZCwgbGlzdGVuZXIsIG51bGwpOwogICAgICAgICAgICAgfSkK
ICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAKQEAgLTM2LDE2ICszNiwxNiBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6IGBSZXBlYXRUZXN0TWVzc2FnZSR7
aX1gLAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJSZXBlYXQgdGhlIGxhc3QgbWVzc2FnZSwg
aXQgc2hvdWxkIHRyaWdnZXIgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZC4iLAogICAgICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIg
PSBXSS5sb2dNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZl
bnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVu
ZXIgPSBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgZmlyZSBNZXNzYWdl
QWRkZWQsIHRoaXMgc2hvdWxkIGJlIGEgcmVwZWF0LiIpOwogICAgICAgICAgICAgICAgICAgICBy
ZWplY3QoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIFdJLmxvZ01h
bmFnZXIuYXdhaXRFdmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZCkKKyAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2
ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LCAiUHJldmlvdXNNZXNzYWdlUmVw
ZWF0Q291bnRVcGRhdGVkIHNob3VsZCBmaXJlLiIpOwogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5jb3VudCA9PT0gKGkgKyAxKSwgYENvdW50
IHNob3VsZCBiZSAke2kgKyAxfS5gKTsKLSAgICAgICAgICAgICAgICAgICAgV0kubG9nTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBs
aXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBs
aXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAudGhl
bihyZXNvbHZlLCByZWplY3QpOwogCkBAIC01OCwxNiArNTgsMTYgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIG5hbWU6ICJBZGREaWZmZXJlbnRNZXNzYWdlIiwKICAgICAgICAgZGVzY3JpcHRp
b246ICJBZGQgYSBkaWZmZXJlbnQgbWVzc2FnZSwgaXQgc2hvdWxkIHJlc2V0IHRoZSByZXBlYXQg
Y291bnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxl
dCBsaXN0ZW5lciA9IFdJLmxvZ01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTG9n
TWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIChldmVudCkg
PT4geworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY29uc29sZU1hbmFnZXIuc2luZ2xl
RmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdl
UmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgZmlyZSBQcmV2aW91c01lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQsIHRoaXMgbWVzc2FnZSBpcyBkaWZmZXJlbnQuIik7CiAgICAgICAgICAg
ICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kubG9nTWFu
YWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQorICAgICAg
ICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVu
dC5NZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5tZXNzYWdlIGluc3Rh
bmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UsICJNZXNzYWdlQWRkZWQgZXZlbnQgc2hvdWxkIGZpcmUu
Iik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEu
bWVzc2FnZS5yZXBlYXRDb3VudCA9PT0gMSwgIkNvbnNvbGVNZXNzYWdlIHJlcGVhdENvdW50IGlz
IDEuIik7Ci0gICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCBs
aXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQsIGxpc3RlbmVyLCBudWxsKTsKICAgICAgICAgICAgIH0pCiAgICAgICAg
ICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwogCkBAIC03OSwxNiArNzksMTYgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJSZXBlYXREaWZmZXJlbnRNZXNzYWdlIiwKICAgICAg
ICAgZGVzY3JpcHRpb246ICJSZXBlYXQgdGhpcyBkaWZmZXJlbnQgbWVzc2FnZSwgaXQgc2hvdWxk
IGluY3JlbWVudCB0aGUgcmVwZWF0IGNvdW50LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLnNpbmds
ZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwg
KGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2Us
ICJTaG91bGQgbm90IGZpcmUgTWVzc2FnZUFkZGVkLCB0aGlzIHNob3VsZCBiZSBhIHJlcGVhdC4i
KTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAg
ICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91
c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQpCisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIlByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5jb3VudCA9PT0gMiwgIkNvdW50IHNob3VsZCBi
ZSAyLiIpOwotICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgbGlzdGVuZXIsIG51bGwpOworICAg
ICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29u
c29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAg
ICAgICB9KQogICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKIApAQCAtMTAwLDE2
ICsxMDAsMTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJBZGRUZXN0TWVzc2Fn
ZUFnYWluIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJBZGQgdGhlIG9yaWdpbmFsIG1lc3NhZ2Ug
YWdhaW4sIGl0IHNob3VsZCBoYXZlIGEgc2luZ2xlIHJlcGVhdCBjb3VudC4iLAogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kubG9n
TWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZp
b3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
SS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQs
IChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNl
LCAiU2hvdWxkIG5vdCBmaXJlIFByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCB5ZXQu
Iik7CiAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2Fn
ZUFkZGVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQp
ID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0
YS5tZXNzYWdlIGluc3RhbmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UsICJNZXNzYWdlQWRkZWQgZXZl
bnQgc2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGV2ZW50LmRhdGEubWVzc2FnZS5yZXBlYXRDb3VudCA9PT0gMSwgIkNvbnNvbGVNZXNzYWdl
IHJlcGVhdENvdW50IGlzIDEuIik7Ci0gICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0
Q291bnRVcGRhdGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgV0kuY29uc29s
ZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2
aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIGxpc3RlbmVyLCBudWxsKTsKICAgICAgICAg
ICAgIH0pCiAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwogCkBAIC0xMjMsNyAr
MTIzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJNZXNzYWdlc1dpdGhFcXVh
bFZhbHVlc1JlcGVhdHMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlJlcGVhdCBtZXNzYWdlcyB3
aXRoIGVxdWFsIHZhbHVlcyBzaG91bGQgdHJpZ2dlciBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVk
LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5sb2dN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQpCisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50
KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRl
ZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZCBzaG91bGQgZmlyZSBmb3IgcmVwZWF0IG1lc3NhZ2VzIHdpdGggZXF1YWwgdmFsdWVzLiIp
OwogICAgICAgICAgICAgfSkKQEAgLTEzOSwxOCArMTM5LDE4IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBuYW1lOiAiTWVzc2FnZXNXaXRoT2JqZWN0c0RvTm90UmVwZWF0IiwKICAgICAgICAg
ZGVzY3JpcHRpb246ICJSZXBlYXQgbWVzc2FnZXMgd2l0aCBvYmplY3RzIHNob3VsZCBub3QgdHJp
Z2dlciBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgcmVwZWF0TGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNz
YWdlUmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGxldCByZXBl
YXRMaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwg
KGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2Us
ICJQcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQgc2hvdWxkIG5vdCBmaXJlIGZvciBy
ZXBlYXQgbWVzc2FnZXMgd2l0aCBvYmplY3QgYXJndW1lbnRzLiIpOwogICAgICAgICAgICAgICAg
IHJlamVjdCgpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGxldCByZW1haW5pbmcg
PSAyOwotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01h
bmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbiBhZGRMaXN0ZW5lcihldmVudCkgewor
ICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uIGFkZExpc3RlbmVyKGV2ZW50KSB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEubWVz
c2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlLCAiTWVzc2FnZUFkZGVkIGV2ZW50IHNo
b3VsZCBmaXJlLiIpOwogICAgICAgICAgICAgICAgIHJlbWFpbmluZy0tOwogICAgICAgICAgICAg
ICAgIGlmICghcmVtYWluaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZCwgcmVwZWF0TGlzdGVuZXIsIG51bGwpOwotICAgICAgICAgICAgICAg
ICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVu
dC5NZXNzYWdlQWRkZWQsIGFkZExpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAg
V0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5F
dmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHJlcGVhdExpc3RlbmVyLCBu
dWxsKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGFkZExpc3RlbmVy
LCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0pOwpAQCAtMTY1LDE4ICsxNjUsMTggQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIG5hbWU6ICJNZXNzYWdlc1dpdGhEaWZmZXJlbnRMZXZlbHNEb05vdFJlcGVhdCIs
CiAgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVwZWF0IG1lc3NhZ2VzIHdpdGggZGlmZmVyZW50IGxl
dmVscyBzaG91bGQgbm90IHRyaWdnZXIgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZC4iLAogICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IHJlcGVhdExpc3Rl
bmVyID0gV0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2Vy
LkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICBsZXQgcmVwZWF0TGlzdGVuZXIgPSBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VS
ZXBlYXRDb3VudFVwZGF0ZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KGZhbHNlLCAiUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkIHNo
b3VsZCBub3QgZmlyZSBmb3IgcmVwZWF0IG1lc3NhZ2VzIHdpdGggZGlmZmVyZW50IGxldmVscy4i
KTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAg
ICAgICBsZXQgcmVtYWluaW5nID0gMjsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgZnVuY3Rpb24gYWRk
TGlzdGVuZXIoZXZlbnQpIHsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbiBh
ZGRMaXN0ZW5lcihldmVudCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChldmVudC5kYXRhLm1lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSwgIk1l
c3NhZ2VBZGRlZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICByZW1haW5p
bmctLTsKICAgICAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZykgewotICAgICAgICAgICAgICAg
ICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVu
dC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHJlcGVhdExpc3RlbmVyLCBudWxs
KTsKLSAgICAgICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBhZGRMaXN0ZW5lciwgbnVsbCk7Cisg
ICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVk
LCByZXBlYXRMaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2Fn
ZUFkZGVkLCBhZGRMaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VzQ2xlYXJlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKaW5kZXggYTNlNjUyZWY5
MDQ5NDk4ZDAzY2U5YWRiZWY3NTQxNjE0NTIxZjEwMy4uMjlkOTM3ZTBkNTNmMzhjMjIwOTdmMzFi
ZmRhNTYxMzViYmFlN2VhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIG5hbWU6ICJDbGVhclZpYUNvbnNvbGVDbGVhck1lc3NhZ2VzQVBJIiwKICAgICAg
ICAgZGVzY3JpcHRpb246ICJDYWxsaW5nIENvbnNvbGUuY2xlYXJNZXNzYWdlcyBzaG91bGQgdHJp
Z2dlciBDb25zb2xlLm1lc3NhZ2VzQ2xlYXJlZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFn
ZXIuRXZlbnQuQ2xlYXJlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZl
bnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCkKICAgICAgICAgICAgIC50aGVuKChl
dmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVu
dCwgIkNsZWFyZWQgZXZlbnQgc2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAgICB9KQpAQCAtMjUs
NyArMjUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNsZWFyVmlhQ29uc29s
ZUFQSSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2FsbGluZyBjb25zb2xlLmNsZWFyKCkgc2hv
dWxkIHRyaWdnZXIgQ29uc29sZS5tZXNzYWdlc0NsZWFyZWQuIiwKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRFdmVudChXSS5M
b2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpCisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5h
d2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpCiAgICAgICAgICAgICAu
dGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZXZlbnQsICJDbGVhcmVkIGV2ZW50IHNob3VsZCBmaXJlLiIpOwogICAgICAgICAgICAgfSkK
QEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDbGVhclZp
YUNvbW1hbmRMaW5lQVBJIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDYWxsaW5nIGBjbGVhcigp
YCBpbiB0aGUgY29tbWFuZCBsaW5lIEFQSSBzaG91bGQgdHJpZ2dlciBDb25zb2xlLm1lc3NhZ2Vz
Q2xlYXJlZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAg
V0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCkKKyAg
ICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIu
RXZlbnQuQ2xlYXJlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIkNsZWFyZWQgZXZlbnQgc2hv
dWxkIGZpcmUuIik7CiAgICAgICAgICAgICB9KQpAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgbmFtZTogIkNsZWFyVmlhUGFnZVJlbG9hZCIsCiAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiUmVsb2FkaW5nIHRoZSBwYWdlIHNob3VsZCB0cmlnZ2VyIENvbnNvbGUubWVzc2Fn
ZXNDbGVhcmVkLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVkKQor
ICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5DbGVhcmVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LCAiQ2xlYXJlZCBldmVudCBz
aG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvd2ViY29yZS1sb2dnaW5nLWV4cGVjdGVkLnR4dAppbmRleCA0
ZTIzMzM5YTk1MGJkM2VjYzk5ZDNiZjgxMDQ2ZDcwZjgzNGYwZmQ2Li5kMjgyYzA1ZGIyZmU2ZWE3
YWViMWE2MWIzNDNmM2YwZTE3NjAwYzM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy1leHBlY3RlZC50eHQKQEAgLTUsMTAg
KzUsMTAgQEAgVGVzdCBXZWJLaXQgbG9nZ2luZyBjb25maWd1cmF0aW9uIGFuZCBjb25zb2xlIGRp
c3BsYXkuCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENvbnNvbGUuTG9nZ2luZwogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IENvbnNvbGUuTG9nZ2luZy5CYXNpY1Byb3BlcnRpZXMKIFBBU1M6IExvZyBj
aGFubmVscyBzaG91bGQgYmUgc3VwcG9ydGVkLgotUEFTUzogSGFzIFdJLmxvZ01hbmFnZXIuY3Vz
dG9tTG9nZ2luZ0NoYW5uZWxzLgotUEFTUzogV0kubG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hh
bm5lbHMgaXMgbm90IGVtcHR5LgotUEFTUzogSGFzIFdJLmxvZ01hbmFnZXIubG9nQ2hhbm5lbFNv
dXJjZXMuCi1QQVNTOiBXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzIGlzIG5vdCBlbXB0
eS4KK1BBU1M6IEhhcyBXSS5jb25zb2xlTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMuCitQ
QVNTOiBXSS5jb25zb2xlTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMgaXMgbm90IGVtcHR5
LgorUEFTUzogSGFzIFdJLmNvbnNvbGVNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLgorUEFTUzog
V0kuY29uc29sZU1hbmFnZXIubG9nQ2hhbm5lbFNvdXJjZXMgaXMgbm90IGVtcHR5LgogUEFTUzog
TG9nIGNoYW5uZWwgaGFzIGtub3duIHNvdXJjZS4KIFBBU1M6IExvZyBjaGFubmVsIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCiBQQVNTOiBMb2cgY2hhbm5lbCBoYXMga25vd24gc291cmNlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvd2ViY29yZS1sb2dnaW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRtbAppbmRl
eCAwZWRlNTBlMWM2ODZkZjUzOWViZWIyMWEzZDM2MGQ5NzRiMjI3ZmI5Li41NWI5MGQ3MDg2Yzdl
NDNmNTI4NjkxZTMzODQwOTQzMGRjYmZjMzM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRtbApAQCAtNTEsMTQgKzUxLDE0IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuTG9n
TWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCksICJMb2cgY2hhbm5lbHMgc2hvdWxkIGJlIHN1
cHBvcnRlZC4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0ku
bG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMsICJIYXMgV0kubG9nTWFuYWdlci5jdXN0
b21Mb2dnaW5nQ2hhbm5lbHMuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KFdJLmxvZ01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmxlbmd0aCwgIldJLmxv
Z01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzIGlzIG5vdCBlbXB0eS4iKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kubG9nTWFuYWdlci5sb2dDaGFubmVs
U291cmNlcywgIkhhcyBXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLiIpOwotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5u
ZWxTb3VyY2VzLmxlbmd0aCwgIldJLmxvZ01hbmFnZXIubG9nQ2hhbm5lbFNvdXJjZXMgaXMgbm90
IGVtcHR5LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5D
b25zb2xlTWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCksICJMb2cgY2hhbm5lbHMgc2hvdWxk
IGJlIHN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoV0kuY29uc29sZU1hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLCAiSGFzIFdJLmNvbnNv
bGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscy4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY29uc29sZU1hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5u
ZWxzLmxlbmd0aCwgIldJLmNvbnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscyBpcyBu
b3QgZW1wdHkuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJ
LmNvbnNvbGVNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLCAiSGFzIFdJLmNvbnNvbGVNYW5hZ2Vy
LmxvZ0NoYW5uZWxTb3VyY2VzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChXSS5jb25zb2xlTWFuYWdlci5sb2dDaGFubmVsU291cmNlcy5sZW5ndGgsICJXSS5j
b25zb2xlTWFuYWdlci5sb2dDaGFubmVsU291cmNlcyBpcyBub3QgZW1wdHkuIik7CiAKICAgICAg
ICAgICAgICAgICBsZXQgc291cmNlcyA9IE9iamVjdC52YWx1ZXMoV0kuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5jdXN0b21Mb2dn
aW5nQ2hhbm5lbHMuZm9yRWFjaCgoY2hhbm5lbCkgPT4geworICAgICAgICAgICAgICAgIFdJLmNv
bnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscy5mb3JFYWNoKChjaGFubmVsKSA9PiB7
CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzb3VyY2VzLmlu
Y2x1ZGVzKGNoYW5uZWwuc291cmNlKSwgIkxvZyBjaGFubmVsIGhhcyBrbm93biBzb3VyY2UuIik7
CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2hhbm5lbC5s
ZXZlbCwgV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmLCAiTG9nIGNoYW5uZWwgZGlzYWJsZWQg
YnkgZGVmYXVsdC4iKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTEwNCwxMCArMTA0LDEwIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ29uc29sZS5Mb2dnaW5nLk5vTG9nZ2lu
ZyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiTm8gPHZpZGVvPiBsb2dnaW5nIHdoZW4gZGlzYWJs
ZWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBj
aGFubmVsID0gV0kubG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMuZmluZChjaGFubmVs
ID0+IGNoYW5uZWwuc291cmNlID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk1l
ZGlhKTsKKyAgICAgICAgICAgIGxldCBjaGFubmVsID0gV0kuY29uc29sZU1hbmFnZXIuY3VzdG9t
TG9nZ2luZ0NoYW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0gV0kuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoY2hhbm5lbC5sZXZlbCA9PT0gV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwu
T2ZmLCAiTWVkaWEgbG9nZ2luZyBkaXNhYmxlZC4iKTsKIAotICAgICAgICAgICAgbGV0IGxvZ0xp
c3RlbmVyID0gV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZl
bnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGxldCBsb2dMaXN0ZW5l
ciA9IFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIu
RXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmZhaWwoIk5vdGhpbmcgc2hvdWxkIGJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4iKTsK
ICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTE4LDcgKzEx
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0
RXZlbnQoIlBhdXNlRXZlbnQiKS50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJTdG9wcGVkIFBsYXlpbmciKTsKLSAgICAgICAgICAgICAgICBXSS5s
b2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdl
QWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VB
ZGRlZCwgbG9nTGlzdGVuZXIsIG51bGwpOwogICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCBy
ZWplY3QpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBwbGF5
KClgKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIENvbnNvbGVBZ2VudC5jbGVhck1lc3NhZ2Vz
KCk7CiAKLSAgICAgICAgICAgIGxldCBjaGFubmVsID0gV0kubG9nTWFuYWdlci5jdXN0b21Mb2dn
aW5nQ2hhbm5lbHMuZmluZChjaGFubmVsID0+IGNoYW5uZWwuc291cmNlID09PSBXSS5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlU291cmNlLk1lZGlhKTsKKyAgICAgICAgICAgIGxldCBjaGFubmVsID0g
V0kuY29uc29sZU1hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBj
aGFubmVsLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2hhbm5lbC5sZXZlbCA9PT0g
V0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmLCAiTWVkaWEgbG9nZ2luZyBkaXNhYmxlZC4iKTsK
IAogICAgICAgICAgICAgQ29uc29sZUFnZW50LnNldExvZ2dpbmdDaGFubmVsTGV2ZWwoY2hhbm5l
bC5zb3VyY2UsIFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLkJhc2ljKQpAQCAtMTQ2LDExICsxNDYs
MTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgbGV0IG1lZGlhQ2hhbm5lbCA9
IGNoYW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KG1lZGlhQ2hhbm5lbC5sZXZlbCA9PT0gV0kuTG9nZ2luZ0NoYW5uZWwuTGV2
ZWwuQmFzaWMsICJNZWRpYSBsb2dnaW5nIGhhcyBiZWVuIGVuYWJsZWQuIik7CiAKLSAgICAgICAg
ICAgICAgICBsZXQgbG9nTGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCBsb2dMaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1lc3NhZ2UgaW5zdGFuY2VvZiBX
SS5Db25zb2xlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChtZXNzYWdlLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJj
ZS5NZWRpYSwgIk1lZGlhIGxvZyBtZXNzYWdlIHNob3VsZCBoYXZlIHNvdXJjZSAnbWVkaWEnLiIp
OwotICAgICAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgQ29uc29sZUFnZW50LnNldExvZ2dpbmdDaGFubmVsTGV2ZWwo
bWVkaWFDaGFubmVsLnNvdXJjZSwgV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmKQogICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICBDb25zb2xlQWdlbnQuY2xlYXJNZXNzYWdlcygpOwogCi0gICAgICAgICAg
ICBsZXQgY2hhbm5lbCA9IFdJLmxvZ01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmZpbmQo
Y2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5NZWRpYSk7CisgICAgICAgICAgICBsZXQgY2hhbm5lbCA9IFdJLmNvbnNvbGVNYW5hZ2Vy
LmN1c3RvbUxvZ2dpbmdDaGFubmVscy5maW5kKGNoYW5uZWwgPT4gY2hhbm5lbC5zb3VyY2UgPT09
IFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEpOwogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGNoYW5uZWwubGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFubmVs
LkxldmVsLk9mZiwgIk1lZGlhIGxvZ2dpbmcgZGlzYWJsZWQuIik7CiAKICAgICAgICAgICAgIENv
bnNvbGVBZ2VudC5zZXRMb2dnaW5nQ2hhbm5lbExldmVsKGNoYW5uZWwuc291cmNlLCBXSS5Mb2dn
aW5nQ2hhbm5lbC5MZXZlbC5WZXJib3NlKQpAQCAtMTgxLDcgKzE4MSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChtZWRpYUNoYW5u
ZWwubGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLlZlcmJvc2UsICJWZXJib3NlIG1l
ZGlhIGxvZ2dpbmcgaGFzIGJlZW4gZW5hYmxlZC4iKTsKIAogICAgICAgICAgICAgICAgIGxldCBt
ZXNzYWdlQ291bnQgPSAwOwotICAgICAgICAgICAgICAgIGxldCBsb2dMaXN0ZW5lciA9IFdJLmxv
Z01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGxvZ0xpc3RlbmVyID0gV0kuY29u
c29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNz
YWdlQWRkZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9
IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobWVzc2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobWVzc2FnZS5zb3VyY2UgPT09IFdJLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KG1lc3NhZ2UucmVwZWF0Q291bnQgPT09IDEsICJDb25zb2xlTWVzc2FnZSByZXBlYXRDb3Vu
dCBpcyAxLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbWVzc2FnZUNvdW50ID09
PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJl
Y2VpdmVkIHRocmVlIEpTT04gbWVzc2FnZXMuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQu
TWVzc2FnZUFkZGVkLCBsb2dMaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFu
YWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb25zb2xlQWdlbnQuc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChtZWRp
YUNoYW5uZWwuc291cmNlLCBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5PZmYpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250
cm9sbGVyLWltcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVu
dGltZS1jb250cm9sbGVyLWltcG9ydC5odG1sCmluZGV4IDRjYzMyZTc4MTMxZDZjNGY0YTE5YTA3
OTM3MDU3MzJiMDg5OTI5NjYuLmNjMWJhOTlmYmE4ZWFhYzk0MjNiMGUxMDU3Y2Y0YzYyYmVmMTM3
Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUt
Y29udHJvbGxlci1pbXBvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29udHJv
bGxlci9ydW50aW1lLWNvbnRyb2xsZXItaW1wb3J0Lmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBldmFsdWF0aW5nIGFuIGlt
cG9ydCBleHByZXNzaW9uIGZyb20gY29uc29sZS4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFNvdXJjZShleHByZXNzaW9uLCBjb3Vu
dCkgewotICAgICAgICAgICAgICAgIGxldCBwcm9taXNlID0gV0kubG9nTWFuYWdlci5hd2FpdEV2
ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBs
ZXQgcHJvbWlzZSA9IFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFn
ZXIuRXZlbnQuTWVzc2FnZUFkZGVkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgICAgICAgICBXSS5ydW50aW1l
TWFuYWdlci5ldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93KGV4cHJlc3Npb24sIHtvYmplY3RHcm91
cDogInRlc3QifSwgKHJlc3VsdCwgd2FzVGhyb3duKSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oKCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbAppbmRleCA4MjRlNWQyMDE2
ODU2MGUzZmEwYTU2MTY0OTc0ZDM5Nzg3ZWEwODk5Li5iNDljMTUxYzMzOWJhMzc2YTgwOGM3M2Ey
ODljNDViMmNmOTk3N2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29udHJv
bGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbApAQCAtMTEyLDEzICsxMTIsMTMgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIC8vIFdlIGNhbiByZXNvbHZlIGFmdGVyIHJl
Y2VpdmluZyB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbnNvbGUuaW5mbyBtZXNzYWdlcy4KICAg
ICAgICAgICAgIGxldCBzZWVuID0gMDsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmxv
Z01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5jb25zb2xlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRl
ZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbnNvbGVNZXNzYWdlID0gZXZl
bnQuZGF0YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIGlmIChjb25zb2xlTWVzc2FnZS5sZXZl
bCAhPT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkluZm8pCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAoKytzZWVuICE9PSBleHBlY3RlZCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwg
bGlzdGVuZXIpOworICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBsaXN0ZW5lcik7
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvYWRkLXJ1bGUuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvYWRkLXJ1bGUuaHRtbAppbmRleCAwOWNiZjY3MTRjZTU0
ZTNiYzQwYmI4MzYzZWE2N2I2Y2I3ODI3MWVkLi45OGIyNmYzN2FmMzkzZjFlMjAzNTNiZGZhMTNl
MzhkM2JhMzJhNzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2FkZC1y
dWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9hZGQtcnVsZS5odG1sCkBA
IC05LDcgKzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogCiAgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDU1MuYWRkUnVsZSIpOwogCi0gICAgbGV0IG1haW5G
cmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQgbWFpbkZy
YW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogCiAgICAgZnVuY3Rpb24gc3RyaW5n
aWZ5KHJhbmdlKSB7CiAgICAgICAgIHJldHVybiBgJHtyYW5nZS5zdGFydExpbmV9OiR7cmFuZ2Uu
c3RhcnRDb2x1bW59LCR7cmFuZ2UuZW5kTGluZX06JHtyYW5nZS5lbmRDb2x1bW59YDsKQEAgLTQ2
LDkgKzQ2LDkgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgY29uc3QgZG9Ob3RDcmVhdGVJZk1pc3NpbmcgPSB0cnVlOwotICAgICAgICAgICAgV0kuY3Nz
U3R5bGVNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJh
bWUsIHVzZWRFeGlzdGluZ0luc3BlY3RvclN0eWxlc2hlZXQsIGRvTm90Q3JlYXRlSWZNaXNzaW5n
KTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVl
dEZvckZyYW1lKG1haW5GcmFtZSwgdXNlZEV4aXN0aW5nSW5zcGVjdG9yU3R5bGVzaGVldCwgZG9O
b3RDcmVhdGVJZk1pc3NpbmcpOwogCi0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucHJl
ZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgaW5zcGVjdG9yU3R5
bGVTaGVldEF2YWlsYWJsZSk7CisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLnByZWZlcnJlZElu
c3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIGluc3BlY3RvclN0eWxlU2hlZXRB
dmFpbGFibGUpOwogICAgICAgICB9CiAgICAgfSk7CiAKQEAgLTcwLDcgKzcwLDcgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV0IGluc3BlY3RvclN0
eWxlU2hlZXQgPSBudWxsOwotICAgICAgICAgICAgZm9yIChsZXQgc3R5bGVTaGVldCBvZiBXSS5j
c3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHN0eWxl
U2hlZXQgb2YgV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cykgewogICAgICAgICAgICAgICAgIGlm
IChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnNwZWN0b3JTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWplY3QoIlRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBpbnNwZWN0b3Igc3R5bGUgc2hlZXQiKTsK
QEAgLTEwNiw3ICsxMDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBsZXQgZXh0ZXJuYWxTdHlsZVNoZWV0ID0gbnVsbDsKLSAgICAgICAgICAgIGZv
ciAobGV0IHN0eWxlU2hlZXQgb2YgV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzKSB7Cisg
ICAgICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0IG9mIFdJLmNzc01hbmFnZXIuc3R5bGVTaGVl
dHMpIHsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5kaXNwbGF5TmFtZSA9PT0gImV4
dGVybmFsLmNzcyIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVybmFsU3R5bGVTaGVl
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJUaGVyZSBzaG91bGQgb25seSBi
ZSBvbmUgZXh0ZXJuYWwgc3R5bGUgc2hlZXQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0bWwKaW5kZXggNWY1NzI2NWQwYjdlMTdmOTMxNDUwNmEz
MjJlNzM2MDg2YzNhYzllZS4uOTU4ZmEyNDc5MjhkNTg3YzRiYzZiOTAwNDY5ZDFlMWY5ZGM4NmFj
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0
bWwKQEAgLTYsNyArNiw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBsZXQgYWRkZWRTdHls
ZVNoZWV0OwotICAgIGxldCBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWlu
RnJhbWU7CisgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsK
IAogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQ1NTLmNy
ZWF0ZVN0eWxlU2hlZXQiKTsKIApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAi
RW5zdXJlIHRoZXJlIGFyZSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0
eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVz
aGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFu
YWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMu
Iik7CiAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTI0LDkg
KzI0LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuYW1lOiAiQ3JlYXRlSW5zcGVj
dG9yU3R5bGVTaGVldENhbGwiICsgaSwKICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxk
IGNyZWF0ZSBhIG5ldyBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAogICAgICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdh
aXRFdmVudChXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkKQorICAgICAg
ICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0
eWxlU2hlZXRBZGRlZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxlTWFuYWdl
ci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IGksICJTaG91bGQgaW5jcmVhc2UgdGhlIGxpc3Qgb2Yg
c3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gaSwgIlNob3VsZCBpbmNy
ZWFzZSB0aGUgbGlzdCBvZiBzdHlsZXNoZWV0cy4iKTsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJ
LkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNoZWV0IG9yaWdpbiBz
aG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0
KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLiIp
OwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0
YS5zdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBtYWluRnJhbWUsICJBZGRlZCBTdHlsZVNoZWV0
IGZyYW1lIHNob3VsZCBiZSB0aGUgbWFpbiBmcmFtZS4iKTsKQEAgLTQxLDcgKzQxLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIFdJLmNzc1N0eWxlTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkK
KyAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNo
ZWV0UmVtb3ZlZCkKICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5mYWlsKCJTaG91bGQgbm90IGJlIHJlbW92aW5nIGFueSBTdHlsZVNoZWV0cyBpbiB0aGlzIHRl
c3QuIik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2Nz
cy1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jc3MtcHJvcGVydHku
aHRtbAppbmRleCBkM2M2Nzk0YTIwMWJkYWQ5MjJiZDM4Y2YzMDJkMGE2ODFkM2NmYWJhLi4wY2Ux
YmZmZDc2YzJlZTA5ZDkxNTY3MTQzMmQ3MGViZDE1MWJmMWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY3NzL2Nzcy1wcm9wZXJ0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3MvY3NzLXByb3BlcnR5Lmh0bWwKQEAgLTIyNCwxMSArMjI0LDExIEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0gICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiZGl2I3giLCAoY29udGVudE5v
ZGVJZCkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5v
ZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9k
ZS5pZCwgImRpdiN4IiwgKGNvbnRlbnROb2RlSWQpID0+IHsKICAgICAgICAgICAgIGlmIChjb250
ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFu
YWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7Ci0gICAgICAgICAgICAgICAgbm9kZVN0eWxl
cyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICAg
ICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJ
ZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9y
Tm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlU3R5bGVzLm5lZWRzUmVm
cmVzaCkgewogICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVudExp
c3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRtbAppbmRl
eCBmZjYxYmRkNWViYjllOGIwNjYzZWZkN2Q1MjcwZDVlNDFkNzk5ZjkyLi42MzNlZWE3MzhkODZi
MWQ1MWM3ZDgyYmE5ZTNlY2ZiZWY3YmE4ZDAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Nzcy9nZXRBbGxTdHlsZVNoZWV0cy5odG1sCkBAIC0xOSw5ICsxOSw5IEBAIGRvY3VtZW50
LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewot
ICAgIFdJLmNzc1N0eWxlTWFuYWdlci5mZXRjaFN0eWxlU2hlZXRzSWZOZWVkZWQoKTsKKyAgICBX
SS5jc3NNYW5hZ2VyLmZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpOwogICAgIEluc3BlY3RvckJh
Y2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKLSAgICAgICAgbGV0
IHN0eWxlU2hlZXRzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzOworICAgICAgICBs
ZXQgc3R5bGVTaGVldHMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzOwogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldHMubGVuZ3RoID09PSA0LCAiVGhlcmUgc2hv
dWxkIGJlIGZvdXIgc3R5bGVzaGVldHMuIik7CiAKICAgICAgICAgZm9yIChsZXQgc3R5bGVTaGVl
dCBvZiBzdHlsZVNoZWV0cykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9tYW5hZ2VyLXByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tYW5hZ2VyLXByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hl
ZXRGb3JGcmFtZS5odG1sCmluZGV4IGQxYmZhZTBkZDE0MzIwNmQ4Y2RhMDdiODQ2MTczMzBiNjQx
ODZjNDAuLjM0MTFjZTFmYzc1MGUxYjE0OGUyMjczZGYxNmM1ZWM4YjEzZDA2ZWEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvbWFuYWdlci1wcmVmZXJyZWRJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9yRnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21h
bmFnZXItcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLmh0bWwKQEAgLTUsNyAr
NSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgbGV0IG1haW5GcmFtZSA9
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQgbWFpbkZyYW1lID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgIGxldCBjaGlsZEZyYW1lcyA9IEFycmF5
LmZyb20obWFpbkZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGNoaWxkRnJhbWVzLmxlbmd0aCwgMSwgIlBhZ2Ugc2hvdWxkIGhhdmUgYSBz
dWJmcmFtZS4iKTsKIApAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
bmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJl
IHRoZXJlIGFyZSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxlTWFu
YWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5z
dHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMuIik7CiAg
ICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTI0LDE0ICsyNCwx
NCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNyZWF0ZU1haW5GcmFtZUluc3Bl
Y3RvclN0eWxlU2hlZXQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkZpcnN0IHJlcXVlc3QgZm9y
IG1haW4gZnJhbWUgc2hvdWxkIGNyZWF0ZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAogICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNo
ZWV0QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5zaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2
ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LmRhdGEuc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0
b3IsICJBZGRlZCBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHls
ZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gbWFpbkZy
YW1lLCAiQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQgYmUgdGhlIG1haW4gZnJhbWUuIik7
CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLnByZWZl
cnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIChzdHlsZVNoZWV0KSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxl
TWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDEsICJTaG91bGQgYmUgb25lIHN0eWxlc2hl
ZXQuIik7CisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxl
U2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIChzdHlsZVNoZWV0KSA9PiB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldHMubGVu
Z3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOwogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHlsZVNoZWV0Lm9yaWdpbiA9PT0gV0kuQ1NTU3R5
bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3JpZ2luIGlzIGluc3BlY3Rvci4i
KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldC5p
c0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0
KCkgc2hvdWxkIGJlIHRydWUuIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpAQCAtNDMs
MTQgKzQzLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQW5vdGhlck1haW5G
cmFtZVJlcXVlc3REb2VzTm90aGluZyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiU2Vjb25kIHJl
cXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgc3R5bGVzaGVldC4i
LAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGxpc3Rl
bmVyID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNTU1N0
eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
SS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJTaG91bGQgbm90IGNyZWF0ZSBh
IG5ldyBTdHlsZVNoZWV0LCBzaG91bGQgcmV1c2UgdGhlIGV4aXN0aW5nIG9uZSIpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgKHN0eWxlU2hlZXQpID0+IHsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzU3R5bGVNYW5hZ2VyLnN0
eWxlU2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBzdGlsbCBiZSBvbmUgc3R5bGVzaGVldC4i
KTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVl
dEZvckZyYW1lKG1haW5GcmFtZSwgKHN0eWxlU2hlZXQpID0+IHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGgg
PT09IDEsICJTaG91bGQgc3RpbGwgYmUgb25lIHN0eWxlc2hlZXQuIik7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2luID09PSBXSS5DU1NT
dHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yLCAiU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJlICdp
bnNwZWN0b3InLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChz
dHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVTaGVldC5pc0luc3BlY3Rv
clN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKLSAgICAgICAgICAgICAgICBXSS5jc3NT
dHlsZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQu
U3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgV0kuY3Nz
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVl
dEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTYwLDE0ICs2MCwxNCBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgbmFtZTogIkNyZWF0ZVN1YkZyYW1lSW5zcGVjdG9yU3R5bGVTaGVldCIsCiAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiRmlyc3QgcmVxdWVzdCBmb3Igc3ViZnJhbWUgc2hvdWxkIGNy
ZWF0ZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5D
U1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5vcmln
aW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNoZWV0
IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxl
U2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRy
dWUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRh
dGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gY2hpbGRGcmFtZXNbMF0sICJBZGRlZCBTdHls
ZVNoZWV0IGZyYW1lIHNob3VsZCBiZSBhIGNoaWxkIGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7
CiAKLSAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9yRnJhbWUoY2hpbGRGcmFtZXNbMF0sIChzdHlsZVNoZWV0KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxlTWFuYWdlci5zdHls
ZVNoZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxlc2hlZXRzLiIpOworICAg
ICAgICAgICAgV0kuY3NzTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJh
bWUoY2hpbGRGcmFtZXNbMF0sIChzdHlsZVNoZWV0KSA9PiB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09
PSAyLCAiU2hvdWxkIGJlIHR3byBzdHlsZXNoZWV0cy4iKTsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hl
ZXQuVHlwZS5JbnNwZWN0b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3Rv
cicuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hl
ZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVT
aGVldCgpIHNob3VsZCBiZSB0cnVlLiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKQEAg
LTc5LDIwICs3OSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkFub3RoZXJT
dWJGcmFtZVJlcXVlc3REb2VzTm90aGluZyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiU2Vjb25k
IHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgc3R5bGVzaGVl
dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNT
U1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5l
cihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJTaG91bGQgbm90IGNyZWF0
ZSBhIG5ldyBTdHlsZVNoZWV0LCBzaG91bGQgcmV1c2UgdGhlIGV4aXN0aW5nIG9uZSIpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGNoaWxkRnJhbWVzWzBdLCAoc3R5bGVTaGVldCkgPT4g
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1h
bmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAyLCAiU2hvdWxkIGJlIHR3byBzdHlsZXNoZWV0
cy4iKTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVT
aGVldEZvckZyYW1lKGNoaWxkRnJhbWVzWzBdLCAoc3R5bGVTaGVldCkgPT4geworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRz
Lmxlbmd0aCA9PT0gMiwgIlNob3VsZCBiZSB0d28gc3R5bGVzaGVldHMuIik7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2luID09PSBXSS5D
U1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yLCAiU3R5bGVTaGVldCBvcmlnaW4gc2hvdWxkIGJl
ICdpbnNwZWN0b3InLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVTaGVldC5pc0luc3Bl
Y3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKLSAgICAgICAgICAgICAgICBXSS5j
c3NTdHlsZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZl
bnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgV0ku
Y3NzTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVT
aGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmNzc1N0eWxlTWFu
YWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5
bGVTaGVldFJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuY3NzTWFuYWdlci5zaW5n
bGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVk
LCBmdW5jdGlvbihldmVudCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwg
IlNob3VsZCBub3QgYmUgcmVtb3ZpbmcgYW55IFN0eWxlU2hlZXRzIGluIHRoaXMgdGVzdC4iKTsK
ICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tYXRjaGVk
LXN0eWxlLXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvbWF0Y2hl
ZC1zdHlsZS1wcm9wZXJ0aWVzLmh0bWwKaW5kZXggMTVjM2M2ZTE4NDVlMmE1ZmVjNGYzYmQ0YjA4
ZTNmMDg3OWEzYTAyOS4uYjJlNjlkZWYwM2U4OGVkNWVlNTE4Y2E2YWI0YzM5NWMyNjUyMmRjNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tYXRjaGVkLXN0eWxlLXByb3Bl
cnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21hdGNoZWQtc3R5bGUt
cHJvcGVydGllcy5odG1sCkBAIC02MCwxMSArNjAsMTEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgdmFsaWRhdGVTdHlsZXMoKTsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwgZnVuY3Rp
b24oY29udGVudE5vZGVJZCkgeworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1
bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgewog
ICAgICAgICAgICAgaWYgKGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKLSAgICAg
ICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5vZGUo
ZG9tTm9kZSk7CisgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5v
ZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0ku
Y3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOwogCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVz
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIG9uU3R5
bGVzUmVmcmVzaGVkLCB0aGlzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
c3MvbW9kaWZ5LWNzcy1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9t
b2RpZnktY3NzLXByb3BlcnR5Lmh0bWwKaW5kZXggYjE5NTI1NDYwMDdhMGJjNzg5NDc5YzQ1MjUx
NWZmNzhhMzc1YTNiMC4uYzM1YjlmMDMxNTc1ODAxOTc2ZjMyOWNkZTcxNjdkYTE5NTkzMmE1YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tb2RpZnktY3NzLXByb3BlcnR5
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tb2RpZnktY3NzLXByb3BlcnR5
Lmh0bWwKQEAgLTEyNywxMSArMTI3LDExIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0K
ICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1l
bnROb2RlKSA9PiB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9j
dW1lbnROb2RlLmlkLCAiI3giLCAoY29udGVudE5vZGVJZCkgPT4geworICAgIFdJLmRvbU1hbmFn
ZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgKGNvbnRlbnROb2RlSWQp
ID0+IHsKICAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7
Ci0gICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNG
b3JOb2RlKGRvbU5vZGUpOworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFu
YWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxl
cyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChub2RlU3R5bGVzLm5lZWRzUmVmcmVzaCkgewogICAgICAgICAgICAgICAgICAgICBu
b2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQu
UmVmcmVzaGVkLCAoZXZlbnQpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jc3MvbW9kaWZ5LXJ1bGUtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
c3MvbW9kaWZ5LXJ1bGUtc2VsZWN0b3IuaHRtbAppbmRleCBjOWQxYTYzZTA0NGNkYWU1MzdiNGEw
NTk5MGYxZTEwMTNjYjYzMWQzLi43M2RmY2UyM2I3NWMzMmE0YzI3ZWM3OTczZGU1MWI0OTkzNmM3
ZjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21vZGlmeS1ydWxlLXNl
bGVjdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tb2RpZnktcnVsZS1z
ZWxlY3Rvci5odG1sCkBAIC01MiwyMiArNTIsMjIgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgKytpbmRleDsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9j
dW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnROb2Rl
KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRVJST1I6IGRvY3VtZW50IG5vdCBm
b3VuZC4iKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5x
dWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIi5mb28iLCBmdW5jdGlvbihjb250ZW50Tm9k
ZUlkKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUu
aWQsICIuZm9vIiwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgewogICAgICAgICAgICAgaWYgKCFj
b250ZW50Tm9kZUlkKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVSUk9S
OiBET00gbm9kZSBub3QgZm91bmQuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKGNv
bnRlbnROb2RlSWQpOwotICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdl
ci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgIG5vZGVTdHls
ZXMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxlc0Zvck5vZGUoZG9tTm9kZSk7CiAKICAgICAgICAgICAg
IG5vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJl
c2hlZCwgb25TdHlsZXNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgaWYgKCFub2RlU3R5
bGVzLm5lZWRzUmVmcmVzaCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mv
cHNldWRvLWVsZW1lbnQtbWF0Y2hlcy1mb3ItcHNldWRvLWVsZW1lbnQtbm9kZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVzLWZvci1wc2V1ZG8t
ZWxlbWVudC1ub2RlLmh0bWwKaW5kZXggNGY0MTVlMDUyNDQyNTExODIyNGVjOGI5NGYwMzY2ZGMw
MDAxZDZkZC4uMzE4OWYyYWYwYTAzMTJkYjVhYzkzOTU3NjFiZjY5NjAzZmIyNmQzNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVzLWZv
ci1wc2V1ZG8tZWxlbWVudC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVzLWZvci1wc2V1ZG8tZWxlbWVudC1ub2RlLmh0bWwKQEAg
LTM3LDE0ICszNywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOyAgICAgICAgICAgICAgICAKICAgICB9CiAKLSAgICBXSS5kb21UcmVl
TWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3giLCBm
dW5jdGlvbihjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRv
bVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICBXSS5kb21NYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgZnVuY3Rpb24oY29u
dGVudE5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5v
ZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KGRvbU5vZGUpOwogICAgICAgICAgICAgdmFyIGJlZm9yZVBzZXVkb0VsZW1lbnRET01Ob2RlID0g
ZG9tTm9kZS5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQoYmVmb3JlUHNldWRvRWxlbWVudERPTU5vZGUsICJHb3QgOjpiZWZvcmUgcHNl
dWRvIGVsZW1lbnQgZm9yICN4Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVm
cmVzaGluZyBzdHlsZXMgZm9yIDo6YmVmb3JlIHBzZXVkbyBlbGVtZW50Iik7Ci0gICAgICAgICAg
ICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5vZGUoYmVmb3JlUHNl
dWRvRWxlbWVudERPTU5vZGUpOworICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFn
ZXIuc3R5bGVzRm9yTm9kZShiZWZvcmVQc2V1ZG9FbGVtZW50RE9NTm9kZSk7CiAgICAgICAgICAg
ICBub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZy
ZXNoZWQsIHZhbGlkYXRlU3R5bGVzKTsKICAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvcHNl
dWRvLWVsZW1lbnQtbWF0Y2hlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1
ZG8tZWxlbWVudC1tYXRjaGVzLmh0bWwKaW5kZXggNGJiNDhlYzlkMDE2NmIwZmYxZDJmNTliM2Jj
MzYwYTMzMzAwYThkZS4uMDZmYzJmNDA2MzJlM2JlMmFmZjY0Njg3N2I1YmRmYmQ1ZTRkNGNlOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRj
aGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1t
YXRjaGVzLmh0bWwKQEAgLTM5LDExICszOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAg
ICB2YWxpZGF0ZU1hdGNoZWRTZWxlY3RvcnMoKTsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFu
YWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwg
ZnVuY3Rpb24oY29udGVudE5vZGVJZCkgeworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5
U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwgZnVuY3Rpb24oY29udGVudE5vZGVJ
ZCkgewogICAgICAgICAgICAgdHJ5IHsgCiAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnROb2Rl
SWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdl
ci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBkb21O
b2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGRvbU5vZGUuZ2V0U3VidHJlZSgxLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzaGFkb3dSb290RG9jdW1lbnQgPSBkb21Ob2RlLmNoaWxkcmVuWzBd
OwogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdERvY3VtZW50LmdldFN1YnRyZWUo
MiwgZnVuY3Rpb24oKSB7CkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkb3dSb290LmNo
aWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzaGFkb3dOb2RlID0gc2hhZG93Um9vdC5jaGlsZHJlbltpXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNoYWRvd05vZGUuZ2V0QXR0cmlidXRlKCJwc2V1ZG8iKSA9PT0g
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
c0Zvck5vZGUoc2hhZG93Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKHNoYWRvd05vZGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMubmVlZHNS
ZWZyZXNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVTdHls
ZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgb25T
dHlsZXNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zZWxlY3Rvci1k
eW5hbWljLXNwZWNpZmljaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NlbGVj
dG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbAppbmRleCA1Nzk0MDc2YmMzZjk0MTA4ZmIxNzg3
YTA5OTg4MWU0MjA0OWY2NDkyLi43ZGYyODg0YzU0ODVhMzEzNWVlODU1Njg5NjYwOGMxNDNhMTVj
OTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NlbGVjdG9yLWR5bmFt
aWMtc3BlY2lmaWNpdHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NlbGVj
dG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbApAQCAtNjksMTAgKzY5LDEwIEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50U2VsZWN0b3IgPSBzdGVwc1tj
dXJyZW50U3RlcEluZGV4KytdOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVj
dG9yKGRvY3VtZW50Tm9kZS5pZCwgY3VycmVudFNlbGVjdG9yLCBmdW5jdGlvbihjb250ZW50Tm9k
ZUlkKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUu
aWQsIGN1cnJlbnRTZWxlY3RvciwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgewogICAgICAgICAg
ICAgaWYgKGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJ
LmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKLSAgICAgICAgICAgICAg
ICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5vZGUoZG9tTm9kZSk7
CisgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChj
b250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdl
ci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGVTdHls
ZXMubmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIG9uU3R5bGVzUmVmcmVz
aGVkLCB0aGlzKTsKQEAgLTg1LDcgKzg1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0
aW9uKG5vZGUpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihu
b2RlKSB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgIHJ1bk5leHRTdGVw
KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NlbGVj
dG9yLXNwZWNpZmljaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NlbGVjdG9y
LXNwZWNpZmljaXR5Lmh0bWwKaW5kZXggMWYzN2UyOGQ1N2M0NzdiYzgwNzY0ZWMwMThlMDExNWE3
NTY3NDhlNi4uZGNjODMzMWYwNTlmOTkyNjVhNWUwNWI1YTgxOGY5MzAzMGY3NDMzMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zZWxlY3Rvci1zcGVjaWZpY2l0eS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2VsZWN0b3Itc3BlY2lmaWNpdHkuaHRt
bApAQCAtNDEsMTEgKzQxLDExIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHZhbGlkYXRl
U2VsZWN0b3JzKCk7CiAgICAgfQogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5x
dWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNub2RlMSIsIGZ1bmN0aW9uKGNvbnRlbnRO
b2RlSWQpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1
bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50
Tm9kZS5pZCwgIiNub2RlMSIsIGZ1bmN0aW9uKGNvbnRlbnROb2RlSWQpIHsKICAgICAgICAgICAg
IGlmIChjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7Ci0gICAgICAgICAgICAgICAg
bm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOwor
ICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29u
dGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIu
c3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlU3R5bGVz
Lm5lZWRzUmVmcmVzaCkKICAgICAgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCBvblN0eWxlc1JlZnJlc2hl
ZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3NoYWRvdy1z
Y29wZWQtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3Bl
ZC1zdHlsZS5odG1sCmluZGV4IGUwYTU0MGNlNDU2YjcwN2I4MmQ4OWY4MGQ1ODY3ODQxOTQ1ZmNi
NjQuLmU0ZGMyZGIyNWRlNTY3ZjcyMTcyZDQ2MzQ4YmM3NDM0ZTViNzhjNjkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHlsZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHlsZS5odG1sCkBAIC00
MywxNSArNDMsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDU1MuU2hhZG93
U2NvcGVkU3R5bGUuSG9zdFN0eWxlcyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIHNo
YWRvdyByb290IGhvc3QgZWxlbWVudCBnZXRzIDpob3N0IHN0eWxlcy4iLAogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlT
ZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjc2hhZG93LWhvc3QiLCAobm9kZUlkKSA9PiB7Cisg
ICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAi
I3NoYWRvdy1ob3N0IiwgKG5vZGVJZCkgPT4gewogICAgICAgICAgICAgICAgIGlmICghbm9kZUlk
KSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgiRE9NIG5vZGUgI3No
YWRvdy1ob3N0IG5vdCBmb3VuZCBpbiBkb2N1bWVudC4iKTsKICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBob3N0Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOwotICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVN
YW5hZ2VyLnN0eWxlc0Zvck5vZGUoaG9zdE5vZGUpOworICAgICAgICAgICAgICAgIGhvc3ROb2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICBsZXQg
bm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShob3N0Tm9kZSk7CiAgICAg
ICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChob3N0Tm9kZS5oYXNTaGFkb3dSb290
cygpLCAiTm9kZSBzaG91bGQgaGF2ZSBzaGFkb3cgcm9vdHMuIik7CiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoaG9zdE5vZGUuaXNJblNoYWRvd1RyZWUoKSwg
Ik5vZGUgc2hvdWxkIG5vdCBiZSBpbiBhIHNoYWRvdyB0cmVlLiIpOwpAQCAtNjgsMTUgKzY4LDE1
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ1NTLlNoYWRvd1Njb3BlZFN0eWxl
LkVsZW1lbnRJblNoYWRvd1RyZWUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSBlbGVt
ZW50IGluIHNoYWRvdyB0cmVlIGdldHMgc2hhZG93IGRvbSBzY29wZWQgc3R5bGVzLiIsCiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGhvc3ROb2RlLnNoYWRvd1Jvb3RzKClbMF0uaWQsICIjc2hhZG93LW5v
ZGUiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoaG9zdE5vZGUuc2hhZG93Um9vdHMoKVswXS5pZCwgIiNzaGFkb3ctbm9kZSIsIChub2RlSWQp
ID0+IHsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZCkgewogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRPTSBub2RlICNzaGFkb3ctbm9kZSBub3QgZm91bmQgaW4g
I3NoYWRvdy1ob3N0J3Mgc2hhZG93Um9vdC4iKTsKICAgICAgICAgICAgICAgICAgICAgcmVqZWN0
KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2Rl
SWQpOwotICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2Vy
LnN0eWxlc0Zvck5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5kb21N
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVz
ID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgICAgIG5v
ZGVTdHlsZXMucmVmcmVzaCgpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG5vZGUuaGFzU2hhZG93Um9vdHMoKSwgIk5vZGUgc2hvdWxk
IG5vdCBoYXZlIHNoYWRvdyByb290cy4iKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KG5vZGUuaXNJblNoYWRvd1RyZWUoKSwgIk5vZGUgc2hvdWxkIGJlIGlu
IGEgc2hhZG93IHRyZWUuIik7CkBAIC05MCw3ICs5MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
IC8vIEFkZCBUZXN0OiBDU1MuU2hhZG93U2NvcGVkU3R5bGUuU2xvdHRlZEVsZW1lbnQKICAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NDI0OT4gV2ViIEluc3BlY3RvcjogRW5z
dXJlIGluc3BlY3RvciBzaG93cyA6c2xvdHRlZCgpIHN0eWxlcyBpbiBzaWRlYmFyCiAKLSAgICBX
SS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBXSS5kb21N
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGUg
PSBub2RlOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMt
YmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMt
YmFzaWMuaHRtbAppbmRleCA5MjcxODcyOWIxOTIyMmY5MWZmMjEyODY5M2VjMGZjZTg3MDc1MmQx
Li44ZTdhYzUyZjAwNzY4NjNkNThlOGNlZDJkZGUxNzNhMzU3NTFjMmQyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWJhc2ljLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1iYXNpYy5odG1s
CkBAIC01MCw3ICs1MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ2hlY2tO
b1N0eWxlU2hlZXRzIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhlcmUgYXJlIGN1
cnJlbnRseSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxlTWFuYWdl
ci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5zdHls
ZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVldHMuIik7CiAgICAg
ICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTYzLDcgKzYzLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgICAg
IG5hbWU6IGBBZGQke3RpdGxlfWAsCiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU1N0
eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCisgICAgICAgICAgICAgICAgV0kuY3Nz
TWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkKQog
ICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICBh
ZGRlZFN0eWxlU2hlZXQgPSBldmVudC5kYXRhLnN0eWxlU2hlZXQ7CiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChhZGRlZFN0eWxlU2hlZXQgaW5zdGFuY2VvZiBX
SS5DU1NTdHlsZVNoZWV0LCAiU3R5bGVTaGVldEFkZGVkIGV2ZW50IHNob3VsZCBmaXJlLiIpOwpA
QCAtODAsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6IGBEaXNh
YmxlJHt0aXRsZX1gLAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJEaXNhYmxlIHRoZSBuZXds
eSBhZGRlZCBzdHlsZXNoZWV0LiIsCiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU1N0
eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkKKyAgICAgICAgICAgICAgICBXSS5j
c3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3Zl
ZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNlb2Yg
V0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVldCIp
OwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWRkZWRTdHls
ZVNoZWV0ID09PSBldmVudC5kYXRhLnN0eWxlU2hlZXQsICJTdHlsZVNoZWV0UmVtb3ZlZCBldmVu
dCBzaG91bGQgZmlyZSBmb3IgdGhlIHNhbWUgQ1NTU3R5bGVTaGVldC4iKTsKQEAgLTk1LDcgKzk1
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuYW1lOiBgRW5hYmxlJHt0aXRsZX1g
LAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJFbmFibGUgdGhlIGp1c3QgZGlzYWJsZWQgc3R5
bGVzaGVldC4iLAogICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAg
ICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NTdHlsZU1hbmFnZXIu
RXZlbnQuU3R5bGVTaGVldEFkZGVkKQorICAgICAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdh
aXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCkKICAgICAgICAgICAg
ICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVl
dCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVldCIpOwogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWRkZWRTdHlsZVNoZWV0ICE9PSBldmVu
dC5kYXRhLnN0eWxlU2hlZXQsICJTdHlsZVNoZWV0QWRkZWQgZXZlbnQgc2hvdWxkIGZpcmUgd2l0
aCBhIG5ldyBDU1NTdHlsZVNoZWV0LiIpOwpAQCAtMTE0LDcgKzExNCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICAgICAgICAgIG5h
bWU6IGV4dHJhRGlzYWJsZVRpdGxlLAogICAgICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50
KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkKKyAgICAgICAgICAg
ICAgICAgICAgV0kuY3NzTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5
bGVTaGVldFJlbW92ZWQpCiAgICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewog
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5z
dHlsZVNoZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxk
IGJlIGEgQ1NTU3R5bGVTaGVldCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGFkZGVkU3R5bGVTaGVldCA9PT0gZXZlbnQuZGF0YS5zdHlsZVNoZWV0
LCAiU3R5bGVTaGVldFJlbW92ZWQgZXZlbnQgc2hvdWxkIGZpcmUgZm9yIHRoZSBzYW1lIENTU1N0
eWxlU2hlZXQuIik7CkBAIC0xMjgsNyArMTI4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgICAgICAgICAgbmFtZTogZXh0cmFFbmFi
bGVUaXRsZSwKICAgICAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NTdHlsZU1h
bmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkKQorICAgICAgICAgICAgICAgICAgICBXSS5jc3NN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCiAg
ICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNl
b2YgV0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVl
dCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFk
ZGVkU3R5bGVTaGVldCAhPT0gZXZlbnQuZGF0YS5zdHlsZVNoZWV0LCAiU3R5bGVTaGVldEFkZGVk
IGV2ZW50IHNob3VsZCBmaXJlIHdpdGggYSBuZXcgQ1NTU3R5bGVTaGVldC4iKTsKQEAgLTE0NCw3
ICsxNDQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewog
ICAgICAgICAgICAgbmFtZTogYFJlbW92ZSR7dGl0bGV9YCwKICAgICAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkKQorICAgICAg
ICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0
eWxlU2hlZXRSZW1vdmVkKQogICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHls
ZVNoZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIlN0eWxlU2hlZXRBZGRlZCBldmVu
dCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU3R5bGVTaGVl
dFJlbW92ZWRDYWxsYmFjaykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mv
c3R5bGVzaGVldC1ldmVudHMtaW1wb3J0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWwKaW5kZXggNjY5YTIwYzFkOTk3MTFlYTBk
NTgyZDk0MGNlOWUyYTZlNTMxYmNmMi4uMWNhZTBjZGQxNjViZGY1NmI5MmMyYmYwZTcwY2NmNDVh
MDZkNTY0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0
LWV2ZW50cy1pbXBvcnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHls
ZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWwKQEAgLTMzLDggKzMzLDggQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgfQogCiAgICAgbGV0IGN1cnJlbnRTdHlsZVNoZWV0QWRkZWRIYW5kbGVyLCBjdXJy
ZW50U3R5bGVTaGVldFJlbW92ZWRIYW5kbGVyOwotICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChl
dmVudCkgPT4geyBjdXJyZW50U3R5bGVTaGVldEFkZGVkSGFuZGxlcihldmVudCk7IH0pOwotICAg
IFdJLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5F
dmVudC5TdHlsZVNoZWV0UmVtb3ZlZCwgKGV2ZW50KSA9PiB7IGN1cnJlbnRTdHlsZVNoZWV0UmVt
b3ZlZEhhbmRsZXIoZXZlbnQpOyB9KTsKKyAgICBXSS5jc3NNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4geyBjdXJy
ZW50U3R5bGVTaGVldEFkZGVkSGFuZGxlcihldmVudCk7IH0pOworICAgIFdJLmNzc01hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkLCAo
ZXZlbnQpID0+IHsgY3VycmVudFN0eWxlU2hlZXRSZW1vdmVkSGFuZGxlcihldmVudCk7IH0pOwog
CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDU1MuU3R5
bGVTaGVldEV2ZW50cy5JbXBvcnRzIik7CiAKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIG5hbWU6ICJDaGVja1N0eWxlU2hlZXRzIiwKICAgICAgICAgZGVzY3JpcHRp
b246ICJFbnN1cmUgdGhlcmUgYXJlIGN1cnJlbnRseSB0d28gc3R5bGVzaGVldHMuIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cyA9
IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0czsKKyAgICAgICAgICAgIGxldCBzdHlsZVNo
ZWV0cyA9IFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldHM7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldHMubGVuZ3RoID09PSAzLCAiU2hvdWxkIGJlIDMgc3R5
bGVzaGVldHMuIik7CiAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0IG9mIHN0eWxlU2hl
ZXRzKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKHNhbml0aXplVVJMKHN0eWxl
U2hlZXQudXJsKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxl
c2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWwKaW5k
ZXggOWUyNTI0YjU5MjZlY2MyZWU0ZjNjNzAyOTYxZjBkMjkxNDZjODMxNC4uODE5NDlkZDY5Zjc1
YzlmOGYwMzBmZDVhNGQxMWIzZDgzMWM0YmFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVzaGVldC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtaW5zcGVjdG9y
LXN0eWxlc2hlZXQuaHRtbApAQCAtMTEsNyArMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5z
dXJlIHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gc3R5bGVzaGVldHMuIiwKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChX
SS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAwLCAiU2hvdWxkIGJlIG5v
IHN0eWxlc2hlZXRzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJ
LmNzc01hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAwLCAiU2hvdWxkIGJlIG5vIHN0eWxl
c2hlZXRzLiIpOwogICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICB9CiAgICAgfSk7CkBA
IC0yMCwxNSArMjAsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDcmVhdGVJ
bnNwZWN0b3JTdHlsZVNoZWV0IiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDcmVhdGluZyBhbiBp
bnNwZWN0b3Igc3R5bGVzaGVldCBhZGRzIGEgc3R5bGVzaGVldC4iLAogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmF3YWl0RXZl
bnQoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCkKKyAgICAgICAgICAg
IFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRB
ZGRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVu
Z3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0
aCA9PT0gMSwgIlNob3VsZCBiZSBvbmUgc3R5bGVzaGVldC4iKTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChldmVudC5kYXRhLnN0eWxlU2hlZXQgaW5zdGFuY2VvZiBXSS5D
U1NTdHlsZVNoZWV0LCAiRXZlbnQgZGF0YSBzaG91bGQgYmUgYSBDU1NTdHlsZVNoZWV0Iik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVT
aGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJTdHlsZVNo
ZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICB9KQogICAg
ICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKIAotICAgICAgICAgICAgQ1NTQWdlbnQu
Y3JlYXRlU3R5bGVTaGVldChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQpOwor
ICAgICAgICAgICAgQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldChXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUuaWQpOwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtbXVsdGlwbGUtZG9jdW1lbnRzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLW11bHRpcGxl
LWRvY3VtZW50cy5odG1sCmluZGV4IGNmY2QzMzgxMDk5OGUxMTNmMTU1M2YyOGE1MTg2MmNlYTYz
ZDc1MjQuLjg0ZmNhOGExNjg0YzViYTFjOWJhOGIxY2IzY2NiMmQ5MTZiMGZhYTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtbXVsdGlwbGUt
ZG9jdW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0
LWV2ZW50cy1tdWx0aXBsZS1kb2N1bWVudHMuaHRtbApAQCAtMTgsOCArMTgsOCBAQCBmdW5jdGlv
biByZW1vdmVTdWJmcmFtZSgpIHsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGZ1bmN0aW9uIGxv
Z1N0eWxlU2hlZXRzKCkgewotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMu
c29ydCgoYSwgYikgPT4gYS51cmwubG9jYWxlQ29tcGFyZShiLnVybCkpLmZvckVhY2goKHN0eWxl
U2hlZXQpID0+IHsKLSAgICAgICAgICAgIGxldCBmcmFtZVN0cmluZyA9IHN0eWxlU2hlZXQucGFy
ZW50RnJhbWUuaWQgPT09IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCA/ICI8
bWFpbmZyYW1lPiIgOiAiPGNoaWxkZnJhbWU+IjsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5zdHls
ZVNoZWV0cy5zb3J0KChhLCBiKSA9PiBhLnVybC5sb2NhbGVDb21wYXJlKGIudXJsKSkuZm9yRWFj
aCgoc3R5bGVTaGVldCkgPT4geworICAgICAgICAgICAgbGV0IGZyYW1lU3RyaW5nID0gc3R5bGVT
aGVldC5wYXJlbnRGcmFtZS5pZCA9PT0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkID8g
IjxtYWluZnJhbWU+IiA6ICI8Y2hpbGRmcmFtZT4iOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coYFVSTDogJHtzYW5pdGl6ZVVSTChzdHlsZVNoZWV0LnVybCl9ICR7ZnJhbWVTdHJpbmd9
YCk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIG5hbWU6ICJDaGVja1N0eWxlU2hlZXRzIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJFbnN1cmUgdGhlcmUgaXMgY3VycmVudGx5IG9uZSBzdHlsZXNoZWV0LiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBi
ZSBvbmUgc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDEsICJTaG91bGQgYmUgb25l
IHN0eWxlc2hlZXRzLiIpOwogICAgICAgICAgICAgbG9nU3R5bGVTaGVldHMoKTsKICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgfQpAQCAtNDAsMTAgKzQwLDEwIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBuYW1lOiAiQ2hlY2tTdHlsZVNoZWV0c0FmdGVyQWRkaW5nU3ViZnJhbWUi
LAogICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSBzdWJmcmFtZSBzdHlsZXNoZWV0cyBhcmUg
YWRkZWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJ
LmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0QWRkZWQpCisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NT
TWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQp
ID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzU3R5
bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMiwgIlNob3VsZCBiZSB0d28gc3R5bGVz
aGVldHMuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSAhPT0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lLmlkLCAiTmV3IFN0eWxlU2hlZXQgaXMgZm9yIGEgc3ViZnJhbWUiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5zdHlsZVNo
ZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxlc2hlZXRzLiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQu
cGFyZW50RnJhbWUgIT09IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5pZCwgIk5ldyBTdHls
ZVNoZWV0IGlzIGZvciBhIHN1YmZyYW1lIik7CiAgICAgICAgICAgICAgICAgbG9nU3R5bGVTaGVl
dHMoKTsKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3Qp
OwpAQCAtNTYsMTAgKzU2LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ2hl
Y2tTdHlsZVNoZWV0c0FmdGVyUmVtb3ZpbmdTdWJmcmFtZSIsCiAgICAgICAgIGRlc2NyaXB0aW9u
OiAiRW5zdXJlIHN1YmZyYW1lIHN0eWxlc2hlZXRzIGFyZSByZW1vdmVkLiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdh
aXRFdmVudChXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQpCisgICAg
ICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0UmVtb3ZlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVT
aGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOwotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQu
cGFyZW50RnJhbWUgIT09IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCwgIlJl
bW92ZWQgU3R5bGVTaGVldCBpcyBmb3IgYSBzdWJmcmFtZSIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9
PT0gMSwgIlNob3VsZCBiZSBvbmUgc3R5bGVzaGVldC4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LnBhcmVudEZyYW1lICE9
PSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQsICJSZW1vdmVkIFN0eWxlU2hlZXQgaXMg
Zm9yIGEgc3ViZnJhbWUiKTsKICAgICAgICAgICAgICAgICBsb2dTdHlsZVNoZWV0cygpOwogICAg
ICAgICAgICAgfSkKICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtd2l0aC1tdXRhdGlvbnMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13aXRoLW11dGF0aW9u
cy5odG1sCmluZGV4IDQyZDkzMmI2YTg2ZDQzNmQ0MGJkODgwNWFkYTNmN2I3ODZiMWIxN2UuLjM2
ZDk3NjFlYzY5NDg4NmI0NjMwZTA1OWI4NDU5NzE3NTc0ZmI1YWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13aXRoLW11dGF0aW9ucy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13aXRoLW11dGF0aW9ucy5odG1s
CkBAIC0zMiwxMSArMzIsMTEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdmFsaWRhdGVT
ZWxlY3RvcnMoKTsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiLmJhciIsIGZ1bmN0aW9uKGNvbnRlbnROb2Rl
SWQpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVu
dE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9k
ZS5pZCwgIi5iYXIiLCBmdW5jdGlvbihjb250ZW50Tm9kZUlkKSB7CiAgICAgICAgICAgICBpZiAo
Y29udGVudE5vZGVJZCkgewotICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tVHJl
ZU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2RlSWQpOwotICAgICAgICAgICAgICAgIG5vZGVT
dHlsZXMgPSBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKKyAgICAg
ICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnRO
b2RlSWQpOworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxl
c0Zvck5vZGUoZG9tTm9kZSk7CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZVN0eWxlcy5uZWVk
c1JlZnJlc2gpCiAgICAgICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgb25TdHlsZXNSZWZyZXNoZWQsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NzcC1leGNl
cHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY3NwLWV4Y2VwdGlv
bnMuaHRtbAppbmRleCBlNjhjZGM3OTcwMDMyNzFkZDVlZmQ5ZmYwMDFjMDMwNjRiZmNlMzVjLi40
NWM0MGY5NTBhYTdiNzk0OWI1NGE4YThkY2FjMTJjY2IyN2E0YzY0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY3NwLWV4Y2VwdGlvbnMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY3NwLWV4Y2VwdGlvbnMuaHRtbApAQCAtMzEsNyAr
MzEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVzdW1lKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kubG9nTWFuYWdl
ci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJl
RXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVu
dCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LmRhdGEu
bWVzc2FnZS5sZXZlbCA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKTsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkNTUCBFeGNlcHRpb24gQ29uc29s
ZSBNZXNzYWdlOiAiICsgZXZlbnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0KTsKICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKICAgICAgICAgICAgICAg
ICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkg
PT4gewogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRlbXBQYXVzZUZhaWxMaXN0ZW5l
ciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0
YS5tZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3Ip
OwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoZGlkUGF1c2UsICJD
U1AgRXhjZXB0aW9uIGNhdXNlZCBvdXRzaWRlIG9mIHNjcmlwdCBldmFsdWF0aW9uIHNob3VsZCBu
b3QgcGF1c2UuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
anMtc3RhY2t0cmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2pzLXN0
YWNrdHJhY2UuaHRtbAppbmRleCBjMTBlZTBmZWFlZDE3ZjdlNmYzMWFhOWEzZmFmMWMwNWVjOWYx
MGNhLi4zNjkwNTc4ZDQyZThkMWJhYTY3NGIyNmM1OWNmOWE2YzhkNjhkYjFjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvanMtc3RhY2t0cmFjZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9qcy1zdGFja3RyYWNlLmh0bWwKQEAgLTc2
LDcgKzc2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHJldHVybiBzdGFja1RyYWNlOwog
ICAgIH0KIAotICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2Vy
LkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgV0kuY29uc29sZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChl
dmVudCkgPT4gewogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG5jb25zb2xlLnRyYWNlKCk6
Iik7CiAKICAgICAgICAgbGV0IHN0YWNrVHJhY2UgPSBbXTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRp
b24uanMKaW5kZXggNmU2MjA3NGRiZjFkZDJhNDMyOTdjNzA5YTViNGM5MTllODA1NGI3NS4uMTJj
MWQ0NDMzYjA0MjdiZDliY2RkNjBmMDgyNDE2MjQ0ZjcxNWQxNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctcGF1c2Ut
bG9jYXRpb24uanMKQEAgLTcsNyArNyw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIo
KCkgPT4gewogICAgIH0KIAogICAgIHdpbmRvdy5maW5kU2NyaXB0ID0gZnVuY3Rpb24ocmVnZXgp
IHsKLSAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lLnJlc291cmNlQ29sbGVjdGlvbikgeworICAgICAgICBmb3IgKGxldCByZXNvdXJj
ZSBvZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAg
ICAgICAgICAgICBpZiAocmVnZXgudGVzdChyZXNvdXJjZS51cmwpKQogICAgICAgICAgICAgICAg
IHJldHVybiByZXNvdXJjZS5zY3JpcHRzWzBdOwogICAgICAgICB9CkBAIC0yNywxMiArMjcsMTIg
QEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgfQogCiAgICAgd2lu
ZG93LmxvYWRNYWluUGFnZUNvbnRlbnQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGxv
YWRMaW5lc0Zyb21Tb3VyY2VDb2RlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5t
YWluUmVzb3VyY2UpOworICAgICAgICByZXR1cm4gbG9hZExpbmVzRnJvbVNvdXJjZUNvZGUoV0ku
bmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZSk7CiAgICAgfQogCiAgICAgd2lu
ZG93LnNldEJyZWFrcG9pbnRzT25MaW5lc1dpdGhCcmVha3BvaW50Q29tbWVudCA9IGZ1bmN0aW9u
KHJlc291cmNlKSB7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXNvdXJj
ZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2U7CisgICAg
ICAgICAgICByZXNvdXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3Vy
Y2U7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTG9jYXRpb24ocmVzb3VyY2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikgewogICAgICAgICAgICAgcmV0dXJuIHt1cmw6IHJlc291cmNlLnVy
bCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyfTsKQEAgLTUzLDcgKzUzLDcgQEAgVGVzdFBhZ2Uu
cmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgfQogCiAgICAgd2luZG93LmxvZ1Jlc29s
dmVkQnJlYWtwb2ludExpbmVzV2l0aENvbnRleHQgPSBmdW5jdGlvbihpbnB1dExvY2F0aW9uLCBy
ZXNvbHZlZExvY2F0aW9uLCBjb250ZXh0KSB7Ci0gICAgICAgIGlmIChyZXNvbHZlZExvY2F0aW9u
LnNvdXJjZUNvZGUgIT09IGxpbmVzU291cmNlQ29kZSAmJiAhV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzLmluY2x1ZGVzKHJlc29sdmVkTG9jYXRp
b24uc291cmNlQ29kZSkpIHsKKyAgICAgICAgaWYgKHJlc29sdmVkTG9jYXRpb24uc291cmNlQ29k
ZSAhPT0gbGluZXNTb3VyY2VDb2RlICYmICFXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFp
blJlc291cmNlLnNjcmlwdHMuaW5jbHVkZXMocmVzb2x2ZWRMb2NhdGlvbi5zb3VyY2VDb2RlKSkg
ewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIi0tLSBTb3VyY2UgVW5hdmFpbGFibGUg
LS0tIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTk0LDcgKzk0LDcgQEAg
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgfQogCiAgICAgd2luZG93
LmxvZ0xpbmVzV2l0aENvbnRleHQgPSBmdW5jdGlvbihsb2NhdGlvbiwgY29udGV4dCkgewotICAg
ICAgICBpZiAobG9jYXRpb24uc291cmNlQ29kZSAhPT0gbGluZXNTb3VyY2VDb2RlICYmICFXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNjcmlwdHMuaW5jbHVk
ZXMobG9jYXRpb24uc291cmNlQ29kZSkpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9uLnNvdXJjZUNv
ZGUgIT09IGxpbmVzU291cmNlQ29kZSAmJiAhV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1h
aW5SZXNvdXJjZS5zY3JpcHRzLmluY2x1ZGVzKGxvY2F0aW9uLnNvdXJjZUNvZGUpKSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiLS0tIFNvdXJjZSBVbmF2YWlsYWJsZSAtLS0iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVl
LWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGlu
Zy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwKaW5kZXggNWJk
NDk3ZGNhYTdiYjVkNDU1MGM5Y2YxOGVkMjY1ODhlNTgxYTk4Ny4uYTE3MjVjZmJmOWE1MDI2ODJk
MGZmNmRkZDA2MWMwNmIzODkwMWRjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9p
bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sCkBAIC0yMiw3ICsyMiw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIlN0ZXBwaW5nIHRocm91
Z2ggc3RhdGVtZW50cyBzaG91bGQgc3RpbGwgd29yayBhZnRlciBlbmNvdW50ZXJpbmcgYW4gYXV0
b0NvbnRpbnVlIGJyZWFrcG9pbnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
ICAgICAgICAgICAgIC8vIFNldCBhdXRvQ29udGludWUgYnJlYWtwb2ludC4KLSAgICAgICAgICAg
IGxldCBzY3JpcHQgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291
cmNlLnNjcmlwdHNbMF07CisgICAgICAgICAgICBsZXQgc2NyaXB0ID0gV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzWzBdOwogICAgICAgICAgICAgdmFyIGxv
Y2F0aW9uID0gc2NyaXB0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKICAgICAgICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKaW5kZXgg
MGIxMjlhYzk5ZTEyZTZlNGNkNTNkYzVmMjkzYWYzZGVjNzJhOGZmYi4uMjZmYzRjYWJmYjA0YTg5
MTJkNzZmYzA2OGYyZTVkMDMxNGU3ZTY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC02MSwyMCArNjEs
MjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBhd2FpdFF1ZXJ5U2VsZWN0b3Io
c2VsZWN0b3IpIHsKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9j
dW1lbnROb2RlKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVu
dCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudE5vZGUp
IHsKICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgc2VsZWN0b3IsIChub2RlSWQpID0+
IHsKKyAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4gewogICAgICAgICAgICAgICAgICAgICBpZiAo
IW5vZGVJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJT
ZWxlY3RvciByZXR1cm5lZCBubyBub2Rlcy4iLCBzZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gV0kuZG9t
VHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBu
b2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZSwgIk1pc3Npbmcgbm9kZSBmb3IgaWQuIiwgbm9k
ZUlkKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3QoKTsKQEAgLTE0Miw4ICsxNDIsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGJyZWFrcG9pbnQuZGlzYWJs
ZWQsICJCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQuIik7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIs
ICJCcmVha3BvaW50IHNob3VsZCBoYXZlIG5vZGUgaWRlbnRpZmllci4iKTsKIAotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKLSAgICAgICAgICAgICAgICBsZXQgZG9jdW1l
bnRVUkwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUudXJsOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSwg
Ik1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICBsZXQgZG9jdW1lbnRVUkwg
PSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludC51cmwsIGRvY3VtZW50VVJMLCAiQnJlYWtw
b2ludCBVUkwgc2hvdWxkIG1hdGNoIGRvY3VtZW50IFVSTC4iKTsKICAgICAgICAgICAgIH0pCiAg
ICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2Rl
Rm9ySWQoYnJlYWtwb2ludHNbMF0uZG9tTm9kZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAg
IGxldCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoYnJlYWtwb2ludHNbMF0uZG9tTm9k
ZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIk5vIERPTSBub2RlIGFzc29jaWF0ZWQgd2l0aCBi
cmVha3BvaW50LiIpOwogICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3hoci1icmVha3BvaW50cy5odG1s
CmluZGV4IGU3NjVlYTVkNzk0NGFhMzY0ZTE1MzMyZTQ3OWUyZGEyOWUyMmY1NTYuLmYwYTEzNTBl
MjZkZTBmNjdkZjA3ZDhiZTIyNzY2YTgwMTZkYjJjNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMuaHRtbApAQCAtNDMs
NyArNDMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIGFkZEJyZWFrcG9pbnQo
dHlwZSwgdXJsKSB7CiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lOworICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1haW5GcmFt
ZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKICAgICAgICAgICAgIGlmICghbWFpbkZyYW1lKQog
ICAgICAgICAgICAgICAgIHJlamVjdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sCmluZGV4IDI1
YTY5ODAxY2RkYzk2NDUxMjUyYzU3Nzg4YTkzZTNmZjliMzcwZDIuLjg2MmNhNTMxMTkyMTViYjA3
NjljZDVkMTgyYjAxYWRjZmE1ZTk2NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKQEAgLTE4
MCwxNCArMTgwLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0KICAgICB9KTsKIAot
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7
CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewog
ICAgICAgICBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVy
eVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNidXR0b24xIiksCi0gICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNidXR0b24yIiks
CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlk
LCAiI2J1dHRvbjEiKSwKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGUuaWQsICIjYnV0dG9uMiIpLAogICAgICAgICBdKQogICAgICAgICAudGhlbigo
W2J1dHRvbjFJZCwgYnV0dG9uMklkXSkgPT4gewotICAgICAgICAgICAgYnV0dG9uMU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoYnV0dG9uMUlkKTsKLSAgICAgICAgICAgIGJ1dHRv
bjJOb2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKGJ1dHRvbjJJZCk7CisgICAgICAg
ICAgICBidXR0b24xTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGJ1dHRvbjFJZCk7Cisg
ICAgICAgICAgICBidXR0b24yTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGJ1dHRvbjJJ
ZCk7CiAKICAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgICAg
ICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jc3AtYmlnNS1oYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NzcC1iaWc1LWhhc2guaHRtbAppbmRl
eCBkOWRmNmZiMGQyMmMxNDdkYTlhZjI4YWYzNWEyMDQzODVhZWNmNWVlLi42MzI5MjRlYWRlYzVj
NTMxNWJiZjg3ZGMzODk2Njk1MTQ1OTRmOGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2NzcC1iaWc1LWhhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2NzcC1iaWc1LWhhc2guaHRtbApAQCAtOSwxMCArOSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgICAgIHtzZWxlY3RvcjogIiNzdHlsZXNoZWV0LTEiLCBoYXNoOiAic2hhMjU2LWR1TkJ2
Q216ckZjM1JWVnFTOHVmd2VCZjJRT3ExVEh1RWgzVVpXUDdacFU9In0sCiAgICAgICAge3NlbGVj
dG9yOiAiI3NjcmlwdC0xIiwgaGFzaDogInNoYTI1Ni0wZURrNG15OXEzcWNDUVRaMDJjbFZXMFJ4
RE5QVzluOWxYVENkeUdZNEpzPSJ9LAogICAgIF07Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVx
dWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgIFdJLmRvbU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewogICAgICAgICBmb3IgKGxl
dCB7c2VsZWN0b3IsIGhhc2h9IG9mIHRlc3RDYXNlcykgewotICAgICAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsIHNlbGVjdG9yLCBmdW5jdGlv
bihub2RlSWQpIHsKLSAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNl
bGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgc2VsZWN0b3IsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAg
ICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsIGBHb3QgRE9NTm9kZSBmb3IgJHtz
ZWxlY3Rvcn1gKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9t
Tm9kZS5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKCkgPT09IGhhc2gsIGBET01Ob2RlIGhhcyBo
YXNoICR7aGFzaH1gKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3Nw
LWhhc2guaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3NwLWhhc2guaHRtbAppbmRl
eCAzNmM3YjRkODdhOWY2YTY0OWQyZGExYjA3MmJjN2RjZWUwZGZkYmRjLi5hMzE4ZGMyNzE1YjUy
MTZmMzliYjAxYjE2MDUwYmFkMDE3MWQzYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2NzcC1oYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9j
c3AtaGFzaC5odG1sCkBAIC0xOSwxMCArMTksMTAgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAge3NlbGVjdG9yOiAiI3BhcmFncmFwaCIsIGhhc2g6IHVuZGVmaW5lZH0sCiAgICAgXTsKIAot
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVudE5v
ZGUpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVu
dE5vZGUpIHsKICAgICAgICAgZm9yIChsZXQge3NlbGVjdG9yLCBoYXNofSBvZiB0ZXN0Q2FzZXMp
IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCBzZWxlY3RvciwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgbGV0
IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAg
ICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsIHNlbGVjdG9y
LCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRv
bU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21O
b2RlLCBgR290IERPTU5vZGUgZm9yICR7c2VsZWN0b3J9YCk7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuY29udGVudFNlY3VyaXR5UG9saWN5SGFzaCgp
ID09PSBoYXNoLCBgRE9NTm9kZSBoYXMgaGFzaCAke2hhc2h9YCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbAppbmRleCA0NzZhM2JkZDVk
Zjc1Y2UxZDkxMzI5MDMxMzZmNDEwMWIzNTY0OTYyLi43YjEyOGQ4NmFlM2I4YWY3MjBhMWFmYzIx
Y2JiZGQyZDY3M2ZlZGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2N1
c3RvbUVsZW1lbnRTdGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3Vz
dG9tRWxlbWVudFN0YXRlLmh0bWwKQEAgLTE0LDggKzE0LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRl
LkJ1aWx0aW4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjYnVpbHRp
biIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tVHJl
ZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2J1aWx0aW4iLCAobm9kZUlkKSA9PiB7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJ
ZCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChub2RlLmN1c3Rv
bUVsZW1lbnRTdGF0ZSgpLCAiYnVpbHRpbiIsICIjYnVpbHRpbiBzaG91bGQgYmUgQ3VzdG9tRWxl
bWVudFN0YXRlLkJ1aWx0aW4uIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAg
ICAgICAgfSk7CkBAIC0yNSw4ICsyNSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkN1c3RvbUVsZW1lbnRTdGF0ZS5DdXN0b20uQ29u
c3RydWN0ZWQiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJjb25zdHJ1
Y3RlZC1lbGVtZW50IiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUg
PSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRv
bU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJjb25zdHJ1Y3RlZC1lbGVt
ZW50IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBXSS5kb21N
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwobm9kZS5jdXN0b21FbGVtZW50U3RhdGUoKSwgImN1c3RvbSIsICJjb25zdHJ1
Y3RlZC1lbGVtZW50IHNob3VsZCBiZSBDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLiIpOwogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzYsOCArMzYsOCBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6
ICJDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLlVwZ3JhZGVkIiwKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCAidXBncmFkZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5v
ZGVJZCk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCAidXBncmFkZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5vZGUuY3VzdG9tRWxlbWVudFN0YXRl
KCksICJjdXN0b20iLCAidXBncmFkZWQtZWxlbWVudCBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0
YXRlLkN1c3RvbS4iKTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTQ3LDggKzQ3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmciLAogICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
cXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJ1bmRlZmluZWQtZWxlbWVudCIsIChub2Rl
SWQpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIu
bm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCAidW5kZWZpbmVkLWVsZW1lbnQiLCAobm9kZUlkKSA9PiB7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJ
ZCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChub2RlLmN1c3Rv
bUVsZW1lbnRTdGF0ZSgpLCAid2FpdGluZyIsICJ1bmRlZmluZWQtZWxlbWVudCBzaG91bGQgYmUg
Q3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmcuIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwogICAgICAgICAgICAgfSk7CkBAIC01OCwxNSArNTgsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRl
LkZhaWxlZCIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgImZhaWxlZC1l
bGVtZW50IiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBXSS5k
b21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFn
ZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJmYWlsZWQtZWxlbWVudCIsIChub2Rl
SWQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2Rl
Rm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KG5vZGUuY3VzdG9tRWxlbWVudFN0YXRlKCksICJmYWlsZWQiLCAiZmFpbGVkLWVsZW1lbnQgc2hv
dWxkIGJlIEN1c3RvbUVsZW1lbnRTdGF0ZS5GYWlsZWQuIik7CiAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAgIFdJLmRvbU1hbmFn
ZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5v
ZGU7CiAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtY3NzcGF0aC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtY3NzcGF0aC5odG1s
CmluZGV4IDVhMWIxNzUzODQwNjBlYWM1YjlmZThmMzVmNDQ5NjMzMTJmZWVmMzMuLjIzODM3NDE4
MDUyZDE5ZWIxYTA2NGY2NzU4NjM0YWZiM2FiMmRjODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLWNzc3BhdGguaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy1jc3NwYXRoLmh0bWwKQEAgLTgsOCArOCw4IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIGxldCBkb2N1bWVudE5vZGU7CiAKICAgICBmdW5jdGlvbiBu
b2RlRm9yU2VsZWN0b3Ioc2VsZWN0b3IsIGNhbGxiYWNrKSB7Ci0gICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkg
PT4gewotICAgICAgICAgICAgY2FsbGJhY2soV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5v
ZGVJZCkpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2Rl
LmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgY2FsbGJhY2soV0kuZG9t
TWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTQx
LDcgKzE0MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gRklYTUU6IFdyaXRlIHRlc3Rz
IGZvciBub2RlcyBpbnNpZGUgYSBTaGFkb3cgRE9NIFRyZWUuCiAKLSAgICBXSS5kb21UcmVlTWFu
YWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVl
c3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGUgPSBub2RlOwogICAg
ICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLXBhdGgtZHVtcC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWwKaW5k
ZXggNzMzNzllMGEwNjA3OGE3MzQxMDE3OGNiNzk2Zjg1MjIzOTJhNDgwMC4uMzY0N2E1NTk0Y2I4
ZmMxZGY2MmMxNjRjYTYzMzFkMTYxMGRlZDA2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWwKQEAgLTM5LDEwICszOSwx
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgV0kuZG9tTWFu
YWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAgICAgICAvLyBQdXNo
IGFsbCB0aGUgbm9kZXMgdG8gdGhlIGZyb250ZW5kLgotICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgImh0bWwiLCAobm9kZUlkKSA9PiB7Ci0g
ICAgICAgICAgICBsZXQgaHRtbE5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5p
ZCwgImh0bWwiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBsZXQgaHRtbE5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgaHRtbE5vZGUuZ2V0U3Vi
dHJlZSgxMCwgKCkgPT4gewogICAgICAgICAgICAgICAgIGJ1aWxkTm9kZUxpc3QoaHRtbE5vZGUs
IDApOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGll
cy14cGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMteHBh
dGguaHRtbAppbmRleCA3ODUyMWI3OTZkOWU4ZTljMDQxMWVlMDk4Yzk0ZGRjOGIyZjUxMmFhLi44
NmQ1MTI0ZWIyY2NiZTIyZWMzMjJiMGVkMTNmMGMzNzY5YzliN2Q5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy14cGF0aC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLXhwYXRoLmh0bWwKQEAgLTgsOCArOCw4
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGxldCBkb2N1bWVudE5vZGU7CiAKICAgICBmdW5jdGlv
biBub2RlRm9yU2VsZWN0b3Ioc2VsZWN0b3IsIGNhbGxiYWNrKSB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJ
ZCkgPT4gewotICAgICAgICAgICAgY2FsbGJhY2soV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklk
KG5vZGVJZCkpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgY2FsbGJhY2soV0ku
ZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
OTgsNyArOTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyBGSVhNRTogV3JpdGUgdGVzdHMg
Zm9yIG5vZGVzIGluc2lkZSBhIFNoYWRvdyBET00gVHJlZS4KICAgICAvLyBGSVhNRTogV3JpdGUg
dGVzdCBmb3IgQ0RBVEEuCiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQo
KG5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4g
ewogICAgICAgICBkb2N1bWVudE5vZGUgPSBub2RlOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2Fz
ZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKaW5kZXggZjk1ZTlmNGFmYmYy
ODdjNGI5YWU1NDYwOTZlZmRlZGMyZTI0ZjI3ZC4uODdlYWM4MWRiNTg1Y2EzNjk5NGM0NDRiZTBk
MTM4YjkxYjAwZjNjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVu
dC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKQEAgLTIyMyw3ICsyMjMsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBXSS5kb21UcmVlTWFuYWdl
ci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgIFdJLmRvbU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKICAgICAgICAgbm9kZSA9IGRvY3Vt
ZW50Tm9kZTsKIAogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2Rl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2dldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZS5odG1sCmluZGV4IDhlZGI4MWVmNjc2NTNkZTRmNGExYzllYjZmOWJiZTU5OTU1MmY2OTIuLjY5
N2U1MzI2ZmRkNjNkOTZjOGE4OGRmM2ViM2M2ZWY2OGJmMGY4YWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUuaHRtbApA
QCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGZvciAobGV0IGV2ZW50TGlzdGVuZXIgb2YgZXZlbnRMaXN0ZW5lcnMp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2Rl
Rm9ySWQoZXZlbnRMaXN0ZW5lci5ub2RlSWQpOworICAgICAgICAgICAgICAgICAgICBsZXQgbm9k
ZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGV2ZW50TGlzdGVuZXIubm9kZUlkKTsKIAogCiAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBFdmVudDogJHtldmVudExpc3Rl
bmVyLnR5cGV9YCk7CkBAIC00MywxNSArNDMsMTUgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChk
b2N1bWVudE5vZGUpID0+IHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rv
cihkb2N1bWVudE5vZGUuaWQsICJkaXYjeCIsIChjb250ZW50Tm9kZUlkKSA9PiB7CisgICAgV0ku
ZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICBX
SS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiZGl2I3giLCAoY29u
dGVudE5vZGVJZCkgPT4gewogICAgICAgICAgICAgaWYgKCFjb250ZW50Tm9kZUlkKSB7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJET00gbm9kZSBub3QgZm91bmQuIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRvbU5vZGUgPSBXSS5k
b21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICBkb21O
b2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CiAKICAgICAgICAg
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0T3V0ZXJIVE1MLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2dldE91dGVySFRNTC5odG1sCmluZGV4IGVkNTVlYjY1YzNlNjRl
NGE1ZjRmYTJjMzQ3ODk2MGMyYzg1NGMwYjMuLjcwODBlOTIxNDMxN2I0ZjVkNWI3MDQ2YjlmOThj
Y2RjYjRiNTYwYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0T3V0
ZXJIVE1MLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9nZXRPdXRlckhUTUwu
aHRtbApAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkdl
dE91dGVySFRNTCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRoZSBPdXRlckhUTUwgb2Yg
dGhlIHRhcmdldCBlbGVtZW50LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9j
dW1lbnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxl
Y3Rvcihkb2N1bWVudE5vZGUuaWQsICIjeCIsIGZ1bmN0aW9uKG5vZGVJZCkgewotICAgICAgICAg
ICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2Rl
SWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24o
ZG9jdW1lbnROb2RlKSB7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVj
dG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAg
ICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsK
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9tTm9kZSwgIkRPTU5v
ZGUgZXhpc3RzIik7CiAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuZ2V0T3V0ZXJIVE1MKGZ1
bmN0aW9uKGVycm9yLCBvdXRlckhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2hpZGVIaWdobGlnaHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vaGlkZUhpZ2hsaWdodC5odG1sCmluZGV4IDgyZDNiOTE1YzVlM2E1YzUzNjgzYTlkMTJhZjVl
NWM1ZTA1Y2JkMzguLjVjNDM1ODViYzI0ZDA0YTc2MTdhYjczYWQ2YmEzYTExYmJlNWM3YTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlkZUhpZ2hsaWdodC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlkZUhpZ2hsaWdodC5odG1sCkBAIC0xMDYs
OCArMTA2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgbWFyZ2luQ29sb3I6
IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5v
ZGUuaWQsICIjdGFyZ2V0IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICAgICAgICAgIFdJ
LmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjdGFyZ2V0IiwgKG5v
ZGVJZCkgPT4gewogICAgICAgICAgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlKGhp
Z2hsaWdodENvbmZpZywgbm9kZUlkLCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFlcnJvciwgIlNob3VsZCBub3QgaGF2ZSBhbiBlcnJv
ci4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBIaWdobGlnaHQocmVzb2x2ZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodEZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodEZyYW1lLmh0bWwKaW5kZXggNmQ3
YzBkYWY0YTRkMWY2Yjg5MWU0MDNlMzU1NmYwNWU0ZmIyNzE1OC4uNDU4YzUzMjg2YWM3ZjIwNjhj
YTdmMDg0MjU5NDM1NDhmNzQwNGUzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9oaWdobGlnaHRGcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
aGlnaGxpZ2h0RnJhbWUuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uaGlnaGxp
Z2h0RnJhbWUiKTsKIAotICAgIGxldCBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdl
ci5tYWluRnJhbWU7CisgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5G
cmFtZTsKICAgICBsZXQgY2hpbGRGcmFtZXMgPSBBcnJheS5mcm9tKG1haW5GcmFtZS5jaGlsZEZy
YW1lQ29sbGVjdGlvbik7CiAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZEZyYW1l
cy5sZW5ndGgsIDIsICJQYWdlIHNob3VsZCBoYXZlIHN1YmZyYW1lcy4iKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2RlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodE5vZGUuaHRtbAppbmRleCBkYTViNWVkYjJiYmZi
MDJkYTk4MTdmZjZiOTQ4ZGVlZjRkZjVjMTNiLi44ZTg0ODA4NjEzZWRhYmZiMWY2ODEzMGNlNmQ1
MGJkNzM0ZjUzNzg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hs
aWdodE5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodE5v
ZGUuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uaGlnaGxpZ2h0Tm9kZSIpOwog
Ci0gICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsK
KyAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgIGxl
dCBjaGlsZEZyYW1lcyA9IEFycmF5LmZyb20obWFpbkZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9u
KTsKICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkRnJhbWVzLmxlbmd0aCwgMSwg
IlBhZ2Ugc2hvdWxkIGhhdmUgYSBzdWJmcmFtZS4iKTsKIApAQCAtNTQsOCArNTQsOCBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIk1haW5GcmFtZU5vZGVWaWFOb2RlSWQiLAogICAg
ICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBoaWdobGlnaHQgYSBub2RlIGluIHRoZSBtYWluIGZy
YW1lIHVzaW5nIG5vZGUgaWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IobWFpbkZyYW1lRG9jdW1l
bnROb2RlSWQsICIjaWQtb25lIiwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAg
bWFpbkZyYW1lVGFyZ2V0Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQp
OworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKG1haW5GcmFtZURvY3Vt
ZW50Tm9kZUlkLCAiI2lkLW9uZSIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgICAg
IG1haW5GcmFtZVRhcmdldE5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwog
ICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUoaGlnaGxpZ2h0Q29uZmlnLCBt
YWluRnJhbWVUYXJnZXROb2RlLmlkLCB1bmRlZmluZWQsIChlcnJvcikgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUg
YW4gZXJyb3IuIik7CiAgICAgICAgICAgICAgICAgICAgIGR1bXBIaWdobGlnaHQocmVzb2x2ZSk7
CkBAIC02OCw4ICs2OCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ2hpbGRG
cmFtZU5vZGVWaWFOb2RlSWQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBoaWdobGln
aHQgYSBub2RlIGluIHRoZSBjaGlsZCBmcmFtZSB1c2luZyBub2RlIGlkLiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVy
eVNlbGVjdG9yKGNoaWxkRnJhbWVEb2N1bWVudE5vZGVJZCwgIiNpZC1vbmUiLCBmdW5jdGlvbihu
b2RlSWQpIHsKLSAgICAgICAgICAgICAgICBjaGlsZEZyYW1lVGFyZ2V0Tm9kZSA9IFdJLmRvbVRy
ZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5x
dWVyeVNlbGVjdG9yKGNoaWxkRnJhbWVEb2N1bWVudE5vZGVJZCwgIiNpZC1vbmUiLCBmdW5jdGlv
bihub2RlSWQpIHsKKyAgICAgICAgICAgICAgICBjaGlsZEZyYW1lVGFyZ2V0Tm9kZSA9IFdJLmRv
bU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgRE9NQWdlbnQuaGln
aGxpZ2h0Tm9kZShoaWdobGlnaHRDb25maWcsIGNoaWxkRnJhbWVUYXJnZXROb2RlLmlkLCB1bmRl
ZmluZWQsIChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IuIik7CiAgICAgICAgICAgICAg
ICAgICAgIGR1bXBIaWdobGlnaHQocmVzb2x2ZSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJl
cXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1
ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAgICAgICBtYWluRnJhbWVEb2N1bWVu
dE5vZGVJZCA9IGRvY3VtZW50Tm9kZS5pZDsKICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRl
Lmludm9rZSh7ZXhwcmVzc2lvbjogImRvY3VtZW50Iiwgb2JqZWN0R3JvdXA6ICJ0ZXN0IiwgY29u
dGV4dElkOiBjaGlsZEZyYW1lc1swXS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZH0sIChlcnJvciwg
cmVtb3RlT2JqZWN0UGF5bG9hZCkgPT4gewogICAgICAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9
IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZW1vdGVPYmplY3RQYXlsb2FkKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2RlTGlzdC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2RlTGlzdC5odG1sCmluZGV4IDQ3
OTIzZTA2MTI1NGY2N2ZkZGNmMWVmYzVkZTk3ZTRmNzU1OTdhNDEuLjAyOGRjODhiZDJiZjdlZmYz
YjBjZmI1NDBmY2Q4NmI2MzNjNDAzYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vaGlnaGxpZ2h0Tm9kZUxpc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2hpZ2hsaWdodE5vZGVMaXN0Lmh0bWwKQEAgLTcsNyArNyw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9N
LmhpZ2hsaWdodE5vZGVMaXN0Iik7CiAKLSAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWU7CiAgICAgbGV0IGNoaWxkRnJhbWVzID0gQXJyYXkuZnJvbShtYWluRnJh
bWUuY2hpbGRGcmFtZUNvbGxlY3Rpb24pOwogICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
Y2hpbGRGcmFtZXMubGVuZ3RoLCAxLCAiUGFnZSBzaG91bGQgaGF2ZSBhIHN1YmZyYW1lLiIpOwog
CkBAIC03Myw3ICs3Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiRE9NLmhp
Z2hsaWdodE5vZGVMaXN0Lm1haW5GcmFtZU5vZGUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlNo
b3VsZCBoaWdobGlnaHQgYWxsIGRpdiBpbiB0aGUgbWFpbiBmcmFtZS4iLAogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlT
ZWxlY3RvckFsbChtYWluRnJhbWVEb2N1bWVudE5vZGVJZCwgImRpdiIsIChub2RlSWRzKSA9PiB7
CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3JBbGwobWFpbkZyYW1lRG9j
dW1lbnROb2RlSWQsICJkaXYiLCAobm9kZUlkcykgPT4gewogICAgICAgICAgICAgICAgIERPTUFn
ZW50LmhpZ2hsaWdodE5vZGVMaXN0KG5vZGVJZHMsIGhpZ2hsaWdodENvbmZpZywgKGVycm9yKSA9
PiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVqZWN0KGVycm9yKTsKQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIG5hbWU6ICJET00uaGlnaGxpZ2h0Tm9kZUxpc3QuY2hpbGRGcmFtZU5vZGUiLAogICAg
ICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBoaWdobGlnaHQgYWxsIGRpdiBpbiB0aGUgY2hpbGQg
ZnJhbWUuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3JBbGwoY2hpbGRGcmFtZURvY3VtZW50Tm9kZUlk
LCAiZGl2IiwgKG5vZGVJZHMpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlT
ZWxlY3RvckFsbChjaGlsZEZyYW1lRG9jdW1lbnROb2RlSWQsICJkaXYiLCAobm9kZUlkcykgPT4g
ewogICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGVMaXN0KG5vZGVJZHMsIGhp
Z2hsaWdodENvbmZpZywgKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJv
cikgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9t
VHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICBXSS5k
b21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgIG1h
aW5GcmFtZURvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlLmlkOwogICAgICAgICBSdW50aW1l
QWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uOiAiZG9jdW1lbnQiLCBvYmplY3RHcm91
cDogInRlc3QiLCBjb250ZXh0SWQ6IGNoaWxkRnJhbWVzWzBdLnBhZ2VFeGVjdXRpb25Db250ZXh0
LmlkfSwgKGVycm9yLCByZW1vdGVPYmplY3RQYXlsb2FkKSA9PiB7CiAgICAgICAgICAgICBsZXQg
cmVtb3RlT2JqZWN0ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlbW90ZU9iamVjdFBh
eWxvYWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodFNl
bGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodFNlbGVjdG9y
Lmh0bWwKaW5kZXggNjNjNTlkZDhkZjk3MzAxMzA5ODY0MjFmNTYyMTFlMTI1N2ZiYmQyYS4uOTYx
MDMyMjVjMDcxNGNiZmI4MzExMTU3M2VkZTFhZjc2ZjMzYTQ0NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHRTZWxlY3Rvci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0U2VsZWN0b3IuaHRtbApAQCAtNyw3ICs3LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJET00uaGlnaGxpZ2h0U2VsZWN0b3IiKTsKIAotICAgIGxldCBtYWluRnJhbWUg
PSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgbGV0IG1haW5GcmFtZSA9
IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICBsZXQgY2hpbGRGcmFtZXMgPSBBcnJh
eS5mcm9tKG1haW5GcmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7CiAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChjaGlsZEZyYW1lcy5sZW5ndGgsIDEsICJQYWdlIHNob3VsZCBoYXZlIGEg
c3ViZnJhbWUuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5z
ZXJ0QWRqYWNlbnRIVE1MLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFk
amFjZW50SFRNTC5odG1sCmluZGV4IDY0YjY0OGM2MzQ3NzY4NDNiMWY4ODY3MTUxMmQ5ZGEwNTlm
ZGY3YmQuLmEwZDZlYjJkZmVjMmUwOTBhZjVlZGEyZWE3ODk1M2MwMDJlMzg3ZDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwuaHRtbApAQCAt
NjgsOSArNjgsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCi0gICAg
V0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKLSAg
ICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIj
cmVmZXJlbmNlIiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgZG9tTm9kZSA9IFdJLmRvbVRy
ZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNl
bGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNyZWZlcmVuY2UiLCAobm9kZUlkKSA9PiB7CisgICAg
ICAgICAgICBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRvbU5vZGUsIGBOb2RlIHdpdGggaWQgInJlZmVy
ZW5jZSIgc2hvdWxkIGV4aXN0LmApOwogCiAgICAgICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zcGVj
dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0Lmh0bWwKaW5kZXggMjM3
MzIyNTU1NGZjNTJjZTE5M2I1NjljMDc0MzVmMGQwODIxMjE1Yi4uNTRlNGFlNjQzYTJkMzAwMTQ2
NGQ0MDk5NzU1ODFmMDM3NDQxNjAzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9pbnNwZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0
Lmh0bWwKQEAgLTIwLDEwICsyMCwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTog
IkRPTS5pbnNwZWN0LnZhbGlkIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJFdmVudCBnaXZlbiBh
IHZhbGlkIG5vZGVJZCBzaG91bGQgc2VsZWN0IGl0LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRv
Y3VtZW50Tm9kZS5pZCwgIiNlbGVtZW50LXRvLXNlbGVjdCIsIChub2RlSWQpID0+IHsKKyAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjZWxl
bWVudC10by1zZWxlY3QiLCAobm9kZUlkKSA9PiB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hE
T01JbnNwZWN0RXZlbnQobm9kZUlkKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIuYXdhaXRFdmVudChXSS5ET01UcmVlTWFuYWdlci5FdmVudC5ET01Ob2Rl
V2FzSW5zcGVjdGVkKS50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkRPTU1hbmFnZXIuRXZlbnQuRE9NTm9kZVdhc0luc3BlY3RlZCkudGhl
bigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkRPTU5v
ZGVXYXNJbnNwZWN0ZWQgZXZlbnQiKTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAg
ICAgICAgICB9KTsKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0K
ICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkg
PT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CiAgICAg
ICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9w
c2V1ZG8tZWxlbWVudC1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Bz
ZXVkby1lbGVtZW50LWR5bmFtaWMuaHRtbAppbmRleCBmZDliMDQ5ZWFlOTA4OGE1ZDkxZWVhMmIx
NzlmNTlhZmU4NjZmMTg4Li41ZDBkNmFmZDQ0Nzg3NzNlNjRjNzAxNGU5NzllY2VmOWU4ZmY0OWMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LWR5
bmFtaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50
LWR5bmFtaWMuaHRtbApAQCAtMTExLDkgKzExMSw5IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQogCi0gICAgV0kuZG9tVHJl
ZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAg
ICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4Iiwg
ZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICB0ZXN0RE9NTm9kZSA9IFdJLmRvbVRyZWVN
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5
U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3giLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAg
ICAgICAgIHRlc3RET01Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdCh0ZXN0RE9NTm9kZSwgIkdvdCBET01Ob2RlIGZvciAjeCIpOwogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIXRlc3RET01Ob2RlLnBzZXVkb1R5cGUoKSk7CkBA
IC0xMjUsNyArMTI1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7
CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5kb21NYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5Ob2RlSW5zZXJ0ZWQsIGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIC8vIFRlc3QgbG9nZ2luZyB3aWxsIGFkZCBub2RlcyB0
byB0aGUgdGVzdCBwYWdlLiBJZ25vcmUgYW55IGVsZW1lbnRzIGFkZGVkIHRoYXQgYXJlIG5vdCBj
aGlsZHJlbiBvZiBvdXIgdGVzdCBub2RlLgogICAgICAgICBpZiAoZXZlbnQuZGF0YS5wYXJlbnQg
IT09IHRlc3RET01Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1LDcgKzEzNSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIG5leHQoKTsKICAgICB9KTsKIAotICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9k
ZVJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7
CiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFVkVOVDogTm9kZVJlbW92ZWQiKTsKICAgICAg
ICAgaW5zZXJ0ZWRPclJlbW92ZWRET01Ob2RlID0gZXZlbnQuZGF0YS5ub2RlOwogICAgICAgICBu
ZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVt
ZW50LXN0YXRpYy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9wc2V1ZG8tZWxlbWVu
dC1zdGF0aWMuaHRtbAppbmRleCA1YmE1ZWFiY2RhZjdkOTcwYmE3MjdlYzdkZGVmMTM3OTdhY2Rm
YzdmLi40M2Q4YWU2YWU0YzU1MDQxNTdlZGI2Nzc4MzE4OTQ2NWU1MWJmNDg3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LXN0YXRpYy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vcHNldWRvLWVsZW1lbnQtc3RhdGljLmh0bWwK
QEAgLTMsOSArMyw5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlv
biB0ZXN0KCkgewotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlv
bihkb2N1bWVudE5vZGUpIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rv
cihkb2N1bWVudE5vZGUuaWQsICIjbm9uZSIsIGZ1bmN0aW9uKG5vZGVJZCkgewotICAgICAgICAg
ICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAg
ICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVudE5vZGUpIHsK
KyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNu
b25lIiwgZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRv
bU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9tTm9kZSwgIkdv
dCBET01Ob2RlIGZvciAjbm9uZSIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
IWRvbU5vZGUucHNldWRvVHlwZSgpKTsKQEAgLTE1LDggKzE1LDggQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFkb21Ob2RlLmFmdGVyUHNldWRv
RWxlbWVudCgpKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVl
cnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjYiIsIGZ1bmN0aW9uKG5vZGVJZCkgewotICAg
ICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwg
IiNiIiwgZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRv
bU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9tTm9kZSwgIkdv
dCBET01Ob2RlIGZvciAjYiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWRv
bU5vZGUucHNldWRvVHlwZSgpKTsKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLmJlZm9yZVBzZXVk
b0VsZW1lbnQoKS5wc2V1ZG9UeXBlKCkgPT09IFdJLkRPTU5vZGUuUHNldWRvRWxlbWVudFR5cGUu
QmVmb3JlLCAiRE9NTm9kZSBmb3IgYmVmb3JlIHBzZXVkbyBlbGVtZW50IGhhcyB0aGUgcmlnaHQg
dHlwZSIpOwogICAgICAgICB9KTsKIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNl
bGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNhIiwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAg
ICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwor
ICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2Ei
LCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIi
KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLCAiR290IERP
TU5vZGUgZm9yICNhIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZG9tTm9k
ZS5wc2V1ZG9UeXBlKCkpOwpAQCAtMzksOCArMzksOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuYWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkucHNldWRvVHlwZSgpID09PSBXSS5ET01Ob2RlLlBzZXVkb0VsZW1lbnRUeXBlLkFmdGVy
LCAiRE9NTm9kZSBmb3IgYWZ0ZXIgcHNldWRvIGVsZW1lbnQgaGFzIHRoZSByaWdodCB0eXBlIik7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3Io
ZG9jdW1lbnROb2RlLmlkLCAiI3giLCBmdW5jdGlvbihub2RlSWQpIHsKLSAgICAgICAgICAgIHZh
ciBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAg
IFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjeCIsIGZ1bmN0
aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5v
ZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsICJHb3QgRE9NTm9kZSBm
b3IgI3giKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFkb21Ob2RlLnBzZXVk
b1R5cGUoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3B1c2gtbm9k
ZS1ieS1wYXRoLXRvLWZyb250ZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3B1
c2gtbm9kZS1ieS1wYXRoLXRvLWZyb250ZW5kLmh0bWwKaW5kZXggZWQxM2Y4NWJhZmQ4MzdhMzFl
MmE1ZWU0YTJiZjExNzhhMTI0M2ZiNi4uZmI2MDViN2IzZWJlYTNmOGJiOTM4YWM4ODY2NDNhYjgy
OTE4NTMxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9wdXNoLW5vZGUt
YnktcGF0aC10by1mcm9udGVuZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
cHVzaC1ub2RlLWJ5LXBhdGgtdG8tZnJvbnRlbmQuaHRtbApAQCAtMTIsMTMgKzEyLDEzIEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJQdXNoIG5vZGUgd2l0aCBwYXRoOiAiICsgcGF0aCk7Ci0gICAgICAgICAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIChub2RlSWRlbnRp
ZmllcikgPT4geworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucHVzaE5vZGVCeVBhdGhU
b0Zyb250ZW5kKHBhdGgsIChub2RlSWRlbnRpZmllcikgPT4gewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3Qo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9k
ZUZvcklkKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBX
SS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZS5wYXRoKCksIHBhdGgsICJQdXNoZWQg
bm9kZSBoYXMgY29ycmVjdCBwYXRoLiIpOwogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9zZXRFdmVudExpc3RlbmVyRGlzYWJsZWQuaHRtbAppbmRleCBjNjY1ZGM1ZDYwOGI4Zjgy
OGIzOTNiZmY5MGNjMDllN2M0YTkwODhiLi45N2RiMGRiZGMyNTBhNGJjNWY1OGJlNDk4MDdhNDhl
ZGExMWQ1NTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NldEV2ZW50
TGlzdGVuZXJEaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0
RXZlbnRMaXN0ZW5lckRpc2FibGVkLmh0bWwKQEAgLTk2LDcgKzk2LDcgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVz
dERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3RE
b2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgIERPTUFnZW50LmdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShkb2N1bWVudE5vZGUuaWQsIChlcnJvciwgZXZlbnRMaXN0ZW5lcnMpID0+
IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZmFpbCgiVW5hYmxlIHRvIHJldHJpZXZlIGV2ZW50IGxpc3RlbmVycy4iKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0SW5zcGVjdGVkTm9kZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRJbnNwZWN0ZWROb2RlLmh0bWwKaW5kZXggNzczMmM2
YzUwOGEwNjVhZmExZDYzNGZkZDBkY2U1MmU2OGY1NWZiZi4uZmI3MmYxNmNhZjUyYmQ3YzNmZTU0
ZjllZWY1OTlkOTBkMzJlNjEyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9zZXRJbnNwZWN0ZWROb2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9z
ZXRJbnNwZWN0ZWROb2RlLmh0bWwKQEAgLTc0LDE0ICs3NCwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkK
IAogICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCAkMCBiZSBhZnRlciByZWxvYWRpbmcgLyBuYXZp
Z2F0aW5nIHRoZSBwYWdlLiBTaG91bGQgaXQgYmUgY2xlYXJlZD8KIAotICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0gICAgICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2EiLCAoY29udGVu
dE5vZGVJZCkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVu
dE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50
Tm9kZS5pZCwgIiNhIiwgKGNvbnRlbnROb2RlSWQpID0+IHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KGNvbnRlbnROb2RlSWQsICIjYSBub2RlIHNob3VsZCBleGlzdC4iKTsKLSAg
ICAgICAgICAgIG5vZGVBID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2Rl
SWQpOworICAgICAgICAgICAgbm9kZUEgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50
Tm9kZUlkKTsKICAgICAgICAgfSk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2Vs
ZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2IiLCAoY29udGVudE5vZGVJZCkgPT4geworICAgICAg
ICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2IiLCAoY29u
dGVudE5vZGVJZCkgPT4gewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY29udGVu
dE5vZGVJZCwgIiNiIG5vZGUgc2hvdWxkIGV4aXN0LiIpOwotICAgICAgICAgICAgbm9kZUIgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICBu
b2RlQiA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2RlSWQpOwogICAgICAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRPdXRlckhUTUwtbm8tZG9j
dW1lbnQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRPdXRlckhU
TUwtbm8tZG9jdW1lbnQtZWxlbWVudC5odG1sCmluZGV4IGZmNWYzYjMxMTk5MDM5ZmQ0YzhmOTZk
YTFlOGNkMzBlZDE2NjhlODcuLmY0NjZkYzQ5MmVmODE5MDJmOWYyNWY4OWY0YTBhZjUwOWNlODk1
ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0T3V0ZXJIVE1MLW5v
LWRvY3VtZW50LWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Nl
dE91dGVySFRNTC1uby1kb2N1bWVudC1lbGVtZW50Lmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgV0kuZG9tTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGVJ
ZCA9IGRvY3VtZW50Tm9kZS5pZDsKICAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NldE91
dGVySFRNTC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRPdXRlckhUTUwuaHRt
bAppbmRleCBiNTk0NGQwNjA1MjY1MGRjOWRjY2RlODhjNDNiMTNmNGMyMmQ0N2QyLi42NWNlNmZm
NDNjYTFiOTI1NThjMjhiZjFmZWQyNzg3YTZlOTA4NjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL3NldE91dGVySFRNTC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vc2V0T3V0ZXJIVE1MLmh0bWwKQEAgLTcxLDkgKzcxLDkgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVz
dERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgZnVuY3Rpb24obm9kZUlk
KSB7Ci0gICAgICAgICAgICBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5v
ZGVJZCk7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1l
bnROb2RlKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5v
ZGUuaWQsICIjeCIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgZG9tTm9kZSA9IFdJ
LmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChkb21Ob2RlLCAiRE9NTm9kZSBleGlzdHMuIik7CiAgICAgICAgICAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYWRvdy1hbmQtbm9uLXNoYWRvdy1jaGlsZHJlbi5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFkb3ctYW5kLW5vbi1zaGFkb3ctY2hpbGRyZW4u
aHRtbAppbmRleCA3YmM5ZTRjOTQ0NjcxZjQwYjU2ODY1MjA5MzU4OGVlZGJmZTY1ZWM3Li44ZDky
MDNjNDI3ZmE2MGQ5OTI5M2IwOTE5MGEzOTYwOGFhMDBiMjU3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYWRvdy1hbmQtbm9uLXNoYWRvdy1jaGlsZHJlbi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhZG93LWFuZC1ub24tc2hhZG93LWNoaWxk
cmVuLmh0bWwKQEAgLTE2LDggKzE2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6
ICJET01Ob2RlLlNoYWRvd0FuZE5vblNoYWRvd0NoaWxkcmVuLlZpZGVvV2l0aFNvdXJjZSIsCiAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgZm9yIGFsbCBjaGlsZHJlbiBvZiBhIHZpZGVvIHdp
dGggYSBzb3VyY2UgY2hpbGQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlSWQs
ICIjdGVzdC12aWRlbyIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgZG9tTm9k
ZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0ku
ZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZUlkLCAiI3Rlc3QtdmlkZW8iLCAo
bm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2Vy
Lm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoZG9tTm9kZS5ub2RlTmFtZSgpLCAiVklERU8iLCAiRE9NTm9kZSBzaG91bGQgYmUgYSBg
dmlkZW9gIGVsZW1lbnQuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGRvbU5vZGUuaGFzQ2hpbGROb2RlcygpLCAiRE9NTm9kZSBzaG91bGQgaGF2ZSBjaGlsZCBu
b2Rlcy4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9tTm9k
ZS5jaGlsZE5vZGVDb3VudCwgIkRPTU5vZGUgc2hvdWxkIGluZGljYXRlIGl0IGhhcyAyIGNoaWxk
IG5vZGVzLiIpOwpAQCAtMzMsNyArMzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQog
ICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVu
dE5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnRO
b2RlKSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlLmlkOwogICAg
ICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhZG93Um9vdFR5cGUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vc2hhZG93Um9vdFR5cGUuaHRtbAppbmRleCA1NTBlOWM4ZWExZTM0
ODc2YWM4NTViNjM4YWNmN2ZlY2I3OWJiZDIzLi41YTM1NTVlZDgyZmRkZTBlNGJlNjBmZGE5ZDZl
NDg5NGQxOTQ5MmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NoYWRv
d1Jvb3RUeXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFkb3dSb290
VHlwZS5odG1sCkBAIC0xMiw4ICsxMiw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlNoYWRvd1Jvb3RUeXBlLlVzZXJBZ2VudCIsCiAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNob3N0LXVzZXItYWdlbnQiLCAo
bm9kZUlkKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlT
ZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjaG9zdC11c2VyLWFnZW50IiwgKG5vZGVJZCkgPT4g
eworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQo
bm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChkb21Ob2RlLCAi
R290IERPTU5vZGUgZm9yICNob3N0LXVzZXItYWdlbnQiKTsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9tTm9kZS5zaGFkb3dSb290cygpLmxlbmd0aCA9PT0gMSwg
IkRPTU5vZGUgaGFzIGEgc2luZ2xlIHNoYWRvdyByb290LiIpOwogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRvd1Jvb3RzKClbMF0uc2hhZG93Um9v
dFR5cGUoKSA9PT0gV0kuRE9NTm9kZS5TaGFkb3dSb290VHlwZS5Vc2VyQWdlbnQsICJET01Ob2Rl
IGhhcyBVc2VyQWdlbnQgc2hhZG93IHJvb3QgdHlwZS4iKTsKQEAgLTI2LDggKzI2LDggQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiU2hh
ZG93Um9vdFR5cGUuQ2xvc2VkIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlk
LCAiI2hvc3QtY2xvc2VkIiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBkb21O
b2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBX
SS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2hvc3QtY2xvc2Vk
IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yICNob3N0LWNsb3NlZCIpOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRvd1Jvb3RzKCkubGVu
Z3RoID09PSAxLCAiRE9NTm9kZSBoYXMgYSBzaW5nbGUgc2hhZG93IHJvb3QuIik7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdHMoKVsw
XS5zaGFkb3dSb290VHlwZSgpID09PSBXSS5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlLkNsb3NlZCwg
IkRPTU5vZGUgaGFzIENsb3NlZCBzaGFkb3cgcm9vdCB0eXBlLiIpOwpAQCAtNDAsOCArNDAsOCBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6
ICJTaGFkb3dSb290VHlwZS5PcGVuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
LSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2Rl
LmlkLCAiI2hvc3Qtb3BlbiIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNob3N0LW9wZW4i
LCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KGRvbU5vZGUsICJHb3QgRE9NTm9kZSBmb3IgI2hvc3Qtb3BlbiIpOwogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRvd1Jvb3RzKCkubGVuZ3Ro
ID09PSAxLCAiRE9NTm9kZSBoYXMgYSBzaW5nbGUgc2hhZG93IHJvb3QuIik7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdHMoKVswXS5z
aGFkb3dSb290VHlwZSgpID09PSBXSS5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlLk9wZW4sICJET01O
b2RlIGhhcyBPcGVuIHNoYWRvdyByb290IHR5cGUuIik7CkBAIC01NCw4ICs1NCw4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIk5vU2hh
ZG93Um9vdFR5cGUiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjbm8t
aG9zdCIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRv
bVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNuby1ob3N0IiwgKG5vZGVJZCkgPT4g
eworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQo
bm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChkb21Ob2RlLCAi
R290IERPTU5vZGUgZm9yICNuby1ob3N0Iik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdHMoKS5sZW5ndGggPT09IDAsICJET01Ob2Rl
IGhhcyBubyBzaGFkb3cgcm9vdHMuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdFR5cGUoKSA9PT0gdW5kZWZpbmVkLCAiRE9NTm9k
ZSBoYXMgbm8gc2hhZG93IHJvb3QgdHlwZS4iKTsKQEAgLTY0LDcgKzY0LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVl
c3REb2N1bWVudCgobm9kZSkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50
KChub2RlKSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS90ZW1wbGF0ZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3RlbXBsYXRlLWNvbnRlbnQuaHRtbAppbmRleCBmMzQwZmZiNjEzNmE0YTlkMmNh
OTI1ZTA0NDNmYzIxMzMwZTg0OWMxLi41NmI0NjVkMTExODA3MzQ1ODQ3MThlYmQxOTcyMzg5ZTI0
NDcyOGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3RlbXBsYXRlLWNv
bnRlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3RlbXBsYXRlLWNvbnRl
bnQuaHRtbApAQCAtMywxNSArMywxNSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2RpdiIsIGZ1bmN0aW9uKG5vZGVJZCkgewot
ICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVu
dE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9k
ZS5pZCwgIiNkaXYiLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgIHZhciBkb21Ob2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yIGRpdiBlbGVtZW50Iik7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWRvbU5vZGUudGVtcGxhdGVD
b250ZW50KCksICJET01Ob2RlIGRvZXMgbm90IGhhdmUgdGVtcGxhdGUgY29udGVudCIpOwogICAg
ICAgICB9KTsKIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3Vt
ZW50Tm9kZS5pZCwgIiN0ZW1wbGF0ZSIsIGZ1bmN0aW9uKG5vZGVJZCkgewotICAgICAgICAgICAg
dmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN0ZW1wbGF0
ZSIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21N
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsICJHb3Qg
RE9NTm9kZSBmb3IgdGVtcGxhdGUgZWxlbWVudCIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGRvbU5vZGUudGVtcGxhdGVDb250ZW50KCksICJET01Ob2RlIGhhcyB0ZW1w
bGF0ZSBjb250ZW50Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwppbmRleCBmZGQ3ZDkzNGJiMTYxZjg0YTdiNWI4
MTFmOWYzZmIxNTE0MWE4NzdiLi42NDRjZWJjZWMyZWQwOGFkMDNhYzZiNWM3ZDQ5ZTJjMmJkYzUx
ZjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy91dGlsaXRpZXMuanMKQEAgLTIsOCArMiw4IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5p
dGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAgICAgZnVuY3Rpb24gbG9hZEZvcm1hdHRpbmdUZXN0QW5k
RXhwZWN0ZWRSZXN1bHRzKHRlc3RVUkwpIHsKICAgICAgICAgbGV0IGV4cGVjdGVkVVJMID0gdGVz
dFVSTC5yZXBsYWNlKC9cLihbXlwuXSspJC8sICItZXhwZWN0ZWQuJDEiKTsKICAgICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2Uo
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkLCB0ZXN0VVJMKSwKLSAgICAgICAg
ICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lLmlkLCBleHBlY3RlZFVSTCkKKyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVz
b3VyY2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkLCB0ZXN0VVJMKSwKKyAgICAgICAg
ICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LmlkLCBleHBlY3RlZFVSTCkKICAgICAgICAgXSkudGhlbihmdW5jdGlvbihyZXN1bHRzKSB7CiAg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt0ZXN0VGV4dDogcmVzdWx0c1swXS5j
b250ZW50LCBleHBlY3RlZFRleHQ6IHJlc3VsdHNbMV0uY29udGVudCB9KTsKICAgICAgICAgfSk7
CkBAIC00Miw3ICs0Miw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24o
KSB7CiAgICAgfQogCiAgICAgd2luZG93LmFkZEZvcm1hdHRpbmdUZXN0cyA9IGZ1bmN0aW9uKHN1
aXRlLCBtb2RlLCB0ZXN0cykgewotICAgICAgICBsZXQgdGVzdFBhZ2VVUkwgPSBXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnVybDsKKyAgICAgICAgbGV0IHRl
c3RQYWdlVVJMID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS51cmw7
CiAgICAgICAgIGxldCB0ZXN0UGFnZVJlc291cmNlc1VSTCA9IHRlc3RQYWdlVVJMLnN1YnN0cmlu
ZygwLCB0ZXN0UGFnZVVSTC5sYXN0SW5kZXhPZigiLyIpKTsgICAgICAgICAgICAKIAogICAgICAg
ICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL2NsZWFyT2JqZWN0U3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvY2xlYXJPYmplY3RTdG9yZS5odG1sCmluZGV4IDkwZjhmMjhiYzE2YTVm
ZDYzMWU0MGY3NDgxZmQ1ODQ0Y2U0MWFmOTYuLjVkMjlmM2I1MDcwODcwNGJhZTRhMGFiZmY1NzY3
MjkzN2NhNmUzN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIv
Y2xlYXJPYmplY3RTdG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVk
ZGIvY2xlYXJPYmplY3RTdG9yZS5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBhbnkgZXhpc3RpbmcgSW5kZXhlZERCIGRhdGFiYXNlcyB0aGF0IG1pZ2h0IGV4aXN0
IHRvIHdvcmthcm91bmQ6CiAgICAgICAgICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4
MDA2PiBFYWNoIHRlc3Qgc2hvdWxkIHJ1biB3aXRoIGl0cyBvd24gY2xlYW4gZGF0YSBzdG9yZQot
ICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9
PiB7CisgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+
IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkZWxldGVE
YXRhYmFzZU5hbWVzKCIgKyBKU09OLnN0cmluZ2lmeShuYW1lcykgKyAiKSIsIHJlc29sdmUpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTI1LDExICsyNSwxMSBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBjbGVhcmluZyBhbiBvYmpl
Y3Qgc3RvcmUgY2xlYXJzIGVudHJpZXMgaW4gdGhhdCBvYmplY3Qgc3RvcmUuIiwKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoImNyZWF0ZURhdGFiYXNlV2l0aFN0b3JlcygnQ29tcGxldGVEYXRhYmFzZScsIDEp
Iik7Ci0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiQ29tcGxldGVEYXRhYmFz
ZSIsIChlcnJvciwgZGF0YWJhc2UpID0+IHsKKyAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJl
cXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4s
ICJDb21wbGV0ZURhdGFiYXNlIiwgKGVycm9yLCBkYXRhYmFzZSkgPT4gewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAKICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBleHBlY3RPYmplY3RTdG9yZUVudHJ5Q291bnQob2JqZWN0U3RvcmUsIGV4cGVj
dGVkQ291bnQsIG1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlP
cmlnaW4gPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW47
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyaXR5T3JpZ2luID0gV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luOwogICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbmRleE5hbWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2tpcENvdW50ID0g
MDsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSAxMDsKQEAgLTM5LDcgKzM5
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGxldCBzZWN1cml0eU9yaWdpbiA9IFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbjsKKyAgICAgICAgICAgICAg
ICBsZXQgc2VjdXJpdHlPcmlnaW4gPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJp
dHlPcmlnaW47CiAgICAgICAgICAgICAgICAgbGV0IFtlbXB0eU9iamVjdFN0b3JlLCByZXZpZXdl
cnNPYmplY3RTdG9yZSwgc3RhdHNPYmplY3RTdG9yZV0gPSBkYXRhYmFzZS5vYmplY3RTdG9yZXM7
CiAKICAgICAgICAgICAgICAgICBleHBlY3RPYmplY3RTdG9yZUVudHJ5Q291bnQoZW1wdHlPYmpl
Y3RTdG9yZSwgMCwgIidFbXB0eScgb2JqZWN0IHN0b3JlIHNob3VsZCBhbHdheXMgYmUgZW1wdHku
Iik7CkBAIC03Miw4ICs3Miw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRh
YmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgIkVtcHR5RGF0YWJhc2UiLCAoZXJyb3IsIGRh
dGFiYXNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LmNsZWFyT2Jq
ZWN0U3RvcmUoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2lu
LCBkYXRhYmFzZS5uYW1lLCAiTm9TdWNoT2JqZWN0U3RvcmUiLCAoZXJyb3IpID0+IHsKKyAgICAg
ICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiRW1wdHlEYXRhYmFzZSIsIChlcnJvciwgZGF0
YWJhc2UpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQuY2xlYXJPYmpl
Y3RTdG9yZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIGRhdGFi
YXNlLm5hbWUsICJOb1N1Y2hPYmplY3RTdG9yZSIsIChlcnJvcikgPT4gewogICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiU2hvdWxkIGJlIGFu
IGVycm9yIGF0dGVtcHRpbmcgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIHRoYXQgZG9lcyBub3Qg
ZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kZWxldGVEYXRhYmFzZU5hbWVzV2l0aFNwYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNXaXRoU3BhY2UuaHRtbAppbmRleCA1YjFm
ZTY0YzA0N2U4YzdmNjRmM2RlNWQwNzIyOWU3ZTI3MzhmNTFlLi5hNDdjN2FiZTg0NzBjNWE4Zjc4
OTI5Y2MyNmVlNzVkZTA5MjgxMzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
aW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNXaXRoU3BhY2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNXaXRoU3BhY2UuaHRt
bApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgYW55IGV4aXN0aW5nIElu
ZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdodCBleGlzdCB0byB3b3JrYXJvdW5kOgogICAgICAg
ICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODAwNj4gRWFjaCB0ZXN0IHNob3VsZCBy
dW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEgc3RvcmUKLSAgICAgICAgICAgIEluZGV4ZWREQkFn
ZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFt
ZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4geworICAgICAgICAgICAgSW5kZXhl
ZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZGVsZXRlRGF0YWJhc2VOYW1lcygiICsgSlNPTi5z
dHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNvbHZlKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiRW5z
dXJlTm9EYXRhYmFzZXMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSBubyBkYXRhYmFz
ZXMgZXhpc3QgYXQgdGhlIHN0YXJ0LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
Ci0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5mcmFt
ZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMp
ID0+IHsKKyAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykg
PT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxlbmd0aCA9
PT0gMCwgIk5vIEluZGV4ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0IGluaXRpYWxseS4iKTsK
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4o
KGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFi
YXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2lu
LCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVx
dWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3Jp
Z2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChuYW1lcy5sZW5ndGggPT09IDEsICJBIHNpbmdsZSBJbmRleGVkREIgZGF0
YWJhc2Ugc2hvdWxkIGV4aXN0LiIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhKU09OLnN0cmluZ2lmeShuYW1lcykpOwpAQCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJEZWxldGUgdGhlIGRhdGFiYXNlLiIsCiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJkZWxldGVEYXRhYmFzZU5hbWVzKFsnRGF0YWJhc2UgV2l0aCBTcGFjZSdd
KSIpOwotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5h
bWVzKSA9PiB7CisgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1l
cyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFt
ZXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vRXJyb3IoZXJy
b3IpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuYW1lcy5sZW5n
dGggPT09IDAsICJObyBJbmRleGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlzdCBiZWNhdXNlIHdl
IGp1c3QgZGVsZXRlZCB0aGVtLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5k
ZXhlZGRiL3JlcXVlc3REYXRhLmh0bWwKaW5kZXggMDVlMmI3YzNhMWZhYmRkNmYxOWI1ODM0ZGNh
ZTgwMzI4YTM4NDEwMS4uMGIwYTQ2YjY5YjQzMWFiZjM3Y2U5MmQ5NTc5ZmE5ZGM3MGQ4NzJiYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGEuaHRt
bApAQCAtMjIsNyArMjIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgYW55IGV4aXN0aW5nIElu
ZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdodCBleGlzdCB0byB3b3JrYXJvdW5kOgogICAgICAg
ICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODAwNj4gRWFjaCB0ZXN0IHNob3VsZCBy
dW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEgc3RvcmUKLSAgICAgICAgICAgIEluZGV4ZWREQkFn
ZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFt
ZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4geworICAgICAgICAgICAgSW5kZXhl
ZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZGVsZXRlRGF0YWJhc2VOYW1lcygiICsgSlNPTi5z
dHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNvbHZlKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CkBAIC0zMywxMSArMzMsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0
aW9uOiAiUmVxdWVzdCBkYXRhIGZvciBhbiBvYmplY3Qgc3RvcmUgd2l0aCBkaWZmZXJlbnQgaW5k
ZXhlcy4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlRGF0YWJhc2VXaXRoU3RvcmVzKCdEYXRh
YmFzZTEnLCAxKSIpOwotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNl
KFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgIkRhdGFi
YXNlMSIsIChlcnJvciwgZGF0YWJhc2UpID0+IHsKKyAgICAgICAgICAgIEluZGV4ZWREQkFnZW50
LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmln
aW4sICJEYXRhYmFzZTEiLCAoZXJyb3IsIGRhdGFiYXNlKSA9PiB7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKIAogICAgICAgICAgICAgICAgIGxl
dCBbZW1wdHlPYmplY3RTdG9yZSwgcmV2aWV3ZXJzT2JqZWN0U3RvcmUsIHN0YXRzT2JqZWN0U3Rv
cmVdID0gZGF0YWJhc2Uub2JqZWN0U3RvcmVzOwotICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Vy
aXR5T3JpZ2luID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3Jp
Z2luOworICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyaXR5T3JpZ2luID0gV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luOwogICAgICAgICAgICAgICAgIGNvbnN0IHNr
aXBDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSAxMDsKIApAQCAt
MTExLDExICsxMTEsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9uOiAi
UmVxdWVzdCBkYXRhIGZvciBhbiBvYmplY3Qgc3RvcmUgd2l0aCBwYWdpbmF0ZWQgcmVxdWVzdHMu
IiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZURhdGFiYXNlV2l0aFN0b3JlcygnRGF0YWJhc2Uy
JywgMSkiKTsKLSAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJEYXRhYmFzZTIi
LCAoZXJyb3IsIGRhdGFiYXNlKSA9PiB7CisgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1
ZXN0RGF0YWJhc2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAi
RGF0YWJhc2UyIiwgKGVycm9yLCBkYXRhYmFzZSkgPT4gewogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAKICAgICAgICAgICAgICAgICBsZXQgW2Vt
cHR5T2JqZWN0U3RvcmUsIHJldmlld2Vyc09iamVjdFN0b3JlLCBzdGF0c09iamVjdFN0b3JlXSA9
IGRhdGFiYXNlLm9iamVjdFN0b3JlczsKLSAgICAgICAgICAgICAgICBjb25zdCBzZWN1cml0eU9y
aWdpbiA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbjsK
KyAgICAgICAgICAgICAgICBjb25zdCBzZWN1cml0eU9yaWdpbiA9IFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgICAgICAgICBjb25zdCBpbmRleE5h
bWUgPSAiIjsKICAgICAgICAgICAgICAgICBjb25zdCBwYWdlU2l6ZSA9IDI7CiAKQEAgLTE2NSwx
MSArMTY1LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIlJlcXVl
c3Qga2V5IHJhbmdlIGJvdW5kZWQgZGF0YSBmb3IgYW4gb2JqZWN0IHN0b3JlLiIsCiAgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJjcmVhdGVEYXRhYmFzZVdpdGhTdG9yZXMoJ0RhdGFiYXNlMycsIDEpIik7Ci0g
ICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiRGF0YWJhc2UzIiwgKGVycm9yLCBk
YXRhYmFzZSkgPT4geworICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNl
KFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgIkRhdGFiYXNlMyIs
IChlcnJvciwgZGF0YWJhc2UpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdE5vRXJyb3IoZXJyb3IpOwogCiAgICAgICAgICAgICAgICAgbGV0IFtlbXB0eU9iamVjdFN0
b3JlLCByZXZpZXdlcnNPYmplY3RTdG9yZSwgc3RhdHNPYmplY3RTdG9yZV0gPSBkYXRhYmFzZS5v
YmplY3RTdG9yZXM7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlPcmlnaW4gPSBXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW47CisgICAgICAgICAg
ICAgICAgY29uc3Qgc2VjdXJpdHlPcmlnaW4gPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUu
c2VjdXJpdHlPcmlnaW47CiAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXhOYW1lID0gIk5hbWUg
SW5kZXgiOwogICAgICAgICAgICAgICAgIGNvbnN0IHNraXBDb3VudCA9IDA7CiAgICAgICAgICAg
ICAgICAgY29uc3QgcGFnZVNpemUgPSAxMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZS5odG1sCmluZGV4IGNmNjhjOTlkNDc0NzgyZTgw
YjZiZTgwZmMzNGZlN2MwMzhiMWVkN2UuLmNmYTUyYTY0OGRjZTkxMTY3NGFhYWExMGVmYTdhNTk4
NTQ0MmI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVx
dWVzdERhdGFiYXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9y
ZXF1ZXN0RGF0YWJhc2UuaHRtbApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1v
dmUgYW55IGV4aXN0aW5nIEluZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdodCBleGlzdCB0byB3
b3JrYXJvdW5kOgogICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODAwNj4g
RWFjaCB0ZXN0IHNob3VsZCBydW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEgc3RvcmUKLSAgICAg
ICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4gewor
ICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZGVsZXRlRGF0YWJh
c2VOYW1lcygiICsgSlNPTi5zdHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNvbHZlKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9CkBAIC0yNSw3ICsyNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgIkVtcHR5RGF0
YWJhc2UiLCAoZXJyb3IsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykgPT4geworICAgICAgICAg
ICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJFbXB0eURhdGFiYXNlIiwgKGVycm9yLCBkYXRhYmFz
ZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5uYW1lID09PSAiRW1wdHlEYXRh
YmFzZSIsICJEYXRhYmFzZSBuYW1lIHNob3VsZCBiZSAnRW1wdHlEYXRhYmFzZScuIik7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkYXRhYmFzZVdpdGhPYmpl
Y3RTdG9yZXMudmVyc2lvbiA9PT0gMTIzLCAiRGF0YWJhc2UgdmVyc2lvbiBzaG91bGQgYmUgMTIz
LiIpOwpAQCAtNDMsNyArNDMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiRGF0
YWJhc2VDcmVhdGVkIikKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJDb21wbGV0ZURhdGFiYXNlIiwgKGVycm9y
LCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKKyAgICAgICAgICAgICAgICBJbmRleGVk
REJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCAiQ29tcGxldGVEYXRhYmFzZSIsIChlcnJvciwgZGF0YWJhc2VXaXRoT2JqZWN0
U3RvcmVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9F
cnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIGxldCBvYmplY3RTdG9yZXMgPSBkYXRh
YmFzZVdpdGhPYmplY3RTdG9yZXMub2JqZWN0U3RvcmVzOwogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLm5hbWUgPT09
ICJDb21wbGV0ZURhdGFiYXNlIiwgIkRhdGFiYXNlIG5hbWUgc2hvdWxkIGJlICdFbXB0eURhdGFi
YXNlJy4iKTsKQEAgLTgzLDcgKzgzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAgIG5h
bWU6ICJOb1N1Y2hEYXRhYmFzZSIsCiAgICAgLy8gICAgIGRlc2NyaXB0aW9uOiAiUmVxdWVzdCBh
IGRhdGFiYXNlIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwKICAgICAvLyAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAvLyAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFz
ZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJOYW1l
RG9lc05vdEV4aXN0IiwgKGVycm9yLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKKyAg
ICAvLyAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJOYW1lRG9lc05vdEV4aXN0IiwgKGVycm9y
LCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKICAgICAvLyAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgYmUgYW4gZXJyb3IgdHJ5aW5nIHRv
IHJlcXVlc3QgYSBkYXRhYmFzZSB0aGF0IGRvZXMgbm90IGV4aXN0LiIpOwogICAgIC8vICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFiYXNlV2l0aE9iamVj
dFN0b3JlcykpOwogICAgIC8vICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMuaHRt
bAppbmRleCA4MmU4MmUyMGUxZmRjOGVhMGEzZWFkZDYyNWQ4OGEzZjYzNThiZDViLi5lOTBjMmVh
MDY5OGY3ZjE1OWE3ODFiOThmZDFlYjkwNGYxMDAxNWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5odG1sCkBA
IC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBhbnkgZXhpc3RpbmcgSW5kZXhl
ZERCIGRhdGFiYXNlcyB0aGF0IG1pZ2h0IGV4aXN0IHRvIHdvcmthcm91bmQ6CiAgICAgICAgICAg
ICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4MDA2PiBFYWNoIHRlc3Qgc2hvdWxkIHJ1biB3
aXRoIGl0cyBvd24gY2xlYW4gZGF0YSBzdG9yZQotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGFiYXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNl
Y3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICBJbmRleGVkREJB
Z2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2Vj
dXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkZWxldGVEYXRhYmFzZU5hbWVzKCIgKyBKU09OLnN0cmlu
Z2lmeShuYW1lcykgKyAiKSIsIHJlc29sdmUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
QEAgLTI0LDcgKzI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJFbnN1cmVO
b0RhdGFiYXNlcyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIG5vIGRhdGFiYXNlcyBl
eGlzdCBhdCB0aGUgc3RhcnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4g
eworICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0
d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmFtZXMubGVuZ3RoID09PSAw
LCAiTm8gSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QgaW5pdGlhbGx5LiIpOwogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKQEAgLTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmF3YWl0RXZlbnQoIkRhdGFiYXNlQ3JlYXRlZCIpCiAgICAgICAgICAgICAudGhlbigoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VO
YW1lcyhXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChl
cnJvciwgbmFtZXMpID0+IHsKKyAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0
RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4s
IChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KG5hbWVzLmxlbmd0aCA9PT0gMSwgIkEgc2luZ2xlIEluZGV4ZWREQiBkYXRhYmFz
ZSBzaG91bGQgZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7CkBAIC01Niw3ICs1Niw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4oKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNl
TmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAo
ZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2lu
LCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnNvcnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxlbmd0
aCA9PT0gMiwgIlR3byBJbmRleGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlzdC4iKTsKQEAgLTc1
LDcgKzc1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIkRhdGFiYXNlQ3JlYXRl
ZCIpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbmRl
eGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5mcmFtZVJlc291cmNlTWFuYWdlci5t
YWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKKyAgICAgICAgICAg
ICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAg
ICAgICAgICAgICAgbmFtZXMuc29ydCgpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQobmFtZXMubGVuZ3RoID09PSAzLCAiVGhyZWUgSW5kZXhlZERCIGRhdGFi
YXNlcyBzaG91bGQgZXhpc3QuIik7CkBAIC05NCw3ICs5NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFt
ZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJy
b3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERh
dGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAo
ZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnNvcnQoKTsKICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxlbmd0aCA9
PT0gNCwgIkZvdXIgSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QuIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbGF5ZXJzL2xheWVyLXRyZWUtbWFuYWdlci5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2xheWVycy9sYXllci10cmVlLW1hbmFnZXIuaHRtbApp
bmRleCAyZGZlNGFiYWJkZTMzNzFkYjMzOTU0MzQ0NmVmOWVkMWQ4YzYxYjRiLi5jZGQ4NmQ1ZDNj
YzVmZTU3NmJlNGNmMDM5YjRiMmEzNWJkYjAyMjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbGF5ZXJzL2xheWVyLXRyZWUtbWFuYWdlci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9sYXllcnMvbGF5ZXItdHJlZS1tYW5hZ2VyLmh0bWwKQEAgLTExLDcgKzExLDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJMYXllclRyZWVNYW5hZ2VyLmxheWVy
c0Zvck5vZGUucm9vdCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2FsbGluZyB0aGUgTGF5ZXJU
cmVlTWFuYWdlciNsYXllcnNGb3JOb2RlIG1ldGhvZCB3aXRoIHRoZSByb290IG5vZGUgc2hvdWxk
IHJldHVybiB0aGUgZnVsbCBsYXllciBsaXN0LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5v
ZGUpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2Rl
KSA9PiB7CiAgICAgICAgICAgICAgICAgV0kubGF5ZXJUcmVlTWFuYWdlci5sYXllcnNGb3JOb2Rl
KG5vZGUsIChsYXllcnMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChsYXllcnMubGVuZ3RoLCA1LCAiUmV0dXJuZWQgYXJyYXkgc2hvdWxkIGluY2x1
ZGUgYWxsIGxheWVycy4iKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGxheWVycy5ldmVyeSgobGF5ZXIpID0+IGxheWVyIGluc3RhbmNlb2YgV0kuTGF5ZXIp
LCAiQXJyYXkgZWxlbWVudHMgc2hvdWxkIGJlIExheWVyIGluc3RhbmNlcy4iKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9kb20tbm9kZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL2RvbS1ub2RlLmh0bWwKaW5kZXggNmUzNWJmYzQ4MDkzNGQ2ODc3
N2I2N2IxN2QyZDZjZmFlOWQyNjFhZS4uYTYyOTc2OWVkOGU0MTE1NTc4NTU4ZDI1YzQ2YTA0YmMw
ZTNiMmE5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2RvbS1ub2Rl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2RvbS1ub2RlLmh0bWwKQEAg
LTExLDkgKzExLDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJXSS5ET01Ob2Rl
LmF0dHJpYnV0ZXMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZ2V0dGluZyB0aGUgYXR0
cmlidXRlcyBvZiBhIG5vZGUuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2Rl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGUuaWQsICIjdGVzdC1pZCIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsK
KyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUp
ID0+IHsKKyAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1l
bnROb2RlLmlkLCAiI3Rlc3QtaWQiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9tTm9kZSwgIkRPTU5vZGUgZXhpc3Rz
Iik7CiAKICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIG9mIGRvbU5vZGUu
YXR0cmlidXRlcygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2Zy
YW1lLWV4dHJhLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9mcmFt
ZS1leHRyYS1zY3JpcHRzLmh0bWwKaW5kZXggODZmZTQ5MjFkYjU0YjhiZGQyZTcwNjhmN2QyYTU0
MmE4ZGZiZTRlMy4uMDAwYzNkODE5YTdlZWFjZmM3OGQ4NWQ1ZDMxNTExZjVhNzgyNjFhMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2ZyYW1lLWV4dHJhLXNjcmlwdHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvZnJhbWUtZXh0cmEtc2NyaXB0
cy5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0
ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiV0kuRnJhbWUuZXh0cmFTY3JpcHRD
b2xsZWN0aW9uIik7CiAKLSAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lOworICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWU7CiAKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJGcmFtZUhh
c05vRXh0cmFTY3JpcHRzWWV0IiwKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIG5hbWU6ICJBZGRFeHRyYVNjcmlwdCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQWRk
IGV4dHJhIHNjcmlwdC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJh
bWUuRXZlbnQuRXh0cmFTY3JpcHRBZGRlZCkKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZS5hd2FpdEV2ZW50KFdJLkZyYW1lLkV2ZW50LkV4dHJhU2NyaXB0QWRkZWQpCiAg
ICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoIkV4dHJhU2NyaXB0QWRkZWQgZXZlbnQgZmlyZWQuIik7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc2NyaXB0LmR5bmFtaWNhbGx5
QWRkZWRTY3JpcHRFbGVtZW50LCAiU2NyaXB0IHNob3VsZCBpZGVudGlmeSBhcyBkeW5hbWljLiIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3NjcmlwdC1yZXNvdXJj
ZS1yZWxhdGlvbnNoaXAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9zY3JpcHQt
cmVzb3VyY2UtcmVsYXRpb25zaGlwLmh0bWwKaW5kZXggMGY2ODQ5ZmQ5MTI4MDU3MDljMjA1ZDJj
ZWNkZjI0Mjk4YjlhYjVhNi4uNDY1ODdiMGY2NmZiYzkzMDI3MGZkYjQyZmUxZTUxMzM1OGQ5ZmIy
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3NjcmlwdC1yZXNvdXJj
ZS1yZWxhdGlvbnNoaXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvc2Ny
aXB0LXJlc291cmNlLXJlbGF0aW9uc2hpcC5odG1sCkBAIC0xNzYsNyArMTc2LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJEb2N1bWVudFdpdGhJbmxpbmVTY3JpcHRzIiwKICAg
ICAgICAgZGVzY3JpcHRpb246ICJBIGRvY3VtZW50IHJlc291cmNlIG1heSBiZSBhc3NvY2lhdGVk
IHdpdGggbXVsdGlwbGUgaW5saW5lIHNjcmlwdHMuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBtYWluUmVzb3VyY2UgPSBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlOworICAgICAgICAgICAgbGV0IG1haW5SZXNv
dXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2U7CiAgICAgICAg
ICAgICBsZXQgc2NyaXB0cyA9IG1haW5SZXNvdXJjZS5zY3JpcHRzLnNsaWNlKCkuc29ydCgoYSwg
YikgPT4gYS5yYW5nZS5zdGFydExpbmUgLSBiLnJhbmdlLnN0YXJ0TGluZSk7CiAKICAgICAgICAg
ICAgIC8vIFNjcmlwdHMgYXJlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3N0YWNrLXRyYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvc3RhY2st
dHJhY2UuaHRtbAppbmRleCAxMzAyMThkMDY0N2YxNGNjMTgyZDE3NmM2NDg0MDBjZmY1YzMxMWFk
Li45MTIzNDYxNmJjZWVhYzhhMGE5NWE3M2FjYjFlMzcxYjBmMjk2N2YwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvc3RhY2stdHJhY2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbW9kZWwvc3RhY2stdHJhY2UuaHRtbApAQCAtMzEsNyArMzEsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIldJLkNvbnNvbGVNZXNzYWdlLlN0YWNrVHJh
Y2UiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgd2UgY2FuIGNyZWF0ZSBhIFN0YWNrVHJh
Y2UgZnJvbSBjb25zb2xlIG1lc3NhZ2VzIChDb25zb2xlLlN0YWNrVHJhY2UpLiIsCiAgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCisgICAgICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VB
ZGRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIC8v
IFRyYWNlIG1lc3NhZ2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgc3RhY2sgdHJhY2UuCiAgICAgICAg
ICAgICAgICAgbGV0IGNvbnNvbGVNZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvZW1wdHktb3ItbWlzc2luZy1yZXNvdXJj
ZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2VtcHR5LW9yLW1pc3NpbmctcmVz
b3VyY2VzLmh0bWwKaW5kZXggMmU2NWMzZmYwZDU3N2YyZGVhMDI3MmQzNGQ3OTdhNzU3MWI1OTVl
ZC4uMDk3MDNlYzY1NDRiNjg1NGJiNTAwYzE3NmE0OTk5NWQ1YWE3NjI5NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvZW1wdHktb3ItbWlzc2luZy1yZXNvdXJjZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9lbXB0eS1vci1taXNzaW5nLXJlc291
cmNlcy5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1l
OiAiUGFnZS5nZXRSZXNvdXJjZVRyZWUuRW1wdHlSZXNvdXJjZXMiLAogICAgICAgICBkZXNjcmlw
dGlvbjogIlNob3VsZCBub3QgY3Jhc2ggaWYgdGhlcmUgYXJlIGVtcHR5IG9yIG1pc3NpbmcgcmVz
b3VyY2VzLiIsCiAgICAgICAgIGFzeW5jIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICBsZXQgcmVzb3VyY2VzID0gQXJyYXkuZnJvbShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5t
YWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIGxldCByZXNvdXJjZXMg
PSBBcnJheS5mcm9tKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rp
b24pOwogICAgICAgICAgICAgbGV0IHJlc291cmNlVVJMcyA9IHJlc291cmNlcy5tYXAoeCA9PiB4
LnVybCkuZmlsdGVyKHggPT4gLyhlbXB0eXxtaXNzaW5nKS8udGVzdCh4KSkuc29ydCgpOwogICAg
ICAgICAgICAgZm9yIChsZXQgdXJsIG9mIHJlc291cmNlVVJMcykKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhzYW5pdGl6ZVVSTCh1cmwpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbAppbmRleCA3MmYxZTRiODgw
YjE2Y2U4OTBjZjkxNGU5M2ZiNGE4NzU1ODYzYTM2Li5lOTc3MjUxZTk3MDJiOTBkNDdhOGFjNDBh
MjJhOTIzY2NiMzcwMzk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9o
aWRwaS1zbmFwc2hvdC1zaXplLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2Uv
aGlkcGktc25hcHNob3Qtc2l6ZS5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBuYW1lOiAiU25hcHNob3RQcmVzZXJ2ZXNQYWdlUmVzb2x1dGlvbiIsCiAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVmVyaWZ5IHRoYXQgYSBub2RlIHNuYXBzaG90IGlzIG5vdCBzY2Fs
ZWQgZG93biB0byBDU1MgcGl4ZWxzLiIsCiAgICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAg
ICAgICBsZXQgdGFyZ2V0Tm9kZUlkID0gYXdhaXQgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxl
Y3Rvcihkb2N1bWVudE5vZGUuaWQsICIjZWxlbWVudC10by1zbmFwc2hvdCIpOworICAgICAgICAg
ICAgbGV0IHRhcmdldE5vZGVJZCA9IGF3YWl0IFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGUuaWQsICIjZWxlbWVudC10by1zbmFwc2hvdCIpOwogICAgICAgICAgICAgbGV0
IHtkYXRhVVJMfSA9IGF3YWl0IFBhZ2VBZ2VudC5zbmFwc2hvdE5vZGUodGFyZ2V0Tm9kZUlkKTsK
ICAgICAgICAgICAgIGxldCBkZXZpY2VQaXhlbFJhdGlvID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgd2luZG93LmRldmljZVBpeGVsUmF0aW9gKTsKICAgICAgICAgICAgIGxl
dCBlbGVtZW50Qm91bmRzID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2lu
ZG93LnNuYXBzaG90RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKWApCkBAIC00OCw3ICs0
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBXSS5kb21U
cmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGUgPSBub2Rl
OwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVzb3VyY2UuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVzb3VyY2UuaHRtbApp
bmRleCA5NjNhYzkzOTE4OTE5ZjQzMmM0YzM2Njc4OWYyZjM4Y2IzM2Q3OTJjLi40M2Y0MTE5Nzkx
NTc0NThkN2NhY2MzNzBkNjk3NjRkMzk3OGMyZTVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcGFnZS9tYWluLWZyYW1lLXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BhZ2UvbWFpbi1mcmFtZS1yZXNvdXJjZS5odG1sCkBAIC02LDcgKzYsNyBAQAog
ZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFt
ZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IHZhciB1cmwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUudXJsOworICAgICAg
ICB2YXIgdXJsID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybDsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIk1haW4gZnJhbWU6ICIgKyB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5k
ZXhPZigiLyIpICsgMSkpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvY2hhbmdl
LWV4ZWN1dGlvbi1jb250ZXh0LWlkZW50aWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9ydW50aW1lL2NoYW5nZS1leGVjdXRpb24tY29udGV4dC1pZGVudGlmaWVyLmh0bWwKaW5kZXgg
ZmVmNTBiNDY5NzZkNjc4NTUxNzc5YmU2MzJlYjgzMDBlY2Q4ODBlNS4uZTZhMmU0NzNhNzYyZWYz
MGYwZGRjNTA0MzVjZGEyMmQ2MjA5NjA4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3J1bnRpbWUvY2hhbmdlLWV4ZWN1dGlvbi1jb250ZXh0LWlkZW50aWZpZXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9jaGFuZ2UtZXhlY3V0aW9uLWNvbnRleHQt
aWRlbnRpZmllci5odG1sCkBAIC0zNCw3ICszNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBuYW1lOiAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dE1haW5GcmFtZUNvbnRleHQiLAogICAgICAg
ICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93IHdvcmtz
IHdoZW4gYWN0aXZlRXhlY3V0aW9uQ29udGV4dCBpcyB0aGUgbWFpbiBmcmFtZSBleGVjdXRpb24g
Y29udGV4dC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBtYWluIGNvbnRleHQuIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2Vy
LmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUucGFnZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5h
Y3RpdmVFeGVjdXRpb25Db250ZXh0ID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnBhZ2VF
eGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgV0kucnVudGltZU1hbmFnZXIuZXZhbHVhdGVJ
bkluc3BlY3RlZFdpbmRvdygicGFzc3BocmFzZSIsIHtvYmplY3RHcm91cDogInRlc3QifSwgKHJl
bW90ZU9iamVjdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KSA9PiB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhc3NwaHJhc2UgaW4gc2VsZWN0ZWQgZnJhbWU6ICIg
KyByZW1vdGVPYmplY3QudmFsdWUpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocmVtb3RlT2JqZWN0LnZhbHVlLCAiY29sZHdhdGVyIiwgIlRoZSBwYXNzcGhyYXNl
IHNob3VsZCBtYXRjaCB0aGUgcGhyYXNlIGRlZmluZWQgaW4gdGhlIG1haW4gZnJhbWUuIik7CkBA
IC00Nyw4ICs0Nyw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dFN1YkZyYW1lIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQg
ZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyB3b3JrcyB3aGVuIGFjdGl2ZUV4ZWN1dGlvbkNvbnRl
eHQgaXMgYSBzdWJmcmFtZSBjb250ZXh0LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lOwotICAgICAgICAgICAgbGV0IHN1YmZyYW1lcyA9IFdJLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmZyYW1lcy5maWx0ZXIoKGZyYW1lKSA9PiBmcmFtZSAhPT0gbWFpbkZyYW1lKTsKKyAg
ICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7Cisg
ICAgICAgICAgICBsZXQgc3ViZnJhbWVzID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVzLmZpbHRl
cigoZnJhbWUpID0+IGZyYW1lICE9PSBtYWluRnJhbWUpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChzdWJmcmFtZXMubGVuZ3RoLCAxLCAiVGhlIHRlc3QgcGFnZSBzaG91
bGQgb25seSBoYXZlIG9uZSBzdWItZnJhbWUuIik7CiAKICAgICAgICAgICAgIFdJLnJ1bnRpbWVN
YW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBzdWJmcmFtZXNbMF0ucGFnZUV4ZWN1dGlv
bkNvbnRleHQ7CkBAIC02NCw3ICs2NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1l
OiAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dE1haW5GcmFtZUFnYWluIiwKICAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IHRoYXQgZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyB3b3JrcyB3aGVuIGFj
dGl2ZUV4ZWN1dGlvbkNvbnRleHQgc3dpdGNoZXMgYmFjayB0byB0aGUgbWFpbiBmcmFtZSBleGVj
dXRpb24gY29udGV4dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsK
KyAgICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7
CiAKICAgICAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQg
PSBtYWluRnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgICAgICAgICBXSS5ydW50aW1l
TWFuYWdlci5ldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93KCJwYXNzcGhyYXNlIiwge29iamVjdEdy
b3VwOiAidGVzdCJ9LCAocmVtb3RlT2JqZWN0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgp
ID0+IHsKQEAgLTc5LDggKzc5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0UmVtb3ZlU3ViZnJhbWUiLAogICAgICAgICBkZXNjcmlwdGlv
bjogIlRlc3QgdGhhdCBldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93IHdvcmtzIHdoZW4gdGhlIGFj
dGl2ZUV4ZWN1dGlvbkNvbnRleHQgaXMgZGVzdHJveWVkIGFuZCByZXZlcnRzIHRvIHRoZSB0b3At
bGV2ZWwgY29udGV4dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsK
LSAgICAgICAgICAgIGxldCBzdWJmcmFtZXMgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFt
ZXMuZmlsdGVyKChmcmFtZSkgPT4gZnJhbWUgIT09IG1haW5GcmFtZSk7CisgICAgICAgICAgICBs
ZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworICAgICAgICAgICAg
bGV0IHN1YmZyYW1lcyA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lcy5maWx0ZXIoKGZyYW1lKSA9
PiBmcmFtZSAhPT0gbWFpbkZyYW1lKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc3ViZnJhbWVzLmxlbmd0aCwgMSwgIlRoZSB0ZXN0IHBhZ2Ugc2hvdWxkIG9ubHkgaGF2
ZSBvbmUgc3ViLWZyYW1lLiIpOwogCiAgICAgICAgICAgICAvLyBTZXQgdGhlIGV4ZWN1dGlvbiBj
b250ZXh0IHRvIHRoZSBzdWJmcmFtZSBzbyB3ZSBjYW4gc3dpdGNoIGF3YXkgZnJvbSBpdCB3aGVu
IHRoZSBmcmFtZSBpcyBkZXRhY2hlZC4KQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICBsZXQgb2JqZWN0R3JvdXAgPSAidGVzdCI7CiAgICAgICAgICAgICBsZXQg
Y29udGV4dElkID0gV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcjsKICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBjb250ZXh0SWR9LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZXMu
bGVuZ3RoLCAxLCAiVGhlIHRlc3QgcGFnZSBzaG91bGQgbm93IGhhdmUgbm8gc3ViLWZyYW1lcy4i
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLm5ldHdvcmtN
YW5hZ2VyLmZyYW1lcy5sZW5ndGgsIDEsICJUaGUgdGVzdCBwYWdlIHNob3VsZCBub3cgaGF2ZSBu
byBzdWItZnJhbWVzLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dC5pZCwgV0kuUnVudGlt
ZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgIldoZW4gYSBzZWxl
Y3RlZCBub24tdG9wLWxldmVsIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlbW92ZWQsIHRoZSBhY3Rp
dmUgZXhlY3V0aW9uIGNvbnRleHQgc2hvdWxkIHJldmVydCB0byB0aGUgbWFpbiBmcmFtZSBjb250
ZXh0LiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvc2F2ZVJlc3VsdC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvc2F2ZVJlc3VsdC5odG1sCmluZGV4IGY3NTZi
ZjM2N2M5MTc5MmI4ZDM0YWJjYTBmYTRmYzEzMmUzZWQyYjUuLmNhMWQxNzAyNjk2ZTczODg1ZGI1
MDQyNzdiMDcxNzcyMTRjOWQxYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
dW50aW1lL3NhdmVSZXN1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGlt
ZS9zYXZlUmVzdWx0Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIigiICsgSlNPTi5zdHJpbmdpZnkoc2lt
cGxlT2JqZWN0KSArICIpIiwgY2FsbGJhY2spOwogICAgIH0KIAotICAgIGxldCBjb250ZXh0SWQg
PSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQu
aWQ7CisgICAgbGV0IGNvbnRleHRJZCA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5wYWdl
RXhlY3V0aW9uQ29udGV4dC5pZDsKICAgICBsZXQgcmVtb3RlT2JqZWN0MTsKIAogICAgIGxldCBz
dWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiUnVudGltZS5zYXZlUmVzdWx0
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS9kb21TdG9yYWdl
LWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UvZG9tU3RvcmFnZS1l
dmVudHMuaHRtbAppbmRleCAyZjM4YzE0NjliMGIxZjk2OTA2NDE5ODY1ZjUxNWM2NDgwMjEyYzUw
Li5jODQ5ODgzYzBiMGZlYTU1ZjY2Y2UxNGEwMDE0ZDViM2Y4NWY5NjM5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS9kb21TdG9yYWdlLWV2ZW50cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdG9yYWdlL2RvbVN0b3JhZ2UtZXZlbnRzLmh0bWwKQEAg
LTY5LDcgKzY5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dCBiYWNrZW5kIGdlbmVyYXRlZCBET01TdG9yYWdlIGFkZGVkLCByZW1vdmVkLCB1cGRhdGVkLCBh
bmQgY2xlYXJlZCBldmVudHMgZm9yIHNlc3Npb25TdG9yYWdlLiIsCiAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJ0cmlnZ2VyQWN0aW9ucyhzZXNzaW9uU3RvcmFnZSkiKTsKLSAgICAgICAgICAgIGxldCBzZXNz
aW9uU3RvcmFnZSA9IFdJLnN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmplY3RzLmZpbmQoKHgp
ID0+ICF4LmlzTG9jYWxTdG9yYWdlKCkpOworICAgICAgICAgICAgbGV0IHNlc3Npb25TdG9yYWdl
ID0gV0kuZG9tU3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZU9iamVjdHMuZmluZCgoeCkgPT4gIXgu
aXNMb2NhbFN0b3JhZ2UoKSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
c2Vzc2lvblN0b3JhZ2UsICJTaG91bGQgaGF2ZSBhIERPTVN0b3JhZ2VPYmplY3QgZm9yIHNlc3Np
b25TdG9yYWdlLiIpOwogICAgICAgICAgICAgdGVzdFN0b3JhZ2VFdmVudHMoc2Vzc2lvblN0b3Jh
Z2UsIHJlc29sdmUpOwogICAgICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYmFja2VuZCBnZW5lcmF0ZWQgRE9NU3RvcmFn
ZSBhZGRlZCwgcmVtb3ZlZCwgdXBkYXRlZCwgYW5kIGNsZWFyZWQgZXZlbnRzIGZvciBsb2NhbFN0
b3JhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInRyaWdnZXJBY3Rpb25zKGxvY2FsU3RvcmFnZSki
KTsKLSAgICAgICAgICAgIGxldCBsb2NhbFN0b3JhZ2UgPSBXSS5zdG9yYWdlTWFuYWdlci5kb21T
dG9yYWdlT2JqZWN0cy5maW5kKCh4KSA9PiB4LmlzTG9jYWxTdG9yYWdlKCkpOworICAgICAgICAg
ICAgbGV0IGxvY2FsU3RvcmFnZSA9IFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmpl
Y3RzLmZpbmQoKHgpID0+IHguaXNMb2NhbFN0b3JhZ2UoKSk7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQobG9jYWxTdG9yYWdlLCAiU2hvdWxkIGhhdmUgYSBET01TdG9yYWdl
T2JqZWN0IGZvciBsb2NhbFN0b3JhZ2UuIik7CiAgICAgICAgICAgICB0ZXN0U3RvcmFnZUV2ZW50
cyhsb2NhbFN0b3JhZ2UsIHJlc29sdmUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2NvbnNvbGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci93b3JrZXIvY29uc29sZS1iYXNpYy5odG1sCmluZGV4IGFkMTgzNzc0NjY4MTcxOThh
YjdhMTcwNTBlZWMxOTMyMmIxYmM2OWUuLmExZTBjNWNhZDA4M2I5OGVhNGU4YjkyMDQxYTg0ODg2
ZTMxZmI0OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvY29uc29s
ZS1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvY29uc29sZS1i
YXNpYy5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuY29uc29sZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRk
ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxldCBtZXNzYWdlID0gZXZlbnQuZGF0YS5t
ZXNzYWdlOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtZXNzYWdlIGluc3RhbmNlb2Yg
V0kuQ29uc29sZU1lc3NhZ2UpOwogICAgICAgICBpZiAodHJpZ2dlck5leHRDb25zb2xlTWVzc2Fn
ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvcmVzb3VyY2VzLWlu
LXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9yZXNvdXJjZXMtaW4t
d29ya2VyLmh0bWwKaW5kZXggMjg2Nzc3MWVmOTg2MWIwOTcxNDNmZDQwNDBiYTRjMWFiN2M2ODc0
NC4uM2RhMjNkODlkYjIxYmMzY2JlYjMzMzAwM2Y3YTY2MTZkOTk2YzFiYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9yZXNvdXJjZXMtaW4td29ya2VyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9yZXNvdXJjZXMtaW4td29ya2VyLmh0bWwK
QEAgLTEwOSw3ICsxMDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHJlc291cmNlIGluc3RhbmNlb2YgV0kuUmVzb3VyY2Us
ICJGcmFtZSBzaG91bGQgZGlzcGF0Y2ggUmVzb3VyY2VXYXNBZGRlZCBldmVudC4iKTsKICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXNvdXJjZS50eXBlLCBX
SS5SZXNvdXJjZS5UeXBlLlhIUiwgIlJlc291cmNlIHNob3VsZCBiZSBYSFIuIik7CiAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3VyY2UudGFyZ2V0LCBt
YWluVGFyZ2V0LCAiUmVzb3VyY2Ugc2hvdWxkIGJlIHRpZWQgdG8gdGhlIE1haW4gVGFyZ2V0LiIp
OwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc291cmNl
LnBhcmVudEZyYW1lLCBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUsICJSZXNvdXJj
ZSBwYXJlbnRGcmFtZSBpcyB0aGUgbWFpbiBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXNvdXJjZS5wYXJlbnRGcmFtZSwgV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lLCAiUmVzb3VyY2UgcGFyZW50RnJhbWUgaXMgdGhlIG1haW4gZnJh
bWUuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwod29y
a2VyVGFyZ2V0LnJlc291cmNlQ29sbGVjdGlvbi5zaXplLCAyLCAiV29ya2VyIFRhcmdldCBzaG91
bGQgc3RpbGwgaGF2ZSAyIHJlc291cmNlcy4iKTsKICAgICAgICAgICAgICAgICAgICAgZHVtcFdv
cmtlclJlc291cmNlcygpOwogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC0xNDks
NyArMTQ5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChyZXNvdXJjZSBpbnN0YW5jZW9mIFdJLlJlc291cmNlLCAiRnJhbWUg
c2hvdWxkIGRpc3BhdGNoIFJlc291cmNlV2FzQWRkZWQgZXZlbnQuIik7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgcmVzb3VyY2UgdHlwZSBmb3IgRmV0Y2ggdGhhdCBpcyBub3Qg
WEhSPwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc291
cmNlLnRhcmdldCwgbWFpblRhcmdldCwgIlJlc291cmNlIHNob3VsZCBiZSB0aWVkIHRvIHRoZSBN
YWluIFRhcmdldC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChyZXNvdXJjZS5wYXJlbnRGcmFtZSwgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZy
YW1lLCAiUmVzb3VyY2UgcGFyZW50RnJhbWUgaXMgdGhlIG1haW4gZnJhbWUuIik7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3VyY2UucGFyZW50RnJh
bWUsIFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSwgIlJlc291cmNlIHBhcmVudEZyYW1lIGlz
IHRoZSBtYWluIGZyYW1lLiIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHdvcmtlclRhcmdldC5yZXNvdXJjZUNvbGxlY3Rpb24uc2l6ZSwgMywgIldvcmtl
ciBUYXJnZXQgc2hvdWxkIHN0aWxsIGhhdmUgMyByZXNvdXJjZXMuIik7CiAgICAgICAgICAgICAg
ICAgICAgIGR1bXBXb3JrZXJSZXNvdXJjZXMoKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351435</attachid>
            <date>2018-10-02 13:24:05 -0700</date>
            <delta_ts>2018-10-02 15:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190160-20181002132404.patch</filename>
            <type>text/plain</type>
            <size>562721</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGZkNDNkMzY0ZjI4ZDVhZTE5OGQ5NzhiYjFjN2Yx
ZTZmYzAxOTZlNmUuLjBlNDYwNjc4YjUzYmExNmY5OWE0MmY2MTFhYTI0NmVhNDA4ZjUwOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxOC0xMC0wMiAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
cmVuYW1lIGZyb250ZW5kIG1hbmFnZXJzIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIGJhY2tl
bmQgYWdlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTAxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rl
c3QvVGVzdC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jh
c2UvRE9NVXRpbGl0aWVzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DU1NNYW5hZ2VyLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanM6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Mb2dNYW5h
Z2VyLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJN
YW5hZ2VyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdl
ci5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcy4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanM6IFJl
bW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFzZU1hbmFn
ZXIuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvSEFSQnVpbGRlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdD
b250cm9sbGVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29y
a01hbmFnZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcy4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1hcE1hbmFnZXIuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9ydGVyLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5LmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NhbGxGcmFtZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ29uc29sZU1lc3NhZ2UuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NVHJlZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFz
aGJvYXJkLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1By
b3RvY29sL01haW5UYXJnZXQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9O
ZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdl
T2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmpl
Y3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc1RyZWVFbGVtZW50Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0V2ZW50QnJlYWtwb2ludFBvcG92ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9HZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09wZW5SZXNvdXJjZURpYWxvZy5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHls
ZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VT
aWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFp
bHNQYW5lbC5qczoKKyAgICAgICAgKiBXZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3Rv
clVJLnZjeHByb2o6CisgICAgICAgICogV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0
b3JVSS52Y3hwcm9qLmZpbHRlcnM6CisKIDIwMTgtMTAtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbnZhczogcmVwbGFjZSBj
b25zdGFudCBudW1iZXJzIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBuYW1lIG9uIFdlYkdMIGNvbnRl
eHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L0RPTVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvRE9NVXRpbGl0aWVzLmpzCmluZGV4IDViYjUyMWQ1ODZiODdiOGNmYTgzMTUzMzRlM2U0NmVi
ZTcwODEwMjIuLjUwNjcxMGExZjU0OGZmNzdhOTk3NTJlZTdlOWU2NWFmNjRkMjhmYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0
aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9N
VXRpbGl0aWVzLmpzCkBAIC03Nyw5ICs3Nyw5IEBAIFdJLmxpbmtpZnlOb2RlUmVmZXJlbmNlRWxl
bWVudCA9IGZ1bmN0aW9uKG5vZGUsIGVsZW1lbnQsIG9wdGlvbnMgPSB7fSkKICAgICBpZiAoKG5v
ZGVUeXBlICE9PSBOb2RlLkRPQ1VNRU5UX05PREUgfHwgbm9kZS5wYXJlbnROb2RlKSAmJiBub2Rl
VHlwZSAhPT0gTm9kZS5URVhUX05PREUpCiAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
bm9kZS1saW5rIik7CiAKLSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV0ku
ZG9tVHJlZU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQuYmluZChXSS5kb21UcmVlTWFuYWdlciwgbm9k
ZS5pZCkpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgV0kuZG9t
VHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZS5iaW5kKFdJLmRvbVRyZWVNYW5hZ2VyLCBub2Rl
LmlkLCAiYWxsIikpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBX
SS5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKFdJLmRvbVRyZWVNYW5h
Z2VyKSk7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdJLmRvbU1hbmFn
ZXIuaW5zcGVjdEVsZW1lbnQuYmluZChXSS5kb21NYW5hZ2VyLCBub2RlLmlkKSk7CisgICAgZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdo
dERPTU5vZGUuYmluZChXSS5kb21NYW5hZ2VyLCBub2RlLmlkLCAiYWxsIikpOworICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBXSS5kb21NYW5hZ2VyLmhpZGVET01Ob2Rl
SGlnaGxpZ2h0LmJpbmQoV0kuZG9tTWFuYWdlcikpOwogICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY29udGV4dG1lbnUiLCAoZXZlbnQpID0+IHsKICAgICAgICAgbGV0IGNvbnRleHRNZW51
ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgV0kuYXBw
ZW5kQ29udGV4dE1lbnVJdGVtc0ZvckRPTU5vZGUoY29udGV4dE1lbnUsIG5vZGUsIG9wdGlvbnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CmluZGV4IDViYmY1MDRlMjNiOTQwYWZjNWNiMDBkNjAzMjI5MTNiYTFjMzBlZjkuLjNmZjM0ZDY4
OTBhZTdhNWMzNmQyZjViOTBlYjVkZDQzZTIxMTExNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTExMCwxMiArMTEwLDEzIEBA
IFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBhcyBldmVudCBsaXN0ZW5lcnMgb24gdGhl
c2UgbWFuYWdlcnMuCiAgICAgdGhpcy50YXJnZXRNYW5hZ2VyID0gbmV3IFdJLlRhcmdldE1hbmFn
ZXI7CiAgICAgdGhpcy5icmFuY2hNYW5hZ2VyID0gbmV3IFdJLkJyYW5jaE1hbmFnZXI7Ci0gICAg
dGhpcy5mcmFtZVJlc291cmNlTWFuYWdlciA9IG5ldyBXSS5GcmFtZVJlc291cmNlTWFuYWdlcjsK
LSAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyID0gbmV3IFdJLlN0b3JhZ2VNYW5hZ2VyOwotICAgIHRo
aXMuZG9tVHJlZU1hbmFnZXIgPSBuZXcgV0kuRE9NVHJlZU1hbmFnZXI7Ci0gICAgdGhpcy5jc3NT
dHlsZU1hbmFnZXIgPSBuZXcgV0kuQ1NTU3R5bGVNYW5hZ2VyOwotICAgIHRoaXMubG9nTWFuYWdl
ciA9IG5ldyBXSS5Mb2dNYW5hZ2VyOwotICAgIHRoaXMuaXNzdWVNYW5hZ2VyID0gbmV3IFdJLklz
c3VlTWFuYWdlcjsKKyAgICB0aGlzLm5ldHdvcmtNYW5hZ2VyID0gbmV3IFdJLk5ldHdvcmtNYW5h
Z2VyOworICAgIHRoaXMuZG9tU3RvcmFnZU1hbmFnZXIgPSBuZXcgV0kuRE9NU3RvcmFnZU1hbmFn
ZXI7CisgICAgdGhpcy5kYXRhYmFzZU1hbmFnZXIgPSBuZXcgV0kuRGF0YWJhc2VNYW5hZ2VyOwor
ICAgIHRoaXMuaW5kZXhlZERCTWFuYWdlciA9IG5ldyBXSS5JbmRleGVkREJNYW5hZ2VyOworICAg
IHRoaXMuZG9tTWFuYWdlciA9IG5ldyBXSS5ET01NYW5hZ2VyOworICAgIHRoaXMuY3NzTWFuYWdl
ciA9IG5ldyBXSS5DU1NNYW5hZ2VyOworICAgIHRoaXMuY29uc29sZU1hbmFnZXIgPSBuZXcgV0ku
Q29uc29sZU1hbmFnZXI7CiAgICAgdGhpcy5ydW50aW1lTWFuYWdlciA9IG5ldyBXSS5SdW50aW1l
TWFuYWdlcjsKICAgICB0aGlzLmhlYXBNYW5hZ2VyID0gbmV3IFdJLkhlYXBNYW5hZ2VyOwogICAg
IHRoaXMubWVtb3J5TWFuYWdlciA9IG5ldyBXSS5NZW1vcnlNYW5hZ2VyOwpAQCAtMTI0LDcgKzEy
NSw2IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmRlYnVnZ2VyTWFuYWdlciA9
IG5ldyBXSS5EZWJ1Z2dlck1hbmFnZXI7CiAgICAgdGhpcy5zb3VyY2VNYXBNYW5hZ2VyID0gbmV3
IFdJLlNvdXJjZU1hcE1hbmFnZXI7CiAgICAgdGhpcy5sYXllclRyZWVNYW5hZ2VyID0gbmV3IFdJ
LkxheWVyVHJlZU1hbmFnZXI7Ci0gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VyID0gbmV3IFdJLkRh
c2hib2FyZE1hbmFnZXI7CiAgICAgdGhpcy5wcm9iZU1hbmFnZXIgPSBuZXcgV0kuUHJvYmVNYW5h
Z2VyOwogICAgIHRoaXMud29ya2VyTWFuYWdlciA9IG5ldyBXSS5Xb3JrZXJNYW5hZ2VyOwogICAg
IHRoaXMuZG9tRGVidWdnZXJNYW5hZ2VyID0gbmV3IFdJLkRPTURlYnVnZ2VyTWFuYWdlcjsKQEAg
LTE0MywxMiArMTQzLDEyIEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBSZWdpc3Rl
ciBmb3IgZXZlbnRzLgogICAgIHRoaXMuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJEaWRQYXVzZSwg
dGhpcyk7CiAgICAgdGhpcy5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJEaWRSZXN1bWUsIHRoaXMp
OwotICAgIHRoaXMuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFu
YWdlci5FdmVudC5JbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCwgdGhpcy5faW5zcGVjdE1vZGVTdGF0
ZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5ET01Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzLl9kb21O
b2RlV2FzSW5zcGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3Bl
Y3RlZCwgdGhpcy5fc3RvcmFnZVdhc0luc3BlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5zdG9yYWdl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNl
V2FzSW5zcGVjdGVkLCB0aGlzLl9zdG9yYWdlV2FzSW5zcGVjdGVkLCB0aGlzKTsKLSAgICB0aGlz
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWVSZXNvdXJjZU1h
bmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2Us
IHRoaXMpOwotICAgIHRoaXMuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFtZVdh
c0FkZGVkLCB0aGlzKTsKKyAgICB0aGlzLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01NYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkLCB0aGlzLl9pbnNwZWN0TW9k
ZVN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgdGhpcy5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRE9NTWFuYWdlci5FdmVudC5ET01Ob2RlV2FzSW5zcGVjdGVkLCB0aGlzLl9kb21Ob2Rl
V2FzSW5zcGVjdGVkLCB0aGlzKTsKKyAgICB0aGlzLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZVdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAgdGhpcy5k
YXRhYmFzZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQu
RGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMuX2RhdGFiYXNlV2FzSW5zcGVjdGVkLCB0aGlzKTsK
KyAgICB0aGlzLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRo
aXMpOworICAgIHRoaXMubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3Jr
TWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsK
IAogICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogCkBAIC0z
OTMsOCArMzkzLDEzIEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5f
dXBkYXRlRG93bmxvYWRUb29sYmFyQnV0dG9uKCk7CiAgICAgdGhpcy5fdXBkYXRlSW5zcGVjdE1v
ZGVUb29sYmFyQnV0dG9uKCk7CiAKKyAgICB0aGlzLl9kYXNoYm9hcmRzID0geworICAgICAgICBk
ZWZhdWx0OiBuZXcgV0kuRGVmYXVsdERhc2hib2FyZCwKKyAgICAgICAgZGVidWdnZXI6IG5ldyBX
SS5EZWJ1Z2dlckRhc2hib2FyZCwKKyAgICB9OworCiAgICAgdGhpcy5fZGFzaGJvYXJkQ29udGFp
bmVyID0gbmV3IFdJLkRhc2hib2FyZENvbnRhaW5lclZpZXc7Ci0gICAgdGhpcy5fZGFzaGJvYXJk
Q29udGFpbmVyLnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5kYXNo
Ym9hcmRNYW5hZ2VyLmRhc2hib2FyZHMuZGVmYXVsdCk7CisgICAgdGhpcy5fZGFzaGJvYXJkQ29u
dGFpbmVyLnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5fZGFzaGJv
YXJkcy5kZWZhdWx0KTsKIAogICAgIHRoaXMudG9vbGJhci5hZGRUb29sYmFySXRlbSh0aGlzLl9j
bG9zZVRvb2xiYXJCdXR0b24sIFdJLlRvb2xiYXIuU2VjdGlvbi5Db250cm9sKTsKIApAQCAtNjg4
LDcgKzY5Myw3IEBAIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zID0gZnVuY3Rpb24oZG9tYWlucykK
IAogV0kudXBkYXRlV2luZG93VGl0bGUgPSBmdW5jdGlvbigpCiB7Ci0gICAgdmFyIG1haW5GcmFt
ZSA9IHRoaXMuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgIHZhciBtYWluRnJh
bWUgPSB0aGlzLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICBpZiAoIW1haW5GcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC04MTIsNyArODE3LDcgQEAgV0kub3BlblVSTCA9IGZ1bmN0
aW9uKHVybCwgZnJhbWUsIG9wdGlvbnMgPSB7fSkKIAogICAgIGxldCBzZWFyY2hDaGlsZEZyYW1l
cyA9IGZhbHNlOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgZnJhbWUgPSB0aGlzLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgZnJhbWUgPSB0aGlzLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgc2VhcmNoQ2hpbGRGcmFtZXMgPSB0cnVlOwogICAg
IH0KIApAQCAtMTE0OSwxNSArMTE1NCwxNSBAQCBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QgPSBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgY29va2llLCBvcHRpb25zID0ge30pCiAKIFdJLnNo
b3dNYWluRnJhbWVET01UcmVlID0gZnVuY3Rpb24obm9kZVRvU2VsZWN0LCBvcHRpb25zID0ge30p
CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
KTsKLSAgICBpZiAoIVdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSkKKyAgICBjb25z
b2xlLmFzc2VydChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOworICAgIGlmICghV0kubmV0
d29ya01hbmFnZXIubWFpbkZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgdGhpcy5zaG93UmVw
cmVzZW50ZWRPYmplY3QoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWUs
IHtub2RlVG9TZWxlY3R9LCBvcHRpb25zKTsKKyAgICB0aGlzLnNob3dSZXByZXNlbnRlZE9iamVj
dChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuZG9tVHJlZSwge25vZGVUb1NlbGVjdH0sIG9w
dGlvbnMpOwogfTsKIAogV0kuc2hvd1NvdXJjZUNvZGVGb3JGcmFtZSA9IGZ1bmN0aW9uKGZyYW1l
SWRlbnRpZmllciwgb3B0aW9ucyA9IHt9KQogewotICAgIHZhciBmcmFtZSA9IFdJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkZW50aWZpZXIpOworICAgIHZh
ciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkZW50
aWZpZXIpOwogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVy
VG9TaG93U291cmNlQ29kZVdoZW5BdmFpbGFibGUgPSBmcmFtZUlkZW50aWZpZXI7CiAgICAgICAg
IHJldHVybjsKQEAgLTEzNTEsMTQgKzEzNTYsMTQgQEAgV0kuX2RlYnVnZ2VyRGlkUGF1c2UgPSBm
dW5jdGlvbihldmVudCkKIHsKICAgICB0aGlzLnNob3dEZWJ1Z2dlclRhYih7c2hvd1Njb3BlQ2hh
aW5TaWRlYmFyOiBXSS5zZXR0aW5ncy5zaG93U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKIAot
ICAgIHRoaXMuX2Rhc2hib2FyZENvbnRhaW5lci5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2Vu
dGVkT2JqZWN0KHRoaXMuZGFzaGJvYXJkTWFuYWdlci5kYXNoYm9hcmRzLmRlYnVnZ2VyKTsKKyAg
ICB0aGlzLl9kYXNoYm9hcmRDb250YWluZXIuc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRl
ZE9iamVjdCh0aGlzLl9kYXNoYm9hcmRzLmRlYnVnZ2VyKTsKIAogICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdC5icmluZ1RvRnJvbnQoKTsKIH07CiAKIFdJLl9kZWJ1Z2dlckRpZFJlc3VtZSA9IGZ1
bmN0aW9uKGV2ZW50KQogewotICAgIHRoaXMuX2Rhc2hib2FyZENvbnRhaW5lci5jbG9zZURhc2hi
b2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLmRhc2hib2FyZE1hbmFnZXIuZGFzaGJv
YXJkcy5kZWJ1Z2dlcik7CisgICAgdGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyLmNsb3NlRGFzaGJv
YXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuX2Rhc2hib2FyZHMuZGVidWdnZXIpOwog
fTsKIAogV0kuX2ZyYW1lV2FzQWRkZWQgPSBmdW5jdGlvbihldmVudCkKQEAgLTE3NzcsMTUgKzE3
ODIsMjEgQEAgV0kuX21vdmVXaW5kb3dNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKICAgICBX
SS5lbGVtZW50RHJhZ1N0YXJ0KGV2ZW50LnRhcmdldCwgdG9vbGJhckRyYWcsIHRvb2xiYXJEcmFn
RW5kLCBldmVudCwgImRlZmF1bHQiKTsKIH07CiAKLVdJLl9zdG9yYWdlV2FzSW5zcGVjdGVkID0g
ZnVuY3Rpb24oZXZlbnQpCitXSS5fZG9tU3RvcmFnZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2
ZW50KQogewogICAgIHRoaXMuc2hvd1N0b3JhZ2VUYWIoKTsKICAgICB0aGlzLnNob3dSZXByZXNl
bnRlZE9iamVjdChldmVudC5kYXRhLmRvbVN0b3JhZ2UsIG51bGwsIHtpZ25vcmVTZWFyY2hUYWI6
IHRydWV9KTsKIH07CiAKK1dJLl9kYXRhYmFzZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50
KQoreworICAgIHRoaXMuc2hvd1N0b3JhZ2VUYWIoKTsKKyAgICB0aGlzLnNob3dSZXByZXNlbnRl
ZE9iamVjdChldmVudC5kYXRhLmRhdGFiYXNlLCBudWxsLCB7aWdub3JlU2VhcmNoVGFiOiB0cnVl
fSk7Cit9OworCiBXSS5fZG9tTm9kZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogewot
ICAgIHRoaXMuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMoZXZl
bnQuZGF0YS5ub2RlLmlkKTsKKyAgICB0aGlzLmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUZv
clR3b1NlY29uZHMoZXZlbnQuZGF0YS5ub2RlLmlkKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5icmluZ1RvRnJvbnQoKTsKIApAQCAtMTc5NSwxMiArMTgwNiwxMiBAQCBXSS5fZG9tTm9k
ZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5faW5zcGVjdE1vZGVTdGF0ZUNo
YW5nZWQgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICB0aGlzLl9pbnNwZWN0TW9kZVRvb2xiYXJC
dXR0b24uYWN0aXZhdGVkID0gdGhpcy5kb21UcmVlTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7
CisgICAgdGhpcy5faW5zcGVjdE1vZGVUb29sYmFyQnV0dG9uLmFjdGl2YXRlZCA9IHRoaXMuZG9t
TWFuYWdlci5pbnNwZWN0TW9kZUVuYWJsZWQ7CiB9OwogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUg
PSBmdW5jdGlvbihldmVudCkKIHsKLSAgICB0aGlzLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RNb2Rl
RW5hYmxlZCA9ICF0aGlzLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZDsKKyAgICB0
aGlzLmRvbU1hbmFnZXIuaW5zcGVjdE1vZGVFbmFibGVkID0gIXRoaXMuZG9tTWFuYWdlci5pbnNw
ZWN0TW9kZUVuYWJsZWQ7CiB9OwogCiBXSS5fZG93bmxvYWRXZWJBcmNoaXZlID0gZnVuY3Rpb24o
ZXZlbnQpCkBAIC0xODY5LDcgKzE4ODAsNyBAQCBXSS5fdXBkYXRlSW5zcGVjdE1vZGVUb29sYmFy
QnV0dG9uID0gZnVuY3Rpb24oKQogCiBXSS5fdG9nZ2xlSW5zcGVjdE1vZGUgPSBmdW5jdGlvbihl
dmVudCkKIHsKLSAgICB0aGlzLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZCA9ICF0
aGlzLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RNb2RlRW5hYmxlZDsKKyAgICB0aGlzLmRvbU1hbmFn
ZXIuaW5zcGVjdE1vZGVFbmFibGVkID0gIXRoaXMuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVuYWJs
ZWQ7CiB9OwogCiBXSS5fc2hvd0NvbnNvbGVUYWIgPSBmdW5jdGlvbihldmVudCkKQEAgLTIwMDcs
NyArMjAxOCw3IEBAIFdJLl9jbGVhciA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIGlmICghY29udGVu
dFZpZXcgfHwgdHlwZW9mIGNvbnRlbnRWaWV3LmhhbmRsZUNsZWFyU2hvcnRjdXQgIT09ICJmdW5j
dGlvbiIpIHsKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29udGVudCB2aWV3IGlzIHVuYWJs
ZSB0byBoYW5kbGUgdGhpcyBldmVudCwgY2xlYXIgdGhlIGNvbnNvbGUgdG8gcmVzZXQKICAgICAg
ICAgLy8gdGhlIGRhc2hib2FyZCBjb3VudGVycy4KLSAgICAgICAgdGhpcy5sb2dNYW5hZ2VyLnJl
cXVlc3RDbGVhck1lc3NhZ2VzKCk7CisgICAgICAgIHRoaXMuY29uc29sZU1hbmFnZXIucmVxdWVz
dENsZWFyTWVzc2FnZXMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM3NCw3ICsy
Mzg1LDcgQEAgV0kubGlua2lmeUVsZW1lbnQgPSBmdW5jdGlvbihsaW5rRWxlbWVudCwgc291cmNl
Q29kZUxvY2F0aW9uLCBvcHRpb25zID0ge30pIHsKIAogV0kuc291cmNlQ29kZUZvclVSTCA9IGZ1
bmN0aW9uKHVybCkKIHsKLSAgICB2YXIgc291cmNlQ29kZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgdmFyIHNvdXJjZUNvZGUgPSBXSS5uZXR3b3Jr
TWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwogICAgIGlmICghc291cmNlQ29kZSkgewogICAg
ICAgICBzb3VyY2VDb2RlID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdHNGb3JVUkwodXJsLCBX
SS5hc3N1bWluZ01haW5UYXJnZXQoKSlbMF07CiAgICAgICAgIGlmIChzb3VyY2VDb2RlKQpAQCAt
MjYwMCw3ICsyNjExLDcgQEAgV0kuYXJjaGl2ZU1haW5GcmFtZSA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBtYWluRnJh
bWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIGxldCBtYWlu
RnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAgICAgIGxldCBhcmNoaXZl
TmFtZSA9IG1haW5GcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0IHx8IG1haW5G
cmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWUgfHwgIkFyY2hpdmUiOwogICAgICAgICBsZXQg
dXJsID0gIndlYi1pbnNwZWN0b3I6Ly8vIiArIGVuY29kZVVSSShhcmNoaXZlTmFtZSkgKyAiLndl
YmFyY2hpdmUiOwogCkBAIC0yNjEzLDEwICsyNjI0LDEwIEBAIFdJLmNhbkFyY2hpdmVNYWluRnJh
bWUgPSBmdW5jdGlvbigpCiAgICAgaWYgKHRoaXMuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9
PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
ICghV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lIHx8ICFXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlKQorICAgIGlmICghV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lIHx8ICFXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gV0kuUmVzb3VyY2UudHlwZUZy
b21NSU1FVHlwZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNl
Lm1pbWVUeXBlKSA9PT0gV0kuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudDsKKyAgICByZXR1cm4gV0ku
UmVzb3VyY2UudHlwZUZyb21NSU1FVHlwZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFp
blJlc291cmNlLm1pbWVUeXBlKSA9PT0gV0kuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudDsKIH07CiAK
IFdJLmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lciA9IGZ1bmN0aW9uKGxpc3RlbmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwppbmRleCBiMzEzZGU5
NDdkOGE3ZDcyOGM5YzQ0Y2VkM2EyMWZjOWU1MTM3YzQxLi5mMTM0MWIyM2ViNTE0ODQ4N2U5Mzdj
MWU2Mjg2NjE1ZWUxZWQ1MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5qcwpAQCAtNzIsNyArNzIsNyBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChmcmFtZUlkLCBtYW5pZmVzdFVSTCwg
c3RhdHVzKQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOworICAgICAgICB2YXIgZnJhbWUgPSBXSS5u
ZXR3b3JrTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CiAgICAgICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBXSS5BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB2YXIgZnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50
aWZpZXIoZnJhbWVJZCk7CisgICAgICAgIHZhciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZy
YW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTM3LDcgKzEzNyw3IEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lc1dp
dGhNYW5pZmVzdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBmcmFtZSA9IFdJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZXNXaXRoTWFuaWZlc3Rz
W2ldLmZyYW1lSWQpOworICAgICAgICAgICAgdmFyIGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIu
ZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lc1dpdGhNYW5pZmVzdHNbaV0uZnJhbWVJZCk7CiAgICAg
ICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ1NTTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzkyYTIzNGY4NjBjYTlhNTdkOTA0OTI1YWYw
ZTk0NDE4ZDFjZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpAQCAtMCwwICsxLDU2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwor
ICAgICAgICBpZiAod2luZG93LkNTU0FnZW50KQorICAgICAgICAgICAgQ1NTQWdlbnQuZW5hYmxl
KCk7CisKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7
CisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUmVzb3Vy
Y2VXYXNBZGRlZCwgdGhpcy5fcmVzb3VyY2VBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLlJlc291
cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdl
LCB0aGlzLl9yZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5SZXNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LlR5cGVEaWRDaGFuZ2UsIHRo
aXMuX3Jlc291cmNlVHlwZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgV0kuRE9NTm9kZS5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMu
X25vZGVBdHRyaWJ1dGVzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NTm9kZS5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fbm9k
ZUF0dHJpYnV0ZXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQsIHRo
aXMuX25vZGVQc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9j
b2xvckZvcm1hdFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiZGVmYXVsdC1jb2xvci1mb3JtYXQi
LCBXSS5Db2xvci5Gb3JtYXQuT3JpZ2luYWwpOworCisgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJ
ZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJM
TWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OworCisgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogTGVnYWN5IGJhY2tlbmRzIGRpZCBub3Qgc2Vu
ZCBzdHlsZXNoZWV0CisgICAgICAgIC8vIGFkZGVkL3JlbW92ZWQgZXZlbnRzIGFuZCBtdXN0IGJl
IGZldGNoZWQgbWFudWFsbHkuCisgICAgICAgIHRoaXMuX2ZldGNoZWRJbml0aWFsU3R5bGVTaGVl
dHMgPSB3aW5kb3cuQ1NTQWdlbnQgJiYgd2luZG93LkNTU0FnZW50Lmhhc0V2ZW50KCJzdHlsZVNo
ZWV0QWRkZWQiKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBwcm90b2Nv
bFN0eWxlU2hlZXRPcmlnaW5Ub0VudW0ob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChv
cmlnaW4pIHsKKyAgICAgICAgY2FzZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLlJlZ3VsYXI6
CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLkF1dGhvcjsKKyAgICAg
ICAgY2FzZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLlVzZXI6CisgICAgICAgICAgICByZXR1
cm4gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLlVzZXI7CisgICAgICAgIGNhc2UgQ1NTQWdlbnQuU3R5
bGVTaGVldE9yaWdpbi5Vc2VyQWdlbnQ6CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTU3R5bGVT
aGVldC5UeXBlLlVzZXJBZ2VudDsKKyAgICAgICAgY2FzZSBDU1NBZ2VudC5TdHlsZVNoZWV0T3Jp
Z2luLkluc3BlY3RvcjoKKyAgICAgICAgICAgIHJldHVybiBXSS5DU1NTdHlsZVNoZWV0LlR5cGUu
SW5zcGVjdG9yOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZmFsc2UsICJVbmtub3duIENTUy5TdHlsZVNoZWV0T3JpZ2luIiwgb3JpZ2luKTsKKyAgICAgICAg
ICAgIHJldHVybiBDU1NBZ2VudC5TdHlsZVNoZWV0T3JpZ2luLlJlZ3VsYXI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBzdGF0aWMgcHJvdG9jb2xNZWRpYVNvdXJjZVRvRW51bShzb3VyY2UpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKHNvdXJjZSkgeworICAgICAgICBjYXNlIENTU0FnZW50LkNT
U01lZGlhU291cmNlLk1lZGlhUnVsZToKKyAgICAgICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5U
eXBlLk1lZGlhUnVsZTsKKyAgICAgICAgY2FzZSBDU1NBZ2VudC5DU1NNZWRpYVNvdXJjZS5JbXBv
cnRSdWxlOgorICAgICAgICAgICAgcmV0dXJuIFdJLkNTU01lZGlhLlR5cGUuSW1wb3J0UnVsZTsK
KyAgICAgICAgY2FzZSBDU1NBZ2VudC5DU1NNZWRpYVNvdXJjZS5MaW5rZWRTaGVldDoKKyAgICAg
ICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5UeXBlLkxpbmtlZFN0eWxlU2hlZXQ7CisgICAgICAg
IGNhc2UgQ1NTQWdlbnQuQ1NTTWVkaWFTb3VyY2UuSW5saW5lU2hlZXQ6CisgICAgICAgICAgICBy
ZXR1cm4gV0kuQ1NTTWVkaWEuVHlwZS5JbmxpbmVTdHlsZVNoZWV0OworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmtub3duIENTUy5DU1NNZWRp
YVNvdXJjZSIsIHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTTWVkaWEuVHlwZS5N
ZWRpYVJ1bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBw
cmVmZXJyZWRDb2xvckZvcm1hdCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JG
b3JtYXRTZXR0aW5nLnZhbHVlOworICAgIH0KKworICAgIGdldCBzdHlsZVNoZWV0cygpCisgICAg
eworICAgICAgICByZXR1cm4gWy4uLnRoaXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLnZhbHVl
cygpXTsKKyAgICB9CisKKyAgICBjYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHdpbmRvdy5DU1NBZ2VudCAmJiAhIUNTU0FnZW50LmZvcmNlUHNldWRvU3RhdGU7
CisgICAgfQorCisgICAgcHJvcGVydHlOYW1lSGFzT3RoZXJWZW5kb3JQcmVmaXgobmFtZSkKKyAg
ICB7CisgICAgICAgIGlmICghbmFtZSB8fCBuYW1lLmxlbmd0aCA8IDQgfHwgbmFtZS5jaGFyQXQo
MCkgIT09ICItIikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbWF0
Y2ggPSBuYW1lLm1hdGNoKC9eKD86LW1vei18LW1zLXwtby18LWVwdWItKS8pOworICAgICAgICBp
ZiAoIW1hdGNoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHByb3BlcnR5VmFsdWVIYXNPdGhlclZlbmRvcktleXdvcmQodmFs
dWUpCisgICAgeworICAgICAgICB2YXIgbWF0Y2ggPSB2YWx1ZS5tYXRjaCgvKD86LW1vei18LW1z
LXwtby18LWVwdWItKVstXHddKy8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhbm9u
aWNhbE5hbWVGb3JQcm9wZXJ0eU5hbWUobmFtZSkKKyAgICB7CisgICAgICAgIGlmICghbmFtZSB8
fCBuYW1lLmxlbmd0aCA8IDggfHwgbmFtZS5jaGFyQXQoMCkgIT09ICItIikKKyAgICAgICAgICAg
IHJldHVybiBuYW1lOworCisgICAgICAgIHZhciBtYXRjaCA9IG5hbWUubWF0Y2goL14oPzotd2Vi
a2l0LXwta2h0bWwtfC1hcHBsZS0pKC4rKS8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAg
ICAgICAgcmV0dXJuIG5hbWU7CisKKyAgICAgICAgcmV0dXJuIG1hdGNoWzFdOworICAgIH0KKwor
ICAgIGZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
ZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9mZXRjaEluZm9Gb3JBbGxTdHlsZVNoZWV0cyhmdW5jdGlvbigpIHt9KTsKKyAgICB9
CisKKyAgICBzdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIGxldCBz
dHlsZVNoZWV0ID0gdGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAuZ2V0KGlkKTsKKyAgICAg
ICAgaWYgKHN0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm4gc3R5bGVTaGVldDsKKworICAg
ICAgICBzdHlsZVNoZWV0ID0gbmV3IFdJLkNTU1N0eWxlU2hlZXQoaWQpOworICAgICAgICB0aGlz
Ll9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5zZXQoaWQsIHN0eWxlU2hlZXQpOworICAgICAgICBy
ZXR1cm4gc3R5bGVTaGVldDsKKyAgICB9CisKKyAgICBzdHlsZXNGb3JOb2RlKG5vZGUpCisgICAg
eworICAgICAgICBpZiAobm9kZS5pZCBpbiB0aGlzLl9ub2RlU3R5bGVzTWFwKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX25vZGVTdHlsZXNNYXBbbm9kZS5pZF07CisKKyAgICAgICAgdmFyIHN0
eWxlcyA9IG5ldyBXSS5ET01Ob2RlU3R5bGVzKG5vZGUpOworICAgICAgICB0aGlzLl9ub2RlU3R5
bGVzTWFwW25vZGUuaWRdID0gc3R5bGVzOworICAgICAgICByZXR1cm4gc3R5bGVzOworICAgIH0K
KworICAgIHByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShmcmFtZSwgY2FsbGJh
Y2ssIGRvTm90Q3JlYXRlSWZNaXNzaW5nKQorICAgIHsKKyAgICAgICAgdmFyIGluc3BlY3RvclN0
eWxlU2hlZXRzID0gdGhpcy5faW5zcGVjdG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSk7Cisg
ICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgaW5zcGVjdG9yU3R5bGVTaGVldHMpIHsKKyAg
ICAgICAgICAgIGlmIChzdHlsZVNoZWV0W1dJLkNTU01hbmFnZXIuUHJlZmVycmVkSW5zcGVjdG9y
U3R5bGVTaGVldFN5bWJvbF0pIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhzdHlsZVNoZWV0
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoZG9Ob3RDcmVhdGVJZk1pc3NpbmcpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKENTU0FnZW50LmNyZWF0ZVN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgIENT
U0FnZW50LmNyZWF0ZVN0eWxlU2hlZXQoZnJhbWUuaWQsIGZ1bmN0aW9uKGVycm9yLCBzdHlsZVNo
ZWV0SWQpIHsKKyAgICAgICAgICAgICAgICBsZXQgc3R5bGVTaGVldCA9IFdJLmNzc01hbmFnZXIu
c3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldElkKTsKKyAgICAgICAgICAgICAgICBz
dHlsZVNoZWV0W1dJLkNTU01hbmFnZXIuUHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldFN5bWJv
bF0gPSB0cnVlOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgOSk6IENTUy5jcmVhdGVTdHlsZVNoZWV0IGRpZCBub3QgZXhpc3Qu
CisgICAgICAgIC8vIExlZ2FjeSBiYWNrZW5kcyBjYW4gb25seSBjcmVhdGUgdGhlIEluc3BlY3Rv
ciBTdHlsZVNoZWV0IHRocm91Z2ggQ1NTLmFkZFJ1bGUuCisgICAgICAgIC8vIEV4cGxvaXQgdGhh
dCB0byBjcmVhdGUgdGhlIEluc3BlY3RvciBTdHlsZVNoZWV0IGZvciB0aGUgZG9jdW1lbnQuYm9k
eSBub2RlIGluCisgICAgICAgIC8vIHRoaXMgZnJhbWUsIHRoZW4gZ2V0IHRoZSBTdHlsZVNoZWV0
IGZvciB0aGUgbmV3IHJ1bGUuCisKKyAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBhcHBlbmRXZWJJ
bnNwZWN0b3JTb3VyY2VVUkwoImRvY3VtZW50Iik7CisgICAgICAgIGxldCBjb250ZXh0SWQgPSBm
cmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZDsKKyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1
YXRlLmludm9rZSh7ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXA6ICIiLCBpbmNsdWRlQ29tbWFuZExp
bmVBUEk6IGZhbHNlLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUs
IGNvbnRleHRJZCwgcmV0dXJuQnlWYWx1ZTogZmFsc2UsIGdlbmVyYXRlUHJldmlldzogZmFsc2V9
LCBkb2N1bWVudEF2YWlsYWJsZSk7CisKKyAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRBdmFpbGFi
bGUoZXJyb3IsIGRvY3VtZW50UmVtb3RlT2JqZWN0UGF5bG9hZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcmVt
b3RlT2JqZWN0ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGRvY3VtZW50UmVtb3RlT2Jq
ZWN0UGF5bG9hZCk7CisgICAgICAgICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5k
KGRvY3VtZW50Tm9kZUF2YWlsYWJsZS5iaW5kKG51bGwsIHJlbW90ZU9iamVjdCkpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnROb2RlQXZhaWxhYmxlKHJlbW90ZU9iamVj
dCwgZG9jdW1lbnROb2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5y
ZWxlYXNlKCk7CisKKyAgICAgICAgICAgIGlmICghZG9jdW1lbnROb2RlSWQpIHsKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2Rl
SWQsICJib2R5IiwgYm9keU5vZGVBdmFpbGFibGUpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gYm9keU5vZGVBdmFpbGFibGUoZXJyb3IsIGJvZHlOb2RlSWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHNlbGVjdG9yID0gIiI7IC8v
IEludGVudGlvbmFsbHkgZW1wdHkuCisgICAgICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKGJvZHlO
b2RlSWQsIHNlbGVjdG9yLCBjc3NSdWxlQXZhaWxhYmxlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNzc1J1bGVBdmFpbGFibGUoZXJyb3IsIHBheWxvYWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChlcnJvciB8fCAhcGF5bG9hZC5ydWxlSWQpIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0SWQgPSBwYXlsb2FkLnJ1bGVJZC5zdHlsZVNo
ZWV0SWQ7CisgICAgICAgICAgICBsZXQgc3R5bGVTaGVldCA9IFdJLmNzc01hbmFnZXIuc3R5bGVT
aGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldElkKTsKKyAgICAgICAgICAgIGlmICghc3R5bGVT
aGVldCkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3R5bGVTaGVldFtXSS5DU1NN
YW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1ib2xdID0gdHJ1ZTsKKworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQo
KSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0LnBhcmVudEZyYW1lID09
PSBmcmFtZSk7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0eWxlU2hlZXQpOworICAgICAgICB9
CisgICAgfQorCisgICAgbWVkaWFUeXBlQ2hhbmdlZCgpCisgICAgeworICAgICAgICAvLyBBY3Qg
dGhlIHNhbWUgYXMgaWYgbWVkaWEgcXVlcmllcyBjaGFuZ2VkLgorICAgICAgICB0aGlzLm1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBt
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBX
SS5DU1NPYnNlcnZlci4KKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxl
c01hcCkKKyAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXNNYXBba2V5XS5tZWRpYVF1ZXJ5UmVz
dWx0RGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgc3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVl
dElkZW50aWZpZXIpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DU1NPYnNlcnZl
ci4KKyAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSB0aGlzLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVy
KHN0eWxlU2hlZXRJZGVudGlmaWVyKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVl
dCk7CisKKyAgICAgICAgLy8gRG8gbm90IG9ic2VydmUgaW5saW5lIHN0eWxlcworICAgICAgICBp
ZiAoc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHN0eWxlU2hlZXQubm90ZUNvbnRlbnREaWRDaGFuZ2Uo
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VDb250ZW50KHN0eWxlU2hlZXQpOworICAg
IH0KKworICAgIHN0eWxlU2hlZXRBZGRlZChzdHlsZVNoZWV0SW5mbykKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5oYXMoc3R5bGVT
aGVldEluZm8uc3R5bGVTaGVldElkKSwgIkF0dGVtcHRlZCB0byBhZGQgYSBDU1NTdHlsZVNoZWV0
IGJ1dCBpZGVudGlmaWVyIHdhcyBhbHJlYWR5IGluIHVzZSIpOworICAgICAgICBsZXQgc3R5bGVT
aGVldCA9IHRoaXMuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldEluZm8uc3R5bGVT
aGVldElkKTsKKyAgICAgICAgbGV0IHBhcmVudEZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJh
bWVGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJbmZvLmZyYW1lSWQpOworICAgICAgICBsZXQgb3Jp
Z2luID0gV0kuQ1NTTWFuYWdlci5wcm90b2NvbFN0eWxlU2hlZXRPcmlnaW5Ub0VudW0oc3R5bGVT
aGVldEluZm8ub3JpZ2luKTsKKyAgICAgICAgc3R5bGVTaGVldC51cGRhdGVJbmZvKHN0eWxlU2hl
ZXRJbmZvLnNvdXJjZVVSTCwgcGFyZW50RnJhbWUsIG9yaWdpbiwgc3R5bGVTaGVldEluZm8uaXNJ
bmxpbmUsIHN0eWxlU2hlZXRJbmZvLnN0YXJ0TGluZSwgc3R5bGVTaGVldEluZm8uc3RhcnRDb2x1
bW4pOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNTU01hbmFn
ZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB7c3R5bGVTaGVldH0pOworICAgIH0KKworICAgIHN0
eWxlU2hlZXRSZW1vdmVkKHN0eWxlU2hlZXRJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbGV0
IHN0eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5nZXQoc3R5bGVTaGVl
dElkZW50aWZpZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0LCAiQXR0ZW1w
dGVkIHRvIHJlbW92ZSBhIENTU1N0eWxlU2hlZXQgdGhhdCB3YXMgbm90IHRyYWNrZWQiKTsKKyAg
ICAgICAgaWYgKCFzdHlsZVNoZWV0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLmRlbGV0ZShzdHlsZVNoZWV0SWRlbnRpZmllcik7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ1NTTWFuYWdlci5F
dmVudC5TdHlsZVNoZWV0UmVtb3ZlZCwge3N0eWxlU2hlZXR9KTsKKyAgICB9CisKKyAgICAvLyBQ
cml2YXRlCisKKyAgICBfaW5zcGVjdG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSkKKyAgICB7
CisgICAgICAgIGxldCBzdHlsZVNoZWV0cyA9IFtdOworCisgICAgICAgIGZvciAobGV0IHN0eWxl
U2hlZXQgb2YgdGhpcy5zdHlsZVNoZWV0cykgeworICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQu
aXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgJiYgc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gZnJh
bWUpCisgICAgICAgICAgICAgICAgc3R5bGVTaGVldHMucHVzaChzdHlsZVNoZWV0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBzdHlsZVNoZWV0czsKKyAgICB9CisKKyAgICBfbm9kZVBz
ZXVkb0NsYXNzZXNEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IGV2
ZW50LnRhcmdldDsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01h
cCkgeworICAgICAgICAgICAgdmFyIG5vZGVTdHlsZXMgPSB0aGlzLl9ub2RlU3R5bGVzTWFwW2tl
eV07CisgICAgICAgICAgICBpZiAobm9kZVN0eWxlcy5ub2RlICE9PSBub2RlICYmICFub2RlU3R5
bGVzLm5vZGUuaXNEZXNjZW5kYW50KG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgbm9kZVN0eWxlcy5wc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlKG5vZGUpOworICAg
ICAgICB9CisgICAgfQorCisgICAgX25vZGVBdHRyaWJ1dGVzRGlkQ2hhbmdlKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIG5vZGUgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgZm9yICh2YXIg
a2V5IGluIHRoaXMuX25vZGVTdHlsZXNNYXApIHsKKyAgICAgICAgICAgIHZhciBub2RlU3R5bGVz
ID0gdGhpcy5fbm9kZVN0eWxlc01hcFtrZXldOworICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMu
bm9kZSAhPT0gbm9kZSAmJiAhbm9kZVN0eWxlcy5ub2RlLmlzRGVzY2VuZGFudChub2RlKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuYXR0cmlidXRl
RGlkQ2hhbmdlKG5vZGUsIGV2ZW50LmRhdGEubmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmICgh
ZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgLy8gQ2xlYXIgb3VyIG1hcHMgd2hlbiB0aGUgbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCisKKyAg
ICAgICAgdGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cyA9IHdpbmRvdy5DU1NBZ2VudCAm
JiB3aW5kb3cuQ1NTQWdlbnQuaGFzRXZlbnQoInN0eWxlU2hlZXRBZGRlZCIpOworICAgICAgICB0
aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5jbGVhcigpOworICAgICAgICB0aGlzLl9zdHls
ZVNoZWV0RnJhbWVVUkxNYXAuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9
IHt9OworICAgIH0KKworICAgIF9yZXNvdXJjZUFkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAg
ICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHJlc291cmNlKTsKKworICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVz
b3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX2NsZWFyU3R5bGVTaGVldHNGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfQorCisgICAg
X3Jlc291cmNlVHlwZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLlJlc291cmNlKTsKKworICAgICAgICB2YXIg
cmVzb3VyY2UgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBX
SS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fY2xlYXJTdHlsZVNoZWV0c0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICB9CisK
KyAgICBfY2xlYXJTdHlsZVNoZWV0c0ZvclJlc291cmNlKHJlc291cmNlKQorICAgIHsKKyAgICAg
ICAgLy8gQ2xlYXIga25vd24gc3R5bGVzaGVldHMgZm9yIHRoaXMgVVJMIGFuZCBmcmFtZS4gVGhp
cyB3aWxsIGNhdXNlIHRoZSBzdHlsZXNoZWV0cyB0bworICAgICAgICAvLyBiZSB1cGRhdGVkIG5l
eHQgdGltZSBfZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMgaXMgY2FsbGVkLgorICAgICAgICB0
aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5kZWxldGUodGhpcy5fZnJhbWVVUkxNYXBLZXko
cmVzb3VyY2UucGFyZW50RnJhbWUsIHJlc291cmNlLnVybCkpOworICAgIH0KKworICAgIF9mcmFt
ZVVSTE1hcEtleShmcmFtZSwgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyYW1lLmlkICsg
IjoiICsgdXJsOworICAgIH0KKworICAgIF9sb29rdXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVz
b3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldChy
ZXNvdXJjZS5wYXJlbnRGcmFtZSwgcmVzb3VyY2UudXJsLCBjYWxsYmFjayk7CisgICAgfQorCisg
ICAgX2xvb2t1cFN0eWxlU2hlZXQoZnJhbWUsIHVybCwgY2FsbGJhY2spCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBs
ZXQga2V5ID0gdGhpcy5fZnJhbWVVUkxNYXBLZXkoZnJhbWUsIHVybCk7CisKKyAgICAgICAgZnVu
Y3Rpb24gc3R5bGVTaGVldHNGZXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJh
Y2sodGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLmdldChrZXkpIHx8IG51bGwpOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxN
YXAuZ2V0KGtleSkgfHwgbnVsbDsKKyAgICAgICAgaWYgKHN0eWxlU2hlZXQpCisgICAgICAgICAg
ICBjYWxsYmFjayhzdHlsZVNoZWV0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5f
ZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMoc3R5bGVTaGVldHNGZXRjaGVkLmJpbmQodGhpcykp
OworICAgIH0KKworICAgIF9mZXRjaEluZm9Gb3JBbGxTdHlsZVNoZWV0cyhjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9u
Iik7CisKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N0eWxlU2hlZXRzKGVycm9yLCBzdHlsZVNo
ZWV0cykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFw
LmNsZWFyKCk7CisKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0SW5mbyBvZiBzdHlsZVNoZWV0cykgeworICAgICAg
ICAgICAgICAgIGxldCBwYXJlbnRGcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRl
bnRpZmllcihzdHlsZVNoZWV0SW5mby5mcmFtZUlkKTsKKyAgICAgICAgICAgICAgICBsZXQgb3Jp
Z2luID0gV0kuQ1NTTWFuYWdlci5wcm90b2NvbFN0eWxlU2hlZXRPcmlnaW5Ub0VudW0oc3R5bGVT
aGVldEluZm8ub3JpZ2luKTsKKworICAgICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyA5KTogVGhlIGluZm8gZGlkIG5vdCBoYXZlICdpc0lubGluZScsICdzdGFydExpbmUnLCBhbmQg
J3N0YXJ0Q29sdW1uJywgc28gbWFrZSBmYWxzZSBhbmQgMCBpbiB0aGVzZSBjYXNlcy4KKyAgICAg
ICAgICAgICAgICBsZXQgaXNJbmxpbmUgPSBzdHlsZVNoZWV0SW5mby5pc0lubGluZSB8fCBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBsZXQgc3RhcnRMaW5lID0gc3R5bGVTaGVldEluZm8uc3RhcnRM
aW5lIHx8IDA7CisgICAgICAgICAgICAgICAgbGV0IHN0YXJ0Q29sdW1uID0gc3R5bGVTaGVldElu
Zm8uc3RhcnRDb2x1bW4gfHwgMDsKKworICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0g
dGhpcy5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5mby5zdHlsZVNoZWV0SWQp
OworICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQudXBkYXRlSW5mbyhzdHlsZVNoZWV0SW5mby5z
b3VyY2VVUkwsIHBhcmVudEZyYW1lLCBvcmlnaW4sIGlzSW5saW5lLCBzdGFydExpbmUsIHN0YXJ0
Q29sdW1uKTsKKworICAgICAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLl9mcmFtZVVSTE1hcEtl
eShwYXJlbnRGcmFtZSwgc3R5bGVTaGVldEluZm8uc291cmNlVVJMKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuc2V0KGtleSwgc3R5bGVTaGVldCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAgICAg
ICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhwcm9jZXNzU3R5bGVTaGVldHMuYmluZCh0aGlz
KSk7CisgICAgfQorCisgICAgX3Jlc291cmNlQ29udGVudERpZENoYW5nZShldmVudCkKKyAgICB7
CisgICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgaWYgKHJlc291
cmNlID09PSB0aGlzLl9pZ25vcmVSZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291
cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIElnbm9yZSBpZiBpdCBpc24n
dCBhIENTUyBzdHlsZXNoZWV0LgorICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVz
b3VyY2UuVHlwZS5TdHlsZXNoZWV0IHx8IHJlc291cmNlLnN5bnRoZXRpY01JTUVUeXBlICE9PSAi
dGV4dC9jc3MiKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGx5
U3R5bGVTaGVldENoYW5nZXMoKQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBzdHls
ZVNoZWV0Rm91bmQoc3R5bGVTaGVldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXNvdXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gdW5kZWZpbmVkOworCisgICAgICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCk7CisgICAgICAgICAgICAgICAgaWYgKCFz
dHlsZVNoZWV0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICAvLyBUbyBwcmV2ZW50IHVwZGF0aW5nIGEgVGV4dEVkaXRvcidzIGNvbnRlbnQgd2hpbGUgdGhl
IHVzZXIgaXMgdHlwaW5nIGluIGl0IHdlIHdhbnQgdG8KKyAgICAgICAgICAgICAgICAvLyBpZ25v
cmUgdGhlIG5leHQgX3VwZGF0ZVJlc291cmNlQ29udGVudCBjYWxsLgorICAgICAgICAgICAgICAg
IHJlc291cmNlLl9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVudCA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICBXSS5icmFuY2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JS
ZXByZXNlbnRlZE9iamVjdChzdHlsZVNoZWV0KS5jb250ZW50ID0gcmVzb3VyY2UuY29udGVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldEZvclJl
c291cmNlKHJlc291cmNlLCBzdHlsZVNoZWV0Rm91bmQuYmluZCh0aGlzKSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAocmVzb3VyY2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCkKKyAgICAgICAg
ICAgIGNsZWFyVGltZW91dChyZXNvdXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KTsKKyAgICAg
ICAgcmVzb3VyY2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoYXBwbHlTdHls
ZVNoZWV0Q2hhbmdlcy5iaW5kKHRoaXMpLCA1MDApOworICAgIH0KKworICAgIF91cGRhdGVSZXNv
dXJjZUNvbnRlbnQoc3R5bGVTaGVldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0
eWxlU2hlZXQpOworCisgICAgICAgIGZ1bmN0aW9uIGZldGNoZWRTdHlsZVNoZWV0Q29udGVudChw
YXJhbWV0ZXJzKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVwcmVzZW50ZWRPYmplY3Qg
PSBwYXJhbWV0ZXJzLnNvdXJjZUNvZGU7CisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdC5f
X3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdC51cmwpOworICAgICAgICAgICAgaWYgKCFyZXByZXNl
bnRlZE9iamVjdC51cmwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBp
ZiAoIXN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgICAgICAg
ICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0LnBhcmVudEZyYW1lLnJlc291
cmNlRm9yVVJMKHJlcHJlc2VudGVkT2JqZWN0LnVybCk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgLy8gT25seSB0cnkgdG8gdXBkYXRlIHN0eWxlc2hlZXQgcmVzb3VyY2VzLiBPdGhl
ciByZXNvdXJjZXMsIGxpa2UgZG9jdW1lbnRzLCBjYW4gY29udGFpbgorICAgICAgICAgICAgICAg
IC8vIG11bHRpcGxlIHN0eWxlc2hlZXRzIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgcmFu
Z2VzIHRvIHVwZGF0ZSB0aG9zZS4KKyAgICAgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QudHlwZSAhPT0gV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdC5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQpIHsKKyAgICAgICAgICAg
ICAgICByZXByZXNlbnRlZE9iamVjdC5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHRoaXMuX2lnbm9yZVJlc291cmNlQ29udGVudERpZENoYW5nZUV2ZW50Rm9yUmVzb3Vy
Y2UgPSByZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICAgICAgbGV0IHJldmlzaW9uID0gV0ku
YnJhbmNoTWFuYWdlci5jdXJyZW50QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3Qo
cmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgICAgICAgICByZXZpc2lvbi5jb250ZW50ID0gcmVw
cmVzZW50ZWRPYmplY3QuY29udGVudDsKKyAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2Up
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV2aXNpb24uY29udGVudCA9
IHBhcmFtZXRlcnMuY29udGVudDsKKworICAgICAgICAgICAgdGhpcy5faWdub3JlUmVzb3VyY2VD
b250ZW50RGlkQ2hhbmdlRXZlbnRGb3JSZXNvdXJjZSA9IG51bGw7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0UmVhZHkoKQorICAgICAgICB7CisgICAgICAgICAgICBz
dHlsZVNoZWV0LnJlcXVlc3RDb250ZW50KCkudGhlbihmZXRjaGVkU3R5bGVTaGVldENvbnRlbnQu
YmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhcHBseVN0eWxlU2hl
ZXRDaGFuZ2VzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQudXJsKQor
ICAgICAgICAgICAgICAgIHN0eWxlU2hlZXRSZWFkeS5jYWxsKHRoaXMpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX2ZldGNoSW5mb0ZvckFsbFN0eWxlU2hlZXRzKHN0
eWxlU2hlZXRSZWFkeS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHls
ZVNoZWV0Ll9fcGVuZGluZ0NoYW5nZVRpbWVvdXQpCisgICAgICAgICAgICBjbGVhclRpbWVvdXQo
c3R5bGVTaGVldC5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KTsKKyAgICAgICAgc3R5bGVTaGVldC5f
X3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91dChhcHBseVN0eWxlU2hlZXRDaGFuZ2Vz
LmJpbmQodGhpcyksIDUwMCk7CisgICAgfQorfTsKKworV0kuQ1NTTWFuYWdlci5FdmVudCA9IHsK
KyAgICBTdHlsZVNoZWV0QWRkZWQ6ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1hZGRlZCIsCisg
ICAgU3R5bGVTaGVldFJlbW92ZWQ6ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1yZW1vdmVkIiwK
K307CisKK1dJLkNTU01hbmFnZXIuUHNldWRvRWxlbWVudE5hbWVzID0gWyJiZWZvcmUiLCAiYWZ0
ZXIiXTsKK1dJLkNTU01hbmFnZXIuRm9yY2VhYmxlUHNldWRvQ2xhc3NlcyA9IFsiYWN0aXZlIiwg
ImZvY3VzIiwgImhvdmVyIiwgInZpc2l0ZWQiXTsKK1dJLkNTU01hbmFnZXIuUHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldFN5bWJvbCA9IFN5bWJvbCgiY3NzLW1hbmFnZXItcHJlZmVycmVkLWlu
c3BlY3Rvci1zdHlsZXNoZWV0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MTJmMmQwZjg4Nzc1Y2IwMjBiM2Y2NzRm
OThmZWQxMDU4ZDBhY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NT
U3R5bGVNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTYxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1XSS5DU1NTdHlsZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBzdXBlcigpOwot
Ci0gICAgICAgIGlmICh3aW5kb3cuQ1NTQWdlbnQpCi0gICAgICAgICAgICBDU1NBZ2VudC5lbmFi
bGUoKTsKLQotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50
Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5SZXNv
dXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuUmVz
b3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFu
Z2UsIHRoaXMuX3Jlc291cmNlQ29udGVudERpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLlJl
c291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwg
dGhpcy5fcmVzb3VyY2VUeXBlRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAgICAgICBXSS5ET01Ob2Rl
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhp
cy5fbm9kZUF0dHJpYnV0ZXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5ET01Ob2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9u
b2RlQXR0cmlidXRlc0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLkRPTU5vZGUuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZCwg
dGhpcy5fbm9kZVBzZXVkb0NsYXNzZXNEaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgICAgIHRoaXMu
X2NvbG9yRm9ybWF0U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJkZWZhdWx0LWNvbG9yLWZvcm1h
dCIsIFdJLkNvbG9yLkZvcm1hdC5PcmlnaW5hbCk7Ci0KLSAgICAgICAgdGhpcy5fc3R5bGVTaGVl
dElkZW50aWZpZXJNYXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVV
UkxNYXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9ub2RlU3R5bGVzTWFwID0ge307Ci0KLSAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBMZWdhY3kgYmFja2VuZHMgZGlkIG5vdCBz
ZW5kIHN0eWxlc2hlZXQKLSAgICAgICAgLy8gYWRkZWQvcmVtb3ZlZCBldmVudHMgYW5kIG11c3Qg
YmUgZmV0Y2hlZCBtYW51YWxseS4KLSAgICAgICAgdGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNo
ZWV0cyA9IHdpbmRvdy5DU1NBZ2VudCAmJiB3aW5kb3cuQ1NTQWdlbnQuaGFzRXZlbnQoInN0eWxl
U2hlZXRBZGRlZCIpOwotICAgIH0KLQotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIHByb3Rv
Y29sU3R5bGVTaGVldE9yaWdpblRvRW51bShvcmlnaW4pCi0gICAgewotICAgICAgICBzd2l0Y2gg
KG9yaWdpbikgewotICAgICAgICBjYXNlIENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4uUmVndWxh
cjoKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuQXV0aG9yOwotICAg
ICAgICBjYXNlIENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4uVXNlcjoKLSAgICAgICAgICAgIHJl
dHVybiBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuVXNlcjsKLSAgICAgICAgY2FzZSBDU1NBZ2VudC5T
dHlsZVNoZWV0T3JpZ2luLlVzZXJBZ2VudDoKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NTdHls
ZVNoZWV0LlR5cGUuVXNlckFnZW50OwotICAgICAgICBjYXNlIENTU0FnZW50LlN0eWxlU2hlZXRP
cmlnaW4uSW5zcGVjdG9yOgotICAgICAgICAgICAgcmV0dXJuIFdJLkNTU1N0eWxlU2hlZXQuVHlw
ZS5JbnNwZWN0b3I7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChmYWxzZSwgIlVua25vd24gQ1NTLlN0eWxlU2hlZXRPcmlnaW4iLCBvcmlnaW4pOwotICAgICAg
ICAgICAgcmV0dXJuIENTU0FnZW50LlN0eWxlU2hlZXRPcmlnaW4uUmVndWxhcjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHN0YXRpYyBwcm90b2NvbE1lZGlhU291cmNlVG9FbnVtKHNvdXJjZSkK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ1NTQWdlbnQu
Q1NTTWVkaWFTb3VyY2UuTWVkaWFSdWxlOgotICAgICAgICAgICAgcmV0dXJuIFdJLkNTU01lZGlh
LlR5cGUuTWVkaWFSdWxlOwotICAgICAgICBjYXNlIENTU0FnZW50LkNTU01lZGlhU291cmNlLklt
cG9ydFJ1bGU6Ci0gICAgICAgICAgICByZXR1cm4gV0kuQ1NTTWVkaWEuVHlwZS5JbXBvcnRSdWxl
OwotICAgICAgICBjYXNlIENTU0FnZW50LkNTU01lZGlhU291cmNlLkxpbmtlZFNoZWV0OgotICAg
ICAgICAgICAgcmV0dXJuIFdJLkNTU01lZGlhLlR5cGUuTGlua2VkU3R5bGVTaGVldDsKLSAgICAg
ICAgY2FzZSBDU1NBZ2VudC5DU1NNZWRpYVNvdXJjZS5JbmxpbmVTaGVldDoKLSAgICAgICAgICAg
IHJldHVybiBXSS5DU1NNZWRpYS5UeXBlLklubGluZVN0eWxlU2hlZXQ7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIlVua25vd24gQ1NTLkNTU01l
ZGlhU291cmNlIiwgc291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5DU1NNZWRpYS5UeXBl
Lk1lZGlhUnVsZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0
IHByZWZlcnJlZENvbG9yRm9ybWF0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb2xv
ckZvcm1hdFNldHRpbmcudmFsdWU7Ci0gICAgfQotCi0gICAgZ2V0IHN0eWxlU2hlZXRzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBbLi4udGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAudmFs
dWVzKCldOwotICAgIH0KLQotICAgIGNhbkZvcmNlUHNldWRvQ2xhc3NlcygpCi0gICAgewotICAg
ICAgICByZXR1cm4gd2luZG93LkNTU0FnZW50ICYmICEhQ1NTQWdlbnQuZm9yY2VQc2V1ZG9TdGF0
ZTsKLSAgICB9Ci0KLSAgICBwcm9wZXJ0eU5hbWVIYXNPdGhlclZlbmRvclByZWZpeChuYW1lKQot
ICAgIHsKLSAgICAgICAgaWYgKCFuYW1lIHx8IG5hbWUubGVuZ3RoIDwgNCB8fCBuYW1lLmNoYXJB
dCgwKSAhPT0gIi0iKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciBt
YXRjaCA9IG5hbWUubWF0Y2goL14oPzotbW96LXwtbXMtfC1vLXwtZXB1Yi0pLyk7Ci0gICAgICAg
IGlmICghbWF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcHJvcGVydHlWYWx1ZUhhc090aGVyVmVuZG9yS2V5d29yZCh2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBtYXRjaCA9IHZhbHVlLm1hdGNoKC8oPzotbW96LXwt
bXMtfC1vLXwtZXB1Yi0pWy1cd10rLyk7Ci0gICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgY2Fu
b25pY2FsTmFtZUZvclByb3BlcnR5TmFtZShuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFuYW1l
IHx8IG5hbWUubGVuZ3RoIDwgOCB8fCBuYW1lLmNoYXJBdCgwKSAhPT0gIi0iKQotICAgICAgICAg
ICAgcmV0dXJuIG5hbWU7Ci0KLSAgICAgICAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaCgvXig/Oi13
ZWJraXQtfC1raHRtbC18LWFwcGxlLSkoLispLyk7Ci0gICAgICAgIGlmICghbWF0Y2gpCi0gICAg
ICAgICAgICByZXR1cm4gbmFtZTsKLQotICAgICAgICByZXR1cm4gbWF0Y2hbMV07Ci0gICAgfQot
Ci0gICAgZmV0Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9mZXRjaGVkSW5pdGlhbFN0eWxlU2hlZXRzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuX2ZldGNoSW5mb0ZvckFsbFN0eWxlU2hlZXRzKGZ1bmN0aW9uKCkge30pOwotICAg
IH0KLQotICAgIHN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkKQotICAgIHsKLSAgICAgICAgbGV0
IHN0eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5nZXQoaWQpOwotICAg
ICAgICBpZiAoc3R5bGVTaGVldCkKLSAgICAgICAgICAgIHJldHVybiBzdHlsZVNoZWV0OwotCi0g
ICAgICAgIHN0eWxlU2hlZXQgPSBuZXcgV0kuQ1NTU3R5bGVTaGVldChpZCk7Ci0gICAgICAgIHRo
aXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLnNldChpZCwgc3R5bGVTaGVldCk7Ci0gICAgICAg
IHJldHVybiBzdHlsZVNoZWV0OwotICAgIH0KLQotICAgIHN0eWxlc0Zvck5vZGUobm9kZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChub2RlLmlkIGluIHRoaXMuX25vZGVTdHlsZXNNYXApCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fbm9kZVN0eWxlc01hcFtub2RlLmlkXTsKLQotICAgICAgICB2YXIg
c3R5bGVzID0gbmV3IFdJLkRPTU5vZGVTdHlsZXMobm9kZSk7Ci0gICAgICAgIHRoaXMuX25vZGVT
dHlsZXNNYXBbbm9kZS5pZF0gPSBzdHlsZXM7Ci0gICAgICAgIHJldHVybiBzdHlsZXM7Ci0gICAg
fQotCi0gICAgcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGZyYW1lLCBjYWxs
YmFjaywgZG9Ob3RDcmVhdGVJZk1pc3NpbmcpCi0gICAgewotICAgICAgICB2YXIgaW5zcGVjdG9y
U3R5bGVTaGVldHMgPSB0aGlzLl9pbnNwZWN0b3JTdHlsZVNoZWV0c0ZvckZyYW1lKGZyYW1lKTsK
LSAgICAgICAgZm9yIChsZXQgc3R5bGVTaGVldCBvZiBpbnNwZWN0b3JTdHlsZVNoZWV0cykgewot
ICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXRbV0kuQ1NTU3R5bGVNYW5hZ2VyLlByZWZlcnJlZElu
c3BlY3RvclN0eWxlU2hlZXRTeW1ib2xdKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soc3R5
bGVTaGVldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGRvTm90Q3JlYXRlSWZNaXNzaW5nKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChDU1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KSB7Ci0gICAgICAg
ICAgICBDU1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KGZyYW1lLmlkLCBmdW5jdGlvbihlcnJvciwg
c3R5bGVTaGVldElkKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSBXSS5jc3NT
dHlsZU1hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5bGVTaGVldElkKTsKLSAgICAg
ICAgICAgICAgICBzdHlsZVNoZWV0W1dJLkNTU1N0eWxlTWFuYWdlci5QcmVmZXJyZWRJbnNwZWN0
b3JTdHlsZVNoZWV0U3ltYm9sXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soc3R5
bGVTaGVldCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogQ1NTLmNyZWF0ZVN0eWxlU2hl
ZXQgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgLy8gTGVnYWN5IGJhY2tlbmRzIGNhbiBvbmx5IGNy
ZWF0ZSB0aGUgSW5zcGVjdG9yIFN0eWxlU2hlZXQgdGhyb3VnaCBDU1MuYWRkUnVsZS4KLSAgICAg
ICAgLy8gRXhwbG9pdCB0aGF0IHRvIGNyZWF0ZSB0aGUgSW5zcGVjdG9yIFN0eWxlU2hlZXQgZm9y
IHRoZSBkb2N1bWVudC5ib2R5IG5vZGUgaW4KLSAgICAgICAgLy8gdGhpcyBmcmFtZSwgdGhlbiBn
ZXQgdGhlIFN0eWxlU2hlZXQgZm9yIHRoZSBuZXcgcnVsZS4KLQotICAgICAgICBsZXQgZXhwcmVz
c2lvbiA9IGFwcGVuZFdlYkluc3BlY3RvclNvdXJjZVVSTCgiZG9jdW1lbnQiKTsKLSAgICAgICAg
bGV0IGNvbnRleHRJZCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0LmlkOwotICAgICAgICBS
dW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uLCBvYmplY3RHcm91cDogIiIs
IGluY2x1ZGVDb21tYW5kTGluZUFQSTogZmFsc2UsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZTogdHJ1ZSwgY29udGV4dElkLCByZXR1cm5CeVZhbHVlOiBmYWxzZSwgZ2VuZXJh
dGVQcmV2aWV3OiBmYWxzZX0sIGRvY3VtZW50QXZhaWxhYmxlKTsKLQotICAgICAgICBmdW5jdGlv
biBkb2N1bWVudEF2YWlsYWJsZShlcnJvciwgZG9jdW1lbnRSZW1vdGVPYmplY3RQYXlsb2FkKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhudWxsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
ZG9jdW1lbnRSZW1vdGVPYmplY3RQYXlsb2FkKTsKLSAgICAgICAgICAgIHJlbW90ZU9iamVjdC5w
dXNoTm9kZVRvRnJvbnRlbmQoZG9jdW1lbnROb2RlQXZhaWxhYmxlLmJpbmQobnVsbCwgcmVtb3Rl
T2JqZWN0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBkb2N1bWVudE5vZGVBdmFp
bGFibGUocmVtb3RlT2JqZWN0LCBkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVtb3RlT2JqZWN0LnJlbGVhc2UoKTsKLQotICAgICAgICAgICAgaWYgKCFkb2N1bWVudE5v
ZGVJZCkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxl
Y3Rvcihkb2N1bWVudE5vZGVJZCwgImJvZHkiLCBib2R5Tm9kZUF2YWlsYWJsZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBib2R5Tm9kZUF2YWlsYWJsZShlcnJvciwgYm9keU5vZGVJ
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsZXQg
c2VsZWN0b3IgPSAiIjsgLy8gSW50ZW50aW9uYWxseSBlbXB0eS4KLSAgICAgICAgICAgIENTU0Fn
ZW50LmFkZFJ1bGUoYm9keU5vZGVJZCwgc2VsZWN0b3IsIGNzc1J1bGVBdmFpbGFibGUpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY3NzUnVsZUF2YWlsYWJsZShlcnJvciwgcGF5bG9h
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFwYXlsb2FkLnJ1bGVJZCkg
ewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXRJZCA9IHBheWxv
YWQucnVsZUlkLnN0eWxlU2hlZXRJZDsKLSAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gV0ku
Y3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZCk7Ci0g
ICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhu
dWxsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHN0eWxlU2hlZXRbV0kuQ1NTU3R5bGVNYW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxl
U2hlZXRTeW1ib2xdID0gdHJ1ZTsKLQotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBmcmFtZSk7Ci0KLSAgICAgICAgICAgIGNhbGxi
YWNrKHN0eWxlU2hlZXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbWVkaWFUeXBlQ2hhbmdl
ZCgpCi0gICAgewotICAgICAgICAvLyBBY3QgdGhlIHNhbWUgYXMgaWYgbWVkaWEgcXVlcmllcyBj
aGFuZ2VkLgotICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7Ci0gICAgfQot
Ci0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCi0gICAg
ewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5DU1NPYnNlcnZlci4KLQotICAgICAgICBmb3Ig
KHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01hcCkKLSAgICAgICAgICAgIHRoaXMuX25vZGVT
dHlsZXNNYXBba2V5XS5tZWRpYVF1ZXJ5UmVzdWx0RGlkQ2hhbmdlKCk7Ci0gICAgfQotCi0gICAg
c3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkZW50aWZpZXIpCi0gICAgewotICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5DU1NPYnNlcnZlci4KLSAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSB0
aGlzLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZGVudGlmaWVyKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCk7Ci0KLSAgICAgICAgLy8gRG8gbm90IG9ic2Vy
dmUgaW5saW5lIHN0eWxlcwotICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0
cmlidXRlU3R5bGVTaGVldCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0eWxl
U2hlZXQubm90ZUNvbnRlbnREaWRDaGFuZ2UoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3Vy
Y2VDb250ZW50KHN0eWxlU2hlZXQpOwotICAgIH0KLQotICAgIHN0eWxlU2hlZXRBZGRlZChzdHls
ZVNoZWV0SW5mbykKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdHlsZVNo
ZWV0SWRlbnRpZmllck1hcC5oYXMoc3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElkKSwgIkF0dGVt
cHRlZCB0byBhZGQgYSBDU1NTdHlsZVNoZWV0IGJ1dCBpZGVudGlmaWVyIHdhcyBhbHJlYWR5IGlu
IHVzZSIpOwotICAgICAgICBsZXQgc3R5bGVTaGVldCA9IHRoaXMuc3R5bGVTaGVldEZvcklkZW50
aWZpZXIoc3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElkKTsKLSAgICAgICAgbGV0IHBhcmVudEZy
YW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHN0eWxlU2hl
ZXRJbmZvLmZyYW1lSWQpOwotICAgICAgICBsZXQgb3JpZ2luID0gV0kuQ1NTU3R5bGVNYW5hZ2Vy
LnByb3RvY29sU3R5bGVTaGVldE9yaWdpblRvRW51bShzdHlsZVNoZWV0SW5mby5vcmlnaW4pOwot
ICAgICAgICBzdHlsZVNoZWV0LnVwZGF0ZUluZm8oc3R5bGVTaGVldEluZm8uc291cmNlVVJMLCBw
YXJlbnRGcmFtZSwgb3JpZ2luLCBzdHlsZVNoZWV0SW5mby5pc0lubGluZSwgc3R5bGVTaGVldElu
Zm8uc3RhcnRMaW5lLCBzdHlsZVNoZWV0SW5mby5zdGFydENvbHVtbik7Ci0KLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxl
U2hlZXRBZGRlZCwge3N0eWxlU2hlZXR9KTsKLSAgICB9Ci0KLSAgICBzdHlsZVNoZWV0UmVtb3Zl
ZChzdHlsZVNoZWV0SWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGxldCBzdHlsZVNoZWV0ID0g
dGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAuZ2V0KHN0eWxlU2hlZXRJZGVudGlmaWVyKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCwgIkF0dGVtcHRlZCB0byByZW1vdmUg
YSBDU1NTdHlsZVNoZWV0IHRoYXQgd2FzIG5vdCB0cmFja2VkIik7Ci0gICAgICAgIGlmICghc3R5
bGVTaGVldCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0
SWRlbnRpZmllck1hcC5kZWxldGUoc3R5bGVTaGVldElkZW50aWZpZXIpOwotCi0gICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0UmVtb3ZlZCwge3N0eWxlU2hlZXR9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0K
LSAgICBfaW5zcGVjdG9yU3R5bGVTaGVldHNGb3JGcmFtZShmcmFtZSkKLSAgICB7Ci0gICAgICAg
IGxldCBzdHlsZVNoZWV0cyA9IFtdOwotCi0gICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2Yg
dGhpcy5zdHlsZVNoZWV0cykgewotICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCkgJiYgc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gZnJhbWUpCi0gICAg
ICAgICAgICAgICAgc3R5bGVTaGVldHMucHVzaChzdHlsZVNoZWV0KTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBzdHlsZVNoZWV0czsKLSAgICB9Ci0KLSAgICBfbm9kZVBzZXVkb0NsYXNz
ZXNEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IGV2ZW50LnRhcmdl
dDsKLQotICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbm9kZVN0eWxlc01hcCkgewotICAg
ICAgICAgICAgdmFyIG5vZGVTdHlsZXMgPSB0aGlzLl9ub2RlU3R5bGVzTWFwW2tleV07Ci0gICAg
ICAgICAgICBpZiAobm9kZVN0eWxlcy5ub2RlICE9PSBub2RlICYmICFub2RlU3R5bGVzLm5vZGUu
aXNEZXNjZW5kYW50KG5vZGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgbm9kZVN0eWxlcy5wc2V1ZG9DbGFzc2VzRGlkQ2hhbmdlKG5vZGUpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgX25vZGVBdHRyaWJ1dGVzRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIG5vZGUgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgZm9yICh2YXIga2V5IGluIHRo
aXMuX25vZGVTdHlsZXNNYXApIHsKLSAgICAgICAgICAgIHZhciBub2RlU3R5bGVzID0gdGhpcy5f
bm9kZVN0eWxlc01hcFtrZXldOwotICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMubm9kZSAhPT0g
bm9kZSAmJiAhbm9kZVN0eWxlcy5ub2RlLmlzRGVzY2VuZGFudChub2RlKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG5vZGVTdHlsZXMuYXR0cmlidXRlRGlkQ2hhbmdl
KG5vZGUsIGV2ZW50LmRhdGEubmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfbWFpblJl
c291cmNlRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOwotCi0gICAgICAgIGlmICghZXZlbnQudGFy
Z2V0LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2xl
YXIgb3VyIG1hcHMgd2hlbiB0aGUgbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCi0KLSAgICAgICAgdGhp
cy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cyA9IHdpbmRvdy5DU1NBZ2VudCAmJiB3aW5kb3cu
Q1NTQWdlbnQuaGFzRXZlbnQoInN0eWxlU2hlZXRBZGRlZCIpOwotICAgICAgICB0aGlzLl9zdHls
ZVNoZWV0SWRlbnRpZmllck1hcC5jbGVhcigpOwotICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJh
bWVVUkxNYXAuY2xlYXIoKTsKLSAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OwotICAg
IH0KLQotICAgIF9yZXNvdXJjZUFkZGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOwotCi0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJl
c291cmNlKTsKLQotICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV0kuUmVzb3VyY2UuVHlw
ZS5TdHlsZXNoZWV0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2NsZWFy
U3R5bGVTaGVldHNGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgX3Jlc291cmNl
VHlwZURpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50
LnRhcmdldCBpbnN0YW5jZW9mIFdJLlJlc291cmNlKTsKLQotICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXSS5SZXNvdXJj
ZS5UeXBlLlN0eWxlc2hlZXQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5f
Y2xlYXJTdHlsZVNoZWV0c0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICB9Ci0KLSAgICBfY2xl
YXJTdHlsZVNoZWV0c0ZvclJlc291cmNlKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgLy8gQ2xl
YXIga25vd24gc3R5bGVzaGVldHMgZm9yIHRoaXMgVVJMIGFuZCBmcmFtZS4gVGhpcyB3aWxsIGNh
dXNlIHRoZSBzdHlsZXNoZWV0cyB0bwotICAgICAgICAvLyBiZSB1cGRhdGVkIG5leHQgdGltZSBf
ZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMgaXMgY2FsbGVkLgotICAgICAgICB0aGlzLl9zdHls
ZVNoZWV0SWRlbnRpZmllck1hcC5kZWxldGUodGhpcy5fZnJhbWVVUkxNYXBLZXkocmVzb3VyY2Uu
cGFyZW50RnJhbWUsIHJlc291cmNlLnVybCkpOwotICAgIH0KLQotICAgIF9mcmFtZVVSTE1hcEtl
eShmcmFtZSwgdXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyYW1lLmlkICsgIjoiICsgdXJs
OwotICAgIH0KLQotICAgIF9sb29rdXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVzb3VyY2UsIGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldChyZXNvdXJjZS5w
YXJlbnRGcmFtZSwgcmVzb3VyY2UudXJsLCBjYWxsYmFjayk7Ci0gICAgfQotCi0gICAgX2xvb2t1
cFN0eWxlU2hlZXQoZnJhbWUsIHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKLQotICAgICAgICBsZXQga2V5ID0g
dGhpcy5fZnJhbWVVUkxNYXBLZXkoZnJhbWUsIHVybCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gc3R5
bGVTaGVldHNGZXRjaGVkKCkKLSAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5f
c3R5bGVTaGVldEZyYW1lVVJMTWFwLmdldChrZXkpIHx8IG51bGwpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuZ2V0KGtl
eSkgfHwgbnVsbDsKLSAgICAgICAgaWYgKHN0eWxlU2hlZXQpCi0gICAgICAgICAgICBjYWxsYmFj
ayhzdHlsZVNoZWV0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fZmV0Y2hJbmZv
Rm9yQWxsU3R5bGVTaGVldHMoc3R5bGVTaGVldHNGZXRjaGVkLmJpbmQodGhpcykpOwotICAgIH0K
LQotICAgIF9mZXRjaEluZm9Gb3JBbGxTdHlsZVNoZWV0cyhjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N0eWxlU2hlZXRzKGVycm9yLCBzdHlsZVNoZWV0cykKLSAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLmNsZWFyKCk7
Ci0KLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
b3IgKGxldCBzdHlsZVNoZWV0SW5mbyBvZiBzdHlsZVNoZWV0cykgewotICAgICAgICAgICAgICAg
IGxldCBwYXJlbnRGcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRp
ZmllcihzdHlsZVNoZWV0SW5mby5mcmFtZUlkKTsKLSAgICAgICAgICAgICAgICBsZXQgb3JpZ2lu
ID0gV0kuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvY29sU3R5bGVTaGVldE9yaWdpblRvRW51bShzdHls
ZVNoZWV0SW5mby5vcmlnaW4pOwotCi0gICAgICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDkpOiBUaGUgaW5mbyBkaWQgbm90IGhhdmUgJ2lzSW5saW5lJywgJ3N0YXJ0TGluZScsIGFu
ZCAnc3RhcnRDb2x1bW4nLCBzbyBtYWtlIGZhbHNlIGFuZCAwIGluIHRoZXNlIGNhc2VzLgotICAg
ICAgICAgICAgICAgIGxldCBpc0lubGluZSA9IHN0eWxlU2hlZXRJbmZvLmlzSW5saW5lIHx8IGZh
bHNlOwotICAgICAgICAgICAgICAgIGxldCBzdGFydExpbmUgPSBzdHlsZVNoZWV0SW5mby5zdGFy
dExpbmUgfHwgMDsKLSAgICAgICAgICAgICAgICBsZXQgc3RhcnRDb2x1bW4gPSBzdHlsZVNoZWV0
SW5mby5zdGFydENvbHVtbiB8fCAwOwotCi0gICAgICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXQg
PSB0aGlzLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJbmZvLnN0eWxlU2hlZXRJ
ZCk7Ci0gICAgICAgICAgICAgICAgc3R5bGVTaGVldC51cGRhdGVJbmZvKHN0eWxlU2hlZXRJbmZv
LnNvdXJjZVVSTCwgcGFyZW50RnJhbWUsIG9yaWdpbiwgaXNJbmxpbmUsIHN0YXJ0TGluZSwgc3Rh
cnRDb2x1bW4pOwotCi0gICAgICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMuX2ZyYW1lVVJMTWFw
S2V5KHBhcmVudEZyYW1lLCBzdHlsZVNoZWV0SW5mby5zb3VyY2VVUkwpOwotICAgICAgICAgICAg
ICAgIHRoaXMuX3N0eWxlU2hlZXRGcmFtZVVSTE1hcC5zZXQoa2V5LCBzdHlsZVNoZWV0KTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIENTU0FnZW50LmdldEFsbFN0eWxlU2hlZXRzKHByb2Nlc3NTdHlsZVNoZWV0cy5iaW5kKHRo
aXMpKTsKLSAgICB9Ci0KLSAgICBfcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBpZiAocmVz
b3VyY2UgPT09IHRoaXMuX2lnbm9yZVJlc291cmNlQ29udGVudERpZENoYW5nZUV2ZW50Rm9yUmVz
b3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gSWdub3JlIGlmIGl0IGlz
bid0IGEgQ1NTIHN0eWxlc2hlZXQuCi0gICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXSS5S
ZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQgfHwgcmVzb3VyY2Uuc3ludGhldGljTUlNRVR5cGUgIT09
ICJ0ZXh0L2NzcyIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBw
bHlTdHlsZVNoZWV0Q2hhbmdlcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0
eWxlU2hlZXRGb3VuZChzdHlsZVNoZWV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJlc291cmNlLl9fcGVuZGluZ0NoYW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0KTsKLSAgICAgICAgICAgICAgICBpZiAo
IXN0eWxlU2hlZXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIC8vIFRvIHByZXZlbnQgdXBkYXRpbmcgYSBUZXh0RWRpdG9yJ3MgY29udGVudCB3aGlsZSB0
aGUgdXNlciBpcyB0eXBpbmcgaW4gaXQgd2Ugd2FudCB0bwotICAgICAgICAgICAgICAgIC8vIGln
bm9yZSB0aGUgbmV4dCBfdXBkYXRlUmVzb3VyY2VDb250ZW50IGNhbGwuCi0gICAgICAgICAgICAg
ICAgcmVzb3VyY2UuX19pZ25vcmVOZXh0VXBkYXRlUmVzb3VyY2VDb250ZW50ID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgICAgIFdJLmJyYW5jaE1hbmFnZXIuY3VycmVudEJyYW5jaC5yZXZpc2lvbkZv
clJlcHJlc2VudGVkT2JqZWN0KHN0eWxlU2hlZXQpLmNvbnRlbnQgPSByZXNvdXJjZS5jb250ZW50
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLl9sb29rdXBTdHlsZVNoZWV0Rm9y
UmVzb3VyY2UocmVzb3VyY2UsIHN0eWxlU2hlZXRGb3VuZC5iaW5kKHRoaXMpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChyZXNvdXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KQotICAgICAg
ICAgICAgY2xlYXJUaW1lb3V0KHJlc291cmNlLl9fcGVuZGluZ0NoYW5nZVRpbWVvdXQpOwotICAg
ICAgICByZXNvdXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91dChhcHBseVN0
eWxlU2hlZXRDaGFuZ2VzLmJpbmQodGhpcyksIDUwMCk7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVJl
c291cmNlQ29udGVudChzdHlsZVNoZWV0KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
c3R5bGVTaGVldCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmV0Y2hlZFN0eWxlU2hlZXRDb250ZW50
KHBhcmFtZXRlcnMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxldCByZXByZXNlbnRlZE9iamVj
dCA9IHBhcmFtZXRlcnMuc291cmNlQ29kZTsKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0
Ll9fcGVuZGluZ0NoYW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXJlcHJl
c2VudGVkT2JqZWN0LnVybCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGlmICghc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSkgewotICAgICAgICAgICAg
ICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWUucmVz
b3VyY2VGb3JVUkwocmVwcmVzZW50ZWRPYmplY3QudXJsKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICAvLyBPbmx5IHRyeSB0byB1cGRhdGUgc3R5bGVzaGVldCByZXNvdXJjZXMuIE90
aGVyIHJlc291cmNlcywgbGlrZSBkb2N1bWVudHMsIGNhbiBjb250YWluCi0gICAgICAgICAgICAg
ICAgLy8gbXVsdGlwbGUgc3R5bGVzaGVldHMgYW5kIHdlIGRvbid0IGhhdmUgdGhlIHNvdXJjZSBy
YW5nZXMgdG8gdXBkYXRlIHRob3NlLgotICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9i
amVjdC50eXBlICE9PSBXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVudCkgewotICAgICAgICAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVu
dCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdGhpcy5faWdub3JlUmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlRXZlbnRGb3JSZXNv
dXJjZSA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBX
SS5icmFuY2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3Bl
Y3RvclN0eWxlU2hlZXQoKSkgewotICAgICAgICAgICAgICAgIHJldmlzaW9uLmNvbnRlbnQgPSBy
ZXByZXNlbnRlZE9iamVjdC5jb250ZW50OwotICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5n
ZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXZpc2lvbi5jb250ZW50
ID0gcGFyYW1ldGVycy5jb250ZW50OwotCi0gICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJj
ZUNvbnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlID0gbnVsbDsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRSZWFkeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0eWxlU2hlZXQucmVxdWVzdENvbnRlbnQoKS50aGVuKGZldGNoZWRTdHlsZVNoZWV0Q29udGVu
dC5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGx5U3R5bGVT
aGVldENoYW5nZXMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3R5bGVTaGVldC51cmwp
Ci0gICAgICAgICAgICAgICAgc3R5bGVTaGVldFJlYWR5LmNhbGwodGhpcyk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fZmV0Y2hJbmZvRm9yQWxsU3R5bGVTaGVldHMo
c3R5bGVTaGVldFJlYWR5LmJpbmQodGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0
eWxlU2hlZXQuX19wZW5kaW5nQ2hhbmdlVGltZW91dCkKLSAgICAgICAgICAgIGNsZWFyVGltZW91
dChzdHlsZVNoZWV0Ll9fcGVuZGluZ0NoYW5nZVRpbWVvdXQpOwotICAgICAgICBzdHlsZVNoZWV0
Ll9fcGVuZGluZ0NoYW5nZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGFwcGx5U3R5bGVTaGVldENoYW5n
ZXMuYmluZCh0aGlzKSwgNTAwKTsKLSAgICB9Ci19OwotCi1XSS5DU1NTdHlsZU1hbmFnZXIuRXZl
bnQgPSB7Ci0gICAgU3R5bGVTaGVldEFkZGVkOiAiY3NzLXN0eWxlLW1hbmFnZXItc3R5bGUtc2hl
ZXQtYWRkZWQiLAotICAgIFN0eWxlU2hlZXRSZW1vdmVkOiAiY3NzLXN0eWxlLW1hbmFnZXItc3R5
bGUtc2hlZXQtcmVtb3ZlZCIsCi19OwotCi1XSS5DU1NTdHlsZU1hbmFnZXIuUHNldWRvRWxlbWVu
dE5hbWVzID0gWyJiZWZvcmUiLCAiYWZ0ZXIiXTsKLVdJLkNTU1N0eWxlTWFuYWdlci5Gb3JjZWFi
bGVQc2V1ZG9DbGFzc2VzID0gWyJhY3RpdmUiLCAiZm9jdXMiLCAiaG92ZXIiLCAidmlzaXRlZCJd
OwotV0kuQ1NTU3R5bGVNYW5hZ2VyLlByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRTeW1ib2wg
PSBTeW1ib2woImNzcy1zdHlsZS1tYW5hZ2VyLXByZWZlcnJlZC1pbnNwZWN0b3Itc3R5bGVzaGVl
dCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzFhODQz
ZDg5NGEzN2ExYmY3OTNmNWRkMTVjZjJjMzM2ZmZiMjE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29uc29sZU1hbmFn
ZXIuanMKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFRvYmlhcyBS
ZWlzcyA8dG9iaSt3ZWJraXRAYmFzZWNvZGUuZGU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkNvbnNvbGVNYW5h
Z2VyID0gY2xhc3MgQ29uc29sZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25z
dHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2lzc3Vl
cyA9IFtdOworCisgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBmYWxzZTsKKworICAgICAgICBXSS5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9j
dXN0b21Mb2dnaW5nQ2hhbm5lbHMgPSBbXTsKKyAgICAgICAgdGhpcy5fbG9nZ2luZ0NoYW5uZWxT
b3VyY2VzID0gW107CisKKyAgICAgICAgaWYgKFdJLkNvbnNvbGVNYW5hZ2VyLnN1cHBvcnRzTG9n
Q2hhbm5lbHMoKSkgeworICAgICAgICAgICAgdGhpcy5fbG9nZ2luZ0NoYW5uZWxTb3VyY2VzID0g
W1dJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEsIFdJLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VTb3VyY2UuV2ViUlRDXTsKKyAgICAgICAgICAgIENvbnNvbGVBZ2VudC5nZXRMb2dn
aW5nQ2hhbm5lbHMoKGVycm9yLCBjaGFubmVscykgPT4geworICAgICAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgZm9y
IChsZXQgY2hhbm5lbCBvZiBjaGFubmVscykgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXMuaW5jbHVkZXMoY2hhbm5lbC5zb3Vy
Y2UpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21M
b2dnaW5nQ2hhbm5lbHMgPSBjaGFubmVscy5tYXAoV0kuTG9nZ2luZ0NoYW5uZWwuZnJvbVBheWxv
YWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTdGF0aWMK
KworICAgIHN0YXRpYyBzdXBwb3J0c0xvZ0NoYW5uZWxzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biAhIUNvbnNvbGVBZ2VudC5nZXRMb2dnaW5nQ2hhbm5lbHM7CisgICAgfQorCisgICAgc3RhdGlj
IGlzc3VlTWF0Y2hTb3VyY2VDb2RlKGlzc3VlLCBzb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAg
aWYgKHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5Tb3VyY2VNYXBSZXNvdXJjZSkKKyAgICAgICAg
ICAgIHJldHVybiBpc3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gJiYgaXNzdWUuc291cmNlQ29kZUxv
Y2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlID09PSBzb3VyY2VDb2RlOworICAgICAgICBpZiAoc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIGlzc3Vl
LnVybCA9PT0gc291cmNlQ29kZS51cmwgJiYgKCFpc3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gfHwg
aXNzdWUuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHNvdXJjZUNvZGUpOworICAg
ICAgICBpZiAoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCkKKyAgICAgICAgICAgIHJl
dHVybiBpc3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gJiYgaXNzdWUuc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGUgPT09IHNvdXJjZUNvZGU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBjdXN0b21Mb2dnaW5nQ2hhbm5lbHMoKSB7IHJl
dHVybiB0aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7IH0KKyAgICBnZXQgbG9nQ2hhbm5lbFNv
dXJjZXMoKSB7IHJldHVybiB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXM7IH0KKworICAgIGlz
c3Vlc0ZvclNvdXJjZUNvZGUoc291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHZhciBpc3N1ZXMg
PSBbXTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2lzc3Vlcy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgdmFyIGlzc3VlID0gdGhpcy5faXNzdWVzW2ldOworICAgICAg
ICAgICAgaWYgKFdJLklzc3VlTWFuYWdlci5pc3N1ZU1hdGNoU291cmNlQ29kZShpc3N1ZSwgc291
cmNlQ29kZSkpCisgICAgICAgICAgICAgICAgaXNzdWVzLnB1c2goaXNzdWUpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGlzc3VlczsKKyAgICB9CisKKyAgICBtZXNzYWdlV2FzQWRkZWQo
dGFyZ2V0LCBzb3VyY2UsIGxldmVsLCB0ZXh0LCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVw
ZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3RJZCkKKyAgICB7CisgICAg
ICAgIC8vIENhbGxlZCBmcm9tIFdJLkNvbnNvbGVPYnNlcnZlci4KKworICAgICAgICAvLyBGSVhN
RTogR2V0IGEgcmVxdWVzdCBmcm9tIHJlcXVlc3QgSUQuCisKKyAgICAgICAgaWYgKHBhcmFtZXRl
cnMpCisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5tYXAoKHgpID0+IFdJLlJl
bW90ZU9iamVjdC5mcm9tUGF5bG9hZCh4LCB0YXJnZXQpKTsKKworICAgICAgICBsZXQgbWVzc2Fn
ZSA9IG5ldyBXSS5Db25zb2xlTWVzc2FnZSh0YXJnZXQsIHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5
cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFj
ZSwgbnVsbCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29u
c29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCB7bWVzc2FnZX0pOworCisgICAgICAgIGlm
IChtZXNzYWdlLmxldmVsID09PSAid2FybmluZyIgfHwgbWVzc2FnZS5sZXZlbCA9PT0gImVycm9y
IikgeworICAgICAgICAgICAgbGV0IGlzc3VlID0gbmV3IFdJLklzc3VlTWVzc2FnZShtZXNzYWdl
KTsKKyAgICAgICAgICAgIHRoaXMuX2lzc3Vlcy5wdXNoKGlzc3VlKTsKKworICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuSXNz
dWVBZGRlZCwge2lzc3VlfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtZXNzYWdlc0NsZWFy
ZWQoKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ29uc29sZU9ic2VydmVyLgor
CisgICAgICAgIFdJLkNvbnNvbGVDb21tYW5kUmVzdWx0TWVzc2FnZS5jbGVhck1heGltdW1TYXZl
ZFJlc3VsdEluZGV4KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0
ZWQpIHsKKyAgICAgICAgICAgIC8vIEZyb250ZW5kIHJlcXVlc3RlZCAiY2xlYXIgY29uc29sZSIg
YW5kIEJhY2tlbmQgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgcmVxdWVzdC4KKyAgICAgICAg
ICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSBmYWxzZTsKKworICAgICAgICAgICAg
dGhpcy5faXNzdWVzID0gW107CisKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gUmVjZWl2ZWQgYW4gdW5yZXF1ZXN0ZWQgY2xlYXIgY29uc29sZSBl
dmVudC4KKyAgICAgICAgICAgIC8vIFRoaXMgY291bGQgYmUgZm9yIGEgbmF2aWdhdGlvbiBvciBv
dGhlciByZWFzb25zIChsaWtlIGNvbnNvbGUuY2xlYXIoKSkuCisgICAgICAgICAgICAvLyBJZiB0
aGlzIHdhcyBhIHJlbG9hZCwgd2UgbWF5IG5vdCB3YW50IHRvIGRpc3BhdGNoIFdJLkNvbnNvbGVN
YW5hZ2VyLkV2ZW50LkNsZWFyZWQuCisgICAgICAgICAgICAvLyBUbyBkZXRlY3QgaWYgdGhpcyBp
cyBhIHJlbG9hZCB3ZSB3YWl0IGEgdHVybiBhbmQgY2hlY2sgaWYgdGhlcmUgd2FzIGEgbWFpbiBy
ZXNvdXJjZSBjaGFuZ2UgcmVsb2FkLgorICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9kZWxh
eWVkTWVzc2FnZXNDbGVhcmVkLmJpbmQodGhpcyksIDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgX2RlbGF5ZWRNZXNzYWdlc0NsZWFyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lz
TmV3UGFnZU9yUmVsb2FkKSB7CisgICAgICAgICAgICB0aGlzLl9pc05ld1BhZ2VPclJlbG9hZCA9
IGZhbHNlOworCisgICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLmNsZWFyTG9nT25OYXZpZ2F0
ZS52YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9pc3N1ZXMgPSBbXTsKKworICAgICAgICAvLyBBIGNvbnNvbGUuY2xlYXIoKSBvciBjb21t
YW5kIGxpbmUgY2xlYXIoKSBoYXBwZW5lZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CisgICAgfQorCisgICAg
bWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKKyAgICB7CisgICAgICAgIC8vIENhbGxl
ZCBmcm9tIFdJLkNvbnNvbGVPYnNlcnZlci4KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRD
b3VudFVwZGF0ZWQsIHtjb3VudH0pOworICAgIH0KKworICAgIHJlcXVlc3RDbGVhck1lc3NhZ2Vz
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQgPSB0cnVlOwor
CisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGFy
Z2V0LkNvbnNvbGVBZ2VudC5jbGVhck1lc3NhZ2VzKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0
ZQorCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAg
ICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX2lzTmV3UGFnZU9yUmVsb2FkID0gdHJ1ZTsKKworICAgICAgICBsZXQg
dGltZXN0YW1wID0gRGF0ZS5ub3coKTsKKyAgICAgICAgbGV0IHdhc1JlbG9hZGVkID0gZXZlbnQu
ZGF0YS5vbGRNYWluUmVzb3VyY2UgJiYgZXZlbnQuZGF0YS5vbGRNYWluUmVzb3VyY2UudXJsID09
PSBldmVudC50YXJnZXQubWFpblJlc291cmNlLnVybDsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuU2Vzc2lvblN0YXJ0ZWQsIHt0
aW1lc3RhbXAsIHdhc1JlbG9hZGVkfSk7CisKKyAgICAgICAgV0kuQ29uc29sZUNvbW1hbmRSZXN1
bHRNZXNzYWdlLmNsZWFyTWF4aW11bVNhdmVkUmVzdWx0SW5kZXgoKTsKKyAgICB9Cit9OworCitX
SS5Db25zb2xlTWFuYWdlci5FdmVudCA9IHsKKyAgICBTZXNzaW9uU3RhcnRlZDogImNvbnNvbGUt
bWFuYWdlci1zZXNzaW9uLXdhcy1zdGFydGVkIiwKKyAgICBDbGVhcmVkOiAiY29uc29sZS1tYW5h
Z2VyLWNsZWFyZWQiLAorICAgIE1lc3NhZ2VBZGRlZDogImNvbnNvbGUtbWFuYWdlci1tZXNzYWdl
LWFkZGVkIiwKKyAgICBJc3N1ZUFkZGVkOiAiY29uc29sZS1tYW5hZ2VyLWlzc3VlLWFkZGVkIiwK
KyAgICBQcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQ6ICJjb25zb2xlLW1hbmFnZXIt
cHJldmlvdXMtbWVzc2FnZS1yZXBlYXQtY291bnQtdXBkYXRlZCIsCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdn
ZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IGE4NjdmMzYxYmRlY2RlOTEzZWU4M2I0
YmQ4YzQ2ZDUyNTdiMzY4ZjAuLjc3NzA1MWIzMTkzNTI3ZGMwZjFmMmZjNDhjZTM5NzE5ZjI1YjYw
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTQ2LDEw
ICs0NiwxMCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMuX2V2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogICAg
ICAgICBXSS5YSFJCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuWEhSQnJlYWtwb2ludC5F
dmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl94aHJCcmVha3BvaW50RGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9k
ZVJlbW92ZWQsIHRoaXMpOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUluc2Vy
dGVkLCB0aGlzKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRP
TU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKKyAg
ICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQu
Tm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwogCi0gICAgICAgIFdJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWVSZXNvdXJjZU1hbmFn
ZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hh
bmdlLCB0aGlzKTsKIAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1l
LkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwg
dGhpcyk7CiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQu
TWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMp
OwpAQCAtOTYsNyArOTYsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBkb21CcmVha3BvaW50cygp
CiAgICAgewotICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lOworICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lOwogICAgICAgICBpZiAoIW1haW5GcmFtZSkKICAgICAgICAgICAgIHJldHVybiBbXTsK
IApAQCAtMzQxLDcgKzM0MSw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9kZXRhY2hET01CcmVha3BvaW50
KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICBsZXQgbm9kZUlkZW50aWZpZXIgPSBicmVha3Bv
aW50LmRvbU5vZGVJZGVudGlmaWVyOwotICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbVRyZWVNYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWRlbnRpZmllcik7CisgICAgICAgIGxldCBub2RlID0gV0kuZG9t
TWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXIpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChub2RlLCAiTWlzc2luZyBET00gbm9kZSBmb3IgYnJlYWtwb2ludC4iLCBicmVha3BvaW50KTsK
ICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzg0LDcgKzM4NCw3
IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMoKQog
ICAgIHsKLSAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1h
aW5GcmFtZTsKKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5G
cmFtZTsKICAgICAgICAgaWYgKCFtYWluRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTM5NCw3ICszOTQsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dC5kb21Ob2RlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQo
YnJlYWtwb2ludC5wYXRoLCAobm9kZUlkZW50aWZpZXIpID0+IHsKKyAgICAgICAgICAgICAgICBX
SS5kb21NYW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChicmVha3BvaW50LnBhdGgsIChu
b2RlSWRlbnRpZmllcikgPT4gewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZGVudGlm
aWVyKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MTIsNyArNDEyLDcg
QEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAKICAgICBfcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9k
ZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2Vy
Lm5vZGVGb3JJZChub2RlSWRlbnRpZmllcik7CisgICAgICAgIGxldCBub2RlID0gV0kuZG9tTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXIpOwogICAgICAgICBjb25zb2xlLmFzc2VydChu
b2RlLCAiTWlzc2luZyBET00gbm9kZSBmb3Igbm9kZUlkZW50aWZpZXIuIiwgbm9kZUlkZW50aWZp
ZXIpOwogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5h
Z2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTBkN2QxN2I5YmYzNzRmMmYzYTYyZDY2Mzk0YzBj
ZjhkMzA2ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwpAQCAtMCwwICsxLDY0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybworICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5ET01NYW5hZ2VyID0gY2xh
c3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsK
KyAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVM
b2FkTm9kZUlkcyA9IHt9OworICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxv
d2VkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IDA7
CisgICAgICAgIHRoaXMuX2luc3BlY3RlZE5vZGUgPSBudWxsOworCisgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5lcnMgPSBuZXcgTWFwOworCisgICAgICAgIFdJLkZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgZ2V0IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cygpCisgICAgeworICAgICAgICBy
ZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJzLnZhbHVl
cygpKTsKKyAgICB9CisKKyAgICByZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2spCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2Rv
Y3VtZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0
aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzKSB7CisgICAgICAgICAgICB0aGlz
Ll9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50
UmVxdWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107CisKKyAgICAgICAgZnVuY3Rpb24gb25Eb2N1
bWVudEF2YWlsYWJsZShlcnJvciwgcm9vdCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFl
cnJvcikKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXREb2N1bWVudChyb290KTsKKworICAgICAg
ICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENh
bGxiYWNrcykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7CisKKyAg
ICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOwor
ICAgICAgICB9CisKKyAgICAgICAgRE9NQWdlbnQuZ2V0RG9jdW1lbnQob25Eb2N1bWVudEF2YWls
YWJsZS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICBlbnN1cmVEb2N1bWVudCgpCisgICAgewor
ICAgICAgICB0aGlzLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbigpe30pOworICAgIH0KKworICAg
IHB1c2hOb2RlVG9Gcm9udGVuZChvYmplY3RJZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0
aGlzLl9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5yZXF1ZXN0Tm9kZS5i
aW5kKERPTUFnZW50LCBvYmplY3RJZCksIGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBwdXNoTm9k
ZUJ5UGF0aFRvRnJvbnRlbmQocGF0aCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9k
aXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQuYmluZChET01BZ2VudCwgcGF0aCksIGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBkaWRB
ZGRFdmVudExpc3RlbmVyKG5vZGVJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkRPTU9ic2VydmVyLgorCisgICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9k
ZUlkXTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG5vZGUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0
ZW5lcnNDaGFuZ2VkKTsKKyAgICB9CisKKyAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2Rl
SWQpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KKworICAg
ICAgICBsZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCk7CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIGlmICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXJyb3IsIHJlc3VsdCkgeworICAgICAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGR1cmluZyBE
T01BZ2VudCBvcGVyYXRpb246ICIgKyBlcnJvcik7CisgICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciA/IG51bGwgOiByZXN1bHQpOworICAgICAgICB9OworICAgIH0KKworICAgIF9kaXNwYXRjaFdo
ZW5Eb2N1bWVudEF2YWlsYWJsZShmdW5jLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBj
YWxsYmFja1dyYXBwZXIgPSB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spOworCisg
ICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgZnVuYyhjYWxsYmFja1dy
YXBwZXIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNr
V3JhcHBlcikKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tXcmFwcGVyKCJObyBkb2N1bWVu
dCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMucmVxdWVzdERvY3Vt
ZW50KG9uRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgX2F0dHJp
YnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBub2RlLl9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2
ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB7bm9kZSwgbmFtZX0pOworICAgICAgICBub2RlLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB7
bmFtZX0pOworICAgIH0KKworICAgIF9hdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSkKKyAg
ICB7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAg
ICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGUuX3JlbW92
ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB7bm9kZSwgbmFtZX0pOworICAg
ICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkF0dHJp
YnV0ZVJlbW92ZWQsIHtuYW1lfSk7CisgICAgfQorCisgICAgX2lubGluZVN0eWxlSW52YWxpZGF0
ZWQobm9kZUlkcykKKyAgICB7CisgICAgICAgIGZvciAodmFyIG5vZGVJZCBvZiBub2RlSWRzKQor
ICAgICAgICAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHNbbm9kZUlkXSA9IHRydWU7Cisg
ICAgICAgIGlmICh0aGlzLl9sb2FkTm9kZUF0dHJpYnV0ZXNUaW1lb3V0KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0aGlzLl9sb2FkTm9kZUF0dHJpYnV0ZXNUaW1lb3V0ID0gc2V0VGlt
ZW91dCh0aGlzLl9sb2FkTm9kZUF0dHJpYnV0ZXMuYmluZCh0aGlzKSwgMCk7CisgICAgfQorCisg
ICAgX2xvYWROb2RlQXR0cmlidXRlcygpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhub2RlSWQsIGVycm9yLCBhdHRyaWJ1dGVzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvciBkdXJpbmcgRE9N
QWdlbnQgb3BlcmF0aW9uOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9k
ZUlkXTsKKyAgICAgICAgICAgIGlmIChub2RlKSB7CisgICAgICAgICAgICAgICAgbm9kZS5fc2V0
QXR0cmlidXRlc1BheWxvYWQoYXR0cmlidXRlcyk7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmll
ZCwge25vZGUsIG5hbWU6ICJzdHlsZSJ9KTsKKyAgICAgICAgICAgICAgICBub2RlLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB7bmFt
ZTogInN0eWxlIn0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
bG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IDA7CisKKyAgICAgICAgZm9yICh2YXIgbm9kZUlk
IGluIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzKSB7CisgICAgICAgICAgICB2YXIgbm9kZUlk
QXNOdW1iZXIgPSBwYXJzZUludChub2RlSWQpOworICAgICAgICAgICAgRE9NQWdlbnQuZ2V0QXR0
cmlidXRlcyhub2RlSWRBc051bWJlciwgY2FsbGJhY2suYmluZCh0aGlzLCBub2RlSWRBc051bWJl
cikpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzID0ge307
CisgICAgfQorCisgICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIG5ld1ZhbHVlKQor
ICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOworICAg
ICAgICBub2RlLl9ub2RlVmFsdWUgPSBuZXdWYWx1ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQs
IHtub2RlfSk7CisgICAgfQorCisgICAgbm9kZUZvcklkKG5vZGVJZCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOworICAgIH0KKworICAgIF9kb2N1bWVu
dFVwZGF0ZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2V0RG9jdW1lbnQobnVsbCk7CisgICAg
fQorCisgICAgX3NldERvY3VtZW50KHBheWxvYWQpCisgICAgeworICAgICAgICB0aGlzLl9pZFRv
RE9NTm9kZSA9IHt9OworICAgICAgICB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJz
LmNsZWFyKCk7CisKKyAgICAgICAgbGV0IG5ld0RvY3VtZW50ID0gbnVsbDsKKyAgICAgICAgaWYg
KHBheWxvYWQgJiYgIm5vZGVJZCIgaW4gcGF5bG9hZCkKKyAgICAgICAgICAgIG5ld0RvY3VtZW50
ID0gbmV3IFdJLkRPTU5vZGUodGhpcywgbnVsbCwgZmFsc2UsIHBheWxvYWQpOworCisgICAgICAg
IGlmICh0aGlzLl9kb2N1bWVudCA9PT0gbmV3RG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBuZXdEb2N1bWVudDsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0
ZWQsIHtkb2N1bWVudDogdGhpcy5fZG9jdW1lbnR9KTsKKyAgICB9CisKKyAgICBfc2V0RGV0YWNo
ZWRSb290KHBheWxvYWQpCisgICAgeworICAgICAgICBuZXcgV0kuRE9NTm9kZSh0aGlzLCBudWxs
LCBmYWxzZSwgcGF5bG9hZCk7CisgICAgfQorCisgICAgX3NldENoaWxkTm9kZXMocGFyZW50SWQs
IHBheWxvYWRzKQorICAgIHsKKyAgICAgICAgaWYgKCFwYXJlbnRJZCAmJiBwYXlsb2Fkcy5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRoaXMuX3NldERldGFjaGVkUm9vdChwYXlsb2Fkc1swXSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgcGFyZW50ID0gdGhp
cy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOworICAgICAgICBwYXJlbnQuX3NldENoaWxkcmVuUGF5
bG9hZChwYXlsb2Fkcyk7CisgICAgfQorCisgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZChub2Rl
SWQsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9k
ZVtub2RlSWRdOworICAgICAgICBub2RlLmNoaWxkTm9kZUNvdW50ID0gbmV3VmFsdWU7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ2hp
bGROb2RlQ291bnRVcGRhdGVkLCBub2RlKTsKKyAgICB9CisKKyAgICBfY2hpbGROb2RlSW5zZXJ0
ZWQocGFyZW50SWQsIHByZXZJZCwgcGF5bG9hZCkKKyAgICB7CisgICAgICAgIHZhciBwYXJlbnQg
PSB0aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07CisgICAgICAgIHZhciBwcmV2ID0gdGhpcy5f
aWRUb0RPTU5vZGVbcHJldklkXTsKKyAgICAgICAgdmFyIG5vZGUgPSBwYXJlbnQuX2luc2VydENo
aWxkKHByZXYsIHBheWxvYWQpOworICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtub2RlLmlkXSA9
IG5vZGU7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFn
ZXIuRXZlbnQuTm9kZUluc2VydGVkLCB7bm9kZSwgcGFyZW50fSk7CisgICAgfQorCisgICAgX2No
aWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIG5vZGVJZCkKKyAgICB7CisgICAgICAgIHZhciBwYXJl
bnQgPSB0aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07CisgICAgICAgIHZhciBub2RlID0gdGhp
cy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgcGFyZW50Ll9yZW1vdmVDaGlsZChub2Rl
KTsKKyAgICAgICAgdGhpcy5fdW5iaW5kKG5vZGUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB7bm9kZSwgcGFy
ZW50fSk7CisgICAgfQorCisgICAgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZWxlbWVudElk
LCBuZXdTdGF0ZSkKKyAgICB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9k
ZVtlbGVtZW50SWRdOworICAgICAgICBub2RlLl9jdXN0b21FbGVtZW50U3RhdGUgPSBuZXdTdGF0
ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5F
dmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLCB7bm9kZX0pOworICAgIH0KKworICAgIF9w
c2V1ZG9FbGVtZW50QWRkZWQocGFyZW50SWQsIHBzZXVkb0VsZW1lbnQpCisgICAgeworICAgICAg
ICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOworICAgICAgICBpZiAo
IXBhcmVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgbm9kZSA9IG5ldyBX
SS5ET01Ob2RlKHRoaXMsIHBhcmVudC5vd25lckRvY3VtZW50LCBmYWxzZSwgcHNldWRvRWxlbWVu
dCk7CisgICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IHBhcmVudDsKKyAgICAgICAgdGhpcy5faWRU
b0RPTU5vZGVbbm9kZS5pZF0gPSBub2RlOworICAgICAgICBjb25zb2xlLmFzc2VydCghcGFyZW50
LnBzZXVkb0VsZW1lbnRzKCkuZ2V0KG5vZGUucHNldWRvVHlwZSgpKSk7CisgICAgICAgIHBhcmVu
dC5wc2V1ZG9FbGVtZW50cygpLnNldChub2RlLnBzZXVkb1R5cGUoKSwgbm9kZSk7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUlu
c2VydGVkLCB7bm9kZSwgcGFyZW50fSk7CisgICAgfQorCisgICAgX3BzZXVkb0VsZW1lbnRSZW1v
dmVkKHBhcmVudElkLCBwc2V1ZG9FbGVtZW50SWQpCisgICAgeworICAgICAgICB2YXIgcHNldWRv
RWxlbWVudCA9IHRoaXMuX2lkVG9ET01Ob2RlW3BzZXVkb0VsZW1lbnRJZF07CisgICAgICAgIGlm
ICghcHNldWRvRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcGFy
ZW50ID0gcHNldWRvRWxlbWVudC5wYXJlbnROb2RlOworICAgICAgICBjb25zb2xlLmFzc2VydChw
YXJlbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnQuaWQgPT09IHBhcmVudElkKTsK
KyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGFy
ZW50Ll9yZW1vdmVDaGlsZChwc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdW5iaW5kKHBz
ZXVkb0VsZW1lbnQpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5E
T01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB7bm9kZTogcHNldWRvRWxlbWVudCwgcGFyZW50
fSk7CisgICAgfQorCisgICAgX3VuYmluZChub2RlKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX2lkVG9ET01Ob2RlW25vZGUuaWRdOworCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBub2Rl
LmNoaWxkcmVuICYmIGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
dGhpcy5fdW5iaW5kKG5vZGUuY2hpbGRyZW5baV0pOworCisgICAgICAgIGxldCB0ZW1wbGF0ZUNv
bnRlbnQgPSBub2RlLnRlbXBsYXRlQ29udGVudCgpOworICAgICAgICBpZiAodGVtcGxhdGVDb250
ZW50KQorICAgICAgICAgICAgdGhpcy5fdW5iaW5kKHRlbXBsYXRlQ29udGVudCk7CisKKyAgICAg
ICAgZm9yIChsZXQgcHNldWRvRWxlbWVudCBvZiBub2RlLnBzZXVkb0VsZW1lbnRzKCkudmFsdWVz
KCkpCisgICAgICAgICAgICB0aGlzLl91bmJpbmQocHNldWRvRWxlbWVudCk7CisKKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBzaGFkb3cgcm9vdHMuCisgICAgfQorCisgICAgZ2V0IHJlc3RvcmVT
ZWxlY3RlZE5vZGVJc0FsbG93ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3Rv
cmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQ7CisgICAgfQorCisgICAgaW5zcGVjdEVsZW1lbnQobm9k
ZUlkKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRd
OworICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUub3duZXJEb2N1bWVudCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01N
YW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIHtub2RlfSk7CisKKyAgICAgICAgdGhp
cy5faW5zcGVjdE1vZGVFbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQp
OworICAgIH0KKworICAgIGluc3BlY3ROb2RlT2JqZWN0KHJlbW90ZU9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQgPSBmYWxzZTsKKworICAg
ICAgICBmdW5jdGlvbiBub2RlQXZhaWxhYmxlKG5vZGVJZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmVtb3RlT2JqZWN0LnJlbGVhc2UoKTsKKworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
bm9kZUlkKTsKKyAgICAgICAgICAgIGlmICghbm9kZUlkKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgdGhpcy5pbnNwZWN0RWxlbWVudChub2RlSWQpOworCisgICAgICAg
ICAgICAvLyBSZS1yZXNvbHZlIHRoZSBub2RlIGluIHRoZSBjb25zb2xlJ3Mgb2JqZWN0IGdyb3Vw
IHdoZW4gYWRkaW5nIHRvIHRoZSBjb25zb2xlLgorICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSB0
aGlzLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuUmVtb3RlT2JqZWN0LnJlc29s
dmVOb2RlKGRvbU5vZGUsIFdJLlJ1bnRpbWVNYW5hZ2VyLkNvbnNvbGVPYmplY3RHcm91cCkudGhl
bigocmVtb3RlT2JqZWN0KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lhbExvZ1N0
eWxlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkUmV2ZWFsQ29uc29sZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVMb2dWaWV3Q29udHJvbGxlci5hcHBl
bmRJbW1lZGlhdGVFeGVjdXRpb25XaXRoUmVzdWx0KFdJLlVJU3RyaW5nKCJTZWxlY3RlZCBFbGVt
ZW50IiksIHJlbW90ZU9iamVjdCwgc3BlY2lhbExvZ1N0eWxlcywgc2hvdWxkUmV2ZWFsQ29uc29s
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJlbW90ZU9iamVjdC5w
dXNoTm9kZVRvRnJvbnRlbmQobm9kZUF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAg
ICBwZXJmb3JtU2VhcmNoKHF1ZXJ5LCBzZWFyY2hDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuY2FuY2VsU2VhcmNoKCk7CisKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHNl
YXJjaElkLCByZXN1bHRzQ291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3NlYXJj
aElkID0gc2VhcmNoSWQ7CisgICAgICAgICAgICBzZWFyY2hDYWxsYmFjayhyZXN1bHRzQ291bnQp
OworICAgICAgICB9CisgICAgICAgIERPTUFnZW50LnBlcmZvcm1TZWFyY2gocXVlcnksIGNhbGxi
YWNrLmJpbmQodGhpcykpOworICAgIH0KKworICAgIHNlYXJjaFJlc3VsdChpbmRleCwgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCBub2RlSWRzKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZUlk
cy5sZW5ndGggIT09IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBj
YWxsYmFjayh0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRzWzBdXSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodGhpcy5fc2VhcmNoSWQpCisgICAgICAgICAgICBET01BZ2VudC5nZXRTZWFyY2hS
ZXN1bHRzKHRoaXMuX3NlYXJjaElkLCBpbmRleCwgaW5kZXggKyAxLCBteWNhbGxiYWNrLmJpbmQo
dGhpcykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICB9
CisKKyAgICBjYW5jZWxTZWFyY2goKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaElk
KSB7CisgICAgICAgICAgICBET01BZ2VudC5kaXNjYXJkU2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFy
Y2hJZCk7CisgICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHVuZGVmaW5lZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHF1ZXJ5U2VsZWN0b3Iobm9kZU9yTm9kZUlkLCBzZWxlY3RvciwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBsZXQgbm9kZUlkID0gbm9kZU9yTm9kZUlkIGluc3RhbmNl
b2YgV0kuRE9NTm9kZSA/IG5vZGVPck5vZGVJZC5pZCA6IG5vZGVPck5vZGVJZDsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodHlwZW9mIG5vZGVJZCA9PT0gIm51bWJlciIpOworCisgICAgICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBET01BZ2VudC5x
dWVyeVNlbGVjdG9yKG5vZGVJZCwgc2VsZWN0b3IsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhj
YWxsYmFjaykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gRE9NQWdlbnQucXVl
cnlTZWxlY3Rvcihub2RlSWQsIHNlbGVjdG9yKS50aGVuKCh7bm9kZUlkfSkgPT4gbm9kZUlkKTsK
KyAgICB9CisKKyAgICBxdWVyeVNlbGVjdG9yQWxsKG5vZGVPck5vZGVJZCwgc2VsZWN0b3IsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgbGV0IG5vZGVJZCA9IG5vZGVPck5vZGVJZCBpbnN0YW5j
ZW9mIFdJLkRPTU5vZGUgPyBub2RlT3JOb2RlSWQuaWQgOiBub2RlT3JOb2RlSWQ7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBub2RlSWQgPT09ICJudW1iZXIiKTsKKworICAgICAgICBp
ZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgRE9NQWdlbnQu
cXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9yLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJh
Y2soY2FsbGJhY2spKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIERPTUFnZW50
LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBzZWxlY3RvcikudGhlbigoe25vZGVJZHN9KSA9PiBu
b2RlSWRzKTsKKyAgICB9CisKKyAgICBoaWdobGlnaHRET01Ob2RlKG5vZGVJZCwgbW9kZSkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQpIHsKKyAg
ICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQp
OworICAgICAgICAgICAgdGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0ID0gdW5kZWZp
bmVkOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRET01Ob2RlSWQgPSBu
b2RlSWQ7CisgICAgICAgIGlmIChub2RlSWQpCisgICAgICAgICAgICBET01BZ2VudC5oaWdobGln
aHROb2RlLmludm9rZSh7bm9kZUlkLCBoaWdobGlnaHRDb25maWc6IHRoaXMuX2J1aWxkSGlnaGxp
Z2h0Q29uZmlnKG1vZGUpfSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIERPTUFnZW50Lmhp
ZGVIaWdobGlnaHQoKTsKKyAgICB9CisKKyAgICBoaWdobGlnaHRET01Ob2RlTGlzdChub2RlSWRz
LCBtb2RlKQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDExKTogRE9NLmhp
Z2hsaWdodE5vZGVMaXN0IGRpZCBub3QgZXhpc3QuCisgICAgICAgIGlmICghRE9NQWdlbnQuaGln
aGxpZ2h0Tm9kZUxpc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMu
X2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCkgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0
KHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICB0aGlzLl9o
aWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQgPSB1bmRlZmluZWQ7CisgICAgICAgIH0KKworICAg
ICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlTGlzdChub2RlSWRzLCB0aGlzLl9idWlsZEhpZ2hs
aWdodENvbmZpZyhtb2RlKSk7CisgICAgfQorCisgICAgaGlnaGxpZ2h0U2VsZWN0b3Ioc2VsZWN0
b3JUZXh0LCBmcmFtZUlkLCBtb2RlKQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDgpOiBET00uaGlnaGxpZ2h0U2VsZWN0b3IgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgaWYg
KCFET01BZ2VudC5oaWdobGlnaHRTZWxlY3RvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAodGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KSB7CisgICAgICAgICAg
ICBjbGVhclRpbWVvdXQodGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KTsKKyAgICAg
ICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCA9IHVuZGVmaW5lZDsKKyAg
ICAgICAgfQorCisgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKHRoaXMuX2J1aWxk
SGlnaGxpZ2h0Q29uZmlnKG1vZGUpLCBzZWxlY3RvclRleHQsIGZyYW1lSWQpOworICAgIH0KKwor
ICAgIGhpZ2hsaWdodFJlY3QocmVjdCwgdXNlUGFnZUNvb3JkaW5hdGVzKQorICAgIHsKKyAgICAg
ICAgRE9NQWdlbnQuaGlnaGxpZ2h0UmVjdC5pbnZva2UoeworICAgICAgICAgICAgeDogcmVjdC54
LAorICAgICAgICAgICAgeTogcmVjdC55LAorICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgs
CisgICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LAorICAgICAgICAgICAgY29sb3I6IHty
OiAxMTEsIGc6IDE2OCwgYjogMjIwLCBhOiAwLjY2fSwKKyAgICAgICAgICAgIG91dGxpbmVDb2xv
cjoge3I6IDI1NSwgZzogMjI5LCBiOiAxNTMsIGE6IDAuNjZ9LAorICAgICAgICAgICAgdXNlUGFn
ZUNvb3JkaW5hdGVzCisgICAgICAgIH0pOworICAgIH0KKworICAgIGhpZGVET01Ob2RlSGlnaGxp
Z2h0KCkKKyAgICB7CisgICAgICAgIHRoaXMuaGlnaGxpZ2h0RE9NTm9kZSgwKTsKKyAgICB9CisK
KyAgICBoaWdobGlnaHRET01Ob2RlRm9yVHdvU2Vjb25kcyhub2RlSWQpCisgICAgeworICAgICAg
ICB0aGlzLmhpZ2hsaWdodERPTU5vZGUobm9kZUlkKTsKKyAgICAgICAgdGhpcy5faGlkZURPTU5v
ZGVIaWdobGlnaHRUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLmhpZGVET01Ob2RlSGlnaGxpZ2h0
LmJpbmQodGhpcyksIDIwMDApOworICAgIH0KKworICAgIGdldCBpbnNwZWN0TW9kZUVuYWJsZWQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2luc3BlY3RNb2RlRW5hYmxlZDsKKyAgICB9
CisKKyAgICBzZXQgaW5zcGVjdE1vZGVFbmFibGVkKGVuYWJsZWQpCisgICAgeworICAgICAgICBp
ZiAoZW5hYmxlZCA9PT0gdGhpcy5faW5zcGVjdE1vZGVFbmFibGVkKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIERPTUFnZW50LnNldEluc3BlY3RNb2RlRW5hYmxlZChlbmFibGVkLCB0
aGlzLl9idWlsZEhpZ2hsaWdodENvbmZpZygpLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIHRo
aXMuX2luc3BlY3RNb2RlRW5hYmxlZCA9IGVycm9yID8gZmFsc2UgOiBlbmFibGVkOworICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5J
bnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNldElu
c3BlY3RlZE5vZGUobm9kZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUgaW5z
dGFuY2VvZiBXSS5ET01Ob2RlKTsKKyAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMuX2luc3BlY3Rl
ZE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGNhbGxiYWNrID0gKGVy
cm9yKSA9PiB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghZXJyb3IsIGVycm9yKTsKKyAg
ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIHRoaXMuX2luc3BlY3RlZE5vZGUgPSBub2RlOworICAgICAgICB9OworCisgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMSk6IERPTS5zZXRJbnNwZWN0ZWROb2RlIGRpZCBub3QgZXhp
c3QuCisgICAgICAgIGlmICghRE9NQWdlbnQuc2V0SW5zcGVjdGVkTm9kZSkgeworICAgICAgICAg
ICAgQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZE5vZGUobm9kZS5pZCwgY2FsbGJhY2spOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgRE9NQWdlbnQuc2V0SW5zcGVj
dGVkTm9kZShub2RlLmlkLCBjYWxsYmFjayk7CisgICAgfQorCisgICAgZ2V0U3VwcG9ydGVkRXZl
bnROYW1lcyhjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghRE9NQWdlbnQuZ2V0U3VwcG9y
dGVkRXZlbnROYW1lcykKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IFNl
dCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9nZXRTdXBwb3J0ZWRFdmVudE5hbWVzUHJvbWlzZSkg
eworICAgICAgICAgICAgdGhpcy5fZ2V0U3VwcG9ydGVkRXZlbnROYW1lc1Byb21pc2UgPSBET01B
Z2VudC5nZXRTdXBwb3J0ZWRFdmVudE5hbWVzKCkKKyAgICAgICAgICAgIC50aGVuKCh7ZXZlbnRO
YW1lc30pID0+IG5ldyBTZXQoZXZlbnROYW1lcykpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2dldFN1cHBvcnRlZEV2ZW50TmFtZXNQcm9taXNlOworICAgIH0KKworICAgIHNl
dEV2ZW50TGlzdGVuZXJEaXNhYmxlZChldmVudExpc3RlbmVyLCBkaXNhYmxlZCkKKyAgICB7Cisg
ICAgICAgIERPTUFnZW50LnNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChldmVudExpc3RlbmVyLmV2
ZW50TGlzdGVuZXJJZCwgZGlzYWJsZWQsIChlcnJvcikgPT4geworICAgICAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVy
KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50
KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudExpc3RlbmVyLnR5cGUsIHtl
dmVudExpc3RlbmVyfSk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5l
cnMuc2V0KGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCBicmVha3BvaW50KTsKKworICAg
ICAgICBET01BZ2VudC5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVy
LmV2ZW50TGlzdGVuZXJJZCwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2
ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICByZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyKQorICAg
IHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlz
dGVuZXJzLmdldChldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQpOworCisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRm9yRXZl
bnRMaXN0ZW5lcnMuZGVsZXRlKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKKworICAg
ICAgICBET01BZ2VudC5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3Rl
bmVyLmV2ZW50TGlzdGVuZXJJZCwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBpZiAoZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50KQor
ICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludFJlbW92ZWQs
IHticmVha3BvaW50fSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVySWQoZXZlbnRMaXN0ZW5lcklkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2JyZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TGlzdGVuZXJJZCkgfHwg
bnVsbDsKKyAgICB9CisKKyAgICBfYnVpbGRIaWdobGlnaHRDb25maWcobW9kZSA9ICJhbGwiKQor
ICAgIHsKKyAgICAgICAgbGV0IGhpZ2hsaWdodENvbmZpZyA9IHtzaG93SW5mbzogbW9kZSA9PT0g
ImFsbCJ9OworCisgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAiY29udGVu
dCIpCisgICAgICAgICAgICBoaWdobGlnaHRDb25maWcuY29udGVudENvbG9yID0ge3I6IDExMSwg
ZzogMTY4LCBiOiAyMjAsIGE6IDAuNjZ9OworCisgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8
fCBtb2RlID09PSAicGFkZGluZyIpCisgICAgICAgICAgICBoaWdobGlnaHRDb25maWcucGFkZGlu
Z0NvbG9yID0ge3I6IDE0NywgZzogMTk2LCBiOiAxMjUsIGE6IDAuNjZ9OworCisgICAgICAgIGlm
IChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAiYm9yZGVyIikKKyAgICAgICAgICAgIGhpZ2hs
aWdodENvbmZpZy5ib3JkZXJDb2xvciA9IHtyOiAyNTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2
fTsKKworICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9PT0gIm1hcmdpbiIpCisg
ICAgICAgICAgICBoaWdobGlnaHRDb25maWcubWFyZ2luQ29sb3IgPSB7cjogMjQ2LCBnOiAxNzgs
IGI6IDEwNywgYTogMC42Nn07CisKKyAgICAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAg
ICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCA9IHRydWU7CisgICAgfQor
fTsKKworV0kuRE9NTWFuYWdlci5FdmVudCA9IHsKKyAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRv
bS1tYW5hZ2VyLWF0dHJpYnV0ZS1tb2RpZmllZCIsCisgICAgQXR0cmlidXRlUmVtb3ZlZDogImRv
bS1tYW5hZ2VyLWF0dHJpYnV0ZS1yZW1vdmVkIiwKKyAgICBDaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6
ICJkb20tbWFuYWdlci1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZCIsCisgICAgTm9kZUluc2VydGVk
OiAiZG9tLW1hbmFnZXItbm9kZS1pbnNlcnRlZCIsCisgICAgTm9kZVJlbW92ZWQ6ICJkb20tbWFu
YWdlci1ub2RlLXJlbW92ZWQiLAorICAgIEN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQ6ICJkb20t
bWFuYWdlci1jdXN0b20tZWxlbWVudC1zdGF0ZS1jaGFuZ2VkIiwKKyAgICBEb2N1bWVudFVwZGF0
ZWQ6ICJkb20tbWFuYWdlci1kb2N1bWVudC11cGRhdGVkIiwKKyAgICBDaGlsZE5vZGVDb3VudFVw
ZGF0ZWQ6ICJkb20tbWFuYWdlci1jaGlsZC1ub2RlLWNvdW50LXVwZGF0ZWQiLAorICAgIERPTU5v
ZGVXYXNJbnNwZWN0ZWQ6ICJkb20tbWFuYWdlci1kb20tbm9kZS13YXMtaW5zcGVjdGVkIiwKKyAg
ICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS1tYW5hZ2VyLWluc3BlY3QtbW9kZS1zdGF0
ZS1jaGFuZ2VkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9ET01TdG9yYWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhM2Y1NDA0MDk0ZWFmZTUwYzAzMmMzNGE4OTlkM2YxOWJmOGM0YjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9ET01TdG9yYWdlTWFuYWdlci5qcwpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5ET01TdG9yYWdlQWdlbnQpCisgICAgICAgICAg
ICBET01TdG9yYWdlQWdlbnQuZW5hYmxlKCk7CisKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5S
ZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRnJhbWUuRXZlbnQuU2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMuX3NlY3VyaXR5
T3JpZ2luRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKyAg
ICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAg
dGhpcy5fZG9tU3RvcmFnZU9iamVjdHMgPSBbXTsKKyAgICAgICAgdGhpcy5fY29va2llU3RvcmFn
ZU9iamVjdHMgPSB7fTsKKyAgICB9CisKKyAgICBnZXQgZG9tU3RvcmFnZU9iamVjdHMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzOworICAgIH0KKworICAg
IGdldCBjb29raWVTdG9yYWdlT2JqZWN0cygpCisgICAgeworICAgICAgICB2YXIgY29va2llU3Rv
cmFnZU9iamVjdHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaG9zdCBpbiB0aGlzLl9jb29raWVT
dG9yYWdlT2JqZWN0cykKKyAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2VPYmplY3RzLnB1c2godGhp
cy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF0pOworICAgICAgICByZXR1cm4gY29va2llU3Rv
cmFnZU9iamVjdHM7CisgICAgfQorCisgICAgZG9tU3RvcmFnZVdhc0FkZGVkKGlkLCBob3N0LCBp
c0xvY2FsU3RvcmFnZSkKKyAgICB7CisgICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdJLkRP
TVN0b3JhZ2VPYmplY3QoaWQsIGhvc3QsIGlzTG9jYWxTdG9yYWdlKTsKKworICAgICAgICB0aGlz
Ll9kb21TdG9yYWdlT2JqZWN0cy5wdXNoKGRvbVN0b3JhZ2UpOworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdl
T2JqZWN0V2FzQWRkZWQsIHtkb21TdG9yYWdlfSk7CisgICAgfQorCisgICAgaXRlbXNDbGVhcmVk
KHN0b3JhZ2VJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTVN0b3JhZ2VP
YnNlcnZlci4KKworICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJ
ZGVudGlmaWVyKHN0b3JhZ2VJZCk7CisgICAgICAgIGlmIChkb21TdG9yYWdlKQorICAgICAgICAg
ICAgZG9tU3RvcmFnZS5pdGVtc0NsZWFyZWQoc3RvcmFnZUlkKTsKKyAgICB9CisKKyAgICBpdGVt
UmVtb3ZlZChzdG9yYWdlSWQsIGtleSkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkRPTVN0b3JhZ2VPYnNlcnZlci4KKworICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2Rv
bVN0b3JhZ2VGb3JJZGVudGlmaWVyKHN0b3JhZ2VJZCk7CisgICAgICAgIGlmIChkb21TdG9yYWdl
KQorICAgICAgICAgICAgZG9tU3RvcmFnZS5pdGVtUmVtb3ZlZChrZXkpOworICAgIH0KKworICAg
IGl0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUpCisgICAgeworICAgICAgICAvLyBDYWxs
ZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCisKKyAgICAgICAgbGV0IGRvbVN0b3JhZ2Ug
PSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOworICAgICAgICBpZiAo
ZG9tU3RvcmFnZSkKKyAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbUFkZGVkKGtleSwgdmFsdWUp
OworICAgIH0KKworICAgIGl0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFs
dWUpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIu
CisKKyAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmll
cihzdG9yYWdlSWQpOworICAgICAgICBpZiAoZG9tU3RvcmFnZSkKKyAgICAgICAgICAgIGRvbVN0
b3JhZ2UuaXRlbVVwZGF0ZWQoa2V5LCBvbGRWYWx1ZSwgdmFsdWUpOworICAgIH0KKworICAgIGlu
c3BlY3RET01TdG9yYWdlKGlkKQorICAgIHsKKyAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlz
Ll9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRv
bVN0b3JhZ2UpOworICAgICAgICBpZiAoIWRvbVN0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVN0b3JhZ2VNYW5h
Z2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHtkb21TdG9yYWdlfSk7Cisg
ICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKGlk
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgc3RvcmFnZU9iamVjdCBvZiB0aGlzLl9kb21TdG9y
YWdlT2JqZWN0cykgeworICAgICAgICAgICAgLy8gVGhlIGlkIGlzIGFuIG9iamVjdCwgc28gd2Ug
bmVlZCB0byBjb21wYXJlIHRoZSBwcm9wZXJ0aWVzIHVzaW5nIE9iamVjdC5zaGFsbG93RXF1YWwu
CisgICAgICAgICAgICBpZiAoT2JqZWN0LnNoYWxsb3dFcXVhbChzdG9yYWdlT2JqZWN0LmlkLCBp
ZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JhZ2VPYmplY3Q7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdl
KGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3Rh
bmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUo
KSkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCB0aGUgbWFpbiBmcmFt
ZSwgd2Ugd2FudCB0byBjbGVhciBvdXIgbGlzdCBvZiBvYmplY3RzLCBiZWNhdXNlIHdlIGFyZSBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVN0b3JhZ2VN
YW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworCisgICAgICAgICAgICB0aGlzLl9hZGRET01TdG9yYWdl
SWZOZWVkZWQoZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFkZCB0aGUg
aG9zdCBvZiB0aGUgZnJhbWUgdGhhdCBjaGFuZ2VkIHRoZSBtYWluIHJlc291cmNlIHRvIHRoZSBs
aXN0IG9mIGhvc3RzIHRoZXJlIGNvdWxkIGJlIGNvb2tpZXMgZm9yLgorICAgICAgICB2YXIgaG9z
dCA9IHBhcnNlVVJMKGV2ZW50LnRhcmdldC51cmwpLmhvc3Q7CisgICAgICAgIGlmICghaG9zdCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fY29va2llU3RvcmFnZU9i
amVjdHNbaG9zdF0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29va2ll
U3RvcmFnZU9iamVjdHNbaG9zdF0gPSBuZXcgV0kuQ29va2llU3RvcmFnZU9iamVjdChob3N0KTsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3RvcmFnZU1hbmFn
ZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7Y29va2llU3RvcmFnZTogdGhp
cy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF19KTsKKyAgICB9CisKKyAgICBfYWRkRE9NU3Rv
cmFnZUlmTmVlZGVkKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFn
ZUFnZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIERvbid0IHNob3cgc3Rv
cmFnZSBpZiB3ZSBkb24ndCBoYXZlIGEgc2VjdXJpdHkgb3JpZ2luIChhYm91dDpibGFuaykuCisg
ICAgICAgIGlmICghZnJhbWUuc2VjdXJpdHlPcmlnaW4gfHwgZnJhbWUuc2VjdXJpdHlPcmlnaW4g
PT09ICI6Ly8iKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZJWE1FOiBDb25z
aWRlciBwYXNzaW5nIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3JpZ2luIGFsb25nIHRvIGRvbVN0
b3JhZ2VXYXNBZGRlZC4KKworICAgICAgICB2YXIgbG9jYWxTdG9yYWdlSWRlbnRpZmllciA9IHtz
ZWN1cml0eU9yaWdpbjogZnJhbWUuc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiB0cnVl
fTsKKyAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihsb2NhbFN0b3Jh
Z2VJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHRoaXMuZG9tU3RvcmFnZVdhc0FkZGVkKGxvY2Fs
U3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3Qs
IHRydWUpOworCisgICAgICAgIHZhciBzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIgPSB7c2VjdXJp
dHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogZmFsc2V9Owor
ICAgICAgICBpZiAoIXRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHNlc3Npb25TdG9yYWdl
SWRlbnRpZmllcikpCisgICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChzZXNzaW9u
U3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3Qs
IGZhbHNlKTsKKyAgICB9CisKKyAgICBfc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UoZXZlbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5G
cmFtZSk7CisKKyAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGV2ZW50LnRhcmdl
dCk7CisgICAgfQorfTsKKworV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQgPSB7CisgICAgQ29v
a2llU3RvcmFnZU9iamVjdFdhc0FkZGVkOiAiZG9tLXN0b3JhZ2UtbWFuYWdlci1jb29raWUtc3Rv
cmFnZS1vYmplY3Qtd2FzLWFkZGVkIiwKKyAgICBET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQ6ICJk
b20tc3RvcmFnZS1tYW5hZ2VyLWRvbS1zdG9yYWdlLW9iamVjdC13YXMtYWRkZWQiLAorICAgIERP
TVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQ6ICJkb20tc3RvcmFnZS1tYW5hZ2VyLWRvbS1zdG9y
YWdlLW9iamVjdC13YXMtaW5zcGVjdGVkIiwKKyAgICBDbGVhcmVkOiAiZG9tLXN0b3JhZ2UtbWFu
YWdlci1jbGVhcmVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmZkYTkzYmM3OWU5MDlhZTBiZDM1YzQyZTExMjE5
NmQ5MTg0YzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVN
YW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBET01U
cmVlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAotewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKLSAg
ICAgICAgdGhpcy5fZG9jdW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9hdHRyaWJ1dGVMb2Fk
Tm9kZUlkcyA9IHt9OwotICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2Vk
ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IDA7Ci0g
ICAgICAgIHRoaXMuX2luc3BlY3RlZE5vZGUgPSBudWxsOwotCi0gICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzRm9yRXZlbnRMaXN0ZW5lcnMgPSBuZXcgTWFwOwotCi0gICAgICAgIFdJLkZyYW1lLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
Ll9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwot
Ci0gICAgZ2V0IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cygpCi0gICAgewotICAgICAgICByZXR1
cm4gQXJyYXkuZnJvbSh0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJzLnZhbHVlcygp
KTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2spCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2RvY3Vt
ZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlz
Ll9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzKSB7Ci0gICAgICAgICAgICB0aGlzLl9w
ZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVx
dWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107Ci0KLSAgICAgICAgZnVuY3Rpb24gb25Eb2N1bWVu
dEF2YWlsYWJsZShlcnJvciwgcm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFlcnJv
cikKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXREb2N1bWVudChyb290KTsKLQotICAgICAgICAg
ICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxi
YWNrcykKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOwotICAg
ICAgICB9Ci0KLSAgICAgICAgRE9NQWdlbnQuZ2V0RG9jdW1lbnQob25Eb2N1bWVudEF2YWlsYWJs
ZS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBlbnN1cmVEb2N1bWVudCgpCi0gICAgewotICAg
ICAgICB0aGlzLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbigpe30pOwotICAgIH0KLQotICAgIHB1
c2hOb2RlVG9Gcm9udGVuZChvYmplY3RJZCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlz
Ll9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5yZXF1ZXN0Tm9kZS5iaW5k
KERPTUFnZW50LCBvYmplY3RJZCksIGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICBwdXNoTm9kZUJ5
UGF0aFRvRnJvbnRlbmQocGF0aCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9kaXNw
YXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRl
bmQuYmluZChET01BZ2VudCwgcGF0aCksIGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICBkaWRBZGRF
dmVudExpc3RlbmVyKG5vZGVJZCkKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRP
TU9ic2VydmVyLgotCi0gICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlk
XTsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG5v
ZGUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5l
cnNDaGFuZ2VkKTsKLSAgICB9Ci0KLSAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQp
Ci0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KLQotICAgICAg
ICBsZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIGlmICghbm9k
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCk7Ci0gICAgfQot
Ci0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykKLSAg
ICB7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQot
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXJyb3IsIHJlc3VsdCkgewotICAgICAgICAgICAgaWYg
KGVycm9yKQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGR1cmluZyBET01B
Z2VudCBvcGVyYXRpb246ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/
IG51bGwgOiByZXN1bHQpOwotICAgICAgICB9OwotICAgIH0KLQotICAgIF9kaXNwYXRjaFdoZW5E
b2N1bWVudEF2YWlsYWJsZShmdW5jLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBjYWxs
YmFja1dyYXBwZXIgPSB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spOwotCi0gICAg
ICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fZG9jdW1lbnQpCi0gICAgICAgICAgICAgICAgZnVuYyhjYWxsYmFja1dyYXBw
ZXIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrV3Jh
cHBlcikKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tXcmFwcGVyKCJObyBkb2N1bWVudCIp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRoaXMucmVxdWVzdERvY3VtZW50
KG9uRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgX2F0dHJpYnV0
ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFsdWUpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9
IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBub2RlLl9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVlTWFuYWdlci5F
dmVudC5BdHRyaWJ1dGVNb2RpZmllZCwge25vZGUsIG5hbWV9KTsKLSAgICAgICAgbm9kZS5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZS5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwg
e25hbWV9KTsKLSAgICB9Ci0KLSAgICBfYXR0cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpCi0g
ICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAg
ICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBub2RlLl9yZW1v
dmVBdHRyaWJ1dGUobmFtZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHtub2RlLCBuYW1lfSk7
Ci0gICAgICAgIG5vZGUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQu
QXR0cmlidXRlUmVtb3ZlZCwge25hbWV9KTsKLSAgICB9Ci0KLSAgICBfaW5saW5lU3R5bGVJbnZh
bGlkYXRlZChub2RlSWRzKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgbm9kZUlkIG9mIG5vZGVJ
ZHMpCi0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVMb2FkTm9kZUlkc1tub2RlSWRdID0gdHJ1
ZTsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWROb2RlQXR0cmlidXRlc1RpbWVvdXQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2xvYWROb2RlQXR0cmlidXRlc1RpbWVvdXQgPSBz
ZXRUaW1lb3V0KHRoaXMuX2xvYWROb2RlQXR0cmlidXRlcy5iaW5kKHRoaXMpLCAwKTsKLSAgICB9
Ci0KLSAgICBfbG9hZE5vZGVBdHRyaWJ1dGVzKCkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrKG5vZGVJZCwgZXJyb3IsIGF0dHJpYnV0ZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIGR1cmlu
ZyBET01BZ2VudCBvcGVyYXRpb246ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9k
ZVtub2RlSWRdOwotICAgICAgICAgICAgaWYgKG5vZGUpIHsKLSAgICAgICAgICAgICAgICBub2Rl
Ll9zZXRBdHRyaWJ1dGVzUGF5bG9hZChhdHRyaWJ1dGVzKTsKLSAgICAgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1
dGVNb2RpZmllZCwge25vZGUsIG5hbWU6ICJzdHlsZSJ9KTsKLSAgICAgICAgICAgICAgICBub2Rl
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkF0dHJpYnV0ZU1vZGlm
aWVkLCB7bmFtZTogInN0eWxlIn0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dCA9IDA7Ci0KLSAgICAgICAgZm9yICh2
YXIgbm9kZUlkIGluIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzKSB7Ci0gICAgICAgICAgICB2
YXIgbm9kZUlkQXNOdW1iZXIgPSBwYXJzZUludChub2RlSWQpOwotICAgICAgICAgICAgRE9NQWdl
bnQuZ2V0QXR0cmlidXRlcyhub2RlSWRBc051bWJlciwgY2FsbGJhY2suYmluZCh0aGlzLCBub2Rl
SWRBc051bWJlcikpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2Rl
SWRzID0ge307Ci0gICAgfQotCi0gICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIG5l
d1ZhbHVlKQotICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2Rl
SWRdOwotICAgICAgICBub2RlLl9ub2RlVmFsdWUgPSBuZXdWYWx1ZTsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVy
RGF0YU1vZGlmaWVkLCB7bm9kZX0pOwotICAgIH0KLQotICAgIG5vZGVGb3JJZChub2RlSWQpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKLSAgICB9Ci0K
LSAgICBfZG9jdW1lbnRVcGRhdGVkKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NldERvY3VtZW50
KG51bGwpOwotICAgIH0KLQotICAgIF9zZXREb2N1bWVudChwYXlsb2FkKQotICAgIHsKLSAgICAg
ICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNGb3JF
dmVudExpc3RlbmVycy5jbGVhcigpOwotCi0gICAgICAgIGxldCBuZXdEb2N1bWVudCA9IG51bGw7
Ci0gICAgICAgIGlmIChwYXlsb2FkICYmICJub2RlSWQiIGluIHBheWxvYWQpCi0gICAgICAgICAg
ICBuZXdEb2N1bWVudCA9IG5ldyBXSS5ET01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2Fk
KTsKLQotICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQgPT09IG5ld0RvY3VtZW50KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2RvY3VtZW50ID0gbmV3RG9jdW1lbnQ7Ci0g
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2
ZW50LkRvY3VtZW50VXBkYXRlZCwge2RvY3VtZW50OiB0aGlzLl9kb2N1bWVudH0pOwotICAgIH0K
LQotICAgIF9zZXREZXRhY2hlZFJvb3QocGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG5ldyBXSS5E
T01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2FkKTsKLSAgICB9Ci0KLSAgICBfc2V0Q2hp
bGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMpCi0gICAgewotICAgICAgICBpZiAoIXBhcmVudElk
ICYmIHBheWxvYWRzLmxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5fc2V0RGV0YWNoZWRSb290
KHBheWxvYWRzWzBdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBwYXJlbnQgPSB0aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07Ci0gICAgICAgIHBhcmVu
dC5fc2V0Q2hpbGRyZW5QYXlsb2FkKHBheWxvYWRzKTsKLSAgICB9Ci0KLSAgICBfY2hpbGROb2Rl
Q291bnRVcGRhdGVkKG5vZGVJZCwgbmV3VmFsdWUpCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9
IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIG5vZGUuY2hpbGROb2RlQ291bnQg
PSBuZXdWYWx1ZTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
VHJlZU1hbmFnZXIuRXZlbnQuQ2hpbGROb2RlQ291bnRVcGRhdGVkLCBub2RlKTsKLSAgICB9Ci0K
LSAgICBfY2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgcGF5bG9hZCkKLSAgICB7
Ci0gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07Ci0gICAg
ICAgIHZhciBwcmV2ID0gdGhpcy5faWRUb0RPTU5vZGVbcHJldklkXTsKLSAgICAgICAgdmFyIG5v
ZGUgPSBwYXJlbnQuX2luc2VydENoaWxkKHByZXYsIHBheWxvYWQpOwotICAgICAgICB0aGlzLl9p
ZFRvRE9NTm9kZVtub2RlLmlkXSA9IG5vZGU7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBh
cmVudH0pOwotICAgIH0KLQotICAgIF9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBub2RlSWQp
Ci0gICAgewotICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRd
OwotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAg
IHBhcmVudC5fcmVtb3ZlQ2hpbGQobm9kZSk7Ci0gICAgICAgIHRoaXMuX3VuYmluZChub2RlKTsK
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuTm9kZVJlbW92ZWQsIHtub2RlLCBwYXJlbnR9KTsKLSAgICB9Ci0KLSAgICBfY3VzdG9t
RWxlbWVudFN0YXRlQ2hhbmdlZChlbGVtZW50SWQsIG5ld1N0YXRlKQotICAgIHsKLSAgICAgICAg
Y29uc3Qgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW2VsZW1lbnRJZF07Ci0gICAgICAgIG5vZGUu
X2N1c3RvbUVsZW1lbnRTdGF0ZSA9IG5ld1N0YXRlOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01UcmVlTWFuYWdlci5FdmVudC5DdXN0b21FbGVtZW50U3RhdGVD
aGFuZ2VkLCB7bm9kZX0pOwotICAgIH0KLQotICAgIF9wc2V1ZG9FbGVtZW50QWRkZWQocGFyZW50
SWQsIHBzZXVkb0VsZW1lbnQpCi0gICAgewotICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRU
b0RPTU5vZGVbcGFyZW50SWRdOwotICAgICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB2YXIgbm9kZSA9IG5ldyBXSS5ET01Ob2RlKHRoaXMsIHBhcmVudC5v
d25lckRvY3VtZW50LCBmYWxzZSwgcHNldWRvRWxlbWVudCk7Ci0gICAgICAgIG5vZGUucGFyZW50
Tm9kZSA9IHBhcmVudDsKLSAgICAgICAgdGhpcy5faWRUb0RPTU5vZGVbbm9kZS5pZF0gPSBub2Rl
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghcGFyZW50LnBzZXVkb0VsZW1lbnRzKCkuZ2V0KG5v
ZGUucHNldWRvVHlwZSgpKSk7Ci0gICAgICAgIHBhcmVudC5wc2V1ZG9FbGVtZW50cygpLnNldChu
b2RlLnBzZXVkb1R5cGUoKSwgbm9kZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGUsIHBhcmVu
dH0pOwotICAgIH0KLQotICAgIF9wc2V1ZG9FbGVtZW50UmVtb3ZlZChwYXJlbnRJZCwgcHNldWRv
RWxlbWVudElkKQotICAgIHsKLSAgICAgICAgdmFyIHBzZXVkb0VsZW1lbnQgPSB0aGlzLl9pZFRv
RE9NTm9kZVtwc2V1ZG9FbGVtZW50SWRdOwotICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHBhcmVudCA9IHBzZXVkb0VsZW1lbnQu
cGFyZW50Tm9kZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50KTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQocGFyZW50LmlkID09PSBwYXJlbnRJZCk7Ci0gICAgICAgIGlmICghcGFyZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBhcmVudC5fcmVtb3ZlQ2hpbGQocHNl
dWRvRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3VuYmluZChwc2V1ZG9FbGVtZW50KTsKLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQu
Tm9kZVJlbW92ZWQsIHtub2RlOiBwc2V1ZG9FbGVtZW50LCBwYXJlbnR9KTsKLSAgICB9Ci0KLSAg
ICBfdW5iaW5kKG5vZGUpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVb
bm9kZS5pZF07Ci0KLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IG5vZGUuY2hpbGRyZW4gJiYgaSA8
IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl91bmJpbmQobm9k
ZS5jaGlsZHJlbltpXSk7Ci0KLSAgICAgICAgbGV0IHRlbXBsYXRlQ29udGVudCA9IG5vZGUudGVt
cGxhdGVDb250ZW50KCk7Ci0gICAgICAgIGlmICh0ZW1wbGF0ZUNvbnRlbnQpCi0gICAgICAgICAg
ICB0aGlzLl91bmJpbmQodGVtcGxhdGVDb250ZW50KTsKLQotICAgICAgICBmb3IgKGxldCBwc2V1
ZG9FbGVtZW50IG9mIG5vZGUucHNldWRvRWxlbWVudHMoKS52YWx1ZXMoKSkKLSAgICAgICAgICAg
IHRoaXMuX3VuYmluZChwc2V1ZG9FbGVtZW50KTsKLQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IHNoYWRvdyByb290cy4KLSAgICB9Ci0KLSAgICBnZXQgcmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxs
b3dlZCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUlz
QWxsb3dlZDsKLSAgICB9Ci0KLSAgICBpbnNwZWN0RWxlbWVudChub2RlSWQpCi0gICAgewotICAg
ICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgIGlmICgh
bm9kZSB8fCAhbm9kZS5vd25lckRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50
LkRPTU5vZGVXYXNJbnNwZWN0ZWQsIHtub2RlfSk7Ci0KLSAgICAgICAgdGhpcy5faW5zcGVjdE1v
ZGVFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsKLSAgICB9
Ci0KLSAgICBpbnNwZWN0Tm9kZU9iamVjdChyZW1vdGVPYmplY3QpCi0gICAgewotICAgICAgICB0
aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkID0gZmFsc2U7Ci0KLSAgICAgICAgZnVu
Y3Rpb24gbm9kZUF2YWlsYWJsZShub2RlSWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlbW90
ZU9iamVjdC5yZWxlYXNlKCk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVJZCk7
Ci0gICAgICAgICAgICBpZiAoIW5vZGVJZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIHRoaXMuaW5zcGVjdEVsZW1lbnQobm9kZUlkKTsKLQotICAgICAgICAgICAgLy8g
UmUtcmVzb2x2ZSB0aGUgbm9kZSBpbiB0aGUgY29uc29sZSdzIG9iamVjdCBncm91cCB3aGVuIGFk
ZGluZyB0byB0aGUgY29uc29sZS4KLSAgICAgICAgICAgIGxldCBkb21Ob2RlID0gdGhpcy5ub2Rl
Rm9ySWQobm9kZUlkKTsKLSAgICAgICAgICAgIFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZShk
b21Ob2RlLCBXSS5SdW50aW1lTWFuYWdlci5Db25zb2xlT2JqZWN0R3JvdXApLnRoZW4oKHJlbW90
ZU9iamVjdCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpYWxMb2dTdHlsZXMgPSB0
cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJldmVhbENvbnNvbGUgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBXSS5jb25zb2xlTG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRp
YXRlRXhlY3V0aW9uV2l0aFJlc3VsdChXSS5VSVN0cmluZygiU2VsZWN0ZWQgRWxlbWVudCIpLCBy
ZW1vdGVPYmplY3QsIHNwZWNpYWxMb2dTdHlsZXMsIHNob3VsZFJldmVhbENvbnNvbGUpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZW1vdGVPYmplY3QucHVzaE5vZGVU
b0Zyb250ZW5kKG5vZGVBdmFpbGFibGUuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgcGVyZm9y
bVNlYXJjaChxdWVyeSwgc2VhcmNoQ2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLmNhbmNl
bFNlYXJjaCgpOwotCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzZWFyY2hJZCwg
cmVzdWx0c0NvdW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHNl
YXJjaElkOwotICAgICAgICAgICAgc2VhcmNoQ2FsbGJhY2socmVzdWx0c0NvdW50KTsKLSAgICAg
ICAgfQotICAgICAgICBET01BZ2VudC5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCBjYWxsYmFjay5iaW5k
KHRoaXMpKTsKLSAgICB9Ci0KLSAgICBzZWFyY2hSZXN1bHQoaW5kZXgsIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgbm9kZUlkcykKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3Ro
ICE9PSAxKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY2FsbGJhY2so
dGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkc1swXV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHRoaXMuX3NlYXJjaElkKQotICAgICAgICAgICAgRE9NQWdlbnQuZ2V0U2VhcmNoUmVzdWx0cyh0
aGlzLl9zZWFyY2hJZCwgaW5kZXgsIGluZGV4ICsgMSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgfQotCi0gICAg
Y2FuY2VsU2VhcmNoKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zZWFyY2hJZCkgewotICAg
ICAgICAgICAgRE9NQWdlbnQuZGlzY2FyZFNlYXJjaFJlc3VsdHModGhpcy5fc2VhcmNoSWQpOwot
ICAgICAgICAgICAgdGhpcy5fc2VhcmNoSWQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBxdWVyeVNlbGVjdG9yKG5vZGVPck5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNrKQot
ICAgIHsKLSAgICAgICAgbGV0IG5vZGVJZCA9IG5vZGVPck5vZGVJZCBpbnN0YW5jZW9mIFdJLkRP
TU5vZGUgPyBub2RlT3JOb2RlSWQuaWQgOiBub2RlT3JOb2RlSWQ7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZiBub2RlSWQgPT09ICJudW1iZXIiKTsKLQotICAgICAgICBpZiAodHlwZW9m
IGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxl
Y3Rvcihub2RlSWQsIHNlbGVjdG9yLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2sp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIERPTUFnZW50LnF1ZXJ5U2VsZWN0
b3Iobm9kZUlkLCBzZWxlY3RvcikudGhlbigoe25vZGVJZH0pID0+IG5vZGVJZCk7Ci0gICAgfQot
Ci0gICAgcXVlcnlTZWxlY3RvckFsbChub2RlT3JOb2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIGxldCBub2RlSWQgPSBub2RlT3JOb2RlSWQgaW5zdGFuY2VvZiBXSS5E
T01Ob2RlID8gbm9kZU9yTm9kZUlkLmlkIDogbm9kZU9yTm9kZUlkOwotICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2Ygbm9kZUlkID09PSAibnVtYmVyIik7Ci0KLSAgICAgICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwobm9kZUlkLCBzZWxlY3RvciwgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxi
YWNrKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBET01BZ2VudC5xdWVyeVNl
bGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0b3IpLnRoZW4oKHtub2RlSWRzfSkgPT4gbm9kZUlkcyk7
Ci0gICAgfQotCi0gICAgaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KSB7Ci0gICAgICAgICAg
ICBjbGVhclRpbWVvdXQodGhpcy5faGlkZURPTU5vZGVIaWdobGlnaHRUaW1lb3V0KTsKLSAgICAg
ICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCA9IHVuZGVmaW5lZDsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkRE9NTm9kZUlkID0gbm9kZUlkOwot
ICAgICAgICBpZiAobm9kZUlkKQotICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZS5p
bnZva2Uoe25vZGVJZCwgaGlnaGxpZ2h0Q29uZmlnOiB0aGlzLl9idWlsZEhpZ2hsaWdodENvbmZp
Zyhtb2RlKX0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxp
Z2h0KCk7Ci0gICAgfQotCi0gICAgaGlnaGxpZ2h0RE9NTm9kZUxpc3Qobm9kZUlkcywgbW9kZSkK
LSAgICB7Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMSk6IERPTS5oaWdobGlnaHRO
b2RlTGlzdCBkaWQgbm90IGV4aXN0LgotICAgICAgICBpZiAoIURPTUFnZW50LmhpZ2hsaWdodE5v
ZGVMaXN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9oaWRlRE9N
Tm9kZUhpZ2hsaWdodFRpbWVvdXQpIHsKLSAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9o
aWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQpOwotICAgICAgICAgICAgdGhpcy5faGlkZURPTU5v
ZGVIaWdobGlnaHRUaW1lb3V0ID0gdW5kZWZpbmVkOwotICAgICAgICB9Ci0KLSAgICAgICAgRE9N
QWdlbnQuaGlnaGxpZ2h0Tm9kZUxpc3Qobm9kZUlkcywgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25m
aWcobW9kZSkpOwotICAgIH0KLQotICAgIGhpZ2hsaWdodFNlbGVjdG9yKHNlbGVjdG9yVGV4dCwg
ZnJhbWVJZCwgbW9kZSkKLSAgICB7Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTog
RE9NLmhpZ2hsaWdodFNlbGVjdG9yIGRpZCBub3QgZXhpc3QuCi0gICAgICAgIGlmICghRE9NQWdl
bnQuaGlnaGxpZ2h0U2VsZWN0b3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCkgewotICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCk7Ci0gICAgICAgICAgICB0
aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRpbWVvdXQgPSB1bmRlZmluZWQ7Ci0gICAgICAgIH0K
LQotICAgICAgICBET01BZ2VudC5oaWdobGlnaHRTZWxlY3Rvcih0aGlzLl9idWlsZEhpZ2hsaWdo
dENvbmZpZyhtb2RlKSwgc2VsZWN0b3JUZXh0LCBmcmFtZUlkKTsKLSAgICB9Ci0KLSAgICBoaWdo
bGlnaHRSZWN0KHJlY3QsIHVzZVBhZ2VDb29yZGluYXRlcykKLSAgICB7Ci0gICAgICAgIERPTUFn
ZW50LmhpZ2hsaWdodFJlY3QuaW52b2tlKHsKLSAgICAgICAgICAgIHg6IHJlY3QueCwKLSAgICAg
ICAgICAgIHk6IHJlY3QueSwKLSAgICAgICAgICAgIHdpZHRoOiByZWN0LndpZHRoLAotICAgICAg
ICAgICAgaGVpZ2h0OiByZWN0LmhlaWdodCwKLSAgICAgICAgICAgIGNvbG9yOiB7cjogMTExLCBn
OiAxNjgsIGI6IDIyMCwgYTogMC42Nn0sCi0gICAgICAgICAgICBvdXRsaW5lQ29sb3I6IHtyOiAy
NTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2fSwKLSAgICAgICAgICAgIHVzZVBhZ2VDb29yZGlu
YXRlcwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpCi0g
ICAgewotICAgICAgICB0aGlzLmhpZ2hsaWdodERPTU5vZGUoMCk7Ci0gICAgfQotCi0gICAgaGln
aGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMobm9kZUlkKQotICAgIHsKLSAgICAgICAgdGhpcy5o
aWdobGlnaHRET01Ob2RlKG5vZGVJZCk7Ci0gICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxp
Z2h0VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKHRo
aXMpLCAyMDAwKTsKLSAgICB9Ci0KLSAgICBnZXQgaW5zcGVjdE1vZGVFbmFibGVkKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9pbnNwZWN0TW9kZUVuYWJsZWQ7Ci0gICAgfQotCi0gICAg
c2V0IGluc3BlY3RNb2RlRW5hYmxlZChlbmFibGVkKQotICAgIHsKLSAgICAgICAgaWYgKGVuYWJs
ZWQgPT09IHRoaXMuX2luc3BlY3RNb2RlRW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBET01BZ2VudC5zZXRJbnNwZWN0TW9kZUVuYWJsZWQoZW5hYmxlZCwgdGhpcy5fYnVp
bGRIaWdobGlnaHRDb25maWcoKSwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9pbnNw
ZWN0TW9kZUVuYWJsZWQgPSBlcnJvciA/IGZhbHNlIDogZW5hYmxlZDsKLSAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lkluc3Bl
Y3RNb2RlU3RhdGVDaGFuZ2VkKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc2V0SW5zcGVj
dGVkTm9kZShub2RlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5j
ZW9mIFdJLkRPTU5vZGUpOwotICAgICAgICBpZiAobm9kZSA9PT0gdGhpcy5faW5zcGVjdGVkTm9k
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgY2FsbGJhY2sgPSAoZXJyb3Ip
ID0+IHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFlcnJvciwgZXJyb3IpOwotICAgICAg
ICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
dGhpcy5faW5zcGVjdGVkTm9kZSA9IG5vZGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDExKTogRE9NLnNldEluc3BlY3RlZE5vZGUgZGlkIG5vdCBleGlzdC4K
LSAgICAgICAgaWYgKCFET01BZ2VudC5zZXRJbnNwZWN0ZWROb2RlKSB7Ci0gICAgICAgICAgICBD
b25zb2xlQWdlbnQuYWRkSW5zcGVjdGVkTm9kZShub2RlLmlkLCBjYWxsYmFjayk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBET01BZ2VudC5zZXRJbnNwZWN0ZWRO
b2RlKG5vZGUuaWQsIGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICBnZXRTdXBwb3J0ZWRFdmVudE5h
bWVzKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKCFET01BZ2VudC5nZXRTdXBwb3J0ZWRF
dmVudE5hbWVzKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgU2V0KTsK
LQotICAgICAgICBpZiAoIXRoaXMuX2dldFN1cHBvcnRlZEV2ZW50TmFtZXNQcm9taXNlKSB7Ci0g
ICAgICAgICAgICB0aGlzLl9nZXRTdXBwb3J0ZWRFdmVudE5hbWVzUHJvbWlzZSA9IERPTUFnZW50
LmdldFN1cHBvcnRlZEV2ZW50TmFtZXMoKQotICAgICAgICAgICAgLnRoZW4oKHtldmVudE5hbWVz
fSkgPT4gbmV3IFNldChldmVudE5hbWVzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dGhpcy5fZ2V0U3VwcG9ydGVkRXZlbnROYW1lc1Byb21pc2U7Ci0gICAgfQotCi0gICAgc2V0RXZl
bnRMaXN0ZW5lckRpc2FibGVkKGV2ZW50TGlzdGVuZXIsIGRpc2FibGVkKQotICAgIHsKLSAgICAg
ICAgRE9NQWdlbnQuc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKGV2ZW50TGlzdGVuZXIuZXZlbnRM
aXN0ZW5lcklkLCBkaXNhYmxlZCwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyb3Ip
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIHNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIpCi0g
ICAgewotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TGlzdGVuZXIudHlwZSwge2V2ZW50
TGlzdGVuZXJ9KTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5z
ZXQoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsIGJyZWFrcG9pbnQpOwotCi0gICAgICAg
IERPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZl
bnRMaXN0ZW5lcklkLCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAg
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRC
cmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIpCi0gICAgewot
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRzRm9yRXZlbnRMaXN0ZW5l
cnMuZ2V0KGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExp
c3RlbmVycy5kZWxldGUoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwotCi0gICAgICAg
IERPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIu
ZXZlbnRMaXN0ZW5lcklkLCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCi0gICAg
ICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwge2Jy
ZWFrcG9pbnR9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgYnJlYWtwb2ludEZvckV2ZW50
TGlzdGVuZXJJZChldmVudExpc3RlbmVySWQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
YnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycy5nZXQoZXZlbnRMaXN0ZW5lcklkKSB8fCBudWxs
OwotICAgIH0KLQotICAgIF9idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlID0gImFsbCIpCi0gICAg
ewotICAgICAgICBsZXQgaGlnaGxpZ2h0Q29uZmlnID0ge3Nob3dJbmZvOiBtb2RlID09PSAiYWxs
In07Ci0KLSAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJjb250ZW50IikK
LSAgICAgICAgICAgIGhpZ2hsaWdodENvbmZpZy5jb250ZW50Q29sb3IgPSB7cjogMTExLCBnOiAx
NjgsIGI6IDIyMCwgYTogMC42Nn07Ci0KLSAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1v
ZGUgPT09ICJwYWRkaW5nIikKLSAgICAgICAgICAgIGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nQ29s
b3IgPSB7cjogMTQ3LCBnOiAxOTYsIGI6IDEyNSwgYTogMC42Nn07Ci0KLSAgICAgICAgaWYgKG1v
ZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJib3JkZXIiKQotICAgICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLmJvcmRlckNvbG9yID0ge3I6IDI1NSwgZzogMjI5LCBiOiAxNTMsIGE6IDAuNjZ9Owot
Ci0gICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAibWFyZ2luIikKLSAgICAg
ICAgICAgIGhpZ2hsaWdodENvbmZpZy5tYXJnaW5Db2xvciA9IHtyOiAyNDYsIGc6IDE3OCwgYjog
MTA3LCBhOiAwLjY2fTsKLQotICAgICAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnOwotICAgIH0K
LQotICAgIC8vIFByaXZhdGUKLQotICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCi0g
ICAgewotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAg
ICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkID0gdHJ1ZTsKLSAgICB9Ci19Owot
Ci1XSS5ET01UcmVlTWFuYWdlci5FdmVudCA9IHsKLSAgICBBdHRyaWJ1dGVNb2RpZmllZDogImRv
bS10cmVlLW1hbmFnZXItYXR0cmlidXRlLW1vZGlmaWVkIiwKLSAgICBBdHRyaWJ1dGVSZW1vdmVk
OiAiZG9tLXRyZWUtbWFuYWdlci1hdHRyaWJ1dGUtcmVtb3ZlZCIsCi0gICAgQ2hhcmFjdGVyRGF0
YU1vZGlmaWVkOiAiZG9tLXRyZWUtbWFuYWdlci1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZCIsCi0g
ICAgTm9kZUluc2VydGVkOiAiZG9tLXRyZWUtbWFuYWdlci1ub2RlLWluc2VydGVkIiwKLSAgICBO
b2RlUmVtb3ZlZDogImRvbS10cmVlLW1hbmFnZXItbm9kZS1yZW1vdmVkIiwKLSAgICBDdXN0b21F
bGVtZW50U3RhdGVDaGFuZ2VkOiAiZG9tLXRyZWUtbWFuYWdlci1jdXN0b20tZWxlbWVudC1zdGF0
ZS1jaGFuZ2VkIiwKLSAgICBEb2N1bWVudFVwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvY3Vt
ZW50LXVwZGF0ZWQiLAotICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFn
ZXItY2hpbGQtbm9kZS1jb3VudC11cGRhdGVkIiwKLSAgICBET01Ob2RlV2FzSW5zcGVjdGVkOiAi
ZG9tLXRyZWUtbWFuYWdlci1kb20tbm9kZS13YXMtaW5zcGVjdGVkIiwKLSAgICBJbnNwZWN0TW9k
ZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVjdC1tb2RlLXN0YXRlLWNoYW5n
ZWQiLAotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2VyLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwY2Q2M2RhYzhhZmQyYzdiNjAzZmU4OWY1NzNiMjE3MTAzZGVk
NDgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFn
ZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
V0kuRGFzaGJvYXJkTWFuYWdlciA9IGNsYXNzIERhc2hib2FyZE1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBzdXBlcigpOwotCi0g
ICAgICAgIHRoaXMuX2Rhc2hib2FyZHMgPSB7fTsKLSAgICAgICAgdGhpcy5fZGFzaGJvYXJkcy5k
ZWZhdWx0ID0gbmV3IFdJLkRlZmF1bHREYXNoYm9hcmQ7Ci0gICAgICAgIHRoaXMuX2Rhc2hib2Fy
ZHMuZGVidWdnZXIgPSBuZXcgV0kuRGVidWdnZXJEYXNoYm9hcmQ7Ci0gICAgfQotCi0gICAgZ2V0
IGRhc2hib2FyZHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZHM7Ci0g
ICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZDg0ZTFhMDYyMzAzNWNkYjJmODhmMmU3NDFkNGUyNTAwYTFkZGRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJh
c2VNYW5hZ2VyLmpzCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5E
YXRhYmFzZU1hbmFnZXIgPSBjbGFzcyBEYXRhYmFzZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
K3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAg
IGlmICh3aW5kb3cuRGF0YWJhc2VBZ2VudCkKKyAgICAgICAgICAgIERhdGFiYXNlQWdlbnQuZW5h
YmxlKCk7CisKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVu
dC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhp
cyk7CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgLy8gUHVibGlj
CisKKyAgICBpbml0aWFsaXplKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0
cyA9IFtdOworICAgIH0KKworICAgIGdldCBkYXRhYmFzZXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2RhdGFiYXNlT2JqZWN0czsKKyAgICB9CisKKyAgICBkYXRhYmFzZVdhc0FkZGVk
KGlkLCBob3N0LCBuYW1lLCB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20g
V0kuRGF0YWJhc2VPYnNlcnZlci4KKworICAgICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV0kuRGF0
YWJhc2VPYmplY3QoaWQsIGhvc3QsIG5hbWUsIHZlcnNpb24pOworCisgICAgICAgIHRoaXMuX2Rh
dGFiYXNlT2JqZWN0cy5wdXNoKGRhdGFiYXNlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzQWRkZWQsIHtk
YXRhYmFzZX0pOworICAgIH0KKworICAgIGluc3BlY3REYXRhYmFzZShpZCkKKyAgICB7CisgICAg
ICAgIHZhciBkYXRhYmFzZSA9IHRoaXMuX2RhdGFiYXNlRm9ySWRlbnRpZmllcihpZCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFiYXNlKTsKKyAgICAgICAgaWYgKCFkYXRhYmFzZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVkLCB7ZGF0YWJhc2V9
KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdl
KGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3Rh
bmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUo
KSkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCB0aGUgbWFpbiBmcmFt
ZSwgd2Ugd2FudCB0byBjbGVhciBvdXIgbGlzdCBvZiBvYmplY3RzLCBiZWNhdXNlIHdlIGFyZSBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRhdGFiYXNlTWFu
YWdlci5FdmVudC5DbGVhcmVkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9kYXRhYmFzZUZv
cklkZW50aWZpZXIoaWQpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X2RhdGFiYXNlT2JqZWN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Rh
dGFiYXNlT2JqZWN0c1tpXS5pZCA9PT0gaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2RhdGFiYXNlT2JqZWN0c1tpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOwor
ICAgIH0KK307CisKK1dJLkRhdGFiYXNlTWFuYWdlci5FdmVudCA9IHsKKyAgICBEYXRhYmFzZVdh
c0FkZGVkOiAiZGF0YWJhc2UtbWFuYWdlci1kYXRhYmFzZS13YXMtYWRkZWQiLAorICAgIERhdGFi
YXNlV2FzSW5zcGVjdGVkOiAiZGF0YWJhc2UtbWFuYWdlci1kYXRhYmFzZS13YXMtaW5zcGVjdGVk
IiwKKyAgICBDbGVhcmVkOiAiZGF0YWJhc2UtbWFuYWdlci1jbGVhcmVkIiwKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFt
ZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NTIyNGM4Yzk4NjVmNzJkODkzMjlkYTFmYmU5NzMxNjFhNzBlNGMyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNzgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5GcmFtZVJl
c291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAg
ICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9t
YWluRnJhbWUgPSBudWxsOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVy
TWFwID0gbmV3IE1hcDsKLSAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMgPSBuZXcgTWFw
OwotICAgICAgICB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwgPSBuZXcgTWFwOwotCi0g
ICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gdHJ1
ZTsKLQotICAgICAgICBpZiAod2luZG93LlBhZ2VBZ2VudCkgewotICAgICAgICAgICAgUGFnZUFn
ZW50LmVuYWJsZSgpOwotICAgICAgICAgICAgUGFnZUFnZW50LmdldFJlc291cmNlVHJlZSh0aGlz
Ll9wcm9jZXNzTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZC5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh3aW5kb3cuU2VydmljZVdvcmtlckFnZW50KQotICAgICAgICAg
ICAgU2VydmljZVdvcmtlckFnZW50LmdldEluaXRpYWxpemF0aW9uSW5mbyh0aGlzLl9wcm9jZXNz
U2VydmljZVdvcmtlckNvbmZpZ3VyYXRpb24uYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgaWYgKHdp
bmRvdy5OZXR3b3JrQWdlbnQpCi0gICAgICAgICAgICBOZXR3b3JrQWdlbnQuZW5hYmxlKCk7Ci0K
LSAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJLk5vdGlmaWNhdGlv
bi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMuX2V4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhp
cyk7Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQgbWFpbkZyYW1lKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWU7Ci0gICAgfQotCi0gICAgZ2V0IGZyYW1l
cygpCi0gICAgewotICAgICAgICByZXR1cm4gWy4uLnRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC52
YWx1ZXMoKV07Ci0gICAgfQotCi0gICAgZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwLmdldChmcmFtZUlkKSB8
fCBudWxsOwotICAgIH0KLQotICAgIHJlc291cmNlRm9yUmVxdWVzdElkZW50aWZpZXIocmVxdWVz
dElkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0
SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpIHx8IG51bGw7Ci0gICAgfQotCi0g
ICAgZnJhbWVEaWROYXZpZ2F0ZShmcmFtZVBheWxvYWQpCi0gICAgewotICAgICAgICAvLyBDYWxs
ZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUg
d2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0gICAgICAgIGlmICh0
aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB2YXIgZnJhbWVXYXNMb2FkZWRJbnN0YW50bHkgPSBmYWxzZTsK
LQotICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZVBheWxv
YWQuaWQpOwotICAgICAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgZnJh
bWUgd2Fzbid0IGtub3duIGJlZm9yZSBub3csIHRoZW4gdGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxv
YWRlZCBpbnN0YW50bHkgKGFib3V0OmJsYW5rLCBldGMuKQotICAgICAgICAgICAgLy8gTWFrZSBh
IG5ldyByZXNvdXJjZSAod2hpY2ggd2lsbCBtYWtlIHRoZSBmcmFtZSkuIE1hcmsgd2lsbCBtYXJr
IGl0IGFzIGxvYWRlZCBhdCB0aGUgZW5kIHRvbyBzaW5jZSB3ZQotICAgICAgICAgICAgLy8gZG9u
J3QgZXhwZWN0IGFueSBtb3JlIGV2ZW50cyBhYm91dCB0aGUgbG9hZCBmaW5pc2hpbmcgZm9yIHRo
ZXNlIGZyYW1lcy4KLSAgICAgICAgICAgIHZhciBmcmFtZVJlc291cmNlID0gdGhpcy5fYWRkTmV3
UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQobnVsbCwgZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVBheWxv
YWQubG9hZGVySWQsIGZyYW1lUGF5bG9hZC51cmwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51
bGwsIG51bGwsIGZyYW1lUGF5bG9hZC5uYW1lLCBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4p
OwotICAgICAgICAgICAgZnJhbWUgPSBmcmFtZVJlc291cmNlLnBhcmVudEZyYW1lOwotICAgICAg
ICAgICAgZnJhbWVXYXNMb2FkZWRJbnN0YW50bHkgPSB0cnVlOwotCi0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydChmcmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmcmFtZVBheWxvYWQubG9hZGVy
SWQgPT09IGZyYW1lLnByb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcikgewotICAgICAgICAgICAg
Ly8gVGhlcmUgd2FzIGEgcHJvdmlzaW9uYWwgbG9hZCBpbiBwcm9ncmVzcywgY29tbWl0IGl0Lgot
ICAgICAgICAgICAgZnJhbWUuY29tbWl0UHJvdmlzaW9uYWxMb2FkKGZyYW1lUGF5bG9hZC5zZWN1
cml0eU9yaWdpbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZnJhbWUubWFp
blJlc291cmNlLnVybCAhPT0gZnJhbWVQYXlsb2FkLnVybCB8fCBmcmFtZS5sb2FkZXJJZGVudGlm
aWVyICE9PSBmcmFtZVBheWxvYWQubG9hZGVySWQpIHsKLSAgICAgICAgICAgICAgICAvLyBOYXZp
Z2F0aW9ucyBsaWtlIGJhY2svZm9yd2FyZCBkbyBub3QgaGF2ZSBwcm92aXNpb25hbCBsb2Fkcywg
c28gY3JlYXRlIGEgbmV3IG1haW4gcmVzb3VyY2UgaGVyZS4KLSAgICAgICAgICAgICAgICB2YXIg
bWFpblJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKGZyYW1lUGF5bG9hZC51cmwsIGZyYW1lUGF5
bG9hZC5taW1lVHlwZSwgbnVsbCwgZnJhbWVQYXlsb2FkLmxvYWRlcklkKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaXMgYWxyZWFk
eSBjb3JyZWN0LCBzbyByZXVzZSBpdC4KLSAgICAgICAgICAgICAgICB2YXIgbWFpblJlc291cmNl
ID0gZnJhbWUubWFpblJlc291cmNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmcmFt
ZS5pbml0aWFsaXplKGZyYW1lUGF5bG9hZC5uYW1lLCBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmln
aW4sIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCwgbWFpblJlc291cmNlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7Ci0KLSAgICAgICAgaWYg
KGZyYW1lUGF5bG9hZC5wYXJlbnRJZCkgewotICAgICAgICAgICAgdmFyIHBhcmVudEZyYW1lID0g
dGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVQYXlsb2FkLnBhcmVudElkKTsKLSAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudEZyYW1lKTsKLQotICAgICAgICAgICAgaWYgKGZyYW1l
ID09PSB0aGlzLl9tYWluRnJhbWUpCi0gICAgICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0g
bnVsbDsKLQotICAgICAgICAgICAgaWYgKGZyYW1lLnBhcmVudEZyYW1lICE9PSBwYXJlbnRGcmFt
ZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRGcmFtZS5hZGRDaGlsZEZyYW1lKGZyYW1lKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKLSAgICAg
ICAgICAgICAgICBmcmFtZS5wYXJlbnRGcmFtZS5yZW1vdmVDaGlsZEZyYW1lKGZyYW1lKTsKLSAg
ICAgICAgICAgIHRoaXMuX21haW5GcmFtZSA9IGZyYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHRoaXMuX21haW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQotICAgICAgICAgICAgdGhpcy5f
bWFpbkZyYW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSk7Ci0KLSAgICAgICAgaWYgKGZyYW1lV2Fz
TG9hZGVkSW5zdGFudGx5KQotICAgICAgICAgICAgZnJhbWUubWFpblJlc291cmNlLm1hcmtBc0Zp
bmlzaGVkKCk7Ci0gICAgfQotCi0gICAgZnJhbWVEaWREZXRhY2goZnJhbWVJZCkKLSAgICB7Ci0g
ICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlBhZ2VPYnNlcnZlci4KLQotICAgICAgICAvLyBJZ25v
cmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4K
LSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2Fk
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWVG
b3JJZGVudGlmaWVyKGZyYW1lSWQpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKLSAgICAgICAgICAgIGZy
YW1lLnBhcmVudEZyYW1lLnJlbW92ZUNoaWxkRnJhbWUoZnJhbWUpOwotCi0gICAgICAgIHRoaXMu
X2ZyYW1lSWRlbnRpZmllck1hcC5kZWxldGUoZnJhbWUuaWQpOwotCi0gICAgICAgIHZhciBvbGRN
YWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7Ci0KLSAgICAgICAgaWYgKGZyYW1lID09PSB0aGlz
Ll9tYWluRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBudWxsOwotCi0gICAg
ICAgIGZyYW1lLmNsZWFyRXhlY3V0aW9uQ29udGV4dHMoKTsKLQotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdh
c1JlbW92ZWQsIHtmcmFtZX0pOwotCi0gICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9s
ZE1haW5GcmFtZSkKLSAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWlu
RnJhbWUpOwotICAgIH0KLQotICAgIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElk
ZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdCwgdHlw
ZSwgcmVkaXJlY3RSZXNwb25zZSwgdGltZXN0YW1wLCB3YWxsdGltZSwgaW5pdGlhdG9yLCB0YXJn
ZXRJZCkKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNlcnZlci4K
LQotICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJh
bWUvcmVzb3VyY2UgdHJlZS4KLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVS
ZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA4KTogVGltZWxpbmUgdGltZXN0YW1wcyBmb3IgbGVnYWN5IGJhY2tl
bmRzIGFyZSBjb21wdXRlZAotICAgICAgICAvLyBkeW5hbWljYWxseSBmcm9tIHRoZSBmaXJzdCBi
YWNrZW5kIHRpbWVzdGFtcCByZWNlaXZlZC4gRm9yIG5hdmlnYXRpb25zIHdlCi0gICAgICAgIC8v
IG5lZWQgdG8gcmVzZXQgdGhhdCBiYXNlIHRpbWVzdGFtcCwgYW5kIGFuIGFwcHJvcHJpYXRlIHRp
bWVzdGFtcCB0byB1c2UgaXMKLSAgICAgICAgLy8gdGhlIG5ldyBtYWluIHJlc291cmNlJ3Mgd2ls
bCBiZSBzZW50IHRpbWVzdGFtcC4gU28gc2F2ZSB0aGlzIHZhbHVlIG9uIHRoZQotICAgICAgICAv
LyByZXNvdXJjZSBpbiBjYXNlIGl0IGJlY29tZXMgYSBtYWluIHJlc291cmNlLgotICAgICAgICB2
YXIgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLQotICAg
ICAgICB2YXIgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRU
aW1lKHRpbWVzdGFtcCk7Ci0gICAgICAgIGxldCByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVx
dWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKHJl
c291cmNlKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGV4aXN0aW5nIHJlcXVlc3Qgd2hp
Y2ggaXMgYmVpbmcgcmVkaXJlY3RlZCwgdXBkYXRlIHRoZSByZXNvdXJjZS4KLSAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRhcmdldElkKTsKLSAgICAgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlZGlyZWN0
UmVzcG9uc2UocmVxdWVzdC51cmwsIHJlcXVlc3QuaGVhZGVycywgZWxhcHNlZFRpbWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGluaXRpYXRvclNvdXJj
ZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbkZyb21QYXls
b2FkKGluaXRpYXRvcik7Ci0KLSAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0LCBtYWtl
IGEgbmV3IHJlc291cmNlIGFuZCBhZGQgaXQgdG8gdGhlIHJpZ2h0IGZyYW1lLgotICAgICAgICBy
ZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVu
dGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3QudXJsLCB0
eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC5oZWFkZXJzLCByZXF1ZXN0LnBvc3REYXRhLCBl
bGFwc2VkVGltZSwgd2FsbHRpbWUsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpOwotCi0g
ICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgcmVxdWVzdElkZW50aWZp
ZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2FkaW5nIGV2ZW50cy4KLSAgICAgICAg
dGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkZW50aWZpZXIs
IHJlc291cmNlKTsKLSAgICB9Ci0KLSAgICB3ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwgdXJs
KQotICAgIHsKLSAgICAgICAgdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMLnNldChyZXF1
ZXN0SWQsIHVybCk7Ci0gICAgfQotCi0gICAgd2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1
ZXN0KHJlcXVlc3RJZCwgdGltZXN0YW1wLCB3YWxsdGltZSwgcmVxdWVzdCkKLSAgICB7Ci0gICAg
ICAgIGxldCB1cmwgPSB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwuZ2V0KHJlcXVlc3RJ
ZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7Ci0gICAgICAgIGlmICghdXJsKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEwLjMpOiBg
d2FsbHRpbWVgIGRpZCBub3QgZXhpc3QgaW4gMTAuMyBhbmQgZWFybGllci4KLSAgICAgICAgaWYg
KCFOZXR3b3JrQWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoIndlYlNvY2tldFdpbGxTZW5kSGFuZHNo
YWtlUmVxdWVzdCIsICJ3YWxsdGltZSIpKSB7Ci0gICAgICAgICAgICByZXF1ZXN0ID0gYXJndW1l
bnRzWzJdOwotICAgICAgICAgICAgd2FsbHRpbWUgPSBOYU47Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3Rs
eSBkaXNwbGF5IGlmcmFtZSdzIGFuZCB3b3JrZXIncyBXZWJTb2NrZXRzCi0gICAgICAgIGxldCBm
cmFtZUlkZW50aWZpZXIgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQ7Ci0g
ICAgICAgIGxldCBsb2FkZXJJZGVudGlmaWVyID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lLmlkOwotICAgICAgICBsZXQgdGFyZ2V0SWQ7Ci0KLSAgICAgICAgbGV0IGZyYW1lID0g
dGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZGVudGlmaWVyKTsKLSAgICAgICAgbGV0IHJl
cXVlc3REYXRhID0gbnVsbDsKLSAgICAgICAgbGV0IGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVN
YW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwotICAgICAgICBsZXQgaW5pdGlh
dG9yU291cmNlQ29kZUxvY2F0aW9uID0gbnVsbDsKLQotICAgICAgICBsZXQgcmVzb3VyY2UgPSBu
ZXcgV0kuV2ViU29ja2V0UmVzb3VyY2UodXJsLCBsb2FkZXJJZGVudGlmaWVyLCB0YXJnZXRJZCwg
cmVxdWVzdElkLCByZXF1ZXN0LmhlYWRlcnMsIHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIHdhbGx0
aW1lLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKLQotICAgICAg
ICBmcmFtZS5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VS
ZXF1ZXN0SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkLCByZXNvdXJjZSk7Ci0gICAgfQotCi0g
ICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFt
cCwgcmVzcG9uc2UpCi0gICAgewotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOwotICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNvdXJjZSk7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdJLldlYlNvY2tldFJlc291cmNl
LlJlYWR5U3RhdGUuT3BlbjsKLQotICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGlu
ZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7Ci0KLSAgICAgICAgLy8gRklY
TUU6IDx3ZWJraXQub3JnL2IvMTY5MTY2PiBXZWIgSW5zcGVjdG9yOiBXZWJTb2NrZXRzOiBJbXBs
ZW1lbnQgdGltaW5nIGluZm9ybWF0aW9uCi0gICAgICAgIGxldCByZXNwb25zZVRpbWluZyA9IHJl
c3BvbnNlLnRpbWluZyB8fCBudWxsOwotCi0gICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3Bv
bnNlKHJlc291cmNlLnVybCwgcmVzb3VyY2UubWltZVR5cGUsIHJlc291cmNlLnR5cGUsIHJlc3Bv
bnNlLmhlYWRlcnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNl
ZFRpbWUsIHJlc3BvbnNlVGltaW5nKTsKLQotICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hl
ZChlbGFwc2VkVGltZSk7Ci0gICAgfQotCi0gICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1
ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCi0gICAgewotICAgICAgICB0aGlzLl93ZWJTb2Nr
ZXRGcmFtZVJlY2VpdmVkT3JTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7Ci0g
ICAgfQotCi0gICAgd2ViU29ja2V0RnJhbWVTZW50KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNw
b25zZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3dlYlNvY2tldEZyYW1lUmVjZWl2ZWRPclNlbnQo
cmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKTsKLSAgICB9Ci0KLSAgICB3ZWJTb2NrZXRD
bG9zZWQocmVxdWVzdElkLCB0aW1lc3RhbXApCi0gICAgewotICAgICAgICBsZXQgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOwotICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdJLldl
YlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUuQ2xvc2VkOwotCi0gICAgICAgIGxldCBlbGFwc2Vk
VGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsK
LSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwotCi0gICAgICAg
IHRoaXMuX3dlYlNvY2tldElkZW50aWZpZXJUb1VSTC5kZWxldGUocmVxdWVzdElkKTsKLSAgICAg
ICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkKTsK
LSAgICB9Ci0KLSAgICBfd2ViU29ja2V0RnJhbWVSZWNlaXZlZE9yU2VudChyZXF1ZXN0SWQsIHRp
bWVzdGFtcCwgcmVzcG9uc2UpCi0gICAgewotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9y
ZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOwotICAgICAgICBjb25z
b2xlLmFzc2VydChyZXNvdXJjZSk7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgLy8gRGF0YSBnb2luZyBmcm9tIHRoZSBjbGllbnQgdG8gdGhl
IHNlcnZlciBpcyBhbHdheXMgbWFza2VkLgotICAgICAgICBsZXQgaXNPdXRnb2luZyA9ICEhcmVz
cG9uc2UubWFzazsKLQotICAgICAgICBsZXQge3BheWxvYWREYXRhLCBwYXlsb2FkTGVuZ3RoLCBv
cGNvZGV9ID0gcmVzcG9uc2U7Ci0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5l
TWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKLQotICAgICAgICByZXNvdXJj
ZS5hZGRGcmFtZShwYXlsb2FkRGF0YSwgcGF5bG9hZExlbmd0aCwgaXNPdXRnb2luZywgb3Bjb2Rl
LCB0aW1lc3RhbXAsIGVsYXBzZWRUaW1lKTsKLSAgICB9Ci0KLSAgICBtYXJrUmVzb3VyY2VSZXF1
ZXN0QXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdu
b3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUu
Ci0gICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9h
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9y
ZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7Ci0KLSAg
ICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdh
cyBvcGVuZWQgZHVyaW5nIHRoZSBwYWdlIGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxC
ZVNlbnQgaXMgY2FsbGVkKS4KLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4g
dGhpcyBjYXNlIHNpbmNlIHdlIGRvIGxpa2VseSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VB
Z2VudC5nZXRSZXNvdXJjZVRyZWUuIFRoZSBSZXNvdXJjZQotICAgICAgICAvLyBqdXN0IGRvZXNu
J3QgaGF2ZSBhIHJlcXVlc3RJZGVudGlmaWVyIGZvciB1cyB0byBsb29rIGl0IHVwLgotICAgICAg
ICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNl
LmxlZ2FjeU1hcmtTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUoKTsKLSAgICB9Ci0KLSAgICByZXNvdXJj
ZVJlcXVlc3RXYXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1l
SWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLCB0aW1l
c3RhbXAsIGluaXRpYXRvcikKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdv
cmtPYnNlcnZlci4KLQotICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0
aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KLSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdG
b3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
LmhhcyhyZXF1ZXN0SWRlbnRpZmllcikpOwotCi0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJ
LnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAg
bGV0IGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNv
ZGVMb2NhdGlvbkZyb21QYXlsb2FkKGluaXRpYXRvcik7Ci0gICAgICAgIGxldCByZXNwb25zZSA9
IGNhY2hlZFJlc291cmNlUGF5bG9hZC5yZXNwb25zZTsKLSAgICAgICAgY29uc3QgcmVzcG9uc2VT
b3VyY2UgPSBOZXR3b3JrQWdlbnQuUmVzcG9uc2VTb3VyY2UuTWVtb3J5Q2FjaGU7Ci0KLSAgICAg
ICAgbGV0IHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVx
dWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnVybCwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnR5cGUsICJHRVQiLCBu
dWxsLCBudWxsLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCwgbnVsbCwgaW5pdGlhdG9yU291cmNl
Q29kZUxvY2F0aW9uKTsKLSAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5
bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0
YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZS50aW1pbmcsIHJlc3BvbnNlU291cmNlKTsK
LSAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VTaXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5
U2l6ZSwgZWxhcHNlZFRpbWUpOwotICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6
ZShjYWNoZWRSZXNvdXJjZVBheWxvYWQuYm9keVNpemUpOwotICAgICAgICByZXNvdXJjZS5zZXRD
YWNoZWRSZXNwb25zZUJvZHlTaXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSk7Ci0g
ICAgICAgIHJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKLQotICAgICAgICBj
b25zb2xlLmFzc2VydChyZXNvdXJjZS5jYWNoZWQsICJUaGlzIHJlc291cmNlIHNob3VsZCBiZSBj
bGFzc2lmaWVkIGFzIGNhY2hlZCBzaW5jZSBpdCB3YXMgc2VydmVkIGZyb20gdGhlIE1lbW9yeUNh
Y2hlIiwgcmVzb3VyY2UpOwotCi0gICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZVBheWxvYWQuc291
cmNlTWFwVVJMKQotICAgICAgICAgICAgV0kuc291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJj
ZU1hcChjYWNoZWRSZXNvdXJjZVBheWxvYWQuc291cmNlTWFwVVJMLCByZXNvdXJjZS51cmwsIHJl
c291cmNlKTsKLQotICAgICAgICAvLyBObyBuZWVkIHRvIGFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ug
d2l0aCB0aGUgcmVxdWVzdElkZW50aWZpZXIsIHNpbmNlIHRoaXMgaXMgdGhlIG9ubHkgZXZlbnQK
LSAgICAgICAgLy8gc2VudCBmb3IgbWVtb3J5IGNhY2hlIHJlc291cmNlIGxvYWRzLgotICAgIH0K
LQotICAgIHJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SWRlbnRpZmll
ciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB0eXBlLCByZXNwb25zZSwgdGlt
ZXN0YW1wKQotICAgIHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuTmV0d29ya09ic2VydmVy
LgotCi0gICAgICAgIC8vIElnbm9yZSB0aGlzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBm
cmFtZS9yZXNvdXJjZSB0cmVlLgotICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFt
ZVJlc291cmNlVHJlZVBheWxvYWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFy
IGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1l
c3RhbXApOwotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVu
dGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7Ci0KLSAgICAgICAgLy8gV2UgbWlnaHQg
bm90IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVuZWQgZHVyaW5nIHRo
ZSBwYWdlIGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgaXMgY2FsbGVkKS4K
LSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4gdGhpcyBjYXNlIHNpbmNlIHdl
IGRvIGxpa2VseSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRy
ZWUuIFRoZSBSZXNvdXJjZQotICAgICAgICAvLyBqdXN0IGRvZXNuJ3QgaGF2ZSBhIHJlcXVlc3RJ
ZGVudGlmaWVyIGZvciB1cyB0byBsb29rIGl0IHVwLCBidXQgd2UgY2FuIHRyeSB0byBsb29rIGl0
IHVwIGJ5IGl0cyBVUkwuCi0gICAgICAgIGlmICghcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHZh
ciBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5yZXNv
dXJjZUZvclVSTChyZXNwb25zZS51cmwpOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIHRo
ZSByZXNvdXJjZSB0aGlzIHdheSB3ZSBoYWQgbWFya2VkIGl0IGVhcmxpZXIgYXMgZmluaXNoZWQg
dmlhIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRyZWUuCi0gICAgICAgICAgICAvLyBBc3NvY2lhdGUg
dGhlIHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3Vu
ZCBpbiBmdXR1cmUgbG9hZGluZyBldmVudHMuCi0gICAgICAgICAgICAvLyBhbmQgcm9sbCBpdCBi
YWNrIHRvIGFuIHVuZmluaXNoZWQgc3RhdGUsIHdlIGtub3cgbm93IGl0IGlzIHN0aWxsIGxvYWRp
bmcuCi0gICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3Vy
Y2UpOwotICAgICAgICAgICAgICAgIHJlc291cmNlLnJldmVydE1hcmtBc0ZpbmlzaGVkKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5k
IGFuIGV4aXN0aW5nIFJlc291cmNlIGJ5IG5vdywgdGhlbiBpdCBpcyBhIHJlc291cmNlIHRoYXQg
d2FzIGxvYWRpbmcgd2hlbiB0aGUgaW5zcGVjdG9yCi0gICAgICAgIC8vIG9wZW5lZCBhbmQgd2Ug
anVzdCBtaXNzZWQgdGhlIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgZm9yIGl0LiBTbyBtYWtl
IGEgbmV3IHJlc291cmNlIGFuZCBhZGQgaXQuCi0gICAgICAgIGlmICghcmVzb3VyY2UpIHsKLSAg
ICAgICAgICAgIHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQo
cmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVz
cG9uc2UudXJsLCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0SGVhZGVycywgbnVsbCwgZWxh
cHNlZFRpbWUsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOwotCi0gICAgICAgICAgICAvLyBBc3Nv
Y2lhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBi
ZSBmb3VuZCBpbiBmdXR1cmUgbG9hZGluZyBldmVudHMuCi0gICAgICAgICAgICB0aGlzLl9yZXNv
dXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2Up
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwLjMpOiBgZnJv
bURpc2tDYWNoZWAgaXMgbGVnYWN5LCByZXBsYWNlZCBieSBgc291cmNlYC4KLSAgICAgICAgaWYg
KHJlc3BvbnNlLmZyb21EaXNrQ2FjaGUpCi0gICAgICAgICAgICByZXNvdXJjZS5sZWdhY3lNYXJr
U2VydmVkRnJvbURpc2tDYWNoZSgpOwotCi0gICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3Bv
bnNlKHJlc3BvbnNlLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlLmhlYWRl
cnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJl
c3BvbnNlLnRpbWluZywgcmVzcG9uc2Uuc291cmNlKTsKLSAgICB9Ci0KLSAgICByZXNvdXJjZVJl
cXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0SWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5jb2Rl
ZERhdGFMZW5ndGgsIHRpbWVzdGFtcCkKLSAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
Lk5ldHdvcmtPYnNlcnZlci4KLQotICAgICAgICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5n
IGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3VyY2UgdHJlZS4KLSAgICAgICAgaWYgKHRoaXMuX3dh
aXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGxldCByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZp
ZXJNYXAuZ2V0KHJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0g
V0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwotCi0gICAg
ICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMg
b3BlbmVkIGR1cmluZyB0aGUgcGFnZSBsb2FkIChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVT
ZW50IGlzIGNhbGxlZCkuCi0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYXNzZXJ0IGluIHRo
aXMgY2FzZSBzaW5jZSB3ZSBkbyBsaWtlbHkgaGF2ZSB0aGUgcmVzb3VyY2UsIHZpYSBQYWdlQWdl
bnQuZ2V0UmVzb3VyY2VUcmVlLiBUaGUgUmVzb3VyY2UKLSAgICAgICAgLy8ganVzdCBkb2Vzbid0
IGhhdmUgYSByZXF1ZXN0SWRlbnRpZmllciBmb3IgdXMgdG8gbG9vayBpdCB1cC4KLSAgICAgICAg
aWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5p
bmNyZWFzZVNpemUoZGF0YUxlbmd0aCwgZWxhcHNlZFRpbWUpOwotCi0gICAgICAgIGlmIChlbmNv
ZGVkRGF0YUxlbmd0aCAhPT0gLTEpCi0gICAgICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVRyYW5z
ZmVyU2l6ZShlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgfQotCi0gICAgcmVzb3VyY2VSZXF1ZXN0
RGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0SWRlbnRpZmllciwgdGltZXN0YW1wLCBzb3VyY2VNYXBV
UkwsIG1ldHJpY3MpCi0gICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdo
b2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0gICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFp
bkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAvLyBCeSBub3cgd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBSZXNvdXJjZS4gRWl0aGVyIGl0
IHdhcyBmZXRjaGVkIHdoZW4gdGhlIGluc3BlY3RvciBmaXJzdCBvcGVuZWQgd2l0aAotICAgICAg
ICAvLyBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLCBvciBpdCB3YXMgYSBjdXJyZW50bHkgbG9h
ZGluZyByZXNvdXJjZSB0aGF0IHdlIGxlYXJuZWQgYWJvdXQgaW4gcmVzb3VyY2VSZXF1ZXN0RGlk
UmVjZWl2ZVJlc3BvbnNlLgotICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJl
cXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlc291cmNlKTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAobWV0cmljcykKLSAgICAgICAgICAgIHJlc291cmNlLnVw
ZGF0ZVdpdGhNZXRyaWNzKG1ldHJpY3MpOwotCi0gICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJ
LnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAg
cmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwotCi0gICAgICAgIGlmIChzb3Vy
Y2VNYXBVUkwpCi0gICAgICAgICAgICBXSS5zb3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNl
TWFwKHNvdXJjZU1hcFVSTCwgcmVzb3VyY2UudXJsLCByZXNvdXJjZSk7Ci0KLSAgICAgICAgdGhp
cy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIp
OwotICAgIH0KLQotICAgIHJlc291cmNlUmVxdWVzdERpZEZhaWxMb2FkaW5nKHJlcXVlc3RJZGVu
dGlmaWVyLCBjYW5jZWxlZCwgdGltZXN0YW1wLCBlcnJvclRleHQpCi0gICAgewotICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIuCi0KLSAgICAgICAgLy8gSWdub3JlIHRo
aXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCi0gICAg
ICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBCeSBub3cgd2Ugc2hvdWxkIGFsd2F5cyBo
YXZlIHRoZSBSZXNvdXJjZS4gRWl0aGVyIGl0IHdhcyBmZXRjaGVkIHdoZW4gdGhlIGluc3BlY3Rv
ciBmaXJzdCBvcGVuZWQgd2l0aAotICAgICAgICAvLyBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVl
LCBvciBpdCB3YXMgYSBjdXJyZW50bHkgbG9hZGluZyByZXNvdXJjZSB0aGF0IHdlIGxlYXJuZWQg
YWJvdXQgaW4gcmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZVJlc3BvbnNlLgotICAgICAgICBsZXQg
cmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0
SWRlbnRpZmllcik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKLSAgICAgICAg
aWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgZWxhcHNl
ZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7
Ci0gICAgICAgIHJlc291cmNlLm1hcmtBc0ZhaWxlZChjYW5jZWxlZCwgZWxhcHNlZFRpbWUsIGVy
cm9yVGV4dCk7Ci0KLSAgICAgICAgaWYgKHJlc291cmNlLnBhcmVudEZyYW1lICYmIHJlc291cmNl
ID09PSByZXNvdXJjZS5wYXJlbnRGcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSkKLSAgICAg
ICAgICAgIHJlc291cmNlLnBhcmVudEZyYW1lLmNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7Ci0KLSAg
ICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElk
ZW50aWZpZXIpOwotICAgIH0KLQotICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQ
YXlsb2FkKQotICAgIHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuUnVudGltZU9ic2VydmVy
LgotCi0gICAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGNvbnRleHRQ
YXlsb2FkLmZyYW1lSWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7Ci0gICAgICAg
IGlmICghZnJhbWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGRpc3BsYXlO
YW1lID0gY29udGV4dFBheWxvYWQubmFtZSB8fCBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5h
bWU7Ci0gICAgICAgIHZhciBleGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRl
eHQoV0kubWFpblRhcmdldCwgY29udGV4dFBheWxvYWQuaWQsIGRpc3BsYXlOYW1lLCBjb250ZXh0
UGF5bG9hZC5pc1BhZ2VDb250ZXh0LCBmcmFtZSk7Ci0gICAgICAgIGZyYW1lLmFkZEV4ZWN1dGlv
bkNvbnRleHQoZXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgfQotCi0gICAgcmVzb3VyY2VGb3JVUkwo
dXJsKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9tYWluRnJhbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKLQotICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lLm1haW5SZXNvdXJjZS51
cmwgPT09IHVybCkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWUubWFpblJlc291
cmNlOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWUucmVzb3VyY2VGb3JVUkwodXJs
LCB0cnVlKTsKLSAgICB9Ci0KLSAgICBhZG9wdE9ycGhhbmVkUmVzb3VyY2VzRm9yVGFyZ2V0KHRh
cmdldCkKLSAgICB7Ci0gICAgICAgIGxldCByZXNvdXJjZXMgPSB0aGlzLl9vcnBoYW5lZFJlc291
cmNlcy50YWtlKHRhcmdldC5pZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgcmVzb3Vy
Y2VzKQotICAgICAgICAgICAgdGFyZ2V0LmFkb3B0UmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0K
LQotICAgIC8vIFByaXZhdGUKLQotICAgIF9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChy
ZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1cmws
IHR5cGUsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNl
ZFRpbWUsIHdhbGx0aW1lLCBmcmFtZU5hbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGluaXRpYXRv
clNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwg
dGFyZ2V0SWQpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fd2FpdGluZ0Zv
ck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpOwotCi0gICAgICAgIGxldCByZXNvdXJjZSA9
IG51bGw7Ci0KLSAgICAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIgJiYgdGFyZ2V0SWQpIHsKLSAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcmVzb3VyY2UgZm9yIGEgU2VydmljZVdvcmtlciB0
YXJnZXQuCi0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJs
ZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLlNlcnZpY2VXb3JrZXIpOwotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGFyZ2V0SWQgPT09IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxv
YWRlcklkZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhv
ZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVz
dGFtcCk7Ci0gICAgICAgICAgICByZXNvdXJjZS50YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0
IGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZGVudGlmaWVyKTsKLSAgICAg
ICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9y
IGFuIGV4aXN0aW5nIGZyYW1lLCB3aGljaCBtaWdodCBiZSB0aGUgbWFpbiByZXNvdXJjZSBvciBh
IG5ldyByZXNvdXJjZS4KLSAgICAgICAgICAgIGlmICh0eXBlID09PSAiRG9jdW1lbnQiICYmIGZy
YW1lLm1haW5SZXNvdXJjZS51cmwgPT09IHVybCAmJiBmcmFtZS5sb2FkZXJJZGVudGlmaWVyID09
PSBsb2FkZXJJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIHJlc291cmNlID0gZnJhbWUubWFp
blJlc291cmNlOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gIkRvY3VtZW50IiAmJiBm
cmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNv
dXJjZS51cmwgPT09IHVybCAmJiBmcmFtZS5wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIgPT09
IGxvYWRlcklkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5wcm92
aXNpb25hbE1haW5SZXNvdXJjZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRlbnRp
ZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0
SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9yU291
cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVzb3VyY2UudGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJlc291cmNl
KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXNvdXJjZS50YXJnZXQpCi0gICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlLnRhcmdldC5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRPcnBoYW5lZFJlc291
cmNlKHJlc291cmNlLCB0YXJnZXRJZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9yIGEgbmV3IGZyYW1lLCB3
aGljaCBpcyBhbHdheXMgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgICAgICBjb25zb2xlLmFz
c2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgIT09IFdJLkRlYnVnZ2FibGVUeXBlLlNl
cnZpY2VXb3JrZXIpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRhcmdldElkKTsKLSAg
ICAgICAgICAgIHJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9h
ZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9k
LCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0
YW1wKTsKLSAgICAgICAgICAgIGZyYW1lID0gbmV3IFdJLkZyYW1lKGZyYW1lSWRlbnRpZmllciwg
ZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCByZXNvdXJj
ZSk7Ci0gICAgICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAuc2V0KGZyYW1lLmlkLCBm
cmFtZSk7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBtYWluIGZyYW1lLCBh
c3N1bWUgdGhpcyBpcyBpdC4gVGhpcyBjYW4gY2hhbmdlIGxhdGVyIGluCi0gICAgICAgICAgICAv
LyBmcmFtZURpZE5hdmlnYXRlIHdoZW4gdGhlIHBhcmVudCBmcmFtZSBpcyBrbm93bi4KLSAgICAg
ICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbWFp
bkZyYW1lID0gZnJhbWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdl
KG51bGwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEZyYW1l
V2FzQWRkZWRFdmVudChmcmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dChyZXNvdXJjZSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgIH0KLQotICAgIF9h
ZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsK
LSAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2Fk
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwotCi0gICAgICAgIGlmIChyZXNvdXJj
ZS5sb2FkZXJJZGVudGlmaWVyICE9PSBmcmFtZS5sb2FkZXJJZGVudGlmaWVyICYmICFmcmFtZS5w
cm92aXNpb25hbExvYWRlcklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHN0YXJ0IG9mIGEgcHJvdmlzaW9uYWwgbG9hZCB3aGljaCBoYXBwZW5zIGJlZm9yZSBmcmFtZURp
ZE5hdmlnYXRlIGlzIGNhbGxlZC4KLSAgICAgICAgICAgIC8vIFRoaXMgcmVzb3VyY2Ugd2lsbCBi
ZSB0aGUgbmV3IG1haW5SZXNvdXJjZSBpZiBmcmFtZURpZE5hdmlnYXRlIGlzIGNhbGxlZC4KLSAg
ICAgICAgICAgIGZyYW1lLnN0YXJ0UHJvdmlzaW9uYWxMb2FkKHJlc291cmNlKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoaXMgaXMganVzdCBhbm90aGVy
IHJlc291cmNlLCBlaXRoZXIgZm9yIHRoZSBtYWluIGxvYWRlciBvciB0aGUgcHJvdmlzaW9uYWwg
bG9hZGVyLgotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVy
ID09PSBmcmFtZS5sb2FkZXJJZGVudGlmaWVyIHx8IHJlc291cmNlLmxvYWRlcklkZW50aWZpZXIg
PT09IGZyYW1lLnByb3Zpc2lvbmFsTG9hZGVySWRlbnRpZmllcik7Ci0gICAgICAgIGZyYW1lLmFk
ZFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9Ci0KLSAgICBfYWRkUmVzb3VyY2VUb1RhcmdldCh0
YXJnZXQsIHJlc291cmNlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ICE9
PSBXSS5wYWdlVGFyZ2V0KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwotCi0g
ICAgICAgIHRhcmdldC5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgX2luaXRp
YXRvclNvdXJjZUNvZGVMb2NhdGlvbkZyb21QYXlsb2FkKGluaXRpYXRvclBheWxvYWQpCi0gICAg
ewotICAgICAgICBpZiAoIWluaXRpYXRvclBheWxvYWQpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bDsKLQotICAgICAgICB2YXIgdXJsID0gbnVsbDsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBO
YU47Ci0gICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwotCi0gICAgICAgIGlmIChpbml0aWF0
b3JQYXlsb2FkLnN0YWNrVHJhY2UgJiYgaW5pdGlhdG9yUGF5bG9hZC5zdGFja1RyYWNlLmxlbmd0
aCkgewotICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2VQYXlsb2FkID0gaW5pdGlhdG9yUGF5bG9h
ZC5zdGFja1RyYWNlOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFja1RyYWNl
UGF5bG9hZC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBjYWxsRnJhbWVQYXls
b2FkID0gc3RhY2tUcmFjZVBheWxvYWRbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsRnJh
bWVQYXlsb2FkLnVybCB8fCBjYWxsRnJhbWVQYXlsb2FkLnVybCA9PT0gIltuYXRpdmUgY29kZV0i
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIHVybCA9
IGNhbGxGcmFtZVBheWxvYWQudXJsOwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVOdW1i
ZXIgaXMgMS1iYXNlZCwgYnV0IHdlIGV4cGVjdCAwLWJhc2VkLgotICAgICAgICAgICAgICAgIGxp
bmVOdW1iZXIgPSBjYWxsRnJhbWVQYXlsb2FkLmxpbmVOdW1iZXIgLSAxOwotCi0gICAgICAgICAg
ICAgICAgY29sdW1uTnVtYmVyID0gY2FsbEZyYW1lUGF5bG9hZC5jb2x1bW5OdW1iZXI7Ci0KLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChp
bml0aWF0b3JQYXlsb2FkLnVybCkgewotICAgICAgICAgICAgdXJsID0gaW5pdGlhdG9yUGF5bG9h
ZC51cmw7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3
ZSBleHBlY3QgMC1iYXNlZC4KLSAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBpbml0aWF0b3JQYXls
b2FkLmxpbmVOdW1iZXIgLSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF1cmwgfHwgaXNO
YU4obGluZU51bWJlcikgfHwgbGluZU51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gbnVs
bDsKLQotICAgICAgICB2YXIgc291cmNlQ29kZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJl
c291cmNlRm9yVVJMKHVybCk7Ci0gICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAg
IHNvdXJjZUNvZGUgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0c0ZvclVSTCh1cmwsIFdJLm1h
aW5UYXJnZXQpWzBdOwotCi0gICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgIHJl
dHVybiBudWxsOwotCi0gICAgICAgIHJldHVybiBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVM
b2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgIH0KLQotICAgIF9wcm9jZXNz
U2VydmljZVdvcmtlckNvbmZpZ3VyYXRpb24oZXJyb3IsIGluaXRpYWxpemF0aW9uUGF5bG9hZCkK
LSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVS
ZXNvdXJjZVRyZWVQYXlsb2FkKTsKLSAgICAgICAgdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJl
c291cmNlVHJlZVBheWxvYWQgPSBmYWxzZTsKLQotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluaXRpYWxpemF0
aW9uUGF5bG9hZC50YXJnZXRJZC5zdGFydHNXaXRoKCJzZXJ2aWNld29ya2VyOiIpKTsKLQotICAg
ICAgICBXSS5tYWluVGFyZ2V0LmlkZW50aWZpZXIgPSBpbml0aWFsaXphdGlvblBheWxvYWQudGFy
Z2V0SWQ7Ci0gICAgICAgIFdJLm1haW5UYXJnZXQubmFtZSA9IGluaXRpYWxpemF0aW9uUGF5bG9h
ZC51cmw7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgbWFpbiByZXNvdXJjZSB3aXRoIHRoaXMgY29u
dGVudCBpbiBjYXNlIHRoZSBjb250ZW50IG5ldmVyIHNob3dzIHVwIGFzIGEgV0kuU2NyaXB0Lgot
ICAgICAgICBjb25zdCB0eXBlID0gV0kuU2NyaXB0LlNvdXJjZVR5cGUuUHJvZ3JhbTsKLSAgICAg
ICAgbGV0IHNjcmlwdCA9IG5ldyBXSS5Mb2NhbFNjcmlwdChXSS5tYWluVGFyZ2V0LCBpbml0aWFs
aXphdGlvblBheWxvYWQudXJsLCB0eXBlLCBpbml0aWFsaXphdGlvblBheWxvYWQuY29udGVudCk7
Ci0gICAgICAgIFdJLm1haW5UYXJnZXQubWFpblJlc291cmNlID0gc2NyaXB0OwotCi0gICAgICAg
IEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcygoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoV0kubWFpblRhcmdldC5tYWluUmVzb3VyY2UgPT09IHNjcmlwdCkgewotICAg
ICAgICAgICAgICAgIC8vIFdlJ3ZlIG5vdyByZWNlaXZlZCBhbGwgdGhlIHNjcmlwdHMsIGlmIHdl
IGRvbid0IGhhdmUgYSBiZXR0ZXIgbWFpbiByZXNvdXJjZSB1c2UgdGhpcyBMb2NhbFNjcmlwdC4K
LSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5tYWlu
VGFyZ2V0KS5hZGRTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5T
Y3JpcHRBZGRlZCwge3NjcmlwdH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBfcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQoZXJyb3IsIG1haW5G
cmFtZVBheWxvYWQpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5n
Rm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCk7Ci0gICAgICAgIHRoaXMuX3dhaXRpbmdG
b3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dChtYWluRnJhbWVQYXlsb2FkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobWFpbkZyYW1lUGF5
bG9hZC5mcmFtZSk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1h
cCA9IG5ldyBNYXA7Ci0gICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7
Ci0KLSAgICAgICAgdmFyIG9sZE1haW5GcmFtZSA9IHRoaXMuX21haW5GcmFtZTsKLQotICAgICAg
ICB0aGlzLl9tYWluRnJhbWUgPSB0aGlzLl9hZGRGcmFtZVRyZWVGcm9tRnJhbWVSZXNvdXJjZVRy
ZWVQYXlsb2FkKG1haW5GcmFtZVBheWxvYWQsIHRydWUpOwotCi0gICAgICAgIGlmICh0aGlzLl9t
YWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKLSAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURp
ZENoYW5nZShvbGRNYWluRnJhbWUpOwotICAgIH0KLQotICAgIF9jcmVhdGVGcmFtZShwYXlsb2Fk
KQotICAgIHsKLSAgICAgICAgLy8gSWYgcGF5bG9hZC51cmwgaXMgbWlzc2luZyBvciBlbXB0eSB0
aGVuIHRoaXMgcGFnZSBpcyBsaWtlbHkgdGhlIHNwZWNpYWwgZW1wdHkgcGFnZS4gSW4gdGhhdCBj
YXNlCi0gICAgICAgIC8vIHdlIHdpbGwganVzdCBzYXkgaXQgaXMgImFib3V0OmJsYW5rIiBzbyB3
ZSBoYXZlIGEgVVJMLCB3aGljaCBpcyByZXF1aXJlZCBmb3IgcmVzb3VyY2VzLgotICAgICAgICB2
YXIgbWFpblJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHBheWxvYWQudXJsIHx8ICJhYm91dDpi
bGFuayIsIHBheWxvYWQubWltZVR5cGUsIG51bGwsIHBheWxvYWQubG9hZGVySWQpOwotICAgICAg
ICB2YXIgZnJhbWUgPSBuZXcgV0kuRnJhbWUocGF5bG9hZC5pZCwgcGF5bG9hZC5uYW1lLCBwYXls
b2FkLnNlY3VyaXR5T3JpZ2luLCBwYXlsb2FkLmxvYWRlcklkLCBtYWluUmVzb3VyY2UpOwotCi0g
ICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC5zZXQoZnJhbWUuaWQsIGZyYW1lKTsKLQot
ICAgICAgICBtYWluUmVzb3VyY2UubWFya0FzRmluaXNoZWQoKTsKLQotICAgICAgICByZXR1cm4g
ZnJhbWU7Ci0gICAgfQotCi0gICAgX2NyZWF0ZVJlc291cmNlKHBheWxvYWQsIGZyYW1lUGF5bG9h
ZCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZShwYXlsb2Fk
LnVybCwgcGF5bG9hZC5taW1lVHlwZSwgcGF5bG9hZC50eXBlLCBmcmFtZVBheWxvYWQubG9hZGVy
SWQsIHBheWxvYWQudGFyZ2V0SWQpOwotCi0gICAgICAgIGlmIChwYXlsb2FkLnNvdXJjZU1hcFVS
TCkKLSAgICAgICAgICAgIFdJLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAocGF5
bG9hZC5zb3VyY2VNYXBVUkwsIHJlc291cmNlLnVybCwgcmVzb3VyY2UpOwotCi0gICAgICAgIHJl
dHVybiByZXNvdXJjZTsKLSAgICB9Ci0KLSAgICBfYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3Vy
Y2VUcmVlUGF5bG9hZChwYXlsb2FkLCBpc01haW5GcmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBm
cmFtZSA9IHRoaXMuX2NyZWF0ZUZyYW1lKHBheWxvYWQuZnJhbWUpOwotICAgICAgICBpZiAoaXNN
YWluRnJhbWUpCi0gICAgICAgICAgICBmcmFtZS5tYXJrQXNNYWluRnJhbWUoKTsKLQotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgcGF5bG9hZC5jaGlsZEZyYW1lcyAmJiBpIDwgcGF5bG9hZC5jaGls
ZEZyYW1lcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGZyYW1lLmFkZENoaWxkRnJhbWUodGhp
cy5fYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZChwYXlsb2FkLmNoaWxk
RnJhbWVzW2ldLCBmYWxzZSkpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBwYXlsb2FkLnJl
c291cmNlcyAmJiBpIDwgcGF5bG9hZC5yZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHZhciByZXNvdXJjZVBheWxvYWQgPSBwYXlsb2FkLnJlc291cmNlc1tpXTsKLQotICAgICAg
ICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaXMgaW5jbHVkZWQgYXMgYSByZXNvdXJjZS4gV2Ug
Y2FuIHNraXAgaXQgc2luY2Ugd2UgYWxyZWFkeSBjcmVhdGVkCi0gICAgICAgICAgICAvLyBhIG1h
aW4gcmVzb3VyY2Ugd2hlbiB3ZSBjcmVhdGVkIHRoZSBGcmFtZS4gVGhlIHJlc291cmNlIHBheWxv
YWQgZG9lcyBub3QgaW5jbHVkZSBhbnl0aGluZwotICAgICAgICAgICAgLy8gZGlkbid0IGFscmVh
ZHkgZ2V0IGZyb20gdGhlIGZyYW1lIHBheWxvYWQuCi0gICAgICAgICAgICBpZiAocmVzb3VyY2VQ
YXlsb2FkLnR5cGUgPT09ICJEb2N1bWVudCIgJiYgcmVzb3VyY2VQYXlsb2FkLnVybCA9PT0gcGF5
bG9hZC5mcmFtZS51cmwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKHJlc291cmNlUGF5bG9hZCwgcGF5
bG9hZCk7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0
KQotICAgICAgICAgICAgICAgIGZyYW1lLmFkZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHJlc291cmNlLnRhcmdldCkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS50
YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHRoaXMuX2FkZE9ycGhhbmVkUmVzb3VyY2UocmVzb3VyY2UsIHJlc291cmNlUGF5bG9h
ZC50YXJnZXRJZCk7Ci0KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZVBheWxvYWQuZmFpbGVkIHx8
IHJlc291cmNlUGF5bG9hZC5jYW5jZWxlZCkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5tYXJr
QXNGYWlsZWQocmVzb3VyY2VQYXlsb2FkLmNhbmNlbGVkKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5fZGlzcGF0Y2hGcmFtZVdhc0FkZGVkRXZlbnQoZnJhbWUpOwotCi0gICAgICAg
IHJldHVybiBmcmFtZTsKLSAgICB9Ci0KLSAgICBfYWRkT3JwaGFuZWRSZXNvdXJjZShyZXNvdXJj
ZSwgdGFyZ2V0SWQpCi0gICAgewotICAgICAgICBsZXQgcmVzb3VyY2VzID0gdGhpcy5fb3JwaGFu
ZWRSZXNvdXJjZXMuZ2V0KHRhcmdldElkKTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXMpIHsKLSAg
ICAgICAgICAgIHJlc291cmNlcyA9IFtdOwotICAgICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNv
dXJjZXMuc2V0KHRhcmdldElkLCByZXNvdXJjZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVz
b3VyY2VzLnB1c2gocmVzb3VyY2UpOwotICAgIH0KLQotICAgIF9kaXNwYXRjaEZyYW1lV2FzQWRk
ZWRFdmVudChmcmFtZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHtmcmFtZX0p
OwotICAgIH0KLQotICAgIF9tYWluRnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZyYW1lKQotICAgIHsK
LSAgICAgICAgaWYgKG9sZE1haW5GcmFtZSkKLSAgICAgICAgICAgIG9sZE1haW5GcmFtZS51bm1h
cmtBc01haW5GcmFtZSgpOwotICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lKQotICAgICAgICAg
ICAgdGhpcy5fbWFpbkZyYW1lLm1hcmtBc01haW5GcmFtZSgpOwotCi0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5G
cmFtZURpZENoYW5nZSwge29sZE1haW5GcmFtZX0pOwotICAgIH0KLQotICAgIF9leHRyYURvbWFp
bnNBY3RpdmF0ZWQoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb21haW5z
LmluY2x1ZGVzKCJQYWdlIikgJiYgd2luZG93LlBhZ2VBZ2VudCkKLSAgICAgICAgICAgIFBhZ2VB
Z2VudC5nZXRSZXNvdXJjZVRyZWUodGhpcy5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBh
eWxvYWQuYmluZCh0aGlzKSk7Ci0gICAgfQotfTsKLQotV0kuRnJhbWVSZXNvdXJjZU1hbmFnZXIu
RXZlbnQgPSB7Ci0gICAgRnJhbWVXYXNBZGRlZDogImZyYW1lLXJlc291cmNlLW1hbmFnZXItZnJh
bWUtd2FzLWFkZGVkIiwKLSAgICBGcmFtZVdhc1JlbW92ZWQ6ICJmcmFtZS1yZXNvdXJjZS1tYW5h
Z2VyLWZyYW1lLXdhcy1yZW1vdmVkIiwKLSAgICBNYWluRnJhbWVEaWRDaGFuZ2U6ICJmcmFtZS1y
ZXNvdXJjZS1tYW5hZ2VyLW1haW4tZnJhbWUtZGlkLWNoYW5nZSIsCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSEFSQnVpbGRl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hB
UkJ1aWxkZXIuanMKaW5kZXggNmZiZmU0OTUyNjM2ZmIyOTE4NjJjY2UwZDUxNzZmM2Q4NGRlMDU2
Zi4uMWMwMzg3NjM4ODI3OGUxZWEyMWYyYmI1YzdlZTQzMzk3NWFjZGVkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSEFSQnVpbGRl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9IQVJCdWlsZGVyLmpzCkBAIC02Nyw5ICs2Nyw5IEBAIFdJLkhBUkJ1aWxkZXIgPSBjbGFzcyBI
QVJCdWlsZGVyCiAgICAgc3RhdGljIHBhZ2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbewot
ICAgICAgICAgICAgc3RhcnRlZERhdGVUaW1lOiBIQVJCdWlsZGVyLmRhdGUoV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5yZXF1ZXN0U2VudERhdGUpLAorICAg
ICAgICAgICAgc3RhcnRlZERhdGVUaW1lOiBIQVJCdWlsZGVyLmRhdGUoV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5yZXF1ZXN0U2VudERhdGUpLAogICAgICAgICAgICAg
aWQ6ICJwYWdlXzAiLAotICAgICAgICAgICAgdGl0bGU6IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZS51cmwgfHwgIiIsCisgICAgICAgICAgICB0aXRsZTogV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLnVybCB8fCAiIiwKICAgICAgICAgICAgIHBhZ2VUaW1pbmdzOiBIQVJCdWls
ZGVyLnBhZ2VUaW1pbmdzKCksCiAgICAgICAgIH1dOwogICAgIH0KQEAgLTc4LDExICs3OCwxMSBA
QCBXSS5IQVJCdWlsZGVyID0gY2xhc3MgSEFSQnVpbGRlcgogICAgIHsKICAgICAgICAgbGV0IHJl
c3VsdCA9IHt9OwogCi0gICAgICAgIGxldCBkb21Db250ZW50UmVhZHlFdmVudFRpbWVzdGFtcCA9
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5kb21Db250ZW50UmVhZHlFdmVudFRp
bWVzdGFtcDsKKyAgICAgICAgbGV0IGRvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wID0gV0ku
bmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmRvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wOwog
ICAgICAgICBpZiAoIWlzTmFOKGRvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wKSkKICAgICAg
ICAgICAgIHJlc3VsdC5vbkNvbnRlbnRMb2FkID0gZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3Rh
bXAgKiAxMDAwOwogCi0gICAgICAgIGxldCBsb2FkRXZlbnRUaW1lc3RhbXAgPSBXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wOworICAgICAgICBsZXQg
bG9hZEV2ZW50VGltZXN0YW1wID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmxvYWRFdmVu
dFRpbWVzdGFtcDsKICAgICAgICAgaWYgKCFpc05hTihsb2FkRXZlbnRUaW1lc3RhbXApKQogICAg
ICAgICAgICAgcmVzdWx0Lm9uTG9hZCA9IGxvYWRFdmVudFRpbWVzdGFtcCAqIDEwMDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0luZGV4ZWREQk1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNzJiMGUxMzlh
YzRiYmM1MTc5ZWMyNjliYzUxZDJjNTM5ZDZlNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5hZ2Vy
LmpzCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5JbmRleGVkREJN
YW5hZ2VyID0gY2xhc3MgSW5kZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAoreworICAg
IGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgaWYgKHdp
bmRvdy5JbmRleGVkREJBZ2VudCkKKyAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LmVuYWJsZSgp
OworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5
T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisK
KyAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBpbml0aWFsaXplKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZXMgPSBb
XTsKKyAgICB9CisKKyAgICBnZXQgaW5kZXhlZERhdGFiYXNlcygpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNlczsKKyAgICB9CisKKyAgICByZXF1ZXN0SW5kZXhl
ZERhdGFiYXNlRGF0YShvYmplY3RTdG9yZSwgb2JqZWN0U3RvcmVJbmRleCwgc3RhcnRFbnRyeUlu
ZGV4LCBtYXhpbXVtRW50cnlDb3VudCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydCh3aW5kb3cuSW5kZXhlZERCQWdlbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChv
YmplY3RTdG9yZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxiYWNrKTsKKworICAgICAg
ICBmdW5jdGlvbiBwcm9jZXNzRGF0YShlcnJvciwgZW50cnlQYXlsb2FkcywgbW9yZUF2YWlsYWJs
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sobnVsbCwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKKworICAgICAgICAgICAgZm9y
ICh2YXIgZW50cnlQYXlsb2FkIG9mIGVudHJ5UGF5bG9hZHMpIHsKKyAgICAgICAgICAgICAgICB2
YXIgZW50cnkgPSB7fTsKKyAgICAgICAgICAgICAgICBlbnRyeS5wcmltYXJ5S2V5ID0gV0kuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKGVudHJ5UGF5bG9hZC5wcmltYXJ5S2V5KTsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5rZXkgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZW50cnlQYXls
b2FkLmtleSk7CisgICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBXSS5SZW1vdGVPYmplY3Qu
ZnJvbVBheWxvYWQoZW50cnlQYXlsb2FkLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbnRyaWVz
LnB1c2goZW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhlbnRy
aWVzLCBtb3JlQXZhaWxhYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXF1ZXN0QXJn
dW1lbnRzID0geworICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW46IG9iamVjdFN0b3JlLnBhcmVu
dERhdGFiYXNlLnNlY3VyaXR5T3JpZ2luLAorICAgICAgICAgICAgZGF0YWJhc2VOYW1lOiBvYmpl
Y3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1lLAorICAgICAgICAgICAgb2JqZWN0U3RvcmVOYW1l
OiBvYmplY3RTdG9yZS5uYW1lLAorICAgICAgICAgICAgaW5kZXhOYW1lOiBvYmplY3RTdG9yZUlu
ZGV4ICYmIG9iamVjdFN0b3JlSW5kZXgubmFtZSB8fCAiIiwKKyAgICAgICAgICAgIHNraXBDb3Vu
dDogc3RhcnRFbnRyeUluZGV4IHx8IDAsCisgICAgICAgICAgICBwYWdlU2l6ZTogbWF4aW11bUVu
dHJ5Q291bnQgfHwgMTAwCisgICAgICAgIH07CisKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVx
dWVzdERhdGEuaW52b2tlKHJlcXVlc3RBcmd1bWVudHMsIHByb2Nlc3NEYXRhKTsKKyAgICB9CisK
KyAgICBjbGVhck9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQorICAgIHsKKyAgICAgICAgbGV0IHNl
Y3VyaXR5T3JpZ2luID0gb2JqZWN0U3RvcmUucGFyZW50RGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW47
CisgICAgICAgIGxldCBkYXRhYmFzZU5hbWUgPSBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5u
YW1lOworICAgICAgICBsZXQgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmUubmFtZTsKKwor
ICAgICAgICBJbmRleGVkREJBZ2VudC5jbGVhck9iamVjdFN0b3JlKHNlY3VyaXR5T3JpZ2luLCBk
YXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qg
b2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgorICAg
ICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5JbmRleGVkREJNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworCisgICAg
ICAgICAgICB0aGlzLl9hZGRJbmRleGVkREJEYXRhYmFzZXNJZk5lZWRlZChldmVudC50YXJnZXQp
OworICAgICAgICB9CisgICAgfQorCisgICAgX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVk
KGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuSW5kZXhlZERCQWdlbnQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gZnJhbWUuc2Vj
dXJpdHlPcmlnaW47CisKKyAgICAgICAgLy8gRG9uJ3Qgc2hvdyBzdG9yYWdlIGlmIHdlIGRvbid0
IGhhdmUgYSBzZWN1cml0eSBvcmlnaW4gKGFib3V0OmJsYW5rKS4KKyAgICAgICAgaWYgKCFzZWN1
cml0eU9yaWdpbiB8fCBzZWN1cml0eU9yaWdpbiA9PT0gIjovLyIpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGFiYXNlTmFtZXMoZXJyb3IsIG5hbWVz
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBvZiBuYW1lcykKKyAg
ICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2Uoc2VjdXJpdHlPcmln
aW4sIG5hbWUsIHByb2Nlc3NEYXRhYmFzZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhYmFzZShlcnJvciwgZGF0YWJhc2VQYXlsb2FkKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIWRhdGFiYXNlUGF5bG9hZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBvYmplY3RTdG9yZXMgPSBkYXRh
YmFzZVBheWxvYWQub2JqZWN0U3RvcmVzLm1hcChwcm9jZXNzT2JqZWN0U3RvcmUpOworICAgICAg
ICAgICAgdmFyIGluZGV4ZWREYXRhYmFzZSA9IG5ldyBXSS5JbmRleGVkRGF0YWJhc2UoZGF0YWJh
c2VQYXlsb2FkLm5hbWUsIHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZVBheWxvYWQudmVyc2lvbiwg
b2JqZWN0U3RvcmVzKTsKKworICAgICAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlcy5wdXNo
KGluZGV4ZWREYXRhYmFzZSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5JbmRleGVkREJNYW5hZ2VyLkV2ZW50LkluZGV4ZWREYXRhYmFzZVdhc0FkZGVkLCB7
aW5kZXhlZERhdGFiYXNlfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNz
S2V5UGF0aChrZXlQYXRoUGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChr
ZXlQYXRoUGF5bG9hZC50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEluZGV4ZWREQkFnZW50Lktl
eVBhdGhUeXBlLk51bGw6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAg
ICBjYXNlIEluZGV4ZWREQkFnZW50LktleVBhdGhUeXBlLlN0cmluZzoKKyAgICAgICAgICAgICAg
ICByZXR1cm4ga2V5UGF0aFBheWxvYWQuc3RyaW5nOworICAgICAgICAgICAgY2FzZSBJbmRleGVk
REJBZ2VudC5LZXlQYXRoVHlwZS5BcnJheToKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5UGF0
aFBheWxvYWQuYXJyYXk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVua25vd24gS2V5UGF0aCB0eXBlOiIsIGtleVBhdGhQYXlsb2FkLnR5cGUp
OworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc09iamVjdFN0b3JlKG9iamVjdFN0b3JlUGF5bG9h
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGtleVBhdGggPSBwcm9jZXNzS2V5UGF0aChv
YmplY3RTdG9yZVBheWxvYWQua2V5UGF0aCk7CisgICAgICAgICAgICB2YXIgaW5kZXhlcyA9IG9i
amVjdFN0b3JlUGF5bG9hZC5pbmRleGVzLm1hcChwcm9jZXNzT2JqZWN0U3RvcmVJbmRleCk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlUGF5bG9hZC5uYW1lLCBrZXlQYXRoLCBvYmplY3RTdG9yZVBheWxvYWQuYXV0b0luY3Jl
bWVudCwgaW5kZXhlcyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzT2Jq
ZWN0U3RvcmVJbmRleChvYmplY3RTdG9yZUluZGV4UGF5bG9hZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGtleVBhdGggPSBwcm9jZXNzS2V5UGF0aChvYmplY3RTdG9yZUluZGV4UGF5bG9h
ZC5rZXlQYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVJbmRleChvYmplY3RTdG9yZUluZGV4UGF5bG9hZC5uYW1lLCBrZXlQYXRoLCBvYmpl
Y3RTdG9yZUluZGV4UGF5bG9hZC51bmlxdWUsIG9iamVjdFN0b3JlSW5kZXhQYXlsb2FkLm11bHRp
RW50cnkpOworICAgICAgICB9CisKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFi
YXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4sIHByb2Nlc3NEYXRhYmFzZU5hbWVzLmJpbmQodGhpcykp
OworICAgIH0KKworICAgIF9zZWN1cml0eU9yaWdpbkRpZENoYW5nZShldmVudCkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsK
KworICAgICAgICB0aGlzLl9hZGRJbmRleGVkREJEYXRhYmFzZXNJZk5lZWRlZChldmVudC50YXJn
ZXQpOworICAgIH0KK307CisKK1dJLkluZGV4ZWREQk1hbmFnZXIuRXZlbnQgPSB7CisgICAgSW5k
ZXhlZERhdGFiYXNlV2FzQWRkZWQ6ICJpbmRleGVkLWRiLW1hbmFnZXItaW5kZXhlZC1kYXRhYmFz
ZS13YXMtYWRkZWQiLAorICAgIENsZWFyZWQ6ICJpbmRleGVkLWRiLW1hbmFnZXItY2xlYXJlZCIs
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvSXNzdWVNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjOGI1NWFkYWUyMWIzZmI4MmFlYzYxNGI0NzJjOTc0N2Q4NTA1MzJmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lzc3VlTWFuYWdlci5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuSXNzdWVNYW5hZ2VyID0gY2xh
c3MgSXNzdWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoKQot
ICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fbG9nQ2xlYXJlZCwgdGhpcyk7
Ci0KLSAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlzc3Vl
TWF0Y2hTb3VyY2VDb2RlKGlzc3VlLCBzb3VyY2VDb2RlKQotICAgIHsKLSAgICAgICAgaWYgKHNv
dXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5Tb3VyY2VNYXBSZXNvdXJjZSkKLSAgICAgICAgICAgIHJl
dHVybiBpc3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gJiYgaXNzdWUuc291cmNlQ29kZUxvY2F0aW9u
LmRpc3BsYXlTb3VyY2VDb2RlID09PSBzb3VyY2VDb2RlOwotICAgICAgICBpZiAoc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdJLlJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuIGlzc3VlLnVybCA9
PT0gc291cmNlQ29kZS51cmwgJiYgKCFpc3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gfHwgaXNzdWUu
c291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHNvdXJjZUNvZGUpOwotICAgICAgICBp
ZiAoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiBp
c3N1ZS5zb3VyY2VDb2RlTG9jYXRpb24gJiYgaXNzdWUuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJj
ZUNvZGUgPT09IHNvdXJjZUNvZGU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICAvLyBQdWJsaWMKLQotICAgIGluaXRpYWxpemUoKQotICAgIHsKLSAgICAgICAgdGhpcy5faXNz
dWVzID0gW107Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSXNz
dWVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwotICAgIH0KLQotICAgIGlzc3VlV2FzQWRkZWQoY29u
c29sZU1lc3NhZ2UpCi0gICAgewotICAgICAgICBsZXQgaXNzdWUgPSBuZXcgV0kuSXNzdWVNZXNz
YWdlKGNvbnNvbGVNZXNzYWdlKTsKLQotICAgICAgICB0aGlzLl9pc3N1ZXMucHVzaChpc3N1ZSk7
Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSXNzdWVNYW5hZ2Vy
LkV2ZW50Lklzc3VlV2FzQWRkZWQsIHtpc3N1ZX0pOwotICAgIH0KLQotICAgIGlzc3Vlc0ZvclNv
dXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHZhciBpc3N1ZXMgPSBbXTsKLQot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2lzc3Vlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIGlzc3VlID0gdGhpcy5faXNzdWVzW2ldOwotICAgICAgICAgICAgaWYg
KFdJLklzc3VlTWFuYWdlci5pc3N1ZU1hdGNoU291cmNlQ29kZShpc3N1ZSwgc291cmNlQ29kZSkp
Ci0gICAgICAgICAgICAgICAgaXNzdWVzLnB1c2goaXNzdWUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIGlzc3VlczsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfbG9nQ2xl
YXJlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgIH0KLQot
ICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7Ci0KLSAgICAgICAgaWYg
KCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLmluaXRpYWxpemUoKTsKLSAgICB9Ci19OwotCi1XSS5Jc3N1ZU1hbmFnZXIuRXZl
bnQgPSB7Ci0gICAgSXNzdWVXYXNBZGRlZDogImlzc3VlLW1hbmFnZXItaXNzdWUtd2FzLWFkZGVk
IiwKLSAgICBDbGVhcmVkOiAiaXNzdWUtbWFuYWdlci1jbGVhcmVkIgotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3Jp
cHRMb2dWaWV3Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcwppbmRleCBjZjUw
N2NhZDY2NzMxOTJlYjhjY2M0YjQ2Zjc4ODk5OWEzOGVlMzIyLi5kMjkzYzE0YTJmODMwNDk3MTI1
Yjg2NTZiZTk2MzViODFlNDBmZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2
YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzCkBAIC0xODgsNyArMTg4LDcgQEAgV0kuSmF2YVNj
cmlwdExvZ1ZpZXdDb250cm9sbGVyID0gY2xhc3MgSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
IGV4dGVuZHMgV0kuT2IKIAogICAgIHJlcXVlc3RDbGVhck1lc3NhZ2VzKCkKICAgICB7Ci0gICAg
ICAgIFdJLmxvZ01hbmFnZXIucmVxdWVzdENsZWFyTWVzc2FnZXMoKTsKKyAgICAgICAgV0kuY29u
c29sZU1hbmFnZXIucmVxdWVzdENsZWFyTWVzc2FnZXMoKTsKICAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0xvZ01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxMGM1M2Y4MDdiNWJmYmNlNzJmNWQ3MDZhZTc2YTI1OTI2Y2NjODc2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFnZXIuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVG9iaWFzIFJlaXNzIDx0
b2JpK3dlYmtpdEBiYXNlY29kZS5kZT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuTG9nTWFuYWdlciA9IGNsYXNz
IExvZ01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAg
ewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0
ZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBmYWxzZTsKLQot
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAg
ICAgICB0aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHMgPSBbXTsKLSAgICAgICAgdGhpcy5fbG9n
Z2luZ0NoYW5uZWxTb3VyY2VzID0gW107Ci0KLSAgICAgICAgaWYgKFdJLkxvZ01hbmFnZXIuc3Vw
cG9ydHNMb2dDaGFubmVscygpKSB7Ci0gICAgICAgICAgICB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNv
dXJjZXMgPSBbV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSwgV0kuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5XZWJSVENdOwotICAgICAgICAgICAgQ29uc29sZUFnZW50
LmdldExvZ2dpbmdDaGFubmVscygoZXJyb3IsIGNoYW5uZWxzKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
ICAgICBmb3IgKGxldCBjaGFubmVsIG9mIGNoYW5uZWxzKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xvZ2dpbmdDaGFubmVsU291cmNlcy5pbmNsdWRlcyhjaGFu
bmVsLnNvdXJjZSkpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRoaXMu
X2N1c3RvbUxvZ2dpbmdDaGFubmVscyA9IGNoYW5uZWxzLm1hcChXSS5Mb2dnaW5nQ2hhbm5lbC5m
cm9tUGF5bG9hZCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFN0YXRpYwotCi0gICAgc3RhdGljIHN1cHBvcnRzTG9nQ2hhbm5lbHMoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEhQ29uc29sZUFnZW50LmdldExvZ2dpbmdDaGFubmVsczsKLSAgICB9Ci0KLSAg
ICAvLyBQdWJsaWMKLQotICAgIGdldCBjdXN0b21Mb2dnaW5nQ2hhbm5lbHMoKSB7IHJldHVybiB0
aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5lbHM7IH0KLSAgICBnZXQgbG9nQ2hhbm5lbFNvdXJjZXMo
KSB7IHJldHVybiB0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXM7IH0KLQotICAgIG1lc3NhZ2VX
YXNBZGRlZCh0YXJnZXQsIHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5cGUsIHVybCwgbGluZSwgY29s
dW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdElkKQotICAg
IHsKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ29uc29sZU9ic2VydmVyLgotCi0gICAgICAg
IC8vIEZJWE1FOiBHZXQgYSByZXF1ZXN0IGZyb20gcmVxdWVzdCBJRC4KLQotICAgICAgICBpZiAo
cGFyYW1ldGVycykKLSAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzLm1hcCgoeCkg
PT4gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHgsIHRhcmdldCkpOwotCi0gICAgICAgIGxl
dCBtZXNzYWdlID0gbmV3IFdJLkNvbnNvbGVNZXNzYWdlKHRhcmdldCwgc291cmNlLCBsZXZlbCwg
dGV4dCwgdHlwZSwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBz
dGFja1RyYWNlLCBudWxsKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwge21lc3NhZ2V9KTsKLQotICAgICAg
ICBpZiAobWVzc2FnZS5sZXZlbCA9PT0gIndhcm5pbmciIHx8IG1lc3NhZ2UubGV2ZWwgPT09ICJl
cnJvciIpCi0gICAgICAgICAgICBXSS5pc3N1ZU1hbmFnZXIuaXNzdWVXYXNBZGRlZChtZXNzYWdl
KTsKLSAgICB9Ci0KLSAgICBtZXNzYWdlc0NsZWFyZWQoKQotICAgIHsKLSAgICAgICAgLy8gQ2Fs
bGVkIGZyb20gV0kuQ29uc29sZU9ic2VydmVyLgotCi0gICAgICAgIFdJLkNvbnNvbGVDb21tYW5k
UmVzdWx0TWVzc2FnZS5jbGVhck1heGltdW1TYXZlZFJlc3VsdEluZGV4KCk7Ci0KLSAgICAgICAg
aWYgKHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIC8vIEZyb250
ZW5kIHJlcXVlc3RlZCAiY2xlYXIgY29uc29sZSIgYW5kIEJhY2tlbmQgc3VjY2Vzc2Z1bGx5IGNv
bXBsZXRlZCB0aGUgcmVxdWVzdC4KLSAgICAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNSZXF1
ZXN0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBSZWNlaXZlZCBhbiB1bnJlcXVlc3RlZCBjbGVhciBjb25zb2xlIGV2ZW50LgotICAg
ICAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBmb3IgYSBuYXZpZ2F0aW9uIG9yIG90aGVyIHJlYXNv
bnMgKGxpa2UgY29uc29sZS5jbGVhcigpKS4KLSAgICAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEg
cmVsb2FkLCB3ZSBtYXkgbm90IHdhbnQgdG8gZGlzcGF0Y2ggV0kuTG9nTWFuYWdlci5FdmVudC5D
bGVhcmVkLgotICAgICAgICAgICAgLy8gVG8gZGV0ZWN0IGlmIHRoaXMgaXMgYSByZWxvYWQgd2Ug
d2FpdCBhIHR1cm4gYW5kIGNoZWNrIGlmIHRoZXJlIHdhcyBhIG1haW4gcmVzb3VyY2UgY2hhbmdl
IHJlbG9hZC4KLSAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fZGVsYXllZE1lc3NhZ2VzQ2xl
YXJlZC5iaW5kKHRoaXMpLCAwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF9kZWxheWVkTWVz
c2FnZXNDbGVhcmVkKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9pc05ld1BhZ2VPclJlbG9h
ZCkgewotICAgICAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSBmYWxzZTsKLQotICAg
ICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5jbGVhckxvZ09uTmF2aWdhdGUudmFsdWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQSBjb25zb2xlLmNs
ZWFyKCkgb3IgY29tbWFuZCBsaW5lIGNsZWFyKCkgaGFwcGVuZWQuCi0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7Ci0gICAg
fQotCi0gICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKLSAgICB7Ci0gICAgICAg
IC8vIENhbGxlZCBmcm9tIFdJLkNvbnNvbGVPYnNlcnZlci4KLQotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZCwge2NvdW50fSk7Ci0gICAgfQotCi0gICAgcmVxdWVzdENsZWFyTWVz
c2FnZXMoKQotICAgIHsKLSAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdlc1JlcXVlc3RlZCA9IHRy
dWU7Ci0KLSAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAg
ICB0YXJnZXQuQ29uc29sZUFnZW50LmNsZWFyTWVzc2FnZXMoKTsKLSAgICB9Ci0KLSAgICAvLyBQ
cml2YXRlCi0KLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOwotCi0g
ICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgdGhpcy5faXNOZXdQYWdlT3JSZWxvYWQgPSB0cnVlOwotCi0gICAgICAg
IGxldCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpOwotICAgICAgICBsZXQgd2FzUmVsb2FkZWQgPSBl
dmVudC5kYXRhLm9sZE1haW5SZXNvdXJjZSAmJiBldmVudC5kYXRhLm9sZE1haW5SZXNvdXJjZS51
cmwgPT09IGV2ZW50LnRhcmdldC5tYWluUmVzb3VyY2UudXJsOwotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Mb2dNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB7
dGltZXN0YW1wLCB3YXNSZWxvYWRlZH0pOwotCi0gICAgICAgIFdJLkNvbnNvbGVDb21tYW5kUmVz
dWx0TWVzc2FnZS5jbGVhck1heGltdW1TYXZlZFJlc3VsdEluZGV4KCk7Ci0gICAgfQotfTsKLQot
V0kuTG9nTWFuYWdlci5FdmVudCA9IHsKLSAgICBTZXNzaW9uU3RhcnRlZDogImxvZy1tYW5hZ2Vy
LXNlc3Npb24td2FzLXN0YXJ0ZWQiLAotICAgIENsZWFyZWQ6ICJsb2ctbWFuYWdlci1jbGVhcmVk
IiwKLSAgICBNZXNzYWdlQWRkZWQ6ICJsb2ctbWFuYWdlci1tZXNzYWdlLWFkZGVkIiwKLSAgICBQ
cmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQ6ICJsb2ctbWFuYWdlci1wcmV2aW91cy1t
ZXNzYWdlLXJlcGVhdC1jb3VudC11cGRhdGVkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01h
bmFnZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0MWJmYjU1M2NmZDZiYzZiNjg0ZTk3NDRkOWEwN2RhZThm
ODdlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0wLDAgKzEsNzgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisKKyAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKKyAgICAgICAg
dGhpcy5fbWFpbkZyYW1lID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRl
bnRpZmllck1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX29ycGhhbmVkUmVzb3VyY2VzID0g
bmV3IE1hcDsKKyAgICAgICAgdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMID0gbmV3IE1h
cDsKKworICAgICAgICB0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9h
ZCA9IHRydWU7CisKKyAgICAgICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQpIHsKKyAgICAgICAgICAg
IFBhZ2VBZ2VudC5lbmFibGUoKTsKKyAgICAgICAgICAgIFBhZ2VBZ2VudC5nZXRSZXNvdXJjZVRy
ZWUodGhpcy5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LlNlcnZpY2VXb3JrZXJBZ2VudCkKKyAg
ICAgICAgICAgIFNlcnZpY2VXb3JrZXJBZ2VudC5nZXRJbml0aWFsaXphdGlvbkluZm8odGhpcy5f
cHJvY2Vzc1NlcnZpY2VXb3JrZXJDb25maWd1cmF0aW9uLmJpbmQodGhpcykpOworCisgICAgICAg
IGlmICh3aW5kb3cuTmV0d29ya0FnZW50KQorICAgICAgICAgICAgTmV0d29ya0FnZW50LmVuYWJs
ZSgpOworCisgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Ob3Rp
ZmljYXRpb24uRXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0
ZWQsIHRoaXMpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IG1haW5GcmFtZSgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lOworICAgIH0KKworICAgIGdl
dCBmcmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsuLi50aGlzLl9mcmFtZUlkZW50aWZp
ZXJNYXAudmFsdWVzKCldOworICAgIH0KKworICAgIGZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlk
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcC5nZXQoZnJh
bWVJZCkgfHwgbnVsbDsKKyAgICB9CisKKyAgICByZXNvdXJjZUZvclJlcXVlc3RJZGVudGlmaWVy
KHJlcXVlc3RJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
UmVxdWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVlc3RJZGVudGlmaWVyKSB8fCBudWxsOworICAg
IH0KKworICAgIGZyYW1lRGlkTmF2aWdhdGUoZnJhbWVQYXlsb2FkKQorICAgIHsKKyAgICAgICAg
Ly8gQ2FsbGVkIGZyb20gV0kuUGFnZU9ic2VydmVyLgorCisgICAgICAgIC8vIElnbm9yZSB0aGlz
IHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9yZXNvdXJjZSB0cmVlLgorICAgICAg
ICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGZyYW1lV2FzTG9hZGVkSW5zdGFudGx5ID0g
ZmFsc2U7CisKKyAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoZnJh
bWVQYXlsb2FkLmlkKTsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAgICAgICAgICAgLy8gSWYg
dGhlIGZyYW1lIHdhc24ndCBrbm93biBiZWZvcmUgbm93LCB0aGVuIHRoZSBtYWluIHJlc291cmNl
IHdhcyBsb2FkZWQgaW5zdGFudGx5IChhYm91dDpibGFuaywgZXRjLikKKyAgICAgICAgICAgIC8v
IE1ha2UgYSBuZXcgcmVzb3VyY2UgKHdoaWNoIHdpbGwgbWFrZSB0aGUgZnJhbWUpLiBNYXJrIHdp
bGwgbWFyayBpdCBhcyBsb2FkZWQgYXQgdGhlIGVuZCB0b28gc2luY2Ugd2UKKyAgICAgICAgICAg
IC8vIGRvbid0IGV4cGVjdCBhbnkgbW9yZSBldmVudHMgYWJvdXQgdGhlIGxvYWQgZmluaXNoaW5n
IGZvciB0aGVzZSBmcmFtZXMuCisgICAgICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMu
X2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KG51bGwsIGZyYW1lUGF5bG9hZC5pZCwgZnJh
bWVQYXlsb2FkLmxvYWRlcklkLCBmcmFtZVBheWxvYWQudXJsLCBudWxsLCBudWxsLCBudWxsLCBu
dWxsLCBudWxsLCBudWxsLCBmcmFtZVBheWxvYWQubmFtZSwgZnJhbWVQYXlsb2FkLnNlY3VyaXR5
T3JpZ2luKTsKKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWVSZXNvdXJjZS5wYXJlbnRGcmFtZTsK
KyAgICAgICAgICAgIGZyYW1lV2FzTG9hZGVkSW5zdGFudGx5ID0gdHJ1ZTsKKworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZnJhbWUpOworICAgICAgICAgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZnJhbWVQYXlsb2Fk
LmxvYWRlcklkID09PSBmcmFtZS5wcm92aXNpb25hbExvYWRlcklkZW50aWZpZXIpIHsKKyAgICAg
ICAgICAgIC8vIFRoZXJlIHdhcyBhIHByb3Zpc2lvbmFsIGxvYWQgaW4gcHJvZ3Jlc3MsIGNvbW1p
dCBpdC4KKyAgICAgICAgICAgIGZyYW1lLmNvbW1pdFByb3Zpc2lvbmFsTG9hZChmcmFtZVBheWxv
YWQuc2VjdXJpdHlPcmlnaW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGZy
YW1lLm1haW5SZXNvdXJjZS51cmwgIT09IGZyYW1lUGF5bG9hZC51cmwgfHwgZnJhbWUubG9hZGVy
SWRlbnRpZmllciAhPT0gZnJhbWVQYXlsb2FkLmxvYWRlcklkKSB7CisgICAgICAgICAgICAgICAg
Ly8gTmF2aWdhdGlvbnMgbGlrZSBiYWNrL2ZvcndhcmQgZG8gbm90IGhhdmUgcHJvdmlzaW9uYWwg
bG9hZHMsIHNvIGNyZWF0ZSBhIG5ldyBtYWluIHJlc291cmNlIGhlcmUuCisgICAgICAgICAgICAg
ICAgdmFyIG1haW5SZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZShmcmFtZVBheWxvYWQudXJsLCBm
cmFtZVBheWxvYWQubWltZVR5cGUsIG51bGwsIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGlz
IGFscmVhZHkgY29ycmVjdCwgc28gcmV1c2UgaXQuCisgICAgICAgICAgICAgICAgdmFyIG1haW5S
ZXNvdXJjZSA9IGZyYW1lLm1haW5SZXNvdXJjZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnJhbWUuaW5pdGlhbGl6ZShmcmFtZVBheWxvYWQubmFtZSwgZnJhbWVQYXlsb2FkLnNlY3Vy
aXR5T3JpZ2luLCBmcmFtZVBheWxvYWQubG9hZGVySWQsIG1haW5SZXNvdXJjZSk7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgb2xkTWFpbkZyYW1lID0gdGhpcy5fbWFpbkZyYW1lOworCisgICAg
ICAgIGlmIChmcmFtZVBheWxvYWQucGFyZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBwYXJlbnRG
cmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lUGF5bG9hZC5wYXJlbnRJZCk7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRGcmFtZSk7CisKKyAgICAgICAgICAgIGlm
IChmcmFtZSA9PT0gdGhpcy5fbWFpbkZyYW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX21haW5G
cmFtZSA9IG51bGw7CisKKyAgICAgICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSAhPT0gcGFy
ZW50RnJhbWUpCisgICAgICAgICAgICAgICAgcGFyZW50RnJhbWUuYWRkQ2hpbGRGcmFtZShmcmFt
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZnJhbWUucGFyZW50RnJhbWUp
CisgICAgICAgICAgICAgICAgZnJhbWUucGFyZW50RnJhbWUucmVtb3ZlQ2hpbGRGcmFtZShmcmFt
ZSk7CisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBmcmFtZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKKyAgICAgICAgICAg
IHRoaXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOworCisgICAgICAgIGlmIChm
cmFtZVdhc0xvYWRlZEluc3RhbnRseSkKKyAgICAgICAgICAgIGZyYW1lLm1haW5SZXNvdXJjZS5t
YXJrQXNGaW5pc2hlZCgpOworICAgIH0KKworICAgIGZyYW1lRGlkRGV0YWNoKGZyYW1lSWQpCisg
ICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2JzZXJ2ZXIuCisKKyAgICAgICAg
Ly8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZyYW1lL3Jlc291cmNl
IHRyZWUuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVl
UGF5bG9hZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZnJhbWUgPSB0aGlz
LmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZnJhbWUucGFyZW50RnJhbWUpCisgICAgICAg
ICAgICBmcmFtZS5wYXJlbnRGcmFtZS5yZW1vdmVDaGlsZEZyYW1lKGZyYW1lKTsKKworICAgICAg
ICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAuZGVsZXRlKGZyYW1lLmlkKTsKKworICAgICAgICB2
YXIgb2xkTWFpbkZyYW1lID0gdGhpcy5fbWFpbkZyYW1lOworCisgICAgICAgIGlmIChmcmFtZSA9
PT0gdGhpcy5fbWFpbkZyYW1lKQorICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gbnVsbDsK
KworICAgICAgICBmcmFtZS5jbGVhckV4ZWN1dGlvbkNvbnRleHRzKCk7CisKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuRnJhbWVX
YXNSZW1vdmVkLCB7ZnJhbWV9KTsKKworICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lICE9PSBv
bGRNYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2Uob2xkTWFp
bkZyYW1lKTsKKyAgICB9CisKKyAgICByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJ
ZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3QsIHR5
cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIGluaXRpYXRvciwgdGFy
Z2V0SWQpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIu
CisKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZy
YW1lL3Jlc291cmNlIHRyZWUuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1l
UmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgOCk6IFRpbWVsaW5lIHRpbWVzdGFtcHMgZm9yIGxlZ2FjeSBiYWNr
ZW5kcyBhcmUgY29tcHV0ZWQKKyAgICAgICAgLy8gZHluYW1pY2FsbHkgZnJvbSB0aGUgZmlyc3Qg
YmFja2VuZCB0aW1lc3RhbXAgcmVjZWl2ZWQuIEZvciBuYXZpZ2F0aW9ucyB3ZQorICAgICAgICAv
LyBuZWVkIHRvIHJlc2V0IHRoYXQgYmFzZSB0aW1lc3RhbXAsIGFuZCBhbiBhcHByb3ByaWF0ZSB0
aW1lc3RhbXAgdG8gdXNlIGlzCisgICAgICAgIC8vIHRoZSBuZXcgbWFpbiByZXNvdXJjZSdzIHdp
bGwgYmUgc2VudCB0aW1lc3RhbXAuIFNvIHNhdmUgdGhpcyB2YWx1ZSBvbiB0aGUKKyAgICAgICAg
Ly8gcmVzb3VyY2UgaW4gY2FzZSBpdCBiZWNvbWVzIGEgbWFpbiByZXNvdXJjZS4KKyAgICAgICAg
dmFyIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXAgPSB0aW1lc3RhbXA7CisKKyAg
ICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2Vk
VGltZSh0aW1lc3RhbXApOworICAgICAgICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJl
cXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGlmIChy
ZXNvdXJjZSkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBleGlzdGluZyByZXF1ZXN0IHdo
aWNoIGlzIGJlaW5nIHJlZGlyZWN0ZWQsIHVwZGF0ZSB0aGUgcmVzb3VyY2UuCisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChyZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0YXJnZXRJZCk7CisgICAgICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZWRpcmVj
dFJlc3BvbnNlKHJlcXVlc3QudXJsLCByZXF1ZXN0LmhlYWRlcnMsIGVsYXBzZWRUaW1lKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpbml0aWF0b3JTb3Vy
Y2VDb2RlTG9jYXRpb24gPSB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb25Gcm9tUGF5
bG9hZChpbml0aWF0b3IpOworCisgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcmVxdWVzdCwgbWFr
ZSBhIG5ldyByZXNvdXJjZSBhbmQgYWRkIGl0IHRvIHRoZSByaWdodCBmcmFtZS4KKyAgICAgICAg
cmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChyZXF1ZXN0SWRl
bnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0LnVybCwg
dHlwZSwgcmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuaGVhZGVycywgcmVxdWVzdC5wb3N0RGF0YSwg
ZWxhcHNlZFRpbWUsIHdhbGx0aW1lLCBudWxsLCBudWxsLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9j
YXRpb24sIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXAsIHRhcmdldElkKTsKKwor
ICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlm
aWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBmdXR1cmUgbG9hZGluZyBldmVudHMuCisgICAgICAg
IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuc2V0KHJlcXVlc3RJZGVudGlmaWVy
LCByZXNvdXJjZSk7CisgICAgfQorCisgICAgd2ViU29ja2V0Q3JlYXRlZChyZXF1ZXN0SWQsIHVy
bCkKKyAgICB7CisgICAgICAgIHRoaXMuX3dlYlNvY2tldElkZW50aWZpZXJUb1VSTC5zZXQocmVx
dWVzdElkLCB1cmwpOworICAgIH0KKworICAgIHdlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVx
dWVzdChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIHJlcXVlc3QpCisgICAgeworICAg
ICAgICBsZXQgdXJsID0gdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMLmdldChyZXF1ZXN0
SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh1cmwpOworICAgICAgICBpZiAoIXVybCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBDT01QQVRJQklMSVRZKGlPUyAxMC4zKTog
YHdhbGx0aW1lYCBkaWQgbm90IGV4aXN0IGluIDEwLjMgYW5kIGVhcmxpZXIuCisgICAgICAgIGlm
ICghTmV0d29ya0FnZW50Lmhhc0V2ZW50UGFyYW1ldGVyKCJ3ZWJTb2NrZXRXaWxsU2VuZEhhbmRz
aGFrZVJlcXVlc3QiLCAid2FsbHRpbWUiKSkgeworICAgICAgICAgICAgcmVxdWVzdCA9IGFyZ3Vt
ZW50c1syXTsKKyAgICAgICAgICAgIHdhbGx0aW1lID0gTmFOOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY4NDc1PiBXZWIgSW5zcGVjdG9yOiBDb3JyZWN0
bHkgZGlzcGxheSBpZnJhbWUncyBhbmQgd29ya2VyJ3MgV2ViU29ja2V0cworICAgICAgICBsZXQg
ZnJhbWVJZGVudGlmaWVyID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkOworICAgICAg
ICBsZXQgbG9hZGVySWRlbnRpZmllciA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5pZDsK
KyAgICAgICAgbGV0IHRhcmdldElkOworCisgICAgICAgIGxldCBmcmFtZSA9IHRoaXMuZnJhbWVG
b3JJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIGxldCByZXF1ZXN0RGF0YSA9
IG51bGw7CisgICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21w
dXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKyAgICAgICAgbGV0IGluaXRpYXRvclNvdXJjZUNv
ZGVMb2NhdGlvbiA9IG51bGw7CisKKyAgICAgICAgbGV0IHJlc291cmNlID0gbmV3IFdJLldlYlNv
Y2tldFJlc291cmNlKHVybCwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZCwg
cmVxdWVzdC5oZWFkZXJzLCByZXF1ZXN0RGF0YSwgdGltZXN0YW1wLCB3YWxsdGltZSwgZWxhcHNl
ZFRpbWUsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CisKKyAgICAgICAgZnJhbWUuYWRk
UmVzb3VyY2UocmVzb3VyY2UpOworCisgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50
aWZpZXJNYXAuc2V0KHJlcXVlc3RJZCwgcmVzb3VyY2UpOworICAgIH0KKworICAgIHdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNl
KQorICAgIHsKKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRl
bnRpZmllck1hcC5nZXQocmVxdWVzdElkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3Vy
Y2UpOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHJlc291cmNlLnJlYWR5U3RhdGUgPSBXSS5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRl
Lk9wZW47CisKKyAgICAgICAgbGV0IGVsYXBzZWRUaW1lID0gV0kudGltZWxpbmVNYW5hZ2VyLmNv
bXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOworCisgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0
Lm9yZy9iLzE2OTE2Nj4gV2ViIEluc3BlY3RvcjogV2ViU29ja2V0czogSW1wbGVtZW50IHRpbWlu
ZyBpbmZvcm1hdGlvbgorICAgICAgICBsZXQgcmVzcG9uc2VUaW1pbmcgPSByZXNwb25zZS50aW1p
bmcgfHwgbnVsbDsKKworICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNvdXJj
ZS51cmwsIHJlc291cmNlLm1pbWVUeXBlLCByZXNvdXJjZS50eXBlLCByZXNwb25zZS5oZWFkZXJz
LCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNw
b25zZVRpbWluZyk7CisKKyAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRp
bWUpOworICAgIH0KKworICAgIHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1l
c3RhbXAsIHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2ViU29ja2V0RnJhbWVSZWNl
aXZlZE9yU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpOworICAgIH0KKworICAg
IHdlYlNvY2tldEZyYW1lU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCisgICAg
eworICAgICAgICB0aGlzLl93ZWJTb2NrZXRGcmFtZVJlY2VpdmVkT3JTZW50KHJlcXVlc3RJZCwg
dGltZXN0YW1wLCByZXNwb25zZSk7CisgICAgfQorCisgICAgd2ViU29ja2V0Q2xvc2VkKHJlcXVl
c3RJZCwgdGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVzb3VyY2UpOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHJlc291cmNlLnJlYWR5U3RhdGUgPSBXSS5XZWJTb2NrZXRSZXNv
dXJjZS5SZWFkeVN0YXRlLkNsb3NlZDsKKworICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50
aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgIHJl
c291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKKworICAgICAgICB0aGlzLl93ZWJT
b2NrZXRJZGVudGlmaWVyVG9VUkwuZGVsZXRlKHJlcXVlc3RJZCk7CisgICAgICAgIHRoaXMuX3Jl
c291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZCk7CisgICAgfQorCisg
ICAgX3dlYlNvY2tldEZyYW1lUmVjZWl2ZWRPclNlbnQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJl
c3BvbnNlKQorICAgIHsKKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1
ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVzb3VyY2UpOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIC8vIERhdGEgZ29pbmcgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgaXMg
YWx3YXlzIG1hc2tlZC4KKyAgICAgICAgbGV0IGlzT3V0Z29pbmcgPSAhIXJlc3BvbnNlLm1hc2s7
CisKKyAgICAgICAgbGV0IHtwYXlsb2FkRGF0YSwgcGF5bG9hZExlbmd0aCwgb3Bjb2RlfSA9IHJl
c3BvbnNlOworICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1hbmFnZXIuY29t
cHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisKKyAgICAgICAgcmVzb3VyY2UuYWRkRnJhbWUo
cGF5bG9hZERhdGEsIHBheWxvYWRMZW5ndGgsIGlzT3V0Z29pbmcsIG9wY29kZSwgdGltZXN0YW1w
LCBlbGFwc2VkVGltZSk7CisgICAgfQorCisgICAgbWFya1Jlc291cmNlUmVxdWVzdEFzU2VydmVk
RnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgLy8gQ2Fs
bGVkIGZyb20gV0kuTmV0d29ya09ic2VydmVyLgorCisgICAgICAgIC8vIElnbm9yZSB0aGlzIHdo
aWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9yZXNvdXJjZSB0cmVlLgorICAgICAgICBp
ZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1
ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpOworCisgICAgICAgIC8vIFdl
IG1pZ2h0IG5vdCBoYXZlIGEgcmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMgb3BlbmVkIGR1
cmluZyB0aGUgcGFnZSBsb2FkIChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGlzIGNh
bGxlZCkuCisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYXNzZXJ0IGluIHRoaXMgY2FzZSBz
aW5jZSB3ZSBkbyBsaWtlbHkgaGF2ZSB0aGUgcmVzb3VyY2UsIHZpYSBQYWdlQWdlbnQuZ2V0UmVz
b3VyY2VUcmVlLiBUaGUgUmVzb3VyY2UKKyAgICAgICAgLy8ganVzdCBkb2Vzbid0IGhhdmUgYSBy
ZXF1ZXN0SWRlbnRpZmllciBmb3IgdXMgdG8gbG9vayBpdCB1cC4KKyAgICAgICAgaWYgKCFyZXNv
dXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5sZWdhY3lNYXJr
U2VydmVkRnJvbU1lbW9yeUNhY2hlKCk7CisgICAgfQorCisgICAgcmVzb3VyY2VSZXF1ZXN0V2Fz
U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIs
IGxvYWRlcklkZW50aWZpZXIsIGNhY2hlZFJlc291cmNlUGF5bG9hZCwgdGltZXN0YW1wLCBpbml0
aWF0b3IpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIu
CisKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdob2xlIGZy
YW1lL3Jlc291cmNlIHRyZWUuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1l
UmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5oYXMocmVxdWVz
dElkZW50aWZpZXIpKTsKKworICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1h
bmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgIGxldCBpbml0aWF0
b3JTb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb25G
cm9tUGF5bG9hZChpbml0aWF0b3IpOworICAgICAgICBsZXQgcmVzcG9uc2UgPSBjYWNoZWRSZXNv
dXJjZVBheWxvYWQucmVzcG9uc2U7CisgICAgICAgIGNvbnN0IHJlc3BvbnNlU291cmNlID0gTmV0
d29ya0FnZW50LlJlc3BvbnNlU291cmNlLk1lbW9yeUNhY2hlOworCisgICAgICAgIGxldCByZXNv
dXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVudGlm
aWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIGNhY2hlZFJlc291cmNlUGF5
bG9hZC51cmwsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50eXBlLCAiR0VUIiwgbnVsbCwgbnVsbCwg
ZWxhcHNlZFRpbWUsIG51bGwsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlv
bik7CisgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKGNhY2hlZFJlc291cmNlUGF5
bG9hZC51cmwsIHJlc3BvbnNlLm1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZVBheWxvYWQudHlwZSwg
cmVzcG9uc2UuaGVhZGVycywgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0LCBl
bGFwc2VkVGltZSwgcmVzcG9uc2UudGltaW5nLCByZXNwb25zZVNvdXJjZSk7CisgICAgICAgIHJl
c291cmNlLmluY3JlYXNlU2l6ZShjYWNoZWRSZXNvdXJjZVBheWxvYWQuYm9keVNpemUsIGVsYXBz
ZWRUaW1lKTsKKyAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VUcmFuc2ZlclNpemUoY2FjaGVkUmVz
b3VyY2VQYXlsb2FkLmJvZHlTaXplKTsKKyAgICAgICAgcmVzb3VyY2Uuc2V0Q2FjaGVkUmVzcG9u
c2VCb2R5U2l6ZShjYWNoZWRSZXNvdXJjZVBheWxvYWQuYm9keVNpemUpOworICAgICAgICByZXNv
dXJjZS5tYXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSk7CisKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQocmVzb3VyY2UuY2FjaGVkLCAiVGhpcyByZXNvdXJjZSBzaG91bGQgYmUgY2xhc3NpZmllZCBh
cyBjYWNoZWQgc2luY2UgaXQgd2FzIHNlcnZlZCBmcm9tIHRoZSBNZW1vcnlDYWNoZSIsIHJlc291
cmNlKTsKKworICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnNvdXJjZU1hcFVSTCkK
KyAgICAgICAgICAgIFdJLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAoY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnNvdXJjZU1hcFVSTCwgcmVzb3VyY2UudXJsLCByZXNvdXJjZSk7CisK
KyAgICAgICAgLy8gTm8gbmVlZCB0byBhc3NvY2lhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHJl
cXVlc3RJZGVudGlmaWVyLCBzaW5jZSB0aGlzIGlzIHRoZSBvbmx5IGV2ZW50CisgICAgICAgIC8v
IHNlbnQgZm9yIG1lbW9yeSBjYWNoZSByZXNvdXJjZSBsb2Fkcy4KKyAgICB9CisKKyAgICByZXNv
dXJjZVJlcXVlc3REaWRSZWNlaXZlUmVzcG9uc2UocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRl
bnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgdHlwZSwgcmVzcG9uc2UsIHRpbWVzdGFtcCkKKyAg
ICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLk5ldHdvcmtPYnNlcnZlci4KKworICAgICAg
ICAvLyBJZ25vcmUgdGhpcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgd2hvbGUgZnJhbWUvcmVzb3Vy
Y2UgdHJlZS4KKyAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRy
ZWVQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBlbGFwc2VkVGlt
ZSA9IFdJLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKyAg
ICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5n
ZXQocmVxdWVzdElkZW50aWZpZXIpOworCisgICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEg
cmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMgb3BlbmVkIGR1cmluZyB0aGUgcGFnZSBsb2Fk
IChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGlzIGNhbGxlZCkuCisgICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gYXNzZXJ0IGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBkbyBsaWtlbHkg
aGF2ZSB0aGUgcmVzb3VyY2UsIHZpYSBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlLiBUaGUgUmVz
b3VyY2UKKyAgICAgICAgLy8ganVzdCBkb2Vzbid0IGhhdmUgYSByZXF1ZXN0SWRlbnRpZmllciBm
b3IgdXMgdG8gbG9vayBpdCB1cCwgYnV0IHdlIGNhbiB0cnkgdG8gbG9vayBpdCB1cCBieSBpdHMg
VVJMLgorICAgICAgICBpZiAoIXJlc291cmNlKSB7CisgICAgICAgICAgICB2YXIgZnJhbWUgPSB0
aGlzLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYg
KGZyYW1lKQorICAgICAgICAgICAgICAgIHJlc291cmNlID0gZnJhbWUucmVzb3VyY2VGb3JVUkwo
cmVzcG9uc2UudXJsKTsKKworICAgICAgICAgICAgLy8gSWYgd2UgZmluZCB0aGUgcmVzb3VyY2Ug
dGhpcyB3YXkgd2UgaGFkIG1hcmtlZCBpdCBlYXJsaWVyIGFzIGZpbmlzaGVkIHZpYSBQYWdlQWdl
bnQuZ2V0UmVzb3VyY2VUcmVlLgorICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZXNvdXJj
ZSB3aXRoIHRoZSByZXF1ZXN0SWRlbnRpZmllciBzbyBpdCBjYW4gYmUgZm91bmQgaW4gZnV0dXJl
IGxvYWRpbmcgZXZlbnRzLgorICAgICAgICAgICAgLy8gYW5kIHJvbGwgaXQgYmFjayB0byBhbiB1
bmZpbmlzaGVkIHN0YXRlLCB3ZSBrbm93IG5vdyBpdCBpcyBzdGlsbCBsb2FkaW5nLgorICAgICAg
ICAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1
ZXN0SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkZW50aWZpZXIsIHJlc291cmNlKTsKKyAgICAg
ICAgICAgICAgICByZXNvdXJjZS5yZXZlcnRNYXJrQXNGaW5pc2hlZCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmb3VuZCBhbiBleGlzdGlu
ZyBSZXNvdXJjZSBieSBub3csIHRoZW4gaXQgaXMgYSByZXNvdXJjZSB0aGF0IHdhcyBsb2FkaW5n
IHdoZW4gdGhlIGluc3BlY3RvcgorICAgICAgICAvLyBvcGVuZWQgYW5kIHdlIGp1c3QgbWlzc2Vk
IHRoZSByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGZvciBpdC4gU28gbWFrZSBhIG5ldyByZXNv
dXJjZSBhbmQgYWRkIGl0LgorICAgICAgICBpZiAoIXJlc291cmNlKSB7CisgICAgICAgICAgICBy
ZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVu
dGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlc3BvbnNlLnVybCwg
dHlwZSwgbnVsbCwgcmVzcG9uc2UucmVxdWVzdEhlYWRlcnMsIG51bGwsIGVsYXBzZWRUaW1lLCBu
dWxsLCBudWxsLCBudWxsLCBudWxsKTsKKworICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBy
ZXNvdXJjZSB3aXRoIHRoZSByZXF1ZXN0SWRlbnRpZmllciBzbyBpdCBjYW4gYmUgZm91bmQgaW4g
ZnV0dXJlIGxvYWRpbmcgZXZlbnRzLgorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0
SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkZW50aWZpZXIsIHJlc291cmNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMC4zKTogYGZyb21EaXNrQ2FjaGVg
IGlzIGxlZ2FjeSwgcmVwbGFjZWQgYnkgYHNvdXJjZWAuCisgICAgICAgIGlmIChyZXNwb25zZS5m
cm9tRGlza0NhY2hlKQorICAgICAgICAgICAgcmVzb3VyY2UubGVnYWN5TWFya1NlcnZlZEZyb21E
aXNrQ2FjaGUoKTsKKworICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNwb25z
ZS51cmwsIHJlc3BvbnNlLm1pbWVUeXBlLCB0eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25z
ZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZS50aW1p
bmcsIHJlc3BvbnNlLnNvdXJjZSk7CisgICAgfQorCisgICAgcmVzb3VyY2VSZXF1ZXN0RGlkUmVj
ZWl2ZURhdGEocmVxdWVzdElkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3Ro
LCB0aW1lc3RhbXApCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIuCisKKyAgICAgICAgLy8gSWdub3JlIHRoaXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHdo
b2xlIGZyYW1lL3Jlc291cmNlIHRyZWUuCisgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFp
bkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBsZXQgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IFdJLnRpbWVsaW5l
TWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKKworICAgICAgICAvLyBXZSBt
aWdodCBub3QgaGF2ZSBhIHJlc291cmNlIGlmIHRoZSBpbnNwZWN0b3Igd2FzIG9wZW5lZCBkdXJp
bmcgdGhlIHBhZ2UgbG9hZCAoYWZ0ZXIgcmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudCBpcyBjYWxs
ZWQpLgorICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFzc2VydCBpbiB0aGlzIGNhc2Ugc2lu
Y2Ugd2UgZG8gbGlrZWx5IGhhdmUgdGhlIHJlc291cmNlLCB2aWEgUGFnZUFnZW50LmdldFJlc291
cmNlVHJlZS4gVGhlIFJlc291cmNlCisgICAgICAgIC8vIGp1c3QgZG9lc24ndCBoYXZlIGEgcmVx
dWVzdElkZW50aWZpZXIgZm9yIHVzIHRvIGxvb2sgaXQgdXAuCisgICAgICAgIGlmICghcmVzb3Vy
Y2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VTaXpl
KGRhdGFMZW5ndGgsIGVsYXBzZWRUaW1lKTsKKworICAgICAgICBpZiAoZW5jb2RlZERhdGFMZW5n
dGggIT09IC0xKQorICAgICAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VUcmFuc2ZlclNpemUoZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIH0KKworICAgIHJlc291cmNlUmVxdWVzdERpZEZpbmlzaExv
YWRpbmcocmVxdWVzdElkZW50aWZpZXIsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMLCBtZXRyaWNz
KQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuTmV0d29ya09ic2VydmVyLgorCisg
ICAgICAgIC8vIElnbm9yZSB0aGlzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9y
ZXNvdXJjZSB0cmVlLgorICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291
cmNlVHJlZVBheWxvYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQnkgbm93
IHdlIHNob3VsZCBhbHdheXMgaGF2ZSB0aGUgUmVzb3VyY2UuIEVpdGhlciBpdCB3YXMgZmV0Y2hl
ZCB3aGVuIHRoZSBpbnNwZWN0b3IgZmlyc3Qgb3BlbmVkIHdpdGgKKyAgICAgICAgLy8gUGFnZUFn
ZW50LmdldFJlc291cmNlVHJlZSwgb3IgaXQgd2FzIGEgY3VycmVudGx5IGxvYWRpbmcgcmVzb3Vy
Y2UgdGhhdCB3ZSBsZWFybmVkIGFib3V0IGluIHJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNw
b25zZS4KKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRp
Zmllck1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXNvdXJjZSk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKG1ldHJpY3MpCisgICAgICAgICAgICByZXNvdXJjZS51cGRhdGVXaXRoTWV0
cmljcyhtZXRyaWNzKTsKKworICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXSS50aW1lbGluZU1h
bmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgIHJlc291cmNlLm1h
cmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKKworICAgICAgICBpZiAoc291cmNlTWFwVVJMKQor
ICAgICAgICAgICAgV0kuc291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJjZU1hcChzb3VyY2VN
YXBVUkwsIHJlc291cmNlLnVybCwgcmVzb3VyY2UpOworCisgICAgICAgIHRoaXMuX3Jlc291cmNl
UmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICB9CisK
KyAgICByZXNvdXJjZVJlcXVlc3REaWRGYWlsTG9hZGluZyhyZXF1ZXN0SWRlbnRpZmllciwgY2Fu
Y2VsZWQsIHRpbWVzdGFtcCwgZXJyb3JUZXh0KQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZy
b20gV0kuTmV0d29ya09ic2VydmVyLgorCisgICAgICAgIC8vIElnbm9yZSB0aGlzIHdoaWxlIHdh
aXRpbmcgZm9yIHRoZSB3aG9sZSBmcmFtZS9yZXNvdXJjZSB0cmVlLgorICAgICAgICBpZiAodGhp
cy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gQnkgbm93IHdlIHNob3VsZCBhbHdheXMgaGF2ZSB0aGUgUmVz
b3VyY2UuIEVpdGhlciBpdCB3YXMgZmV0Y2hlZCB3aGVuIHRoZSBpbnNwZWN0b3IgZmlyc3Qgb3Bl
bmVkIHdpdGgKKyAgICAgICAgLy8gUGFnZUFnZW50LmdldFJlc291cmNlVHJlZSwgb3IgaXQgd2Fz
IGEgY3VycmVudGx5IGxvYWRpbmcgcmVzb3VyY2UgdGhhdCB3ZSBsZWFybmVkIGFib3V0IGluIHJl
c291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNwb25zZS4KKyAgICAgICAgbGV0IHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7CisgICAgICAgIGlmICghcmVzb3Vy
Y2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGVsYXBzZWRUaW1lID0gV0ku
dGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOworICAgICAgICBy
ZXNvdXJjZS5tYXJrQXNGYWlsZWQoY2FuY2VsZWQsIGVsYXBzZWRUaW1lLCBlcnJvclRleHQpOwor
CisgICAgICAgIGlmIChyZXNvdXJjZS5wYXJlbnRGcmFtZSAmJiByZXNvdXJjZSA9PT0gcmVzb3Vy
Y2UucGFyZW50RnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UpCisgICAgICAgICAgICByZXNv
dXJjZS5wYXJlbnRGcmFtZS5jbGVhclByb3Zpc2lvbmFsTG9hZCgpOworCisgICAgICAgIHRoaXMu
X3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICBleGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCkKKyAg
ICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLlJ1bnRpbWVPYnNlcnZlci4KKworICAgICAg
ICB2YXIgZnJhbWUgPSB0aGlzLmZyYW1lRm9ySWRlbnRpZmllcihjb250ZXh0UGF5bG9hZC5mcmFt
ZUlkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWUpOworICAgICAgICBpZiAoIWZyYW1l
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGNvbnRl
eHRQYXlsb2FkLm5hbWUgfHwgZnJhbWUubWFpblJlc291cmNlLmRpc3BsYXlOYW1lOworICAgICAg
ICB2YXIgZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KFdJLm1haW5U
YXJnZXQsIGNvbnRleHRQYXlsb2FkLmlkLCBkaXNwbGF5TmFtZSwgY29udGV4dFBheWxvYWQuaXNQ
YWdlQ29udGV4dCwgZnJhbWUpOworICAgICAgICBmcmFtZS5hZGRFeGVjdXRpb25Db250ZXh0KGV4
ZWN1dGlvbkNvbnRleHQpOworICAgIH0KKworICAgIHJlc291cmNlRm9yVVJMKHVybCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgaWYgKHRoaXMuX21haW5GcmFtZS5tYWluUmVzb3VyY2UudXJsID09PSB1cmwp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lLm1haW5SZXNvdXJjZTsKKworICAg
ICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lLnJlc291cmNlRm9yVVJMKHVybCwgdHJ1ZSk7Cisg
ICAgfQorCisgICAgYWRvcHRPcnBoYW5lZFJlc291cmNlc0ZvclRhcmdldCh0YXJnZXQpCisgICAg
eworICAgICAgICBsZXQgcmVzb3VyY2VzID0gdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMudGFrZSh0
YXJnZXQuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghcmVzb3VyY2VzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHJlc291cmNlIG9mIHJlc291cmNlcykKKyAgICAg
ICAgICAgIHRhcmdldC5hZG9wdFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9CisKKyAgICAvLyBQ
cml2YXRlCisKKyAgICBfYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElkZW50
aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgdXJsLCB0eXBlLCByZXF1
ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCB3YWxs
dGltZSwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpbml0aWF0b3JTb3VyY2VDb2Rl
TG9jYXRpb24sIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXAsIHRhcmdldElkKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVS
ZXNvdXJjZVRyZWVQYXlsb2FkKTsKKworICAgICAgICBsZXQgcmVzb3VyY2UgPSBudWxsOworCisg
ICAgICAgIGlmICghZnJhbWVJZGVudGlmaWVyICYmIHRhcmdldElkKSB7CisgICAgICAgICAgICAv
LyBUaGlzIGlzIGEgbmV3IHJlc291cmNlIGZvciBhIFNlcnZpY2VXb3JrZXIgdGFyZ2V0LgorICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBX
SS5EZWJ1Z2dhYmxlVHlwZS5TZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRhcmdldElkID09PSBXSS5tYWluVGFyZ2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAg
cmVzb3VyY2UgPSBuZXcgV0kuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBlLCBsb2FkZXJJZGVudGlm
aWVyLCB0YXJnZXRJZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RI
ZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIHdhbGx0aW1lLCBpbml0aWF0b3JTb3Vy
Y2VDb2RlTG9jYXRpb24sIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXApOworICAg
ICAgICAgICAgcmVzb3VyY2UudGFyZ2V0LmFkZFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAg
ICAgIHJldHVybiByZXNvdXJjZTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBmcmFtZSA9IHRo
aXMuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChmcmFt
ZSkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0IGZvciBhbiBleGlzdGlu
ZyBmcmFtZSwgd2hpY2ggbWlnaHQgYmUgdGhlIG1haW4gcmVzb3VyY2Ugb3IgYSBuZXcgcmVzb3Vy
Y2UuCisgICAgICAgICAgICBpZiAodHlwZSA9PT0gIkRvY3VtZW50IiAmJiBmcmFtZS5tYWluUmVz
b3VyY2UudXJsID09PSB1cmwgJiYgZnJhbWUubG9hZGVySWRlbnRpZmllciA9PT0gbG9hZGVySWRl
bnRpZmllcikKKyAgICAgICAgICAgICAgICByZXNvdXJjZSA9IGZyYW1lLm1haW5SZXNvdXJjZTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICJEb2N1bWVudCIgJiYgZnJhbWUucHJvdmlz
aW9uYWxNYWluUmVzb3VyY2UgJiYgZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UudXJsID09
PSB1cmwgJiYgZnJhbWUucHJvdmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyID09PSBsb2FkZXJJZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIHJlc291cmNlID0gZnJhbWUucHJvdmlzaW9uYWxNYWlu
UmVzb3VyY2U7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSA9
IG5ldyBXSS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdl
dElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJl
cXVlc3REYXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIGluaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc291cmNlLnRhcmdldCA9PT0gV0kucGFnZVRhcmdldCkKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lLCByZXNvdXJjZSk7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAocmVzb3VyY2UudGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBy
ZXNvdXJjZS50YXJnZXQuYWRkUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkT3JwaGFuZWRSZXNvdXJjZShyZXNvdXJj
ZSwgdGFyZ2V0SWQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gVGhpcyBpcyBhIG5ldyByZXF1ZXN0IGZvciBhIG5ldyBmcmFtZSwgd2hpY2ggaXMgYWx3
YXlzIHRoZSBtYWluIHJlc291cmNlLgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuc2hh
cmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5TZXJ2aWNlV29ya2Vy
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0YXJnZXRJZCk7CisgICAgICAgICAgICBy
ZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZp
ZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhl
YWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIGluaXRpYXRvclNvdXJj
ZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7CisgICAg
ICAgICAgICBmcmFtZSA9IG5ldyBXSS5GcmFtZShmcmFtZUlkZW50aWZpZXIsIGZyYW1lTmFtZSwg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgbG9hZGVySWRlbnRpZmllciwgcmVzb3VyY2UpOworICAgICAg
ICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwLnNldChmcmFtZS5pZCwgZnJhbWUpOworCisg
ICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgbWFpbiBmcmFtZSwgYXNzdW1lIHRoaXMg
aXMgaXQuIFRoaXMgY2FuIGNoYW5nZSBsYXRlciBpbgorICAgICAgICAgICAgLy8gZnJhbWVEaWRO
YXZpZ2F0ZSB3aGVuIHRoZSBwYXJlbnQgZnJhbWUgaXMga25vd24uCisgICAgICAgICAgICBpZiAo
IXRoaXMuX21haW5GcmFtZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZSA9IGZy
YW1lOworICAgICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShudWxsKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hGcmFtZVdhc0FkZGVkRXZl
bnQoZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2Up
OworCisgICAgICAgIHJldHVybiByZXNvdXJjZTsKKyAgICB9CisKKyAgICBfYWRkUmVzb3VyY2VU
b0ZyYW1lKGZyYW1lLCByZXNvdXJjZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0
aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCk7CisgICAgICAgIGlm
ICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKKworICAgICAgICBpZiAocmVzb3VyY2UubG9hZGVySWRl
bnRpZmllciAhPT0gZnJhbWUubG9hZGVySWRlbnRpZmllciAmJiAhZnJhbWUucHJvdmlzaW9uYWxM
b2FkZXJJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBh
IHByb3Zpc2lvbmFsIGxvYWQgd2hpY2ggaGFwcGVucyBiZWZvcmUgZnJhbWVEaWROYXZpZ2F0ZSBp
cyBjYWxsZWQuCisgICAgICAgICAgICAvLyBUaGlzIHJlc291cmNlIHdpbGwgYmUgdGhlIG5ldyBt
YWluUmVzb3VyY2UgaWYgZnJhbWVEaWROYXZpZ2F0ZSBpcyBjYWxsZWQuCisgICAgICAgICAgICBm
cmFtZS5zdGFydFByb3Zpc2lvbmFsTG9hZChyZXNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGlzIGp1c3QgYW5vdGhlciByZXNvdXJjZSwg
ZWl0aGVyIGZvciB0aGUgbWFpbiBsb2FkZXIgb3IgdGhlIHByb3Zpc2lvbmFsIGxvYWRlci4KKyAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UubG9hZGVySWRlbnRpZmllciA9PT0gZnJhbWUu
bG9hZGVySWRlbnRpZmllciB8fCByZXNvdXJjZS5sb2FkZXJJZGVudGlmaWVyID09PSBmcmFtZS5w
cm92aXNpb25hbExvYWRlcklkZW50aWZpZXIpOworICAgICAgICBmcmFtZS5hZGRSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgfQorCisgICAgX2FkZFJlc291cmNlVG9UYXJnZXQodGFyZ2V0LCByZXNv
dXJjZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCAhPT0gV0kucGFnZVRh
cmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKKworICAgICAgICB0YXJn
ZXQuYWRkUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0KKworICAgIF9pbml0aWF0b3JTb3VyY2VD
b2RlTG9jYXRpb25Gcm9tUGF5bG9hZChpbml0aWF0b3JQYXlsb2FkKQorICAgIHsKKyAgICAgICAg
aWYgKCFpbml0aWF0b3JQYXlsb2FkKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAg
ICAgdmFyIHVybCA9IG51bGw7CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gTmFOOworICAgICAg
ICB2YXIgY29sdW1uTnVtYmVyID0gMDsKKworICAgICAgICBpZiAoaW5pdGlhdG9yUGF5bG9hZC5z
dGFja1RyYWNlICYmIGluaXRpYXRvclBheWxvYWQuc3RhY2tUcmFjZS5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIHZhciBzdGFja1RyYWNlUGF5bG9hZCA9IGluaXRpYXRvclBheWxvYWQuc3RhY2tUcmFj
ZTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2tUcmFjZVBheWxvYWQubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lUGF5bG9hZCA9IHN0YWNr
VHJhY2VQYXlsb2FkW2ldOworICAgICAgICAgICAgICAgIGlmICghY2FsbEZyYW1lUGF5bG9hZC51
cmwgfHwgY2FsbEZyYW1lUGF5bG9hZC51cmwgPT09ICJbbmF0aXZlIGNvZGVdIikKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB1cmwgPSBjYWxsRnJhbWVQ
YXlsb2FkLnVybDsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFz
ZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0g
Y2FsbEZyYW1lUGF5bG9hZC5saW5lTnVtYmVyIC0gMTsKKworICAgICAgICAgICAgICAgIGNvbHVt
bk51bWJlciA9IGNhbGxGcmFtZVBheWxvYWQuY29sdW1uTnVtYmVyOworCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9yUGF5
bG9hZC51cmwpIHsKKyAgICAgICAgICAgIHVybCA9IGluaXRpYXRvclBheWxvYWQudXJsOworCisg
ICAgICAgICAgICAvLyBUaGUgbGluZU51bWJlciBpcyAxLWJhc2VkLCBidXQgd2UgZXhwZWN0IDAt
YmFzZWQuCisgICAgICAgICAgICBsaW5lTnVtYmVyID0gaW5pdGlhdG9yUGF5bG9hZC5saW5lTnVt
YmVyIC0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdXJsIHx8IGlzTmFOKGxpbmVOdW1i
ZXIpIHx8IGxpbmVOdW1iZXIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAg
ICAgdmFyIHNvdXJjZUNvZGUgPSBXSS5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwp
OworICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAgICBzb3VyY2VDb2RlID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLnNjcmlwdHNGb3JVUkwodXJsLCBXSS5tYWluVGFyZ2V0KVswXTsKKwor
ICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAg
ICAgICByZXR1cm4gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKKyAgICB9CisKKyAgICBfcHJvY2Vzc1NlcnZpY2VXb3JrZXJDb25m
aWd1cmF0aW9uKGVycm9yLCBpbml0aWFsaXphdGlvblBheWxvYWQpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9h
ZCk7CisgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2Fk
ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChpbml0aWFsaXphdGlvblBheWxvYWQudGFyZ2V0
SWQuc3RhcnRzV2l0aCgic2VydmljZXdvcmtlcjoiKSk7CisKKyAgICAgICAgV0kubWFpblRhcmdl
dC5pZGVudGlmaWVyID0gaW5pdGlhbGl6YXRpb25QYXlsb2FkLnRhcmdldElkOworICAgICAgICBX
SS5tYWluVGFyZ2V0Lm5hbWUgPSBpbml0aWFsaXphdGlvblBheWxvYWQudXJsOworCisgICAgICAg
IC8vIENyZWF0ZSBhIG1haW4gcmVzb3VyY2Ugd2l0aCB0aGlzIGNvbnRlbnQgaW4gY2FzZSB0aGUg
Y29udGVudCBuZXZlciBzaG93cyB1cCBhcyBhIFdJLlNjcmlwdC4KKyAgICAgICAgY29uc3QgdHlw
ZSA9IFdJLlNjcmlwdC5Tb3VyY2VUeXBlLlByb2dyYW07CisgICAgICAgIGxldCBzY3JpcHQgPSBu
ZXcgV0kuTG9jYWxTY3JpcHQoV0kubWFpblRhcmdldCwgaW5pdGlhbGl6YXRpb25QYXlsb2FkLnVy
bCwgdHlwZSwgaW5pdGlhbGl6YXRpb25QYXlsb2FkLmNvbnRlbnQpOworICAgICAgICBXSS5tYWlu
VGFyZ2V0Lm1haW5SZXNvdXJjZSA9IHNjcmlwdDsKKworICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoKCkgPT4geworICAgICAgICAgICAgaWYgKFdJLm1h
aW5UYXJnZXQubWFpblJlc291cmNlID09PSBzY3JpcHQpIHsKKyAgICAgICAgICAgICAgICAvLyBX
ZSd2ZSBub3cgcmVjZWl2ZWQgYWxsIHRoZSBzY3JpcHRzLCBpZiB3ZSBkb24ndCBoYXZlIGEgYmV0
dGVyIG1haW4gcmVzb3VyY2UgdXNlIHRoaXMgTG9jYWxTY3JpcHQuCisgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kubWFpblRhcmdldCkuYWRkU2NyaXB0
KHNjcmlwdCk7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIHtzY3Jp
cHR9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3Byb2Nlc3NN
YWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKGVycm9yLCBtYWluRnJhbWVQYXlsb2FkKQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291
cmNlVHJlZVBheWxvYWQpOworICAgICAgICB0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3Vy
Y2VUcmVlUGF5bG9hZCA9IGZhbHNlOworCisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAg
ICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnJvcikpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQobWFpbkZyYW1lUGF5bG9h
ZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1haW5GcmFtZVBheWxvYWQuZnJhbWUpOworCisg
ICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAgPSBuZXcgTWFwOworICAg
ICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOworCisgICAgICAgIHZhciBv
bGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7CisKKyAgICAgICAgdGhpcy5fbWFpbkZyYW1l
ID0gdGhpcy5fYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZChtYWluRnJh
bWVQYXlsb2FkLCB0cnVlKTsKKworICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lICE9PSBvbGRN
YWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZy
YW1lKTsKKyAgICB9CisKKyAgICBfY3JlYXRlRnJhbWUocGF5bG9hZCkKKyAgICB7CisgICAgICAg
IC8vIElmIHBheWxvYWQudXJsIGlzIG1pc3Npbmcgb3IgZW1wdHkgdGhlbiB0aGlzIHBhZ2UgaXMg
bGlrZWx5IHRoZSBzcGVjaWFsIGVtcHR5IHBhZ2UuIEluIHRoYXQgY2FzZQorICAgICAgICAvLyB3
ZSB3aWxsIGp1c3Qgc2F5IGl0IGlzICJhYm91dDpibGFuayIgc28gd2UgaGF2ZSBhIFVSTCwgd2hp
Y2ggaXMgcmVxdWlyZWQgZm9yIHJlc291cmNlcy4KKyAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9
IG5ldyBXSS5SZXNvdXJjZShwYXlsb2FkLnVybCB8fCAiYWJvdXQ6YmxhbmsiLCBwYXlsb2FkLm1p
bWVUeXBlLCBudWxsLCBwYXlsb2FkLmxvYWRlcklkKTsKKyAgICAgICAgdmFyIGZyYW1lID0gbmV3
IFdJLkZyYW1lKHBheWxvYWQuaWQsIHBheWxvYWQubmFtZSwgcGF5bG9hZC5zZWN1cml0eU9yaWdp
biwgcGF5bG9hZC5sb2FkZXJJZCwgbWFpblJlc291cmNlKTsKKworICAgICAgICB0aGlzLl9mcmFt
ZUlkZW50aWZpZXJNYXAuc2V0KGZyYW1lLmlkLCBmcmFtZSk7CisKKyAgICAgICAgbWFpblJlc291
cmNlLm1hcmtBc0ZpbmlzaGVkKCk7CisKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgIH0KKwor
ICAgIF9jcmVhdGVSZXNvdXJjZShwYXlsb2FkLCBmcmFtZVBheWxvYWQpCisgICAgeworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBuZXcgV0kuUmVzb3VyY2UocGF5bG9hZC51cmwsIHBheWxvYWQubWlt
ZVR5cGUsIHBheWxvYWQudHlwZSwgZnJhbWVQYXlsb2FkLmxvYWRlcklkLCBwYXlsb2FkLnRhcmdl
dElkKTsKKworICAgICAgICBpZiAocGF5bG9hZC5zb3VyY2VNYXBVUkwpCisgICAgICAgICAgICBX
SS5zb3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNlTWFwKHBheWxvYWQuc291cmNlTWFwVVJM
LCByZXNvdXJjZS51cmwsIHJlc291cmNlKTsKKworICAgICAgICByZXR1cm4gcmVzb3VyY2U7Cisg
ICAgfQorCisgICAgX2FkZEZyYW1lVHJlZUZyb21GcmFtZVJlc291cmNlVHJlZVBheWxvYWQocGF5
bG9hZCwgaXNNYWluRnJhbWUpCisgICAgeworICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9jcmVh
dGVGcmFtZShwYXlsb2FkLmZyYW1lKTsKKyAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQorICAgICAg
ICAgICAgZnJhbWUubWFya0FzTWFpbkZyYW1lKCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IHBheWxvYWQuY2hpbGRGcmFtZXMgJiYgaSA8IHBheWxvYWQuY2hpbGRGcmFtZXMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBmcmFtZS5hZGRDaGlsZEZyYW1lKHRoaXMuX2FkZEZyYW1lVHJlZUZy
b21GcmFtZVJlc291cmNlVHJlZVBheWxvYWQocGF5bG9hZC5jaGlsZEZyYW1lc1tpXSwgZmFsc2Up
KTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgcGF5bG9hZC5yZXNvdXJjZXMgJiYgaSA8IHBh
eWxvYWQucmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2VQ
YXlsb2FkID0gcGF5bG9hZC5yZXNvdXJjZXNbaV07CisKKyAgICAgICAgICAgIC8vIFRoZSBtYWlu
IHJlc291cmNlIGlzIGluY2x1ZGVkIGFzIGEgcmVzb3VyY2UuIFdlIGNhbiBza2lwIGl0IHNpbmNl
IHdlIGFscmVhZHkgY3JlYXRlZAorICAgICAgICAgICAgLy8gYSBtYWluIHJlc291cmNlIHdoZW4g
d2UgY3JlYXRlZCB0aGUgRnJhbWUuIFRoZSByZXNvdXJjZSBwYXlsb2FkIGRvZXMgbm90IGluY2x1
ZGUgYW55dGhpbmcKKyAgICAgICAgICAgIC8vIGRpZG4ndCBhbHJlYWR5IGdldCBmcm9tIHRoZSBm
cmFtZSBwYXlsb2FkLgorICAgICAgICAgICAgaWYgKHJlc291cmNlUGF5bG9hZC50eXBlID09PSAi
RG9jdW1lbnQiICYmIHJlc291cmNlUGF5bG9hZC51cmwgPT09IHBheWxvYWQuZnJhbWUudXJsKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSB0
aGlzLl9jcmVhdGVSZXNvdXJjZShyZXNvdXJjZVBheWxvYWQsIHBheWxvYWQpOworICAgICAgICAg
ICAgaWYgKHJlc291cmNlLnRhcmdldCA9PT0gV0kucGFnZVRhcmdldCkKKyAgICAgICAgICAgICAg
ICBmcmFtZS5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICBlbHNlIGlmIChyZXNv
dXJjZS50YXJnZXQpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UudGFyZ2V0LmFkZFJlc291cmNl
KHJlc291cmNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRP
cnBoYW5lZFJlc291cmNlKHJlc291cmNlLCByZXNvdXJjZVBheWxvYWQudGFyZ2V0SWQpOworCisg
ICAgICAgICAgICBpZiAocmVzb3VyY2VQYXlsb2FkLmZhaWxlZCB8fCByZXNvdXJjZVBheWxvYWQu
Y2FuY2VsZWQpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UubWFya0FzRmFpbGVkKHJlc291cmNl
UGF5bG9hZC5jYW5jZWxlZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVz
b3VyY2UubWFya0FzRmluaXNoZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Rpc3Bh
dGNoRnJhbWVXYXNBZGRlZEV2ZW50KGZyYW1lKTsKKworICAgICAgICByZXR1cm4gZnJhbWU7Cisg
ICAgfQorCisgICAgX2FkZE9ycGhhbmVkUmVzb3VyY2UocmVzb3VyY2UsIHRhcmdldElkKQorICAg
IHsKKyAgICAgICAgbGV0IHJlc291cmNlcyA9IHRoaXMuX29ycGhhbmVkUmVzb3VyY2VzLmdldCh0
YXJnZXRJZCk7CisgICAgICAgIGlmICghcmVzb3VyY2VzKSB7CisgICAgICAgICAgICByZXNvdXJj
ZXMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX29ycGhhbmVkUmVzb3VyY2VzLnNldCh0YXJnZXRJ
ZCwgcmVzb3VyY2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc291cmNlcy5wdXNoKHJlc291
cmNlKTsKKyAgICB9CisKKyAgICBfZGlzcGF0Y2hGcmFtZVdhc0FkZGVkRXZlbnQoZnJhbWUpCisg
ICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB7ZnJhbWV9KTsKKyAgICB9CisKKyAgICBfbWFpbkZy
YW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSkKKyAgICB7CisgICAgICAgIGlmIChvbGRNYWluRnJh
bWUpCisgICAgICAgICAgICBvbGRNYWluRnJhbWUudW5tYXJrQXNNYWluRnJhbWUoKTsKKyAgICAg
ICAgaWYgKHRoaXMuX21haW5GcmFtZSkKKyAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZS5tYXJr
QXNNYWluRnJhbWUoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHtvbGRNYWluRnJhbWV9
KTsKKyAgICB9CisKKyAgICBfZXh0cmFEb21haW5zQWN0aXZhdGVkKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKGV2ZW50LmRhdGEuZG9tYWlucy5pbmNsdWRlcygiUGFnZSIpICYmIHdpbmRvdy5Q
YWdlQWdlbnQpCisgICAgICAgICAgICBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlKHRoaXMuX3By
b2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkLmJpbmQodGhpcykpOworICAgIH0KK307
CisKK1dJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50ID0geworICAgIEZyYW1lV2FzQWRkZWQ6ICJuZXR3
b3JrLW1hbmFnZXItZnJhbWUtd2FzLWFkZGVkIiwKKyAgICBGcmFtZVdhc1JlbW92ZWQ6ICJuZXR3
b3JrLW1hbmFnZXItZnJhbWUtd2FzLXJlbW92ZWQiLAorICAgIE1haW5GcmFtZURpZENoYW5nZTog
Im5ldHdvcmstbWFuYWdlci1tYWluLWZyYW1lLWRpZC1jaGFuZ2UiLAorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NvdXJjZU1h
cE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzCmluZGV4IDczMjM1Mjc4MjY3MzFlYzFlNjk5ZGZiMTM2
MTlmMjlhNTc2OTlhOTUuLmY1OTRmZmU4MmFlMDFjMWUwMTM0NTY3N2IyZjNkNzk2YzIzNTM5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1NvdXJjZU1hcE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvU291cmNlTWFwTWFuYWdlci5qcwpAQCAtNDYsOCArNDYsOCBA
QCBXSS5Tb3VyY2VNYXBNYW5hZ2VyID0gY2xhc3MgU291cmNlTWFwTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgIHsKICAgICAgICAgLy8gVGhlIGJhc2VVUkwgY291bGQgaGF2ZSBjb21lIGZy
b20gYSAiLy8jIHNvdXJjZVVSTCIuIEF0dGVtcHQgdG8gZ2V0IGEKICAgICAgICAgLy8gcmVhc29u
YWJsZSBhYnNvbHV0ZSBVUkwgZm9yIHRoZSBiYXNlIGJ5IHVzaW5nIHRoZSBtYWluIHJlc291cmNl
J3MgVVJMLgotICAgICAgICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKQot
ICAgICAgICAgICAgYmFzZVVSTCA9IGFic29sdXRlVVJMKGJhc2VVUkwsIFdJLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLm1haW5GcmFtZS51cmwpOworICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIu
bWFpbkZyYW1lKQorICAgICAgICAgICAgYmFzZVVSTCA9IGFic29sdXRlVVJMKGJhc2VVUkwsIFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51cmwpOwogCiAgICAgICAgIGlmIChzb3VyY2VNYXBV
Ukwuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgICAgICAgICAgdGhpcy5fbG9hZEFuZFBhcnNl
U291cmNlTWFwKHNvdXJjZU1hcFVSTCwgYmFzZVVSTCwgb3JpZ2luYWxTb3VyY2VDb2RlKTsKQEAg
LTc1LDcgKzc1LDcgQEAgV0kuU291cmNlTWFwTWFuYWdlciA9IGNsYXNzIFNvdXJjZU1hcE1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2xvYWRBbmRQYXJzZVNvdXJj
ZU1hcChzb3VyY2VNYXBVUkwsIGJhc2VVUkwsIG9yaWdpbmFsU291cmNlQ29kZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIVdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSkgewor
ICAgICAgICBpZiAoIVdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkgewogICAgICAgICAgICAg
Ly8gSWYgd2UgZG9uJ3QgaGF2ZSBhIG1haW4gZnJhbWUsIHRoZW4gd2UgYXJlIGxpa2VseSBpbiB0
aGUgbWlkZGxlIG9mIGJ1aWxkaW5nIHRoZSByZXNvdXJjZSB0cmVlLgogICAgICAgICAgICAgLy8g
RGVsYXlpbmcgdW50aWwgdGhlIG5leHQgcnVubG9vcCBpcyBlbm91Z2ggaW4gdGhpcyBjYXNlIHRv
IHRoZW4gc3RhcnQgbG9hZGluZyB0aGUgc291cmNlIG1hcC4KICAgICAgICAgICAgIHNldFRpbWVv
dXQobG9hZEFuZFBhcnNlU291cmNlTWFwLmJpbmQodGhpcyksIDApOwpAQCAtMTM1LDcgKzEzNSw3
IEBAIFdJLlNvdXJjZU1hcE1hbmFnZXIgPSBjbGFzcyBTb3VyY2VNYXBNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICBmcmFtZUlkZW50aWZpZXIgPSBvcmlnaW5hbFNvdXJjZUNv
ZGUucGFyZW50RnJhbWUuaWQ7CiAKICAgICAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCi0gICAg
ICAgICAgICBmcmFtZUlkZW50aWZpZXIgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUgPyBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQgOiAiIjsKKyAgICAgICAg
ICAgIGZyYW1lSWRlbnRpZmllciA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSA/IFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5pZCA6ICIiOwogCiAgICAgICAgIE5ldHdvcmtBZ2VudC5s
b2FkUmVzb3VyY2UoZnJhbWVJZGVudGlmaWVyLCBzb3VyY2VNYXBVUkwsIHNvdXJjZU1hcExvYWRl
ZC5iaW5kKHRoaXMpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U2OGNiNWQwMTQyOWJmZmIxNzYyZTMyMTBh
NzYzZjJjMzkzNWFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1N0b3Jh
Z2VNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzM2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVdJLlN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgU3RvcmFnZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBzdXBlcigp
OwotCi0gICAgICAgIGlmICh3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQotICAgICAgICAgICAgRE9N
U3RvcmFnZUFnZW50LmVuYWJsZSgpOwotICAgICAgICBpZiAod2luZG93LkRhdGFiYXNlQWdlbnQp
Ci0gICAgICAgICAgICBEYXRhYmFzZUFnZW50LmVuYWJsZSgpOwotICAgICAgICBpZiAod2luZG93
LkluZGV4ZWREQkFnZW50KQotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQuZW5hYmxlKCk7Ci0K
LSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0gICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuU2VjdXJpdHlPcmln
aW5EaWRDaGFuZ2UsIHRoaXMuX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAg
ICAgICB0aGlzLmluaXRpYWxpemUoKTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGlu
aXRpYWxpemUoKQotICAgIHsKLSAgICAgICAgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMgPSBbXTsK
LSAgICAgICAgdGhpcy5fZGF0YWJhc2VPYmplY3RzID0gW107Ci0gICAgICAgIHRoaXMuX2luZGV4
ZWREYXRhYmFzZXMgPSBbXTsKLSAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMgPSB7
fTsKLSAgICB9Ci0KLSAgICBnZXQgZG9tU3RvcmFnZU9iamVjdHMoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzOwotICAgIH0KLQotICAgIGdldCBkYXRhYmFz
ZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlT2JqZWN0czsKLSAgICB9
Ci0KLSAgICBnZXQgaW5kZXhlZERhdGFiYXNlcygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5faW5kZXhlZERhdGFiYXNlczsKLSAgICB9Ci0KLSAgICBnZXQgY29va2llU3RvcmFnZU9iamVj
dHMoKQotICAgIHsKLSAgICAgICAgdmFyIGNvb2tpZVN0b3JhZ2VPYmplY3RzID0gW107Ci0gICAg
ICAgIGZvciAodmFyIGhvc3QgaW4gdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMpCi0gICAgICAg
ICAgICBjb29raWVTdG9yYWdlT2JqZWN0cy5wdXNoKHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3Rz
W2hvc3RdKTsKLSAgICAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPYmplY3RzOwotICAgIH0KLQot
ICAgIGRvbVN0b3JhZ2VXYXNBZGRlZChpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCi0gICAgewot
ICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IG5ldyBXSS5ET01TdG9yYWdlT2JqZWN0KGlkLCBob3N0
LCBpc0xvY2FsU3RvcmFnZSk7Ci0KLSAgICAgICAgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMucHVz
aChkb21TdG9yYWdlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
U3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7ZG9tU3RvcmFn
ZX0pOwotICAgIH0KLQotICAgIGRhdGFiYXNlV2FzQWRkZWQoaWQsIGhvc3QsIG5hbWUsIHZlcnNp
b24pCi0gICAgewotICAgICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV0kuRGF0YWJhc2VPYmplY3Qo
aWQsIGhvc3QsIG5hbWUsIHZlcnNpb24pOwotCi0gICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0
cy5wdXNoKGRhdGFiYXNlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwge2RhdGFiYXNlfSk7Ci0g
ICAgfQotCi0gICAgaXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCkKLSAgICB7Ci0gICAgICAgIGxldCBk
b21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlkKTsKLSAg
ICAgICAgaWYgKGRvbVN0b3JhZ2UpCi0gICAgICAgICAgICBkb21TdG9yYWdlLml0ZW1zQ2xlYXJl
ZChzdG9yYWdlSWQpOwotICAgIH0KLQotICAgIGl0ZW1SZW1vdmVkKHN0b3JhZ2VJZCwga2V5KQot
ICAgIHsKLSAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRp
ZmllcihzdG9yYWdlSWQpOwotICAgICAgICBpZiAoZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIGRv
bVN0b3JhZ2UuaXRlbVJlbW92ZWQoa2V5KTsKLSAgICB9Ci0KLSAgICBpdGVtQWRkZWQoc3RvcmFn
ZUlkLCBrZXksIHZhbHVlKQotICAgIHsKLSAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9k
b21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwotICAgICAgICBpZiAoZG9tU3RvcmFn
ZSkKLSAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbUFkZGVkKGtleSwgdmFsdWUpOwotICAgIH0K
LQotICAgIGl0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpCi0gICAg
ewotICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVy
KHN0b3JhZ2VJZCk7Ci0gICAgICAgIGlmIChkb21TdG9yYWdlKQotICAgICAgICAgICAgZG9tU3Rv
cmFnZS5pdGVtVXBkYXRlZChrZXksIG9sZFZhbHVlLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgaW5z
cGVjdERhdGFiYXNlKGlkKQotICAgIHsKLSAgICAgICAgdmFyIGRhdGFiYXNlID0gdGhpcy5fZGF0
YWJhc2VGb3JJZGVudGlmaWVyKGlkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2Up
OwotICAgICAgICBpZiAoIWRhdGFiYXNlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRh
YmFzZVdhc0luc3BlY3RlZCwge2RhdGFiYXNlfSk7Ci0gICAgfQotCi0gICAgaW5zcGVjdERPTVN0
b3JhZ2UoaWQpCi0gICAgewotICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3Jh
Z2VGb3JJZGVudGlmaWVyKGlkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tU3RvcmFnZSk7
Ci0gICAgICAgIGlmICghZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9N
U3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwge2RvbVN0b3JhZ2V9KTsKLSAgICB9Ci0KLSAgICBy
ZXF1ZXN0SW5kZXhlZERhdGFiYXNlRGF0YShvYmplY3RTdG9yZSwgb2JqZWN0U3RvcmVJbmRleCwg
c3RhcnRFbnRyeUluZGV4LCBtYXhpbXVtRW50cnlDb3VudCwgY2FsbGJhY2spCi0gICAgewotICAg
ICAgICBjb25zb2xlLmFzc2VydCh3aW5kb3cuSW5kZXhlZERCQWdlbnQpOwotICAgICAgICBjb25z
b2xlLmFzc2VydChvYmplY3RTdG9yZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxiYWNr
KTsKLQotICAgICAgICBmdW5jdGlvbiBwcm9jZXNzRGF0YShlcnJvciwgZW50cnlQYXlsb2Fkcywg
bW9yZUF2YWlsYWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKLQotICAg
ICAgICAgICAgZm9yICh2YXIgZW50cnlQYXlsb2FkIG9mIGVudHJ5UGF5bG9hZHMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZW50cnkgPSB7fTsKLSAgICAgICAgICAgICAgICBlbnRyeS5wcmltYXJ5
S2V5ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGVudHJ5UGF5bG9hZC5wcmltYXJ5S2V5
KTsKLSAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxv
YWQoZW50cnlQYXlsb2FkLmtleSk7Ci0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBXSS5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZW50cnlQYXlsb2FkLnZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBlbnRyaWVzLnB1c2goZW50cnkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
YWxsYmFjayhlbnRyaWVzLCBtb3JlQXZhaWxhYmxlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZh
ciByZXF1ZXN0QXJndW1lbnRzID0gewotICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW46IG9iamVj
dFN0b3JlLnBhcmVudERhdGFiYXNlLnNlY3VyaXR5T3JpZ2luLAotICAgICAgICAgICAgZGF0YWJh
c2VOYW1lOiBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1lLAotICAgICAgICAgICAgb2Jq
ZWN0U3RvcmVOYW1lOiBvYmplY3RTdG9yZS5uYW1lLAotICAgICAgICAgICAgaW5kZXhOYW1lOiBv
YmplY3RTdG9yZUluZGV4ICYmIG9iamVjdFN0b3JlSW5kZXgubmFtZSB8fCAiIiwKLSAgICAgICAg
ICAgIHNraXBDb3VudDogc3RhcnRFbnRyeUluZGV4IHx8IDAsCi0gICAgICAgICAgICBwYWdlU2l6
ZTogbWF4aW11bUVudHJ5Q291bnQgfHwgMTAwCi0gICAgICAgIH07Ci0KLSAgICAgICAgSW5kZXhl
ZERCQWdlbnQucmVxdWVzdERhdGEuaW52b2tlKHJlcXVlc3RBcmd1bWVudHMsIHByb2Nlc3NEYXRh
KTsKLSAgICB9Ci0KLSAgICBjbGVhck9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQotICAgIHsKLSAg
ICAgICAgbGV0IHNlY3VyaXR5T3JpZ2luID0gb2JqZWN0U3RvcmUucGFyZW50RGF0YWJhc2Uuc2Vj
dXJpdHlPcmlnaW47Ci0gICAgICAgIGxldCBkYXRhYmFzZU5hbWUgPSBvYmplY3RTdG9yZS5wYXJl
bnREYXRhYmFzZS5uYW1lOwotICAgICAgICBsZXQgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3Rv
cmUubmFtZTsKLQotICAgICAgICBJbmRleGVkREJBZ2VudC5jbGVhck9iamVjdFN0b3JlKHNlY3Vy
aXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgfQotCi0gICAg
Ly8gUHJpdmF0ZQotCi0gICAgX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKGlkKQotICAgIHsKLSAg
ICAgICAgZm9yICh2YXIgc3RvcmFnZU9iamVjdCBvZiB0aGlzLl9kb21TdG9yYWdlT2JqZWN0cykg
ewotICAgICAgICAgICAgLy8gVGhlIGlkIGlzIGFuIG9iamVjdCwgc28gd2UgbmVlZCB0byBjb21w
YXJlIHRoZSBwcm9wZXJ0aWVzIHVzaW5nIE9iamVjdC5zaGFsbG93RXF1YWwuCi0gICAgICAgICAg
ICBpZiAoT2JqZWN0LnNoYWxsb3dFcXVhbChzdG9yYWdlT2JqZWN0LmlkLCBpZCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0b3JhZ2VPYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQotICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJh
bWUpOwotCi0gICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkgewotICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCB0aGUgbWFpbiBmcmFtZSwgd2Ugd2FudCB0
byBjbGVhciBvdXIgbGlzdCBvZiBvYmplY3RzLCBiZWNhdXNlIHdlIGFyZSBuYXZpZ2F0aW5nIHRv
IGEgbmV3IHBhZ2UuCi0gICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKLSAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNs
ZWFyZWQpOwotCi0gICAgICAgICAgICB0aGlzLl9hZGRET01TdG9yYWdlSWZOZWVkZWQoZXZlbnQu
dGFyZ2V0KTsKLSAgICAgICAgICAgIHRoaXMuX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVk
KGV2ZW50LnRhcmdldCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgdGhlIGhvc3Qgb2Yg
dGhlIGZyYW1lIHRoYXQgY2hhbmdlZCB0aGUgbWFpbiByZXNvdXJjZSB0byB0aGUgbGlzdCBvZiBo
b3N0cyB0aGVyZSBjb3VsZCBiZSBjb29raWVzIGZvci4KLSAgICAgICAgdmFyIGhvc3QgPSBwYXJz
ZVVSTChldmVudC50YXJnZXQudXJsKS5ob3N0OwotICAgICAgICBpZiAoIWhvc3QpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2hv
c3RdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VP
YmplY3RzW2hvc3RdID0gbmV3IFdJLkNvb2tpZVN0b3JhZ2VPYmplY3QoaG9zdCk7Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNv
b2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwge2Nvb2tpZVN0b3JhZ2U6IHRoaXMuX2Nvb2tpZVN0
b3JhZ2VPYmplY3RzW2hvc3RdfSk7Ci0gICAgfQotCi0gICAgX2FkZERPTVN0b3JhZ2VJZk5lZWRl
ZChmcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2Ug
ZG9uJ3QgaGF2ZSBhIHNlY3VyaXR5IG9yaWdpbiAoYWJvdXQ6YmxhbmspLgotICAgICAgICBpZiAo
IWZyYW1lLnNlY3VyaXR5T3JpZ2luIHx8IGZyYW1lLnNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgcGFzc2lu
ZyB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIG9yaWdpbiBhbG9uZyB0byBkb21TdG9yYWdlV2FzQWRk
ZWQuCi0KLSAgICAgICAgdmFyIGxvY2FsU3RvcmFnZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmln
aW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogdHJ1ZX07Ci0gICAgICAg
IGlmICghdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIobG9jYWxTdG9yYWdlSWRlbnRpZmll
cikpCi0gICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChsb2NhbFN0b3JhZ2VJZGVu
dGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCB0cnVlKTsKLQot
ICAgICAgICB2YXIgc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBm
cmFtZS5zZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2U6IGZhbHNlfTsKLSAgICAgICAgaWYg
KCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIp
KQotICAgICAgICAgICAgdGhpcy5kb21TdG9yYWdlV2FzQWRkZWQoc2Vzc2lvblN0b3JhZ2VJZGVu
dGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBmYWxzZSk7Ci0g
ICAgfQotCi0gICAgX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVkKGZyYW1lKQotICAgIHsK
LSAgICAgICAgaWYgKCF3aW5kb3cuSW5kZXhlZERCQWdlbnQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gZnJhbWUuc2VjdXJpdHlPcmlnaW47Ci0K
LSAgICAgICAgLy8gRG9uJ3Qgc2hvdyBzdG9yYWdlIGlmIHdlIGRvbid0IGhhdmUgYSBzZWN1cml0
eSBvcmlnaW4gKGFib3V0OmJsYW5rKS4KLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbiB8fCBz
ZWN1cml0eU9yaWdpbiA9PT0gIjovLyIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc0RhdGFiYXNlTmFtZXMoZXJyb3IsIG5hbWVzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBvZiBuYW1lcykKLSAgICAgICAgICAgICAgICBJ
bmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2Uoc2VjdXJpdHlPcmlnaW4sIG5hbWUsIHByb2Nl
c3NEYXRhYmFzZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHBy
b2Nlc3NEYXRhYmFzZShlcnJvciwgZGF0YWJhc2VQYXlsb2FkKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IgfHwgIWRhdGFiYXNlUGF5bG9hZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIHZhciBvYmplY3RTdG9yZXMgPSBkYXRhYmFzZVBheWxvYWQub2Jq
ZWN0U3RvcmVzLm1hcChwcm9jZXNzT2JqZWN0U3RvcmUpOwotICAgICAgICAgICAgdmFyIGluZGV4
ZWREYXRhYmFzZSA9IG5ldyBXSS5JbmRleGVkRGF0YWJhc2UoZGF0YWJhc2VQYXlsb2FkLm5hbWUs
IHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZVBheWxvYWQudmVyc2lvbiwgb2JqZWN0U3RvcmVzKTsK
LQotICAgICAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlcy5wdXNoKGluZGV4ZWREYXRhYmFz
ZSk7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5TdG9yYWdl
TWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwge2luZGV4ZWREYXRhYmFzZX0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0tleVBhdGgoa2V5UGF0aFBh
eWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2V5UGF0aFBheWxvYWQudHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBJbmRleGVkREJBZ2VudC5LZXlQYXRoVHlwZS5OdWxsOgot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgY2FzZSBJbmRleGVkREJB
Z2VudC5LZXlQYXRoVHlwZS5TdHJpbmc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleVBhdGhQ
YXlsb2FkLnN0cmluZzsKLSAgICAgICAgICAgIGNhc2UgSW5kZXhlZERCQWdlbnQuS2V5UGF0aFR5
cGUuQXJyYXk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleVBhdGhQYXlsb2FkLmFycmF5Owot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtu
b3duIEtleVBhdGggdHlwZToiLCBrZXlQYXRoUGF5bG9hZC50eXBlKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIHByb2Nlc3NPYmplY3RTdG9yZShvYmplY3RTdG9yZVBheWxvYWQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHZhciBrZXlQYXRoID0gcHJvY2Vzc0tleVBhdGgob2JqZWN0U3RvcmVQYXlsb2Fk
LmtleVBhdGgpOwotICAgICAgICAgICAgdmFyIGluZGV4ZXMgPSBvYmplY3RTdG9yZVBheWxvYWQu
aW5kZXhlcy5tYXAocHJvY2Vzc09iamVjdFN0b3JlSW5kZXgpOwotICAgICAgICAgICAgcmV0dXJu
IG5ldyBXSS5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZShvYmplY3RTdG9yZVBheWxvYWQubmFt
ZSwga2V5UGF0aCwgb2JqZWN0U3RvcmVQYXlsb2FkLmF1dG9JbmNyZW1lbnQsIGluZGV4ZXMpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc09iamVjdFN0b3JlSW5kZXgob2Jq
ZWN0U3RvcmVJbmRleFBheWxvYWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBrZXlQYXRo
ID0gcHJvY2Vzc0tleVBhdGgob2JqZWN0U3RvcmVJbmRleFBheWxvYWQua2V5UGF0aCk7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgob2Jq
ZWN0U3RvcmVJbmRleFBheWxvYWQubmFtZSwga2V5UGF0aCwgb2JqZWN0U3RvcmVJbmRleFBheWxv
YWQudW5pcXVlLCBvYmplY3RTdG9yZUluZGV4UGF5bG9hZC5tdWx0aUVudHJ5KTsKLSAgICAgICAg
fQotCi0gICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKHNlY3VyaXR5
T3JpZ2luLCBwcm9jZXNzRGF0YWJhc2VOYW1lcy5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBf
c2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICBjb25zb2xlLmFz
c2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7Ci0KLSAgICAgICAgdGhpcy5f
YWRkRE9NU3RvcmFnZUlmTmVlZGVkKGV2ZW50LnRhcmdldCk7Ci0gICAgICAgIHRoaXMuX2FkZElu
ZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVkKGV2ZW50LnRhcmdldCk7Ci0gICAgfQotCi0gICAgX2Rh
dGFiYXNlRm9ySWRlbnRpZmllcihpZCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fZGF0YWJhc2VPYmplY3RzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5fZGF0YWJhc2VPYmplY3RzW2ldLmlkID09PSBpZCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZGF0YWJhc2VPYmplY3RzW2ldOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IG51bGw7Ci0gICAgfQotfTsKLQotV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgQ29v
a2llU3RvcmFnZU9iamVjdFdhc0FkZGVkOiAic3RvcmFnZS1tYW5hZ2VyLWNvb2tpZS1zdG9yYWdl
LW9iamVjdC13YXMtYWRkZWQiLAotICAgIERPTVN0b3JhZ2VPYmplY3RXYXNBZGRlZDogInN0b3Jh
Z2UtbWFuYWdlci1kb20tc3RvcmFnZS1vYmplY3Qtd2FzLWFkZGVkIiwKLSAgICBET01TdG9yYWdl
T2JqZWN0V2FzSW5zcGVjdGVkOiAic3RvcmFnZS1kb20tb2JqZWN0LXdhcy1pbnNwZWN0ZWQiLAot
ICAgIERhdGFiYXNlV2FzQWRkZWQ6ICJzdG9yYWdlLW1hbmFnZXItZGF0YWJhc2Utd2FzLWFkZGVk
IiwKLSAgICBEYXRhYmFzZVdhc0luc3BlY3RlZDogInN0b3JhZ2Utb2JqZWN0LXdhcy1pbnNwZWN0
ZWQiLAotICAgIEluZGV4ZWREYXRhYmFzZVdhc0FkZGVkOiAic3RvcmFnZS1tYW5hZ2VyLWluZGV4
ZWQtZGF0YWJhc2Utd2FzLWFkZGVkIiwKLSAgICBDbGVhcmVkOiAic3RvcmFnZS1tYW5hZ2VyLWNs
ZWFyZWQiCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IDI1Yjk4
ZjMzYzZiMDA2YjYwYWMzYzZlN2UwZDhhYjQ1M2VhZGNkZmYuLjhlMzVmYmQ1MjgzMGRiODY4NWMz
MzQ1YjE4YjY2ZjU5M2RhMDdhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMKQEAgLTM3NywxMSArMzc3LDExIEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVs
aW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5Q
YWdlT2JzZXJ2ZXIuCiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWN0aXZlUmVjb3Jk
aW5nKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4oV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLmRvbUNvbnRlbnRSZWFkeUV2ZW50VGltZXN0YW1wKSk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGlzTmFOKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5kb21Db250ZW50
UmVhZHlFdmVudFRpbWVzdGFtcCkpOwogCiAgICAgICAgIGxldCBjb21wdXRlZFRpbWVzdGFtcCA9
IHRoaXMuYWN0aXZlUmVjb3JkaW5nLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwogCi0g
ICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYXJrRE9NQ29udGVudFJl
YWR5RXZlbnQoY29tcHV0ZWRUaW1lc3RhbXApOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUubWFya0RPTUNvbnRlbnRSZWFkeUV2ZW50KGNvbXB1dGVkVGltZXN0YW1wKTsKIAog
ICAgICAgICBsZXQgZXZlbnRNYXJrZXIgPSBuZXcgV0kuVGltZWxpbmVNYXJrZXIoY29tcHV0ZWRU
aW1lc3RhbXAsIFdJLlRpbWVsaW5lTWFya2VyLlR5cGUuRE9NQ29udGVudEV2ZW50KTsKICAgICAg
ICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmFkZEV2ZW50TWFya2VyKGV2ZW50TWFya2VyKTsKQEAg
LTM5MiwxMSArMzkyLDExIEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2Jz
ZXJ2ZXIuCiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWN0aXZlUmVjb3JkaW5nKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4oV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lLmxvYWRFdmVudFRpbWVzdGFtcCkpOworICAgICAgICBjb25zb2xlLmFzc2VydChpc05h
TihXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wKSk7CiAKICAg
ICAgICAgbGV0IGNvbXB1dGVkVGltZXN0YW1wID0gdGhpcy5hY3RpdmVSZWNvcmRpbmcuY29tcHV0
ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CiAKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLm1hcmtMb2FkRXZlbnQoY29tcHV0ZWRUaW1lc3RhbXApOworICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFya0xvYWRFdmVudChjb21wdXRlZFRpbWVzdGFt
cCk7CiAKICAgICAgICAgbGV0IGV2ZW50TWFya2VyID0gbmV3IFdJLlRpbWVsaW5lTWFya2VyKGNv
bXB1dGVkVGltZXN0YW1wLCBXSS5UaW1lbGluZU1hcmtlci5UeXBlLkxvYWRFdmVudCk7CiAgICAg
ICAgIHRoaXMuX2FjdGl2ZVJlY29yZGluZy5hZGRFdmVudE1hcmtlcihldmVudE1hcmtlcik7CkBA
IC01MDUsNyArNTA1LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50
VHlwZS5FdmFsdWF0ZVNjcmlwdDoKICAgICAgICAgICAgIGlmICghc291cmNlQ29kZUxvY2F0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZTsKKyAgICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lOwogICAgICAgICAgICAgICAgIHZhciBzY3JpcHRSZXNvdXJjZSA9
IG1haW5GcmFtZS51cmwgPT09IHJlY29yZFBheWxvYWQuZGF0YS51cmwgPyBtYWluRnJhbWUubWFp
blJlc291cmNlIDogbWFpbkZyYW1lLnJlc291cmNlRm9yVVJMKHJlY29yZFBheWxvYWQuZGF0YS51
cmwsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChzY3JpcHRSZXNvdXJjZSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBUaGUgbGluZU51bWJlciBpcyAxLWJhc2VkLCBidXQgd2UgZXhwZWN0
IDAtYmFzZWQuCkBAIC01NTIsNyArNTUyLDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3Mg
VGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1h
aW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgICAg
ICAgICB2YXIgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgICAg
ICAgICAgICAgIHZhciBzY3JpcHRSZXNvdXJjZSA9IG1haW5GcmFtZS51cmwgPT09IHJlY29yZFBh
eWxvYWQuZGF0YS5zY3JpcHROYW1lID8gbWFpbkZyYW1lLm1haW5SZXNvdXJjZSA6IG1haW5GcmFt
ZS5yZXNvdXJjZUZvclVSTChyZWNvcmRQYXlsb2FkLmRhdGEuc2NyaXB0TmFtZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNjcmlwdFJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoZSBsaW5lTnVtYmVyIGlzIDEtYmFzZWQsIGJ1dCB3ZSBleHBlY3QgMC1iYXNlZC4KQEAg
LTcwMSw3ICs3MDEsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmFkZFJl
Y29yZChyZWNvcmQpOwogCiAgICAgICAgIC8vIE9ubHkgd29ycnkgYWJvdXQgZGVhZCB0aW1lIGFm
dGVyIHRoZSBsb2FkIGV2ZW50LgotICAgICAgICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lICYmIGlzTmFOKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5sb2Fk
RXZlbnRUaW1lc3RhbXApKQorICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
ICYmIGlzTmFOKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXAp
KQogICAgICAgICAgICAgdGhpcy5fcmVzZXRBdXRvUmVjb3JkaW5nRGVhZFRpbWVUaW1lb3V0KCk7
CiAgICAgfQogCkBAIC04MjIsNyArODIyLDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3Mg
VGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgLy8gSWdub3JlIHJl
c291cmNlIGV2ZW50cyB3aGVuIHRoZXJlIGlzbid0IGEgbWFpbiBmcmFtZSB5ZXQuIFRob3NlIGV2
ZW50cyBhcmUgdHJpZ2dlcmVkIGJ5CiAgICAgICAgIC8vIGxvYWRpbmcgdGhlIGNhY2hlZCByZXNv
dXJjZXMgd2hlbiB0aGUgaW5zcGVjdG9yIG9wZW5zLCBhbmQgdGhleSBkbyBub3QgaGF2ZSB0aW1p
bmcgaW5mb3JtYXRpb24uCi0gICAgICAgIGlmICghV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lKQorICAgICAgICBpZiAoIVdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fYXR0ZW1wdEF1dG9DYXB0dXJpbmdG
b3JGcmFtZShmcmFtZSkpCkBAIC04NDUsNyArODQ1LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0g
Y2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgLy8gSWdu
b3JlIHJlc291cmNlIGV2ZW50cyB3aGVuIHRoZXJlIGlzbid0IGEgbWFpbiBmcmFtZSB5ZXQuIFRo
b3NlIGV2ZW50cyBhcmUgdHJpZ2dlcmVkIGJ5CiAgICAgICAgIC8vIGxvYWRpbmcgdGhlIGNhY2hl
ZCByZXNvdXJjZXMgd2hlbiB0aGUgaW5zcGVjdG9yIG9wZW5zLCBhbmQgdGhleSBkbyBub3QgaGF2
ZSB0aW1pbmcgaW5mb3JtYXRpb24uCi0gICAgICAgIGlmICghV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lKQorICAgICAgICBpZiAoIVdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIXRoaXMuX2lzQ2FwdHVyaW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvVW5j
YXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RlYnVnL1VuY2F1Z2h0RXhjZXB0aW9uUmVwb3J0ZXIuanMKaW5kZXggMDg4MjBkNTBm
ZTk3ZmVkYjNjYzU5MmQyYjA1NWY0YzY0ZGY4Y2NlYi4uNGM3ZGE5MjllMDNiYWI1YWQwMjVmMmY2
NjRjNzJiYzAwMzIxMzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9y
dGVyLmpzCkBAIC0xOTYsNyArMTk2LDcgQEAgZnVuY3Rpb24gY3JlYXRlRXJyb3JTaGVldCgpIHsK
IAogICAgIGxldCBpbnNwZWN0ZWRQYWdlVVJMID0gbnVsbDsKICAgICB0cnkgewotICAgICAgICBp
bnNwZWN0ZWRQYWdlVVJMID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnVybDsK
KyAgICAgICAgaW5zcGVjdGVkUGFnZVVSTCA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51
cmw7CiAgICAgfSBjYXRjaCB7IH0KIAogICAgIGxldCB0b3BMZXZlbEl0ZW1zID0gWwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDNjOWJmOTRl
NWRjMjZmNDg5NTQ3M2E2MGVlZWY2ZDRlOTY4NDNlNjQuLmExMjJjNjg4NGY1Zjc3Y2I0MzA2ZDg5
YWIwMDM1YTNhZDBjMzI2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTc3OSw3ICs3NzksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9CcmFuY2hNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DYWxsRnJhbWVUcmVlQ29udHJv
bGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NhbnZhc01h
bmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWly
cm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CkBAIC03OTAsMjcgKzc5MCwy
NyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWlycm9yU3ByaW5nRWRpdGlu
Z0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9D
b2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01UcmVlTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Rhc2hib2FyZE1h
bmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01NYW5h
Z2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NU3RvcmFn
ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EYXRh
YmFzZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9E
ZWJ1Z2dlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9EcmFnVG9BZGp1c3RDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvRm9ybWF0dGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvRm9ybWF0dGVyU291cmNlTWFwLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9IQVJCdWlsZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVD
b21wbGV0aW9uUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvTG9nTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL01lbW9yeU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9Tb3VyY2VNYXBNYW5hZ2VyLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DU1NQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NQcm9wZXJ0eS5qcwppbmRleCBlZDg0NjBjZGNkZjFmNjE5YTdjZTEzNWM5
YmVlNGVjMTUyNjJhNGQyLi4wZjlhZWUzN2JlYTE4OWE2ZWZkZjY2MmE2ZDZlMDRlOTYxOTQ2YTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU1Byb3BlcnR5LmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV0kuQ1NTUHJvcGVydHkg
PSBjbGFzcyBDU1NQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGhpcy5f
Y2Fub25pY2FsTmFtZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYW5vbmljYWxOYW1lOwog
Ci0gICAgICAgIHRoaXMuX2Nhbm9uaWNhbE5hbWUgPSBXSS5jc3NTdHlsZU1hbmFnZXIuY2Fub25p
Y2FsTmFtZUZvclByb3BlcnR5TmFtZSh0aGlzLm5hbWUpOworICAgICAgICB0aGlzLl9jYW5vbmlj
YWxOYW1lID0gV0kuY3NzTWFuYWdlci5jYW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKHRoaXMu
bmFtZSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nhbm9uaWNhbE5hbWU7CiAgICAgfQpAQCAt
MzIwLDcgKzMyMCw3IEBAIFdJLkNTU1Byb3BlcnR5ID0gY2xhc3MgQ1NTUHJvcGVydHkgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgaWYgKCJfaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkIiBp
biB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc090aGVyVmVuZG9yTmFtZU9yS2V5
d29yZDsKIAotICAgICAgICB0aGlzLl9oYXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQgPSBXSS5j
c3NTdHlsZU1hbmFnZXIucHJvcGVydHlOYW1lSGFzT3RoZXJWZW5kb3JQcmVmaXgodGhpcy5uYW1l
KSB8fCBXSS5jc3NTdHlsZU1hbmFnZXIucHJvcGVydHlWYWx1ZUhhc090aGVyVmVuZG9yS2V5d29y
ZCh0aGlzLnZhbHVlKTsKKyAgICAgICAgdGhpcy5faGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3Jk
ID0gV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVIYXNPdGhlclZlbmRvclByZWZpeCh0aGlzLm5h
bWUpIHx8IFdJLmNzc01hbmFnZXIucHJvcGVydHlWYWx1ZUhhc090aGVyVmVuZG9yS2V5d29yZCh0
aGlzLnZhbHVlKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5faGFzT3RoZXJWZW5kb3JOYW1lT3JL
ZXl3b3JkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NTZWxlY3Rvci5qcwppbmRleCBiZDM5Yjg2YTBkYjJiNWMzZjBj
YTMxYjc5NzgzZTZhNWFmZTQ0OTU0Li4zNmRhMjdmNmRmOWJmODAzOTllZDg3ZWJkN2QxODA1YzQw
OWU0ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTU2VsZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1NlbGVjdG9yLmpzCkBAIC00Miw2ICs0Miw2IEBAIFdJLkNTU1NlbGVj
dG9yID0gY2xhc3MgQ1NTU2VsZWN0b3IKIAogICAgIGlzUHNldWRvRWxlbWVudFNlbGVjdG9yKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5DU1NTdHlsZU1hbmFnZXIuUHNldWRvRWxlbWVudE5h
bWVzLnNvbWUoKG5hbWUpID0+IHRoaXMuX3RleHQuaW5jbHVkZXMoYDoke25hbWV9YCkpOworICAg
ICAgICByZXR1cm4gV0kuQ1NTTWFuYWdlci5Qc2V1ZG9FbGVtZW50TmFtZXMuc29tZSgobmFtZSkg
PT4gdGhpcy5fdGV4dC5pbmNsdWRlcyhgOiR7bmFtZX1gKSk7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYWxsRnJhbWUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FsbEZyYW1l
LmpzCmluZGV4IDk2MmIwMmNjMTMxOTMzN2JiZGFmZmNiYzRmOWFiMjU5Y2I2OGM4MGIuLjE0YTFl
NWUxMzU3YWQ1ODM4Mzc4MTViM2M0ZGI4N2Y5YTZjMDU1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYWxsRnJhbWUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbGxGcmFtZS5qcwpAQCAt
MjMzLDcgKzIzMyw3IEBAIFdJLkNhbGxGcmFtZSA9IGNsYXNzIENhbGxGcmFtZQogICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VDb2RlID0gc291cmNlQ29kZS5yZXNvdXJjZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgICAgICBzb3VyY2VD
b2RlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2VDb2RlID0gV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwo
dXJsKTsKICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKICAgICAgICAgICAgICAgICBzb3Vy
Y2VDb2RlID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdHNGb3JVUkwodXJsLCB0YXJnZXQpWzBd
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ2FudmFzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NhbnZhcy5qcwppbmRleCA3NmEwZTBmYWViYTNjYzNhOWYzZmJhYjg0ODRkOWY1YWNlNDA2MjVh
Li40ZWZkYzUxMmViODViYTY0ZmMzNGNkNWIxMDY1NmVlZmIxZGI1ZGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKQEAg
LTc2LDcgKzc2LDcgQEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3IFdJLkNhbnZhcyhwYXlsb2FkLmNhbnZh
c0lkLCBjb250ZXh0VHlwZSwgewotICAgICAgICAgICAgZG9tTm9kZTogcGF5bG9hZC5ub2RlSWQg
PyBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQocGF5bG9hZC5ub2RlSWQpIDogbnVsbCwKKyAg
ICAgICAgICAgIGRvbU5vZGU6IHBheWxvYWQubm9kZUlkID8gV0kuZG9tTWFuYWdlci5ub2RlRm9y
SWQocGF5bG9hZC5ub2RlSWQpIDogbnVsbCwKICAgICAgICAgICAgIGNzc0NhbnZhc05hbWU6IHBh
eWxvYWQuY3NzQ2FudmFzTmFtZSwKICAgICAgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzOiBwYXls
b2FkLmNvbnRleHRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgbWVtb3J5Q29zdDogcGF5bG9hZC5t
ZW1vcnlDb3N0LApAQCAtMTU4LDEwICsxNTgsMTAgQEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFz
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3JlcXVlc3ROb2Rl
UHJvbWlzZSkgewogICAgICAgICAgICAgdGhpcy5fcmVxdWVzdE5vZGVQcm9taXNlID0gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLmVuc3VyZURvY3VtZW50KCk7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5l
bnN1cmVEb2N1bWVudCgpOwogCiAgICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdE5v
ZGUodGhpcy5faWRlbnRpZmllcikudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRoaXMuX2RvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQocmVzdWx0Lm5v
ZGVJZCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RvbU5vZGUgPSBXSS5kb21NYW5hZ2Vy
Lm5vZGVGb3JJZChyZXN1bHQubm9kZUlkKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlz
Ll9kb21Ob2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYE5vIERPTSBub2Rl
IGZvciBpZGVudGlmaWVyOiAke3Jlc3VsdC5ub2RlSWR9LmApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZh
cyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZW5zdXJlRG9jdW1lbnQoKTsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOwogCiAgICAgICAgIENhbnZhc0FnZW50LnJlcXVlc3RD
U1NDYW52YXNDbGllbnROb2Rlcyh0aGlzLl9pZGVudGlmaWVyLCAoZXJyb3IsIGNsaWVudE5vZGVJ
ZHMpID0+IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewpAQCAtMjAwLDcgKzIwMCw3IEBAIFdJ
LkNhbnZhcyA9IGNsYXNzIENhbnZhcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBjbGllbnROb2RlSWRzID0gQXJyYXkuaXNBcnJheShjbGllbnROb2RlSWRz
KSA/IGNsaWVudE5vZGVJZHMgOiBbXTsKLSAgICAgICAgICAgIHRoaXMuX2Nzc0NhbnZhc0NsaWVu
dE5vZGVzID0gY2xpZW50Tm9kZUlkcy5tYXAoKGNsaWVudE5vZGVJZCkgPT4gV0kuZG9tVHJlZU1h
bmFnZXIubm9kZUZvcklkKGNsaWVudE5vZGVJZCkpOworICAgICAgICAgICAgdGhpcy5fY3NzQ2Fu
dmFzQ2xpZW50Tm9kZXMgPSBjbGllbnROb2RlSWRzLm1hcCgoY2xpZW50Tm9kZUlkKSA9PiBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChjbGllbnROb2RlSWQpKTsKICAgICAgICAgICAgIGNhbGxiYWNr
KHRoaXMuX2Nzc0NhbnZhc0NsaWVudE5vZGVzKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnNvbGVN
ZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nv
bnNvbGVNZXNzYWdlLmpzCmluZGV4IGQxNDg0MDliNzI1ODE2YmRlYzhkM2JkMmIwZDg1ZTQ3ZDY5
Y2YxZmEuLmQwNjFkNTJmZDU1MTcxNDE5ZTg3Yjc3ZmY4NDQxNDhkYmIyMGMxOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db25zb2xlTWVz
c2FnZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q29uc29sZU1lc3NhZ2UuanMKQEAgLTgzLDcgKzgzLDcgQEAgV0kuQ29uc29sZU1lc3NhZ2UgPSBj
bGFzcyBDb25zb2xlTWVzc2FnZQogICAgICAgICAvLyBJZiB0aGF0IGRvZXNuJ3QgZXhpc3QgdHJ5
IHRvIGdldCBhIGxvY2F0aW9uIGZyb20gdGhlIHVybC9saW5lL2NvbHVtbiBpbiB0aGUgQ29uc29s
ZU1lc3NhZ2UuCiAgICAgICAgIC8vIEZJWE1FIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2NDA0Pjog
UmVtb3ZlIHRoZSBzdHJpbmcgZXF1YWxpdHkgY2hlY2tzIGZvciB1bmRlZmluZWQgb25jZSB3ZSBk
b24ndCBnZXQgdGhhdCB2YWx1ZSBhbnltb3JlLgogICAgICAgICBpZiAodGhpcy5fdXJsICYmIHRo
aXMuX3VybCAhPT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlID0g
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodGhpcy5fdXJsKTsKKyAgICAg
ICAgICAgIGxldCBzb3VyY2VDb2RlID0gV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwo
dGhpcy5fdXJsKTsKICAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlKSB7CiAgICAgICAgICAgICAg
ICAgbGV0IGxpbmVOdW1iZXIgPSB0aGlzLl9saW5lID4gMCA/IHRoaXMuX2xpbmUgLSAxIDogMDsK
ICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTnVtYmVyID0gdGhpcy5fY29sdW1uID4gMCA/IHRo
aXMuX2NvbHVtbiAtIDEgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qcwppbmRleCAyM2ZjZTA1MjFm
YWNjYmRkMDE1MjFhZmMxY2U2ZDYzZGI2MWIxMDRhLi45MzcxYjE1NWUwZjI4N2U3MzQ4MmNhYjEz
MTY2YjgxZDRkNmE1ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qcwpAQCAtMzQsOCArMzQsOCBA
QCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAoZG9tTm9kZU9ySW5mbyBpbnN0YW5jZW9mIFdJLkRPTU5vZGUpIHsKICAg
ICAgICAgICAgIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVyID0gZG9tTm9kZU9ySW5mby5pZDsKICAg
ICAgICAgICAgIHRoaXMuX3BhdGggPSBkb21Ob2RlT3JJbmZvLnBhdGgoKTsKLSAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7Ci0gICAg
ICAgICAgICB0aGlzLl91cmwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUudXJs
OworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
KTsKKyAgICAgICAgICAgIHRoaXMuX3VybCA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51
cmw7CiAgICAgICAgIH0gZWxzZSBpZiAoZG9tTm9kZU9ySW5mbyAmJiB0eXBlb2YgZG9tTm9kZU9y
SW5mbyA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVy
ID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuX3BhdGggPSBkb21Ob2RlT3JJbmZvLnBhdGg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlLmpzCmluZGV4IGE1NmFhZGRjOWM2ZWIzZjJhM2MyMzBmMmJjZGJlZjI0MGRiZmM1MjEuLjZj
OWI2MDY3NWJjNmVmNzJmYzA0MDE4YTU5N2EzNWY4OGZhNDhkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCkBAIC0z
MiwxNSArMzIsMTUgQEAKIAogV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5P
YmplY3QKIHsKLSAgICBjb25zdHJ1Y3Rvcihkb21UcmVlTWFuYWdlciwgZG9jLCBpc0luU2hhZG93
VHJlZSwgcGF5bG9hZCkKKyAgICBjb25zdHJ1Y3Rvcihkb21NYW5hZ2VyLCBkb2MsIGlzSW5TaGFk
b3dUcmVlLCBwYXlsb2FkKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlz
Ll9kb21UcmVlTWFuYWdlciA9IGRvbVRyZWVNYW5hZ2VyOworICAgICAgICB0aGlzLl9kb21NYW5h
Z2VyID0gZG9tTWFuYWdlcjsKICAgICAgICAgdGhpcy5faXNJblNoYWRvd1RyZWUgPSBpc0luU2hh
ZG93VHJlZTsKIAogICAgICAgICB0aGlzLmlkID0gcGF5bG9hZC5ub2RlSWQ7Ci0gICAgICAgIHRo
aXMuX2RvbVRyZWVNYW5hZ2VyLl9pZFRvRE9NTm9kZVt0aGlzLmlkXSA9IHRoaXM7CisgICAgICAg
IHRoaXMuX2RvbU1hbmFnZXIuX2lkVG9ET01Ob2RlW3RoaXMuaWRdID0gdGhpczsKIAogICAgICAg
ICB0aGlzLl9ub2RlVHlwZSA9IHBheWxvYWQubm9kZVR5cGU7CiAgICAgICAgIHRoaXMuX25vZGVO
YW1lID0gcGF5bG9hZC5ub2RlTmFtZTsKQEAgLTgwLDcgKzgwLDcgQEAgV0kuRE9NTm9kZSA9IGNs
YXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHBheWxvYWQuc2hhZG93
Um9vdHMpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5zaGFkb3dS
b290cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciByb290ID0gcGF5bG9hZC5z
aGFkb3dSb290c1tpXTsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXSS5ET01Ob2Rl
KHRoaXMuX2RvbVRyZWVNYW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQsIHRydWUsIHJvb3QpOwor
ICAgICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdJLkRPTU5vZGUodGhpcy5fZG9tTWFuYWdl
ciwgdGhpcy5vd25lckRvY3VtZW50LCB0cnVlLCByb290KTsKICAgICAgICAgICAgICAgICBub2Rl
LnBhcmVudE5vZGUgPSB0aGlzOwogICAgICAgICAgICAgICAgIHRoaXMuX3NoYWRvd1Jvb3RzLnB1
c2gobm9kZSk7CiAgICAgICAgICAgICB9CkBAIC05NywyMSArOTcsMjEgQEAgV0kuRE9NTm9kZSA9
IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2N1c3Rv
bUVsZW1lbnRTdGF0ZSA9IG51bGw7CiAKICAgICAgICAgaWYgKHBheWxvYWQudGVtcGxhdGVDb250
ZW50KSB7Ci0gICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZUNvbnRlbnQgPSBuZXcgV0kuRE9NTm9k
ZSh0aGlzLl9kb21UcmVlTWFuYWdlciwgdGhpcy5vd25lckRvY3VtZW50LCBmYWxzZSwgcGF5bG9h
ZC50ZW1wbGF0ZUNvbnRlbnQpOworICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVDb250ZW50ID0g
bmV3IFdJLkRPTU5vZGUodGhpcy5fZG9tTWFuYWdlciwgdGhpcy5vd25lckRvY3VtZW50LCBmYWxz
ZSwgcGF5bG9hZC50ZW1wbGF0ZUNvbnRlbnQpOwogICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVD
b250ZW50LnBhcmVudE5vZGUgPSB0aGlzOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcHNl
dWRvRWxlbWVudHMgPSBuZXcgTWFwOwogICAgICAgICBpZiAocGF5bG9hZC5wc2V1ZG9FbGVtZW50
cykgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXlsb2FkLnBzZXVkb0VsZW1l
bnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRE9N
Tm9kZSh0aGlzLl9kb21UcmVlTWFuYWdlciwgdGhpcy5vd25lckRvY3VtZW50LCB0aGlzLl9pc0lu
U2hhZG93VHJlZSwgcGF5bG9hZC5wc2V1ZG9FbGVtZW50c1tpXSk7CisgICAgICAgICAgICAgICAg
dmFyIG5vZGUgPSBuZXcgV0kuRE9NTm9kZSh0aGlzLl9kb21NYW5hZ2VyLCB0aGlzLm93bmVyRG9j
dW1lbnQsIHRoaXMuX2lzSW5TaGFkb3dUcmVlLCBwYXlsb2FkLnBzZXVkb0VsZW1lbnRzW2ldKTsK
ICAgICAgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUgPSB0aGlzOwogICAgICAgICAgICAgICAg
IHRoaXMuX3BzZXVkb0VsZW1lbnRzLnNldChub2RlLnBzZXVkb1R5cGUoKSwgbm9kZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocGF5bG9hZC5jb250ZW50RG9jdW1l
bnQpIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnREb2N1bWVudCA9IG5ldyBXSS5ET01Ob2Rl
KHRoaXMuX2RvbVRyZWVNYW5hZ2VyLCBudWxsLCBmYWxzZSwgcGF5bG9hZC5jb250ZW50RG9jdW1l
bnQpOworICAgICAgICAgICAgdGhpcy5fY29udGVudERvY3VtZW50ID0gbmV3IFdJLkRPTU5vZGUo
dGhpcy5fZG9tTWFuYWdlciwgbnVsbCwgZmFsc2UsIHBheWxvYWQuY29udGVudERvY3VtZW50KTsK
ICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gW3RoaXMuX2NvbnRlbnREb2N1bWVudF07CiAg
ICAgICAgICAgICB0aGlzLl9yZW51bWJlcigpOwogICAgICAgICB9CkBAIC0xNDksNyArMTQ5LDcg
QEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBnZXQg
ZnJhbWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9mcmFtZSkKLSAgICAgICAgICAgIHRo
aXMuX2ZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHRo
aXMuZnJhbWVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lID0gV0kubmV0d29y
a01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKHRoaXMuZnJhbWVJZGVudGlmaWVyKTsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwogICAgIH0KIApAQCAtNzA3LDcgKzcwNyw3IEBAIFdJLkRP
TU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfaW5zZXJ0Q2hp
bGQocHJldiwgcGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gbmV3IFdJLkRPTU5v
ZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIHRoaXMub3duZXJEb2N1bWVudCwgdGhpcy5faXNJblNo
YWRvd1RyZWUsIHBheWxvYWQpOworICAgICAgICB2YXIgbm9kZSA9IG5ldyBXSS5ET01Ob2RlKHRo
aXMuX2RvbU1hbmFnZXIsIHRoaXMub3duZXJEb2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUs
IHBheWxvYWQpOwogICAgICAgICBpZiAoIXByZXYpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5f
Y2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgICAvLyBGaXJzdCBub2RlCkBAIC03NDEsNyArNzQx
LDcgQEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
ICAgICB0aGlzLl9jaGlsZHJlbiA9IHRoaXMuX3NoYWRvd1Jvb3RzLnNsaWNlKCk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IHZhciBub2RlID0gbmV3IFdJLkRPTU5vZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIHRoaXMub3du
ZXJEb2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUsIHBheWxvYWRzW2ldKTsKKyAgICAgICAg
ICAgIHZhciBub2RlID0gbmV3IFdJLkRPTU5vZGUodGhpcy5fZG9tTWFuYWdlciwgdGhpcy5vd25l
ckRvY3VtZW50LCB0aGlzLl9pc0luU2hhZG93VHJlZSwgcGF5bG9hZHNbaV0pOwogICAgICAgICAg
ICAgdGhpcy5fY2hpbGRyZW4ucHVzaChub2RlKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9y
ZW51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRleCA3MzQxZDNjNzQ3MTRkZjRjMWZj
MzgzOTRmNWM2NjZjZGU0NDAwZGVjLi44NjI2ZTMyYmNiZjNjYjZmYTZhZTJhNGE5NzAzZWFkOWY0
ZTc4YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAtMTY4LDcgKzE2OCw3IEBAIFdJLkRP
TU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgY29tcHV0ZWRQcm9wZXJ0aWVzUGF5bG9hZCAmJiBpIDwg
Y29tcHV0ZWRQcm9wZXJ0aWVzUGF5bG9hZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
IHZhciBwcm9wZXJ0eVBheWxvYWQgPSBjb21wdXRlZFByb3BlcnRpZXNQYXlsb2FkW2ldOwogCi0g
ICAgICAgICAgICAgICAgdmFyIGNhbm9uaWNhbE5hbWUgPSBXSS5jc3NTdHlsZU1hbmFnZXIuY2Fu
b25pY2FsTmFtZUZvclByb3BlcnR5TmFtZShwcm9wZXJ0eVBheWxvYWQubmFtZSk7CisgICAgICAg
ICAgICAgICAgdmFyIGNhbm9uaWNhbE5hbWUgPSBXSS5jc3NNYW5hZ2VyLmNhbm9uaWNhbE5hbWVG
b3JQcm9wZXJ0eU5hbWUocHJvcGVydHlQYXlsb2FkLm5hbWUpOwogICAgICAgICAgICAgICAgIHBy
b3BlcnR5UGF5bG9hZC5pbXBsaWNpdCA9ICF0aGlzLl9wcm9wZXJ0eU5hbWVUb0VmZmVjdGl2ZVBy
b3BlcnR5TWFwW2Nhbm9uaWNhbE5hbWVdOwogCiAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5
ID0gdGhpcy5fcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZChwcm9wZXJ0eVBheWxvYWQsIE5hTiwg
dGhpcy5fY29tcHV0ZWRTdHlsZSk7CkBAIC0yNTEsNyArMjUxLDcgQEAgV0kuRE9NTm9kZVN0eWxl
cyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIHB1c2hpbmcgU3R5bGVTaGVldCBpbmZvcm1hdGlv
biB0byB0aGUgZnJvbnRlbmQuIDxyZGFyOi8vcHJvYmxlbS8xMzIxMzY4MD4KLSAgICAgICAgV0ku
Y3NzU3R5bGVNYW5hZ2VyLmZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpOworICAgICAgICBXSS5j
c3NNYW5hZ2VyLmZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpOwogCiAgICAgICAgIENTU0FnZW50
LmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9ub2RlLmlkLCBp
bmNsdWRlUHNldWRvOiB0cnVlLCBpbmNsdWRlSW5oZXJpdGVkOiB0cnVlfSwgd3JhcC5jYWxsKHRo
aXMsIGZldGNoZWRNYXRjaGVkU3R5bGVzLCBmZXRjaGVkTWF0Y2hlZFN0eWxlc1Byb21pc2UpKTsK
ICAgICAgICAgQ1NTQWdlbnQuZ2V0SW5saW5lU3R5bGVzRm9yTm9kZS5pbnZva2Uoe25vZGVJZDog
dGhpcy5fbm9kZS5pZH0sIHdyYXAuY2FsbCh0aGlzLCBmZXRjaGVkSW5saW5lU3R5bGVzLCBmZXRj
aGVkSW5saW5lU3R5bGVzUHJvbWlzZSkpOwpAQCAtMzEyLDkgKzMxMiw5IEBAIFdJLkRPTU5vZGVT
dHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoc3R5bGVTaGVldElkKQotICAgICAgICAgICAgaW5zcGVjdG9yU3R5bGVT
aGVldEF2YWlsYWJsZS5jYWxsKHRoaXMsIFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9y
SWRlbnRpZmllcihzdHlsZVNoZWV0SWQpKTsKKyAgICAgICAgICAgIGluc3BlY3RvclN0eWxlU2hl
ZXRBdmFpbGFibGUuY2FsbCh0aGlzLCBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlm
aWVyKHN0eWxlU2hlZXRJZCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBXSS5jc3NTdHls
ZU1hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKHRoaXMuX25vZGUu
ZnJhbWUsIGluc3BlY3RvclN0eWxlU2hlZXRBdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgICAg
ICAgICBXSS5jc3NNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZSh0
aGlzLl9ub2RlLmZyYW1lLCBpbnNwZWN0b3JTdHlsZVNoZWV0QXZhaWxhYmxlLmJpbmQodGhpcykp
OwogICAgIH0KIAogICAgIHJ1bGVzRm9yU2VsZWN0b3Ioc2VsZWN0b3IpCkBAIC0zNzQsNyArMzc0
LDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgaWYgKHByb3BlcnR5KQogICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5
OwogCi0gICAgICAgIGxldCBjYW5vbmljYWxOYW1lID0gV0kuY3NzU3R5bGVNYW5hZ2VyLmNhbm9u
aWNhbE5hbWVGb3JQcm9wZXJ0eU5hbWUobmFtZSk7CisgICAgICAgIGxldCBjYW5vbmljYWxOYW1l
ID0gV0kuY3NzTWFuYWdlci5jYW5vbmljYWxOYW1lRm9yUHJvcGVydHlOYW1lKG5hbWUpOwogICAg
ICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlOYW1lVG9FZmZlY3RpdmVQcm9wZXJ0eU1hcFtjYW5v
bmljYWxOYW1lXSB8fCBudWxsOwogICAgIH0KIApAQCAtNDUyLDcgKzQ1Miw3IEBAIFdJLkRPTU5v
ZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAg
ICAgLy8gVHJ5IHRvIHVzZSB0aGUgbm9kZSB0byBmaW5kIHRoZSBmcmFtZSB3aGljaCBoYXMgdGhl
IGNvcnJlY3QgcmVzb3VyY2UgZmlyc3QuCiAgICAgICAgIGlmICh0aGlzLl9ub2RlLm93bmVyRG9j
dW1lbnQpIHsKLSAgICAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5yZXNvdXJjZUZvclVSTCh0aGlzLl9ub2RlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRV
UkwpOworICAgICAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLnJl
c291cmNlRm9yVVJMKHRoaXMuX25vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCk7CiAgICAg
ICAgICAgICBpZiAobWFpblJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgdmFyIHBhcmVudEZy
YW1lID0gbWFpblJlc291cmNlLnBhcmVudEZyYW1lOwogICAgICAgICAgICAgICAgIHNvdXJjZUNv
ZGUgPSBwYXJlbnRGcmFtZS5yZXNvdXJjZUZvclVSTChzb3VyY2VVUkwpOwpAQCAtNDYxLDcgKzQ2
MSw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgLy8gSWYgdGhhdCBkaWRuJ3QgZmluZCB0aGUgcmVzb3VyY2UsIHRo
ZW4gc2VhcmNoIGFsbCBmcmFtZXMuCiAgICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAg
ICAgIHNvdXJjZUNvZGUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChz
b3VyY2VVUkwpOworICAgICAgICAgICAgc291cmNlQ29kZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLnJl
c291cmNlRm9yVVJMKHNvdXJjZVVSTCk7CiAKICAgICAgICAgaWYgKCFzb3VyY2VDb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC02MzIsNyArNjMyLDcgQEAgV0kuRE9NTm9kZVN0eWxl
cyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJl
dHVybiBzdHlsZURlY2xhcmF0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHN0eWxlU2hl
ZXQgPSBpZCA/IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihpZC5z
dHlsZVNoZWV0SWQpIDogbnVsbDsKKyAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBpZCA/IFdJLmNz
c01hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoaWQuc3R5bGVTaGVldElkKSA6IG51bGw7
CiAgICAgICAgIGlmIChzdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PT0gV0ku
Q1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLklubGluZSkKICAgICAgICAgICAgICAgICBzdHlsZVNo
ZWV0Lm1hcmtBc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpOwpAQCAtNzE0LDExICs3
MTQsMTEgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwog
Ci0gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gaWQgPyBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVT
aGVldEZvcklkZW50aWZpZXIoaWQuc3R5bGVTaGVldElkKSA6IG51bGw7CisgICAgICAgIHZhciBz
dHlsZVNoZWV0ID0gaWQgPyBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlk
LnN0eWxlU2hlZXRJZCkgOiBudWxsOwogCiAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSBwYXls
b2FkLnNlbGVjdG9yTGlzdC50ZXh0OwogICAgICAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5fcGFy
c2VTZWxlY3Rvckxpc3RQYXlsb2FkKHBheWxvYWQuc2VsZWN0b3JMaXN0KTsKLSAgICAgICAgdmFy
IHR5cGUgPSBXSS5DU1NTdHlsZU1hbmFnZXIucHJvdG9jb2xTdHlsZVNoZWV0T3JpZ2luVG9FbnVt
KHBheWxvYWQub3JpZ2luKTsKKyAgICAgICAgdmFyIHR5cGUgPSBXSS5DU1NNYW5hZ2VyLnByb3Rv
Y29sU3R5bGVTaGVldE9yaWdpblRvRW51bShwYXlsb2FkLm9yaWdpbik7CiAKICAgICAgICAgdmFy
IHNvdXJjZUNvZGVMb2NhdGlvbiA9IG51bGw7CiAgICAgICAgIHZhciBzb3VyY2VSYW5nZSA9IHBh
eWxvYWQuc2VsZWN0b3JMaXN0LnJhbmdlOwpAQCAtNzM5LDcgKzczOSw3IEBAIFdJLkRPTU5vZGVT
dHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHZh
ciBtZWRpYUxpc3QgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHBheWxvYWQubWVkaWEg
JiYgaSA8IHBheWxvYWQubWVkaWEubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBtZWRp
YUl0ZW0gPSBwYXlsb2FkLm1lZGlhW2ldOwotICAgICAgICAgICAgdmFyIG1lZGlhVHlwZSA9IFdJ
LkNTU1N0eWxlTWFuYWdlci5wcm90b2NvbE1lZGlhU291cmNlVG9FbnVtKG1lZGlhSXRlbS5zb3Vy
Y2UpOworICAgICAgICAgICAgdmFyIG1lZGlhVHlwZSA9IFdJLkNTU01hbmFnZXIucHJvdG9jb2xN
ZWRpYVNvdXJjZVRvRW51bShtZWRpYUl0ZW0uc291cmNlKTsKICAgICAgICAgICAgIHZhciBtZWRp
YVRleHQgPSBtZWRpYUl0ZW0udGV4dDsKICAgICAgICAgICAgIHZhciBtZWRpYVNvdXJjZUNvZGVM
b2NhdGlvbiA9IHRoaXMuX2NyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihtZWRpYUl0ZW0uc291cmNl
VVJMLCBtZWRpYUl0ZW0uc291cmNlTGluZSk7CiAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9E
T01UcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RP
TVRyZWUuanMKaW5kZXggODRhNjM5ZWYzMzlhMWY4ZTZmNjYwODg3ODA1MjFjMWNhMTc1YWI2OC4u
MzVkM2E5NzQ0OTM3M2QwYmY0MWI5MDcyNTM5MTBkOTcyYWE5YzQwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKQEAg
LTM2LDExICszNiwxMSBAQCBXSS5ET01UcmVlID0gY2xhc3MgRE9NVHJlZSBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzLl9mcmFtZVBhZ2VFeGVjdXRpb25D
b250ZXh0Q2hhbmdlZCwgdGhpcyk7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMu
X2RvY3VtZW50VXBkYXRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1l
bnRVcGRhdGVkLCB0aGlzKTsKIAogICAgICAgICAvLyBPbmx5IGFkZCBleHRyYSBldmVudCBsaXN0
ZW5lcnMgd2hlbiBub3QgdGhlIG1haW4gZnJhbWUuIFNpbmNlIERvY3VtZW50VXBkYXRlZCBpcyBl
bm91Z2ggZm9yIHRoZSBtYWluIGZyYW1lLgogICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lLmlzTWFp
bkZyYW1lKCkpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVk
LCB0aGlzKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CiAg
ICAgICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fZnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCBXSS5ET01UcmVlID0gY2xh
c3MgRE9NVHJlZSBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZGlzY29ubmVjdCgpCiAgICAgewot
ICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX2ZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVs
bCwgbnVsbCwgdGhpcyk7CiAgICAgfQogCkBAIC0xNDksNyArMTQ5LDcgQEAgV0kuRE9NVHJlZSA9
IGNsYXNzIERPTVRyZWUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gV0kuZG9t
VHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICB0aGlzLl9yb290RE9N
Tm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAKICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3Jvb3RET01Ob2RlKTsKICAgICAgICAgICAgIGlmICghdGhpcy5f
cm9vdERPTU5vZGUpIHsKQEAgLTE4NSw3ICsxODUsNyBAQCBXSS5ET01UcmVlID0gY2xhc3MgRE9N
VHJlZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLyBhIHNwZWNpZmljIHdheSB0byByZXF1
ZXN0IGEgZG9jdW1lbnQgZ2l2ZW4gYSBmcmFtZSBpZGVudGlmaWVyLiBUaGUgY2hpbGQgZnJhbWUg
YXBwcm9hY2gKICAgICAgICAgLy8gaW52b2x2ZXMgZXZhbHVhdGluZyB0aGUgSmF2YVNjcmlwdCAi
ZG9jdW1lbnQiIGFuZCByZXNvbHZpbmcgdGhhdCBpbnRvIGEgRE9NTm9kZS4KICAgICAgICAgaWYg
KHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5yZXF1ZXN0RG9jdW1lbnQobWFpbkRvY3VtZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOworICAg
ICAgICAgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQobWFpbkRvY3VtZW50QXZhaWxh
YmxlLmJpbmQodGhpcykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHZhciBjb250ZXh0
SWQgPSB0aGlzLl9mcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZDsKICAgICAgICAgICAgIFJ1
bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246IGFwcGVuZFdlYkluc3BlY3Rv
clNvdXJjZVVSTCgiZG9jdW1lbnQiKSwgb2JqZWN0R3JvdXA6ICIiLCBpbmNsdWRlQ29tbWFuZExp
bmVBUEk6IGZhbHNlLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUs
IGNvbnRleHRJZCwgcmV0dXJuQnlWYWx1ZTogZmFsc2UsIGdlbmVyYXRlUHJldmlldzogZmFsc2V9
LCByb290T2JqZWN0QXZhaWxhYmxlLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2Fy
ZC5qcwppbmRleCBlMGMwZjMyMjUyNGQwOGIxMjVmYjIyNDZiZjZhMmIwYjQwZjNjY2Q0Li5iMjNi
MTRhN2EzYTViMGZjMjQzMWYxMjYxMmJmMTY4M2Q4OWUxODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERh
c2hib2FyZC5qcwpAQCAtMzgsMTMgKzM4LDEyIEBAIFdJLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFz
cyBEZWZhdWx0RGFzaGJvYXJkIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIC8vIE5lY2Vzc2Fy
eSBldmVudHMgcmVxdWlyZWQgdG8gdHJhY2sgbG9hZCBvZiByZXNvdXJjZXMuCiAgICAgICAgIFdJ
LkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwg
dGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhpcyk7CiAgICAgICAgIFdJLlRhcmdldC5hZGRFdmVu
dExpc3RlbmVyKFdJLlRhcmdldC5FdmVudC5SZXNvdXJjZUFkZGVkLCB0aGlzLl9yZXNvdXJjZVdh
c0FkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlz
Ll9mcmFtZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9m
cmFtZVdhc0FkZGVkLCB0aGlzKTsKIAogICAgICAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVp
cmVkIHRvIHRyYWNrIGNvbnNvbGUgbWVzc2FnZXMuCi0gICAgICAgIHZhciBsb2dNYW5hZ2VyID0g
V0kubG9nTWFuYWdlcjsKLSAgICAgICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxv
Z01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0NsZWFyZWQsIHRoaXMpOwot
ICAgICAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5N
ZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwotICAgICAgICBs
b2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01l
c3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQs
IHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2NvbnNvbGVXYXNDbGVhcmVkLCB0aGlz
KTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRo
aXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5f
Y29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQ291bnQgPSAwOwogICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gMDsKQEAgLTEzOCw3
ICsxMzcsNyBAQCBXSS5EZWZhdWx0RGFzaGJvYXJkID0gY2xhc3MgRGVmYXVsdERhc2hib2FyZCBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3RpbWUgPSAwOwogICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNDb3VudCA9IDE7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSBXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNpemUgfHwgMDsKKyAg
ICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5t
YWluUmVzb3VyY2Uuc2l6ZSB8fCAwOwogCiAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IHRyYWNr
IHJlc291cmNlIHNpemVzIG9uIGZyZXNoIGxvYWRzLgogICAgICAgICBpZiAodGhpcy5fd2FpdGlu
Z0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSkgewpAQCAtMjEyLDcgKzIx
MSw3IEBAIFdJLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFzcyBEZWZhdWx0RGFzaGJvYXJkIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0g
c2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2
YWxEZWxheSk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgbWFpbkZyYW1lID0gV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICB2YXIgbWFpbkZyYW1lID0gV0kubmV0
d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgICAgICB2YXIgbWFpbkZyYW1lU3RhcnRUaW1lID0g
bWFpbkZyYW1lLm1haW5SZXNvdXJjZS5maXJzdFRpbWVzdGFtcDsKICAgICAgICAgdmFyIG1haW5G
cmFtZUxvYWRFdmVudFRpbWUgPSBtYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5q
cwppbmRleCAwNGVmMDY4OGM3MmY1MTYwM2E0ZWU2ZmQ1ZWYzYjY2YmU4ZDZhOWJiLi4zMTg5N2Vk
M2VlYjJjOWUyOTkzMjNlNzk3OGRmMTAyMDkwOGYyY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKQEAgLTI0MSw3ICsy
NDEsNyBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAg
ICAgICAgIGlmICghdGhpcy5fdXJsKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAg
ICAgbGV0IHJlc29sdmVyID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXI7CisgICAgICAgIGxldCBy
ZXNvbHZlciA9IFdJLm5ldHdvcmtNYW5hZ2VyOwogICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICE9
PSBXSS5tYWluVGFyZ2V0KQogICAgICAgICAgICAgcmVzb2x2ZXIgPSB0aGlzLl90YXJnZXQucmVz
b3VyY2VDb2xsZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMKaW5k
ZXggODhkYzA2YjZlYzk1ZGNiZDNkMzJkMjAwOWJmYzFiYmQxNWU5NDBkNC4uNTBiYzRlY2M1MTNh
MTI4YjU4OWY1ZjAxMDgyMDk4YWY3ZjczOWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFRpbWVsaW5lUmVjb3JkLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGlu
ZVJlY29yZC5qcwpAQCAtMTExLDcgKzExMSw3IEBAIFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkID0g
Y2xhc3MgU2NyaXB0VGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXSS5UaW1lbGluZVJlY29yZAogICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoImlkIiBpbiBub2RlUGF5bG9hZCk7CiAKICAgICAgICAg
ICAgIGlmIChub2RlUGF5bG9hZC51cmwpIHsKLSAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29k
ZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKG5vZGVQYXlsb2FkLnVy
bCk7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSBXSS5uZXR3b3JrTWFuYWdlci5y
ZXNvdXJjZUZvclVSTChub2RlUGF5bG9hZC51cmwpOwogICAgICAgICAgICAgICAgIGlmICghc291
cmNlQ29kZSkKICAgICAgICAgICAgICAgICAgICAgc291cmNlQ29kZSA9IFdJLmRlYnVnZ2VyTWFu
YWdlci5zY3JpcHRzRm9yVVJMKG5vZGVQYXlsb2FkLnVybCwgV0kuYXNzdW1pbmdNYWluVGFyZ2V0
KCkpWzBdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwUmVzb3VyY2UuanMKaW5kZXggMTEwNTk3YjExMzgy
Yjk5NThmNTE1NGNlMWUwNzkyY2RiZWM0NTliNS4uY2YwNzRlNGRmY2U1YmYyYmZhMDhmNmFmYzI2
ZDAyNDkxYjA4MTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1NvdXJjZU1hcFJlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VNYXBSZXNvdXJjZS5qcwpAQCAtMTM5LDcg
KzEzOSw3IEBAIFdJLlNvdXJjZU1hcFJlc291cmNlID0gY2xhc3MgU291cmNlTWFwUmVzb3VyY2Ug
ZXh0ZW5kcyBXSS5SZXNvdXJjZQogICAgICAgICAgICAgZnJhbWVJZGVudGlmaWVyID0gdGhpcy5f
c291cmNlTWFwLm9yaWdpbmFsU291cmNlQ29kZS5wYXJlbnRGcmFtZS5pZDsKIAogICAgICAgICBp
ZiAoIWZyYW1lSWRlbnRpZmllcikKLSAgICAgICAgICAgIGZyYW1lSWRlbnRpZmllciA9IFdJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSA/IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1h
aW5GcmFtZS5pZCA6ICIiOworICAgICAgICAgICAgZnJhbWVJZGVudGlmaWVyID0gV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lID8gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkIDogIiI7
CiAKICAgICAgICAgcmV0dXJuIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoZnJhbWVJZGVudGlm
aWVyLCB0aGlzLnVybCkudGhlbihzb3VyY2VNYXBSZXNvdXJjZUxvYWRlZC5iaW5kKHRoaXMpKS5j
YXRjaChzb3VyY2VNYXBSZXNvdXJjZUxvYWRFcnJvci5iaW5kKHRoaXMpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxp
bmVSZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVGltZWxpbmVSZWNvcmRpbmcuanMKaW5kZXggZGE2MGFmMGMxNDY0ZTM5NzY2M2IyMzFkMTA3
MTBiMzg5OTY4ZDQ4Ny4uOTQ3OTA1YzYyYTYwMTJhNWExNjFhNzQxOWVjZDFkNDQ5ZWMxMjllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Rp
bWVsaW5lUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwpAQCAtMjIyLDcgKzIyMiw3IEBAIFdJLlRp
bWVsaW5lUmVjb3JkaW5nID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmcgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBBZGQgdGhlIHJlY29yZCB0byB0
aGUgc291cmNlIGNvZGUgdGltZWxpbmVzLgotICAgICAgICB2YXIgYWN0aXZlTWFpblJlc291cmNl
ID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnByb3Zpc2lvbmFsTWFpblJlc291
cmNlIHx8IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2U7Cisg
ICAgICAgIHZhciBhY3RpdmVNYWluUmVzb3VyY2UgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UgfHwgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
Lm1haW5SZXNvdXJjZTsKICAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSByZWNvcmQuc291cmNlQ29k
ZUxvY2F0aW9uID8gcmVjb3JkLnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIDogYWN0aXZl
TWFpblJlc291cmNlOwogCiAgICAgICAgIHZhciBzb3VyY2VDb2RlVGltZWxpbmVzID0gdGhpcy5f
c291cmNlQ29kZVRpbWVsaW5lc01hcC5nZXQoc291cmNlQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzCmluZGV4IGYxMzE4ZjQ3YjMxNWFiZGIyZWFlZGY4ZTcyYWM5ZTNjNjNkMmExNTguLjgzMDFh
MmIyN2FjMzdiZDdjMTAzZDdhNjU1MThlMDIyNTI5NTZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVy
LmpzCkBAIC0yOSwyMiArMjksMjIgQEAgV0kuQ1NTT2JzZXJ2ZXIgPSBjbGFzcyBDU1NPYnNlcnZl
cgogCiAgICAgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQogICAgIHsKLSAgICAgICAgV0kuY3Nz
U3R5bGVNYW5hZ2VyLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgICAgIFdJLmNzc01h
bmFnZXIubWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKICAgICB9CiAKICAgICBzdHlsZVNoZWV0
Q2hhbmdlZChzdHlsZVNoZWV0SWQpCiAgICAgewotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIu
c3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkKTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5z
dHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQpOwogICAgIH0KIAogICAgIHN0eWxlU2hlZXRB
ZGRlZChzdHlsZVNoZWV0SW5mbykKICAgICB7Ci0gICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5z
dHlsZVNoZWV0QWRkZWQoc3R5bGVTaGVldEluZm8pOworICAgICAgICBXSS5jc3NNYW5hZ2VyLnN0
eWxlU2hlZXRBZGRlZChzdHlsZVNoZWV0SW5mbyk7CiAgICAgfQogCiAgICAgc3R5bGVTaGVldFJl
bW92ZWQoaWQpCiAgICAgewotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldFJl
bW92ZWQoaWQpOworICAgICAgICBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRSZW1vdmVkKGlkKTsK
ICAgICB9CiAKICAgICBuYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxvdykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNv
bGVPYnNlcnZlci5qcwppbmRleCA3YThkN2Q0YzZiYjJlOTU1MmE0M2FhMGQ5YTc3ZTRiN2YzZDA4
OTFkLi4wNDdlZTUwYWNiMDBhZDc3YWRkMmNkY2U5Y2VjOTNmZjAwZDBkMzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2Jz
ZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvQ29uc29sZU9ic2VydmVyLmpzCkBAIC0zNSwxNyArMzUsMTcgQEAgV0kuQ29uc29sZU9ic2Vy
dmVyID0gY2xhc3MgQ29uc29sZU9ic2VydmVyCiAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09
ICJhc3NlcnQiICYmICFtZXNzYWdlLnRleHQpCiAgICAgICAgICAgICBtZXNzYWdlLnRleHQgPSBX
SS5VSVN0cmluZygiQXNzZXJ0aW9uIik7CiAKLSAgICAgICAgV0kubG9nTWFuYWdlci5tZXNzYWdl
V2FzQWRkZWQodGhpcy50YXJnZXQsIG1lc3NhZ2Uuc291cmNlLCBtZXNzYWdlLmxldmVsLCBtZXNz
YWdlLnRleHQsIG1lc3NhZ2UudHlwZSwgbWVzc2FnZS51cmwsIG1lc3NhZ2UubGluZSwgbWVzc2Fn
ZS5jb2x1bW4gfHwgMCwgbWVzc2FnZS5yZXBlYXRDb3VudCwgbWVzc2FnZS5wYXJhbWV0ZXJzLCBt
ZXNzYWdlLnN0YWNrVHJhY2UsIG1lc3NhZ2UubmV0d29ya1JlcXVlc3RJZCk7CisgICAgICAgIFdJ
LmNvbnNvbGVNYW5hZ2VyLm1lc3NhZ2VXYXNBZGRlZCh0aGlzLnRhcmdldCwgbWVzc2FnZS5zb3Vy
Y2UsIG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UudGV4dCwgbWVzc2FnZS50eXBlLCBtZXNzYWdlLnVy
bCwgbWVzc2FnZS5saW5lLCBtZXNzYWdlLmNvbHVtbiB8fCAwLCBtZXNzYWdlLnJlcGVhdENvdW50
LCBtZXNzYWdlLnBhcmFtZXRlcnMsIG1lc3NhZ2Uuc3RhY2tUcmFjZSwgbWVzc2FnZS5uZXR3b3Jr
UmVxdWVzdElkKTsKICAgICB9CiAKICAgICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGNvdW50
KQogICAgIHsKLSAgICAgICAgV0kubG9nTWFuYWdlci5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVk
KGNvdW50KTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIubWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZChjb3VudCk7CiAgICAgfQogCiAgICAgbWVzc2FnZXNDbGVhcmVkKCkKICAgICB7Ci0gICAg
ICAgIFdJLmxvZ01hbmFnZXIubWVzc2FnZXNDbGVhcmVkKCk7CisgICAgICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLm1lc3NhZ2VzQ2xlYXJlZCgpOwogICAgIH0KIAogICAgIGhlYXBTbmFwc2hvdCh0aW1l
c3RhbXAsIHNuYXBzaG90U3RyaW5nRGF0YSwgdGl0bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCmlu
ZGV4IDA2Yzc4NmQ1ZGViZThiNTUzYzBjNTc0NGRiNTNmMDZhYTU0NWEyNmEuLmU5OTM3MGE4MTdm
ZGFhODRkYjlhMTkyMzdkODAyNjhmODlkOTNmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCkBA
IC0yOSw4NiArMjksODYgQEAgV0kuRE9NT2JzZXJ2ZXIgPSBjbGFzcyBET01PYnNlcnZlcgogCiAg
ICAgZG9jdW1lbnRVcGRhdGVkKCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9k
b2N1bWVudFVwZGF0ZWQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5fZG9jdW1lbnRVcGRhdGVk
KCk7CiAgICAgfQogCiAgICAgaW5zcGVjdChub2RlSWQpCiAgICAgewotICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5pbnNwZWN0RWxlbWVudChub2RlSWQpOworICAgICAgICBXSS5kb21NYW5hZ2Vy
Lmluc3BlY3RFbGVtZW50KG5vZGVJZCk7CiAgICAgfQogCiAgICAgc2V0Q2hpbGROb2RlcyhwYXJl
bnRJZCwgcGF5bG9hZHMpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5fc2V0Q2hp
bGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMpOworICAgICAgICBXSS5kb21NYW5hZ2VyLl9zZXRD
aGlsZE5vZGVzKHBhcmVudElkLCBwYXlsb2Fkcyk7CiAgICAgfQogCiAgICAgYXR0cmlidXRlTW9k
aWZpZWQobm9kZUlkLCBuYW1lLCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5h
Z2VyLl9hdHRyaWJ1dGVNb2RpZmllZChub2RlSWQsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgV0ku
ZG9tTWFuYWdlci5fYXR0cmlidXRlTW9kaWZpZWQobm9kZUlkLCBuYW1lLCB2YWx1ZSk7CiAgICAg
fQogCiAgICAgYXR0cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpCiAgICAgewotICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5fYXR0cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpOworICAgICAg
ICBXSS5kb21NYW5hZ2VyLl9hdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSk7CiAgICAgfQog
CiAgICAgaW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKQogICAgIHsKLSAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcyk7CisgICAgICAg
IFdJLmRvbU1hbmFnZXIuX2lubGluZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcyk7CiAgICAgfQog
CiAgICAgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKG5vZGVJZCwgY2hhcmFjdGVyRGF0YSkKICAgICB7
Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQobm9kZUlk
LCBjaGFyYWN0ZXJEYXRhKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hhcmFjdGVyRGF0YU1v
ZGlmaWVkKG5vZGVJZCwgY2hhcmFjdGVyRGF0YSk7CiAgICAgfQogCiAgICAgY2hpbGROb2RlQ291
bnRVcGRhdGVkKG5vZGVJZCwgY2hpbGROb2RlQ291bnQpCiAgICAgewotICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5fY2hpbGROb2RlQ291bnRVcGRhdGVkKG5vZGVJZCwgY2hpbGROb2RlQ291bnQp
OworICAgICAgICBXSS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBj
aGlsZE5vZGVDb3VudCk7CiAgICAgfQogCiAgICAgY2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50Tm9k
ZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5bG9hZCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLl9jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBw
YXlsb2FkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50
Tm9kZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5bG9hZCk7CiAgICAgfQogCiAgICAgY2hpbGROb2Rl
UmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsKKyAgICAgICAg
V0kuZG9tTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCk7CiAg
ICAgfQogCiAgICAgc2hhZG93Um9vdFB1c2hlZChwYXJlbnROb2RlSWQsIG5vZGVJZCkKICAgICB7
Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnROb2Rl
SWQsIDAsIG5vZGVJZCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuX2NoaWxkTm9kZUluc2VydGVk
KHBhcmVudE5vZGVJZCwgMCwgbm9kZUlkKTsKICAgICB9CiAKICAgICBzaGFkb3dSb290UG9wcGVk
KHBhcmVudE5vZGVJZCwgbm9kZUlkKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
X2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOworICAgICAgICBXSS5kb21N
YW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsKICAgICB9CiAK
ICAgICBjdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkKG5vZGVJZCwgY3VzdG9tRWxlbWVudFN0YXRl
KQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuX2N1c3RvbUVsZW1lbnRTdGF0ZUNo
YW5nZWQobm9kZUlkLCBjdXN0b21FbGVtZW50U3RhdGUpOworICAgICAgICBXSS5kb21NYW5hZ2Vy
Ll9jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkKG5vZGVJZCwgY3VzdG9tRWxlbWVudFN0YXRlKTsK
ICAgICB9CiAKICAgICBwc2V1ZG9FbGVtZW50QWRkZWQocGFyZW50Tm9kZUlkLCBwc2V1ZG9FbGVt
ZW50KQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuX3BzZXVkb0VsZW1lbnRBZGRl
ZChwYXJlbnROb2RlSWQsIHBzZXVkb0VsZW1lbnQpOworICAgICAgICBXSS5kb21NYW5hZ2VyLl9w
c2V1ZG9FbGVtZW50QWRkZWQocGFyZW50Tm9kZUlkLCBwc2V1ZG9FbGVtZW50KTsKICAgICB9CiAK
ICAgICBwc2V1ZG9FbGVtZW50UmVtb3ZlZChwYXJlbnROb2RlSWQsIHBzZXVkb0VsZW1lbnRJZCkK
ICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLl9wc2V1ZG9FbGVtZW50UmVtb3ZlZChw
YXJlbnROb2RlSWQsIHBzZXVkb0VsZW1lbnRJZCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuX3Bz
ZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVudElkKTsKICAgICB9
CiAKICAgICBkaWRBZGRFdmVudExpc3RlbmVyKG5vZGVJZCkKICAgICB7Ci0gICAgICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLmRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKTsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5kaWRBZGRFdmVudExpc3RlbmVyKG5vZGVJZCk7CiAgICAgfQogCiAgICAgd2lsbFJl
bW92ZUV2ZW50TGlzdGVuZXIobm9kZUlkKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIud2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdl
ci53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdl
T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKaW5kZXggODcwYzNhYzJiNTg3OTVlYTkzMGRiY2NmYjY1
YjNmYjMzOTc0MWEyYS4uZDBhY2NiZTFmM2RkOGQyODQwZTY0MDkwNmMzNzUxNWMxN2U2NDA3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
RE9NU3RvcmFnZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwpAQCAtMzAsMjEgKzMwLDIxIEBA
IFdJLkRPTVN0b3JhZ2VPYnNlcnZlciA9IGNsYXNzIERPTVN0b3JhZ2VPYnNlcnZlcgogCiAgICAg
ZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZChzdG9yYWdlSWQpCiAgICAgewotICAgICAgICBXSS5zdG9y
YWdlTWFuYWdlci5pdGVtc0NsZWFyZWQoc3RvcmFnZUlkKTsKKyAgICAgICAgV0kuZG9tU3RvcmFn
ZU1hbmFnZXIuaXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7CiAgICAgfQogCiAgICAgZG9tU3RvcmFn
ZUl0ZW1SZW1vdmVkKHN0b3JhZ2VJZCwga2V5KQogICAgIHsKLSAgICAgICAgV0kuc3RvcmFnZU1h
bmFnZXIuaXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpOworICAgICAgICBXSS5kb21TdG9yYWdl
TWFuYWdlci5pdGVtUmVtb3ZlZChzdG9yYWdlSWQsIGtleSk7CiAgICAgfQogCiAgICAgZG9tU3Rv
cmFnZUl0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUpCiAgICAgewotICAgICAgICBXSS5z
dG9yYWdlTWFuYWdlci5pdGVtQWRkZWQoc3RvcmFnZUlkLCBrZXksIHZhbHVlKTsKKyAgICAgICAg
V0kuZG9tU3RvcmFnZU1hbmFnZXIuaXRlbUFkZGVkKHN0b3JhZ2VJZCwga2V5LCB2YWx1ZSk7CiAg
ICAgfQogCiAgICAgZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1
ZSwgdmFsdWUpCiAgICAgewotICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5pdGVtVXBkYXRlZChz
dG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgV0kuZG9tU3RvcmFnZU1h
bmFnZXIuaXRlbVVwZGF0ZWQoc3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSk7CiAgICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCmluZGV4IDExY2U2ZmYxNDNhNzI3
ODJiOWMxMjcyZDRlNjdlNTllMThkMmQ0NDguLmM0OTA4YzZkYjkxYjkxMTdkNzYzNTkwMDhhZTBh
ODU4ODE3YjcyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcwpAQCAtMjksNiAr
MjksNiBAQCBXSS5EYXRhYmFzZU9ic2VydmVyID0gY2xhc3MgRGF0YWJhc2VPYnNlcnZlcgogCiAg
ICAgYWRkRGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgewotICAgICAgICBXSS5zdG9yYWdlTWFuYWdl
ci5kYXRhYmFzZVdhc0FkZGVkKGRhdGFiYXNlLmlkLCBkYXRhYmFzZS5kb21haW4sIGRhdGFiYXNl
Lm5hbWUsIGRhdGFiYXNlLnZlcnNpb24pOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZGF0
YWJhc2VXYXNBZGRlZChkYXRhYmFzZS5pZCwgZGF0YWJhc2UuZG9tYWluLCBkYXRhYmFzZS5uYW1l
LCBkYXRhYmFzZS52ZXJzaW9uKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcwppbmRleCAyZmE5ODE2NWYyZThmZjgwOWY1ZjBmNjRlYTk3ZGI4ZjQ2Nzc1
NDhkLi5mMzJmMjgzNWFmMTVhYjk5NDhiZmJiMTdlZWIzMWNjNjljYTUxZGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtNTUsNyArNTUsNyBAQCBJbnNwZWN0
b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIHNldEVsZW1lbnRTZWxlY3Rpb25FbmFibGVkOiBmdW5j
dGlvbihlbmFibGVkKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaW5zcGVjdE1v
ZGVFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0TW9kZUVu
YWJsZWQgPSBlbmFibGVkOwogICAgIH0sCiAKICAgICBzZXREb2NraW5nVW5hdmFpbGFibGU6IGZ1
bmN0aW9uKHVuYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwppbmRl
eCBkMDkzODUxYmI5MzlhMGUyYTE2N2Y3MjZiZjBjOGQ3Y2M5NGMwOTc3Li43OGYyYWU2OGJlNzg2
ODI4MTRmNmZlYzcwOTczNGM3ZDA2Yjg2MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNl
cnZlci5qcwpAQCAtNDEsNyArNDEsNyBAQCBXSS5JbnNwZWN0b3JPYnNlcnZlciA9IGNsYXNzIElu
c3BlY3Rvck9ic2VydmVyCiAgICAgewogICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gV0kuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQsIFdJLm1haW5UYXJnZXQpOwogICAgICAgICBp
ZiAocmVtb3RlT2JqZWN0LnN1YnR5cGUgPT09ICJub2RlIikgewotICAgICAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIuaW5zcGVjdE5vZGVPYmplY3QocmVtb3RlT2JqZWN0KTsKKyAgICAgICAgICAg
IFdJLmRvbU1hbmFnZXIuaW5zcGVjdE5vZGVPYmplY3QocmVtb3RlT2JqZWN0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01OSw5ICs1OSw5IEBAIFdJLkluc3BlY3Rvck9i
c2VydmVyID0gY2xhc3MgSW5zcGVjdG9yT2JzZXJ2ZXIKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChoaW50cy5kYXRhYmFzZUlkKQotICAgICAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIuaW5zcGVj
dERhdGFiYXNlKGhpbnRzLmRhdGFiYXNlSWQpOworICAgICAgICAgICAgV0kuZGF0YWJhc2VNYW5h
Z2VyLmluc3BlY3REYXRhYmFzZShoaW50cy5kYXRhYmFzZUlkKTsKICAgICAgICAgZWxzZSBpZiAo
aGludHMuZG9tU3RvcmFnZUlkKQotICAgICAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIuaW5zcGVj
dERPTVN0b3JhZ2UoaGludHMuZG9tU3RvcmFnZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbVN0b3Jh
Z2VNYW5hZ2VyLmluc3BlY3RET01TdG9yYWdlKGhpbnRzLmRvbVN0b3JhZ2VJZCk7CiAKICAgICAg
ICAgcmVtb3RlT2JqZWN0LnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcwppbmRl
eCBmZjdiNTY1NGU2OTU1NzA3ODE0YzNlYzI4MDAxZTMxZDZlZjM5MjVhLi5kZjA4NGZlZDc4NGMw
NjI5YzJiYTMyZmYyOWUwYzg1Y2RkMGU3MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMKQEAgLTcx
LDcgKzcxLDcgQEAgV0kuTWFpblRhcmdldCA9IGNsYXNzIE1haW5UYXJnZXQgZXh0ZW5kcyBXSS5U
YXJnZXQKICAgICAgICAgaWYgKHRoaXMuX21haW5SZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9tYWluUmVzb3VyY2U7CiAKLSAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZSA/IG1haW5G
cmFtZS5tYWluUmVzb3VyY2UgOiBudWxsOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2Vy
dmVyLmpzCmluZGV4IGE1MmQxZTEwYTFlMjgyODA2ODQ0ZWE5ZDg1OGI1MGIxMmY4NjdmZDMuLmEz
Yzg2OTZhMjhlZmM5ZDcyNzk5NDdjZjFkMDIyZThkNzM2NDljOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3
b3JrT2JzZXJ2ZXIuanMKQEAgLTM4LDY4ICszOCw2OCBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIgPSBj
bGFzcyBOZXR3b3JrT2JzZXJ2ZXIKICAgICAgICAgICAgIHRhcmdldElkID0gYXJndW1lbnRzWzld
OwogICAgICAgICB9CiAKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VS
ZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCByZXF1ZXN0LCB0
eXBlLCByZWRpcmVjdFJlc3BvbnNlLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCBpbml0aWF0b3IsIHRh
cmdldElkKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VSZXF1ZXN0V2lsbEJl
U2VudChyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCByZXF1ZXN0LCB0eXBlLCByZWRpcmVj
dFJlc3BvbnNlLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCBpbml0aWF0b3IsIHRhcmdldElkKTsKICAg
ICB9CiAKICAgICByZXF1ZXN0U2VydmVkRnJvbUNhY2hlKHJlcXVlc3RJZCkKICAgICB7CiAgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMC4zKTogVGhlIGJhY2tlbmQgbm8gbG9uZ2VyIHNl
bmRzIHRoaXMuCi0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1hcmtSZXNvdXJjZVJl
cXVlc3RBc1NlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQpOworICAgICAgICBXSS5uZXR3
b3JrTWFuYWdlci5tYXJrUmVzb3VyY2VSZXF1ZXN0QXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVx
dWVzdElkKTsKICAgICB9CiAKICAgICByZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgZnJhbWVJ
ZCwgbG9hZGVySWQsIHRpbWVzdGFtcCwgdHlwZSwgcmVzcG9uc2UpCiAgICAgewotICAgICAgICBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlUmVzcG9uc2Uo
cmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgdHlwZSwgcmVzcG9uc2UsIHRpbWVzdGFtcCk7
CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVSZXNw
b25zZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0eXBlLCByZXNwb25zZSwgdGltZXN0
YW1wKTsKICAgICB9CiAKICAgICBkYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZURhdGEocmVxdWVzdElkLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgdGltZXN0YW1wKTsKKyAgICAgICAgV0kubmV0d29y
a01hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZURhdGEocmVxdWVzdElkLCBkYXRhTGVu
Z3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgdGltZXN0YW1wKTsKICAgICB9CiAKICAgICBsb2FkaW5n
RmluaXNoZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJjZU1hcFVSTCwgbWV0cmljcykKICAg
ICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZEZp
bmlzaExvYWRpbmcocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJjZU1hcFVSTCwgbWV0cmljcyk7
CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZEZpbmlzaExvYWRp
bmcocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJjZU1hcFVSTCwgbWV0cmljcyk7CiAgICAgfQog
CiAgICAgbG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZXJyb3JUZXh0LCBjYW5j
ZWxlZCkKICAgICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVx
dWVzdERpZEZhaWxMb2FkaW5nKHJlcXVlc3RJZCwgY2FuY2VsZWQsIHRpbWVzdGFtcCwgZXJyb3JU
ZXh0KTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkRmFpbExv
YWRpbmcocmVxdWVzdElkLCBjYW5jZWxlZCwgdGltZXN0YW1wLCBlcnJvclRleHQpOwogICAgIH0K
IAogICAgIHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBs
b2FkZXJJZCwgZG9jdW1lbnRVUkwsIHRpbWVzdGFtcCwgaW5pdGlhdG9yLCByZXNvdXJjZSkKICAg
ICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdFdhc1Nl
cnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCByZXNvdXJj
ZSwgdGltZXN0YW1wLCBpbml0aWF0b3IpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNv
dXJjZVJlcXVlc3RXYXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBs
b2FkZXJJZCwgcmVzb3VyY2UsIHRpbWVzdGFtcCwgaW5pdGlhdG9yKTsKICAgICB9CiAKICAgICB3
ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwgdXJsKQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIud2ViU29ja2V0Q3JlYXRlZChyZXF1ZXN0SWQsIHVybCk7CisgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLndlYlNvY2tldENyZWF0ZWQocmVxdWVzdElkLCB1cmwpOwogICAg
IH0KIAogICAgIHdlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChyZXF1ZXN0SWQsIHRp
bWVzdGFtcCwgd2FsbHRpbWUsIHJlcXVlc3QpCiAgICAgewotICAgICAgICBXSS5mcmFtZVJlc291
cmNlTWFuYWdlci53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QocmVxdWVzdElkLCB0
aW1lc3RhbXAsIHdhbGx0aW1lLCByZXF1ZXN0KTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIu
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KHJlcXVlc3RJZCwgdGltZXN0YW1wLCB3
YWxsdGltZSwgcmVxdWVzdCk7CiAgICAgfQogCiAgICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCiAgICAgewotICAgICAg
ICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2Vp
dmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSk7CisgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1l
c3RhbXAsIHJlc3BvbnNlKTsKICAgICB9CiAKICAgICB3ZWJTb2NrZXRDbG9zZWQocmVxdWVzdElk
LCB0aW1lc3RhbXApCiAgICAgewotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci53ZWJT
b2NrZXRDbG9zZWQocmVxdWVzdElkLCB0aW1lc3RhbXApOworICAgICAgICBXSS5uZXR3b3JrTWFu
YWdlci53ZWJTb2NrZXRDbG9zZWQocmVxdWVzdElkLCB0aW1lc3RhbXApOwogICAgIH0KIAogICAg
IHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQog
ICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIud2ViU29ja2V0RnJhbWVSZWNl
aXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpOworICAgICAgICBXSS5uZXR3b3Jr
TWFuYWdlci53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNw
b25zZSk7CiAgICAgfQogCiAgICAgd2ViU29ja2V0RnJhbWVTZW50KHJlcXVlc3RJZCwgdGltZXN0
YW1wLCByZXNwb25zZSkKICAgICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLndl
YlNvY2tldEZyYW1lU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpOworICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlci53ZWJTb2NrZXRGcmFtZVNlbnQocmVxdWVzdElkLCB0aW1lc3Rh
bXAsIHJlc3BvbnNlKTsKICAgICB9CiAKICAgICB3ZWJTb2NrZXRGcmFtZUVycm9yKHJlcXVlc3RJ
ZCwgdGltZXN0YW1wLCBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKaW5kZXgg
MDU3MmNiNDY2ODE1ZGFkMTNiNGU3OTlmYTQwNzBmODUwNDBiMGQ4OC4uMzE0NjhhN2IyYTkyNjFm
MTExOGM2MGY1ZjNiMTQyNTIxYWI4M2VlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcwpAQCAt
MzksMTIgKzM5LDEyIEBAIFdJLlBhZ2VPYnNlcnZlciA9IGNsYXNzIFBhZ2VPYnNlcnZlcgogCiAg
ICAgZnJhbWVOYXZpZ2F0ZWQoZnJhbWUsIGxvYWRlcklkKQogICAgIHsKLSAgICAgICAgV0kuZnJh
bWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVEaWROYXZpZ2F0ZShmcmFtZSwgbG9hZGVySWQpOworICAg
ICAgICBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZURpZE5hdmlnYXRlKGZyYW1lLCBsb2FkZXJJZCk7
CiAgICAgfQogCiAgICAgZnJhbWVEZXRhY2hlZChmcmFtZUlkKQogICAgIHsKLSAgICAgICAgV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVEaWREZXRhY2goZnJhbWVJZCk7CisgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLmZyYW1lRGlkRGV0YWNoKGZyYW1lSWQpOwogICAgIH0KIAogICAgIGZy
YW1lU3RhcnRlZExvYWRpbmcoZnJhbWVJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwppbmRleCAz
NDkxMTY2ZTY5ZTdjNzU0NWFmNTNjNzFjNTNjNmVhOTk0NjI5YmYxLi42MzU2NDZlYzcwZjE0ZTNm
OGMyMDgzZjA3OTRmNDNhNDMwNjYwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCkBAIC00
NTcsNyArNDU3LDcgQEAgV0kuUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
cHVzaE5vZGVUb0Zyb250ZW5kKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX29i
amVjdElkKQotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucHVzaE5vZGVUb0Zyb250ZW5k
KHRoaXMuX29iamVjdElkLCBjYWxsYmFjayk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnB1
c2hOb2RlVG9Gcm9udGVuZCh0aGlzLl9vYmplY3RJZCwgY2FsbGJhY2spOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjYWxsYmFjaygwKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2
ZXIuanMKaW5kZXggMTA4YmRmYzRlNmUxNDM2Yjc5YzZkYzJhMzI1MmYxODc3ZmMyMjRjZi4uOGQ0
MWExMzE2YmYwZmUxNmIzYzI1OWVkMjI2YjJlOWRlZWVkYTMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRp
bWVPYnNlcnZlci5qcwpAQCAtMjksNiArMjksNiBAQCBXSS5SdW50aW1lT2JzZXJ2ZXIgPSBjbGFz
cyBSdW50aW1lT2JzZXJ2ZXIKIAogICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQ
YXlsb2FkKQogICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZXhlY3V0aW9u
Q29udGV4dENyZWF0ZWQoY29udGV4dFBheWxvYWQpOworICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dv
cmtlclRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1dvcmtlclRhcmdldC5qcwppbmRleCA3MDE3ZmY0YzQwNWM1YzgzZDg1MzljMmE3NTA1ZmI2
YmM4MWIzYzQ5Li5kZTRlMzQ5YjFjNzc3MWUxNmU2MTAwYTJmY2ZkMzE4NTFmNTA1NzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3Jr
ZXJUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvV29ya2VyVGFyZ2V0LmpzCkBAIC0yOSw3ICsyOSw3IEBAIFdJLldvcmtlclRhcmdldCA9
IGNsYXNzIFdvcmtlclRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogICAgIHsKICAgICAgICAgc3Vw
ZXIod29ya2VySWQsIG5hbWUsIFdJLlRhcmdldC5UeXBlLldvcmtlciwgY29ubmVjdGlvbik7CiAK
LSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRvcHRPcnBoYW5lZFJlc291cmNlc0Zv
clRhcmdldCh0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRvcHRPcnBoYW5lZFJl
c291cmNlc0ZvclRhcmdldCh0aGlzKTsKIAogICAgICAgICBpZiAodGhpcy5SdW50aW1lQWdlbnQp
IHsKICAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9u
Q29udGV4dCh0aGlzLCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLCB0aGlzLmRpc3BsYXlOYW1lLCBmYWxzZSwgbnVsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggM2RhM2E0ZGQxZTAzNzJl
MDBjZTEyOWY3ZmY1Y2Y4ZDc3M2YyNGM0Yi4uYzU3MWM3YTExYWVkOGU2YjAyOWYyMWE4YjAzMWM3
NjM3YjAyOGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QuaHRtbApAQCAtMjEwLDIyICsyMTAsMjEgQEAKIAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9BdWRpdE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9Db25zb2xlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IQVJCdWlsZGVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9MYXllclRyZWVNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTG9nTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL01lbW9yeU1hbmFnZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9OZXR3b3JrTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1Byb2JlTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1J1bnRpbWVNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvU291cmNlTWFw
TWFuYWdlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1N0b3Jh
Z2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGFy
Z2V0TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1Rp
bWVsaW5lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L1dvcmtlck1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IDZlZjFlMDIwMDA2MjU0ZGZlOGFmODI3
NTU5MWQ2OWExY2NkMjNhYzcuLjllNzY2NzFhMTQwNWNmZmJkYjBiOWZmODlmY2U4YTU1YzlkNTIy
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qv
VGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rl
c3QuanMKQEAgLTQ5LDEyICs0OSwxMSBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAv
LyBJbnN0YW50aWF0ZSBjb250cm9sbGVycyB1c2VkIGJ5IHRlc3RzLgogICAgIHRoaXMudGFyZ2V0
TWFuYWdlciA9IG5ldyBXSS5UYXJnZXRNYW5hZ2VyOwotICAgIHRoaXMuZnJhbWVSZXNvdXJjZU1h
bmFnZXIgPSBuZXcgV0kuRnJhbWVSZXNvdXJjZU1hbmFnZXI7Ci0gICAgdGhpcy5zdG9yYWdlTWFu
YWdlciA9IG5ldyBXSS5TdG9yYWdlTWFuYWdlcjsKLSAgICB0aGlzLmRvbVRyZWVNYW5hZ2VyID0g
bmV3IFdJLkRPTVRyZWVNYW5hZ2VyOwotICAgIHRoaXMuY3NzU3R5bGVNYW5hZ2VyID0gbmV3IFdJ
LkNTU1N0eWxlTWFuYWdlcjsKLSAgICB0aGlzLmxvZ01hbmFnZXIgPSBuZXcgV0kuTG9nTWFuYWdl
cjsKLSAgICB0aGlzLmlzc3VlTWFuYWdlciA9IG5ldyBXSS5Jc3N1ZU1hbmFnZXI7CisgICAgdGhp
cy5uZXR3b3JrTWFuYWdlciA9IG5ldyBXSS5OZXR3b3JrTWFuYWdlcjsKKyAgICB0aGlzLmRvbVN0
b3JhZ2VNYW5hZ2VyID0gbmV3IFdJLkRPTVN0b3JhZ2VNYW5hZ2VyOworICAgIHRoaXMuZG9tTWFu
YWdlciA9IG5ldyBXSS5ET01NYW5hZ2VyOworICAgIHRoaXMuY3NzTWFuYWdlciA9IG5ldyBXSS5D
U1NNYW5hZ2VyOworICAgIHRoaXMuY29uc29sZU1hbmFnZXIgPSBuZXcgV0kuQ29uc29sZU1hbmFn
ZXI7CiAgICAgdGhpcy5ydW50aW1lTWFuYWdlciA9IG5ldyBXSS5SdW50aW1lTWFuYWdlcjsKICAg
ICB0aGlzLmhlYXBNYW5hZ2VyID0gbmV3IFdJLkhlYXBNYW5hZ2VyOwogICAgIHRoaXMubWVtb3J5
TWFuYWdlciA9IG5ldyBXSS5NZW1vcnlNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0
YWlsc1NlY3Rpb25Sb3cuanMKaW5kZXggMGE2ZGNjMTViNTM0NDcyMjU1NzhmN2Y0MTllZGU4MTI3
OTczZDMyOS4uYWFhYzkwNDVlZGYzMzRjNDZiNDFlYTA5MDg1MjJhODg4MmNkZGVmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQm94TW9kZWxE
ZXRhaWxzU2VjdGlvblJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCkBAIC05NCwxMCArOTQsMTAg
QEAgV0kuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdyA9IGNsYXNzIEJveE1vZGVsRGV0YWlsc1Nl
Y3Rpb25Sb3cgZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgICAgIGlmICh0aGlzLl9oaWdobGln
aHRNb2RlID09PSBtb2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRo
aXMuX2hpZ2hsaWdodE1vZGUgPSBtb2RlOwotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
aGlnaGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCwgbW9kZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICB0aGlzLl9oaWdobGlnaHRNb2RlID0gbnVsbDsKLSAgICAgICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgICAgICBXSS5kb21NYW5h
Z2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgdGhpcy5fYm94RWxlbWVudHMgJiYgaSA8IHRoaXMuX2JveEVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzT3ZlcnZpZXdDb250ZW50Vmlldy5qcwppbmRl
eCBiMzMwMGIxYTgzNWMwMzNkZmNiYTQwODVmOGJjYmMxNmI1YTU0ZjdmLi5iYmNiMmFiYTU0YWQ2
ZWQ0NGYwMTE2NjAzYzZlZjZiOGY0NjgxMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNPdmVydmlld0NvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbnZhc092ZXJ2
aWV3Q29udGVudFZpZXcuanMKQEAgLTY5LDcgKzY5LDcgQEAgV0kuQ2FudmFzT3ZlcnZpZXdDb250
ZW50VmlldyA9IGNsYXNzIENhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xs
ZWMKIAogICAgIGhpZGRlbigpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWRl
RE9NTm9kZUhpZ2hsaWdodCgpOworICAgICAgICBXSS5kb21NYW5hZ2VyLmhpZGVET01Ob2RlSGln
aGxpZ2h0KCk7CiAKICAgICAgICAgc3VwZXIuaGlkZGVuKCk7CiAgICAgfQpAQCAtMTQ1LDcgKzE0
NSw3IEBAIFdJLkNhbnZhc092ZXJ2aWV3Q29udGVudFZpZXcgPSBjbGFzcyBDYW52YXNPdmVydmll
d0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29sbGVjCiAgICAgICAgIGxldCBjYW52YXMgPSBjb250
ZW50Vmlldy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKGNhbnZhcy5jc3NDYW52YXNO
YW1lKSB7CiAgICAgICAgICAgICBjYW52YXMucmVxdWVzdENTU0NhbnZhc0NsaWVudE5vZGVzKChj
c3NDYW52YXNDbGllbnROb2RlcykgPT4gewotICAgICAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5h
Z2VyLmhpZ2hsaWdodERPTU5vZGVMaXN0KGNzc0NhbnZhc0NsaWVudE5vZGVzLm1hcCgobm9kZSkg
PT4gbm9kZS5pZCkpOworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9N
Tm9kZUxpc3QoY3NzQ2FudmFzQ2xpZW50Tm9kZXMubWFwKChub2RlKSA9PiBub2RlLmlkKSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTUzLDEy
ICsxNTMsMTIgQEAgV0kuQ2FudmFzT3ZlcnZpZXdDb250ZW50VmlldyA9IGNsYXNzIENhbnZhc092
ZXJ2aWV3Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xsZWMKICAgICAgICAgY2FudmFzLnJlcXVl
c3ROb2RlKCkudGhlbigobm9kZSkgPT4gewogICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2Rl
Lm93bmVyRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShub2RlLmlkKTsKKyAgICAgICAgICAgIFdJ
LmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShub2RlLmlkKTsKICAgICAgICAgfSk7CiAgICAg
fQogCiAgICAgX2NvbnRlbnRWaWV3TW91c2VMZWF2ZShldmVudCkKICAgICB7Ci0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIFdJLmRvbU1h
bmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FudmFzVHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNUcmVl
RWxlbWVudC5qcwppbmRleCA1MTAxMjZiYmUzZWU2ZTM3YzNiZTcxMzk3YTM0ZDZjMDJhYmQ1Zjc5
Li5lYmUxODZiMGZlNDJlNGYyMjRjODNjOTBlNjkzZmRmNDQ2MTEyMjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52YXNUcmVlRWxlbWVu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYW52
YXNUcmVlRWxlbWVudC5qcwpAQCAtMTE4LDIxICsxMTgsMjEgQEAgV0kuQ2FudmFzVHJlZUVsZW1l
bnQgPSBjbGFzcyBDYW52YXNUcmVlRWxlbWVudCBleHRlbmRzIFdJLkZvbGRlcml6ZWRUcmVlRWxl
bWVudAogICAgIHsKICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY3NzQ2FudmFz
TmFtZSkgewogICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1ZXN0Q1NTQ2Fu
dmFzQ2xpZW50Tm9kZXMoKGNzc0NhbnZhc0NsaWVudE5vZGVzKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUxpc3QoY3NzQ2FudmFzQ2xpZW50
Tm9kZXMubWFwKChub2RlKSA9PiBub2RlLmlkKSwgImFsbCIpOworICAgICAgICAgICAgICAgIFdJ
LmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZUxpc3QoY3NzQ2FudmFzQ2xpZW50Tm9kZXMubWFw
KChub2RlKSA9PiBub2RlLmlkKSwgImFsbCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlcXVlc3ROb2RlKChu
b2RlKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLm93bmVyRG9jdW1l
bnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUobm9kZS5pZCwgImFsbCIpOworICAgICAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShub2RlLmlkLCAiYWxsIik7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIF9oYW5kbGVNb3VzZU91dChl
dmVudCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxp
Z2h0KCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAg
ICB9CiAKICAgICBfdXBkYXRlU3RhdHVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggNDA1MGI3Yzg0
YjM0NTI0NGRlZWM1MTFlZDJiODIzMjlkZDQ0MGYyNS4uZGE5MDU1OTczZWQ1ZjY1ODVlZTRiNzcz
MDdkYzg3YTAyMWJjZjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTEyMyw3ICsxMjMsNyBAQCBX
SS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgcmV0dXJuIG5ldyBXSS5GcmFtZURPTVRyZWVDb250ZW50VmlldyhyZXByZXNlbnRlZE9i
amVjdCwgZXh0cmFBcmd1bWVudHMpOwogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkRPTVNlYXJjaE1hdGNoT2JqZWN0KSB7Ci0gICAgICAgICAgICB2YXIgcmVz
dWx0VmlldyA9IG5ldyBXSS5GcmFtZURPTVRyZWVDb250ZW50VmlldyhXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUuZG9tVHJlZSwgZXh0cmFBcmd1bWVudHMpOworICAgICAgICAgICAg
dmFyIHJlc3VsdFZpZXcgPSBuZXcgV0kuRnJhbWVET01UcmVlQ29udGVudFZpZXcoV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWUsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgICAg
IHJlc3VsdFZpZXcucmVzdG9yZUZyb21Db29raWUoe25vZGVUb1NlbGVjdDogcmVwcmVzZW50ZWRP
YmplY3QuZG9tTm9kZX0pOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFZpZXc7CiAgICAgICAg
IH0KQEAgLTIzNSw3ICsyMzUsNyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuRE9NU2VhcmNoTWF0Y2hPYmplY3QpCi0gICAgICAgICAgICByZXR1
cm4gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWU7CisgICAgICAgICAg
ICByZXR1cm4gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWU7CiAKICAgICAgICAg
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuU291cmNlQ29kZVNlYXJjaE1hdGNo
T2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZXh0TWVudVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCmluZGV4IDNiMGQ4Mjc4ZjU3YmZlZTk3
NGM3NzRkMDJjNmI3NDI1MGZjMzQ3OWIuLjA5NmE2NWEyYzc4MWEzNDc1ZDE1ZDk1MGY5ZmZjZjVl
NDE2Nzk4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xMDAsNyAr
MTAwLDcgQEAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclVSTCA9IGZ1bmN0aW9uKGNvbnRl
eHRNZW51LCB1cmwsIG9wdGlvbnMpCiAgICAgICAgIFdJLm9wZW5VUkwodXJsLCBmcmFtZSwge2Fs
d2F5c09wZW5FeHRlcm5hbGx5OiB0cnVlfSk7CiAgICAgfSk7CiAKLSAgICBpZiAoV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKSkgeworICAgIGlmIChXSS5uZXR3b3Jr
TWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpKSB7CiAgICAgICAgIGlmICghV0kuaXNTaG93aW5n
UmVzb3VyY2VzVGFiKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0ku
VUlTdHJpbmcoIlJldmVhbCBpbiBSZXNvdXJjZXMgVGFiIiksICgpID0+IHsKICAgICAgICAgICAg
ICAgICBzaG93UmVzb3VyY2VXaXRoT3B0aW9ucyh7aWdub3JlTmV0d29ya1RhYjogdHJ1ZSwgaWdu
b3JlU2VhcmNoVGFiOiB0cnVlfSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgV0kuYXBwZW5kQ29udGV4
dE1lbnVJdGVtc0ZvckRPTU5vZGUgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgZG9tTm9kZSwgb3B0
aW9ucyA9IHsKIAogICAgIGlmICghb3B0aW9ucy5leGNsdWRlUmV2ZWFsRWxlbWVudCAmJiB3aW5k
b3cuRE9NQWdlbnQgJiYgZG9tTm9kZS5vd25lckRvY3VtZW50KSB7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBET00gVHJlZSIpLCAoKSA9PiB7
Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5pbnNwZWN0RWxlbWVudChkb21Ob2RlLmlk
KTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQoZG9tTm9kZS5pZCk7
CiAgICAgICAgIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRW
aWV3LmpzCmluZGV4IDBmNmY2MjcxNmZjNTNmZmM2M2JjYWRkMjQ3ODZiNzdjMDA2ZTkxZmQuLjE3
YWU4NjkwYzMxODU5ODczZmRjMTkzZWFiZGE4ZTM4YTcxM2Q0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTE2MSw3ICsxNjEsNyBAQCBXSS5Db29raWVT
dG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VgogICAgICAgICB9OwogCiAgICAgICAgIGxldCBhbGxSZXNvdXJjZXMgPSBb
XTsKLSAgICAgICAgZm9yIChsZXQgZnJhbWUgb2YgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJh
bWVzKSB7CisgICAgICAgIGZvciAobGV0IGZyYW1lIG9mIFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1l
cykgewogICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaXNuJ3QgaW4gdGhlIGxpc3Qg
b2YgcmVzb3VyY2VzLCBzbyBhZGQgaXQgYXMgYSBjYW5kaWRhdGUuCiAgICAgICAgICAgICBhbGxS
ZXNvdXJjZXMucHVzaChmcmFtZS5tYWluUmVzb3VyY2UsIC4uLmZyYW1lLnJlc291cmNlQ29sbGVj
dGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmlu
ZGV4IDhkZjE0YjU1YjZiZDczZGM2ZmRkZjU4Y2Y5ZTQ2YWM1YWQ0YzNlZDkuLjAxYTZlMTdjNTcx
NTIyNjVlYWQxOTNkYTk5ZjQxMWFjNmZhNzc0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtMTAyLDcgKzEwMiw3IEBAIFdJLkRPTURldGFpbHNTaWRlYmFyUGFu
ZWwgPSBjbGFzcyBET01EZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1NpZGVi
CiAgICAgX21vdXNlV2FzQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9k
b21Ob2RlICYmIHRoaXMuX2RvbU5vZGUub3duZXJEb2N1bWVudCkgewotICAgICAgICAgICAgdmFy
IG1haW5SZXNvdXJjZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHRo
aXMuX2RvbU5vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCk7CisgICAgICAgICAgICB2YXIg
bWFpblJlc291cmNlID0gV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwodGhpcy5fZG9t
Tm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsKICAgICAgICAgICAgIGlmIChtYWluUmVz
b3VyY2UpCiAgICAgICAgICAgICAgICAgdmFyIHBhcmVudEZyYW1lID0gbWFpblJlc291cmNlLnBh
cmVudEZyYW1lOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJh
clBhbmVsLmpzCmluZGV4IGRmYzJjNWM0YmQ2ZmY0YzEzMDEwNmFkOWQ0OGViNTg0OWU1Mjg4OWQu
LmZhZmExYzFjYWRjODYxZGNhNGI0ZmUyYTYwZDVhM2IwNjU2YmU5Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC00MCw3ICs0MCw3IEBAIFdJLkRP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXSS5ET01ECiAKICAgICBjbG9zZWQoKQogICAgIHsKLSAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwog
CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KQEAgLTUxLDEwICs1MSwxMCBAQCBXSS5E
T01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuZHMgV0kuRE9NRAogICAgIHsKICAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgp
OwogCi0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2Vk
LCB0aGlzKTsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9hdHRyaWJ1dGVzQ2hh
bmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFy
YWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNo
YW5nZWQsIHRoaXMuX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBX
SS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1
dGVNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc0NoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5k
b21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVS
ZW1vdmVkLCB0aGlzLl9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFN
b2RpZmllZCwgdGhpcy5fY2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzKTsKKyAgICAgICAgV0ku
ZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ3VzdG9tRWxl
bWVudFN0YXRlQ2hhbmdlZCwgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCwgdGhpcyk7
CiAKICAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJvdyA9IG5ldyBXSS5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXSS5VSVN0cmluZygiVHlwZSIpKTsKICAgICAgICAgdGhpcy5faWRlbnRp
dHlOb2RlTmFtZVJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXSS5VSVN0cmlu
ZygiTmFtZSIpKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQ
YW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRE9NRAog
ICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZUdyb3Vwc0J5RXZlbnQoZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgICAgIGxldCBldmVudExpc3RlbmVyVHlwZXMgPSBuZXcgTWFwOwogICAgICAgICAg
ICAgZm9yIChsZXQgZXZlbnRMaXN0ZW5lciBvZiBldmVudExpc3RlbmVycykgewotICAgICAgICAg
ICAgICAgIGV2ZW50TGlzdGVuZXIubm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChl
dmVudExpc3RlbmVyLm5vZGVJZCk7CisgICAgICAgICAgICAgICAgZXZlbnRMaXN0ZW5lci5ub2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoZXZlbnRMaXN0ZW5lci5ub2RlSWQpOwogCiAgICAg
ICAgICAgICAgICAgbGV0IGV2ZW50TGlzdGVuZXJzRm9yVHlwZSA9IGV2ZW50TGlzdGVuZXJUeXBl
cy5nZXQoZXZlbnRMaXN0ZW5lci50eXBlKTsKICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50TGlz
dGVuZXJzRm9yVHlwZSkKQEAgLTM1Niw3ICszNTYsNyBAQCBXSS5ET01Ob2RlRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRE9N
RAogICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZUdyb3Vwc0J5Tm9kZShldmVudExpc3RlbmVycykg
ewogICAgICAgICAgICAgbGV0IGV2ZW50TGlzdGVuZXJOb2RlcyA9IG5ldyBNYXA7CiAgICAgICAg
ICAgICBmb3IgKGxldCBldmVudExpc3RlbmVyIG9mIGV2ZW50TGlzdGVuZXJzKSB7Ci0gICAgICAg
ICAgICAgICAgZXZlbnRMaXN0ZW5lci5ub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklk
KGV2ZW50TGlzdGVuZXIubm9kZUlkKTsKKyAgICAgICAgICAgICAgICBldmVudExpc3RlbmVyLm5v
ZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChldmVudExpc3RlbmVyLm5vZGVJZCk7CiAKICAg
ICAgICAgICAgICAgICBsZXQgZXZlbnRMaXN0ZW5lcnNGb3JOb2RlID0gZXZlbnRMaXN0ZW5lck5v
ZGVzLmdldChldmVudExpc3RlbmVyLm5vZGUpOwogICAgICAgICAgICAgICAgIGlmICghZXZlbnRM
aXN0ZW5lcnNGb3JOb2RlKQpAQCAtNDQxLDcgKzQ0MSw3IEBAIFdJLkRPTU5vZGVEZXRhaWxzU2lk
ZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5E
T01ECiAgICAgICAgIGZ1bmN0aW9uIGxpbmtGb3JOb2RlSWQobm9kZUlkKSB7CiAgICAgICAgICAg
ICB2YXIgbGluayA9IG51bGw7CiAgICAgICAgICAgICBpZiAobm9kZUlkICE9PSB1bmRlZmluZWQg
JiYgdHlwZW9mIG5vZGVJZCA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgICAgICB2YXIgbm9k
ZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAg
IHZhciBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAg
ICAgICBpZiAobm9kZSkKICAgICAgICAgICAgICAgICAgICAgbGluayA9IFdJLmxpbmtpZnlBY2Nl
c3NpYmlsaXR5Tm9kZVJlZmVyZW5jZShub2RlKTsKICAgICAgICAgICAgIH0KQEAgLTQ2MCw3ICs0
NjAsNyBAQCBXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRh
aWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRE9NRAogICAgICAgICAgICAgbGV0IGxpbmtMaXN0
ID0gY29udGFpbmVyLmNyZWF0ZUNoaWxkKCJ1bCIsICJub2RlLWxpbmstbGlzdCIpOwogICAgICAg
ICAgICAgbGV0IGluaXRpYWxseUhpZGRlbkl0ZW1zID0gW107CiAgICAgICAgICAgICBmb3IgKGxl
dCBub2RlSWQgb2Ygbm9kZUlkcykgewotICAgICAgICAgICAgICAgIGxldCBub2RlID0gV0kuZG9t
VHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICAgICAgbGV0IG5vZGUg
PSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbGV0
IGxpbmsgPSBXSS5saW5raWZ5QWNjZXNzaWJpbGl0eU5vZGVSZWZlcmVuY2Uobm9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2Rl
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01Ob2RlVHJlZUVsZW1lbnQuanMKaW5kZXggZTFiMTI2NWM0ZTcyMWEwZGYxZWNlNGQyMmE3
MmI1MjlmYjdhYzkwYy4uNTQ1NDJhNGJlMjM2MmRkYjQ1MjVmMDRiZjFkNDlkNzcwNmJjOTIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
Tm9kZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qcwpAQCAtNjYsNyArNjYsNyBAQCBXSS5ET01O
b2RlVHJlZUVsZW1lbnQgPSBjbGFzcyBET01Ob2RlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5l
cmFsVHJlZUVsZW1lbnQKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIERP
TSBUcmVlIiksICgpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RF
bGVtZW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQpOworICAgICAgICAgICAgV0kuZG9tTWFu
YWdlci5pbnNwZWN0RWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkKTsKICAgICAgICAg
fSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwppbmRleCAyZDQzMDZk
ZGY0Y2FlMzA3MDJhMmM5OTc5OTgyNWIzYTg1NDlmODUzLi45ZDRkNTc2Y2QzNzBkMGRiYmNjMzY4
MjVmOWU0N2JhNzJhYTQxMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC03
MCw5ICs3MCw5IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5l
LmVkaXRhYmxlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2RvbVRyZWVPdXRsaW5lLmVsZW1lbnQpOwogCi0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQs
IHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVk
LCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1v
ZGlmaWVkLCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVk
LCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMu
X2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9k
b21Ob2RlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBh
dGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtbm9kZS1wYXRoIiwgbnVs
bCk7CiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBE
T01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgIHsKICAgICAgICAg
c3VwZXIuaGlkZGVuKCk7CiAKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVI
aWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgp
OwogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICB9
CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBXSS5zaG93U2hh
ZG93RE9NU2V0dGluZy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAg
ICAgICBXSS5zZXR0aW5ncy5zaG93UnVsZXJzLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBX
SS5ET01CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAK
QEAgLTM3Miw3ICszNzIsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChub2RlSWRlbnRpZmllcnMubGVuZ3RoID09PSAxKTsKIAotICAgICAgICAgICAgdmFy
IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkZW50aWZpZXJzWzBd
KTsKKyAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkZW50aWZpZXJzWzBdKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUpOwog
ICAgICAgICAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4
OSw3ICszODksNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgX3Jlc3RvcmVTZWxlY3RlZE5vZGVB
ZnRlclVwZGF0ZShkb2N1bWVudFVSTCwgZGVmYXVsdE5vZGUpCiAgICAgewotICAgICAgICBpZiAo
IVdJLmRvbVRyZWVNYW5hZ2VyLnJlc3RvcmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQpCisgICAgICAg
IGlmICghV0kuZG9tTWFuYWdlci5yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdE5vZGUobGFzdFNlbGVjdGVk
Tm9kZSkKQEAgLTQxMiwxNCArNDEyLDE0IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNz
IERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgZnVu
Y3Rpb24gc2VsZWN0TGFzdFNlbGVjdGVkTm9kZShub2RlSWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghV0kuZG9tVHJlZU1hbmFnZXIucmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCkK
KyAgICAgICAgICAgIGlmICghV0kuZG9tTWFuYWdlci5yZXN0b3JlU2VsZWN0ZWROb2RlSXNBbGxv
d2VkKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2VsZWN0Tm9kZS5j
YWxsKHRoaXMsIFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpKTsKKyAgICAgICAg
ICAgIHNlbGVjdE5vZGUuY2FsbCh0aGlzLCBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkb2N1bWVudFVSTCAmJiB0aGlzLl9sYXN0U2Vs
ZWN0ZWROb2RlUGF0aFNldHRpbmcudmFsdWUgJiYgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhT
ZXR0aW5nLnZhbHVlLnBhdGggJiYgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nLnZh
bHVlLnVybCA9PT0gZG9jdW1lbnRVUkwuaGFzaCkKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5h
Z2VyLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZCh0aGlzLl9sYXN0U2VsZWN0ZWROb2RlUGF0aFNl
dHRpbmcudmFsdWUucGF0aCwgc2VsZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIFdJLmRvbU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX2xh
c3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZy52YWx1ZS5wYXRoLCBzZWxlY3RMYXN0U2VsZWN0ZWRO
b2RlLmJpbmQodGhpcykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNh
bGwodGhpcyk7CiAgICAgfQpAQCAtNDQ1LDEwICs0NDUsMTAgQEAgV0kuRE9NVHJlZUNvbnRlbnRW
aWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAg
ICB7CiAgICAgICAgIHZhciBzZWxlY3RlZERPTU5vZGUgPSB0aGlzLl9kb21UcmVlT3V0bGluZS5z
ZWxlY3RlZERPTU5vZGUoKTsKICAgICAgICAgaWYgKHNlbGVjdGVkRE9NTm9kZSAmJiAhdGhpcy5f
ZG9udFNldExhc3RTZWxlY3RlZE5vZGVQYXRoKQotICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVj
dGVkTm9kZVBhdGhTZXR0aW5nLnZhbHVlID0ge3VybDogV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lLnVybC5oYXNoLCBwYXRoOiBzZWxlY3RlZERPTU5vZGUucGF0aCgpfTsKKyAgICAg
ICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZy52YWx1ZSA9IHt1cmw6IFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51cmwuaGFzaCwgcGF0aDogc2VsZWN0ZWRET01Ob2Rl
LnBhdGgoKX07CiAKICAgICAgICAgaWYgKHNlbGVjdGVkRE9NTm9kZSkKLSAgICAgICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLnNldEluc3BlY3RlZE5vZGUoc2VsZWN0ZWRET01Ob2RlKTsKKyAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIuc2V0SW5zcGVjdGVkTm9kZShzZWxlY3RlZERPTU5vZGUpOwog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2
ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICB9CkBAIC01NzMsNyAr
NTczLDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgbGV0IG1lZGlhVHlwZSA9IFdJLnByaW50
U3R5bGVzRW5hYmxlZCA/ICJwcmludCIgOiAiIjsKICAgICAgICAgUGFnZUFnZW50LnNldEVtdWxh
dGVkTWVkaWEobWVkaWFUeXBlKTsKIAotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIubWVkaWFU
eXBlQ2hhbmdlZCgpOworICAgICAgICBXSS5jc3NNYW5hZ2VyLm1lZGlhVHlwZUNoYW5nZWQoKTsK
ICAgICB9CiAKICAgICBfdG9nZ2xlUHJpbnRTdHlsZXMoZXZlbnQpCkBAIC02MTgsNyArNjE4LDcg
QEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVJZGVudGlm
aWVycy5sZW5ndGggPT09IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyk7CiAKICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUlkZW50aWZpZXJzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQo
bm9kZUlkZW50aWZpZXJzW2ldKTsKKyAgICAgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRv
bU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZGVudGlmaWVyc1tpXSk7CiAgICAgICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZG9tTm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFkb21Ob2RlKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBXSS5ET01U
cmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogCiAgICAgX3VwZGF0ZUJyZWFrcG9pbnRTdGF0dXMobm9kZUlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChu
b2RlSWRlbnRpZmllcik7CisgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2Rl
Rm9ySWQobm9kZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcwppbmRleCBkNWEwYWJmZGY1NzlmMjIx
MWE1MDg5NjJmNGY0ZWI1Yjc1ZmRhYzAwLi5iOGNkYTViMTAwYTBkNzJlMzVkMTE4ZGFhOWRjMmVh
NTA2NWZjNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzCkBAIC01MCwxMyArNTAsMTMgQEAg
V0kuRE9NVHJlZURhdGFHcmlkID0gY2xhc3MgRE9NVHJlZURhdGFHcmlkIGV4dGVuZHMgV0kuRGF0
YUdyaWQKICAgICAgICAgaWYgKCFncmlkTm9kZSB8fCB0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVt
ZW50ID09PSBncmlkTm9kZS5kb21Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50ID0gZ3JpZE5vZGUuZG9tTm9kZTsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShncmlkTm9kZS5kb21Ob2RlLmlkKTsK
KyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGdyaWROb2RlLmRvbU5vZGUu
aWQpOwogICAgIH0KIAogICAgIF9vbm1vdXNlb3V0KGV2ZW50KSB7CiAgICAgICAgIGlmICghdGhp
cy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgICAgICB0aGlzLl9wcmV2aW91c0hv
dmVyZWRFbGVtZW50ID0gbnVsbDsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRl
eCBjMTlkMjlhMmQyNjQ0ODY5ZTBkYmViYzFjNTFjNWI4ZWNkZmFhYWQ1Li4zMTA5NTc2MmEzMjU5
MjE1MjA3YzRiNjdmYWJkNTZlZjliMGQ0YzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAt
NjI0LDcgKzYyNCw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnN1cHByZXNz
UmV2ZWFsQW5kU2VsZWN0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RE
T01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIHNlbGVjdGVkQnlVc2VyKTsKICAgICAgICAg
aWYgKHNlbGVjdGVkQnlVc2VyKQotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlnaGxp
Z2h0RE9NTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkKTsKKyAgICAgICAgICAgIFdJLmRv
bU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkKTsKICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5zdXBwcmVzc1JldmVhbEFuZFNlbGVjdCA9IGZhbHNlOwogICAgIH0KQEAgLTcz
OSw3ICs3MzksNyBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4
dGVuZHMgV0kuVHJlZUVsZW1lbnQKIAogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmIGV2ZW50
LnRhcmdldC50YWdOYW1lID09PSAiQSIpIHsKICAgICAgICAgICAgIGxldCB1cmwgPSBldmVudC50
YXJnZXQuaHJlZjsKLSAgICAgICAgICAgIGxldCBmcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmZyYW1lRm9ySWRlbnRpZmllcihub2RlLmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgICAg
ICBsZXQgZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIobm9kZS5m
cmFtZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0Zv
clVSTChjb250ZXh0TWVudSwgdXJsLCB7ZnJhbWV9KTsKICAgICAgICAgfQogCkBAIC03NzksMTEg
Kzc3OSwxMSBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVu
ZHMgV0kuVHJlZUVsZW1lbnQKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKIAotICAgICAgICBpZiAoV0kuY3NzU3R5bGVNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3Nl
cygpKSB7CisgICAgICAgIGlmIChXSS5jc3NNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3Nlcygp
KSB7CiAgICAgICAgICAgICBsZXQgcHNldWRvU3ViTWVudSA9IGNvbnRleHRNZW51LmFwcGVuZFN1
Yk1lbnVJdGVtKFdJLlVJU3RyaW5nKCJGb3JjZWQgUHNldWRvLUNsYXNzZXMiKSk7CiAKICAgICAg
ICAgICAgIGxldCBlbmFibGVkUHNldWRvQ2xhc3NlcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
ZW5hYmxlZFBzZXVkb0NsYXNzZXM7Ci0gICAgICAgICAgICBXSS5DU1NTdHlsZU1hbmFnZXIuRm9y
Y2VhYmxlUHNldWRvQ2xhc3Nlcy5mb3JFYWNoKChwc2V1ZG9DbGFzcykgPT4geworICAgICAgICAg
ICAgV0kuQ1NTTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9DbGFzc2VzLmZvckVhY2goKHBzZXVkb0Ns
YXNzKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGVuYWJsZWQgPSBlbmFibGVkUHNldWRvQ2xh
c3Nlcy5pbmNsdWRlcyhwc2V1ZG9DbGFzcyk7CiAgICAgICAgICAgICAgICAgcHNldWRvU3ViTWVu
dS5hcHBlbmRDaGVja2JveEl0ZW0ocHNldWRvQ2xhc3MuY2FwaXRhbGl6ZSgpLCAoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Quc2V0UHNldWRvQ2xhc3NF
bmFibGVkKHBzZXVkb0NsYXNzLCAhZW5hYmxlZCk7CkBAIC0xMTc1LDcgKzExNzUsNyBAQCBXSS5E
T01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1l
bnQKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHZhciBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAg
ICAgICB2YXIgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAKICAgICAg
ICAgICAgIC8vIFNlbGVjdCBpdCBhbmQgZXhwYW5kIGlmIG5lY2Vzc2FyeS4gV2UgZm9yY2UgdHJl
ZSB1cGRhdGUgc28gdGhhdCBpdCBwcm9jZXNzZXMgZG9tIGV2ZW50cyBhbmQgaXMgdXAgdG8gZGF0
ZS4KICAgICAgICAgICAgIHRyZWVPdXRsaW5lLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMKaW5kZXggMWMxNjFkNTJk
ZmQ5NGI3YTI4NGM3ODJmNmUwMDU5ZjkzODljOGZmNC4uZjMyMzkwNzQzZDdkN2E4ZWY4MDhhNTZi
Y2EzMDQyMzY0NDQ5NDNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENv
bXBvbmVudC5qcwpAQCAtMTI0LDEyICsxMjQsMTIgQEAgV0kuRE9NVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV0kuSGkK
ICAgICBtb3VzZU92ZXIoKQogICAgIHsKICAgICAgICAgdmFyIG5vZGVJZCA9IHRoaXMuX2RvbVRy
ZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LmlkOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxp
Z2h0RE9NTm9kZShub2RlSWQpOwogICAgIH0KIAogICAgIG1vdXNlT3V0KCkKICAgICB7Ci0gICAg
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIFdJ
LmRvbU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICB9CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0
bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVPdXRsaW5lLmpzCmluZGV4IGI2MjdlMGNkOTRkMjIwYmJkMDdjNzY2OGQ0NTUwYmFmMDkxZDIz
Y2IuLjEwODJhOWI4MTM1ODIxN2E2YWZhZWU2ODMxNmE2NDVjZDMxNTNlNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVPdXRsaW5lLmpzCkBAIC0zMjIsNyArMzIyLDcgQEAgV0kuRE9NVHJlZU91dGxpbmUgPSBjbGFz
cyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgICAgICAgICAg
ZWxlbWVudC5fY3JlYXRlVG9vbHRpcEZvck5vZGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdJ
LmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUoZWxlbWVudCA/IGVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QuaWQgOiAwKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01O
b2RlKGVsZW1lbnQgPyBlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LmlkIDogMCk7CiAgICAgfQog
CiAgICAgX29ubW91c2VvdXQoZXZlbnQpCkBAIC0zMzYsNyArMzM2LDcgQEAgV0kuRE9NVHJlZU91
dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAg
ICAgICAgICB0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50ID0gbnVsbDsKICAgICAgICAgfQog
Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAg
ICAgIFdJLmRvbU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICB9CiAKICAgICBf
b25kcmFnc3RhcnQoZXZlbnQpCkBAIC0zNTUsNyArMzU1LDcgQEAgV0kuRE9NVHJlZU91dGxpbmUg
PSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgIGV2
ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNvcHlNb3ZlIjsKICAgICAgICAgdGhp
cy5fbm9kZUJlaW5nRHJhZ2dlZCA9IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0OwogCi0g
ICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgICAg
IFdJLmRvbU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC00MjMsNyArNDIzLDcgQEAgV0kuRE9NVHJlZU91dGxpbmUgPSBjbGFz
cyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7Ci0gICAg
ICAgICAgICB2YXIgbmV3Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChuZXdOb2Rl
SWQpOworICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChu
ZXdOb2RlSWQpOwogICAgICAgICAgICAgaWYgKG5ld05vZGUpCiAgICAgICAgICAgICAgICAgdGhp
cy5zZWxlY3RET01Ob2RlKG5ld05vZGUsIHRydWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRh
dGVyLmpzCmluZGV4IGZiZDA1ZjY2ZmNkZWU5NTY0ZDhlMzYyMzM5YmIwNWMxMmVlMzcyY2EuLmE1
NDYwMjY2ZTM1ZDI4MWUzNjgxNjFiYWVlNjI4ZWZmMmNmMTlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRh
dGVyLmpzCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogV0kuRE9NVHJlZVVwZGF0ZXIgPSBmdW5jdGlv
bih0cmVlT3V0bGluZSkKIHsKLSAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUluc2VydGVk
LCB0aGlzKTsKLSAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7Ci0g
ICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5F
dmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwot
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwot
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQs
IHRoaXMpOwotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLCB0aGlzLl9kb2N1bWVudFVwZGF0ZWQsIHRo
aXMpOwotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1h
bmFnZXIuRXZlbnQuQ2hpbGROb2RlQ291bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVw
ZGF0ZWQsIHRoaXMpOworICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01N
YW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUluc2VydGVkLCB0aGlzKTsKKyAg
ICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5Ob2Rl
UmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOworICAgIFdJLmRvbU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlz
Ll9hdHRyaWJ1dGVzVXBkYXRlZCwgdGhpcyk7CisgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmli
dXRlc1VwZGF0ZWQsIHRoaXMpOworICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01NYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fY2hhcmFjdGVy
RGF0YU1vZGlmaWVkLCB0aGlzKTsKKyAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX2RvY3VtZW50VXBkYXRl
ZCwgdGhpcyk7CisgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFn
ZXIuRXZlbnQuQ2hpbGROb2RlQ291bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVwZGF0
ZWQsIHRoaXMpOwogCiAgICAgdGhpcy5fdHJlZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKIApAQCAt
NTMsNyArNTMsNyBAQCBXSS5ET01UcmVlVXBkYXRlciA9IGZ1bmN0aW9uKHRyZWVPdXRsaW5lKQog
V0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogICAgIGNsb3NlOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgfSwKIAogICAgIF9kb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFdJLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5o
aWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogCiAgICAgICAgIHRoaXMuX3JlY2VudGx5SW5zZXJ0ZWRO
b2Rlcy5jbGVhcigpOwogICAgICAgICB0aGlzLl9yZWNlbnRseURlbGV0ZWROb2Rlcy5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGVidWdnZXJTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwppbmRleCBkYzBhM2ZmMGM4YzI0NzAx
NDg2ODY0NDE2MTg3YmU0NDk2MzlmM2M4Li4yODQ1OTkwYTRiM2VmODQ2NjY2MTA2NmE1ODU1NzUw
MmE3NDNlMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtMjA3LDgg
KzIwNyw4IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAgICAgV0kuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2FnZS5hZGRFdmVudExpc3RlbmVyKFdJLklz
c3VlTWVzc2FnZS5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURl
YnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0ku
aXNzdWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuSXNzdWVNYW5hZ2VyLkV2ZW50Lklzc3Vl
V2FzQWRkZWQsIHRoaXMuX2hhbmRsZUlzc3VlQWRkZWQsIHRoaXMpOwotICAgICAgICBXSS5pc3N1
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwg
dGhpcy5faGFuZGxlSXNzdWVzQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuSXNzdWVBZGRlZCwg
dGhpcy5faGFuZGxlSXNzdWVBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5f
aGFuZGxlSXNzdWVzQ2xlYXJlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50
KTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJN
YW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpOwpAQCAtMjE3LDggKzIxNyw4IEBA
IFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgIGlmIChEZWJ1Z2dlckFnZW50LnNldFBh
dXNlT25Bc3NlcnRpb25zICYmIFdJLnNldHRpbmdzLnNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQudmFsdWUpCiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2lu
dChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50KTsKIAotICAg
ICAgICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKQotICAgICAgICAgICAg
dGhpcy5fYWRkUmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUpOworICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
KQorICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogCiAgICAgICAgIGZvciAodmFyIHNjcmlwdCBvZiBX
SS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMpCiAgICAgICAgICAgICB0
aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBXSS5EZWJ1Z2dlclNp
ZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdh
dGlvblNpZGViYQogICAgICAgICAgICAgZm9yIChsZXQgZG9tQnJlYWtwb2ludCBvZiBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuZG9tQnJlYWtwb2ludHMpCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRk
QnJlYWtwb2ludChkb21CcmVha3BvaW50KTsKIAotICAgICAgICAgICAgZm9yIChsZXQgZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQgb2YgV0kuZG9tVHJlZU1hbmFnZXIuZXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnRzKQorICAgICAgICAgICAgZm9yIChsZXQgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQgb2Yg
V0kuZG9tTWFuYWdlci5ldmVudExpc3RlbmVyQnJlYWtwb2ludHMpCiAgICAgICAgICAgICAgICAg
dGhpcy5fYWRkQnJlYWtwb2ludChldmVudExpc3RlbmVyQnJlYWtwb2ludCk7CiAKICAgICAgICAg
ICAgIGZvciAobGV0IHhockJyZWFrcG9pbnRzIG9mIFdJLmRvbURlYnVnZ2VyTWFuYWdlci54aHJC
cmVha3BvaW50cykKQEAgLTI3Myw4ICsyNzMsOCBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9
IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQog
CiAgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewotICAgICAgICBpZiAoV0kuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICBsZXQgbWFpblRyZWVF
bGVtZW50ID0gdGhpcy5fc2NyaXB0c0NvbnRlbnRUcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQo
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZSk7CisgICAgICAg
IGlmIChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpIHsKKyAgICAgICAgICAgIGxldCBtYWlu
VHJlZUVsZW1lbnQgPSB0aGlzLl9zY3JpcHRzQ29udGVudFRyZWVPdXRsaW5lLmZpbmRUcmVlRWxl
bWVudChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlKTsKICAgICAgICAg
ICAgIGlmIChtYWluVHJlZUVsZW1lbnQgJiYgdGhpcy5zaG93RGVmYXVsdENvbnRlbnRWaWV3Rm9y
VHJlZUVsZW1lbnQobWFpblRyZWVFbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNs
YXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogCiAg
ICAgICAgICAgICBjb25zdHJ1Y3RvciA9IFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudDsKIAot
ICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoYnJl
YWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcik7CisgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJ
LmRvbU1hbmFnZXIubm9kZUZvcklkKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpOwogICAg
ICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQgPSBnZXRET01Ob2RlVHJlZUVsZW1lbnQoZG9tTm9k
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJl
YWtwb2ludCkgewogICAgICAgICAgICAgY29uc3RydWN0b3IgPSBXSS5FdmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudDsKQEAgLTU0MCw3ICs1NDAsNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9
IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQog
CiAgICAgX2FkZElzc3Vlc0ZvclNvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICB7Ci0gICAgICAg
IHZhciBpc3N1ZXMgPSBXSS5pc3N1ZU1hbmFnZXIuaXNzdWVzRm9yU291cmNlQ29kZShzb3VyY2VD
b2RlKTsKKyAgICAgICAgdmFyIGlzc3VlcyA9IFdJLmNvbnNvbGVNYW5hZ2VyLmlzc3Vlc0ZvclNv
dXJjZUNvZGUoc291cmNlQ29kZSk7CiAgICAgICAgIGZvciAodmFyIGlzc3VlIG9mIGlzc3VlcykK
ICAgICAgICAgICAgIHRoaXMuX2FkZElzc3VlKGlzc3VlKTsKICAgICB9CkBAIC03MDcsNyArNzA3
LDcgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5l
bCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgICAgICB0aGlzLl9zY3JpcHRzQ29u
dGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgdGhpcy5fYWRkUmVz
b3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUpOworICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZXNSZWN1cnNpdmVseUZvckZyYW1lKFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZSk7CiAgICAgfQogCiAgICAgX2JyZWFrcG9pbnRBZGRlZChl
dmVudCkKQEAgLTEwOTksNyArMTA5OSw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xh
c3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydGVkKTsK
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhdXNlRGF0YSwgIkV4cGVjdGVkIERPTSBicmVh
a3BvaW50IGRhdGEsIGJ1dCBmb3VuZCBub25lLiIpOwogICAgICAgICAgICAgaWYgKHBhdXNlRGF0
YSAmJiBwYXVzZURhdGEubm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQocGF1c2VEYXRhLm5vZGVJZCk7CisgICAgICAgICAg
ICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChwYXVzZURhdGEubm9k
ZUlkKTsKICAgICAgICAgICAgICAgICBsZXQgZG9tQnJlYWtwb2ludHMgPSBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuZG9tQnJlYWtwb2ludHNGb3JOb2RlKGRvbU5vZGUpOwogICAgICAgICAgICAgICAg
IGxldCBkb21CcmVha3BvaW50OwogICAgICAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQg
b2YgZG9tQnJlYWtwb2ludHMpIHsKQEAgLTExMzcsNyArMTEzNyw3IEBAIFdJLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0
aW9uU2lkZWJhCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZUlkKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gV0ku
ZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICAgICAgICAgIGxl
dCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQobm9kZSwgIk1pc3Npbmcgbm9kZSBmb3IgaWQuIiwgbm9kZUlk
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwg
PSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEK
IAogICAgICAgICAgICAgdmFyIGV2ZW50QnJlYWtwb2ludCA9IG51bGw7CiAgICAgICAgICAgICBp
ZiAocGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCkKLSAgICAgICAgICAgICAgICBldmVudEJyZWFr
cG9pbnQgPSBXSS5kb21UcmVlTWFuYWdlci5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcklkKHBh
dXNlRGF0YS5ldmVudExpc3RlbmVySWQpOworICAgICAgICAgICAgICAgIGV2ZW50QnJlYWtwb2lu
dCA9IFdJLmRvbU1hbmFnZXIuYnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXJJZChwYXVzZURhdGEu
ZXZlbnRMaXN0ZW5lcklkKTsKICAgICAgICAgICAgIGlmICghZXZlbnRCcmVha3BvaW50KQogICAg
ICAgICAgICAgICAgIGV2ZW50QnJlYWtwb2ludCA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5ldmVu
dEJyZWFrcG9pbnRGb3JUeXBlQW5kRXZlbnROYW1lKFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCBwYXVzZURhdGEuZXZlbnROYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29u
dGVudFZpZXcuanMKaW5kZXggNTM5NjI5YjhlNmJmYWIxZDJlODZjNTQwZjYwODYyNzkyMzUzNjg2
Mi4uOTM5MTE4NjMzYzk3ODBlM2I5OTVjYjU4NDM0ZjZlZmYzZjFjNDU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0zNSw3ICszNSw3IEBAIFdJLkVsZW1lbnRz
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBFbGVtZW50c1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudEJyb3dzCiAKICAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAiZWxlbWVudHMiLCAi
ZWxlbWVudHMiLCB0YWJCYXJJdGVtLCBudWxsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0
b3JzLCB0cnVlKTsKIAotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwg
dGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRD
aGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLkZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KIApAQCAtOTksNyArOTks
NyBAQCBXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgRWxlbWVudHNUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHsKICAgICAgICAgc3VwZXIuY2xvc2Vk
KCk7CiAKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAKQEAgLTEwOSw3ICsxMDksNyBA
QCBXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgRWxlbWVudHNUYWJDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRCcm93cwogICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50QnJv
d3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwogCi0gICAg
ICAgIHZhciBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7Cisg
ICAgICAgIHZhciBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAg
ICAgIGlmIChtYWluRnJhbWUpCiAgICAgICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dD
b250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KG1haW5GcmFtZS5kb21UcmVlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9F
dmVudEJyZWFrcG9pbnRQb3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50UG9wb3Zlci5qcwppbmRleCBhZThiODdlNmRiYWY1
NDRiZmM5ZWMwMmM4MzVlNGIxY2U0NjA0Mzk3Li4zNWNlOWFjNzUyNDQ1MTdlNGRjNTdmMDE0ZjFl
NWE1YTI3ZDU1MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRQb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFBvcG92ZXIuanMKQEAg
LTEwMiw3ICsxMDIsNyBAQCBXSS5FdmVudEJyZWFrcG9pbnRQb3BvdmVyID0gY2xhc3MgRXZlbnRC
cmVha3BvaW50UG9wb3ZlciBleHRlbmRzIFdJLlBvcG92ZXIKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CiAgICAgICAgIHRoaXMuX2RvbUV2ZW50TmFtZUlucHV0RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJpbnB1dCIsIChldmVudCkgPT4gewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIuZ2V0U3VwcG9ydGVkRXZlbnROYW1lcygpCisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLmdl
dFN1cHBvcnRlZEV2ZW50TmFtZXMoKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50TmFtZXMpID0+
IHsKICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q29tcGxldGlvbnMgPSBbXTsKICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBldmVudE5hbWUgb2YgZXZlbnROYW1lcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCA3YzVhYTU2YmY0NjZkYWEy
M2M5ZTMzMGNlM2Y3MWRhOTk3NjgxOGVmLi5iNWE3ZGQxYTY1YTczOWJjMzc0Njg0ZTM1M2NlNzRl
NzZmMTNjMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cwpAQCAtODQsNyArODQsNyBAQCBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNz
IEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZQogICAgICAgICB0aGlz
Ll9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwogCiAgICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5y
ZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmV2
ZW50TGlzdGVuZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNCw3ICsxMTQsNyBAQCBXSS5FdmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
R2VuZQogCiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0
ZSBCcmVha3BvaW50IiksICgpID0+IHsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50
TGlzdGVuZXIpCi0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVtb3ZlQnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKTsKKyAgICAgICAg
ICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGJy
ZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50
KTsKICAgICAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgV0kuRXZlbnRCcmVha3BvaW50VHJl
ZUVsZW1lbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdl
bmUKICAgICBfdG9nZ2xlQnJlYWtwb2ludCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmV2ZW50TGlzdGVuZXIpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5yZW1vdmVCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmV2ZW50TGlzdGVu
ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVu
dExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4IDBhYjIwY2IzNTRlMTc3MjE2MWFlZTUwMTI1
OWI0ZGY5OTE2N2ZiMTAuLjE4MWQwNTlkZmQ0YTJiODA4NDNhNzM3MTU0NTNmNzA1ZjgyMWE4NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2
ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcwpAQCAtMTMwLDcg
KzEzMCw3IEBAIFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBjbGFzcyBFdmVudExpc3Rl
bmVyU2VjdGlvbkdyb3VwIGV4dGVuZHMgV0kuRGV0YWlsCiAKICAgICAgICAgdG9nZ2xlRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIHRo
aXMuX2V2ZW50TGlzdGVuZXIuZGlzYWJsZWQgPSAhdG9nZ2xlRWxlbWVudC5jaGVja2VkOwotICAg
ICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKHRoaXMu
X2V2ZW50TGlzdGVuZXIsIHRoaXMuX2V2ZW50TGlzdGVuZXIuZGlzYWJsZWQpOworICAgICAgICAg
ICAgV0kuZG9tTWFuYWdlci5zZXRFdmVudExpc3RlbmVyRGlzYWJsZWQodGhpcy5fZXZlbnRMaXN0
ZW5lciwgdGhpcy5fZXZlbnRMaXN0ZW5lci5kaXNhYmxlZCk7CiAgICAgICAgICAgICB1cGRhdGVU
aXRsZSgpOwogICAgICAgICB9KTsKIApAQCAtMTYxLDkgKzE2MSw5IEBAIFdJLkV2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAgPSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwIGV4dGVuZHMg
V0kuRGV0YWlsCiAgICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFu
Z2UiLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXIuaGFzQnJl
YWtwb2ludCA9ICEhY2hlY2tib3hFbGVtZW50LmNoZWNrZWQ7CiAgICAgICAgICAgICBpZiAodGhp
cy5fZXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50KQotICAgICAgICAgICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMuX2V2ZW50TGlzdGVu
ZXIpOworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuc2V0QnJlYWtwb2ludEZvckV2ZW50
TGlzdGVuZXIodGhpcy5fZXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIodGhpcy5fZXZlbnRMaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5y
ZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudExpc3RlbmVyKTsKIAog
ICAgICAgICAgICAgdXBkYXRlVGl0bGUoKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb3JtYXR0ZWRWYWx1ZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zvcm1hdHRlZFZhbHVl
LmpzCmluZGV4IDE5YzdlZmJlMDNjYjJlZDM4ZWJhODcyMTQwNzcxYWEyMmU1MGVhNjIuLmQzZWVj
OTViZDhhZGQ2ODY1ZjUwZjA4ZGY5MzZjYzkzMTIyYTM5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zvcm1hdHRlZFZhbHVlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zvcm1hdHRlZFZhbHVl
LmpzCkBAIC03OCw3ICs3OCw3IEBAIFdJLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JO
b2RlID0gZnVuY3Rpb24ob2JqZWN0KQogCiAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBX
SS5ET01UcmVlT3V0bGluZTsKICAgICAgICAgdHJlZU91dGxpbmUuc2V0VmlzaWJsZSh0cnVlKTsK
LSAgICAgICAgdHJlZU91dGxpbmUucm9vdERPTU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2Rl
Rm9ySWQobm9kZUlkKTsKKyAgICAgICAgdHJlZU91dGxpbmUucm9vdERPTU5vZGUgPSBXSS5kb21N
YW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICBpZiAoIXRyZWVPdXRsaW5lLmNoaWxk
cmVuWzBdLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgdHJlZU91dGxpbmUuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJzaW5nbGUtbm9kZSIpOwogICAgICAgICBzcGFuLmFwcGVuZENoaWxkKHRyZWVP
dXRsaW5lLmVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXggNjQwYjhhZGY0
NWEwM2ExMjQwNDI0OTkxNWY2MjkwODNjZjMxMzNiYy4uOTI3ZmYwYTczZTEyOWM5M2M5YWQ3MWZi
ODRkYjhhYjBiMTVhNTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xMTUsMTIg
KzExNSwxMiBAQCBXSS5GcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBl
eHRlbmRzIFdJLlJlc291cmNlVHJlZUVsZW1lbnQKICAgICAgICAgLy8gSW1tZWRpYXRlIHN1cGVy
Y2xhc3NlcyBhcmUgc2tpcHBlZCwgc2luY2UgRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNl
TWFwUmVzb3VyY2VzLgogICAgICAgICBXSS5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
YXR0YWNoLmNhbGwodGhpcyk7CiAKLSAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5f
c3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNo
ZWV0QWRkZWQsIHRoaXMpOwogICAgIH0KIAogICAgIG9uZGV0YWNoKCkKICAgICB7Ci0gICAgICAg
IFdJLmNzc1N0eWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdl
ci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRBZGRlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLmNzc01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2
ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKIAogICAg
ICAgICBzdXBlci5vbmRldGFjaCgpOwogICAgIH0KQEAgLTE3OSw3ICsxNzksNyBAQCBXSS5GcmFt
ZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdJLlJlc291cmNl
VHJlZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGRvTm90Q3JlYXRlSWZNaXNz
aW5nID0gdHJ1ZTsKLSAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JGcmFtZSh0aGlzLl9mcmFtZSwgdGhpcy5hZGRSZXByZXNlbnRlZE9iamVj
dFRvTmV3Q2hpbGRRdWV1ZS5iaW5kKHRoaXMpLCBkb05vdENyZWF0ZUlmTWlzc2luZyk7CisgICAg
ICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKHRo
aXMuX2ZyYW1lLCB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlLmJpbmQo
dGhpcyksIGRvTm90Q3JlYXRlSWZNaXNzaW5nKTsKICAgICB9CiAKICAgICBvbmV4cGFuZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5l
cmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRl
eCA5NzA4ZWM1Yjg3ZGQwYTQxMjUyZTZjOGIzMTlhZTQ4NTA1MmQyODI1Li4yNjY3N2U1YzM3ZGUy
OGI3MDllNzQ5ODFlN2FlYjE1MGJmM2E2Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVy
YWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTg0LDcgKzg0LDcgQEAgV0kuR2VuZXJh
bFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIEdlbmVyYWxTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW4KIAogICAgIHN0eWxlRGV0YWlsc1BhbmVsRm9jdXNMYXN0UHNldWRvQ2xh
c3NDaGVja2JveChzdHlsZURldGFpbHNQYW5lbCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2ZvcmNl
ZFBzZXVkb0NsYXNzQ2hlY2tib3hlc1tXSS5DU1NTdHlsZU1hbmFnZXIuRm9yY2VhYmxlUHNldWRv
Q2xhc3Nlcy5sYXN0VmFsdWVdLmZvY3VzKCk7CisgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0Ns
YXNzQ2hlY2tib3hlc1tXSS5DU1NNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXMubGFzdFZh
bHVlXS5mb2N1cygpOwogICAgIH0KIAogICAgIHN0eWxlRGV0YWlsc1BhbmVsRm9jdXNGaWx0ZXJC
YXIoc3R5bGVEZXRhaWxzUGFuZWwpCkBAIC0xMzEsMTMgKzEzMSwxMyBAQCBXSS5HZW5lcmFsU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCBleHRlbgogCiAgICAgaW5pdGlhbExheW91dCgpCiAgICAgewotICAgICAgICBpZiAoV0ku
Y3NzU3R5bGVNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3NlcygpKSB7CisgICAgICAgIGlmIChX
SS5jc3NNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3NlcygpKSB7CiAgICAgICAgICAgICB0aGlz
Ll9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgICAgICAgICAgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIuY2xhc3NO
YW1lID0gInBzZXVkby1jbGFzc2VzIjsKIAogICAgICAgICAgICAgbGV0IGdyb3VwRWxlbWVudCA9
IG51bGw7CiAKLSAgICAgICAgICAgIFdJLkNTU1N0eWxlTWFuYWdlci5Gb3JjZWFibGVQc2V1ZG9D
bGFzc2VzLmZvckVhY2goZnVuY3Rpb24ocHNldWRvQ2xhc3MpIHsKKyAgICAgICAgICAgIFdJLkNT
U01hbmFnZXIuRm9yY2VhYmxlUHNldWRvQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKHBzZXVkb0Ns
YXNzKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbG9jYWxpemUgdGhlIGxhYmVsIHNp
bmNlIGl0IGlzIGEgQ1NTIHBzZXVkby1jbGFzcyBmcm9tIHRoZSBDU1Mgc3RhbmRhcmQuCiAgICAg
ICAgICAgICAgICAgbGV0IGxhYmVsID0gcHNldWRvQ2xhc3MuY2FwaXRhbGl6ZSgpOwogCkBAIC0x
OTcsOCArMTk3LDggQEAgV0kuR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNz
IEdlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW4KICAgICAgICAgdGhpcy5fYWRk
Q2xhc3NJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsIHRoaXMuX2FkZENsYXNzSW5w
dXRLZXlQcmVzc2VkLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9hZGRDbGFzc0lucHV0LmFk
ZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9hZGRDbGFzc0lucHV0Qmx1ci5iaW5kKHRoaXMp
KTsKIAotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5DU1NT
dHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWRP
clJlbW92ZWQsIHRoaXMpOwotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQsIHRoaXMuX3N0
eWxlU2hlZXRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5f
c3R5bGVTaGVldEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQsIHRo
aXMuX3N0eWxlU2hlZXRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMu
X2NsYXNzTGlzdENvbnRhaW5lclRvZ2dsZWRTZXR0aW5nLnZhbHVlKQogICAgICAgICAgICAgdGhp
cy5fY2xhc3NUb2dnbGVCdXR0b25DbGlja2VkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgV0kuR2Vu
ZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIEdlbmVyYWxTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW4KIAogICAgIGdldCBfaW5pdGlhbFNjcm9sbE9mZnNldCgpCiAgICAg
ewotICAgICAgICBpZiAoIVdJLmNzc1N0eWxlTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMo
KSkKKyAgICAgICAgaWYgKCFXSS5jc3NNYW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3NlcygpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiB0aGlzLmRvbU5vZGUgJiYgdGhp
cy5kb21Ob2RlLmVuYWJsZWRQc2V1ZG9DbGFzc2VzLmxlbmd0aCA/IDAgOiBXSS5HZW5lcmFsU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldDsK
ICAgICB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgV0kuR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCA9IGNsYXNzIEdlbmVyYWxTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW4KICAgICAg
ICAgaWYgKGV2ZW50LmtleSAhPT0gIlRhYiIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgbGV0IHBzZXVkb0NsYXNzZXMgPSBXSS5DU1NTdHlsZU1hbmFnZXIuRm9yY2VhYmxlUHNldWRv
Q2xhc3NlczsKKyAgICAgICAgbGV0IHBzZXVkb0NsYXNzZXMgPSBXSS5DU1NNYW5hZ2VyLkZvcmNl
YWJsZVBzZXVkb0NsYXNzZXM7CiAgICAgICAgIGxldCBpbmRleCA9IHBzZXVkb0NsYXNzZXMuaW5k
ZXhPZihwc2V1ZG9DbGFzcyk7CiAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkgewogICAgICAg
ICAgICAgaWYgKGluZGV4ID4gMCkgewpAQCAtNDM4LDcgKzQzOCw3IEBAIFdJLkdlbmVyYWxTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBHZW5lcmFsU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuCiAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVk
b0NsYXNzQ2hlY2tib3hlc1tXSS5DU1NTdHlsZU1hbmFnZXIuRm9yY2VhYmxlUHNldWRvQ2xhc3Nl
c1swXV0uZm9jdXMoKTsKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2ti
b3hlc1tXSS5DU1NNYW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXNbMF1dLmZvY3VzKCk7CiAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZp
ZXcuanMKaW5kZXggZjdiOTM0MjI0NWJjMTU2MTlkODU3MGVhZmQzZjdjZjc3NzA5YmVkOS4uODBi
ZDEwNTE4NDljYzkxNmNlNDYzZDQ2Nzk5ZGQ0ODNhZjI3OTNiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCkBAIC0x
NTgsNyArMTU4LDcgQEAgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9
IGNsYXNzIEluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGUKIAogICAgICAgICB0aGlzLl9m
ZXRjaGluZ01vcmVEYXRhID0gdHJ1ZTsKIAotICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5yZXF1
ZXN0SW5kZXhlZERhdGFiYXNlRGF0YSh0aGlzLl9vYmplY3RTdG9yZSwgdGhpcy5fb2JqZWN0U3Rv
cmVJbmRleCwgdGhpcy5fZW50cmllcy5sZW5ndGgsIDI1LCBwcm9jZXNzRW50cmllcy5iaW5kKHRo
aXMpKTsKKyAgICAgICAgV0kuaW5kZXhlZERCTWFuYWdlci5yZXF1ZXN0SW5kZXhlZERhdGFiYXNl
RGF0YSh0aGlzLl9vYmplY3RTdG9yZSwgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCwgdGhpcy5fZW50
cmllcy5sZW5ndGgsIDI1LCBwcm9jZXNzRW50cmllcy5iaW5kKHRoaXMpKTsKICAgICB9CiAKICAg
ICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQoKQpAQCAtMTY5LDcgKzE2OSw3IEBAIFdJLkluZGV4ZWRE
YXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZUNvbnRlCiAKICAgICBfY2xlYXJCdXR0b25DbGlja2VkKCkKICAgICB7Ci0gICAgICAg
IFdJLnN0b3JhZ2VNYW5hZ2VyLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fb2JqZWN0U3RvcmUpOwor
ICAgICAgICBXSS5pbmRleGVkREJNYW5hZ2VyLmNsZWFyT2JqZWN0U3RvcmUodGhpcy5fb2JqZWN0
U3RvcmUpOwogICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
YXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggZTZiZWM0ZWU3NTMzZjgwNjlhMGU4MjVl
ZDNkODU2ZGJmMDgxOTNkMi4uMTVhODg2MWRlYzE1OTdiMWZlMTZmMTc5NTA1OWRhNzZiMzUzZjFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMTYyLDkg
KzE2Miw5IEBAIFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWls
c1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNTCiAKICAgICAgICAgaWYgKG5vZGUubGF5
ZXIuaXNHZW5lcmF0ZWRDb250ZW50IHx8IG5vZGUubGF5ZXIuaXNSZWZsZWN0aW9uIHx8IG5vZGUu
bGF5ZXIuaXNBbm9ueW1vdXMpIHsKICAgICAgICAgICAgIGNvbnN0IHVzZVBhZ2VDb29yZGluYXRl
cyA9IHRydWU7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRSZWN0KG5v
ZGUubGF5ZXIuYm91bmRzLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgICAgICAgICAgV0kuZG9t
TWFuYWdlci5oaWdobGlnaHRSZWN0KG5vZGUubGF5ZXIuYm91bmRzLCB1c2VQYWdlQ29vcmRpbmF0
ZXMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZ2hs
aWdodERPTU5vZGUobm9kZS5sYXllci5ub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlKG5vZGUubGF5ZXIubm9kZUlkKTsKICAgICB9CiAKICAgICBfZGF0
YUdyaWRNb3VzZUxlYXZlKGV2ZW50KQpAQCAtMTc0LDcgKzE3NCw3IEBAIFdJLkxheWVyRGV0YWls
c1NpZGViYXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJ
LkRldGFpbHNTCiAKICAgICBfaGlkZURPTU5vZGVIaWdobGlnaHQoKQogICAgIHsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9t
TWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgICAgICB0aGlzLl9ob3ZlcmVkRGF0
YUdyaWROb2RlID0gbnVsbDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9k
ZS5qcwppbmRleCAwOGFmOTlhYmI5YWYyMjNlMzQwZjA5ZTgyOWY5YWU5MWVkZTk4ZmFiLi4zMTRh
NWM2YzExMTk1NGQ3YjlmZTJiZTQyMDM1ZjM5ZmE1OGQ5NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJU
cmVlRGF0YUdyaWROb2RlLmpzCkBAIC02MCw3ICs2MCw3IEBAIFdJLkxheWVyVHJlZURhdGFHcmlk
Tm9kZSA9IGNsYXNzIExheWVyVHJlZURhdGFHcmlkTm9kZSBleHRlbmRzIFdJLkRhdGFHcmlkTm9k
ZQogICAgIHsKICAgICAgICAgdGhpcy5fbGF5ZXIgPSBsYXllcjsKIAotICAgICAgICB2YXIgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChsYXllci5ub2RlSWQpOworICAgICAg
ICB2YXIgZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGxheWVyLm5vZGVJZCk7CiAK
ICAgICAgICAgdGhpcy5kYXRhID0gewogICAgICAgICAgICAgbmFtZTogZG9tTm9kZSA/IGRvbU5v
ZGUuZGlzcGxheU5hbWUgOiBXSS5VSVN0cmluZygiVW5rbm93biBub2RlIiksCkBAIC0xMzUsNyAr
MTM1LDcgQEAgV0kuTGF5ZXJUcmVlRGF0YUdyaWROb2RlID0gY2xhc3MgTGF5ZXJUcmVlRGF0YUdy
aWROb2RlIGV4dGVuZHMgV0kuRGF0YUdyaWROb2RlCiAKICAgICAgICAgdGhpcy5fb3V0bGV0cy5u
YW1lTGFiZWwudGV4dENvbnRlbnQgPSBkYXRhOwogCi0gICAgICAgIGlmIChXSS5kb21UcmVlTWFu
YWdlci5ub2RlRm9ySWQobGF5ZXIubm9kZUlkKSkKKyAgICAgICAgaWYgKFdJLmRvbU1hbmFnZXIu
bm9kZUZvcklkKGxheWVyLm5vZGVJZCkpCiAgICAgICAgICAgICBsYWJlbC5wYXJlbnROb2RlLmlu
c2VydEJlZm9yZSh0aGlzLl9vdXRsZXRzLmdvVG9CdXR0b24sIGxhYmVsLnBhcmVudE5vZGUuZmly
c3RDaGlsZCk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuX291dGxldHMuZ29Ub0J1dHRvbi5wYXJl
bnROb2RlKQogICAgICAgICAgICAgbGFiZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9v
dXRsZXRzLmdvVG9CdXR0b24pOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFdJLkxheWVyVHJlZURhdGFH
cmlkTm9kZSA9IGNsYXNzIExheWVyVHJlZURhdGFHcmlkTm9kZSBleHRlbmRzIFdJLkRhdGFHcmlk
Tm9kZQogCiAgICAgX2dvVG9BcnJvd1dhc0NsaWNrZWQoKQogICAgIHsKLSAgICAgICAgdmFyIGRv
bU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQodGhpcy5fbGF5ZXIubm9kZUlkKTsK
KyAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZCh0aGlzLl9sYXll
ci5ub2RlSWQpOwogICAgICAgICBXSS5zaG93TWFpbkZyYW1lRE9NVHJlZShkb21Ob2RlLCB7aWdu
b3JlU2VhcmNoVGFiOiB0cnVlfSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRy
ZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDdmMDlhOTU2NTJmZTZiMDkwMzczNDU3OGEz
N2YyMWUyZGE3OTUyZmIuLjMxMGE3OGYzMDQ4YTBiOTcwODJhYmRkYjkyOWNmN2M1NDdmZjVhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAt
MjAwLDcgKzIwMCw3IEBAIFdJLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBM
YXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuCiAgICAgICAgICAgICB0aGlz
Ll9oaWdobGlnaHRTZWxlY3RlZE5vZGUoKTsKICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVy
Rm9yU2VsZWN0ZWROb2RlKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAgICAgICAgICAgV0kuZG9tTWFu
YWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgICAgICAgICAgdGhpcy5faGlkZVBvcG92
ZXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBXSS5MYXllclRyZWVE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCBl
eHRlbmRzIFdJLgogCiAgICAgX2RhdGFHcmlkTG9zdEZvY3VzKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0ku
ZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgICAgICB0aGlzLl9oaWRlUG9w
b3ZlcigpOwogICAgIH0KIApAQCAtMjMxLDkgKzIzMSw5IEBAIFdJLkxheWVyVHJlZURldGFpbHNT
aWRlYmFyUGFuZWwgPSBjbGFzcyBMYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMg
V0kuCiAKICAgICAgICAgdmFyIGxheWVyID0gZGF0YUdyaWROb2RlLmxheWVyOwogICAgICAgICBp
ZiAobGF5ZXIuaXNHZW5lcmF0ZWRDb250ZW50IHx8IGxheWVyLmlzUmVmbGVjdGlvbiB8fCBsYXll
ci5pc0Fub255bW91cykKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodFJl
Y3QobGF5ZXIuYm91bmRzLCB0cnVlKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaGlnaGxp
Z2h0UmVjdChsYXllci5ib3VuZHMsIHRydWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGxheWVyLm5vZGVJZCk7CisgICAgICAg
ICAgICBXSS5kb21NYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUobGF5ZXIubm9kZUlkKTsKICAgICB9
CiAKICAgICBfdXBkYXRlRGlzcGxheVdpdGhMYXllcnMobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVy
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheWVyczNEQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCmluZGV4IDJiMDk4MThhNGI2NDYyYWNl
MjU4ZjFmNDUxZmIyZDdiMWJhM2M3MzkuLmM4MThmMGNiYWFjMmFhY2YwNjk4OTZkMGEyMzQ4YWQx
OTdlOGY2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwpAQCAtMTc4LDcgKzE3
OCw3IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKHRoaXMubGF5b3V0UmVhc29uID09
PSBXSS5WaWV3LkxheW91dFJlYXNvbi5SZXNpemUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CisgICAg
ICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CiAgICAgICAgICAg
ICBsZXQgZG9jdW1lbnRXYXNVcGRhdGVkID0gdGhpcy5fdXBkYXRlRG9jdW1lbnQobm9kZSk7CiAK
ICAgICAgICAgICAgIFdJLmxheWVyVHJlZU1hbmFnZXIubGF5ZXJzRm9yTm9kZShub2RlLCAobGF5
ZXJzKSA9PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzCmluZGV4IDNkOTc4NzU1ZjYxZDI2ZWI1YWI2
NWZkNTNhNDU5NGFjOGU2NzUzOTQuLmQyMzAyZmY0NDc2ZmNhYjA2YTQ4ZTZmYjdmNjE0OWJjZjkz
YzE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xvZ0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzCkBAIC04Niw3ICs4Niw3IEBAIFdJLkxvZ0Nv
bnRlbnRWaWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmlldwog
ICAgICAgICB0aGlzLl9zY29wZUJhci5hZGRFdmVudExpc3RlbmVyKFdJLlNjb3BlQmFyLkV2ZW50
LlNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlz
KTsKIAogICAgICAgICB0aGlzLl9oYXNOb25EZWZhdWx0TG9nQ2hhbm5lbE1lc3NhZ2UgPSBmYWxz
ZTsKLSAgICAgICAgaWYgKFdJLkxvZ01hbmFnZXIuc3VwcG9ydHNMb2dDaGFubmVscygpKSB7Cisg
ICAgICAgIGlmIChXSS5Db25zb2xlTWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCkpIHsKICAg
ICAgICAgICAgIGxldCBtZXNzYWdlQ2hhbm5lbEJhckl0ZW1zID0gWwogICAgICAgICAgICAgICAg
IG5ldyBXSS5TY29wZUJhckl0ZW0oV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLkFsbENoYW5uZWxz
LCBXSS5VSVN0cmluZygiQWxsIiksIHRydWUpLAogICAgICAgICAgICAgICAgIG5ldyBXSS5TY29w
ZUJhckl0ZW0oV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLk1lZGlhLCBXSS5VSVN0cmluZygiTWVk
aWEiKSwgZmFsc2UsICJtZWRpYSIpLApAQCAtMTExLDEwICsxMTEsMTAgQEAgV0kuTG9nQ29udGVu
dFZpZXcgPSBjbGFzcyBMb2dDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAg
ICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUi
LCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAg
ICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5T
ZXNzaW9uU3RhcnRlZCwgdGhpcy5fc2Vzc2lvblN0YXJ0ZWQsIHRoaXMpOwotICAgICAgICBXSS5s
b2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRk
ZWQsIHRoaXMuX21lc3NhZ2VBZGRlZCwgdGhpcyk7Ci0gICAgICAgIFdJLmxvZ01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENv
dW50VXBkYXRlZCwgdGhpcy5fcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlz
KTsKLSAgICAgICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIu
RXZlbnQuQ2xlYXJlZCwgdGhpcy5fbG9nQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNv
bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuU2Vzc2lv
blN0YXJ0ZWQsIHRoaXMuX3Nlc3Npb25TdGFydGVkLCB0aGlzKTsKKyAgICAgICAgV0kuY29uc29s
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdl
QWRkZWQsIHRoaXMuX21lc3NhZ2VBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNz
YWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlzLl9wcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVw
ZGF0ZWQsIHRoaXMpOworICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMp
OwogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcy5fcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7
CiAgICAgfQpAQCAtNDIyLDcgKzQyMiw3IEBAIFdJLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3MgTG9n
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBpZiAodGhpcy5fc3Rh
cnRlZFByb3Zpc2lvbmFsTG9hZCkKICAgICAgICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2Fn
ZXMucHVzaChtZXNzYWdlKTsKIAotICAgICAgICBpZiAoIXRoaXMuX2hhc05vbkRlZmF1bHRMb2dD
aGFubmVsTWVzc2FnZSAmJiBXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLmluY2x1ZGVz
KG1lc3NhZ2Uuc291cmNlKSkgeworICAgICAgICBpZiAoIXRoaXMuX2hhc05vbkRlZmF1bHRMb2dD
aGFubmVsTWVzc2FnZSAmJiBXSS5jb25zb2xlTWFuYWdlci5sb2dDaGFubmVsU291cmNlcy5pbmNs
dWRlcyhtZXNzYWdlLnNvdXJjZSkpIHsKICAgICAgICAgICAgIHRoaXMuX2hhc05vbkRlZmF1bHRM
b2dDaGFubmVsTWVzc2FnZSA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2Up
OwogICAgICAgICAgICAgdGhpcy5fc2NvcGVCYXIuaXRlbShXSS5Mb2dDb250ZW50Vmlldy5TY29w
ZXMuSW5mb3MpLmhpZGRlbiA9IGZhbHNlOwpAQCAtNzc0LDcgKzc3NCw3IEBAIFdJLkxvZ0NvbnRl
bnRWaWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAg
ICAgX2NsZWFyTG9nKCkKICAgICB7Ci0gICAgICAgIFdJLmxvZ01hbmFnZXIucmVxdWVzdENsZWFy
TWVzc2FnZXMoKTsKKyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVxdWVzdENsZWFyTWVzc2Fn
ZXMoKTsKICAgICB9CiAKICAgICBfZ2FyYmFnZUNvbGxlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGFibGVDb250ZW50Vmlldy5qcwppbmRleCAwNzBhNWJlOTRlMDQ4NmNlNWQwOTVkMmZjNjRiMzBi
OTQxNmFhYTg4Li5jNDMyZGJlODk3ODVhMDRmYTg4ZGU4YmY4ZWY5OGM3Yjg5OTE3ZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGFibGVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qcwpAQCAtMTMwLDcgKzEzMCw3IEBA
IFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCwgdGhpcy5fcmVzb3VyY2VM
b2FkaW5nRGlkRmluaXNoLCB0aGlzKTsKICAgICAgICAgV0kuUmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCwgdGhpcy5fcmVzb3VyY2VMb2Fk
aW5nRGlkRmFpbCwgdGhpcyk7CiAgICAgICAgIFdJLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V0kuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVRy
YW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZy
YW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKICAg
ICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLnBlcnNpc3RlbnROZXR3b3JrVGltZWxpbmUuYWRkRXZl
bnRMaXN0ZW5lcihXSS5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1Rp
bWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX25lZWRzSW5pdGlhbFBv
cHVsYXRlID0gdHJ1ZTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBXSS5OZXR3b3JrVGFibGVDb250ZW50
VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZQogICAgICAgICBXSS5SZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogICAgICAgICBXSS5yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZFNldHRpbmcucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuc2V0dGluZ3MuY2xlYXJO
ZXR3b3JrT25OYXZpZ2F0ZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwot
ICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZy
YW1lRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRo
aXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLnRpbWVsaW5lTWFuYWdl
ci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuVGltZWxp
bmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0
aGlzKTsKIAogICAgICAgICBzdXBlci5jbG9zZWQoKTsKQEAgLTkyNiw3ICs5MjYsNyBAQCBXSS5O
ZXR3b3JrVGFibGVDb250ZW50VmlldyA9IGNsYXNzIE5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZQogCiAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJn
ZXRzKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KQotICAgICAg
ICAgICAgICAgIHBvcHVsYXRlUmVzb3VyY2VzRm9yRnJhbWUoV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lKTsKKyAgICAgICAgICAgICAgICBwb3B1bGF0ZVJlc291cmNlc0ZvckZyYW1l
KFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgcG9wdWxhdGVSZXNvdXJjZXNGb3JUYXJnZXQodGFyZ2V0KTsKICAgICAgICAgfQpA
QCAtMTQyNiw3ICsxNDI2LDcgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBO
ZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgfQog
CiAgICAgICAgIFdJLkhBUkJ1aWxkZXIuYnVpbGRBcmNoaXZlKHJlc291cmNlcykudGhlbigoaGFy
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lOworICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgIGxldCBhcmNoaXZlTmFtZSA9IG1haW5GcmFtZS5t
YWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0IHx8IG1haW5GcmFtZS5tYWluUmVzb3VyY2Uu
ZGlzcGxheU5hbWUgfHwgIkFyY2hpdmUiOwogICAgICAgICAgICAgbGV0IHVybCA9ICJ3ZWItaW5z
cGVjdG9yOi8vLyIgKyBlbmNvZGVVUkkoYXJjaGl2ZU5hbWUpICsgIi5oYXIiOwogICAgICAgICAg
ICAgV0kuc2F2ZURhdGFUb0ZpbGUoewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVs
ZW1lbnQuanMKaW5kZXggNWY1OWVkOWY4ZTU0YzE5YzI5MDNjNDRmMGFkMzA2YWZlMTBlNDNlMC4u
N2Y5MWY0YzY0MDc5NmU4YjM5ZDE3MWY1ZjQ0OTcwZmUyNjAzZDhkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCkBAIC0yNDYsNyArMjQ2LDcgQEAgV0kuT2Jq
ZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5HZW5lcmEKICAgICAgICAgaWYgKHJlc29sdmVkVmFsdWUuc3VidHlwZSA9PT0g
Im5vZGUiKSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5n
KCJDb3B5IGFzIEhUTUwiKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRW
YWx1ZS5wdXNoTm9kZVRvRnJvbnRlbmQoZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpLmNvcHlOb2RlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCkuY29weU5v
ZGUoKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogCkBAIC0yNTksNyAr
MjU5LDcgQEAgV0kuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmEKIAogICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIERPTSBUcmVlIiksIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUucHVzaE5vZGVUb0Zyb250ZW5kKGZ1
bmN0aW9uKG5vZGVJZCkgewotICAgICAgICAgICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5p
bnNwZWN0RWxlbWVudChub2RlSWQpOworICAgICAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2Vy
Lmluc3BlY3RFbGVtZW50KG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKaW5kZXggNDE0
ZjRmMDg4YjU0MjgwMzdmYWQ2MmQ5NjRjNTg5ZTYzMTQ0YzZhYy4uYTBiZThkYjliY2U5N2RhNDM0
N2Q3Mzg3OTM5NTI3ZGIxMzhkMWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKQEAgLTM1Niw4
ICszNTYsOCBAQCBXSS5PYmplY3RUcmVlVmlldyA9IGNsYXNzIE9iamVjdFRyZWVWaWV3IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3RyYWNraW5nRW50cmllcyA9IHRydWU7CiAKICAg
ICAgICAgaWYgKHRoaXMuX2luQ29uc29sZSkgewotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fdW50cmFj
a1dlYWtFbnRyaWVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB0aGlzLl91bnRyYWNr
V2Vha0VudHJpZXMsIHRoaXMpOworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl91bnRyYWNr
V2Vha0VudHJpZXMsIHRoaXMpOworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5TZXNzaW9uU3RhcnRlZCwgdGhpcy5f
dW50cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzc0LDgg
KzM3NCw4IEBAIFdJLk9iamVjdFRyZWVWaWV3ID0gY2xhc3MgT2JqZWN0VHJlZVZpZXcgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fb2JqZWN0LnJlbGVhc2VXZWFrQ29sbGVjdGlvbkVu
dHJpZXMoKTsKIAogICAgICAgICBpZiAodGhpcy5faW5Db25zb2xlKSB7Ci0gICAgICAgICAgICBX
SS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5DbGVh
cmVkLCB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMsIHRoaXMpOwotICAgICAgICAgICAgV0kubG9n
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lvblN0
YXJ0ZWQsIHRoaXMuX3VudHJhY2tXZWFrRW50cmllcywgdGhpcyk7CisgICAgICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
LkNsZWFyZWQsIHRoaXMuX3VudHJhY2tXZWFrRW50cmllcywgdGhpcyk7CisgICAgICAgICAgICBX
SS5jb25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2
ZW50LlNlc3Npb25TdGFydGVkLCB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMsIHRoaXMpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgb25seSB0cmllcyB0byByZWxlYXNlIHdl
YWsgZW50cmllcyBpZiB0aGlzIG9iamVjdCB3YXMgYSBXZWFrTWFwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3BlblJlc291cmNlRGlhbG9n
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3BlblJlc291
cmNlRGlhbG9nLmpzCmluZGV4IGY2MzhmOGUwYzBmMmNiZTE2Mzc5MTAyMjI2OTc5ODE4YWQwYmFi
YmEuLjBkNzViZmMzY2U3YWNmYzg5YTliNmE3NjM3NTU0ZDlmMGZlNGQzNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09wZW5SZXNvdXJjZURp
YWxvZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
cGVuUmVzb3VyY2VEaWFsb2cuanMKQEAgLTEzNSw4ICsxMzUsOCBAQCBXSS5PcGVuUmVzb3VyY2VE
aWFsb2cgPSBjbGFzcyBPcGVuUmVzb3VyY2VEaWFsb2cgZXh0ZW5kcyBXSS5EaWFsb2cKICAgICAg
ICAgV0kuVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0LkV2ZW50LlJlc291cmNlQWRk
ZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMpOwogICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRk
ZWQsIHRoaXMuX3NjcmlwdEFkZGVkLCB0aGlzKTsKIAotICAgICAgICBpZiAoV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lKQotICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VzRm9y
RnJhbWUoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKKyAgICAgICAgaWYgKFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkKKyAgICAgICAgICAgIHRoaXMuX2FkZFJlc291cmNl
c0ZvckZyYW1lKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSk7CiAKICAgICAgICAgZm9yIChs
ZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXQgIT09IFdJ
Lm1haW5UYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCAxMzBkZjU2
ZDFkYmRlMTk2NWY4YjQxMTA0YTc2NDM2YzcyMjhmMWE5Li5lZjQ4NjdhM2Y1M2JlODU5N2ZlMWQ5
ZTE2MDYzZDJiODcxZGQ1YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKQEAg
LTUxLDkgKzUxLDkgQEAgV0kuUmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICByZXNvdXJjZS5yZXF1ZXN0
Q29udGVudCgpLnRoZW4odGhpcy5fY29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKS5jYXRjaCh0
aGlzLnNob3dHZW5lcmljRXJyb3JNZXNzYWdlLmJpbmQodGhpcykpOwogCiAgICAgICAgIGlmICgh
dGhpcy5tYW5hZ2VzT3duSXNzdWVzKSB7Ci0gICAgICAgICAgICBXSS5pc3N1ZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNBZGRlZCwgdGhpcy5f
aXNzdWVXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lklzc3VlQWRkZWQsIHRoaXMuX2lz
c3VlV2FzQWRkZWQsIHRoaXMpOwogCi0gICAgICAgICAgICB2YXIgaXNzdWVzID0gV0kuaXNzdWVN
YW5hZ2VyLmlzc3Vlc0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIGlz
c3VlcyA9IFdJLmNvbnNvbGVNYW5hZ2VyLmlzc3Vlc0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOwog
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpc3N1ZXMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICAgICAgdGhpcy5hZGRJc3N1ZShpc3N1ZXNbaV0pOwogICAgICAgICB9CkBAIC0xMTEs
NyArMTExLDcgQEAgV0kuUmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBzdXBlci5jbG9zZWQoKTsKIAog
ICAgICAgICBpZiAoIXRoaXMubWFuYWdlc093bklzc3VlcykKLSAgICAgICAgICAgIFdJLmlzc3Vl
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlz
KTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTE2Myw3ICsxNjMsNyBAQCBXSS5SZXNv
dXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
bnRlbnRWaWV3CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLm1hbmFnZXNPd25Jc3N1ZXMp
OwogCiAgICAgICAgIHZhciBpc3N1ZSA9IGV2ZW50LmRhdGEuaXNzdWU7Ci0gICAgICAgIGlmICgh
V0kuSXNzdWVNYW5hZ2VyLmlzc3VlTWF0Y2hTb3VyY2VDb2RlKGlzc3VlLCB0aGlzLnJlc291cmNl
KSkKKyAgICAgICAgaWYgKCFXSS5Db25zb2xlTWFuYWdlci5pc3N1ZU1hdGNoU291cmNlQ29kZShp
c3N1ZSwgdGhpcy5yZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5hZGRJc3N1ZShpc3N1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4
IDJmNzZiNmNmZWM2Y2YwYmJlZjgxOTU2NmUzOWNmOGJhMzllMjc5YjAuLmQ0YTBlYTc4MDJmNzRk
MzQ3Y2U2OWFhYjdkNTY4NDZhOWIyMjg2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBh
bmVsLmpzCkBAIC01MywxMyArNTMsMTMgQEAgV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFz
cyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAg
ICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJj
ZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAg
ICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5OZXR3b3JrTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFt
ZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3Jp
cHRXYXNBZGRlZCwgdGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRSZW1vdmVkLCB0aGlzLl9zY3Jp
cHRXYXNSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9z
Y3JpcHRzQ2xlYXJlZCwgdGhpcyk7CiAKLSAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhp
cy5fc3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHls
ZVNoZWV0QWRkZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldFJlbW92ZWQsIHRoaXMuX3Rhcmdl
dFJlbW92ZWQsIHRoaXMpOwogCkBAIC05NCwxNSArOTQsMTUgQEAgV0kuUmVzb3VyY2VTaWRlYmFy
UGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25T
aWRlYmEKICAgICAgICAgc3VwZXIuY2xvc2VkKCk7CiAKICAgICAgICAgV0kuRnJhbWUucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAg
V0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsK
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7CiAgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
dWxsLCBudWxsLCB0aGlzKTsKICAgICB9CiAKICAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkK
ICAgICB7Ci0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsK
LSAgICAgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVz
ZW50ZWRPYmplY3QoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKKyAgICAgICAg
aWYgKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkgeworICAgICAgICAgICAgdGhpcy5jb250
ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE5Nyw4ICsxOTcsOCBAQCBXSS5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNl
U2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgIHsKICAgICAgICAg
c3VwZXIuaW5pdGlhbExheW91dCgpOwogCi0gICAgICAgIGlmIChXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVNYWluUmVzb3VyY2VE
aWRDaGFuZ2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKKyAgICAgICAgaWYg
KFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSkKKyAgICAgICAgICAgIHRoaXMuX21haW5GcmFt
ZU1haW5SZXNvdXJjZURpZENoYW5nZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogCiAg
ICAgICAgIGZvciAobGV0IHNjcmlwdCBvZiBXSS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNv
dXJjZVNjcmlwdHMpIHsKICAgICAgICAgICAgIHRoaXMuX2FkZFNjcmlwdChzY3JpcHQpOwpAQCAt
MjY0LDcgKzI2NCw3IEBAIFdJLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICBfbWFpbkZyYW1l
RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpbkZyYW1lTWFpblJlc291
cmNlRGlkQ2hhbmdlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CisgICAgICAg
IHRoaXMuX21haW5GcmFtZU1haW5SZXNvdXJjZURpZENoYW5nZShXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUpOwogICAgIH0KIAogICAgIF9tYWluRnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2Uo
bWFpbkZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2VhcmNoU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoU2lkZWJhclBhbmVsLmpzCmluZGV4IGRlYWY2NmJjYTNk
ODZjOTBhMTY4YTRiNWYwOGZjMWI0Y2QxMzRkMjAuLmYxN2JhYjQzOTYwZjcyNDVkNjk1ZWQ1MzQ5
ZWM1NTgwY2ZjNTUyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NlYXJjaFNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hTaWRlYmFyUGFuZWwuanMKQEAgLTE0OSw3
ICsxNDksNyBAQCBXSS5TZWFyY2hTaWRlYmFyUGFuZWwgPSBjbGFzcyBTZWFyY2hTaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbgogICAgICAgICAgICAgICAgIGlmIChl
cnJvciB8fCAhcmVzb3VyY2VNYXRjaGVzIHx8ICFyZXNvdXJjZU1hdGNoZXMubGVuZ3RoKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB2YXIgZnJhbWUgPSBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CisgICAg
ICAgICAgICAgICAgdmFyIGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVGb3JJZGVudGlm
aWVyKGZyYW1lSWQpOwogICAgICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMjUwLDcgKzI1MCw3IEBAIFdJLlNlYXJjaFNpZGViYXJQYW5l
bCA9IGNsYXNzIFNlYXJjaFNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmFy
UGFuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kb21TZWFyY2hJZGVudGlmaWVyICE9
PSBzZWFyY2hJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2Rl
SWRzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2Vy
Lm5vZGVGb3JJZChub2RlSWRzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb21Ob2Rl
IHx8ICFkb21Ob2RlLm93bmVyRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIApAQCAtMjU5LDcgKzI1OSw3IEBAIFdJLlNlYXJjaFNpZGViYXJQYW5lbCA9IGNsYXNz
IFNlYXJjaFNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIGEgZnJhbWUgdG8gZG8gcmVzb3VyY2VGb3JVUkwsIGJ1dCBE
T01BZ2VudCBkb2VzIG5vdCBwcm92aWRlIGEgZnJhbWVJZC4KLSAgICAgICAgICAgICAgICAgICAg
dmFyIHJlc291cmNlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwoZG9t
Tm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHJlc291cmNlID0gV0kubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwoZG9tTm9kZS5vd25l
ckRvY3VtZW50LmRvY3VtZW50VVJMKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNvdXJj
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yODgsNyArMjg4LDcg
QEAgV0kuU2VhcmNoU2lkZWJhclBhbmVsID0gY2xhc3MgU2VhcmNoU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV0kuTmF2aWdhdGlvblNpZGViYXJQYW4KICAgICAgICAgfQogCiAgICAgICAgIGlmICh3aW5k
b3cuRE9NQWdlbnQpCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5lbnN1cmVEb2N1bWVu
dCgpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOwogCiAgICAg
ICAgIGlmICh3aW5kb3cuUGFnZUFnZW50KQogICAgICAgICAgICAgUGFnZUFnZW50LnNlYXJjaElu
UmVzb3VyY2VzKHNlYXJjaFF1ZXJ5LCBpc0Nhc2VTZW5zaXRpdmUsIGlzUmVnZXgsIHJlc291cmNl
c0NhbGxiYWNrLmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcu
anMKaW5kZXggZWExZDE1ZjViODlhODUyMWJjODkxYTQ4ZTU5NzY1ZjdkYmZlNDYxOC4uMTkwNDY4
MjhkNTlkZTUwMjI2MjY1ZTM5YWM4YzM0YWE0MzI3ZTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5n
c1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMTAsNyArMjEwLDcgQEAgV0kuU2V0dGluZ3NUYWJDb250
ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250
ZW50VmkKICAgICAgICAgem9vbUVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmdFZGl0
b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsICgpID0+IHsgV0kuc2V0Wm9vbUZhY3Rvcih6b29tRWRp
dG9yLnZhbHVlKTsgfSk7CiAgICAgICAgIFdJLnNldHRpbmdzLnpvb21GYWN0b3IuYWRkRXZlbnRM
aXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsICgpID0+IHsgem9vbUVkaXRvci52YWx1
ZSA9IFdJLmdldFpvb21GYWN0b3IoKS5tYXhEZWNpbWFscygyKTsgfSk7CiAKLSAgICAgICAgaWYg
KFdJLkxvZ01hbmFnZXIuc3VwcG9ydHNMb2dDaGFubmVscygpKSB7CisgICAgICAgIGlmIChXSS5D
b25zb2xlTWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCkpIHsKICAgICAgICAgICAgIGNvbnN0
IGxvZ0xldmVscyA9IFsKICAgICAgICAgICAgICAgICBbV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwu
T2ZmLCBXSS5VSVN0cmluZygiT2ZmIildLAogICAgICAgICAgICAgICAgIFtXSS5Mb2dnaW5nQ2hh
bm5lbC5MZXZlbC5CYXNpYywgV0kuVUlTdHJpbmcoIkJhc2ljIildLApAQCAtMjIxLDcgKzIyMSw3
IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICAgICAgd2VicnRjOiBXSS5V
SVN0cmluZygiV2ViUlRDIExvZ2dpbmc6IiksCiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAg
ICBsZXQgY2hhbm5lbHMgPSBXSS5sb2dNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVsczsKKyAg
ICAgICAgICAgIGxldCBjaGFubmVscyA9IFdJLmNvbnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdD
aGFubmVsczsKICAgICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgb2YgY2hhbm5lbHMpIHsKICAg
ICAgICAgICAgICAgICBsZXQgbG9nRWRpdG9yID0gZ2VuZXJhbFNldHRpbmdzVmlldy5hZGRHcm91
cFdpdGhDdXN0b21TZXR0aW5nKGVkaXRvckxhYmVsc1tjaGFubmVsLnNvdXJjZV0sIFdJLlNldHRp
bmdFZGl0b3IuVHlwZS5TZWxlY3QsIHt2YWx1ZXM6IGxvZ0xldmVsc30pOwogICAgICAgICAgICAg
ICAgIGxvZ0VkaXRvci52YWx1ZSA9IGNoYW5uZWwubGV2ZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzCmluZGV4IDUyZmU3MWNhMmNiMTUzODkxZGZmYWJlMTFlZTAxYTkzNjI2ZWQ0
MjIuLmQyNzFiM2FkZjcyMDg5MTNkNDg1YzY5MjY3NTM1MjYyNDY3ZGQ5ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC04OCw3ICs4OCw3IEBAIFdJLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRp
dG9yCiAgICAgICAgICAgICB0aGlzLl9hY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFdJLmlzc3VlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLklzc3Vl
TWFuYWdlci5FdmVudC5Jc3N1ZVdhc0FkZGVkLCB0aGlzLl9pc3N1ZVdhc0FkZGVkLCB0aGlzKTsK
KyAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFu
YWdlci5FdmVudC5Jc3N1ZUFkZGVkLCB0aGlzLl9pc3N1ZVdhc0FkZGVkLCB0aGlzKTsKIAogICAg
ICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNvdXJjZU1hcFJlc291cmNl
IHx8IHRoaXMuX3NvdXJjZUNvZGUuc291cmNlTWFwcy5sZW5ndGggPiAwKQogICAgICAgICAgICAg
V0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJLk5vdGlmaWNhdGlvbi5HbG9iYWxN
b2RpZmllcktleXNEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVy
U3RhdGUsIHRoaXMpOwpAQCAtOTksNyArOTksNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9
IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogCiAgICAg
ICAgIG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIu
Q29udHJvbCwgIkciLCB0aGlzLnNob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpLCB0aGlzLmVs
ZW1lbnQpOwogCi0gICAgICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dN
YW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMpOworICAgICAgICBX
SS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
LkNsZWFyZWQsIHRoaXMuX2xvZ0NsZWFyZWQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFB1Ymxp
YwpAQCAtMTc4LDcgKzE3OCw3IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291
cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBXSS5pc3N1ZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Jc3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNBZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwg
dGhpcyk7CisgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuSXNzdWVBZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwgdGhp
cyk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5Tb3VyY2VN
YXBSZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlLnNvdXJjZU1hcHMubGVuZ3RoID4gMCkKICAg
ICAgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Ob3RpZmlj
YXRpb24uR2xvYmFsTW9kaWZpZXJLZXlzRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVUb2tlblRyYWNr
aW5nQ29udHJvbGxlclN0YXRlLCB0aGlzKTsKQEAgLTEwMDUsNyArMTAwNSw3IEBAIFdJLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5U
ZXh0RWRpdG9yCiAgICAgX2lzc3VlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
aXNzdWUgPSBldmVudC5kYXRhLmlzc3VlOwotICAgICAgICBpZiAoIVdJLklzc3VlTWFuYWdlci5p
c3N1ZU1hdGNoU291cmNlQ29kZShpc3N1ZSwgdGhpcy5fc291cmNlQ29kZSkpCisgICAgICAgIGlm
ICghV0kuQ29uc29sZU1hbmFnZXIuaXNzdWVNYXRjaFNvdXJjZUNvZGUoaXNzdWUsIHRoaXMuX3Nv
dXJjZUNvZGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2FkZElzc3Vl
KGlzc3VlKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0g
Y2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAg
IHRoaXMuX2lzc3Vlc0xpbmVOdW1iZXJNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5fY2xlYXJJ
c3N1ZVdpZGdldHMoKTsKIAotICAgICAgICBsZXQgaXNzdWVzID0gV0kuaXNzdWVNYW5hZ2VyLmlz
c3Vlc0ZvclNvdXJjZUNvZGUodGhpcy5fc291cmNlQ29kZSk7CisgICAgICAgIGxldCBpc3N1ZXMg
PSBXSS5jb25zb2xlTWFuYWdlci5pc3N1ZXNGb3JTb3VyY2VDb2RlKHRoaXMuX3NvdXJjZUNvZGUp
OwogICAgICAgICBmb3IgKGxldCBpc3N1ZSBvZiBpc3N1ZXMpCiAgICAgICAgICAgICB0aGlzLl9h
ZGRJc3N1ZShpc3N1ZSk7CiAgICAgfQpAQCAtMTkxMSwxMyArMTkxMSwxMyBAQCBXSS5Tb3VyY2VD
b2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4
dEVkaXRvcgogICAgICAgICAgICAgICAgIGlmICghbm9kZUlkKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0ku
ZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBpZiAoIWRvbU5v
ZGUub3duZXJEb2N1bWVudCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICAgICAgdmFyIGdvVG9CdXR0b24gPSB0aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV0kuY3Jl
YXRlR29Ub0Fycm93QnV0dG9uKCkpOwogICAgICAgICAgICAgICAgIGdvVG9CdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgV0ku
ZG9tVHJlZU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICAg
ICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0RWxlbWVudChub2RlSWQpOwogICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCmluZGV4IGUxMWMwYTRj
ZWRiZmMyMzk3OWIzYmIxNThkNDI1YjVhZTgwNGJlYWYuLjdmNGZjNjEzZGM0MThmYTE4Mzc5NWI2
Nzg3MGUxYTUyZjViYzk5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRDU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpAQCAtNDE0LDcgKzQxNCw3IEBAIFdJLlNw
cmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBjbGFzcyBTcHJlYWRzaGVldENT
U1N0eWxlRGVjbGFyYXRpb25TCiAKICAgICAgICAgbGV0IHVybDsKICAgICAgICAgaWYgKHNvdXJj
ZUNvZGUudXJsQ29tcG9uZW50cy5zY2hlbWUgPT09ICJkYXRhIikgewotICAgICAgICAgICAgbGV0
IG1haW5SZXNvdXJjZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVz
b3VyY2U7CisgICAgICAgICAgICBsZXQgbWFpblJlc291cmNlID0gV0kubmV0d29ya01hbmFnZXIu
bWFpbkZyYW1lLm1haW5SZXNvdXJjZTsKICAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UudXJs
Q29tcG9uZW50cy5sYXN0UGF0aENvbXBvbmVudC5lbmRzV2l0aCgiLmh0bWwiKSkKICAgICAgICAg
ICAgICAgICB1cmwgPSBtYWluUmVzb3VyY2UudXJsLnJlcGxhY2UoL1wuaHRtbCQvLCAiLWRhdGEu
Y3NzIik7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ2MywxNyArNDYzLDE3IEBAIFdJLlNwcmVh
ZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBjbGFzcyBTcHJlYWRzaGVldENTU1N0
eWxlRGVjbGFyYXRpb25TCiAgICAgX2hpZ2hsaWdodE5vZGVzV2l0aFNlbGVjdG9yKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fc3R5bGUub3duZXJSdWxlKSB7Ci0gICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMuX3N0eWxlLm5vZGUuaWQpOworICAg
ICAgICAgICAgV0kuZG9tTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMuX3N0eWxlLm5vZGUu
aWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHNlbGVj
dG9yVGV4dCA9IHRoaXMuX3NlbGVjdG9yRWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7Ci0gICAg
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodFNlbGVjdG9yKHNlbGVjdG9yVGV4dCwgdGhp
cy5fc3R5bGUubm9kZS5vd25lckRvY3VtZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIFdJ
LmRvbU1hbmFnZXIuaGlnaGxpZ2h0U2VsZWN0b3Ioc2VsZWN0b3JUZXh0LCB0aGlzLl9zdHlsZS5u
b2RlLm93bmVyRG9jdW1lbnQuZnJhbWVJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBfaGlkZURP
TU5vZGVIaWdobGlnaHQoKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuaGlkZURP
TU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hs
aWdodCgpOwogICAgIH0KIAogICAgIF9oYW5kbGVFZGl0b3JGaWx0ZXJBcHBsaWVkKGV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3By
ZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpz
CmluZGV4IDNhYjA5MTg3ZjYzZjYxNjU5MWI0Y2Y0ZWZjNjA1NjYzZjVjM2JjYjEuLmUwZjVjYTgz
NTAwOTAxNWQyNzI2ZDQwMmYyODExNjRmNDMzMmFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFp
bHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTEwNCw3ICsxMDQsNyBA
QCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVl
dFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICBpZiAodGhpcy5ub2RlU3R5bGVzLm5v
ZGUuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBsZXQgc3R5bGVTaGVldHMgPSBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMuZmls
dGVyKHN0eWxlU2hlZXQgPT4gc3R5bGVTaGVldC5oYXNJbmZvKCkgJiYgIXN0eWxlU2hlZXQuaXNJ
bmxpbmVTdHlsZVRhZygpICYmICFzdHlsZVNoZWV0LmlzSW5saW5lU3R5bGVBdHRyaWJ1dGVTdHls
ZVNoZWV0KCkpOworICAgICAgICBsZXQgc3R5bGVTaGVldHMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxl
U2hlZXRzLmZpbHRlcihzdHlsZVNoZWV0ID0+IHN0eWxlU2hlZXQuaGFzSW5mbygpICYmICFzdHls
ZVNoZWV0LmlzSW5saW5lU3R5bGVUYWcoKSAmJiAhc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0
cmlidXRlU3R5bGVTaGVldCgpKTsKICAgICAgICAgaWYgKCFzdHlsZVNoZWV0cy5sZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBXSS5TcHJlYWRzaGVldFJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWwgZQogICAgICAgICB9CiAKICAgICAgICAgbGV0IHBzZXVkb0VsZW1lbnRzID0gQXJyYXku
ZnJvbSh0aGlzLm5vZGVTdHlsZXMubm9kZS5wc2V1ZG9FbGVtZW50cygpLnZhbHVlcygpKTsKLSAg
ICAgICAgUHJvbWlzZS5hbGwocHNldWRvRWxlbWVudHMubWFwKChwc2V1ZG9FbGVtZW50KSA9PiBX
SS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVzRm9yTm9kZShwc2V1ZG9FbGVtZW50KS5yZWZyZXNoSWZO
ZWVkZWQoKSkpCisgICAgICAgIFByb21pc2UuYWxsKHBzZXVkb0VsZW1lbnRzLm1hcCgocHNldWRv
RWxlbWVudCkgPT4gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKHBzZXVkb0VsZW1lbnQpLnJl
ZnJlc2hJZk5lZWRlZCgpKSkKICAgICAgICAgLnRoZW4oKHBzZXVkb05vZGVTdHlsZXMpID0+IHsK
ICAgICAgICAgICAgIGZvciAobGV0IHBzZXVkb05vZGVTdHlsZSBvZiBwc2V1ZG9Ob2RlU3R5bGVz
KSB7CiAgICAgICAgICAgICAgICAgY3JlYXRlSGVhZGVyKFdJLlVJU3RyaW5nKCJQc2V1ZG8gRWxl
bWVudCIpLCBwc2V1ZG9Ob2RlU3R5bGUubm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVNpZGViYXJQYW5l
bC5qcwppbmRleCBlYjNjNTA4NzI1NmYzYjk5MDlhZjU5MTQwNGZjNGY1NDgyMjEwNTVjLi5hZmEw
YmJjYWM0Njg0NWE4YzdlYTEzOTllOWFkZDVkZGQyMWRlODc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VT
aWRlYmFyUGFuZWwuanMKQEAgLTczLDI5ICs3MywzMSBAQCBXSS5TdG9yYWdlU2lkZWJhclBhbmVs
ID0gY2xhc3MgU3RvcmFnZVNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmFy
UAogICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsK
ICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0gbmV3IE1h
cDsKIAotICAgICAgICBXSS5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlN0b3Jh
Z2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fY29va2ll
U3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuc3RvcmFnZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0
V2FzQWRkZWQsIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7Ci0gICAgICAg
IFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdh
c0luc3BlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fZGF0
YWJhc2VXYXNBZGRlZCwgdGhpcyk7Ci0gICAgICAgIFdJLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRo
aXMuX2RhdGFiYXNlV2FzSW5zcGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuc3RvcmFnZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TdG9yYWdlTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJh
c2VXYXNBZGRlZCwgdGhpcy5faW5kZXhlZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOwotICAgICAg
ICBXSS5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlN0b3JhZ2VNYW5hZ2VyLkV2
ZW50LkNsZWFyZWQsIHRoaXMuX3N0b3JhZ2VDbGVhcmVkLCB0aGlzKTsKLQorICAgICAgICBXSS5k
b21TdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2
ZW50LkNvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fY29va2llU3RvcmFnZU9iamVj
dFdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRk
ZWQsIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRv
bVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZl
bnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdh
c0luc3BlY3RlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFn
ZUNsZWFyZWQsIHRoaXMpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fZGF0
YWJhc2VXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRhdGFiYXNlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0luc3BlY3RlZCwg
dGhpcy5fZGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMpOworICAgICAgICBXSS5kYXRhYmFzZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwg
dGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOworICAgICAgICBXSS5pbmRleGVkREJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuSW5kZXhlZERCTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJh
c2VXYXNBZGRlZCwgdGhpcy5faW5kZXhlZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOworICAgICAg
ICBXSS5pbmRleGVkREJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuSW5kZXhlZERCTWFuYWdl
ci5FdmVudC5DbGVhcmVkLCB0aGlzLl9zdG9yYWdlQ2xlYXJlZCwgdGhpcyk7CiAgICAgICAgIFdJ
LmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdEFkZGVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0
QWRkZWQsIHRoaXMpOwogICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RS
ZW1vdmVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0UmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91
dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl90cmVlU2VsZWN0aW9uRGlkQ2hh
bmdlLCB0aGlzKTsKIAotICAgICAgICBmb3IgKHZhciBkb21TdG9yYWdlT2JqZWN0IG9mIFdJLnN0
b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmplY3RzKQorICAgICAgICBmb3IgKHZhciBkb21TdG9y
YWdlT2JqZWN0IG9mIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmplY3RzKQogICAg
ICAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZU9iamVjdChkb21TdG9yYWdlT2JqZWN0KTsKIAot
ICAgICAgICBmb3IgKHZhciBjb29raWVTdG9yYWdlT2JqZWN0IG9mIFdJLnN0b3JhZ2VNYW5hZ2Vy
LmNvb2tpZVN0b3JhZ2VPYmplY3RzKQorICAgICAgICBmb3IgKHZhciBjb29raWVTdG9yYWdlT2Jq
ZWN0IG9mIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmNvb2tpZVN0b3JhZ2VPYmplY3RzKQogICAgICAg
ICAgICAgdGhpcy5fYWRkQ29va2llU3RvcmFnZU9iamVjdChjb29raWVTdG9yYWdlT2JqZWN0KTsK
IAotICAgICAgICBmb3IgKHZhciBkYXRhYmFzZSBvZiBXSS5zdG9yYWdlTWFuYWdlci5kYXRhYmFz
ZXMpCisgICAgICAgIGZvciAodmFyIGRhdGFiYXNlIG9mIFdJLmRhdGFiYXNlTWFuYWdlci5kYXRh
YmFzZXMpCiAgICAgICAgICAgICB0aGlzLl9hZGREYXRhYmFzZShkYXRhYmFzZSk7CiAKLSAgICAg
ICAgZm9yICh2YXIgaW5kZXhlZERhdGFiYXNlIG9mIFdJLnN0b3JhZ2VNYW5hZ2VyLmluZGV4ZWRE
YXRhYmFzZXMpCisgICAgICAgIGZvciAodmFyIGluZGV4ZWREYXRhYmFzZSBvZiBXSS5pbmRleGVk
REJNYW5hZ2VyLmluZGV4ZWREYXRhYmFzZXMpCiAgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVk
RGF0YWJhc2UoaW5kZXhlZERhdGFiYXNlKTsKIAogICAgICAgICBmb3IgKHZhciBhcHBsaWNhdGlv
bkNhY2hlT2JqZWN0IG9mIFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFwcGxpY2F0aW9uQ2Fj
aGVPYmplY3RzKQpAQCAtMTE4LDcgKzEyMCw5IEBAIFdJLlN0b3JhZ2VTaWRlYmFyUGFuZWwgPSBj
bGFzcyBTdG9yYWdlU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYXJQCiAg
ICAgewogICAgICAgICBzdXBlci5jbG9zZWQoKTsKIAotICAgICAgICBXSS5zdG9yYWdlTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5kb21T
dG9yYWdlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAg
ICAgICBXSS5kYXRhYmFzZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0
aGlzKTsKKyAgICAgICAgV0kuaW5kZXhlZERCTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBkYmYzOGViYmRlMWZjNWNkNzFhNmIwOTVhYTcwNmU4ZWRhY2Mw
N2ZiLi4wNTVkOWNmODQ0ZTRiNGQ0NzBlNzE4NzBiZGY4MWMxY2ZjOGNhMmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
dHlsZURldGFpbHNQYW5lbC5qcwpAQCAtODQsNyArODQsNyBAQCBXSS5TdHlsZURldGFpbHNQYW5l
bCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAg
ICAgIHRoaXMuX25vZGVTdHlsZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVz
LkV2ZW50Lk5lZWRzUmVmcmVzaCwgdGhpcy5fbm9kZVN0eWxlc05lZWRzUmVmcmVzaGVkLCB0aGlz
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IFdJLmNz
c1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICAgICAgdGhpcy5f
bm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbm9kZVN0eWxlcyk7CiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX25vZGVTdHlsZXMpCkBAIC0xMjMsNyArMTIzLDcgQEAgV0kuU3R5bGVEZXRhaWxz
UGFuZWwgPSBjbGFzcyBTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdl
dCBfaW5pdGlhbFNjcm9sbE9mZnNldCgpCiAgICAgewotICAgICAgICBpZiAoIVdJLmNzc1N0eWxl
TWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkKKyAgICAgICAgaWYgKCFXSS5jc3NNYW5h
Z2VyLmNhbkZvcmNlUHNldWRvQ2xhc3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIHJldHVybiB0aGlzLm5vZGVTdHlsZXMubm9kZS5lbmFibGVkUHNldWRvQ2xhc3Nlcy5sZW5n
dGggPyAwIDogV0kuR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVk
b0NsYXNzZXNTY3JvbGxPZmZzZXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvaiBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJ
LnZjeHByb2oKaW5kZXggOWU4ZWRlODgwZmRmNjRhYzllODhkZGZhNmEwYjFhN2Q4YmU2Yjg1Yy4u
MzkzMGIzMTlhM2MyZDE4YjkxYjM0MTQxNjQ2YTJmMjc0MGYzMTExNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUku
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJv
ai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qCkBAIC0zMTcsNiArMzE3LDcgQEAKICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENvbnNvbGVDb21tYW5kLmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29sZUNvbW1hbmRSZXN1bHQuanMiIC8+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlR3JvdXAuanMiIC8+Cisg
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlTWFuYWdlci5qcyIgLz4K
ICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXExlZ2FjeUNvbnNvbGVNZXNzYWdl
LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTGVnYWN5Q29uc29s
ZU1lc3NhZ2VJbXBsLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
Q29uc29sZU9ic2VydmVyLmpzIiAvPgpAQCAtMzQwLDE0ICszNDEsMTMgQEAKICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENvbG9yUGlja2VyLmpzIiAvPgogICAgIDxOb25lIElu
Y2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTQ29tcGxldGlvbnMuanMiIC8+CiAgICAgPE5vbmUg
SW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiIC8+Cisg
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NNYW5hZ2VyLmpzIiAvPgogICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTTWVkaWEuanMiIC8+CiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NPYnNlcnZlci5qcyIgLz4KICAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1Byb3BlcnR5LmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ1NTUnVsZS5qcyIgLz4KICAgICA8Tm9uZSBJbmNs
dWRlPSIuLlxVc2VySW50ZXJmYWNlXENTU1N0eWxlRGVjbGFyYXRpb24uanMiIC8+Ci0gICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NTdHlsZU1hbmFnZXIuanMiIC8+CiAgICAg
PE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDU1NTdHlsZVNoZWV0LmpzIiAvPgotICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRGFzaGJvYXJkTWFuYWdlci5qcyIgLz4K
ICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERhc2hib2FyZFZpZXcuY3NzIiAv
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRGFzaGJvYXJkVmlldy5qcyIg
Lz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERhdGFiYXNlQ29udGVudFZp
ZXcuY3NzIiAvPgpAQCAtMzc5LDYgKzM3OSw3IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNl
ckludGVyZmFjZVxEaXZpZGVyTmF2aWdhdGlvbkl0ZW0uY3NzIiAvPgogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRGl2aWRlck5hdmlnYXRpb25JdGVtLmpzIiAvPgogICAgIDxO
b25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyIg
Lz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTU1hbmFnZXIuanMiIC8+
CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01Ob2RlLmpzIiAvPgogICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NTm9kZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01Ob2RlU3R5
bGVzLmpzIiAvPgpAQCAtMzg3LDYgKzM4OCw3IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNl
ckludGVyZmFjZVxET01TdG9yYWdlQ29udGVudFZpZXcuY3NzIiAvPgogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzIiAvPgogICAgIDxO
b25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NU3RvcmFnZUljb25zLmNzcyIgLz4KKyAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VNYW5hZ2VyLmpzIiAv
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NU3RvcmFnZU9iamVjdC5q
cyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3JhZ2VPYnNl
cnZlci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVN0b3Jh
Z2VUcmVlRWxlbWVudC5qcyIgLz4KQEAgLTM5NSw3ICszOTcsNiBAQAogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJlZUNvbnRlbnRWaWV3LmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJlZUVsZW1lbnQuanMiIC8+CiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
anMiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxET01UcmVlTWFuYWdl
ci5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVRyZWVPdXRs
aW5lLmNzcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERPTVRyZWVP
dXRsaW5lLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9NVHJl
ZVVwZGF0ZXIuanMiIC8+CkBAIC00NDUsNyArNDQ2LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxVc2VySW50ZXJmYWNlXEZvcm1hdHRlclNvdXJjZU1hcC5qcyIgLz4KICAgICA8Tm9uZSBJbmNs
dWRlPSIuLlxVc2VySW50ZXJmYWNlXEZyYW1lLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4u
XFVzZXJJbnRlcmZhY2VcRnJhbWVDb250ZW50Vmlldy5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRl
PSIuLlxVc2VySW50ZXJmYWNlXEZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRnJhbWVUcmVlRWxlbWVudC5qcyIgLz4KICAgICA8
Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEdlbmVyYWxUcmVlRWxlbWVudC5qcyIgLz4K
ICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEdlbmVyYWxUcmVlRWxlbWVudFBh
dGhDb21wb25lbnQuanMiIC8+CkBAIC02NTksNyArNjU5LDYgQEAKICAgICA8Tm9uZSBJbmNsdWRl
PSIuLlxVc2VySW50ZXJmYWNlXEluc3RydW1lbnRJY29ucy5jc3MiIC8+CiAgICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxJbnN0cnVtZW50U2lkZWJhclBhbmVsLmNzcyIgLz4KICAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEluc3RydW1lbnRTaWRlYmFyUGFuZWwu
anMiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxJc3N1ZU1hbmFnZXIu
anMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxJc3N1ZU1lc3NhZ2Uu
anMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxKYXZhU2NyaXB0TG9n
Vmlld0NvbnRyb2xsZXIuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFj
ZVxKYXZhU2NyaXB0UHJvZmlsZU9iamVjdC5qcyIgLz4KQEAgLTY4NCw3ICs2ODMsNiBAQAogICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTG9nQ29udGVudFZpZXcuY3NzIiAvPgog
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTG9nQ29udGVudFZpZXcuanMiIC8+
CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dJY29uLmNzcyIgLz4KLSAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXExvZ01hbmFnZXIuanMiIC8+CiAgICAg
PE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dPYmplY3QuanMiIC8+CiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dUcmVlRWxlbWVudC5qcyIgLz4KICAgICA8
Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE1haW4uY3NzIiAvPgpAQCAtNzAwLDYgKzY5
OCw3IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxOZXR3b3JrRGF0YUdy
aWQuY3NzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTmV0d29ya0Rh
dGFHcmlkLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTmV0d29y
a0dyYXBoQ2FsY3VsYXRvci5qcyIgLz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXE5ldHdvcmtNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRl
cmZhY2VcTmV0d29ya09ic2VydmVyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcTmV0d29ya1RpbWVsaW5lLmNzcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXE9iamVjdC5qcyIgLz4KQEAgLTc3OSw3ICs3NzgsNiBAQAogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcU291cmNlTWFwTWFuYWdlci5qcyIgLz4KICAgICA8
Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXFNvdXJjZU1hcFJlc291cmNlLmpzIiAvPgog
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcU291cmNlTWFwUmVzb3VyY2VUcmVl
RWxlbWVudC5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXFN0b3Jh
Z2VNYW5hZ2VyLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcU3Rv
cmFnZVRyZWVFbGVtZW50LmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZh
Y2VcU3R5bGVEZXRhaWxzUGFuZWwuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxTdHlsZVJ1bGVJY29ucy5jc3MiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJ
bnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMDExZTUyMjE0NmM0MDk1MGEzODc4YjI5
MjRmNDRjMGRkMTgzMzNmYi4uNmI0ZDEwODg5MWU0NGZmMDQ4MmIzOTM1YmY3YmVhNTJhOGU2ZWJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHBy
b2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVy
cwpAQCAtMjAxLDYgKzIwMSw5IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFj
ZVxDb25zb2xlR3JvdXAuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+
CiAgICAgPC9Ob25lPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29s
ZU1hbmFnZXIuanMiPgorICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CisgICAg
PC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTGVnYWN5Q29uc29s
ZU1lc3NhZ2UuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAg
PC9Ob25lPgpAQCAtMjcwLDYgKzI3Myw5IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxDU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50
ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJ
bnRlcmZhY2VcQ1NTTWFuYWdlci5qcyI+CisgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0Zp
bHRlcj4KKyAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxD
U1NNZWRpYS5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8
L05vbmU+CkBAIC0yODUsMTUgKzI5MSw5IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlcklu
dGVyZmFjZVxDU1NTdHlsZURlY2xhcmF0aW9uLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVy
ZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50
ZXJmYWNlXENTU1N0eWxlTWFuYWdlci5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8
L0ZpbHRlcj4KLSAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFj
ZVxDU1NTdHlsZVNoZWV0LmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVy
PgogICAgIDwvTm9uZT4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXERhc2hi
b2FyZE1hbmFnZXIuanMiPgotICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+Ci0g
ICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRGFzaGJvYXJk
Vmlldy5jc3MiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9O
b25lPgpAQCAtMzg3LDYgKzM4Nyw5IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVy
ZmFjZVxET01EZXRhaWxzU2lkZWJhclBhbmVsLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVy
ZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50
ZXJmYWNlXERPTU1hbmFnZXIuanMiPgorICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0
ZXI+CisgICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9N
Tm9kZS5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05v
bmU+CkBAIC00MTEsNiArNDE0LDkgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXERPTVN0b3JhZ2VJY29ucy5jc3MiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9G
aWx0ZXI+CiAgICAgPC9Ob25lPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
RE9NU3RvcmFnZU1hbmFnZXIuanMiPgorICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0
ZXI+CisgICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcRE9N
U3RvcmFnZU9iamVjdC5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4K
ICAgICA8L05vbmU+CkBAIC00MzUsOSArNDQxLDYgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxV
c2VySW50ZXJmYWNlXERPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyI+CiAgICAgICA8Rmls
dGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVk
ZT0iLi5cVXNlckludGVyZmFjZVxET01UcmVlTWFuYWdlci5qcyI+Ci0gICAgICA8RmlsdGVyPlVz
ZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAgICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5c
VXNlckludGVyZmFjZVxET01UcmVlT3V0bGluZS5jc3MiPgogICAgICAgPEZpbHRlcj5Vc2VySW50
ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNTIyLDkgKzUyNSw2IEBACiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxGcmFtZUNvbnRlbnRWaWV3LmpzIj4KICAgICAg
IDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KLSAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIj4KLSAgICAg
IDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgotICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXEZyYW1lVHJlZUVsZW1lbnQuanMiPgogICAgICAgPEZp
bHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNTgyLDkgKzU4Miw2
IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxJbnN0cnVtZW50U2lkZWJh
clBhbmVsLmpzIj4KICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwv
Tm9uZT4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXElzc3VlTWFuYWdlci5q
cyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAgICA8L05vbmU+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxJc3N1ZU1lc3NhZ2UuanMiPgogICAg
ICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgpAQCAtNjQ4LDkg
KzY0NSw2IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dJY29uLmNz
cyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0g
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxMb2dNYW5hZ2VyLmpzIj4KLSAgICAg
IDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgotICAgIDwvTm9uZT4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXExvZ09iamVjdC5qcyI+CiAgICAgICA8RmlsdGVyPlVz
ZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+CkBAIC02OTYsNiArNjkwLDkgQEAKICAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXE5ldHdvcmtHcmFwaENhbGN1bGF0b3Iu
anMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgor
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTmV0d29ya01hbmFnZXIuanMiPgor
ICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CisgICAgPC9Ob25lPgogICAgIDxO
b25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcTmV0d29ya09ic2VydmVyLmpzIj4KICAgICAg
IDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KQEAgLTkzMyw5ICs5
MzAsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcU291cmNlTWFwUmVz
b3VyY2VUcmVlRWxlbWVudC5qcyI+CiAgICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRl
cj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxTdG9y
YWdlTWFuYWdlci5qcyI+Ci0gICAgICA8RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KLSAg
ICA8L05vbmU+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxTdG9yYWdlVHJl
ZUVsZW1lbnQuanMiPgogICAgICAgPEZpbHRlcj5Vc2VySW50ZXJmYWNlPC9GaWx0ZXI+CiAgICAg
PC9Ob25lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDFlZjU1MTdjNWU5OTQyZGFjMDg0NjZiMTNkOTA4ODg1NDY2OTM4NjAu
LjdmMTQ2NzkwYzI2NGVlYmNlNTAyZjAyY2RlN2FjMDIwZjc1ZDM5Y2EgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTggQEAKKzIwMTgtMTAtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBmcm9udGVuZCBtYW5hZ2VycyB0byBiZSBt
b3JlIGNvbnNpc3RlbnQgd2l0aCBiYWNrZW5kIGFnZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Ny
b3NzLWRvbWFpbi1pbnNwZWN0ZWQtbm9kZS1hY2Nlc3MuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9kb20vZGlzY29ubmVjdC1kb20tdHJlZS1hZnRlci1tYWluLWZyYW1lLW5h
dmlnYXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVz
LXRlc3QuanM6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIvaGFy
LXBhZ2UuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvYWRS
ZXNvdXJjZS1pbnNlY3VyZS1yZXNvdXJjZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9yeS1jYWNoZS1yZXZh
bGlkYXRlLWV4cGlyZWQtb25seS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9yeS1jYWNoZS5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtbWVtb3J5
LWNhY2hlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9zZXQt
cmVzb3VyY2UtY2FjaGluZy1kaXNhYmxlZC1tZW1vcnktY2FjaGUuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL3Jl
c29sdmVXZWJTb2NrZXQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RO
b2RlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvZGVtaXJyb3IvcmVzb3VyY2VzL3ByZXR0
eXByaW50aW5nL3V0aWxpdGllcy5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlh
bGl6ZXIubG9hZFByZXR0eVByaW50aW5nVGVzdEFuZEV4cGVjdGVkUmVzdWx0cyk6CisgICAgICAg
IChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLndpbmRvdy5hZGRQcmV0dHlQcmludGluZ1Rl
c3RzKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9jb25zb2xlL2NsZWFyTWVzc2FnZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nv
bnNvbGUvY29uc29sZS1hcGkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb25z
b2xlLWNvdW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10YWJs
ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdGltZS5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL21lc3NhZ2Utc3RhY2stdHJhY2UuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlQWRkZWQtZnJvbS1uYW1lZC1ldmFsdWF0
aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VSZXBlYXRDb3Vu
dFVwZGF0ZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlc0NsZWFy
ZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmctZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUtY29udHJvbGxlci1p
bXBvcnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRy
b2xsZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL2FkZC1ydWxlLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2Nzcy9jc3MtcHJvcGVydHkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL2dl
dEFsbFN0eWxlU2hlZXRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9tYW5hZ2VyLXBy
ZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jc3MvbWF0Y2hlZC1zdHlsZS1wcm9wZXJ0aWVzLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2Nzcy9tb2RpZnktY3NzLXByb3BlcnR5Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nz
cy9tb2RpZnktcnVsZS1zZWxlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jc3MvcHNl
dWRvLWVsZW1lbnQtbWF0Y2hlcy1mb3ItcHNldWRvLWVsZW1lbnQtbm9kZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9jc3MvcHNldWRvLWVsZW1lbnQtbWF0Y2hlcy5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9jc3Mvc2VsZWN0b3ItZHluYW1pYy1zcGVjaWZpY2l0eS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9jc3Mvc2VsZWN0b3Itc3BlY2lmaWNpdHkuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY3NzL3NoYWRvdy1zY29wZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWJhc2ljLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVzaGVldC5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtbXVsdGlwbGUtZG9jdW1lbnRzLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LXdpdGgtbXV0YXRpb25zLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2NzcC1leGNlcHRpb25zLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2pzLXN0YWNrdHJhY2UuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qczoKKyAg
ICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIud2luZG93LmZpbmRTY3JpcHQpOgor
ICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci53aW5kb3cubG9hZE1haW5QYWdl
Q29udGVudCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLndpbmRvdy5s
b2dSZXNvbHZlZEJyZWFrcG9pbnRMaW5lc1dpdGhDb250ZXh0KToKKyAgICAgICAgKFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIud2luZG93LmxvZ0xpbmVzV2l0aENvbnRleHQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250
aW51ZS1icmVha3BvaW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9k
b20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3ho
ci1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1m
b3ItZXZlbnQtbGlzdGVuZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NzcC1iaWc1
LWhhc2guaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NzcC1oYXNoLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy1jc3NwYXRoLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RvbS9kb211dGlsaXRpZXMteHBhdGguaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2V2
ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2dl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vZ2V0
T3V0ZXJIVE1MLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWRlSGlnaGxpZ2h0Lmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWdobGlnaHRGcmFtZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kb20vaGlnaGxpZ2h0Tm9kZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kb20vaGlnaGxpZ2h0Tm9kZUxpc3QuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2hp
Z2hsaWdodFNlbGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGph
Y2VudEhUTUwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2luc3BlY3QuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LWR5bmFtaWMuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LXN0YXRpYy5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9kb20vcHVzaC1ub2RlLWJ5LXBhdGgtdG8tZnJvbnRlbmQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kb20vc2V0SW5zcGVjdGVkTm9kZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vc2V0T3V0ZXJIVE1MLW5vLWRvY3VtZW50LWVsZW1lbnQuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZG9tL3NldE91dGVySFRNTC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9k
b20vc2hhZG93LWFuZC1ub24tc2hhZG93LWNoaWxkcmVuLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2RvbS9zaGFkb3dSb290VHlwZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vdGVt
cGxhdGUtY29udGVudC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy91dGlsaXRpZXMuanM6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVy
LmxvYWRGb3JtYXR0aW5nVGVzdEFuZEV4cGVjdGVkUmVzdWx0cyk6CisgICAgICAgIChUZXN0UGFn
ZS5yZWdpc3RlckluaXRpYWxpemVyLndpbmRvdy5hZGRGb3JtYXR0aW5nVGVzdHMpOgorICAgICAg
ICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcik6CisgICAgICAgICogaW5zcGVjdG9yL2lu
ZGV4ZWRkYi9jbGVhck9iamVjdFN0b3JlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2luZGV4
ZWRkYi9kZWxldGVEYXRhYmFzZU5hbWVzV2l0aFNwYWNlLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9pbmRl
eGVkZGIvcmVxdWVzdERhdGFiYXNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2luZGV4ZWRk
Yi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9sYXllcnMv
bGF5ZXItdHJlZS1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL2RvbS1u
b2RlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL2ZyYW1lLWV4dHJhLXNjcmlwdHMu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvc2NyaXB0LXJlc291cmNlLXJlbGF0aW9u
c2hpcC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9zdGFjay10cmFjZS5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9wYWdlL2VtcHR5LW9yLW1pc3NpbmctcmVzb3VyY2VzLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6ZS5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVzb3VyY2UuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvcnVudGltZS9jaGFuZ2UtZXhlY3V0aW9uLWNvbnRleHQtaWRlbnRpZmllci5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9ydW50aW1lL3NhdmVSZXN1bHQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3RvcmFnZS9kb21TdG9yYWdlLWV2ZW50cy5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci93b3JrZXIvY29uc29sZS1iYXNpYy5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci93b3JrZXIvcmVzb3VyY2VzLWluLXdvcmtlci5odG1sOgorCiAyMDE4LTEwLTAyICBDYXJsb3Mg
RWR1YXJkbyBSYW1hbGhvICA8Y2FkdWJlbnR6ZW5AZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtd
IGZhc3QvZm9ybXMvY29sb3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci5odG1sIGlzIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9jcm9zcy1k
b21haW4taW5zcGVjdGVkLW5vZGUtYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kb20vY3Jvc3MtZG9tYWluLWluc3BlY3RlZC1ub2RlLWFjY2Vzcy5odG1sCmlu
ZGV4IGI0OTlhYmNiZTJiZGJlM2IwMWY2ZjlmMTMzZmRjZGQ0YmM5OTEwMTkuLjgyNzVlMWJiZjg1
ZjYxMmFmYzhmN2FmYmJjZjRmZDcwNGIyM2YyNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9jcm9zcy1kb21haW4taW5zcGVjdGVkLW5vZGUtYWNjZXNz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Nyb3NzLWRv
bWFpbi1pbnNwZWN0ZWQtbm9kZS1hY2Nlc3MuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRl
KCJDb21tYW5kTGluZUFQSS4kMC5jcm9zcy1mcmFtZSIpOwogCi0gICAgbGV0IG1haW5GcmFtZSA9
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQgbWFpbkZyYW1lID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgIGxldCBjaGlsZEZyYW1lcyA9IEFycmF5
LmZyb20obWFpbkZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGNoaWxkRnJhbWVzLmxlbmd0aCwgMSwgIlBhZ2Ugc2hvdWxkIGhhdmUgYSBz
dWJmcmFtZS4iKTsKIApAQCAtNzgsMTEgKzc4LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICB9CiAgICAgfSk7CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRv
Y3VtZW50Tm9kZSkgPT4gewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9y
KGRvY3VtZW50Tm9kZS5pZCwgImlmcmFtZSNteWZyYW1lIiwgKG5vZGVJZCkgPT4gewotICAgICAg
ICAgICAgbGV0IGlmcmFtZU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7
CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJp
ZnJhbWUjbXlmcmFtZSIsIChub2RlSWQpID0+IHsKKyAgICAgICAgICAgIGxldCBpZnJhbWVOb2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgIGxldCBpZnJh
bWVEb2N1bWVudE5vZGVJZCA9IGlmcmFtZU5vZGUuY2hpbGRyZW5bMF0uaWQ7Ci0gICAgICAgICAg
ICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGlmcmFtZURvY3VtZW50Tm9kZUlkLCAi
ZGl2I3Jvb3REaXYiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoaWZyYW1lRG9jdW1lbnROb2RlSWQsICJkaXYjcm9vdERpdiIsIChub2RlSWQp
ID0+IHsKICAgICAgICAgICAgICAgICBub2RlSW5NYWluRnJhbWVJZCA9IGlmcmFtZU5vZGUuaWQ7
CiAgICAgICAgICAgICAgICAgbm9kZUluU3ViRnJhbWVJZCA9IG5vZGVJZDsKICAgICAgICAgICAg
ICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9kaXNjb25uZWN0LWRvbS10cmVlLWFmdGVyLW1h
aW4tZnJhbWUtbmF2aWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZG9tL2Rpc2Nvbm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFpbi1mcmFtZS1uYXZpZ2F0aW9uLmh0
bWwKaW5kZXggYTU1MDQ2YmJhYzU4NmEwM2Y4NmM1ZmQ5ZDQ4NzMxZGEzNDRiZjgxNi4uNmY1NDc1
ZTM0YWE4YTg1MzFlNGZlZjdkM2M3NGRlNDk1ODM2OTM5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL2Rpc2Nvbm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFp
bi1mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZG9tL2Rpc2Nvbm5lY3QtZG9tLXRyZWUtYWZ0ZXItbWFpbi1mcmFtZS1uYXZpZ2F0aW9u
Lmh0bWwKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJD
aGVja0xhenlJbml0aWFsaXphdGlvbk9mRE9NVHJlZSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAi
Q2hlY2sgdGhhdCBET01UcmVlIGluc3RhbmNlcyBhcmUgY3JlYXRlZCBsYXppbHkuIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBpbnN0YW5jZXMgPSBX
SS5kb21UcmVlTWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUp
OworICAgICAgICAgICAgbGV0IGluc3RhbmNlcyA9IFdJLmRvbU1hbmFnZXIucmV0YWluZWRPYmpl
Y3RzV2l0aFByb3RvdHlwZShXSS5ET01UcmVlKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChpbnN0YW5jZXMuc2l6ZSA9PT0gMCwgIlRoZXJlIHNob3VsZCBub3QgYmUgYSBE
T01UcmVlIGxpc3RlbmluZyB0byBET01UcmVlTWFuYWdlciBldmVudHMgaW5pdGlhbGx5LiIpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkRPTVRyZWUgaW5zdGFuY2UgY291bnQ6ICIg
KyBpbnN0YW5jZXMuc2l6ZSk7CiAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC0yMiwxMCArMjIs
MTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDaGVja0RPTVRyZWVDb3VudEFm
dGVyVXNpbmdHZXR0ZXIiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGNv
dW50IG9mIGNvbm5lY3RlZCBET01UcmVlcyBpcyBjb3JyZWN0IGFmdGVyIGluaXRpYWxpemluZyB0
aGVtLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQg
bWFpbkZyYW1lID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICAg
ICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAg
ICAgIG1haW5GcmFtZS5kb21UcmVlOyAvLyBGb3JjZSBjcmVhdGlvbiBvZiB0aGUgcm9vdCBET00g
dHJlZS4KIAotICAgICAgICAgICAgbGV0IGluc3RhbmNlcyA9IFdJLmRvbVRyZWVNYW5hZ2VyLnJl
dGFpbmVkT2JqZWN0c1dpdGhQcm90b3R5cGUoV0kuRE9NVHJlZSk7CisgICAgICAgICAgICBsZXQg
aW5zdGFuY2VzID0gV0kuZG9tTWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJ
LkRPTVRyZWUpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc3RhbmNl
cy5zaXplID09PSAxLCAiVGhlcmUgc2hvdWxkIGJlIGEgb25lIERPTVRyZWUgbGlzdGVuaW5nIHRv
IERPTVRyZWVNYW5hZ2VyIGV2ZW50cyBhZnRlciBjcmVhdGlvbi4iKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJET01UcmVlIGluc3RhbmNlIGNvdW50OiAiICsgaW5zdGFuY2VzLnNp
emUpOwogCkBAIC0zOSw3ICszOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0
IGNoaWxkcmVuTGV2ZWwzID0gQXJyYXkuZnJvbShjaGlsZHJlbkxldmVsMlswXS5jaGlsZEZyYW1l
Q29sbGVjdGlvbik7CiAgICAgICAgICAgICBjaGlsZHJlbkxldmVsM1swXS5kb21UcmVlOwogCi0g
ICAgICAgICAgICBpbnN0YW5jZXMgPSBXSS5kb21UcmVlTWFuYWdlci5yZXRhaW5lZE9iamVjdHNX
aXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOworICAgICAgICAgICAgaW5zdGFuY2VzID0gV0kuZG9t
TWFuYWdlci5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOwogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc3RhbmNlcy5zaXplID09PSA0LCAiVGhl
cmUgc2hvdWxkIGJlIGZvdXIgRE9NVHJlZXMgbGlzdGVuaW5nIHRvIERPTVRyZWVNYW5hZ2VyIGV2
ZW50cyBhZnRlciB0b3VjaGluZyBlYWNoIEZyYW1lLiIpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkRPTVRyZWUgaW5zdGFuY2UgY291bnQ6ICIgKyBpbnN0YW5jZXMuc2l6ZSk7CiAK
QEAgLTUzLDcgKzUzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7CiAgICAgICAgICAgICBXSS5GcmFtZS5hd2FpdEV2ZW50KFdJLkZyYW1lLkV2ZW50
Lk1haW5SZXNvdXJjZURpZENoYW5nZSkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewot
ICAgICAgICAgICAgICAgIGxldCBpbnN0YW5jZXMgPSBXSS5kb21UcmVlTWFuYWdlci5yZXRhaW5l
ZE9iamVjdHNXaXRoUHJvdG90eXBlKFdJLkRPTVRyZWUpOworICAgICAgICAgICAgICAgIGxldCBp
bnN0YW5jZXMgPSBXSS5kb21NYW5hZ2VyLnJldGFpbmVkT2JqZWN0c1dpdGhQcm90b3R5cGUoV0ku
RE9NVHJlZSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc3Rh
bmNlcy5zaXplID09PSAwLCAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgRE9NVHJlZXMgbGlzdGVu
aW5nIHRvIERPTVRyZWVNYW5hZ2VyIGV2ZW50cyBhZnRlciBhIG1haW4gZnJhbWUgbmF2aWdhdGlv
bi4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRE9NVHJlZSBpbnN0YW5j
ZSBjb3VudDogIiArIGluc3RhbmNlcy5zaXplKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKaW5kZXgg
OTBhMzA1M2VmNjVlYmI2NTU2MzQzOTRiN2UyNWZhNjMzY2E3OGM1OS4uMDQ4ZjllMzBmNmNlZDMz
MTcyMWYwMWNjNTNlZGU5MjJiMjk5MzM3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcwpAQCAtMyw3ICszLDcgQEAgVGVzdFBh
Z2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKIEluc3BlY3RvclRlc3QuU2hhcGVz
ID0gewogICAgIGdldFNoYXBlT3V0c2lkZUluZm9Gb3JTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0
b3IsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KHJlcXVlc3REb2N1bWVudENhbGxiYWNrKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQocmVxdWVzdERvY3VtZW50Q2FsbGJhY2spOwogCiAgICAgICAgIGZ1bmN0
aW9uIHJlcXVlc3REb2N1bWVudENhbGxiYWNrKG5vZGUpIHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCAiVW5leHBlY3RlZCBhcmd1
bWVudCB0byByZXF1ZXN0RG9jdW1lbnQgY2FsbGJhY2suIikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItcGFnZS5odG1sCmlu
ZGV4IDdjMDRkNmI1ZGZkMTE2YzIyOWNlMWRkOWI1OTg2MTQxMzYxMjEyN2QuLjg3MjcxNWUyOTdh
YWVkNjkzMjc0YmVkOTgzMjE1YzgxOGEyNjI0ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIvaGFyLXBhZ2UuaHRtbApAQCAt
ODgsNyArODgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInNldHVwKCkiKTsKICAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRl
c3QuYXdhaXRFdmVudCgiU2V0dXBDb21wbGV0ZSIpOwogCi0gICAgICAgICAgICBsZXQgcmVzb3Vy
Y2VzID0gW1dJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2UsIC4u
LldJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb25dOwor
ICAgICAgICAgICAgbGV0IHJlc291cmNlcyA9IFtXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUu
bWFpblJlc291cmNlLCAuLi5XSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xs
ZWN0aW9uXTsKICAgICAgICAgICAgIGxldCBoYXIgPSBhd2FpdCBXSS5IQVJCdWlsZGVyLmJ1aWxk
QXJjaGl2ZShyZXNvdXJjZXMpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5qc29uKGhhciwg
SEFSSlNPTkZpbHRlcik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJjbGVhbnVwKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbG9hZFJlc291cmNlLWluc2VjdXJlLXJlc291cmNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvYWRSZXNvdXJjZS1pbnNlY3VyZS1y
ZXNvdXJjZS5odG1sCmluZGV4IDQxNGJkZjQxMTE0NzM2ZjQyOGMwZDY5N2NhMDlkYTRlN2M0ZDk2
NGIuLjJmZDUxZTJkOTIyNzIzNzRlZTk2MWZkMmQwOGVkNzVmYjljNjE4Y2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9hZFJlc291cmNlLWlu
c2VjdXJlLXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9sb2FkUmVzb3VyY2UtaW5zZWN1cmUtcmVzb3VyY2UuaHRtbApAQCAtMTIsNyAr
MTIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdHJ5
aW5nIHRvIGxvYWQgYW4gaHR0cHMgcmVzb3VyY2UgZnJvbSBhIHNlY3VyZSBwYWdlIHN1Y2NlZWRz
LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBjb25zdCB1
cmwgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
ZGF0YS5qc29uPzEiOwotICAgICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQsIHVybCwgKGVycm9yLCBjb250ZW50LCBt
aW1lVHlwZSwgc3RhdHVzKSA9PiB7CisgICAgICAgICAgICBOZXR3b3JrQWdlbnQubG9hZFJlc291
cmNlKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5pZCwgdXJsLCAoZXJyb3IsIGNvbnRlbnQs
IG1pbWVUeXBlLCBzdGF0dXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoIWVycm9yLCAiU2hvdWxkIG5vdCBiZSBhbiBlcnJvciBsb2FkaW5nIGEgc2VjdXJl
IHJlc291cmNlLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
c3RhdHVzLCAyMDAsICJTaG91bGQgYmUgYSAyMDAgT0sgc3RhdHVzLiIpOwogICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiRW5zdXJlIHRyeWluZyB0byBsb2FkIGFuIGh0dHAgcmVzb3VyY2UgZnJv
bSBhIHNlY3VyZSBwYWdlIGZhaWxzLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMDo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLmpzb24/MiI7Ci0gICAgICAgICAgICBOZXR3b3JrQWdl
bnQubG9hZFJlc291cmNlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5pZCwgdXJs
LCAoZXJyb3IsIGNvbnRlbnQsIG1pbWVUeXBlLCBzdGF0dXMpID0+IHsKKyAgICAgICAgICAgIE5l
dHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkLCB1
cmwsIChlcnJvciwgY29udGVudCwgbWltZVR5cGUsIHN0YXR1cykgPT4gewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBiZSBhbiBlcnJvciBs
b2FkaW5nIGFuIGluc2VjdXJlIHJlc291cmNlLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucGFzcyhlcnJvcik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNw
b25zZS1zb3VyY2UtbWVtb3J5LWNhY2hlLXJldmFsaWRhdGUtZXhwaXJlZC1vbmx5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNl
LXNvdXJjZS1tZW1vcnktY2FjaGUtcmV2YWxpZGF0ZS1leHBpcmVkLW9ubHkuaHRtbAppbmRleCBk
MDMzZTdmZTVhZTZjY2VjMTBhNzgxNjJiYzU4NDVjOTMxMWMzN2Y4Li45NTFmODgzNjUwZDUwNTc1
NzE0M2Y5YjlhNTBmM2Q1MWM3NzQ4MjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1tZW1vcnktY2Fj
aGUtcmV2YWxpZGF0ZS1leHBpcmVkLW9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1tZW1vcnktY2Fj
aGUtcmV2YWxpZGF0ZS1leHBpcmVkLW9ubHkuaHRtbApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9y
ZUNhY2hlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJMb2FkQ29tcGxldGUiKS50aGVuKChldmVudCkgPT4g
ewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBudWxsOwotICAgICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpdGVtIG9mIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFt
ZS5yZXNvdXJjZUNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRl
bSBvZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KGl0ZW0udXJsKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlID0gaXRlbTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Utc291cmNlLW1lbW9yeS1jYWNoZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1y
ZXNwb25zZS1zb3VyY2UtbWVtb3J5LWNhY2hlLmh0bWwKaW5kZXggODg4NThhMTU1NDk1ZGQwNGU0
YWRlYWEwMDgyMzVkYWY5ZDczYTdiYi4uNzllNjYwMTdhNjk1MzVjZmFlYmJmOWM0ZDFiZjhmOTVi
NDkzYmM4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZS1yZXNwb25zZS1zb3VyY2UtbWVtb3J5LWNhY2hlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25zZS1z
b3VyY2UtbWVtb3J5LWNhY2hlLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZX0p
OwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiTG9hZENvbXBsZXRl
IikudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0g
bnVsbDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5mcmFtZVJlc291
cmNlTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAobGV0IGl0ZW0gb2YgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnJlc291
cmNlQ29sbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4udGVz
dChpdGVtLnVybCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IGl0
ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXNpemVzLW1lbW9y
eS1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZS1zaXplcy1tZW1vcnktY2FjaGUuaHRtbAppbmRleCAyODAxMDNjY2EzZDRhNDIxNjM1
NmE0NmZiZGE0ZjNkZjg0ODlmNWJmLi5kNDI5MDE3MDIwMGY0MjQ0MWZhNmZiMjJmMGNlZTM5NDRh
MGNiMzU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlLXNpemVzLW1lbW9yeS1jYWNoZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtbWVtb3J5LWNhY2hlLmh0
bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzfSk7
CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJMb2FkQ29tcGxl
dGUiKS50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IG51
bGw7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgZm9y
IChsZXQgaXRlbSBvZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0
aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuLnRlc3QoaXRlbS51cmwpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IGl0ZW07CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvc2V0LXJlc291cmNlLWNhY2hpbmctZGlzYWJsZWQtbWVtb3J5LWNhY2hl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3NldC1yZXNv
dXJjZS1jYWNoaW5nLWRpc2FibGVkLW1lbW9yeS1jYWNoZS5odG1sCmluZGV4IDJmNTRiMWFjZTU0
NWJiYzNiZDFmMmE0MGU3YzZkZjZhODk3NjhlMmUuLjE5OTVhZmI5M2Y0ZjU5Nzk4MjViYjFiNmFm
ZjMzNGI1NGFmMWRlOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvc2V0LXJlc291cmNlLWNhY2hpbmctZGlzYWJsZWQtbWVtb3J5LWNhY2hlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9zZXQtcmVz
b3VyY2UtY2FjaGluZy1kaXNhYmxlZC1tZW1vcnktY2FjaGUuaHRtbApAQCAtMjEsNyArMjEsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBh
Z2Uoe2lnbm9yZUNhY2hlfSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2
ZW50KCJMb2FkQ29tcGxldGUiKS50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICBsZXQgcmVzb3VyY2UgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVt
IG9mIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocGF0dGVybi50ZXN0KGl0ZW0udXJsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlID0gaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1sCmluZGV4IDYyNjI4NGY4
NmZhNDM4NGFlMjVjMTgyYWM1ZGIxMzE5ZjExMDAxNTcuLmI2ZTI0ZDI2N2I1ZDU5NmVlMWEwYTRm
NDA3Y2QzNjlhYjQzZmZjNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxv
YWQuaHRtbApAQCAtNDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IHRoYXQgdGhlIGV4aXN0aW5nIHdlYnNvY2tldCBpcyBzZW50IHRvIHRoZSBm
cm9udGVuZCB3aGVuIGl0IGlzIGZpcnN0IG9wZW5lZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewogICAgICAgICAgICAgY29uc3QgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2VjaG8iOwotICAgICAgICAgICAgbGV0IHdl
YlNvY2tldFJlc291cmNlcyA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNv
dXJjZUNvbGxlY3Rpb25Gb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KTsKKyAgICAg
ICAgICAgIGxldCB3ZWJTb2NrZXRSZXNvdXJjZXMgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCk7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHdlYlNvY2tldFJlc291cmNl
cy5zaXplLCAxLCAiU2hvdWxkIGhhdmUgMSBXZWJTb2NrZXRSZXNvdXJjZSIpOwogCiAgICAgICAg
ICAgICBsZXQgd2ViU29ja2V0UmVzb3VyY2UgPSBBcnJheS5mcm9tKHdlYlNvY2tldFJlc291cmNl
cylbMF07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2luc3BlY3Rvci9yZXNvbHZlV2ViU29ja2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9yZXNvbHZlV2ViU29ja2V0Lmh0
bWwKaW5kZXggYjY3YmY5NTM4ZWRhZWZlNzg5NmMyNGQ4NTE0ZDJmMmQzNWVmNmVlYi4uMjQ2NDJh
OGIyZjI2YmViOThhNTYxOTE2NzQ3YjM2YWNjNTgyMTQzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvcmVzb2x2ZVdlYlNv
Y2tldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yL3Jlc29sdmVXZWJTb2NrZXQuaHRtbApAQCAtMjQsNyArMjQsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQg
cmVzcG9uc2UgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGlkZW50aWZpZXIuIiwKICAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGNvbnN0IHVybCA9ICJ3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9lY2hvIjsKLSAgICAgICAg
ICAgIGxldCB3ZWJTb2NrZXRSZXNvdXJjZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291
cmNlRm9yVVJMKHVybCk7CisgICAgICAgICAgICBsZXQgd2ViU29ja2V0UmVzb3VyY2UgPSBXSS5u
ZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwogICAgICAgICAgICAgaWYgKCF3ZWJT
b2NrZXRSZXNvdXJjZSkgewogICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBXZWJTb2Nr
ZXQgcmVzb3VyY2UuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0Tm9kZS5odG1sCmluZGV4IDBkY2M4ZGNkZjUzODhhYTU1
NzY4NTk3MjYxZWU4MWQ4OWIyMGU3OWEuLjMyZGI3MzU1MGRjYzFjZGQ3NzAwZDY5NTUzMTg5ZDc1
MmIxYzNkMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVxdWVz
dE5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3ROb2Rl
Lmh0bWwKQEAgLTYzLDE0ICs2MywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBjYW52YXNlcy5mb3JFYWNoKChjYW52YXMpID0+IHsKLSAgICAgICAg
ICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkg
PT4geworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1
bWVudE5vZGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQucmVxdWVzdE5v
ZGUoY2FudmFzLmlkZW50aWZpZXIsIChlcnJvciwgbm9kZUlkKSA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWpl
Y3QoZXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNNYXAuc2V0
KGNhbnZhcywgV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZXNNYXAuc2V0KGNhbnZhcywgV0kuZG9tTWFuYWdlci5ub2RlRm9y
SWQobm9kZUlkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXNNYXAuc2l6ZSA9
PT0gZXhwZWN0ZWRMZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvZGVtaXJyb3IvcmVzb3VyY2VzL3ByZXR0eXByaW50aW5nL3V0aWxpdGllcy5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb2RlbWlycm9yL3Jlc291cmNlcy9wcmV0dHlwcmludGluZy91
dGlsaXRpZXMuanMKaW5kZXggM2VmMmU3NzY4NTlmYTk2YTA3NWMzNzdjYjM0ZjQ1YWRlYzVkOWM0
Ni4uNGIxZDY4Mjc5Y2Y5NDNhYzcyMDg2YTgzYTU3YzA1MzcwZTI2ZjEzYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvZGVtaXJyb3IvcmVzb3VyY2VzL3ByZXR0eXByaW50aW5n
L3V0aWxpdGllcy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29kZW1pcnJvci9yZXNv
dXJjZXMvcHJldHR5cHJpbnRpbmcvdXRpbGl0aWVzLmpzCkBAIC0yLDggKzIsOCBAQCBUZXN0UGFn
ZS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgewogICAgIGZ1bmN0aW9uIGxvYWRQcmV0
dHlQcmludGluZ1Rlc3RBbmRFeHBlY3RlZFJlc3VsdHModGVzdFVSTCkgewogICAgICAgICBsZXQg
ZXhwZWN0ZWRVUkwgPSB0ZXN0VVJMLnJlcGxhY2UoL1wuKFteXC5dKykkLywgIi1leHBlY3RlZC4k
MSIpOwogICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgTmV0d29ya0Fn
ZW50LmxvYWRSZXNvdXJjZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQsIHRl
c3RVUkwpLAotICAgICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUuaWQsIGV4cGVjdGVkVVJMKQorICAgICAgICAgICAgTmV0
d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQsIHRl
c3RVUkwpLAorICAgICAgICAgICAgTmV0d29ya0FnZW50LmxvYWRSZXNvdXJjZShXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWUuaWQsIGV4cGVjdGVkVVJMKQogICAgICAgICBdKS50aGVuKGZ1bmN0
aW9uKHJlc3VsdHMpIHsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3Rlc3RU
ZXh0OiByZXN1bHRzWzBdLmNvbnRlbnQsIGV4cGVjdGVkVGV4dDogcmVzdWx0c1sxXS5jb250ZW50
IH0pOwogICAgICAgICB9KTsKQEAgLTQ1LDcgKzQ1LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0
aWFsaXplcihmdW5jdGlvbigpIHsKICAgICB9CiAKICAgICB3aW5kb3cuYWRkUHJldHR5UHJpbnRp
bmdUZXN0cyA9IGZ1bmN0aW9uKHN1aXRlLCBtb2RlLCB0ZXN0cykgewotICAgICAgICBsZXQgdGVz
dFBhZ2VVUkwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNl
LnVybDsKKyAgICAgICAgbGV0IHRlc3RQYWdlVVJMID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLm1haW5SZXNvdXJjZS51cmw7CiAgICAgICAgIGxldCB0ZXN0UGFnZVJlc291cmNlc1VSTCA9
IHRlc3RQYWdlVVJMLnN1YnN0cmluZygwLCB0ZXN0UGFnZVVSTC5sYXN0SW5kZXhPZigiLyIpKTsg
ICAgICAgICAgICAKIAogICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jbGVhck1lc3NhZ2VzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jbGVhck1lc3NhZ2VzLmh0bWwKaW5kZXggM2Uw
YjgwZTljOTQxMjgzYWY1YWE3MWM4ZDgzZmRiMmFmM2VlMWY0NS4uZDUzMTU5ZThkYjhjNmQzZTIz
Zjc2MzQwNTFhZDYzNDAwZDA4OTNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUvY2xlYXJNZXNzYWdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL2NsZWFyTWVzc2FnZXMuaHRtbApAQCAtMTMsMTMgKzEzLDEzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgQ29uc29s
ZUFnZW50LmNsZWFyTWVzc2FnZXMoKTsKIAotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2Fp
dEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQorICAgICAgICAgICAgV0ku
Y29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdl
QWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIk1lc3NhZ2VBZGRlZCBldmVudCBzaG91bGQgbm90
IGZpcmUuIik7CiAgICAgICAgICAgICB9KQogICAgICAgICAgICAgLnRoZW4ocmVqZWN0LCByZWpl
Y3QpOwogCi0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdl
ci5FdmVudC5DbGVhcmVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVu
dChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkKQogICAgICAgICAgICAgLnRoZW4oKGV2
ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LCAiQ2xlYXJlZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLmh0bWwKaW5k
ZXggZjU4NmEyZDAyYWQzOWZiMTRmYjBlMzRkZDNhZjgwMjIzNDkzMDIwYS4uZGExMDVlYmUwMjIz
ODViZTNkNzk4NzM4ZWIyOGZjYzBhOTMzNmI5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGkuaHRtbApAQCAtODAsNyArODAsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIGxpc3RlbkZvckNvbnNvbGVXYXJuaW5nKHJl
c29sdmUsIHJlamVjdCkgewogICAgICAgICAvLyBEZXRlY3QgY29uc29sZSB3YXJuaW5nIGZvciAk
KCdmb28nKS4KLSAgICAgICAgV0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
SS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgIFdJ
LmNvbnNvbGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2Vy
LkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICBsZXQgbWVzc2Fn
ZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG1lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgQ09OU09MRTogJHttZXNzYWdlLm1lc3NhZ2VUZXh0fWApOwpAQCAtOTAs
MTQgKzkwLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNlbGVj
dEVsZW1lbnRGb3JEb2xsYXJaZXJvKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICBX
SS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAg
ICAgICBpZiAoIWRvY3VtZW50Tm9kZSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJGQUlMOiBET00gbm9kZSBub3QgZm91bmQuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlamVjdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTZWxlY3QgZGl2I2Zv
byBmb3IgJDAuCi0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRv
Y3VtZW50Tm9kZS5pZCwgIiNmb28iLCAoY29udGVudE5vZGVJZCkgPT4geworICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNmb28iLCAoY29u
dGVudE5vZGVJZCkgPT4gewogICAgICAgICAgICAgICAgIGlmICghY29udGVudE5vZGVJZCkgewog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogRE9NIG5vZGUgbm90
IGZvdW5kLiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWFwaS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1hcGkuaHRtbAppbmRleCBhNGM5NDE3
OGU2OTI5OGE0ZWM3YjY1YjVlMWU3NjYxNGViZTE1ZjVhLi5kNWYxZGY4MjljODgzZWIxZTQ5ZDkw
OWUzOGMxOGYxZTZiMDVjMmJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS9jb25zb2xlLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
L2NvbnNvbGUtYXBpLmh0bWwKQEAgLTU3LDcgKzU3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKLSAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBtZXNz
YWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCht
ZXNzYWdlIGluc3RhbmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UpOwogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiXG5TVEVQOiAiICsgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1jb3VudC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1jb3VudC5odG1sCmluZGV4IDAxMzA3
YmJkNDRlNzU0NWQzYzI3NjYwNmNkZTA3MDUyM2M3ODM2ZDEuLmQ2NDhhZGJiZjIwODYwYzcxZWYy
N2UwOTk5OWFlOWU1NDMwYTY3MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL2NvbnNvbGUtY291bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS9jb25zb2xlLWNvdW50Lmh0bWwKQEAgLTMxLDEyICszMSwxMiBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBzZWVu
ID0gMDsKICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gMTY7Ci0gICAgICAgICAgICBXSS5s
b2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRk
ZWQsIGhhbmRsZXIpOworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAg
ICAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkgewogICAgICAgICAgICAgICAgIGxldCBt
ZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKG1lc3NhZ2UubWVzc2FnZVRleHQpOwogICAgICAgICAgICAgICAgIGlmICgrK3NlZW4g
PT09IGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7
CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTUyLDEyICs1MiwxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBzZWVuID0gMDsKICAgICAgICAgICAgIGNv
bnN0IGV4cGVjdGVkID0gMjA7Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOworICAgICAg
ICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24gaGFu
ZGxlcihldmVudCkgewogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gZXZlbnQuZGF0YS5t
ZXNzYWdlOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG1lc3NhZ2UubWVzc2Fn
ZVRleHQpOwogICAgICAgICAgICAgICAgIGlmICgrK3NlZW4gPT09IGV4cGVjdGVkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dN
YW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAgICAgICAgICAgICAgICAg
IFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIu
RXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdGFibGUuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdGFibGUuaHRtbAppbmRleCBkZGQyYTE5MmY2ZThh
MTEzNjVjMDliYzA3ODUxNThhZjg4MjhjYWI2Li42ZjkzM2VkYTRhNmNlOTZkMGVlYjJjN2FkMDg0
NTM4Mjk0MWU5NDhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9j
b25zb2xlLXRhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29u
c29sZS10YWJsZS5odG1sCkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgfQogCi0gICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbihldmVudCkgewor
ICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIu
RXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgbWVzc2Fn
ZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobWVz
c2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlxuU1RFUDogIiArIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtdGltZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10aW1lLmh0bWwKaW5kZXggNTllNTJkYzc1
MWMzMTdlZGU1Yjk2ZmQ5ZTc4ZmJjZWVhM2Y3NGUwZi4uMDVmNDRjYTljMDNlM2JlYWUzYjNjZWE0
ZDhjZGUxZDhlZDkwZDU5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvY29uc29sZS10aW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
Y29uc29sZS10aW1lLmh0bWwKQEAgLTEzLDEzICsxMywxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGxldCBzZWVuID0gMDsK
ICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gMzsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFu
ZGxlcik7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CiAgICAgICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2Ug
PSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KG1lc3NhZ2UudHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVGlt
aW5nLCAiU2hvdWxkIHJlY2VpdmUgYSBUaW1pbmcgdHlwZSBtZXNzYWdlLiIpOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChtZXNzYWdlLm1lc3NhZ2VUZXh0LmluY2x1
ZGVzKCJkZWZhdWx0IiksICJNZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSAnZGVmYXVsdCcgbGFi
ZWwgbmFtZSBzb21ld2hlcmUuIik7CiAgICAgICAgICAgICAgICAgaWYgKCsrc2VlbiA9PT0gZXhw
ZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5D
b25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
MzksNyArMzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIlVzZXJMYWJlbHMi
LAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCB1c2VyIGxhYmVscyB3b3JrcyBhcyBl
eHBlY3RlZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAg
V0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVk
KQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFu
YWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsK
ICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZS50eXBlID09PSBXSS5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UaW1pbmcsICJTaG91bGQgcmVjZWl2ZSBhIFRpbWlu
ZyB0eXBlIG1lc3NhZ2UuIik7CkBAIC01OCwxNCArNTgsMTQgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBsZXQgc2VlbiA9IDA7
CiAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IDI7Ci0gICAgICAgICAgICBXSS5sb2dNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhh
bmRsZXIpOworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOwogICAgICAgICAg
ICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkgewogICAgICAgICAgICAgICAgIGxldCBtZXNzYWdl
ID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZExhYmVs
ID0gc2VlbiA9PT0gMCA/ICJteS1sYWJlbC0yIiA6ICJteS1sYWJlbC0xIjsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZS50eXBlID09PSBXSS5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5UaW1pbmcsICJTaG91bGQgcmVjZWl2ZSBhIFRpbWluZyB0eXBl
IG1lc3NhZ2UuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG1l
c3NhZ2UubWVzc2FnZVRleHQuaW5jbHVkZXMoZXhwZWN0ZWRMYWJlbCksICJNZXNzYWdlIHNob3Vs
ZCBjb250YWluIHRoZSAnIiArIGV4cGVjdGVkTGFiZWwgKyAiJyBsYWJlbCBuYW1lIHNvbWV3aGVy
ZS4iKTsKICAgICAgICAgICAgICAgICBpZiAoKytzZWVuID09PSBleHBlY3RlZCkgewotICAgICAg
ICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFu
YWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGhhbmRsZXIpOworICAgICAgICAgICAgICAgICAgICBX
SS5jb25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2
ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04MSw3ICs4MSw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiV2FybldoZW5FeGlzdGluZyIsCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiVGVzdCBmb3IgYSB3YXJuaW5nIHdoZW4gdHJ5aW5nIHRvIHN0YXJ0IGFu
IGFscmVhZHkgc3RhcnRlZCB0aW1lci4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFn
ZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHsKICAg
ICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAg
ICAgICAgICBpZiAobWVzc2FnZS5sZXZlbCA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLldhcm5pbmcpIHsKQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKG1lc3NhZ2UudHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVGltaW5n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgaGFuZGxlcik7CisgICAgICAgICAg
ICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29s
ZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwNiw3
ICsxMDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIldhcm5XaGVuTm90RXhp
c3RpbmciLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZm9yIGEgd2FybmluZyB3aGVuIHRy
eWluZyB0byBzdGFydCBhbiBhbHJlYWR5IHN0YXJ0ZWQgdGltZXIuIiwKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRFdmVudChX
SS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKQog
ICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IG1lc3Nh
Z2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KG1lc3NhZ2UudHlwZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
VGltaW5nLCAiU2hvdWxkIHJlY2VpdmUgYSBUaW1pbmcgdHlwZSBtZXNzYWdlLiIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS5o
dG1sCmluZGV4IGRiOGIzYmVjOWZlOTlkY2ZmNDY1ZGJmMDdiM2Q5YzdiMTQ3YzEyNGQuLmQxZDU5
NmI1MWU3OGNhOGZlZmE5OTkyNjA5Njc0NjJiOGZiYzBhZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2Utc3RhY2stdHJhY2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlLXN0YWNrLXRyYWNlLmh0bWwKQEAgLTU2
LDcgKzU2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIFdJ
LmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VB
ZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4gewogICAg
ICAgICBsZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobWVzc2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsKICAgICAg
ICAgaWYgKG1lc3NhZ2VDaGVja2VyICYmIG1lc3NhZ2VDaGVja2VyKG1lc3NhZ2UpKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlQWRkZWQtZnJvbS1u
YW1lZC1ldmFsdWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVz
c2FnZUFkZGVkLWZyb20tbmFtZWQtZXZhbHVhdGlvbnMuaHRtbAppbmRleCAwMjQzNTI5ZDQ2NjA1
YzQ2MTU4M2ZlMTY1NzFhMGZiYjlhZDk5NDY5Li44NTZkZDZjYjUzOWM0OTQ3NDNiYzZjZTdkOGVj
ZTgxY2FkNWUxNWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9t
ZXNzYWdlQWRkZWQtZnJvbS1uYW1lZC1ldmFsdWF0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VBZGRlZC1mcm9tLW5hbWVkLWV2YWx1YXRpb25zLmh0
bWwKQEAgLTIxLDcgKzIxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJUcmln
Z2VyTWVzc2FnZUZyb21OYW1lRXZhbHVhdGlvbiIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiTWVz
c2FnZSBmcm9tIG5hbWVkIGV2YWx1YXRpb24gc2hvdWxkIGhhdmUgYSBzb3VyY2UgbG9jYXRpb24u
IiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01h
bmFnZXIuYXdhaXRFdmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAg
ICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZl
bnQuTWVzc2FnZUFkZGVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAg
ICAgICAgICAgbGV0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAg
ICAgbGV0IHRvcENhbGxGcmFtZSA9IG1lc3NhZ2Uuc3RhY2tUcmFjZS5jYWxsRnJhbWVzWzBdOwpA
QCAtMzcsNyArMzcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIlRyaWdnZXJF
eGNlcHRpb25Gcm9tTmFtZUZ1bmN0aW9uQ29uc3RydWN0b3JFdmFsdWF0aW9uIiwKICAgICAgICAg
ZGVzY3JpcHRpb246ICJFeGNlcHRpb24gbWVzc2FnZSBmcm9tIG5hbWVkIEZ1bmN0aW9uIGNvbnN0
cnVjdG9yIGV2YWx1YXRpb24gc2hvdWxkIGhhdmUgYSBzb3VyY2UgbG9jYXRpb24uIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdh
aXRFdmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKKyAgICAgICAgICAgIFdJ
LmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2Fn
ZUFkZGVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAg
bGV0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgbGV0IHRv
cENhbGxGcmFtZSA9IG1lc3NhZ2Uuc3RhY2tUcmFjZS5jYWxsRnJhbWVzWzBdOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZVJlcGVhdENvdW50VXBkYXRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZVJlcGVhdENvdW50
VXBkYXRlZC5odG1sCmluZGV4IDdjZjg2ZjY2MjE0MDQxNjliY2E0OWExMDE5NzJmNjhkMzEzMTdj
YjEuLjc0OTU2NjBiMTVlM2JmMDM3MTA5ZWUyYWEwMGJhMDM0YmE2ZTBkOWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9tZXNzYWdlUmVwZWF0Q291
bnRVcGRhdGVkLmh0bWwKQEAgLTE0LDE2ICsxNCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgbmFtZTogIkFkZFRlc3RNZXNzYWdlIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJBZGQgYSBu
ZXcgbWVzc2FnZSwgaXQgc2hvdWxkIGhhdmUgYSBzaW5nbGUgcmVwZWF0IGNvdW50LiIsCiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBX
SS5sb2dNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQu
UHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIGxldCBsaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
ZmFsc2UsICJTaG91bGQgbm90IGZpcmUgUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVk
IHlldC4iKTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwogCi0g
ICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5N
ZXNzYWdlQWRkZWQpCisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJ
LkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCkKICAgICAgICAgICAgIC50aGVuKChl
dmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVu
dC5kYXRhLm1lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSwgIk1lc3NhZ2VBZGRl
ZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoZXZlbnQuZGF0YS5tZXNzYWdlLnJlcGVhdENvdW50ID09PSAxLCAiQ29uc29sZU1l
c3NhZ2UgcmVwZWF0Q291bnQgaXMgMS4iKTsKLSAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VS
ZXBlYXRDb3VudFVwZGF0ZWQsIGxpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgbGlzdGVuZXIsIG51bGwpOwogICAg
ICAgICAgICAgfSkKICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAKQEAgLTM2
LDE2ICszNiwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6IGBSZXBlYXRU
ZXN0TWVzc2FnZSR7aX1gLAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJSZXBlYXQgdGhlIGxh
c3QgbWVzc2FnZSwgaXQgc2hvdWxkIHRyaWdnZXIgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZC4i
LAogICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxv
Z01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5l
cihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4gewogICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3Qg
ZmlyZSBNZXNzYWdlQWRkZWQsIHRoaXMgc2hvdWxkIGJlIGEgcmVwZWF0LiIpOwogICAgICAgICAg
ICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
ICAgIFdJLmxvZ01hbmFnZXIuYXdhaXRFdmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3Vz
TWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCkKKyAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFu
YWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LCAiUHJldmlv
dXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkIHNob3VsZCBmaXJlLiIpOwogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5jb3VudCA9PT0gKGkg
KyAxKSwgYENvdW50IHNob3VsZCBiZSAke2kgKyAxfS5gKTsKLSAgICAgICAgICAgICAgICAgICAg
V0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVz
c2FnZUFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNv
bGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVz
c2FnZUFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAg
ICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwogCkBAIC01OCwxNiArNTgsMTYgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJBZGREaWZmZXJlbnRNZXNzYWdlIiwKICAgICAg
ICAgZGVzY3JpcHRpb246ICJBZGQgYSBkaWZmZXJlbnQgbWVzc2FnZSwgaXQgc2hvdWxkIHJlc2V0
IHRoZSByZXBlYXQgY291bnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmxvZ01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0
ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY29uc29sZU1h
bmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJl
dmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgZmlyZSBQcmV2aW91
c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMgbWVzc2FnZSBpcyBkaWZmZXJlbnQuIik7
CiAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAg
ICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xl
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+
IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5t
ZXNzYWdlIGluc3RhbmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UsICJNZXNzYWdlQWRkZWQgZXZlbnQg
c2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KGV2ZW50LmRhdGEubWVzc2FnZS5yZXBlYXRDb3VudCA9PT0gMSwgIkNvbnNvbGVNZXNzYWdlIHJl
cGVhdENvdW50IGlzIDEuIik7Ci0gICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291
bnRVcGRhdGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgV0kuY29uc29sZU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91
c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIGxpc3RlbmVyLCBudWxsKTsKICAgICAgICAgICAg
IH0pCiAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwogCkBAIC03OSwxNiArNzks
MTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJSZXBlYXREaWZmZXJlbnRNZXNz
YWdlIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJSZXBlYXQgdGhpcyBkaWZmZXJlbnQgbWVzc2Fn
ZSwgaXQgc2hvdWxkIGluY3JlbWVudCB0aGUgcmVwZWF0IGNvdW50LiIsCiAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5sb2dNYW5h
Z2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmNvbnNvbGVN
YW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1l
c3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoZmFsc2UsICJTaG91bGQgbm90IGZpcmUgTWVzc2FnZUFkZGVkLCB0aGlzIHNob3VsZCBi
ZSBhIHJlcGVhdC4iKTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5F
dmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQpCisgICAgICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3Vz
TWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4g
ewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIlByZXZp
b3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5jb3VudCA9PT0gMiwgIkNv
dW50IHNob3VsZCBiZSAyLiIpOwotICAgICAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgbGlzdGVuZXIs
IG51bGwpOworICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBsaXN0ZW5lciwgbnVs
bCk7CiAgICAgICAgICAgICB9KQogICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsK
IApAQCAtMTAwLDE2ICsxMDAsMTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJB
ZGRUZXN0TWVzc2FnZUFnYWluIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJBZGQgdGhlIG9yaWdp
bmFsIG1lc3NhZ2UgYWdhaW4sIGl0IHNob3VsZCBoYXZlIGEgc2luZ2xlIHJlcGVhdCBjb3VudC4i
LAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGxpc3Rl
bmVyID0gV0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2Vy
LkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5jb25zb2xlTWFuYWdlci5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRD
b3VudFVwZGF0ZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KGZhbHNlLCAiU2hvdWxkIG5vdCBmaXJlIFByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50
VXBkYXRlZCB5ZXQuIik7CiAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICB9
KTsKIAotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIu
RXZlbnQuTWVzc2FnZUFkZGVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRF
dmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCiAgICAgICAgICAgICAu
dGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZXZlbnQuZGF0YS5tZXNzYWdlIGluc3RhbmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UsICJNZXNz
YWdlQWRkZWQgZXZlbnQgc2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEubWVzc2FnZS5yZXBlYXRDb3VudCA9PT0gMSwgIkNv
bnNvbGVNZXNzYWdlIHJlcGVhdENvdW50IGlzIDEuIik7Ci0gICAgICAgICAgICAgICAgV0kubG9n
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuUHJldmlvdXNN
ZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAg
ICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIGxpc3RlbmVyLCBudWxs
KTsKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwog
CkBAIC0xMjMsNyArMTIzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJNZXNz
YWdlc1dpdGhFcXVhbFZhbHVlc1JlcGVhdHMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlJlcGVh
dCBtZXNzYWdlcyB3aXRoIGVxdWFsIHZhbHVlcyBzaG91bGQgdHJpZ2dlciBtZXNzYWdlUmVwZWF0
Q291bnRVcGRhdGVkLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91
c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQpCisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVh
dENvdW50VXBkYXRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIlByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZCBzaG91bGQgZmlyZSBmb3IgcmVwZWF0IG1lc3NhZ2VzIHdpdGggZXF1
YWwgdmFsdWVzLiIpOwogICAgICAgICAgICAgfSkKQEAgLTEzOSwxOCArMTM5LDE4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiTWVzc2FnZXNXaXRoT2JqZWN0c0RvTm90UmVwZWF0
IiwKICAgICAgICAgZGVzY3JpcHRpb246ICJSZXBlYXQgbWVzc2FnZXMgd2l0aCBvYmplY3RzIHNo
b3VsZCBub3QgdHJpZ2dlciBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgcmVwZWF0TGlzdGVuZXIgPSBX
SS5sb2dNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQu
UHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIGxldCByZXBlYXRMaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENv
dW50VXBkYXRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoZmFsc2UsICJQcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQgc2hvdWxkIG5v
dCBmaXJlIGZvciByZXBlYXQgbWVzc2FnZXMgd2l0aCBvYmplY3QgYXJndW1lbnRzLiIpOwogICAg
ICAgICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGxl
dCByZW1haW5pbmcgPSAyOwotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBmdW5jdGlvbiBhZGRMaXN0ZW5l
cihldmVudCkgeworICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uIGFkZExpc3Rl
bmVyKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2
ZW50LmRhdGEubWVzc2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlLCAiTWVzc2FnZUFk
ZGVkIGV2ZW50IHNob3VsZCBmaXJlLiIpOwogICAgICAgICAgICAgICAgIHJlbWFpbmluZy0tOwog
ICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJ
LmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZp
b3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgcmVwZWF0TGlzdGVuZXIsIG51bGwpOwotICAg
ICAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9n
TWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGFkZExpc3RlbmVyLCBudWxsKTsKKyAgICAgICAg
ICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHJlcGVh
dExpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQs
IGFkZExpc3RlbmVyLCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwpAQCAtMTY1LDE4ICsxNjUsMTggQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJNZXNzYWdlc1dpdGhEaWZmZXJlbnRMZXZlbHNE
b05vdFJlcGVhdCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVwZWF0IG1lc3NhZ2VzIHdpdGgg
ZGlmZmVyZW50IGxldmVscyBzaG91bGQgbm90IHRyaWdnZXIgbWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0
IHJlcGVhdExpc3RlbmVyID0gV0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
SS5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgcmVwZWF0TGlzdGVuZXIgPSBXSS5jb25zb2xlTWFu
YWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5QcmV2
aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGZhbHNlLCAiUHJldmlvdXNNZXNzYWdlUmVwZWF0Q291
bnRVcGRhdGVkIHNob3VsZCBub3QgZmlyZSBmb3IgcmVwZWF0IG1lc3NhZ2VzIHdpdGggZGlmZmVy
ZW50IGxldmVscy4iKTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgICAgICBsZXQgcmVtYWluaW5nID0gMjsKLSAgICAgICAgICAgIFdJLmxvZ01h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwg
ZnVuY3Rpb24gYWRkTGlzdGVuZXIoZXZlbnQpIHsKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVk
LCBmdW5jdGlvbiBhZGRMaXN0ZW5lcihldmVudCkgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLm1lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xl
TWVzc2FnZSwgIk1lc3NhZ2VBZGRlZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAg
ICAgICByZW1haW5pbmctLTsKICAgICAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZykgewotICAg
ICAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9n
TWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHJlcGVhdExp
c3RlbmVyLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBhZGRMaXN0ZW5l
ciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVwZWF0
Q291bnRVcGRhdGVkLCByZXBlYXRMaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAg
IFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIu
RXZlbnQuTWVzc2FnZUFkZGVkLCBhZGRMaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2VzQ2xlYXJlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKaW5k
ZXggYTNlNjUyZWY5MDQ5NDk4ZDAzY2U5YWRiZWY3NTQxNjE0NTIxZjEwMy4uMjlkOTM3ZTBkNTNm
MzhjMjIwOTdmMzFiZmRhNTYxMzViYmFlN2VhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvbWVzc2FnZXNDbGVhcmVkLmh0bWwKQEAgLTExLDcgKzExLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDbGVhclZpYUNvbnNvbGVDbGVhck1lc3NhZ2Vz
QVBJIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDYWxsaW5nIENvbnNvbGUuY2xlYXJNZXNzYWdl
cyBzaG91bGQgdHJpZ2dlciBDb25zb2xlLm1lc3NhZ2VzQ2xlYXJlZC4iLAogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50
KFdJLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5h
Z2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCkKICAgICAgICAg
ICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChldmVudCwgIkNsZWFyZWQgZXZlbnQgc2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAg
ICB9KQpAQCAtMjUsNyArMjUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNs
ZWFyVmlhQ29uc29sZUFQSSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2FsbGluZyBjb25zb2xl
LmNsZWFyKCkgc2hvdWxkIHRyaWdnZXIgQ29uc29sZS5tZXNzYWdlc0NsZWFyZWQuIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmxvZ01hbmFnZXIuYXdh
aXRFdmVudChXSS5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpCisgICAgICAgICAgICBXSS5jb25z
b2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpCiAg
ICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoZXZlbnQsICJDbGVhcmVkIGV2ZW50IHNob3VsZCBmaXJlLiIpOwogICAg
ICAgICAgICAgfSkKQEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5h
bWU6ICJDbGVhclZpYUNvbW1hbmRMaW5lQVBJIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDYWxs
aW5nIGBjbGVhcigpYCBpbiB0aGUgY29tbWFuZCBsaW5lIEFQSSBzaG91bGQgdHJpZ2dlciBDb25z
b2xlLm1lc3NhZ2VzQ2xlYXJlZC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgV0kubG9nTWFuYWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQu
Q2xlYXJlZCkKKyAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29u
c29sZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4g
ewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudCwgIkNsZWFy
ZWQgZXZlbnQgc2hvdWxkIGZpcmUuIik7CiAgICAgICAgICAgICB9KQpAQCAtNTMsNyArNTMsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNsZWFyVmlhUGFnZVJlbG9hZCIsCiAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiUmVsb2FkaW5nIHRoZSBwYWdlIHNob3VsZCB0cmlnZ2VyIENv
bnNvbGUubWVzc2FnZXNDbGVhcmVkLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
Ci0gICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVu
dC5DbGVhcmVkKQorICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5D
b25zb2xlTWFuYWdlci5FdmVudC5DbGVhcmVkKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9
PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LCAiQ2xl
YXJlZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvd2ViY29yZS1sb2dnaW5nLWV4cGVjdGVk
LnR4dAppbmRleCA0ZTIzMzM5YTk1MGJkM2VjYzk5ZDNiZjgxMDQ2ZDcwZjgzNGYwZmQ2Li5kMjgy
YzA1ZGIyZmU2ZWE3YWViMWE2MWIzNDNmM2YwZTE3NjAwYzM3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy1leHBlY3RlZC50
eHQKQEAgLTUsMTAgKzUsMTAgQEAgVGVzdCBXZWJLaXQgbG9nZ2luZyBjb25maWd1cmF0aW9uIGFu
ZCBjb25zb2xlIGRpc3BsYXkuCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IENvbnNvbGUuTG9nZ2lu
ZwogLS0gUnVubmluZyB0ZXN0IGNhc2U6IENvbnNvbGUuTG9nZ2luZy5CYXNpY1Byb3BlcnRpZXMK
IFBBU1M6IExvZyBjaGFubmVscyBzaG91bGQgYmUgc3VwcG9ydGVkLgotUEFTUzogSGFzIFdJLmxv
Z01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLgotUEFTUzogV0kubG9nTWFuYWdlci5jdXN0
b21Mb2dnaW5nQ2hhbm5lbHMgaXMgbm90IGVtcHR5LgotUEFTUzogSGFzIFdJLmxvZ01hbmFnZXIu
bG9nQ2hhbm5lbFNvdXJjZXMuCi1QQVNTOiBXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2Vz
IGlzIG5vdCBlbXB0eS4KK1BBU1M6IEhhcyBXSS5jb25zb2xlTWFuYWdlci5jdXN0b21Mb2dnaW5n
Q2hhbm5lbHMuCitQQVNTOiBXSS5jb25zb2xlTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMg
aXMgbm90IGVtcHR5LgorUEFTUzogSGFzIFdJLmNvbnNvbGVNYW5hZ2VyLmxvZ0NoYW5uZWxTb3Vy
Y2VzLgorUEFTUzogV0kuY29uc29sZU1hbmFnZXIubG9nQ2hhbm5lbFNvdXJjZXMgaXMgbm90IGVt
cHR5LgogUEFTUzogTG9nIGNoYW5uZWwgaGFzIGtub3duIHNvdXJjZS4KIFBBU1M6IExvZyBjaGFu
bmVsIGRpc2FibGVkIGJ5IGRlZmF1bHQuCiBQQVNTOiBMb2cgY2hhbm5lbCBoYXMga25vd24gc291
cmNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvd2ViY29yZS1s
b2dnaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dp
bmcuaHRtbAppbmRleCAwZWRlNTBlMWM2ODZkZjUzOWViZWIyMWEzZDM2MGQ5NzRiMjI3ZmI5Li41
NWI5MGQ3MDg2YzdlNDNmNTI4NjkxZTMzODQwOTQzMGRjYmZjMzM3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS93ZWJjb3JlLWxvZ2dpbmcuaHRtbApAQCAtNTEsMTQg
KzUxLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoV0kuTG9nTWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCksICJMb2cgY2hhbm5lbHMg
c2hvdWxkIGJlIHN1cHBvcnRlZC4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoV0kubG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMsICJIYXMgV0kubG9n
TWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KFdJLmxvZ01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmxl
bmd0aCwgIldJLmxvZ01hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzIGlzIG5vdCBlbXB0eS4i
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kubG9nTWFuYWdl
ci5sb2dDaGFubmVsU291cmNlcywgIkhhcyBXSS5sb2dNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2Vz
LiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5sb2dNYW5h
Z2VyLmxvZ0NoYW5uZWxTb3VyY2VzLmxlbmd0aCwgIldJLmxvZ01hbmFnZXIubG9nQ2hhbm5lbFNv
dXJjZXMgaXMgbm90IGVtcHR5LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChXSS5Db25zb2xlTWFuYWdlci5zdXBwb3J0c0xvZ0NoYW5uZWxzKCksICJMb2cgY2hh
bm5lbHMgc2hvdWxkIGJlIHN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoV0kuY29uc29sZU1hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLCAi
SGFzIFdJLmNvbnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscy4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY29uc29sZU1hbmFnZXIuY3VzdG9t
TG9nZ2luZ0NoYW5uZWxzLmxlbmd0aCwgIldJLmNvbnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdD
aGFubmVscyBpcyBub3QgZW1wdHkuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KFdJLmNvbnNvbGVNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLCAiSGFzIFdJLmNv
bnNvbGVNYW5hZ2VyLmxvZ0NoYW5uZWxTb3VyY2VzLiIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChXSS5jb25zb2xlTWFuYWdlci5sb2dDaGFubmVsU291cmNlcy5s
ZW5ndGgsICJXSS5jb25zb2xlTWFuYWdlci5sb2dDaGFubmVsU291cmNlcyBpcyBub3QgZW1wdHku
Iik7CiAKICAgICAgICAgICAgICAgICBsZXQgc291cmNlcyA9IE9iamVjdC52YWx1ZXMoV0kuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgV0kubG9nTWFuYWdl
ci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMuZm9yRWFjaCgoY2hhbm5lbCkgPT4geworICAgICAgICAg
ICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscy5mb3JFYWNoKChj
aGFubmVsKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChzb3VyY2VzLmluY2x1ZGVzKGNoYW5uZWwuc291cmNlKSwgIkxvZyBjaGFubmVsIGhhcyBrbm93
biBzb3VyY2UuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoY2hhbm5lbC5sZXZlbCwgV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmLCAiTG9nIGNoYW5u
ZWwgZGlzYWJsZWQgYnkgZGVmYXVsdC4iKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTEwNCwx
MCArMTA0LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ29uc29sZS5Mb2dn
aW5nLk5vTG9nZ2luZyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiTm8gPHZpZGVvPiBsb2dnaW5n
IHdoZW4gZGlzYWJsZWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAg
ICAgICAgIGxldCBjaGFubmVsID0gV0kubG9nTWFuYWdlci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMu
ZmluZChjaGFubmVsID0+IGNoYW5uZWwuc291cmNlID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlU291cmNlLk1lZGlhKTsKKyAgICAgICAgICAgIGxldCBjaGFubmVsID0gV0kuY29uc29sZU1h
bmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBjaGFubmVsLnNvdXJj
ZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2hhbm5lbC5sZXZlbCA9PT0gV0kuTG9nZ2luZ0No
YW5uZWwuTGV2ZWwuT2ZmLCAiTWVkaWEgbG9nZ2luZyBkaXNhYmxlZC4iKTsKIAotICAgICAgICAg
ICAgbGV0IGxvZ0xpc3RlbmVyID0gV0kubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxv
Z01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGxl
dCBsb2dMaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29u
c29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIk5vdGhpbmcgc2hvdWxkIGJlIGxvZ2dlZCB0byB0aGUg
Y29uc29sZS4iKTsKICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwpA
QCAtMTE4LDcgKzExOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmF3YWl0RXZlbnQoIlBhdXNlRXZlbnQiKS50aGVuKChldmVudCkgPT4gewogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTdG9wcGVkIFBsYXlpbmciKTsKLSAgICAgICAg
ICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5F
dmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsKKyAgICAgICAgICAgICAgICBX
SS5jb25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2
ZW50Lk1lc3NhZ2VBZGRlZCwgbG9nTGlzdGVuZXIsIG51bGwpOwogICAgICAgICAgICAgfSkudGhl
bihyZXNvbHZlLCByZWplY3QpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKGBwbGF5KClgKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIENvbnNvbGVBZ2VudC5j
bGVhck1lc3NhZ2VzKCk7CiAKLSAgICAgICAgICAgIGxldCBjaGFubmVsID0gV0kubG9nTWFuYWdl
ci5jdXN0b21Mb2dnaW5nQ2hhbm5lbHMuZmluZChjaGFubmVsID0+IGNoYW5uZWwuc291cmNlID09
PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk1lZGlhKTsKKyAgICAgICAgICAgIGxl
dCBjaGFubmVsID0gV0kuY29uc29sZU1hbmFnZXIuY3VzdG9tTG9nZ2luZ0NoYW5uZWxzLmZpbmQo
Y2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5NZWRpYSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2hhbm5l
bC5sZXZlbCA9PT0gV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmLCAiTWVkaWEgbG9nZ2luZyBk
aXNhYmxlZC4iKTsKIAogICAgICAgICAgICAgQ29uc29sZUFnZW50LnNldExvZ2dpbmdDaGFubmVs
TGV2ZWwoY2hhbm5lbC5zb3VyY2UsIFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLkJhc2ljKQpAQCAt
MTQ2LDExICsxNDYsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgbGV0IG1l
ZGlhQ2hhbm5lbCA9IGNoYW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0g
V0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG1lZGlhQ2hhbm5lbC5sZXZlbCA9PT0gV0kuTG9nZ2lu
Z0NoYW5uZWwuTGV2ZWwuQmFzaWMsICJNZWRpYSBsb2dnaW5nIGhhcyBiZWVuIGVuYWJsZWQuIik7
CiAKLSAgICAgICAgICAgICAgICBsZXQgbG9nTGlzdGVuZXIgPSBXSS5sb2dNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgIGxldCBsb2dMaXN0ZW5lciA9IFdJLmNvbnNvbGVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCAoZXZl
bnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1l
c3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1lc3NhZ2Ug
aW5zdGFuY2VvZiBXSS5Db25zb2xlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChtZXNzYWdlLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZS5NZWRpYSwgIk1lZGlhIGxvZyBtZXNzYWdlIHNob3VsZCBoYXZlIHNvdXJj
ZSAnbWVkaWEnLiIpOwotICAgICAgICAgICAgICAgICAgICBXSS5sb2dNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVy
LCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3Rl
bmVyLCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgQ29uc29sZUFnZW50LnNldExvZ2dpbmdD
aGFubmVsTGV2ZWwobWVkaWFDaGFubmVsLnNvdXJjZSwgV0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwu
T2ZmKQogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7
CkBAIC0xNjcsNyArMTY3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2
ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBDb25zb2xlQWdlbnQuY2xlYXJNZXNzYWdlcygpOwog
Ci0gICAgICAgICAgICBsZXQgY2hhbm5lbCA9IFdJLmxvZ01hbmFnZXIuY3VzdG9tTG9nZ2luZ0No
YW5uZWxzLmZpbmQoY2hhbm5lbCA9PiBjaGFubmVsLnNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVNvdXJjZS5NZWRpYSk7CisgICAgICAgICAgICBsZXQgY2hhbm5lbCA9IFdJLmNv
bnNvbGVNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVscy5maW5kKGNoYW5uZWwgPT4gY2hhbm5l
bC5zb3VyY2UgPT09IFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEpOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNoYW5uZWwubGV2ZWwgPT09IFdJLkxv
Z2dpbmdDaGFubmVsLkxldmVsLk9mZiwgIk1lZGlhIGxvZ2dpbmcgZGlzYWJsZWQuIik7CiAKICAg
ICAgICAgICAgIENvbnNvbGVBZ2VudC5zZXRMb2dnaW5nQ2hhbm5lbExldmVsKGNoYW5uZWwuc291
cmNlLCBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5WZXJib3NlKQpAQCAtMTgxLDcgKzE4MSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChtZWRpYUNoYW5uZWwubGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLlZlcmJvc2Us
ICJWZXJib3NlIG1lZGlhIGxvZ2dpbmcgaGFzIGJlZW4gZW5hYmxlZC4iKTsKIAogICAgICAgICAg
ICAgICAgIGxldCBtZXNzYWdlQ291bnQgPSAwOwotICAgICAgICAgICAgICAgIGxldCBsb2dMaXN0
ZW5lciA9IFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGxvZ0xpc3Rl
bmVyID0gV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICBs
ZXQgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobWVzc2FnZSBpbnN0YW5jZW9mIFdJLkNvbnNvbGVNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobWVzc2FnZS5zb3VyY2Ug
PT09IFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTWVkaWEpOwpAQCAtMTkxLDcgKzE5
MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KG1lc3NhZ2UucmVwZWF0Q291bnQgPT09IDEsICJDb25zb2xlTWVzc2Fn
ZSByZXBlYXRDb3VudCBpcyAxLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbWVz
c2FnZUNvdW50ID09PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlJlY2VpdmVkIHRocmVlIEpTT04gbWVzc2FnZXMuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV0kubG9nTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkxvZ01h
bmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkLCBsb2dMaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGxvZ0xpc3RlbmVyLCBudWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zb2xlQWdlbnQuc2V0TG9nZ2luZ0NoYW5u
ZWxMZXZlbChtZWRpYUNoYW5uZWwuc291cmNlLCBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5PZmYp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnRyb2xsZXIv
cnVudGltZS1jb250cm9sbGVyLWltcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnRyb2xsZXIvcnVudGltZS1jb250cm9sbGVyLWltcG9ydC5odG1sCmluZGV4IDRjYzMyZTc4MTMx
ZDZjNGY0YTE5YTA3OTM3MDU3MzJiMDg5OTI5NjYuLmNjMWJhOTlmYmE4ZWFhYzk0MjNiMGUxMDU3
Y2Y0YzYyYmVmMTM3Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb250cm9s
bGVyL3J1bnRpbWUtY29udHJvbGxlci1pbXBvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXItaW1wb3J0Lmh0bWwKQEAgLTEzLDcg
KzEzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBldmFs
dWF0aW5nIGFuIGltcG9ydCBleHByZXNzaW9uIGZyb20gY29uc29sZS4iLAogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFNvdXJjZShleHBy
ZXNzaW9uLCBjb3VudCkgewotICAgICAgICAgICAgICAgIGxldCBwcm9taXNlID0gV0kubG9nTWFu
YWdlci5hd2FpdEV2ZW50KFdJLkxvZ01hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKTsKKyAgICAg
ICAgICAgICAgICBsZXQgcHJvbWlzZSA9IFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICBXSS5ydW50aW1lTWFuYWdlci5ldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93KGV4cHJlc3Npb24s
IHtvYmplY3RHcm91cDogInRlc3QifSwgKHJlc3VsdCwgd2FzVGhyb3duKSA9PiB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250cm9sbGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbAppbmRl
eCA4MjRlNWQyMDE2ODU2MGUzZmEwYTU2MTY0OTc0ZDM5Nzg3ZWEwODk5Li5iNDljMTUxYzMzOWJh
Mzc2YTgwOGM3M2EyODljNDViMmNmOTk3N2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29udHJvbGxlci9ydW50aW1lLWNvbnRyb2xsZXIuaHRtbApAQCAtMTEyLDEz
ICsxMTIsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIC8vIFdlIGNhbiByZXNv
bHZlIGFmdGVyIHJlY2VpdmluZyB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbnNvbGUuaW5mbyBt
ZXNzYWdlcy4KICAgICAgICAgICAgIGxldCBzZWVuID0gMDsKLSAgICAgICAgICAgIGxldCBsaXN0
ZW5lciA9IFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBX
SS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbnNvbGVN
ZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICAgICAgICAgIGlmIChjb25zb2xl
TWVzc2FnZS5sZXZlbCAhPT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkluZm8pCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAoKytzZWVuICE9
PSBleHBlY3RlZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IFdJLmxvZ01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1l
c3NhZ2VBZGRlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVk
LCBsaXN0ZW5lcik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvYWRkLXJ1
bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvYWRkLXJ1bGUuaHRtbAppbmRleCAw
OWNiZjY3MTRjZTU0ZTNiYzQwYmI4MzYzZWE2N2I2Y2I3ODI3MWVkLi45OGIyNmYzN2FmMzkzZjFl
MjAzNTNiZGZhMTNlMzhkM2JhMzJhNzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL2FkZC1ydWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9hZGQt
cnVsZS5odG1sCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogCiAgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDU1MuYWRkUnVsZSIpOwogCi0g
ICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAg
ICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogCiAgICAgZnVu
Y3Rpb24gc3RyaW5naWZ5KHJhbmdlKSB7CiAgICAgICAgIHJldHVybiBgJHtyYW5nZS5zdGFydExp
bmV9OiR7cmFuZ2Uuc3RhcnRDb2x1bW59LCR7cmFuZ2UuZW5kTGluZX06JHtyYW5nZS5lbmRDb2x1
bW59YDsKQEAgLTQ2LDkgKzQ2LDkgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgY29uc3QgZG9Ob3RDcmVhdGVJZk1pc3NpbmcgPSB0cnVlOwotICAgICAg
ICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JG
cmFtZShtYWluRnJhbWUsIHVzZWRFeGlzdGluZ0luc3BlY3RvclN0eWxlc2hlZXQsIGRvTm90Q3Jl
YXRlSWZNaXNzaW5nKTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgdXNlZEV4aXN0aW5nSW5zcGVjdG9yU3R5
bGVzaGVldCwgZG9Ob3RDcmVhdGVJZk1pc3NpbmcpOwogCi0gICAgICAgICAgICBXSS5jc3NTdHls
ZU1hbmFnZXIucHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwg
aW5zcGVjdG9yU3R5bGVTaGVldEF2YWlsYWJsZSk7CisgICAgICAgICAgICBXSS5jc3NNYW5hZ2Vy
LnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIGluc3BlY3Rv
clN0eWxlU2hlZXRBdmFpbGFibGUpOwogICAgICAgICB9CiAgICAgfSk7CiAKQEAgLTcwLDcgKzcw
LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV0
IGluc3BlY3RvclN0eWxlU2hlZXQgPSBudWxsOwotICAgICAgICAgICAgZm9yIChsZXQgc3R5bGVT
aGVldCBvZiBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMpIHsKKyAgICAgICAgICAgIGZv
ciAobGV0IHN0eWxlU2hlZXQgb2YgV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cykgewogICAgICAg
ICAgICAgICAgIGlmIChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChpbnNwZWN0b3JTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZWplY3QoIlRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBpbnNwZWN0b3Igc3R5
bGUgc2hlZXQiKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBsZXQgZXh0ZXJuYWxTdHlsZVNoZWV0ID0gbnVsbDsKLSAg
ICAgICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0IG9mIFdJLmNzc01hbmFn
ZXIuc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5kaXNwbGF5
TmFtZSA9PT0gImV4dGVybmFsLmNzcyIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVy
bmFsU3R5bGVTaGVldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJUaGVyZSBz
aG91bGQgb25seSBiZSBvbmUgZXh0ZXJuYWwgc3R5bGUgc2hlZXQiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvY3JlYXRlU3R5bGVTaGVldC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Nzcy9jcmVhdGVTdHlsZVNoZWV0Lmh0bWwKaW5kZXggNWY1NzI2NWQwYjdl
MTdmOTMxNDUwNmEzMjJlNzM2MDg2YzNhYzllZS4uOTU4ZmEyNDc5MjhkNTg3YzRiYzZiOTAwNDY5
ZDFlMWY5ZGM4NmFjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jcmVh
dGVTdHlsZVNoZWV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9jcmVhdGVT
dHlsZVNoZWV0Lmh0bWwKQEAgLTYsNyArNiw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBs
ZXQgYWRkZWRTdHlsZVNoZWV0OwotICAgIGxldCBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWU7CisgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZTsKIAogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiQ1NTLmNyZWF0ZVN0eWxlU2hlZXQiKTsKIApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRl
c2NyaXB0aW9uOiAiRW5zdXJlIHRoZXJlIGFyZSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQg
YmUgbm8gc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8g
c3R5bGVzaGVldHMuIik7CiAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9
KTsKQEAgLTI0LDkgKzI0LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuYW1lOiAi
Q3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldENhbGwiICsgaSwKICAgICAgICAgICAgIGRlc2NyaXB0
aW9uOiAiU2hvdWxkIGNyZWF0ZSBhIG5ldyBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAogICAgICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBXSS5jc3NTdHls
ZU1hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFk
ZGVkKQorICAgICAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5h
Z2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNz
c1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IGksICJTaG91bGQgaW5jcmVhc2Ug
dGhlIGxpc3Qgb2Ygc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gaSwg
IlNob3VsZCBpbmNyZWFzZSB0aGUgbGlzdCBvZiBzdHlsZXNoZWV0cy4iKTsKICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5v
cmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNo
ZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRhLnN0eWxlU2hlZXQuaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpIHNob3Vs
ZCBiZSB0cnVlLiIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LnBhcmVudEZyYW1lID09PSBtYWluRnJhbWUsICJBZGRl
ZCBTdHlsZVNoZWV0IGZyYW1lIHNob3VsZCBiZSB0aGUgbWFpbiBmcmFtZS4iKTsKQEAgLTQxLDcg
KzQxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIFdJLmNz
c1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNo
ZWV0UmVtb3ZlZCkKKyAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5F
dmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkKICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5mYWlsKCJTaG91bGQgbm90IGJlIHJlbW92aW5nIGFueSBTdHlsZVNoZWV0
cyBpbiB0aGlzIHRlc3QuIik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL2Nzcy1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9j
c3MtcHJvcGVydHkuaHRtbAppbmRleCBkM2M2Nzk0YTIwMWJkYWQ5MjJiZDM4Y2YzMDJkMGE2ODFk
M2NmYWJhLi4wY2UxYmZmZDc2YzJlZTA5ZDkxNTY3MTQzMmQ3MGViZDE1MWJmMWQ2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2Nzcy1wcm9wZXJ0eS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvY3NzLXByb3BlcnR5Lmh0bWwKQEAgLTIyNCwxMSArMjI0
LDExIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0gICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiZGl2I3gi
LCAoY29udGVudE5vZGVJZCkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50
KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9y
KGRvY3VtZW50Tm9kZS5pZCwgImRpdiN4IiwgKGNvbnRlbnROb2RlSWQpID0+IHsKICAgICAgICAg
ICAgIGlmIChjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7Ci0gICAgICAgICAgICAg
ICAgbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUp
OworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQo
Y29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFn
ZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlU3R5
bGVzLm5lZWRzUmVmcmVzaCkgewogICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmds
ZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZl
bnQpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5
bGVTaGVldHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVl
dHMuaHRtbAppbmRleCBmZjYxYmRkNWViYjllOGIwNjYzZWZkN2Q1MjcwZDVlNDFkNzk5ZjkyLi42
MzNlZWE3MzhkODZiMWQ1MWM3ZDgyYmE5ZTNlY2ZiZWY3YmE4ZDAyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Nzcy9nZXRBbGxTdHlsZVNoZWV0cy5odG1sCkBAIC0xOSw5ICsxOSw5
IEBAIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogPHNjcmlwdD4KIGZ1bmN0aW9u
IHRlc3QoKQogewotICAgIFdJLmNzc1N0eWxlTWFuYWdlci5mZXRjaFN0eWxlU2hlZXRzSWZOZWVk
ZWQoKTsKKyAgICBXSS5jc3NNYW5hZ2VyLmZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpOwogICAg
IEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsK
LSAgICAgICAgbGV0IHN0eWxlU2hlZXRzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRz
OworICAgICAgICBsZXQgc3R5bGVTaGVldHMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxlU2hlZXRzOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldHMubGVuZ3RoID09PSA0
LCAiVGhlcmUgc2hvdWxkIGJlIGZvdXIgc3R5bGVzaGVldHMuIik7CiAKICAgICAgICAgZm9yIChs
ZXQgc3R5bGVTaGVldCBvZiBzdHlsZVNoZWV0cykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nzcy9tYW5hZ2VyLXByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tYW5hZ2VyLXByZWZlcnJlZEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JGcmFtZS5odG1sCmluZGV4IGQxYmZhZTBkZDE0MzIwNmQ4Y2RhMDdi
ODQ2MTczMzBiNjQxODZjNDAuLjM0MTFjZTFmYzc1MGUxYjE0OGUyMjczZGYxNmM1ZWM4YjEzZDA2
ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvbWFuYWdlci1wcmVmZXJy
ZWRJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL21hbmFnZXItcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lLmh0
bWwKQEAgLTUsNyArNSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgbGV0
IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICBsZXQg
bWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwogICAgIGxldCBjaGlsZEZy
YW1lcyA9IEFycmF5LmZyb20obWFpbkZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkRnJhbWVzLmxlbmd0aCwgMSwgIlBhZ2Ugc2hv
dWxkIGhhdmUgYSBzdWJmcmFtZS4iKTsKIApAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2NyaXB0
aW9uOiAiRW5zdXJlIHRoZXJlIGFyZSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJ
LmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8g
c3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0ku
Y3NzTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVz
aGVldHMuIik7CiAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAg
LTI0LDE0ICsyNCwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNyZWF0ZU1h
aW5GcmFtZUluc3BlY3RvclN0eWxlU2hlZXQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkZpcnN0
IHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIGNyZWF0ZSBpbnNwZWN0b3Igc3R5bGVzaGVl
dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuY3Nz
U3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5F
dmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgV0kuY3NzTWFu
YWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hl
ZXRBZGRlZCwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQu
VHlwZS5JbnNwZWN0b3IsICJBZGRlZCBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3Bl
Y3RvcicuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFt
ZSA9PT0gbWFpbkZyYW1lLCAiQWRkZWQgU3R5bGVTaGVldCBmcmFtZSBzaG91bGQgYmUgdGhlIG1h
aW4gZnJhbWUuIik7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kuY3NzU3R5bGVN
YW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIChz
dHlsZVNoZWV0KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDEsICJTaG91bGQgYmUg
b25lIHN0eWxlc2hlZXQuIik7CisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLnByZWZlcnJlZElu
c3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShtYWluRnJhbWUsIChzdHlsZVNoZWV0KSA9PiB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc01hbmFnZXIuc3R5
bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOwogICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChzdHlsZVNoZWV0Lm9yaWdpbiA9
PT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLkluc3BlY3RvciwgIlN0eWxlU2hlZXQgb3JpZ2luIGlz
IGluc3BlY3Rvci4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
c3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCkgc2hvdWxkIGJlIHRydWUuIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwpAQCAtNDMsMTQgKzQzLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAi
QW5vdGhlck1haW5GcmFtZVJlcXVlc3REb2VzTm90aGluZyIsCiAgICAgICAgIGRlc2NyaXB0aW9u
OiAiU2Vjb25kIHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcg
c3R5bGVzaGVldC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50KSA9
PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJTaG91bGQg
bm90IGNyZWF0ZSBhIG5ldyBTdHlsZVNoZWV0LCBzaG91bGQgcmV1c2UgdGhlIGV4aXN0aW5nIG9u
ZSIpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucHJl
ZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgKHN0eWxlU2hlZXQp
ID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzU3R5
bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBzdGlsbCBiZSBvbmUg
c3R5bGVzaGVldC4iKTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5zcGVj
dG9yU3R5bGVTaGVldEZvckZyYW1lKG1haW5GcmFtZSwgKHN0eWxlU2hlZXQpID0+IHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5zdHlsZVNo
ZWV0cy5sZW5ndGggPT09IDEsICJTaG91bGQgc3RpbGwgYmUgb25lIHN0eWxlc2hlZXQuIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3JpZ2lu
ID09PSBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yLCAiU3R5bGVTaGVldCBvcmlnaW4g
c2hvdWxkIGJlICdpbnNwZWN0b3InLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVTaGVl
dC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKLSAgICAgICAgICAg
ICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1h
bmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgICAg
ICAgICAgV0kuY3NzTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZl
bnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTYwLDE0ICs2MCwxNCBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkNyZWF0ZVN1YkZyYW1lSW5zcGVjdG9yU3R5
bGVTaGVldCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRmlyc3QgcmVxdWVzdCBmb3Igc3ViZnJh
bWUgc2hvdWxkIGNyZWF0ZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4iLAogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50KSA9PiB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5
bGVTaGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJBZGRl
ZCBTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0lu
c3BlY3RvclN0eWxlU2hlZXQoKSwgIlN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkg
c2hvdWxkIGJlIHRydWUuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSA9PT0gY2hpbGRGcmFtZXNbMF0s
ICJBZGRlZCBTdHlsZVNoZWV0IGZyYW1lIHNob3VsZCBiZSBhIGNoaWxkIGZyYW1lLiIpOwogICAg
ICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUoY2hpbGRGcmFtZXNbMF0sIChzdHlsZVNoZWV0KSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc1N0eWxl
TWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxlc2hl
ZXRzLiIpOworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9yRnJhbWUoY2hpbGRGcmFtZXNbMF0sIChzdHlsZVNoZWV0KSA9PiB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNzc01hbmFnZXIuc3R5bGVTaGVl
dHMubGVuZ3RoID09PSAyLCAiU2hvdWxkIGJlIHR3byBzdHlsZXNoZWV0cy4iKTsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJ
LkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQg
YmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCksICJTdHlsZVNoZWV0LmlzSW5z
cGVjdG9yU3R5bGVTaGVldCgpIHNob3VsZCBiZSB0cnVlLiIpOwogICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKQEAgLTc5LDIwICs3OSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFt
ZTogIkFub3RoZXJTdWJGcmFtZVJlcXVlc3REb2VzTm90aGluZyIsCiAgICAgICAgIGRlc2NyaXB0
aW9uOiAiU2Vjb25kIHJlcXVlc3QgZm9yIG1haW4gZnJhbWUgc2hvdWxkIG5vdCBjcmVhdGUgYSBu
ZXcgc3R5bGVzaGVldC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAg
ICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExp
c3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVudCkg
PT4geworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuY3NzTWFuYWdlci5zaW5nbGVGaXJl
RXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgKGV2ZW50
KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZmFsc2UsICJTaG91
bGQgbm90IGNyZWF0ZSBhIG5ldyBTdHlsZVNoZWV0LCBzaG91bGQgcmV1c2UgdGhlIGV4aXN0aW5n
IG9uZSIpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIu
cHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGNoaWxkRnJhbWVzWzBdLCAoc3R5
bGVTaGVldCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChX
SS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAyLCAiU2hvdWxkIGJlIHR3
byBzdHlsZXNoZWV0cy4iKTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIucHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGNoaWxkRnJhbWVzWzBdLCAoc3R5bGVTaGVldCkgPT4g
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2Vy
LnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMiwgIlNob3VsZCBiZSB0d28gc3R5bGVzaGVldHMuIik7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQub3Jp
Z2luID09PSBXSS5DU1NTdHlsZVNoZWV0LlR5cGUuSW5zcGVjdG9yLCAiU3R5bGVTaGVldCBvcmln
aW4gc2hvdWxkIGJlICdpbnNwZWN0b3InLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpLCAiU3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSBzaG91bGQgYmUgdHJ1ZS4iKTsKLSAgICAgICAg
ICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHls
ZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAg
ICAgICAgICAgV0kuY3NzTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIu
RXZlbnQuU3R5bGVTaGVldEFkZGVkLCBsaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJ
LmNzc1N0eWxlTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFn
ZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuY3Nz
TWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxl
U2hlZXRSZW1vdmVkLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChmYWxzZSwgIlNob3VsZCBub3QgYmUgcmVtb3ZpbmcgYW55IFN0eWxlU2hlZXRzIGluIHRo
aXMgdGVzdC4iKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Nzcy9tYXRjaGVkLXN0eWxlLXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jc3MvbWF0Y2hlZC1zdHlsZS1wcm9wZXJ0aWVzLmh0bWwKaW5kZXggMTVjM2M2ZTE4NDVlMmE1
ZmVjNGYzYmQ0YjA4ZTNmMDg3OWEzYTAyOS4uYjJlNjlkZWYwM2U4OGVkNWVlNTE4Y2E2YWI0YzM5
NWMyNjUyMmRjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tYXRjaGVk
LXN0eWxlLXByb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21h
dGNoZWQtc3R5bGUtcHJvcGVydGllcy5odG1sCkBAIC02MCwxMSArNjAsMTEgQEAgZnVuY3Rpb24g
dGVzdCgpIHsKICAgICAgICAgdmFsaWRhdGVTdHlsZXMoKTsKICAgICB9CiAKLSAgICBXSS5kb21U
cmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAg
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25v
ZGUxIiwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgeworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVz
dERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21NYW5hZ2Vy
LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwgZnVuY3Rpb24oY29udGVu
dE5vZGVJZCkgewogICAgICAgICAgICAgaWYgKGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9k
ZUlkKTsKLSAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0
eWxlc0Zvck5vZGUoZG9tTm9kZSk7CisgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2Rl
U3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgICAgICAg
ICBub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZy
ZXNoZWQsIG9uU3R5bGVzUmVmcmVzaGVkLCB0aGlzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jc3MvbW9kaWZ5LWNzcy1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Nzcy9tb2RpZnktY3NzLXByb3BlcnR5Lmh0bWwKaW5kZXggYjE5NTI1NDYwMDdhMGJj
Nzg5NDc5YzQ1MjUxNWZmNzhhMzc1YTNiMC4uYzM1YjlmMDMxNTc1ODAxOTc2ZjMyOWNkZTcxNjdk
YTE5NTkzMmE1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tb2RpZnkt
Y3NzLXByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9tb2RpZnkt
Y3NzLXByb3BlcnR5Lmh0bWwKQEAgLTEyNywxMSArMTI3LDExIEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1
bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5
U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3giLCAoY29udGVudE5vZGVJZCkgPT4geworICAg
IFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAg
ICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgKGNv
bnRlbnROb2RlSWQpID0+IHsKICAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZUlkKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29u
dGVudE5vZGVJZCk7Ci0gICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFu
YWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICAgICAgICAgIGxldCBkb21Ob2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAg
ICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAog
ICAgICAgICAgICAgICAgIGlmIChub2RlU3R5bGVzLm5lZWRzUmVmcmVzaCkgewogICAgICAgICAg
ICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGVT
dHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jc3MvbW9kaWZ5LXJ1bGUtc2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jc3MvbW9kaWZ5LXJ1bGUtc2VsZWN0b3IuaHRtbAppbmRleCBjOWQxYTYzZTA0
NGNkYWU1MzdiNGEwNTk5MGYxZTEwMTNjYjYzMWQzLi43M2RmY2UyM2I3NWMzMmE0YzI3ZWM3OTcz
ZGU1MWI0OTkzNmM3ZjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL21v
ZGlmeS1ydWxlLXNlbGVjdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9t
b2RpZnktcnVsZS1zZWxlY3Rvci5odG1sCkBAIC01MiwyMiArNTIsMjIgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAgKytpbmRleDsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CisgICAgV0kuZG9tTWFuYWdl
ci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CiAgICAgICAgIGlmICgh
ZG9jdW1lbnROb2RlKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRVJST1I6IGRv
Y3VtZW50IG5vdCBmb3VuZC4iKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIi5mb28iLCBmdW5jdGlv
bihjb250ZW50Tm9kZUlkKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGUuaWQsICIuZm9vIiwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgewogICAgICAg
ICAgICAgaWYgKCFjb250ZW50Tm9kZUlkKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkVSUk9SOiBET00gbm9kZSBub3QgZm91bmQuIik7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIu
bm9kZUZvcklkKGNvbnRlbnROb2RlSWQpOwotICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNz
c1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICAgICAgdmFyIGRv
bU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAg
ICAgIG5vZGVTdHlsZXMgPSBXSS5jc3NNYW5hZ2VyLnN0eWxlc0Zvck5vZGUoZG9tTm9kZSk7CiAK
ICAgICAgICAgICAgIG5vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVz
LkV2ZW50LlJlZnJlc2hlZCwgb25TdHlsZXNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAg
aWYgKCFub2RlU3R5bGVzLm5lZWRzUmVmcmVzaCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3MvcHNldWRvLWVsZW1lbnQtbWF0Y2hlcy1mb3ItcHNldWRvLWVsZW1lbnQtbm9k
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVz
LWZvci1wc2V1ZG8tZWxlbWVudC1ub2RlLmh0bWwKaW5kZXggNGY0MTVlMDUyNDQyNTExODIyNGVj
OGI5NGYwMzY2ZGMwMDAxZDZkZC4uMzE4OWYyYWYwYTAzMTJkYjVhYzkzOTU3NjFiZjY5NjAzZmIy
NmQzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVu
dC1tYXRjaGVzLWZvci1wc2V1ZG8tZWxlbWVudC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVzLWZvci1wc2V1ZG8tZWxlbWVudC1u
b2RlLmh0bWwKQEAgLTM3LDE0ICszNywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOyAgICAgICAgICAgICAgICAKICAgICB9CiAKLSAg
ICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2Rl
KSB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2Rl
LmlkLCAiI3giLCBmdW5jdGlvbihjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICB2YXIgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICBX
SS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1bWVudE5vZGUpIHsKKyAg
ICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4Iiwg
ZnVuY3Rpb24oY29udGVudE5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KGRvbU5vZGUpOwogICAgICAgICAgICAgdmFyIGJlZm9yZVBzZXVkb0VsZW1l
bnRET01Ob2RlID0gZG9tTm9kZS5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYmVmb3JlUHNldWRvRWxlbWVudERPTU5vZGUsICJHb3Qg
OjpiZWZvcmUgcHNldWRvIGVsZW1lbnQgZm9yICN4Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUmVmcmVzaGluZyBzdHlsZXMgZm9yIDo6YmVmb3JlIHBzZXVkbyBlbGVtZW50Iik7
Ci0gICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5v
ZGUoYmVmb3JlUHNldWRvRWxlbWVudERPTU5vZGUpOworICAgICAgICAgICAgbm9kZVN0eWxlcyA9
IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShiZWZvcmVQc2V1ZG9FbGVtZW50RE9NTm9kZSk7
CiAgICAgICAgICAgICBub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxl
cy5FdmVudC5SZWZyZXNoZWQsIHZhbGlkYXRlU3R5bGVzKTsKICAgICAgICAgICAgIG5vZGVTdHls
ZXMucmVmcmVzaCgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jc3MvcHNldWRvLWVsZW1lbnQtbWF0Y2hlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Nzcy9wc2V1ZG8tZWxlbWVudC1tYXRjaGVzLmh0bWwKaW5kZXggNGJiNDhlYzlkMDE2NmIw
ZmYxZDJmNTliM2JjMzYwYTMzMzAwYThkZS4uMDZmYzJmNDA2MzJlM2JlMmFmZjY0Njg3N2I1YmRm
YmQ1ZTRkNGNlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1ZG8t
ZWxlbWVudC1tYXRjaGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9wc2V1
ZG8tZWxlbWVudC1tYXRjaGVzLmh0bWwKQEAgLTM5LDExICszOSwxMSBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB2YWxpZGF0ZU1hdGNoZWRTZWxlY3RvcnMoKTsKICAgICB9CiAKLSAgICBX
SS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7
Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlk
LCAiI25vZGUxIiwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkgeworICAgIFdJLmRvbU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21N
YW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI25vZGUxIiwgZnVuY3Rpb24o
Y29udGVudE5vZGVJZCkgewogICAgICAgICAgICAgdHJ5IHsgCiAgICAgICAgICAgICAgICAgaWYg
KGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7
CiAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuZ2V0U3VidHJlZSgxLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaGFkb3dSb290RG9jdW1lbnQgPSBkb21Ob2Rl
LmNoaWxkcmVuWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdERvY3VtZW50
LmdldFN1YnRyZWUoMiwgZnVuY3Rpb24oKSB7CkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
aGFkb3dSb290LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzaGFkb3dOb2RlID0gc2hhZG93Um9vdC5jaGlsZHJlbltpXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd05vZGUuZ2V0QXR0cmlidXRlKCJw
c2V1ZG8iKSA9PT0gIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVN
YW5hZ2VyLnN0eWxlc0Zvck5vZGUoc2hhZG93Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKHNo
YWRvd05vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVT
dHlsZXMubmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJl
ZnJlc2hlZCwgb25TdHlsZXNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9zZWxlY3Rvci1keW5hbWljLXNwZWNpZmljaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3NlbGVjdG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbAppbmRleCA1Nzk0MDc2YmMz
Zjk0MTA4ZmIxNzg3YTA5OTg4MWU0MjA0OWY2NDkyLi43ZGYyODg0YzU0ODVhMzEzNWVlODU1Njg5
NjYwOGMxNDNhMTVjOTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3Nl
bGVjdG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3NlbGVjdG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbApAQCAtNjksMTAgKzY5LDEw
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50U2VsZWN0
b3IgPSBzdGVwc1tjdXJyZW50U3RlcEluZGV4KytdOwotICAgICAgICBXSS5kb21UcmVlTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgY3VycmVudFNlbGVjdG9yLCBmdW5jdGlv
bihjb250ZW50Tm9kZUlkKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGUuaWQsIGN1cnJlbnRTZWxlY3RvciwgZnVuY3Rpb24oY29udGVudE5vZGVJZCkg
ewogICAgICAgICAgICAgaWYgKGNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICB2YXIg
ZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKLSAg
ICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5v
ZGUoZG9tTm9kZSk7CisgICAgICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21NYW5hZ2Vy
Lm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0g
V0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOwogCiAgICAgICAgICAgICAgICAg
aWYgKG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgICAgICAgICBub2RlU3R5
bGVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIG9u
U3R5bGVzUmVmcmVzaGVkLCB0aGlzKTsKQEAgLTg1LDcgKzg1LDcgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KGZ1bmN0aW9uKG5vZGUpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVu
dChmdW5jdGlvbihub2RlKSB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAgICAgICAg
IHJ1bk5leHRTdGVwKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3NlbGVjdG9yLXNwZWNpZmljaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y3NzL3NlbGVjdG9yLXNwZWNpZmljaXR5Lmh0bWwKaW5kZXggMWYzN2UyOGQ1N2M0NzdiYzgwNzY0
ZWMwMThlMDExNWE3NTY3NDhlNi4uZGNjODMzMWYwNTlmOTkyNjVhNWUwNWI1YTgxOGY5MzAzMGY3
NDMzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zZWxlY3Rvci1zcGVj
aWZpY2l0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2VsZWN0b3Itc3Bl
Y2lmaWNpdHkuaHRtbApAQCAtNDEsMTEgKzQxLDExIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgIHZhbGlkYXRlU2VsZWN0b3JzKCk7CiAgICAgfQogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAgICBXSS5kb21U
cmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNub2RlMSIsIGZ1bmN0
aW9uKGNvbnRlbnROb2RlSWQpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChm
dW5jdGlvbihkb2N1bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVj
dG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNub2RlMSIsIGZ1bmN0aW9uKGNvbnRlbnROb2RlSWQpIHsK
ICAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZUlkKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRv
bU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7Ci0gICAg
ICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZXNGb3JOb2Rl
KGRvbU5vZGUpOworICAgICAgICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5u
b2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJ
LmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21Ob2RlKTsKIAogICAgICAgICAgICAgICAgIGlm
IChub2RlU3R5bGVzLm5lZWRzUmVmcmVzaCkKICAgICAgICAgICAgICAgICAgICAgbm9kZVN0eWxl
cy5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCBvblN0
eWxlc1JlZnJlc2hlZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y3NzL3NoYWRvdy1zY29wZWQtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mv
c2hhZG93LXNjb3BlZC1zdHlsZS5odG1sCmluZGV4IGUwYTU0MGNlNDU2YjcwN2I4MmQ4OWY4MGQ1
ODY3ODQxOTQ1ZmNiNjQuLmU0ZGMyZGIyNWRlNTY3ZjcyMTcyZDQ2MzQ4YmM3NDM0ZTViNzhjNjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHls
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc2hhZG93LXNjb3BlZC1zdHls
ZS5odG1sCkBAIC00MywxNSArNDMsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6
ICJDU1MuU2hhZG93U2NvcGVkU3R5bGUuSG9zdFN0eWxlcyIsCiAgICAgICAgIGRlc2NyaXB0aW9u
OiAiRW5zdXJlIHNoYWRvdyByb290IGhvc3QgZWxlbWVudCBnZXRzIDpob3N0IHN0eWxlcy4iLAog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjc2hhZG93LWhvc3QiLCAobm9k
ZUlkKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1l
bnROb2RlLmlkLCAiI3NoYWRvdy1ob3N0IiwgKG5vZGVJZCkgPT4gewogICAgICAgICAgICAgICAg
IGlmICghbm9kZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFpbCgi
RE9NIG5vZGUgI3NoYWRvdy1ob3N0IG5vdCBmb3VuZCBpbiBkb2N1bWVudC4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBob3N0Tm9kZSA9IFdJLmRvbVRyZWVNYW5h
Z2VyLm5vZGVGb3JJZChub2RlSWQpOwotICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVzID0g
V0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5vZGUoaG9zdE5vZGUpOworICAgICAgICAgICAg
ICAgIGhvc3ROb2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAg
ICAgICAgICBsZXQgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVzRm9yTm9kZShob3N0
Tm9kZSk7CiAgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChob3N0Tm9kZS5o
YXNTaGFkb3dSb290cygpLCAiTm9kZSBzaG91bGQgaGF2ZSBzaGFkb3cgcm9vdHMuIik7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoaG9zdE5vZGUuaXNJblNo
YWRvd1RyZWUoKSwgIk5vZGUgc2hvdWxkIG5vdCBiZSBpbiBhIHNoYWRvdyB0cmVlLiIpOwpAQCAt
NjgsMTUgKzY4LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ1NTLlNoYWRv
d1Njb3BlZFN0eWxlLkVsZW1lbnRJblNoYWRvd1RyZWUiLAogICAgICAgICBkZXNjcmlwdGlvbjog
IkVuc3VyZSBlbGVtZW50IGluIHNoYWRvdyB0cmVlIGdldHMgc2hhZG93IGRvbSBzY29wZWQgc3R5
bGVzLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGhvc3ROb2RlLnNoYWRvd1Jvb3RzKClbMF0uaWQs
ICIjc2hhZG93LW5vZGUiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2Vy
LnF1ZXJ5U2VsZWN0b3IoaG9zdE5vZGUuc2hhZG93Um9vdHMoKVswXS5pZCwgIiNzaGFkb3ctbm9k
ZSIsIChub2RlSWQpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGVJZCkgewogICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRPTSBub2RlICNzaGFkb3ctbm9kZSBu
b3QgZm91bmQgaW4gI3NoYWRvdy1ob3N0J3Mgc2hhZG93Um9vdC4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5v
ZGVGb3JJZChub2RlSWQpOwotICAgICAgICAgICAgICAgIGxldCBub2RlU3R5bGVzID0gV0kuY3Nz
U3R5bGVNYW5hZ2VyLnN0eWxlc0Zvck5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgbGV0IG5v
ZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIGxl
dCBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKG5vZGUpOwogICAgICAg
ICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG5vZGUuaGFzU2hhZG93Um9vdHMoKSwg
Ik5vZGUgc2hvdWxkIG5vdCBoYXZlIHNoYWRvdyByb290cy4iKTsKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5vZGUuaXNJblNoYWRvd1RyZWUoKSwgIk5vZGUg
c2hvdWxkIGJlIGluIGEgc2hhZG93IHRyZWUuIik7CkBAIC05MCw3ICs5MCw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIC8vIEFkZCBUZXN0OiBDU1MuU2hhZG93U2NvcGVkU3R5bGUuU2xvdHRlZEVs
ZW1lbnQKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NDI0OT4gV2ViIElu
c3BlY3RvcjogRW5zdXJlIGluc3BlY3RvciBzaG93cyA6c2xvdHRlZCgpIHN0eWxlcyBpbiBzaWRl
YmFyCiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsK
KyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBk
b2N1bWVudE5vZGUgPSBub2RlOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVz
aGVldC1ldmVudHMtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVz
aGVldC1ldmVudHMtYmFzaWMuaHRtbAppbmRleCA5MjcxODcyOWIxOTIyMmY5MWZmMjEyODY5M2Vj
MGZjZTg3MDc1MmQxLi44ZTdhYzUyZjAwNzY4NjNkNThlOGNlZDJkZGUxNzNhMzU3NTFjMmQyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWJh
c2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50
cy1iYXNpYy5odG1sCkBAIC01MCw3ICs1MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBu
YW1lOiAiQ2hlY2tOb1N0eWxlU2hlZXRzIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUg
dGhlcmUgYXJlIGN1cnJlbnRseSBubyBzdHlsZXNoZWV0cy4iLAogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KFdJLmNz
c1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5
bGVzaGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3Nz
TWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDAsICJTaG91bGQgYmUgbm8gc3R5bGVzaGVl
dHMuIik7CiAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTYz
LDcgKzYzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
ICAgICAgICAgICAgIG5hbWU6IGBBZGQke3RpdGxlfWAsCiAgICAgICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2
ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCisgICAgICAgICAg
ICAgICAgV0kuY3NzTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU01hbmFnZXIuRXZlbnQuU3R5bGVT
aGVldEFkZGVkKQogICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBhZGRlZFN0eWxlU2hlZXQgPSBldmVudC5kYXRhLnN0eWxlU2hlZXQ7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChhZGRlZFN0eWxlU2hlZXQg
aW5zdGFuY2VvZiBXSS5DU1NTdHlsZVNoZWV0LCAiU3R5bGVTaGVldEFkZGVkIGV2ZW50IHNob3Vs
ZCBmaXJlLiIpOwpAQCAtODAsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IG5hbWU6IGBEaXNhYmxlJHt0aXRsZX1gLAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJEaXNh
YmxlIHRoZSBuZXdseSBhZGRlZCBzdHlsZXNoZWV0LiIsCiAgICAgICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2
ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkKKyAgICAgICAg
ICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0UmVtb3ZlZCkKICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0
IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NT
U3R5bGVTaGVldCIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoYWRkZWRTdHlsZVNoZWV0ID09PSBldmVudC5kYXRhLnN0eWxlU2hlZXQsICJTdHlsZVNoZWV0
UmVtb3ZlZCBldmVudCBzaG91bGQgZmlyZSBmb3IgdGhlIHNhbWUgQ1NTU3R5bGVTaGVldC4iKTsK
QEAgLTk1LDcgKzk1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuYW1lOiBgRW5h
YmxlJHt0aXRsZX1gLAogICAgICAgICAgICAgZGVzY3JpcHRpb246ICJFbmFibGUgdGhlIGp1c3Qg
ZGlzYWJsZWQgc3R5bGVzaGVldC4iLAogICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKLSAgICAgICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NT
dHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkKQorICAgICAgICAgICAgICAgIFdJLmNz
c01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCkK
ICAgICAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNlb2YgV0ku
Q1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVldCIpOwog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYWRkZWRTdHlsZVNo
ZWV0ICE9PSBldmVudC5kYXRhLnN0eWxlU2hlZXQsICJTdHlsZVNoZWV0QWRkZWQgZXZlbnQgc2hv
dWxkIGZpcmUgd2l0aCBhIG5ldyBDU1NTdHlsZVNoZWV0LiIpOwpAQCAtMTE0LDcgKzExNCw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAg
ICAgICAgICAgIG5hbWU6IGV4dHJhRGlzYWJsZVRpdGxlLAogICAgICAgICAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkK
KyAgICAgICAgICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU01hbmFn
ZXIuRXZlbnQuU3R5bGVTaGVldFJlbW92ZWQpCiAgICAgICAgICAgICAgICAgICAgIC50aGVuKChl
dmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
ZXZlbnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50
IGRhdGEgc2hvdWxkIGJlIGEgQ1NTU3R5bGVTaGVldCIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGFkZGVkU3R5bGVTaGVldCA9PT0gZXZlbnQuZGF0
YS5zdHlsZVNoZWV0LCAiU3R5bGVTaGVldFJlbW92ZWQgZXZlbnQgc2hvdWxkIGZpcmUgZm9yIHRo
ZSBzYW1lIENTU1N0eWxlU2hlZXQuIik7CkBAIC0xMjgsNyArMTI4LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgICAgICAgICAgbmFt
ZTogZXh0cmFFbmFibGVUaXRsZSwKICAgICAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIuYXdhaXRFdmVudChX
SS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkKQorICAgICAgICAgICAgICAg
ICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNo
ZWV0QWRkZWQpCiAgICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQuZGF0YS5zdHlsZVNo
ZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIkV2ZW50IGRhdGEgc2hvdWxkIGJlIGEg
Q1NTU3R5bGVTaGVldCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGFkZGVkU3R5bGVTaGVldCAhPT0gZXZlbnQuZGF0YS5zdHlsZVNoZWV0LCAiU3R5
bGVTaGVldEFkZGVkIGV2ZW50IHNob3VsZCBmaXJlIHdpdGggYSBuZXcgQ1NTU3R5bGVTaGVldC4i
KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgc3VpdGUuYWRk
VGVzdENhc2UoewogICAgICAgICAgICAgbmFtZTogYFJlbW92ZSR7dGl0bGV9YCwKICAgICAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgV0kuY3NzU3R5bGVN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1v
dmVkKQorICAgICAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5h
Z2VyLkV2ZW50LlN0eWxlU2hlZXRSZW1vdmVkKQogICAgICAgICAgICAgICAgIC50aGVuKChldmVu
dCkgPT4gewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZl
bnQuZGF0YS5zdHlsZVNoZWV0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldCwgIlN0eWxlU2hl
ZXRBZGRlZCBldmVudCBzaG91bGQgZmlyZS4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNo
ZWNrU3R5bGVTaGVldFJlbW92ZWRDYWxsYmFjaykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtaW1wb3J0cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWwKaW5kZXggNjY5YTIw
YzFkOTk3MTFlYTBkNTgyZDk0MGNlOWUyYTZlNTMxYmNmMi4uMWNhZTBjZGQxNjViZGY1NmI5MmMy
YmYwZTcwY2NmNDVhMDZkNTY0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbXBvcnRzLmh0bWwKQEAgLTMzLDggKzMzLDggQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgbGV0IGN1cnJlbnRTdHlsZVNoZWV0QWRkZWRI
YW5kbGVyLCBjdXJyZW50U3R5bGVTaGVldFJlbW92ZWRIYW5kbGVyOwotICAgIFdJLmNzc1N0eWxl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHlsZVNo
ZWV0QWRkZWQsIChldmVudCkgPT4geyBjdXJyZW50U3R5bGVTaGVldEFkZGVkSGFuZGxlcihldmVu
dCk7IH0pOwotICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNTU1N0
eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCwgKGV2ZW50KSA9PiB7IGN1cnJlbnRT
dHlsZVNoZWV0UmVtb3ZlZEhhbmRsZXIoZXZlbnQpOyB9KTsKKyAgICBXSS5jc3NNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIChldmVu
dCkgPT4geyBjdXJyZW50U3R5bGVTaGVldEFkZGVkSGFuZGxlcihldmVudCk7IH0pOworICAgIFdJ
LmNzc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5DU1NNYW5hZ2VyLkV2ZW50LlN0eWxlU2hl
ZXRSZW1vdmVkLCAoZXZlbnQpID0+IHsgY3VycmVudFN0eWxlU2hlZXRSZW1vdmVkSGFuZGxlcihl
dmVudCk7IH0pOwogCiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJDU1MuU3R5bGVTaGVldEV2ZW50cy5JbXBvcnRzIik7CiAKQEAgLTQyLDcgKzQyLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDaGVja1N0eWxlU2hlZXRzIiwKICAgICAg
ICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhlcmUgYXJlIGN1cnJlbnRseSB0d28gc3R5bGVzaGVl
dHMuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBz
dHlsZVNoZWV0cyA9IFdJLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0czsKKyAgICAgICAgICAg
IGxldCBzdHlsZVNoZWV0cyA9IFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldHM7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldHMubGVuZ3RoID09PSAzLCAiU2hv
dWxkIGJlIDMgc3R5bGVzaGVldHMuIik7CiAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVNoZWV0
IG9mIHN0eWxlU2hlZXRzKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKHNhbml0
aXplVVJMKHN0eWxlU2hlZXQudXJsKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNoZWV0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZlbnRzLWluc3BlY3Rvci1zdHlsZXNo
ZWV0Lmh0bWwKaW5kZXggOWUyNTI0YjU5MjZlY2MyZWU0ZjNjNzAyOTYxZjBkMjkxNDZjODMxNC4u
ODE5NDlkZDY5Zjc1YzlmOGYwMzBmZDVhNGQxMWIzZDgzMWM0YmFiYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9zdHlsZXNoZWV0LWV2ZW50cy1pbnNwZWN0b3Itc3R5bGVz
aGVldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVu
dHMtaW5zcGVjdG9yLXN0eWxlc2hlZXQuaHRtbApAQCAtMTEsNyArMTEsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgbmFtZTogIkNoZWNrTm9TdHlsZVNoZWV0cyIsCiAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiRW5zdXJlIHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gc3R5bGVzaGVldHMuIiwKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAwLCAi
U2hvdWxkIGJlIG5vIHN0eWxlc2hlZXRzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KFdJLmNzc01hbmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAwLCAiU2hvdWxk
IGJlIG5vIHN0eWxlc2hlZXRzLiIpOwogICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICB9
CiAgICAgfSk7CkBAIC0yMCwxNSArMjAsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5h
bWU6ICJDcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0IiwKICAgICAgICAgZGVzY3JpcHRpb246ICJD
cmVhdGluZyBhbiBpbnNwZWN0b3Igc3R5bGVzaGVldCBhZGRzIGEgc3R5bGVzaGVldC4iLAogICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuY3NzU3R5bGVNYW5h
Z2VyLmF3YWl0RXZlbnQoV0kuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCkK
KyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5hZ2VyLkV2ZW50
LlN0eWxlU2hlZXRBZGRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1hbmFnZXIuc3R5
bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0LiIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxl
U2hlZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBiZSBvbmUgc3R5bGVzaGVldC4iKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC5kYXRhLnN0eWxlU2hlZXQgaW5z
dGFuY2VvZiBXSS5DU1NTdHlsZVNoZWV0LCAiRXZlbnQgZGF0YSBzaG91bGQgYmUgYSBDU1NTdHls
ZVNoZWV0Iik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50
LmRhdGEuc3R5bGVTaGVldC5vcmlnaW4gPT09IFdJLkNTU1N0eWxlU2hlZXQuVHlwZS5JbnNwZWN0
b3IsICJTdHlsZVNoZWV0IG9yaWdpbiBzaG91bGQgYmUgJ2luc3BlY3RvcicuIik7CiAgICAgICAg
ICAgICB9KQogICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKIAotICAgICAgICAg
ICAgQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWlu
RnJhbWUuaWQpOworICAgICAgICAgICAgQ1NTQWdlbnQuY3JlYXRlU3R5bGVTaGVldChXSS5uZXR3
b3JrTWFuYWdlci5tYWluRnJhbWUuaWQpOwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVudHMtbXVsdGlwbGUt
ZG9jdW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtZXZl
bnRzLW11bHRpcGxlLWRvY3VtZW50cy5odG1sCmluZGV4IGNmY2QzMzgxMDk5OGUxMTNmMTU1M2Yy
OGE1MTg2MmNlYTYzZDc1MjQuLjg0ZmNhOGExNjg0YzViYTFjOWJhOGIxY2IzY2NiMmQ5MTZiMGZh
YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC1ldmVu
dHMtbXVsdGlwbGUtZG9jdW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9zdHlsZXNoZWV0LWV2ZW50cy1tdWx0aXBsZS1kb2N1bWVudHMuaHRtbApAQCAtMTgsOCArMTgs
OCBAQCBmdW5jdGlvbiByZW1vdmVTdWJmcmFtZSgpIHsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IGZ1bmN0aW9uIGxvZ1N0eWxlU2hlZXRzKCkgewotICAgICAgICBXSS5jc3NTdHlsZU1hbmFnZXIu
c3R5bGVTaGVldHMuc29ydCgoYSwgYikgPT4gYS51cmwubG9jYWxlQ29tcGFyZShiLnVybCkpLmZv
ckVhY2goKHN0eWxlU2hlZXQpID0+IHsKLSAgICAgICAgICAgIGxldCBmcmFtZVN0cmluZyA9IHN0
eWxlU2hlZXQucGFyZW50RnJhbWUuaWQgPT09IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZS5pZCA/ICI8bWFpbmZyYW1lPiIgOiAiPGNoaWxkZnJhbWU+IjsKKyAgICAgICAgV0kuY3Nz
TWFuYWdlci5zdHlsZVNoZWV0cy5zb3J0KChhLCBiKSA9PiBhLnVybC5sb2NhbGVDb21wYXJlKGIu
dXJsKSkuZm9yRWFjaCgoc3R5bGVTaGVldCkgPT4geworICAgICAgICAgICAgbGV0IGZyYW1lU3Ry
aW5nID0gc3R5bGVTaGVldC5wYXJlbnRGcmFtZS5pZCA9PT0gV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lLmlkID8gIjxtYWluZnJhbWU+IiA6ICI8Y2hpbGRmcmFtZT4iOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYFVSTDogJHtzYW5pdGl6ZVVSTChzdHlsZVNoZWV0LnVybCl9ICR7
ZnJhbWVTdHJpbmd9YCk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTMwLDcgKzMwLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJDaGVja1N0eWxlU2hlZXRzIiwKICAgICAgICAg
ZGVzY3JpcHRpb246ICJFbnN1cmUgdGhlcmUgaXMgY3VycmVudGx5IG9uZSBzdHlsZXNoZWV0LiIs
CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0g
MSwgIlNob3VsZCBiZSBvbmUgc3R5bGVzaGVldHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFuYWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDEsICJT
aG91bGQgYmUgb25lIHN0eWxlc2hlZXRzLiIpOwogICAgICAgICAgICAgbG9nU3R5bGVTaGVldHMo
KTsKICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgfQpAQCAtNDAsMTAgKzQwLDEwIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiQ2hlY2tTdHlsZVNoZWV0c0FmdGVyQWRk
aW5nU3ViZnJhbWUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSBzdWJmcmFtZSBzdHls
ZXNoZWV0cyBhcmUgYWRkZWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmNzc1N0eWxlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlTWFuYWdl
ci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQpCiAgICAgICAgICAgICAu
dGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoV0kuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMiwgIlNob3VsZCBi
ZSB0d28gc3R5bGVzaGVldHMuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGV2ZW50LmRhdGEuc3R5bGVTaGVldC5wYXJlbnRGcmFtZSAhPT0gV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkLCAiTmV3IFN0eWxlU2hlZXQgaXMgZm9yIGEgc3ViZnJh
bWUiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoV0kuY3NzTWFu
YWdlci5zdHlsZVNoZWV0cy5sZW5ndGggPT09IDIsICJTaG91bGQgYmUgdHdvIHN0eWxlc2hlZXRz
LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRh
LnN0eWxlU2hlZXQucGFyZW50RnJhbWUgIT09IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5p
ZCwgIk5ldyBTdHlsZVNoZWV0IGlzIGZvciBhIHN1YmZyYW1lIik7CiAgICAgICAgICAgICAgICAg
bG9nU3R5bGVTaGVldHMoKTsKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAudGhlbihyZXNv
bHZlLCByZWplY3QpOwpAQCAtNTYsMTAgKzU2LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBuYW1lOiAiQ2hlY2tTdHlsZVNoZWV0c0FmdGVyUmVtb3ZpbmdTdWJmcmFtZSIsCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiRW5zdXJlIHN1YmZyYW1lIHN0eWxlc2hlZXRzIGFyZSByZW1vdmVkLiIs
CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5jc3NTdHls
ZU1hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldFJl
bW92ZWQpCisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdl
ci5FdmVudC5TdHlsZVNoZWV0UmVtb3ZlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4g
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NTdHlsZU1h
bmFnZXIuc3R5bGVTaGVldHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIGJlIG9uZSBzdHlsZXNoZWV0
LiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChldmVudC5kYXRh
LnN0eWxlU2hlZXQucGFyZW50RnJhbWUgIT09IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZS5pZCwgIlJlbW92ZWQgU3R5bGVTaGVldCBpcyBmb3IgYSBzdWJmcmFtZSIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChXSS5jc3NNYW5hZ2VyLnN0eWxlU2hl
ZXRzLmxlbmd0aCA9PT0gMSwgIlNob3VsZCBiZSBvbmUgc3R5bGVzaGVldC4iKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5zdHlsZVNoZWV0LnBh
cmVudEZyYW1lICE9PSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuaWQsICJSZW1vdmVkIFN0
eWxlU2hlZXQgaXMgZm9yIGEgc3ViZnJhbWUiKTsKICAgICAgICAgICAgICAgICBsb2dTdHlsZVNo
ZWV0cygpOwogICAgICAgICAgICAgfSkKICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVj
dCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3N0eWxlc2hlZXQtd2l0
aC1tdXRhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13
aXRoLW11dGF0aW9ucy5odG1sCmluZGV4IDQyZDkzMmI2YTg2ZDQzNmQ0MGJkODgwNWFkYTNmN2I3
ODZiMWIxN2UuLjM2ZDk3NjFlYzY5NDg4NmI0NjMwZTA1OWI4NDU5NzE3NTc0ZmI1YWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13aXRoLW11dGF0aW9u
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvc3R5bGVzaGVldC13aXRoLW11
dGF0aW9ucy5odG1sCkBAIC0zMiwxMSArMzIsMTEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgdmFsaWRhdGVTZWxlY3RvcnMoKTsKICAgICB9CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiLmJhciIsIGZ1bmN0aW9u
KGNvbnRlbnROb2RlSWQpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5j
dGlvbihkb2N1bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9y
KGRvY3VtZW50Tm9kZS5pZCwgIi5iYXIiLCBmdW5jdGlvbihjb250ZW50Tm9kZUlkKSB7CiAgICAg
ICAgICAgICBpZiAoY29udGVudE5vZGVJZCkgewotICAgICAgICAgICAgICAgIHZhciBkb21Ob2Rl
ID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2RlSWQpOwotICAgICAgICAg
ICAgICAgIG5vZGVTdHlsZXMgPSBXSS5jc3NTdHlsZU1hbmFnZXIuc3R5bGVzRm9yTm9kZShkb21O
b2RlKTsKKyAgICAgICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZv
cklkKGNvbnRlbnROb2RlSWQpOworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMgPSBXSS5jc3NN
YW5hZ2VyLnN0eWxlc0Zvck5vZGUoZG9tTm9kZSk7CiAKICAgICAgICAgICAgICAgICBpZiAobm9k
ZVN0eWxlcy5uZWVkc1JlZnJlc2gpCiAgICAgICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgb25TdHlsZXNS
ZWZyZXNoZWQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2NzcC1leGNlcHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Y3NwLWV4Y2VwdGlvbnMuaHRtbAppbmRleCBlNjhjZGM3OTcwMDMyNzFkZDVlZmQ5ZmYwMDFjMDMw
NjRiZmNlMzVjLi40NWM0MGY5NTBhYTdiNzk0OWI1NGE4YThkY2FjMTJjY2IyN2E0YzY0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY3NwLWV4Y2VwdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY3NwLWV4Y2VwdGlvbnMuaHRt
bApAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
V0kubG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdl
QWRkZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KGV2ZW50LmRhdGEubWVzc2FnZS5sZXZlbCA9PT0gV0kuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkVycm9yKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkNTUCBFeGNl
cHRpb24gQ29uc29sZSBNZXNzYWdlOiAiICsgZXZlbnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0
KTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKICAg
ICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgV0ku
bG9nTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Mb2dNYW5hZ2VyLkV2ZW50Lk1l
c3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRk
ZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRlbXBQYXVz
ZUZhaWxMaXN0ZW5lciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoZXZlbnQuZGF0YS5tZXNzYWdlLmxldmVsID09PSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuRXJyb3IpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uo
ZGlkUGF1c2UsICJDU1AgRXhjZXB0aW9uIGNhdXNlZCBvdXRzaWRlIG9mIHNjcmlwdCBldmFsdWF0
aW9uIHNob3VsZCBub3QgcGF1c2UuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvanMtc3RhY2t0cmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2pzLXN0YWNrdHJhY2UuaHRtbAppbmRleCBjMTBlZTBmZWFlZDE3ZjdlNmYzMWFhOWEz
ZmFmMWMwNWVjOWYxMGNhLi4zNjkwNTc4ZDQyZThkMWJhYTY3NGIyNmM1OWNmOWE2YzhkNjhkYjFj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvanMtc3RhY2t0cmFj
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9qcy1zdGFja3RyYWNl
Lmh0bWwKQEAgLTc2LDcgKzc2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHJldHVybiBz
dGFja1RyYWNlOwogICAgIH0KIAotICAgIFdJLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgV0kuY29u
c29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNz
YWdlQWRkZWQsIChldmVudCkgPT4gewogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG5jb25z
b2xlLnRyYWNlKCk6Iik7CiAKICAgICAgICAgbGV0IHN0YWNrVHJhY2UgPSBbXTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvbG9nLXBhdXNlLWxv
Y2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ct
cGF1c2UtbG9jYXRpb24uanMKaW5kZXggNmU2MjA3NGRiZjFkZDJhNDMyOTdjNzA5YTViNGM5MTll
ODA1NGI3NS4uMTJjMWQ0NDMzYjA0MjdiZDliY2RkNjBmMDgyNDE2MjQ0ZjcxNWQxNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctcGF1c2Ut
bG9jYXRpb24uanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNl
cy9sb2ctcGF1c2UtbG9jYXRpb24uanMKQEAgLTcsNyArNyw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVy
SW5pdGlhbGl6ZXIoKCkgPT4gewogICAgIH0KIAogICAgIHdpbmRvdy5maW5kU2NyaXB0ID0gZnVu
Y3Rpb24ocmVnZXgpIHsKLSAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLnJlc291cmNlQ29sbGVjdGlvbikgeworICAgICAgICBmb3Ig
KGxldCByZXNvdXJjZSBvZiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xs
ZWN0aW9uKSB7CiAgICAgICAgICAgICBpZiAocmVnZXgudGVzdChyZXNvdXJjZS51cmwpKQogICAg
ICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZS5zY3JpcHRzWzBdOwogICAgICAgICB9CkBAIC0y
NywxMiArMjcsMTIgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAg
fQogCiAgICAgd2luZG93LmxvYWRNYWluUGFnZUNvbnRlbnQgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgcmV0dXJuIGxvYWRMaW5lc0Zyb21Tb3VyY2VDb2RlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZS5tYWluUmVzb3VyY2UpOworICAgICAgICByZXR1cm4gbG9hZExpbmVzRnJvbVNv
dXJjZUNvZGUoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZSk7CiAgICAg
fQogCiAgICAgd2luZG93LnNldEJyZWFrcG9pbnRzT25MaW5lc1dpdGhCcmVha3BvaW50Q29tbWVu
dCA9IGZ1bmN0aW9uKHJlc291cmNlKSB7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAg
ICAgICByZXNvdXJjZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVz
b3VyY2U7CisgICAgICAgICAgICByZXNvdXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFt
ZS5tYWluUmVzb3VyY2U7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTG9jYXRpb24ocmVzb3Vy
Y2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgewogICAgICAgICAgICAgcmV0dXJuIHt1cmw6
IHJlc291cmNlLnVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyfTsKQEAgLTUzLDcgKzUzLDcg
QEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgfQogCiAgICAgd2lu
ZG93LmxvZ1Jlc29sdmVkQnJlYWtwb2ludExpbmVzV2l0aENvbnRleHQgPSBmdW5jdGlvbihpbnB1
dExvY2F0aW9uLCByZXNvbHZlZExvY2F0aW9uLCBjb250ZXh0KSB7Ci0gICAgICAgIGlmIChyZXNv
bHZlZExvY2F0aW9uLnNvdXJjZUNvZGUgIT09IGxpbmVzU291cmNlQ29kZSAmJiAhV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzLmluY2x1ZGVzKHJl
c29sdmVkTG9jYXRpb24uc291cmNlQ29kZSkpIHsKKyAgICAgICAgaWYgKHJlc29sdmVkTG9jYXRp
b24uc291cmNlQ29kZSAhPT0gbGluZXNTb3VyY2VDb2RlICYmICFXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUubWFpblJlc291cmNlLnNjcmlwdHMuaW5jbHVkZXMocmVzb2x2ZWRMb2NhdGlvbi5z
b3VyY2VDb2RlKSkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIi0tLSBTb3VyY2Ug
VW5hdmFpbGFibGUgLS0tIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTk0
LDcgKzk0LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgfQog
CiAgICAgd2luZG93LmxvZ0xpbmVzV2l0aENvbnRleHQgPSBmdW5jdGlvbihsb2NhdGlvbiwgY29u
dGV4dCkgewotICAgICAgICBpZiAobG9jYXRpb24uc291cmNlQ29kZSAhPT0gbGluZXNTb3VyY2VD
b2RlICYmICFXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNj
cmlwdHMuaW5jbHVkZXMobG9jYXRpb24uc291cmNlQ29kZSkpIHsKKyAgICAgICAgaWYgKGxvY2F0
aW9uLnNvdXJjZUNvZGUgIT09IGxpbmVzU291cmNlQ29kZSAmJiAhV0kubmV0d29ya01hbmFnZXIu
bWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzLmluY2x1ZGVzKGxvY2F0aW9uLnNvdXJjZUNv
ZGUpKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiLS0tIFNvdXJjZSBVbmF2YWls
YWJsZSAtLS0iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gt
YXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0
bWwKaW5kZXggNWJkNDk3ZGNhYTdiYjVkNDU1MGM5Y2YxOGVkMjY1ODhlNTgxYTk4Ny4uYTE3MjVj
ZmJmOWE1MDI2ODJkMGZmNmRkZDA2MWMwNmIzODkwMWRjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRp
bnVlLWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sCkBA
IC0yMiw3ICsyMiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIlN0
ZXBwaW5nIHRocm91Z2ggc3RhdGVtZW50cyBzaG91bGQgc3RpbGwgd29yayBhZnRlciBlbmNvdW50
ZXJpbmcgYW4gYXV0b0NvbnRpbnVlIGJyZWFrcG9pbnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIFNldCBhdXRvQ29udGludWUgYnJlYWtwb2ludC4K
LSAgICAgICAgICAgIGxldCBzY3JpcHQgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUubWFpblJlc291cmNlLnNjcmlwdHNbMF07CisgICAgICAgICAgICBsZXQgc2NyaXB0ID0gV0ku
bmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzWzBdOwogICAgICAg
ICAgICAgdmFyIGxvY2F0aW9uID0gc2NyaXB0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAw
KTsKICAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRp
b24pOwogICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRz
Lmh0bWwKaW5kZXggMGIxMjlhYzk5ZTEyZTZlNGNkNTNkYzVmMjkzYWYzZGVjNzJhOGZmYi4uMjZm
YzRjYWJmYjA0YTg5MTJkNzZmYzA2OGYyZTVkMDMxNGU3ZTY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCkBA
IC02MSwyMCArNjEsMjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBhd2FpdFF1
ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIHsKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3RE
b2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJl
cXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKCFk
b2N1bWVudE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgc2VsZWN0b3Is
IChub2RlSWQpID0+IHsKKyAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4gewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5vZGVJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5mYWlsKCJTZWxlY3RvciByZXR1cm5lZCBubyBub2Rlcy4iLCBzZWxlY3Rvcik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGxldCBu
b2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICAg
ICAgICAgIGxldCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZSwgIk1pc3Npbmcgbm9kZSBm
b3IgaWQuIiwgbm9kZUlkKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKQEAgLTE0Miw4ICsxNDIsOCBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGJyZWFr
cG9pbnQuZGlzYWJsZWQsICJCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQuIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGJyZWFrcG9pbnQuZG9tTm9k
ZUlkZW50aWZpZXIsICJCcmVha3BvaW50IHNob3VsZCBoYXZlIG5vZGUgaWRlbnRpZmllci4iKTsK
IAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLm1haW5GcmFtZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKLSAgICAgICAgICAgICAg
ICBsZXQgZG9jdW1lbnRVUkwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUudXJs
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICBsZXQg
ZG9jdW1lbnRVUkwgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludC51cmwsIGRvY3VtZW50
VVJMLCAiQnJlYWtwb2ludCBVUkwgc2hvdWxkIG1hdGNoIGRvY3VtZW50IFVSTC4iKTsKICAgICAg
ICAgICAgIH0pCiAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwpAQCAtMjI3LDcg
KzIyNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5kb21UcmVl
TWFuYWdlci5ub2RlRm9ySWQoYnJlYWtwb2ludHNbMF0uZG9tTm9kZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgICAgIGxldCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoYnJlYWtwb2lu
dHNbMF0uZG9tTm9kZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZSkgewog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIk5vIERPTSBub2RlIGFzc29j
aWF0ZWQgd2l0aCBicmVha3BvaW50LiIpOwogICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFr
cG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3hoci1icmVh
a3BvaW50cy5odG1sCmluZGV4IGU3NjVlYTVkNzk0NGFhMzY0ZTE1MzMyZTQ3OWUyZGEyOWUyMmY1
NTYuLmYwYTEzNTBlMjZkZTBmNjdkZjA3ZDhiZTIyNzY2YTgwMTZkYjJjNTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMu
aHRtbApAQCAtNDMsNyArNDMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIGFk
ZEJyZWFrcG9pbnQodHlwZSwgdXJsKSB7CiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG1haW5GcmFtZSwgIk1pc3NpbmcgbWFpbiBmcmFtZS4iKTsKICAgICAgICAgICAgIGlmICgh
bWFpbkZyYW1lKQogICAgICAgICAgICAgICAgIHJlamVjdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5o
dG1sCmluZGV4IDI1YTY5ODAxY2RkYzk2NDUxMjUyYzU3Nzg4YTkzZTNmZjliMzcwZDIuLjg2MmNh
NTMxMTkyMTViYjA3NjljZDVkMTgyYjAxYWRjZmE1ZTk2NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVy
Lmh0bWwKQEAgLTE4MCwxNCArMTgwLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0K
ICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1l
bnROb2RlKSA9PiB7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50
Tm9kZSkgPT4gewogICAgICAgICBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNidXR0b24xIiksCi0gICAg
ICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwg
IiNidXR0b24yIiksCisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9j
dW1lbnROb2RlLmlkLCAiI2J1dHRvbjEiKSwKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVl
cnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjYnV0dG9uMiIpLAogICAgICAgICBdKQogICAg
ICAgICAudGhlbigoW2J1dHRvbjFJZCwgYnV0dG9uMklkXSkgPT4gewotICAgICAgICAgICAgYnV0
dG9uMU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoYnV0dG9uMUlkKTsKLSAgICAg
ICAgICAgIGJ1dHRvbjJOb2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKGJ1dHRvbjJJ
ZCk7CisgICAgICAgICAgICBidXR0b24xTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGJ1
dHRvbjFJZCk7CisgICAgICAgICAgICBidXR0b24yTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZv
cklkKGJ1dHRvbjJJZCk7CiAKICAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogICAgICAgICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9j
c3AtYmlnNS1oYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NzcC1iaWc1LWhh
c2guaHRtbAppbmRleCBkOWRmNmZiMGQyMmMxNDdkYTlhZjI4YWYzNWEyMDQzODVhZWNmNWVlLi42
MzI5MjRlYWRlYzVjNTMxNWJiZjg3ZGMzODk2Njk1MTQ1OTRmOGQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NzcC1iaWc1LWhhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2NzcC1iaWc1LWhhc2guaHRtbApAQCAtOSwxMCArOSwxMCBAQCBmdW5j
dGlvbiB0ZXN0KCkgewogICAgICAgIHtzZWxlY3RvcjogIiNzdHlsZXNoZWV0LTEiLCBoYXNoOiAi
c2hhMjU2LWR1TkJ2Q216ckZjM1JWVnFTOHVmd2VCZjJRT3ExVEh1RWgzVVpXUDdacFU9In0sCiAg
ICAgICAge3NlbGVjdG9yOiAiI3NjcmlwdC0xIiwgaGFzaDogInNoYTI1Ni0wZURrNG15OXEzcWND
UVRaMDJjbFZXMFJ4RE5QVzluOWxYVENkeUdZNEpzPSJ9LAogICAgIF07Ci0gICAgV0kuZG9tVHJl
ZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgIFdJ
LmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewogICAg
ICAgICBmb3IgKGxldCB7c2VsZWN0b3IsIGhhc2h9IG9mIHRlc3RDYXNlcykgewotICAgICAgICAg
ICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsIHNlbGVj
dG9yLCBmdW5jdGlvbihub2RlSWQpIHsKLSAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJ
LmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgc2VsZWN0b3IsIGZ1bmN0aW9uKG5v
ZGVJZCkgeworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2Rl
Rm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsIGBHb3QgRE9N
Tm9kZSBmb3IgJHtzZWxlY3Rvcn1gKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoZG9tTm9kZS5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKCkgPT09IGhhc2gsIGBE
T01Ob2RlIGhhcyBoYXNoICR7aGFzaH1gKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY3NwLWhhc2guaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3NwLWhh
c2guaHRtbAppbmRleCAzNmM3YjRkODdhOWY2YTY0OWQyZGExYjA3MmJjN2RjZWUwZGZkYmRjLi5h
MzE4ZGMyNzE1YjUyMTZmMzliYjAxYjE2MDUwYmFkMDE3MWQzYWVkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NzcC1oYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9jc3AtaGFzaC5odG1sCkBAIC0xOSwxMCArMTksMTAgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAge3NlbGVjdG9yOiAiI3BhcmFncmFwaCIsIGhhc2g6IHVuZGVmaW5lZH0s
CiAgICAgXTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlv
bihkb2N1bWVudE5vZGUpIHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5j
dGlvbihkb2N1bWVudE5vZGUpIHsKICAgICAgICAgZm9yIChsZXQge3NlbGVjdG9yLCBoYXNofSBv
ZiB0ZXN0Q2FzZXMpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUu
aWQsIHNlbGVjdG9yLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgICAgICBsZXQgZG9t
Tm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChkb21Ob2RlLCBgR290IERPTU5vZGUgZm9yICR7c2VsZWN0b3J9YCk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuY29udGVudFNlY3VyaXR5
UG9saWN5SGFzaCgpID09PSBoYXNoLCBgRE9NTm9kZSBoYXMgaGFzaCAke2hhc2h9YCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbAppbmRl
eCA0NzZhM2JkZDVkZjc1Y2UxZDkxMzI5MDMxMzZmNDEwMWIzNTY0OTYyLi43YjEyOGQ4NmFlM2I4
YWY3MjBhMWFmYzIxY2JiZGQyZDY3M2ZlZGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRlLmh0bWwKQEAgLTE0LDggKzE0LDggQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9t
RWxlbWVudFN0YXRlLkJ1aWx0aW4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUu
aWQsICIjYnVpbHRpbiIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBub2Rl
ID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBXSS5k
b21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2J1aWx0aW4iLCAobm9k
ZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9k
ZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChub2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAiYnVpbHRpbiIsICIjYnVpbHRpbiBzaG91bGQg
YmUgQ3VzdG9tRWxlbWVudFN0YXRlLkJ1aWx0aW4uIik7CiAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwogICAgICAgICAgICAgfSk7CkBAIC0yNSw4ICsyNSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkN1c3RvbUVsZW1lbnRTdGF0
ZS5DdXN0b20uQ29uc3RydWN0ZWQiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUu
aWQsICJjb25zdHJ1Y3RlZC1lbGVtZW50IiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgICAg
IGNvbnN0IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJjb25z
dHJ1Y3RlZC1lbGVtZW50IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IG5v
ZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZS5jdXN0b21FbGVtZW50U3RhdGUoKSwgImN1c3Rv
bSIsICJjb25zdHJ1Y3RlZC1lbGVtZW50IHNob3VsZCBiZSBDdXN0b21FbGVtZW50U3RhdGUuQ3Vz
dG9tLiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwpAQCAt
MzYsOCArMzYsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAg
ICAgICAgIG5hbWU6ICJDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLlVwZ3JhZGVkIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2Vy
LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAidXBncmFkZWQtZWxlbWVudCIsIChub2Rl
SWQpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tVHJlZU1hbmFnZXIu
bm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCAidXBncmFkZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5vZGUuY3VzdG9t
RWxlbWVudFN0YXRlKCksICJjdXN0b20iLCAidXBncmFkZWQtZWxlbWVudCBzaG91bGQgYmUgQ3Vz
dG9tRWxlbWVudFN0YXRlLkN1c3RvbS4iKTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAg
ICAgICAgICAgICB9KTsKQEAgLTQ3LDggKzQ3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgc3Vp
dGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRp
bmciLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9t
VHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJ1bmRlZmluZWQtZWxl
bWVudCIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9t
VHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2Vy
LnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAidW5kZWZpbmVkLWVsZW1lbnQiLCAobm9k
ZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9k
ZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChub2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAid2FpdGluZyIsICJ1bmRlZmluZWQtZWxlbWVu
dCBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmcuIik7CiAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CkBAIC01OCwxNSArNTgsMTUgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiQ3VzdG9t
RWxlbWVudFN0YXRlLkZhaWxlZCIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5p
ZCwgImZhaWxlZC1lbGVtZW50IiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0
IG5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAg
IFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJmYWlsZWQtZWxl
bWVudCIsIChub2RlSWQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV0kuZG9t
TWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKG5vZGUuY3VzdG9tRWxlbWVudFN0YXRlKCksICJmYWlsZWQiLCAiZmFpbGVk
LWVsZW1lbnQgc2hvdWxkIGJlIEN1c3RvbUVsZW1lbnRTdGF0ZS5GYWlsZWQuIik7CiAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9KTsK
IAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAg
IFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CiAgICAgICAgIGRvY3Vt
ZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRp
ZXMtY3NzcGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMt
Y3NzcGF0aC5odG1sCmluZGV4IDVhMWIxNzUzODQwNjBlYWM1YjlmZThmMzVmNDQ5NjMzMTJmZWVm
MzMuLjIzODM3NDE4MDUyZDE5ZWIxYTA2NGY2NzU4NjM0YWZiM2FiMmRjODIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLWNzc3BhdGguaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy1jc3NwYXRoLmh0bWwKQEAg
LTgsOCArOCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGxldCBkb2N1bWVudE5vZGU7CiAKICAg
ICBmdW5jdGlvbiBub2RlRm9yU2VsZWN0b3Ioc2VsZWN0b3IsIGNhbGxiYWNrKSB7Ci0gICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3Rv
ciwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgY2FsbGJhY2soV0kuZG9tVHJlZU1hbmFnZXIu
bm9kZUZvcklkKG5vZGVJZCkpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3Io
ZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgY2Fs
bGJhY2soV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSk7CiAgICAgICAgIH0pOwogICAg
IH0KIApAQCAtMTQxLDcgKzE0MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gRklYTUU6
IFdyaXRlIHRlc3RzIGZvciBub2RlcyBpbnNpZGUgYSBTaGFkb3cgRE9NIFRyZWUuCiAKLSAgICBX
SS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBXSS5kb21N
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGUg
PSBub2RlOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLXBhdGgt
ZHVtcC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1k
dW1wLmh0bWwKaW5kZXggNzMzNzllMGEwNjA3OGE3MzQxMDE3OGNiNzk2Zjg1MjIzOTJhNDgwMC4u
MzY0N2E1NTk0Y2I4ZmMxZGY2MmMxNjRjYTYzMzFkMTYxMGRlZDA2YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLmh0bWwKQEAg
LTM5LDEwICszOSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Cisg
ICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAg
ICAgICAvLyBQdXNoIGFsbCB0aGUgbm9kZXMgdG8gdGhlIGZyb250ZW5kLgotICAgICAgICBXSS5k
b21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgImh0bWwiLCAobm9k
ZUlkKSA9PiB7Ci0gICAgICAgICAgICBsZXQgaHRtbE5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5u
b2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRv
Y3VtZW50Tm9kZS5pZCwgImh0bWwiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICBsZXQgaHRt
bE5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgaHRt
bE5vZGUuZ2V0U3VidHJlZSgxMCwgKCkgPT4gewogICAgICAgICAgICAgICAgIGJ1aWxkTm9kZUxp
c3QoaHRtbE5vZGUsIDApOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2RvbXV0aWxpdGllcy14cGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb211
dGlsaXRpZXMteHBhdGguaHRtbAppbmRleCA3ODUyMWI3OTZkOWU4ZTljMDQxMWVlMDk4Yzk0ZGRj
OGIyZjUxMmFhLi44NmQ1MTI0ZWIyY2NiZTIyZWMzMjJiMGVkMTNmMGMzNzY5YzliN2Q5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy14cGF0aC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tdXRpbGl0aWVzLXhwYXRoLmh0bWwK
QEAgLTgsOCArOCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGxldCBkb2N1bWVudE5vZGU7CiAK
ICAgICBmdW5jdGlvbiBub2RlRm9yU2VsZWN0b3Ioc2VsZWN0b3IsIGNhbGxiYWNrKSB7Ci0gICAg
ICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxl
Y3RvciwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgY2FsbGJhY2soV0kuZG9tVHJlZU1hbmFn
ZXIubm9kZUZvcklkKG5vZGVJZCkpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0
b3IoZG9jdW1lbnROb2RlLmlkLCBzZWxlY3RvciwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAg
Y2FsbGJhY2soV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIApAQCAtOTgsNyArOTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyBGSVhNRTog
V3JpdGUgdGVzdHMgZm9yIG5vZGVzIGluc2lkZSBhIFNoYWRvdyBET00gVHJlZS4KICAgICAvLyBG
SVhNRTogV3JpdGUgdGVzdCBmb3IgQ0RBVEEuCiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1
ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVu
dCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVudE5vZGUgPSBub2RlOwogICAgICAgICBzdWl0
ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJlbW92ZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKaW5kZXgg
Zjk1ZTlmNGFmYmYyODdjNGI5YWU1NDYwOTZlZmRlZGMyZTI0ZjI3ZC4uODdlYWM4MWRiNTg1Y2Ez
Njk5NGM0NDRiZTBkMTM4YjkxYjAwZjNjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKQEAgLTIyMyw3ICsy
MjMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBXSS5k
b21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgIFdJ
LmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKICAgICAgICAg
bm9kZSA9IGRvY3VtZW50Tm9kZTsKIAogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2dldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZS5odG1sCmluZGV4IDhlZGI4MWVmNjc2NTNkZTRmNGExYzllYjZmOWJiZTU5
OTU1MmY2OTIuLjY5N2U1MzI2ZmRkNjNkOTZjOGE4OGRmM2ViM2M2ZWY2OGJmMGY4YWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2Rl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9nZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUuaHRtbApAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGZvciAobGV0IGV2ZW50TGlzdGVuZXIgb2YgZXZl
bnRMaXN0ZW5lcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBXSS5kb21UcmVl
TWFuYWdlci5ub2RlRm9ySWQoZXZlbnRMaXN0ZW5lci5ub2RlSWQpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgbm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGV2ZW50TGlzdGVuZXIubm9k
ZUlkKTsKIAogCiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBFdmVudDog
JHtldmVudExpc3RlbmVyLnR5cGV9YCk7CkBAIC00MywxNSArNDMsMTUgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVz
dERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
cXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJkaXYjeCIsIChjb250ZW50Tm9kZUlkKSA9
PiB7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4g
eworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAi
ZGl2I3giLCAoY29udGVudE5vZGVJZCkgPT4gewogICAgICAgICAgICAgaWYgKCFjb250ZW50Tm9k
ZUlkKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJET00gbm9kZSBub3Qg
Zm91bmQuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRv
bU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7CisgICAg
ICAgICAgICBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7
CiAKICAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZ2V0T3V0ZXJIVE1MLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2dldE91dGVySFRNTC5odG1sCmluZGV4IGVk
NTVlYjY1YzNlNjRlNGE1ZjRmYTJjMzQ3ODk2MGMyYzg1NGMwYjMuLjcwODBlOTIxNDMxN2I0ZjVk
NWI3MDQ2YjlmOThjY2RjYjRiNTYwYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vZ2V0T3V0ZXJIVE1MLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9n
ZXRPdXRlckhUTUwuaHRtbApAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgbmFtZTogIkdldE91dGVySFRNTCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRoZSBP
dXRlckhUTUwgb2YgdGhlIHRhcmdldCBlbGVtZW50LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQo
ZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFn
ZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjeCIsIGZ1bmN0aW9uKG5vZGVJZCkg
ewotICAgICAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5v
ZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CisgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgZnVuY3Rpb24obm9kZUlkKSB7
CisgICAgICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9y
SWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9t
Tm9kZSwgIkRPTU5vZGUgZXhpc3RzIik7CiAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuZ2V0
T3V0ZXJIVE1MKGZ1bmN0aW9uKGVycm9yLCBvdXRlckhUTUwpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZGVIaWdobGlnaHQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vaGlkZUhpZ2hsaWdodC5odG1sCmluZGV4IDgyZDNiOTE1YzVlM2E1YzUz
NjgzYTlkMTJhZjVlNWM1ZTA1Y2JkMzguLjVjNDM1ODViYzI0ZDA0YTc2MTdhYjczYWQ2YmEzYTEx
YmJlNWM3YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlkZUhpZ2hs
aWdodC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlkZUhpZ2hsaWdodC5o
dG1sCkBAIC0xMDYsOCArMTA2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
bWFyZ2luQ29sb3I6IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwKICAgICAgICAgICAgIH07CiAK
LSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnRO
b2RlKSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rv
cihkb2N1bWVudE5vZGUuaWQsICIjdGFyZ2V0IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAg
ICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIj
dGFyZ2V0IiwgKG5vZGVJZCkgPT4gewogICAgICAgICAgICAgICAgICAgICBET01BZ2VudC5oaWdo
bGlnaHROb2RlKGhpZ2hsaWdodENvbmZpZywgbm9kZUlkLCAoZXJyb3IpID0+IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFlcnJvciwgIlNob3VsZCBub3Qg
aGF2ZSBhbiBlcnJvci4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBIaWdobGlnaHQo
cmVzb2x2ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdo
dEZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodEZyYW1lLmh0
bWwKaW5kZXggNmQ3YzBkYWY0YTRkMWY2Yjg5MWU0MDNlMzU1NmYwNWU0ZmIyNzE1OC4uNDU4YzUz
Mjg2YWM3ZjIwNjhjYTdmMDg0MjU5NDM1NDhmNzQwNGUzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHRGcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vaGlnaGxpZ2h0RnJhbWUuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRl
KCJET00uaGlnaGxpZ2h0RnJhbWUiKTsKIAotICAgIGxldCBtYWluRnJhbWUgPSBXSS5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZTsKICAgICBsZXQgY2hpbGRGcmFtZXMgPSBBcnJheS5mcm9tKG1haW5G
cmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7CiAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChjaGlsZEZyYW1lcy5sZW5ndGgsIDIsICJQYWdlIHNob3VsZCBoYXZlIHN1YmZyYW1lcy4iKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2RlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodE5vZGUuaHRtbAppbmRleCBk
YTViNWVkYjJiYmZiMDJkYTk4MTdmZjZiOTQ4ZGVlZjRkZjVjMTNiLi44ZTg0ODA4NjEzZWRhYmZi
MWY2ODEzMGNlNmQ1MGJkNzM0ZjUzNzg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL2hpZ2hsaWdodE5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2hpZ2hsaWdodE5vZGUuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uaGlnaGxp
Z2h0Tm9kZSIpOwogCi0gICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZTsKKyAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lOwogICAgIGxldCBjaGlsZEZyYW1lcyA9IEFycmF5LmZyb20obWFpbkZyYW1lLmNoaWxkRnJh
bWVDb2xsZWN0aW9uKTsKICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkRnJhbWVz
Lmxlbmd0aCwgMSwgIlBhZ2Ugc2hvdWxkIGhhdmUgYSBzdWJmcmFtZS4iKTsKIApAQCAtNTQsOCAr
NTQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIk1haW5GcmFtZU5vZGVWaWFO
b2RlSWQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBoaWdobGlnaHQgYSBub2RlIGlu
IHRoZSBtYWluIGZyYW1lIHVzaW5nIG5vZGUgaWQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IobWFp
bkZyYW1lRG9jdW1lbnROb2RlSWQsICIjaWQtb25lIiwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAg
ICAgICAgICAgICAgbWFpbkZyYW1lVGFyZ2V0Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVG
b3JJZChub2RlSWQpOworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKG1h
aW5GcmFtZURvY3VtZW50Tm9kZUlkLCAiI2lkLW9uZSIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAg
ICAgICAgICAgICAgIG1haW5GcmFtZVRhcmdldE5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOwogICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUoaGlnaGxp
Z2h0Q29uZmlnLCBtYWluRnJhbWVUYXJnZXROb2RlLmlkLCB1bmRlZmluZWQsIChlcnJvcikgPT4g
ewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZXJyb3IsICJTaG91
bGQgbm90IGhhdmUgYW4gZXJyb3IuIik7CiAgICAgICAgICAgICAgICAgICAgIGR1bXBIaWdobGln
aHQocmVzb2x2ZSk7CkBAIC02OCw4ICs2OCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBu
YW1lOiAiQ2hpbGRGcmFtZU5vZGVWaWFOb2RlSWQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlNo
b3VsZCBoaWdobGlnaHQgYSBub2RlIGluIHRoZSBjaGlsZCBmcmFtZSB1c2luZyBub2RlIGlkLiIs
CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci5xdWVyeVNlbGVjdG9yKGNoaWxkRnJhbWVEb2N1bWVudE5vZGVJZCwgIiNpZC1vbmUi
LCBmdW5jdGlvbihub2RlSWQpIHsKLSAgICAgICAgICAgICAgICBjaGlsZEZyYW1lVGFyZ2V0Tm9k
ZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgV0ku
ZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGNoaWxkRnJhbWVEb2N1bWVudE5vZGVJZCwgIiNpZC1v
bmUiLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgICAgICBjaGlsZEZyYW1lVGFyZ2V0
Tm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICAgICAg
RE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZShoaWdobGlnaHRDb25maWcsIGNoaWxkRnJhbWVUYXJnZXRO
b2RlLmlkLCB1bmRlZmluZWQsIChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYW4gZXJyb3IuIik7CiAg
ICAgICAgICAgICAgICAgICAgIGR1bXBIaWdobGlnaHQocmVzb2x2ZSk7CkBAIC0xMzgsNyArMTM4
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgV0kuZG9t
TWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAgICAgICBtYWlu
RnJhbWVEb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZS5pZDsKICAgICAgICAgUnVudGltZUFn
ZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogImRvY3VtZW50Iiwgb2JqZWN0R3JvdXA6
ICJ0ZXN0IiwgY29udGV4dElkOiBjaGlsZEZyYW1lc1swXS5wYWdlRXhlY3V0aW9uQ29udGV4dC5p
ZH0sIChlcnJvciwgcmVtb3RlT2JqZWN0UGF5bG9hZCkgPT4gewogICAgICAgICAgICAgbGV0IHJl
bW90ZU9iamVjdCA9IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZW1vdGVPYmplY3RQYXls
b2FkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2Rl
TGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHROb2RlTGlzdC5o
dG1sCmluZGV4IDQ3OTIzZTA2MTI1NGY2N2ZkZGNmMWVmYzVkZTk3ZTRmNzU1OTdhNDEuLjAyOGRj
ODhiZDJiZjdlZmYzYjBjZmI1NDBmY2Q4NmI2MzNjNDAzYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0Tm9kZUxpc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodE5vZGVMaXN0Lmh0bWwKQEAgLTcsNyArNyw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiRE9NLmhpZ2hsaWdodE5vZGVMaXN0Iik7CiAKLSAgICBsZXQgbWFpbkZyYW1lID0g
V0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgIGxldCBtYWluRnJhbWUgPSBX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CiAgICAgbGV0IGNoaWxkRnJhbWVzID0gQXJyYXku
ZnJvbShtYWluRnJhbWUuY2hpbGRGcmFtZUNvbGxlY3Rpb24pOwogICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoY2hpbGRGcmFtZXMubGVuZ3RoLCAxLCAiUGFnZSBzaG91bGQgaGF2ZSBhIHN1
YmZyYW1lLiIpOwogCkBAIC03Myw3ICs3Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBu
YW1lOiAiRE9NLmhpZ2hsaWdodE5vZGVMaXN0Lm1haW5GcmFtZU5vZGUiLAogICAgICAgICBkZXNj
cmlwdGlvbjogIlNob3VsZCBoaWdobGlnaHQgYWxsIGRpdiBpbiB0aGUgbWFpbiBmcmFtZS4iLAog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIucXVlcnlTZWxlY3RvckFsbChtYWluRnJhbWVEb2N1bWVudE5vZGVJZCwgImRpdiIsIChu
b2RlSWRzKSA9PiB7CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3JBbGwo
bWFpbkZyYW1lRG9jdW1lbnROb2RlSWQsICJkaXYiLCAobm9kZUlkcykgPT4gewogICAgICAgICAg
ICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGVMaXN0KG5vZGVJZHMsIGhpZ2hsaWdodENvbmZp
ZywgKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKQEAgLTkxLDcgKzkxLDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJET00uaGlnaGxpZ2h0Tm9kZUxpc3QuY2hpbGRGcmFt
ZU5vZGUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBoaWdobGlnaHQgYWxsIGRpdiBp
biB0aGUgY2hpbGQgZnJhbWUuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3JBbGwoY2hpbGRGcmFtZURv
Y3VtZW50Tm9kZUlkLCAiZGl2IiwgKG5vZGVJZHMpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbU1h
bmFnZXIucXVlcnlTZWxlY3RvckFsbChjaGlsZEZyYW1lRG9jdW1lbnROb2RlSWQsICJkaXYiLCAo
bm9kZUlkcykgPT4gewogICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGVMaXN0
KG5vZGVJZHMsIGhpZ2hsaWdodENvbmZpZywgKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsK
QEAgLTEzNyw3ICsxMzcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwog
Ci0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+
IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7
CiAgICAgICAgIG1haW5GcmFtZURvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlLmlkOwogICAg
ICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uOiAiZG9jdW1lbnQi
LCBvYmplY3RHcm91cDogInRlc3QiLCBjb250ZXh0SWQ6IGNoaWxkRnJhbWVzWzBdLnBhZ2VFeGVj
dXRpb25Db250ZXh0LmlkfSwgKGVycm9yLCByZW1vdGVPYmplY3RQYXlsb2FkKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJl
bW90ZU9iamVjdFBheWxvYWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2hpZ2hsaWdodFNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hs
aWdodFNlbGVjdG9yLmh0bWwKaW5kZXggNjNjNTlkZDhkZjk3MzAxMzA5ODY0MjFmNTYyMTFlMTI1
N2ZiYmQyYS4uOTYxMDMyMjVjMDcxNGNiZmI4MzExMTU3M2VkZTFhZjc2ZjMzYTQ0NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHRTZWxlY3Rvci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0U2VsZWN0b3IuaHRtbApAQCAt
Nyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uaGlnaGxpZ2h0U2VsZWN0b3IiKTsKIAotICAgIGxl
dCBtYWluRnJhbWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7CisgICAgbGV0
IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKICAgICBsZXQgY2hpbGRG
cmFtZXMgPSBBcnJheS5mcm9tKG1haW5GcmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7CiAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZEZyYW1lcy5sZW5ndGgsIDEsICJQYWdlIHNo
b3VsZCBoYXZlIGEgc3ViZnJhbWUuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCmluZGV4IDY0YjY0OGM2MzQ3NzY4NDNiMWY4ODY3
MTUxMmQ5ZGEwNTlmZGY3YmQuLmEwZDZlYjJkZmVjMmUwOTBhZjVlZGEyZWE3ODk1M2MwMDJlMzg3
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRI
VE1MLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhU
TUwuaHRtbApAQCAtNjgsOSArNjgsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAg
IH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5v
ZGUpID0+IHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVu
dE5vZGUuaWQsICIjcmVmZXJlbmNlIiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAgZG9tTm9k
ZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgIFdJLmRvbU1hbmFn
ZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNyZWZlcmVuY2UiLCAobm9kZUlk
KSA9PiB7CisgICAgICAgICAgICBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRvbU5vZGUsIGBOb2RlIHdp
dGggaWQgInJlZmVyZW5jZSIgc2hvdWxkIGV4aXN0LmApOwogCiAgICAgICAgICAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vaW5zcGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0Lmh0
bWwKaW5kZXggMjM3MzIyNTU1NGZjNTJjZTE5M2I1NjljMDc0MzVmMGQwODIxMjE1Yi4uNTRlNGFl
NjQzYTJkMzAwMTQ2NGQ0MDk5NzU1ODFmMDM3NDQxNjAzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9pbnNwZWN0Lmh0bWwKQEAgLTIwLDEwICsyMCwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgbmFtZTogIkRPTS5pbnNwZWN0LnZhbGlkIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJF
dmVudCBnaXZlbiBhIHZhbGlkIG5vZGVJZCBzaG91bGQgc2VsZWN0IGl0LiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVy
eVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNlbGVtZW50LXRvLXNlbGVjdCIsIChub2RlSWQp
ID0+IHsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5v
ZGUuaWQsICIjZWxlbWVudC10by1zZWxlY3QiLCAobm9kZUlkKSA9PiB7CiAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hET01JbnNwZWN0RXZlbnQobm9kZUlkKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYXdhaXRFdmVudChXSS5ET01UcmVlTWFuYWdlci5F
dmVudC5ET01Ob2RlV2FzSW5zcGVjdGVkKS50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRPTU1hbmFnZXIuRXZlbnQuRE9NTm9kZVdhc0lu
c3BlY3RlZCkudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnBhc3MoIkRPTU5vZGVXYXNJbnNwZWN0ZWQgZXZlbnQiKTsKICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1
bWVudCgobm9kZSkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2Rl
KSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9wc2V1ZG8tZWxlbWVudC1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LWR5bmFtaWMuaHRtbAppbmRleCBmZDliMDQ5ZWFlOTA4
OGE1ZDkxZWVhMmIxNzlmNTlhZmU4NjZmMTg4Li41ZDBkNmFmZDQ0Nzg3NzNlNjRjNzAxNGU5Nzll
Y2VmOWU4ZmY0OWMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVk
by1lbGVtZW50LWR5bmFtaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Bz
ZXVkby1lbGVtZW50LWR5bmFtaWMuaHRtbApAQCAtMTExLDkgKzExMSw5IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQogCi0g
ICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9k
ZSkgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9k
ZS5pZCwgIiN4IiwgZnVuY3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICB0ZXN0RE9NTm9kZSA9
IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgIFdJLmRvbU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgeworICAgICAgICBXSS5kb21N
YW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3giLCBmdW5jdGlvbihub2Rl
SWQpIHsKKyAgICAgICAgICAgIHRlc3RET01Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQo
bm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh0ZXN0RE9NTm9kZSwgIkdvdCBET01Ob2RlIGZvciAj
eCIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIXRlc3RET01Ob2RlLnBzZXVk
b1R5cGUoKSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
fSk7CiAgICAgfSk7CiAKLSAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5Ob2Rl
SW5zZXJ0ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIC8vIFRlc3QgbG9nZ2luZyB3aWxs
IGFkZCBub2RlcyB0byB0aGUgdGVzdCBwYWdlLiBJZ25vcmUgYW55IGVsZW1lbnRzIGFkZGVkIHRo
YXQgYXJlIG5vdCBjaGlsZHJlbiBvZiBvdXIgdGVzdCBub2RlLgogICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5wYXJlbnQgIT09IHRlc3RET01Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1
LDcgKzEzNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIG5leHQoKTsKICAgICB9KTsK
IAotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFn
ZXIuRXZlbnQuTm9kZVJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuZG9tTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFVkVOVDogTm9kZVJlbW92
ZWQiKTsKICAgICAgICAgaW5zZXJ0ZWRPclJlbW92ZWRET01Ob2RlID0gZXZlbnQuZGF0YS5ub2Rl
OwogICAgICAgICBuZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L3BzZXVkby1lbGVtZW50LXN0YXRpYy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9w
c2V1ZG8tZWxlbWVudC1zdGF0aWMuaHRtbAppbmRleCA1YmE1ZWFiY2RhZjdkOTcwYmE3MjdlYzdk
ZGVmMTM3OTdhY2RmYzdmLi40M2Q4YWU2YWU0YzU1MDQxNTdlZGI2Nzc4MzE4OTQ2NWU1MWJmNDg3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3BzZXVkby1lbGVtZW50LXN0
YXRpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vcHNldWRvLWVsZW1lbnQt
c3RhdGljLmh0bWwKQEAgLTMsOSArMyw5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1
bWVudChmdW5jdGlvbihkb2N1bWVudE5vZGUpIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
cXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjbm9uZSIsIGZ1bmN0aW9uKG5vZGVJZCkg
ewotICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQo
bm9kZUlkKTsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5jdGlvbihkb2N1
bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50
Tm9kZS5pZCwgIiNub25lIiwgZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAgICB2YXIgZG9t
Tm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZG9tTm9kZSwgIkdvdCBET01Ob2RlIGZvciAjbm9uZSIpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIWRvbU5vZGUucHNldWRvVHlwZSgpKTsKQEAgLTE1LDggKzE1LDggQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFkb21Ob2Rl
LmFmdGVyUHNldWRvRWxlbWVudCgpKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjYiIsIGZ1bmN0aW9uKG5v
ZGVJZCkgewotICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2Rl
Rm9ySWQobm9kZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3Vt
ZW50Tm9kZS5pZCwgIiNiIiwgZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAgICB2YXIgZG9t
Tm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZG9tTm9kZSwgIkdvdCBET01Ob2RlIGZvciAjYiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoIWRvbU5vZGUucHNldWRvVHlwZSgpKTsKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2Rl
LmJlZm9yZVBzZXVkb0VsZW1lbnQoKS5wc2V1ZG9UeXBlKCkgPT09IFdJLkRPTU5vZGUuUHNldWRv
RWxlbWVudFR5cGUuQmVmb3JlLCAiRE9NTm9kZSBmb3IgYmVmb3JlIHBzZXVkbyBlbGVtZW50IGhh
cyB0aGUgcmlnaHQgdHlwZSIpOwogICAgICAgICB9KTsKIAotICAgICAgICBXSS5kb21UcmVlTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNhIiwgZnVuY3Rpb24obm9kZUlk
KSB7Ci0gICAgICAgICAgICB2YXIgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCAiI2EiLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAgIHZhciBkb21Ob2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21O
b2RlLCAiR290IERPTU5vZGUgZm9yICNhIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydCghZG9tTm9kZS5wc2V1ZG9UeXBlKCkpOwpAQCAtMzksOCArMzksOCBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuYWZ0
ZXJQc2V1ZG9FbGVtZW50KCkucHNldWRvVHlwZSgpID09PSBXSS5ET01Ob2RlLlBzZXVkb0VsZW1l
bnRUeXBlLkFmdGVyLCAiRE9NTm9kZSBmb3IgYWZ0ZXIgcHNldWRvIGVsZW1lbnQgaGFzIHRoZSBy
aWdodCB0eXBlIik7CiAgICAgICAgIH0pOwogCi0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3giLCBmdW5jdGlvbihub2RlSWQpIHsKLSAg
ICAgICAgICAgIHZhciBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJ
ZCk7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQs
ICIjeCIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5k
b21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsICJH
b3QgRE9NTm9kZSBmb3IgI3giKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFk
b21Ob2RlLnBzZXVkb1R5cGUoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL3B1c2gtbm9kZS1ieS1wYXRoLXRvLWZyb250ZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3B1c2gtbm9kZS1ieS1wYXRoLXRvLWZyb250ZW5kLmh0bWwKaW5kZXggZWQxM2Y4
NWJhZmQ4MzdhMzFlMmE1ZWU0YTJiZjExNzhhMTI0M2ZiNi4uZmI2MDViN2IzZWJlYTNmOGJiOTM4
YWM4ODY2NDNhYjgyOTE4NTMxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9wdXNoLW5vZGUtYnktcGF0aC10by1mcm9udGVuZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vcHVzaC1ub2RlLWJ5LXBhdGgtdG8tZnJvbnRlbmQuaHRtbApAQCAtMTIsMTMg
KzEyLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24s
CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJQdXNoIG5vZGUgd2l0aCBwYXRoOiAiICsgcGF0aCk7Ci0gICAgICAg
ICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgs
IChub2RlSWRlbnRpZmllcikgPT4geworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucHVz
aE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIChub2RlSWRlbnRpZmllcikgPT4gewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIW5vZGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gV0kuZG9tVHJl
ZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IG5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWRlbnRpZmllcik7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZS5wYXRoKCksIHBh
dGgsICJQdXNoZWQgbm9kZSBoYXMgY29ycmVjdCBwYXRoLiIpOwogICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9zZXRFdmVudExpc3RlbmVyRGlzYWJsZWQuaHRtbAppbmRleCBjNjY1
ZGM1ZDYwOGI4ZjgyOGIzOTNiZmY5MGNjMDllN2M0YTkwODhiLi45N2RiMGRiZGMyNTBhNGJjNWY1
OGJlNDk4MDdhNDhlZGExMWQ1NTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL3NldEV2ZW50TGlzdGVuZXJEaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vc2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkLmh0bWwKQEAgLTk2LDcgKzk2LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1h
bmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5h
Z2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgIERPTUFnZW50
LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShkb2N1bWVudE5vZGUuaWQsIChlcnJvciwgZXZlbnRM
aXN0ZW5lcnMpID0+IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZmFpbCgiVW5hYmxlIHRvIHJldHJpZXZlIGV2ZW50IGxpc3RlbmVycy4i
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0SW5zcGVjdGVkTm9k
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRJbnNwZWN0ZWROb2RlLmh0bWwK
aW5kZXggNzczMmM2YzUwOGEwNjVhZmExZDYzNGZkZDBkY2U1MmU2OGY1NWZiZi4uZmI3MmYxNmNh
ZjUyYmQ3YzNmZTU0ZjllZWY1OTlkOTBkMzJlNjEyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9zZXRJbnNwZWN0ZWROb2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9zZXRJbnNwZWN0ZWROb2RlLmh0bWwKQEAgLTc0LDE0ICs3NCwxNCBAQCBmdW5j
dGlvbiB0ZXN0KCkKIAogICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCAkMCBiZSBhZnRlciByZWxv
YWRpbmcgLyBuYXZpZ2F0aW5nIHRoZSBwYWdlLiBTaG91bGQgaXQgYmUgY2xlYXJlZD8KIAotICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7Ci0g
ICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAi
I2EiLCAoY29udGVudE5vZGVJZCkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVj
dG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNhIiwgKGNvbnRlbnROb2RlSWQpID0+IHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNvbnRlbnROb2RlSWQsICIjYSBub2RlIHNob3VsZCBl
eGlzdC4iKTsKLSAgICAgICAgICAgIG5vZGVBID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklk
KGNvbnRlbnROb2RlSWQpOworICAgICAgICAgICAgbm9kZUEgPSBXSS5kb21NYW5hZ2VyLm5vZGVG
b3JJZChjb250ZW50Tm9kZUlkKTsKICAgICAgICAgfSk7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5h
Z2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2IiLCAoY29udGVudE5vZGVJZCkg
PT4geworICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlk
LCAiI2IiLCAoY29udGVudE5vZGVJZCkgPT4gewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoY29udGVudE5vZGVJZCwgIiNiIG5vZGUgc2hvdWxkIGV4aXN0LiIpOwotICAgICAgICAg
ICAgbm9kZUIgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5vZGVJZCk7Cisg
ICAgICAgICAgICBub2RlQiA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2RlSWQp
OwogICAgICAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRPdXRl
ckhUTUwtbm8tZG9jdW1lbnQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9zZXRPdXRlckhUTUwtbm8tZG9jdW1lbnQtZWxlbWVudC5odG1sCmluZGV4IGZmNWYzYjMxMTk5
MDM5ZmQ0YzhmOTZkYTFlOGNkMzBlZDE2NjhlODcuLmY0NjZkYzQ5MmVmODE5MDJmOWYyNWY4OWY0
YTBhZjUwOWNlODk1ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0
T3V0ZXJIVE1MLW5vLWRvY3VtZW50LWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3NldE91dGVySFRNTC1uby1kb2N1bWVudC1lbGVtZW50Lmh0bWwKQEAgLTE5LDcg
KzE5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgV0ku
ZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4gewogICAgICAgICBk
b2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZS5pZDsKICAgICAgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL3NldE91dGVySFRNTC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zZXRP
dXRlckhUTUwuaHRtbAppbmRleCBiNTk0NGQwNjA1MjY1MGRjOWRjY2RlODhjNDNiMTNmNGMyMmQ0
N2QyLi42NWNlNmZmNDNjYTFiOTI1NThjMjhiZjFmZWQyNzg3YTZlOTA4NjlkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NldE91dGVySFRNTC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vc2V0T3V0ZXJIVE1MLmh0bWwKQEAgLTcxLDkgKzcxLDkgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1h
bmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgZnVu
Y3Rpb24obm9kZUlkKSB7Ci0gICAgICAgICAgICBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIu
bm9kZUZvcklkKG5vZGVJZCk7CisgICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVu
Y3Rpb24oZG9jdW1lbnROb2RlKSB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rv
cihkb2N1bWVudE5vZGUuaWQsICIjeCIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAg
ZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChkb21Ob2RlLCAiRE9NTm9kZSBleGlzdHMuIik7CiAgICAgICAg
ICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NoYWRvdy1hbmQtbm9uLXNoYWRvdy1jaGls
ZHJlbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFkb3ctYW5kLW5vbi1zaGFk
b3ctY2hpbGRyZW4uaHRtbAppbmRleCA3YmM5ZTRjOTQ0NjcxZjQwYjU2ODY1MjA5MzU4OGVlZGJm
ZTY1ZWM3Li44ZDkyMDNjNDI3ZmE2MGQ5OTI5M2IwOTE5MGEzOTYwOGFhMDBiMjU3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3NoYWRvdy1hbmQtbm9uLXNoYWRvdy1jaGls
ZHJlbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhZG93LWFuZC1ub24t
c2hhZG93LWNoaWxkcmVuLmh0bWwKQEAgLTE2LDggKzE2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIG5hbWU6ICJET01Ob2RlLlNoYWRvd0FuZE5vblNoYWRvd0NoaWxkcmVuLlZpZGVvV2l0
aFNvdXJjZSIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgZm9yIGFsbCBjaGlsZHJlbiBv
ZiBhIHZpZGVvIHdpdGggYSBzb3VyY2UgY2hpbGQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9j
dW1lbnROb2RlSWQsICIjdGVzdC12aWRlbyIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAg
ICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAg
ICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZUlkLCAiI3Rl
c3QtdmlkZW8iLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBX
SS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoZG9tTm9kZS5ub2RlTmFtZSgpLCAiVklERU8iLCAiRE9NTm9kZSBz
aG91bGQgYmUgYSBgdmlkZW9gIGVsZW1lbnQuIik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuaGFzQ2hpbGROb2RlcygpLCAiRE9NTm9kZSBzaG91bGQg
aGF2ZSBjaGlsZCBub2Rlcy4iKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoZG9tTm9kZS5jaGlsZE5vZGVDb3VudCwgIkRPTU5vZGUgc2hvdWxkIGluZGljYXRlIGl0
IGhhcyAyIGNoaWxkIG5vZGVzLiIpOwpAQCAtMzMsNyArMzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgfQogICAgIH0pOwogCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVu
dCgoZG9jdW1lbnROb2RlKSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnRO
b2RlLmlkOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhZG93Um9vdFR5cGUuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhZG93Um9vdFR5cGUuaHRtbAppbmRleCA1
NTBlOWM4ZWExZTM0ODc2YWM4NTViNjM4YWNmN2ZlY2I3OWJiZDIzLi41YTM1NTVlZDgyZmRkZTBl
NGJlNjBmZGE5ZDZlNDg5NGQxOTQ5MmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL3NoYWRvd1Jvb3RUeXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9zaGFkb3dSb290VHlwZS5odG1sCkBAIC0xMiw4ICsxMiw4IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlNoYWRvd1Jvb3RUeXBlLlVz
ZXJBZ2VudCIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNob3N0LXVz
ZXItYWdlbnQiLCAobm9kZUlkKSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBX
SS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbU1h
bmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjaG9zdC11c2VyLWFnZW50Iiwg
KG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdl
ci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yICNob3N0LXVzZXItYWdlbnQiKTsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZG9tTm9kZS5zaGFkb3dSb290cygpLmxl
bmd0aCA9PT0gMSwgIkRPTU5vZGUgaGFzIGEgc2luZ2xlIHNoYWRvdyByb290LiIpOwogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRvd1Jvb3RzKClb
MF0uc2hhZG93Um9vdFR5cGUoKSA9PT0gV0kuRE9NTm9kZS5TaGFkb3dSb290VHlwZS5Vc2VyQWdl
bnQsICJET01Ob2RlIGhhcyBVc2VyQWdlbnQgc2hhZG93IHJvb3QgdHlwZS4iKTsKQEAgLTI2LDgg
KzI2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAg
ICBuYW1lOiAiU2hhZG93Um9vdFR5cGUuQ2xvc2VkIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9j
dW1lbnROb2RlLmlkLCAiI2hvc3QtY2xvc2VkIiwgKG5vZGVJZCkgPT4gewotICAgICAgICAgICAg
ICAgIGxldCBkb21Ob2RlID0gV0kuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCk7Cisg
ICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAi
I2hvc3QtY2xvc2VkIiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGxldCBkb21Ob2Rl
ID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yICNob3N0LWNsb3NlZCIp
OwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRv
d1Jvb3RzKCkubGVuZ3RoID09PSAxLCAiRE9NTm9kZSBoYXMgYSBzaW5nbGUgc2hhZG93IHJvb3Qu
Iik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hh
ZG93Um9vdHMoKVswXS5zaGFkb3dSb290VHlwZSgpID09PSBXSS5ET01Ob2RlLlNoYWRvd1Jvb3RU
eXBlLkNsb3NlZCwgIkRPTU5vZGUgaGFzIENsb3NlZCBzaGFkb3cgcm9vdCB0eXBlLiIpOwpAQCAt
NDAsOCArNDAsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAg
ICAgICAgIG5hbWU6ICJTaGFkb3dSb290VHlwZS5PcGVuIiwKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3Io
ZG9jdW1lbnROb2RlLmlkLCAiI2hvc3Qtb3BlbiIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAg
ICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwor
ICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwg
IiNob3N0LW9wZW4iLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUg
PSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KGRvbU5vZGUsICJHb3QgRE9NTm9kZSBmb3IgI2hvc3Qtb3BlbiIpOwog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLnNoYWRvd1Jv
b3RzKCkubGVuZ3RoID09PSAxLCAiRE9NTm9kZSBoYXMgYSBzaW5nbGUgc2hhZG93IHJvb3QuIik7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93
Um9vdHMoKVswXS5zaGFkb3dSb290VHlwZSgpID09PSBXSS5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBl
Lk9wZW4sICJET01Ob2RlIGhhcyBPcGVuIHNoYWRvdyByb290IHR5cGUuIik7CkBAIC01NCw4ICs1
NCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAg
bmFtZTogIk5vU2hhZG93Um9vdFR5cGUiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5v
ZGUuaWQsICIjbm8taG9zdCIsIChub2RlSWQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNuby1ob3N0Iiwg
KG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdl
ci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yICNuby1ob3N0Iik7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdHMoKS5sZW5ndGggPT09
IDAsICJET01Ob2RlIGhhcyBubyBzaGFkb3cgcm9vdHMuIik7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUuc2hhZG93Um9vdFR5cGUoKSA9PT0gdW5kZWZp
bmVkLCAiRE9NTm9kZSBoYXMgbm8gc2hhZG93IHJvb3QgdHlwZS4iKTsKQEAgLTY0LDcgKzY0LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAgIFdJLmRvbU1hbmFnZXIucmVx
dWVzdERvY3VtZW50KChub2RlKSA9PiB7CiAgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CiAg
ICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS90ZW1wbGF0ZS1jb250ZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL3RlbXBsYXRlLWNvbnRlbnQuaHRtbAppbmRleCBmMzQwZmZi
NjEzNmE0YTlkMmNhOTI1ZTA0NDNmYzIxMzMwZTg0OWMxLi41NmI0NjVkMTExODA3MzQ1ODQ3MThl
YmQxOTcyMzg5ZTI0NDcyOGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L3RlbXBsYXRlLWNvbnRlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Rl
bXBsYXRlLWNvbnRlbnQuaHRtbApAQCAtMywxNSArMywxNSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBXSS5kb21UcmVlTWFuYWdlci5y
ZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI2RpdiIsIGZ1bmN0aW9u
KG5vZGVJZCkgewotICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5u
b2RlRm9ySWQobm9kZUlkKTsKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudChmdW5j
dGlvbihkb2N1bWVudE5vZGUpIHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9y
KGRvY3VtZW50Tm9kZS5pZCwgIiNkaXYiLCBmdW5jdGlvbihub2RlSWQpIHsKKyAgICAgICAgICAg
IHZhciBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLCAiR290IERPTU5vZGUgZm9yIGRp
diBlbGVtZW50Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWRvbU5v
ZGUudGVtcGxhdGVDb250ZW50KCksICJET01Ob2RlIGRvZXMgbm90IGhhdmUgdGVtcGxhdGUgY29u
dGVudCIpOwogICAgICAgICB9KTsKIAotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5xdWVyeVNl
bGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN0ZW1wbGF0ZSIsIGZ1bmN0aW9uKG5vZGVJZCkgewot
ICAgICAgICAgICAgdmFyIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9k
ZUlkKTsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5p
ZCwgIiN0ZW1wbGF0ZSIsIGZ1bmN0aW9uKG5vZGVJZCkgeworICAgICAgICAgICAgdmFyIGRvbU5v
ZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRv
bU5vZGUsICJHb3QgRE9NTm9kZSBmb3IgdGVtcGxhdGUgZWxlbWVudCIpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUudGVtcGxhdGVDb250ZW50KCksICJET01O
b2RlIGhhcyB0ZW1wbGF0ZSBjb250ZW50Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwppbmRleCBmZGQ3ZDkzNGJi
MTYxZjg0YTdiNWI4MTFmOWYzZmIxNTE0MWE4NzdiLi42NDRjZWJjZWMyZWQwOGFkMDNhYzZiNWM3
ZDQ5ZTJjMmJkYzUxZjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy91dGlsaXRpZXMuanMKQEAgLTIsOCArMiw4IEBAIFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAgICAgZnVuY3Rpb24gbG9hZEZvcm1h
dHRpbmdUZXN0QW5kRXhwZWN0ZWRSZXN1bHRzKHRlc3RVUkwpIHsKICAgICAgICAgbGV0IGV4cGVj
dGVkVVJMID0gdGVzdFVSTC5yZXBsYWNlKC9cLihbXlwuXSspJC8sICItZXhwZWN0ZWQuJDEiKTsK
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5s
b2FkUmVzb3VyY2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmlkLCB0ZXN0VVJM
KSwKLSAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIubWFpbkZyYW1lLmlkLCBleHBlY3RlZFVSTCkKKyAgICAgICAgICAgIE5ldHdvcmtB
Z2VudC5sb2FkUmVzb3VyY2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLmlkLCB0ZXN0VVJM
KSwKKyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5sb2FkUmVzb3VyY2UoV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLmlkLCBleHBlY3RlZFVSTCkKICAgICAgICAgXSkudGhlbihmdW5jdGlvbihy
ZXN1bHRzKSB7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt0ZXN0VGV4dDog
cmVzdWx0c1swXS5jb250ZW50LCBleHBlY3RlZFRleHQ6IHJlc3VsdHNbMV0uY29udGVudCB9KTsK
ICAgICAgICAgfSk7CkBAIC00Miw3ICs0Miw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6
ZXIoZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAgd2luZG93LmFkZEZvcm1hdHRpbmdUZXN0cyA9
IGZ1bmN0aW9uKHN1aXRlLCBtb2RlLCB0ZXN0cykgewotICAgICAgICBsZXQgdGVzdFBhZ2VVUkwg
PSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnVybDsKKyAg
ICAgICAgbGV0IHRlc3RQYWdlVVJMID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5S
ZXNvdXJjZS51cmw7CiAgICAgICAgIGxldCB0ZXN0UGFnZVJlc291cmNlc1VSTCA9IHRlc3RQYWdl
VVJMLnN1YnN0cmluZygwLCB0ZXN0UGFnZVVSTC5sYXN0SW5kZXhPZigiLyIpKTsgICAgICAgICAg
ICAKIAogICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2NsZWFyT2JqZWN0U3RvcmUuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvY2xlYXJPYmplY3RTdG9yZS5odG1sCmluZGV4IDkw
ZjhmMjhiYzE2YTVmZDYzMWU0MGY3NDgxZmQ1ODQ0Y2U0MWFmOTYuLjVkMjlmM2I1MDcwODcwNGJh
ZTRhMGFiZmY1NzY3MjkzN2NhNmUzN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9pbmRleGVkZGIvY2xlYXJPYmplY3RTdG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvY2xlYXJPYmplY3RTdG9yZS5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IFJlbW92ZSBhbnkgZXhpc3RpbmcgSW5kZXhlZERCIGRhdGFiYXNlcyB0aGF0
IG1pZ2h0IGV4aXN0IHRvIHdvcmthcm91bmQ6CiAgICAgICAgICAgICAvLyA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTQ4MDA2PiBFYWNoIHRlc3Qgc2hvdWxkIHJ1biB3aXRoIGl0cyBvd24gY2xlYW4g
ZGF0YSBzdG9yZQotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFt
ZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJy
b3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJh
c2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJv
ciwgbmFtZXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKCJkZWxldGVEYXRhYmFzZU5hbWVzKCIgKyBKU09OLnN0cmluZ2lmeShuYW1lcykgKyAiKSIs
IHJlc29sdmUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTI1LDExICsyNSwxMSBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhhdCBjbGVh
cmluZyBhbiBvYmplY3Qgc3RvcmUgY2xlYXJzIGVudHJpZXMgaW4gdGhhdCBvYmplY3Qgc3RvcmUu
IiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZURhdGFiYXNlV2l0aFN0b3JlcygnQ29tcGxldGVE
YXRhYmFzZScsIDEpIik7Ci0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJh
c2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiQ29t
cGxldGVEYXRhYmFzZSIsIChlcnJvciwgZGF0YWJhc2UpID0+IHsKKyAgICAgICAgICAgIEluZGV4
ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2Vj
dXJpdHlPcmlnaW4sICJDb21wbGV0ZURhdGFiYXNlIiwgKGVycm9yLCBkYXRhYmFzZSkgPT4gewog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAKICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiBleHBlY3RPYmplY3RTdG9yZUVudHJ5Q291bnQob2JqZWN0
U3RvcmUsIGV4cGVjdGVkQ291bnQsIG1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2VjdXJpdHlPcmlnaW4gPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2Vj
dXJpdHlPcmlnaW47CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyaXR5T3JpZ2luID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luOwogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbmRleE5hbWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2tpcENvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSAxMDsK
QEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGxldCBzZWN1cml0eU9yaWdp
biA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbjsKKyAg
ICAgICAgICAgICAgICBsZXQgc2VjdXJpdHlPcmlnaW4gPSBXSS5uZXR3b3JrTWFuYWdlci5tYWlu
RnJhbWUuc2VjdXJpdHlPcmlnaW47CiAgICAgICAgICAgICAgICAgbGV0IFtlbXB0eU9iamVjdFN0
b3JlLCByZXZpZXdlcnNPYmplY3RTdG9yZSwgc3RhdHNPYmplY3RTdG9yZV0gPSBkYXRhYmFzZS5v
YmplY3RTdG9yZXM7CiAKICAgICAgICAgICAgICAgICBleHBlY3RPYmplY3RTdG9yZUVudHJ5Q291
bnQoZW1wdHlPYmplY3RTdG9yZSwgMCwgIidFbXB0eScgb2JqZWN0IHN0b3JlIHNob3VsZCBhbHdh
eXMgYmUgZW1wdHkuIik7CkBAIC03Miw4ICs3Miw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2Fp
dEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKFdJLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgIkVtcHR5RGF0YWJhc2Ui
LCAoZXJyb3IsIGRhdGFiYXNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4ZWREQkFn
ZW50LmNsZWFyT2JqZWN0U3RvcmUoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNl
Y3VyaXR5T3JpZ2luLCBkYXRhYmFzZS5uYW1lLCAiTm9TdWNoT2JqZWN0U3RvcmUiLCAoZXJyb3Ip
ID0+IHsKKyAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0ku
bmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiRW1wdHlEYXRhYmFzZSIs
IChlcnJvciwgZGF0YWJhc2UpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdl
bnQuY2xlYXJPYmplY3RTdG9yZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlP
cmlnaW4sIGRhdGFiYXNlLm5hbWUsICJOb1N1Y2hPYmplY3RTdG9yZSIsIChlcnJvcikgPT4gewog
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAi
U2hvdWxkIGJlIGFuIGVycm9yIGF0dGVtcHRpbmcgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIHRo
YXQgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9kZWxldGVEYXRhYmFzZU5hbWVzV2l0aFNwYWNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNXaXRoU3BhY2UuaHRt
bAppbmRleCA1YjFmZTY0YzA0N2U4YzdmNjRmM2RlNWQwNzIyOWU3ZTI3MzhmNTFlLi5hNDdjN2Fi
ZTg0NzBjNWE4Zjc4OTI5Y2MyNmVlNzVkZTA5MjgxMzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNXaXRoU3BhY2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RlbGV0ZURhdGFiYXNlTmFtZXNX
aXRoU3BhY2UuaHRtbApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgYW55
IGV4aXN0aW5nIEluZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdodCBleGlzdCB0byB3b3JrYXJv
dW5kOgogICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODAwNj4gRWFjaCB0
ZXN0IHNob3VsZCBydW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEgc3RvcmUKLSAgICAgICAgICAg
IEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4geworICAgICAg
ICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZGVsZXRlRGF0YWJhc2VOYW1l
cygiICsgSlNPTi5zdHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNvbHZlKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBuYW1lOiAiRW5zdXJlTm9EYXRhYmFzZXMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3Vy
ZSBubyBkYXRhYmFzZXMgZXhpc3QgYXQgdGhlIHN0YXJ0LiIsCiAgICAgICAgIHRlc3QocmVzb2x2
ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VO
YW1lcyhXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChl
cnJvciwgbmFtZXMpID0+IHsKKyAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRh
YmFzZU5hbWVzKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVy
cm9yLCBuYW1lcykgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9F
cnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5h
bWVzLmxlbmd0aCA9PT0gMCwgIk5vIEluZGV4ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0IGlu
aXRpYWxseS4iKTsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CkBAIC0zOCw3ICszOCw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAg
ICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGFiYXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNl
Y3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhl
ZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuYW1lcy5sZW5ndGggPT09IDEsICJBIHNpbmdsZSBJ
bmRleGVkREIgZGF0YWJhc2Ugc2hvdWxkIGV4aXN0LiIpOwogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhKU09OLnN0cmluZ2lmeShuYW1lcykpOwpAQCAtNTUsNyArNTUsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJEZWxldGUgdGhlIGRhdGFi
YXNlLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkZWxldGVEYXRhYmFzZU5hbWVzKFsnRGF0YWJhc2Ug
V2l0aCBTcGFjZSddKSIpOwotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFi
YXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2lu
LCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0
RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4s
IChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dE5vRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChuYW1lcy5sZW5ndGggPT09IDAsICJObyBJbmRleGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlz
dCBiZWNhdXNlIHdlIGp1c3QgZGVsZXRlZCB0aGVtLiIpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhLmh0bWwKaW5kZXggMDVlMmI3YzNhMWZhYmRk
NmYxOWI1ODM0ZGNhZTgwMzI4YTM4NDEwMS4uMGIwYTQ2YjY5YjQzMWFiZjM3Y2U5MmQ5NTc5ZmE5
ZGM3MGQ4NzJiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9y
ZXF1ZXN0RGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVx
dWVzdERhdGEuaHRtbApAQCAtMjIsNyArMjIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgYW55
IGV4aXN0aW5nIEluZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdodCBleGlzdCB0byB3b3JrYXJv
dW5kOgogICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODAwNj4gRWFjaCB0
ZXN0IHNob3VsZCBydW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEgc3RvcmUKLSAgICAgICAgICAg
IEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBuYW1lcykgPT4geworICAgICAg
ICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZGVsZXRlRGF0YWJhc2VOYW1l
cygiICsgSlNPTi5zdHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNvbHZlKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CkBAIC0zMywxMSArMzMsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiUmVxdWVzdCBkYXRhIGZvciBhbiBvYmplY3Qgc3RvcmUgd2l0aCBk
aWZmZXJlbnQgaW5kZXhlcy4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlRGF0YWJhc2VXaXRo
U3RvcmVzKCdEYXRhYmFzZTEnLCAxKSIpOwotICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVx
dWVzdERhdGFiYXNlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9y
aWdpbiwgIkRhdGFiYXNlMSIsIChlcnJvciwgZGF0YWJhc2UpID0+IHsKKyAgICAgICAgICAgIElu
ZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUu
c2VjdXJpdHlPcmlnaW4sICJEYXRhYmFzZTEiLCAoZXJyb3IsIGRhdGFiYXNlKSA9PiB7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKIAogICAgICAg
ICAgICAgICAgIGxldCBbZW1wdHlPYmplY3RTdG9yZSwgcmV2aWV3ZXJzT2JqZWN0U3RvcmUsIHN0
YXRzT2JqZWN0U3RvcmVdID0gZGF0YWJhc2Uub2JqZWN0U3RvcmVzOwotICAgICAgICAgICAgICAg
IGNvbnN0IHNlY3VyaXR5T3JpZ2luID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
LnNlY3VyaXR5T3JpZ2luOworICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyaXR5T3JpZ2luID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luOwogICAgICAgICAgICAg
ICAgIGNvbnN0IHNraXBDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUg
PSAxMDsKIApAQCAtMTExLDExICsxMTEsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRl
c2NyaXB0aW9uOiAiUmVxdWVzdCBkYXRhIGZvciBhbiBvYmplY3Qgc3RvcmUgd2l0aCBwYWdpbmF0
ZWQgcmVxdWVzdHMuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZURhdGFiYXNlV2l0aFN0b3Jl
cygnRGF0YWJhc2UyJywgMSkiKTsKLSAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3RE
YXRhYmFzZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4s
ICJEYXRhYmFzZTIiLCAoZXJyb3IsIGRhdGFiYXNlKSA9PiB7CisgICAgICAgICAgICBJbmRleGVk
REJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCAiRGF0YWJhc2UyIiwgKGVycm9yLCBkYXRhYmFzZSkgPT4gewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAKICAgICAgICAgICAg
ICAgICBsZXQgW2VtcHR5T2JqZWN0U3RvcmUsIHJldmlld2Vyc09iamVjdFN0b3JlLCBzdGF0c09i
amVjdFN0b3JlXSA9IGRhdGFiYXNlLm9iamVjdFN0b3JlczsKLSAgICAgICAgICAgICAgICBjb25z
dCBzZWN1cml0eU9yaWdpbiA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1
cml0eU9yaWdpbjsKKyAgICAgICAgICAgICAgICBjb25zdCBzZWN1cml0eU9yaWdpbiA9IFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgICAgICAgICBj
b25zdCBpbmRleE5hbWUgPSAiIjsKICAgICAgICAgICAgICAgICBjb25zdCBwYWdlU2l6ZSA9IDI7
CiAKQEAgLTE2NSwxMSArMTY1LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlw
dGlvbjogIlJlcXVlc3Qga2V5IHJhbmdlIGJvdW5kZWQgZGF0YSBmb3IgYW4gb2JqZWN0IHN0b3Jl
LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVEYXRhYmFzZVdpdGhTdG9yZXMoJ0RhdGFiYXNl
MycsIDEpIik7Ci0gICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiRGF0YWJhc2Uz
IiwgKGVycm9yLCBkYXRhYmFzZSkgPT4geworICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVx
dWVzdERhdGFiYXNlKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwg
IkRhdGFiYXNlMyIsIChlcnJvciwgZGF0YWJhc2UpID0+IHsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdE5vRXJyb3IoZXJyb3IpOwogCiAgICAgICAgICAgICAgICAgbGV0IFtl
bXB0eU9iamVjdFN0b3JlLCByZXZpZXdlcnNPYmplY3RTdG9yZSwgc3RhdHNPYmplY3RTdG9yZV0g
PSBkYXRhYmFzZS5vYmplY3RTdG9yZXM7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlP
cmlnaW4gPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW47
CisgICAgICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlPcmlnaW4gPSBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW47CiAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXhO
YW1lID0gIk5hbWUgSW5kZXgiOwogICAgICAgICAgICAgICAgIGNvbnN0IHNraXBDb3VudCA9IDA7
CiAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSAxMDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZS5odG1sCmluZGV4IGNmNjhj
OTlkNDc0NzgyZTgwYjZiZTgwZmMzNGZlN2MwMzhiMWVkN2UuLmNmYTUyYTY0OGRjZTkxMTY3NGFh
YWExMGVmYTdhNTk4NTQ0MmI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvcmVxdWVzdERhdGFiYXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2UuaHRtbApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgYW55IGV4aXN0aW5nIEluZGV4ZWREQiBkYXRhYmFzZXMgdGhhdCBtaWdo
dCBleGlzdCB0byB3b3JrYXJvdW5kOgogICAgICAgICAgICAgLy8gPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE0ODAwNj4gRWFjaCB0ZXN0IHNob3VsZCBydW4gd2l0aCBpdHMgb3duIGNsZWFuIGRhdGEg
c3RvcmUKLSAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9yLCBu
YW1lcykgPT4geworICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFt
ZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5h
bWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
ZGVsZXRlRGF0YWJhc2VOYW1lcygiICsgSlNPTi5zdHJpbmdpZnkobmFtZXMpICsgIikiLCByZXNv
bHZlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0yNSw3ICsyNSw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAg
LnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGFiYXNlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdp
biwgIkVtcHR5RGF0YWJhc2UiLCAoZXJyb3IsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykgPT4g
eworICAgICAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5uZXR3
b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJFbXB0eURhdGFiYXNlIiwgKGVy
cm9yLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5uYW1lID09
PSAiRW1wdHlEYXRhYmFzZSIsICJEYXRhYmFzZSBuYW1lIHNob3VsZCBiZSAnRW1wdHlEYXRhYmFz
ZScuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkYXRh
YmFzZVdpdGhPYmplY3RTdG9yZXMudmVyc2lvbiA9PT0gMTIzLCAiRGF0YWJhc2UgdmVyc2lvbiBz
aG91bGQgYmUgMTIzLiIpOwpAQCAtNDMsNyArNDMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudCgiRGF0YWJhc2VDcmVhdGVkIikKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4g
ewotICAgICAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShXSS5mcmFt
ZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJDb21wbGV0ZURhdGFi
YXNlIiwgKGVycm9yLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKKyAgICAgICAgICAg
ICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAiQ29tcGxldGVEYXRhYmFzZSIsIChlcnJvciwgZGF0YWJh
c2VXaXRoT2JqZWN0U3RvcmVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIGxldCBvYmplY3RT
dG9yZXMgPSBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMub2JqZWN0U3RvcmVzOwogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGF0YWJhc2VXaXRoT2JqZWN0U3Rv
cmVzLm5hbWUgPT09ICJDb21wbGV0ZURhdGFiYXNlIiwgIkRhdGFiYXNlIG5hbWUgc2hvdWxkIGJl
ICdFbXB0eURhdGFiYXNlJy4iKTsKQEAgLTgzLDcgKzgzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgLy8gICAgIG5hbWU6ICJOb1N1Y2hEYXRhYmFzZSIsCiAgICAgLy8gICAgIGRlc2NyaXB0aW9u
OiAiUmVxdWVzdCBhIGRhdGFiYXNlIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwKICAgICAvLyAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAvLyAgICAgICAgIEluZGV4ZWREQkFnZW50LnJl
cXVlc3REYXRhYmFzZShXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlP
cmlnaW4sICJOYW1lRG9lc05vdEV4aXN0IiwgKGVycm9yLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9y
ZXMpID0+IHsKKyAgICAvLyAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sICJOYW1lRG9lc05vdEV4
aXN0IiwgKGVycm9yLCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpID0+IHsKICAgICAvLyAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgYmUgYW4gZXJy
b3IgdHJ5aW5nIHRvIHJlcXVlc3QgYSBkYXRhYmFzZSB0aGF0IGRvZXMgbm90IGV4aXN0LiIpOwog
ICAgIC8vICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFi
YXNlV2l0aE9iamVjdFN0b3JlcykpOwogICAgIC8vICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNl
TmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFi
YXNlTmFtZXMuaHRtbAppbmRleCA4MmU4MmUyMGUxZmRjOGVhMGEzZWFkZDYyNWQ4OGEzZjYzNThi
ZDViLi5lOTBjMmVhMDY5OGY3ZjE1OWE3ODFiOThmZDFlYjkwNGYxMDAxNWEzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VO
YW1lcy5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBhbnkgZXhp
c3RpbmcgSW5kZXhlZERCIGRhdGFiYXNlcyB0aGF0IG1pZ2h0IGV4aXN0IHRvIHdvcmthcm91bmQ6
CiAgICAgICAgICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ4MDA2PiBFYWNoIHRlc3Qg
c2hvdWxkIHJ1biB3aXRoIGl0cyBvd24gY2xlYW4gZGF0YSBzdG9yZQotICAgICAgICAgICAgSW5k
ZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAg
ICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkZWxldGVEYXRhYmFzZU5hbWVzKCIg
KyBKU09OLnN0cmluZ2lmeShuYW1lcykgKyAiKSIsIHJlc29sdmUpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KQEAgLTI0LDcgKzI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5h
bWU6ICJFbnN1cmVOb0RhdGFiYXNlcyIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIG5v
IGRhdGFiYXNlcyBleGlzdCBhdCB0aGUgc3RhcnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVz
KFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgKGVycm9y
LCBuYW1lcykgPT4geworICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNl
TmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCAoZXJyb3Is
IG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9y
KGVycm9yKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmFtZXMu
bGVuZ3RoID09PSAwLCAiTm8gSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QgaW5pdGlh
bGx5LiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKQEAgLTM4LDcgKzM4LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIkRhdGFiYXNlQ3JlYXRlZCIpCiAgICAgICAgICAg
ICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1
ZXN0RGF0YWJhc2VOYW1lcyhXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJp
dHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKKyAgICAgICAgICAgICAgICBJbmRleGVkREJB
Z2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2Vj
dXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxlbmd0aCA9PT0gMSwgIkEgc2luZ2xlIEluZGV4
ZWREQiBkYXRhYmFzZSBzaG91bGQgZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7CkBAIC01Niw3ICs1Niw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAg
ICAgLnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVx
dWVzdERhdGFiYXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERC
QWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNl
Y3VyaXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIG5h
bWVzLnNvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KG5hbWVzLmxlbmd0aCA9PT0gMiwgIlR3byBJbmRleGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlz
dC4iKTsKQEAgLTc1LDcgKzc1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIkRh
dGFiYXNlQ3JlYXRlZCIpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKLSAgICAgICAg
ICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5mcmFtZVJlc291
cmNlTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+IHsK
KyAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUuc2VjdXJpdHlPcmlnaW4sIChlcnJvciwgbmFtZXMpID0+
IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9y
KTsKICAgICAgICAgICAgICAgICAgICAgbmFtZXMuc29ydCgpOwogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmFtZXMubGVuZ3RoID09PSAzLCAiVGhyZWUgSW5k
ZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QuIik7CkBAIC05NCw3ICs5NCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJEYXRhYmFzZUNyZWF0ZWQiKQogICAgICAgICAgICAg
LnRoZW4oKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGFiYXNlTmFtZXMoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5
T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdl
bnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCAoZXJyb3IsIG5hbWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIG5hbWVz
LnNvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5h
bWVzLmxlbmd0aCA9PT0gNCwgIkZvdXIgSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3Qu
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbGF5ZXJzL2xheWVyLXRyZWUt
bWFuYWdlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2xheWVycy9sYXllci10cmVlLW1h
bmFnZXIuaHRtbAppbmRleCAyZGZlNGFiYWJkZTMzNzFkYjMzOTU0MzQ0NmVmOWVkMWQ4YzYxYjRi
Li5jZGQ4NmQ1ZDNjYzVmZTU3NmJlNGNmMDM5YjRiMmEzNWJkYjAyMjZmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbGF5ZXJzL2xheWVyLXRyZWUtbWFuYWdlci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9sYXllcnMvbGF5ZXItdHJlZS1tYW5hZ2VyLmh0bWwKQEAg
LTExLDcgKzExLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJMYXllclRyZWVN
YW5hZ2VyLmxheWVyc0Zvck5vZGUucm9vdCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2FsbGlu
ZyB0aGUgTGF5ZXJUcmVlTWFuYWdlciNsYXllcnNGb3JOb2RlIG1ldGhvZCB3aXRoIHRoZSByb290
IG5vZGUgc2hvdWxkIHJldHVybiB0aGUgZnVsbCBsYXllciBsaXN0LiIsCiAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0
RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KChub2RlKSA9PiB7CiAgICAgICAgICAgICAgICAgV0kubGF5ZXJUcmVlTWFuYWdlci5s
YXllcnNGb3JOb2RlKG5vZGUsIChsYXllcnMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChsYXllcnMubGVuZ3RoLCA1LCAiUmV0dXJuZWQgYXJyYXkg
c2hvdWxkIGluY2x1ZGUgYWxsIGxheWVycy4iKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGxheWVycy5ldmVyeSgobGF5ZXIpID0+IGxheWVyIGluc3RhbmNl
b2YgV0kuTGF5ZXIpLCAiQXJyYXkgZWxlbWVudHMgc2hvdWxkIGJlIExheWVyIGluc3RhbmNlcy4i
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9kb20tbm9kZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2RvbS1ub2RlLmh0bWwKaW5kZXggNmUzNWJm
YzQ4MDkzNGQ2ODc3N2I2N2IxN2QyZDZjZmFlOWQyNjFhZS4uYTYyOTc2OWVkOGU0MTE1NTc4NTU4
ZDI1YzQ2YTA0YmMwZTNiMmE5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL2RvbS1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2RvbS1u
b2RlLmh0bWwKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6
ICJXSS5ET01Ob2RlLmF0dHJpYnV0ZXMiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZ2V0
dGluZyB0aGUgYXR0cmlidXRlcyBvZiBhIG5vZGUuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgo
ZG9jdW1lbnROb2RlKSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVl
cnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjdGVzdC1pZCIsIChub2RlSWQpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9y
SWQobm9kZUlkKTsKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChk
b2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnF1ZXJ5U2Vs
ZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3Rlc3QtaWQiLCAobm9kZUlkKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlk
KTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9tTm9kZSwgIkRP
TU5vZGUgZXhpc3RzIik7CiAKICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRl
IG9mIGRvbU5vZGUuYXR0cmlidXRlcygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL21vZGVsL2ZyYW1lLWV4dHJhLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9tb2RlbC9mcmFtZS1leHRyYS1zY3JpcHRzLmh0bWwKaW5kZXggODZmZTQ5MjFkYjU0YjhiZGQy
ZTcwNjhmN2QyYTU0MmE4ZGZiZTRlMy4uMDAwYzNkODE5YTdlZWFjZmM3OGQ4NWQ1ZDMxNTExZjVh
NzgyNjFhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL2ZyYW1lLWV4
dHJhLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvZnJhbWUt
ZXh0cmEtc2NyaXB0cy5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewog
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiV0kuRnJhbWUu
ZXh0cmFTY3JpcHRDb2xsZWN0aW9uIik7CiAKLSAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOworICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3Jr
TWFuYWdlci5tYWluRnJhbWU7CiAKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5h
bWU6ICJGcmFtZUhhc05vRXh0cmFTY3JpcHRzWWV0IiwKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJBZGRFeHRyYVNjcmlwdCIsCiAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQWRkIGV4dHJhIHNjcmlwdC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmF3YWl0
RXZlbnQoV0kuRnJhbWUuRXZlbnQuRXh0cmFTY3JpcHRBZGRlZCkKKyAgICAgICAgICAgIFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5hd2FpdEV2ZW50KFdJLkZyYW1lLkV2ZW50LkV4dHJhU2Ny
aXB0QWRkZWQpCiAgICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIkV4dHJhU2NyaXB0QWRkZWQgZXZlbnQgZmlyZWQuIik7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuc2NyaXB0
LmR5bmFtaWNhbGx5QWRkZWRTY3JpcHRFbGVtZW50LCAiU2NyaXB0IHNob3VsZCBpZGVudGlmeSBh
cyBkeW5hbWljLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Nj
cmlwdC1yZXNvdXJjZS1yZWxhdGlvbnNoaXAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9t
b2RlbC9zY3JpcHQtcmVzb3VyY2UtcmVsYXRpb25zaGlwLmh0bWwKaW5kZXggMGY2ODQ5ZmQ5MTI4
MDU3MDljMjA1ZDJjZWNkZjI0Mjk4YjlhYjVhNi4uNDY1ODdiMGY2NmZiYzkzMDI3MGZkYjQyZmUx
ZTUxMzM1OGQ5ZmIyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Nj
cmlwdC1yZXNvdXJjZS1yZWxhdGlvbnNoaXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvc2NyaXB0LXJlc291cmNlLXJlbGF0aW9uc2hpcC5odG1sCkBAIC0xNzYsNyArMTc2
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIG5hbWU6ICJEb2N1bWVudFdpdGhJbmxpbmVT
Y3JpcHRzIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJBIGRvY3VtZW50IHJlc291cmNlIG1heSBi
ZSBhc3NvY2lhdGVkIHdpdGggbXVsdGlwbGUgaW5saW5lIHNjcmlwdHMuIiwKICAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGxldCBtYWluUmVzb3VyY2UgPSBXSS5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlOworICAgICAgICAgICAg
bGV0IG1haW5SZXNvdXJjZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3Vy
Y2U7CiAgICAgICAgICAgICBsZXQgc2NyaXB0cyA9IG1haW5SZXNvdXJjZS5zY3JpcHRzLnNsaWNl
KCkuc29ydCgoYSwgYikgPT4gYS5yYW5nZS5zdGFydExpbmUgLSBiLnJhbmdlLnN0YXJ0TGluZSk7
CiAKICAgICAgICAgICAgIC8vIFNjcmlwdHMgYXJlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL21vZGVsL3N0YWNrLXRyYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bW9kZWwvc3RhY2stdHJhY2UuaHRtbAppbmRleCAxMzAyMThkMDY0N2YxNGNjMTgyZDE3NmM2NDg0
MDBjZmY1YzMxMWFkLi45MTIzNDYxNmJjZWVhYzhhMGE5NWE3M2FjYjFlMzcxYjBmMjk2N2YwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvc3RhY2stdHJhY2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvc3RhY2stdHJhY2UuaHRtbApAQCAtMzEs
NyArMzEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIldJLkNvbnNvbGVNZXNz
YWdlLlN0YWNrVHJhY2UiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgd2UgY2FuIGNyZWF0
ZSBhIFN0YWNrVHJhY2UgZnJvbSBjb25zb2xlIG1lc3NhZ2VzIChDb25zb2xlLlN0YWNrVHJhY2Up
LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5sb2dN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpCisgICAg
ICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2
ZW50Lk1lc3NhZ2VBZGRlZCkKICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4gewogICAgICAg
ICAgICAgICAgIC8vIFRyYWNlIG1lc3NhZ2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgc3RhY2sgdHJh
Y2UuCiAgICAgICAgICAgICAgICAgbGV0IGNvbnNvbGVNZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNz
YWdlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvZW1wdHktb3ItbWlz
c2luZy1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2VtcHR5LW9y
LW1pc3NpbmctcmVzb3VyY2VzLmh0bWwKaW5kZXggMmU2NWMzZmYwZDU3N2YyZGVhMDI3MmQzNGQ3
OTdhNzU3MWI1OTVlZC4uMDk3MDNlYzY1NDRiNjg1NGJiNTAwYzE3NmE0OTk5NWQ1YWE3NjI5NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvZW1wdHktb3ItbWlzc2luZy1y
ZXNvdXJjZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9lbXB0eS1vci1t
aXNzaW5nLXJlc291cmNlcy5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBuYW1lOiAiUGFnZS5nZXRSZXNvdXJjZVRyZWUuRW1wdHlSZXNvdXJjZXMiLAogICAg
ICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3QgY3Jhc2ggaWYgdGhlcmUgYXJlIGVtcHR5IG9y
IG1pc3NpbmcgcmVzb3VyY2VzLiIsCiAgICAgICAgIGFzeW5jIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7Ci0gICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gQXJyYXkuZnJvbShXSS5mcmFtZVJlc291
cmNlTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIGxl
dCByZXNvdXJjZXMgPSBBcnJheS5mcm9tKFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5yZXNv
dXJjZUNvbGxlY3Rpb24pOwogICAgICAgICAgICAgbGV0IHJlc291cmNlVVJMcyA9IHJlc291cmNl
cy5tYXAoeCA9PiB4LnVybCkuZmlsdGVyKHggPT4gLyhlbXB0eXxtaXNzaW5nKS8udGVzdCh4KSku
c29ydCgpOwogICAgICAgICAgICAgZm9yIChsZXQgdXJsIG9mIHJlc291cmNlVVJMcykKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhzYW5pdGl6ZVVSTCh1cmwpKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbAppbmRl
eCA3MmYxZTRiODgwYjE2Y2U4OTBjZjkxNGU5M2ZiNGE4NzU1ODYzYTM2Li5lOTc3MjUxZTk3MDJi
OTBkNDdhOGFjNDBhMjJhOTIzY2NiMzcwMzk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcGFnZS9oaWRwaS1zbmFwc2hvdC1zaXplLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6ZS5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiU25hcHNob3RQcmVzZXJ2ZXNQYWdlUmVzb2x1
dGlvbiIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiVmVyaWZ5IHRoYXQgYSBub2RlIHNuYXBzaG90
IGlzIG5vdCBzY2FsZWQgZG93biB0byBDU1MgcGl4ZWxzLiIsCiAgICAgICAgIGFzeW5jIHRlc3Qo
KSB7Ci0gICAgICAgICAgICBsZXQgdGFyZ2V0Tm9kZUlkID0gYXdhaXQgV0kuZG9tVHJlZU1hbmFn
ZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjZWxlbWVudC10by1zbmFwc2hvdCIp
OworICAgICAgICAgICAgbGV0IHRhcmdldE5vZGVJZCA9IGF3YWl0IFdJLmRvbU1hbmFnZXIucXVl
cnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjZWxlbWVudC10by1zbmFwc2hvdCIpOwogICAg
ICAgICAgICAgbGV0IHtkYXRhVVJMfSA9IGF3YWl0IFBhZ2VBZ2VudC5zbmFwc2hvdE5vZGUodGFy
Z2V0Tm9kZUlkKTsKICAgICAgICAgICAgIGxldCBkZXZpY2VQaXhlbFJhdGlvID0gYXdhaXQgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LmRldmljZVBpeGVsUmF0aW9gKTsKICAg
ICAgICAgICAgIGxldCBlbGVtZW50Qm91bmRzID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZShgd2luZG93LnNuYXBzaG90RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKWAp
CkBAIC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAK
LSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKKyAgICBX
SS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4gewogICAgICAgICBkb2N1bWVu
dE5vZGUgPSBub2RlOwogICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL21haW4tZnJhbWUt
cmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVz
b3VyY2UuaHRtbAppbmRleCA5NjNhYzkzOTE4OTE5ZjQzMmM0YzM2Njc4OWYyZjM4Y2IzM2Q3OTJj
Li40M2Y0MTE5NzkxNTc0NThkN2NhY2MzNzBkNjk3NjRkMzk3OGMyZTVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9tYWluLWZyYW1lLXJlc291cmNlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvbWFpbi1mcmFtZS1yZXNvdXJjZS5odG1sCkBAIC02
LDcgKzYsNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIHZhciB1cmwgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUu
dXJsOworICAgICAgICB2YXIgdXJsID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybDsK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk1haW4gZnJhbWU6ICIgKyB1cmwuc3Vic3RyaW5n
KHVybC5sYXN0SW5kZXhPZigiLyIpICsgMSkpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1
bnRpbWUvY2hhbmdlLWV4ZWN1dGlvbi1jb250ZXh0LWlkZW50aWZpZXIuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9ydW50aW1lL2NoYW5nZS1leGVjdXRpb24tY29udGV4dC1pZGVudGlmaWVy
Lmh0bWwKaW5kZXggZmVmNTBiNDY5NzZkNjc4NTUxNzc5YmU2MzJlYjgzMDBlY2Q4ODBlNS4uZTZh
MmU0NzNhNzYyZWYzMGYwZGRjNTA0MzVjZGEyMmQ2MjA5NjA4NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvY2hhbmdlLWV4ZWN1dGlvbi1jb250ZXh0LWlkZW50aWZp
ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9jaGFuZ2UtZXhlY3V0
aW9uLWNvbnRleHQtaWRlbnRpZmllci5odG1sCkBAIC0zNCw3ICszNCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBuYW1lOiAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dE1haW5GcmFtZUNvbnRl
eHQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBldmFsdWF0ZUluSW5zcGVjdGVk
V2luZG93IHdvcmtzIHdoZW4gYWN0aXZlRXhlY3V0aW9uQ29udGV4dCBpcyB0aGUgbWFpbiBmcmFt
ZSBleGVjdXRpb24gY29udGV4dC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBtYWluIGNvbnRl
eHQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLnJ1
bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgICAgICBXSS5ydW50
aW1lTWFuYWdlci5hY3RpdmVFeGVjdXRpb25Db250ZXh0ID0gV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0OwogICAgICAgICAgICAgV0kucnVudGltZU1hbmFn
ZXIuZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdygicGFzc3BocmFzZSIsIHtvYmplY3RHcm91cDog
InRlc3QifSwgKHJlbW90ZU9iamVjdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KSA9PiB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhc3NwaHJhc2UgaW4gc2VsZWN0
ZWQgZnJhbWU6ICIgKyByZW1vdGVPYmplY3QudmFsdWUpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocmVtb3RlT2JqZWN0LnZhbHVlLCAiY29sZHdhdGVyIiwgIlRo
ZSBwYXNzcGhyYXNlIHNob3VsZCBtYXRjaCB0aGUgcGhyYXNlIGRlZmluZWQgaW4gdGhlIG1haW4g
ZnJhbWUuIik7CkBAIC00Nyw4ICs0Nyw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1l
OiAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dFN1YkZyYW1lIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0IHRoYXQgZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyB3b3JrcyB3aGVuIGFjdGl2ZUV4
ZWN1dGlvbkNvbnRleHQgaXMgYSBzdWJmcmFtZSBjb250ZXh0LiIsCiAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lOwotICAgICAgICAgICAgbGV0IHN1YmZyYW1lcyA9IFdJLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lcy5maWx0ZXIoKGZyYW1lKSA9PiBmcmFtZSAhPT0gbWFp
bkZyYW1lKTsKKyAgICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWU7CisgICAgICAgICAgICBsZXQgc3ViZnJhbWVzID0gV0kubmV0d29ya01hbmFnZXIu
ZnJhbWVzLmZpbHRlcigoZnJhbWUpID0+IGZyYW1lICE9PSBtYWluRnJhbWUpOwogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzdWJmcmFtZXMubGVuZ3RoLCAxLCAiVGhlIHRl
c3QgcGFnZSBzaG91bGQgb25seSBoYXZlIG9uZSBzdWItZnJhbWUuIik7CiAKICAgICAgICAgICAg
IFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBzdWJmcmFtZXNbMF0u
cGFnZUV4ZWN1dGlvbkNvbnRleHQ7CkBAIC02NCw3ICs2NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBuYW1lOiAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dE1haW5GcmFtZUFnYWluIiwKICAg
ICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyB3
b3JrcyB3aGVuIGFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgc3dpdGNoZXMgYmFjayB0byB0aGUgbWFp
biBmcmFtZSBleGVjdXRpb24gY29udGV4dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZTsKKyAgICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWU7CiAKICAgICAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1
dGlvbkNvbnRleHQgPSBtYWluRnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgICAgICAg
ICBXSS5ydW50aW1lTWFuYWdlci5ldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93KCJwYXNzcGhyYXNl
Iiwge29iamVjdEdyb3VwOiAidGVzdCJ9LCAocmVtb3RlT2JqZWN0LCB3YXNUaHJvd24sIHNhdmVk
UmVzdWx0SW5kZXgpID0+IHsKQEAgLTc5LDggKzc5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIG5hbWU6ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0UmVtb3ZlU3ViZnJhbWUiLAogICAgICAg
ICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBldmFsdWF0ZUluSW5zcGVjdGVkV2luZG93IHdvcmtz
IHdoZW4gdGhlIGFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgaXMgZGVzdHJveWVkIGFuZCByZXZlcnRz
IHRvIHRoZSB0b3AtbGV2ZWwgY29udGV4dC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZTsKLSAgICAgICAgICAgIGxldCBzdWJmcmFtZXMgPSBXSS5mcmFtZVJlc291cmNl
TWFuYWdlci5mcmFtZXMuZmlsdGVyKChmcmFtZSkgPT4gZnJhbWUgIT09IG1haW5GcmFtZSk7Cisg
ICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwor
ICAgICAgICAgICAgbGV0IHN1YmZyYW1lcyA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lcy5maWx0
ZXIoKGZyYW1lKSA9PiBmcmFtZSAhPT0gbWFpbkZyYW1lKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc3ViZnJhbWVzLmxlbmd0aCwgMSwgIlRoZSB0ZXN0IHBhZ2Ugc2hv
dWxkIG9ubHkgaGF2ZSBvbmUgc3ViLWZyYW1lLiIpOwogCiAgICAgICAgICAgICAvLyBTZXQgdGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHRvIHRoZSBzdWJmcmFtZSBzbyB3ZSBjYW4gc3dpdGNoIGF3YXkg
ZnJvbSBpdCB3aGVuIHRoZSBmcmFtZSBpcyBkZXRhY2hlZC4KQEAgLTkxLDcgKzkxLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBsZXQgb2JqZWN0R3JvdXAgPSAidGVzdCI7CiAgICAg
ICAgICAgICBsZXQgY29udGV4dElkID0gV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcjsKICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5p
bnZva2Uoe2V4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBjb250ZXh0SWR9LCAoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5mcmFtZXMubGVuZ3RoLCAxLCAiVGhlIHRlc3QgcGFnZSBzaG91bGQgbm93IGhhdmUgbm8g
c3ViLWZyYW1lcy4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lcy5sZW5ndGgsIDEsICJUaGUgdGVzdCBwYWdlIHNob3Vs
ZCBub3cgaGF2ZSBubyBzdWItZnJhbWVzLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dC5p
ZCwgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwg
IldoZW4gYSBzZWxlY3RlZCBub24tdG9wLWxldmVsIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlbW92
ZWQsIHRoZSBhY3RpdmUgZXhlY3V0aW9uIGNvbnRleHQgc2hvdWxkIHJldmVydCB0byB0aGUgbWFp
biBmcmFtZSBjb250ZXh0LiIpOwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvc2F2ZVJl
c3VsdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvc2F2ZVJlc3VsdC5odG1s
CmluZGV4IGY3NTZiZjM2N2M5MTc5MmI4ZDM0YWJjYTBmYTRmYzEzMmUzZWQyYjUuLmNhMWQxNzAy
Njk2ZTczODg1ZGI1MDQyNzdiMDcxNzcyMTRjOWQxYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9ydW50aW1lL3NhdmVSZXN1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcnVudGltZS9zYXZlUmVzdWx0Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIigiICsgSlNPTi5z
dHJpbmdpZnkoc2ltcGxlT2JqZWN0KSArICIpIiwgY2FsbGJhY2spOwogICAgIH0KIAotICAgIGxl
dCBjb250ZXh0SWQgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUucGFnZUV4ZWN1
dGlvbkNvbnRleHQuaWQ7CisgICAgbGV0IGNvbnRleHRJZCA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1h
aW5GcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZDsKICAgICBsZXQgcmVtb3RlT2JqZWN0MTsK
IAogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiUnVudGlt
ZS5zYXZlUmVzdWx0Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFn
ZS9kb21TdG9yYWdlLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2Uv
ZG9tU3RvcmFnZS1ldmVudHMuaHRtbAppbmRleCAyZjM4YzE0NjliMGIxZjk2OTA2NDE5ODY1ZjUx
NWM2NDgwMjEyYzUwLi5jODQ5ODgzYzBiMGZlYTU1ZjY2Y2UxNGEwMDE0ZDViM2Y4NWY5NjM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS9kb21TdG9yYWdlLWV2ZW50
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdG9yYWdlL2RvbVN0b3JhZ2UtZXZl
bnRzLmh0bWwKQEAgLTY5LDcgKzY5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdCBiYWNrZW5kIGdlbmVyYXRlZCBET01TdG9yYWdlIGFkZGVkLCByZW1vdmVk
LCB1cGRhdGVkLCBhbmQgY2xlYXJlZCBldmVudHMgZm9yIHNlc3Npb25TdG9yYWdlLiIsCiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJ0cmlnZ2VyQWN0aW9ucyhzZXNzaW9uU3RvcmFnZSkiKTsKLSAgICAgICAg
ICAgIGxldCBzZXNzaW9uU3RvcmFnZSA9IFdJLnN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmpl
Y3RzLmZpbmQoKHgpID0+ICF4LmlzTG9jYWxTdG9yYWdlKCkpOworICAgICAgICAgICAgbGV0IHNl
c3Npb25TdG9yYWdlID0gV0kuZG9tU3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZU9iamVjdHMuZmlu
ZCgoeCkgPT4gIXguaXNMb2NhbFN0b3JhZ2UoKSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQoc2Vzc2lvblN0b3JhZ2UsICJTaG91bGQgaGF2ZSBhIERPTVN0b3JhZ2VPYmpl
Y3QgZm9yIHNlc3Npb25TdG9yYWdlLiIpOwogICAgICAgICAgICAgdGVzdFN0b3JhZ2VFdmVudHMo
c2Vzc2lvblN0b3JhZ2UsIHJlc29sdmUpOwogICAgICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYmFja2VuZCBnZW5lcmF0
ZWQgRE9NU3RvcmFnZSBhZGRlZCwgcmVtb3ZlZCwgdXBkYXRlZCwgYW5kIGNsZWFyZWQgZXZlbnRz
IGZvciBsb2NhbFN0b3JhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInRyaWdnZXJBY3Rpb25zKGxv
Y2FsU3RvcmFnZSkiKTsKLSAgICAgICAgICAgIGxldCBsb2NhbFN0b3JhZ2UgPSBXSS5zdG9yYWdl
TWFuYWdlci5kb21TdG9yYWdlT2JqZWN0cy5maW5kKCh4KSA9PiB4LmlzTG9jYWxTdG9yYWdlKCkp
OworICAgICAgICAgICAgbGV0IGxvY2FsU3RvcmFnZSA9IFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmRv
bVN0b3JhZ2VPYmplY3RzLmZpbmQoKHgpID0+IHguaXNMb2NhbFN0b3JhZ2UoKSk7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobG9jYWxTdG9yYWdlLCAiU2hvdWxkIGhhdmUg
YSBET01TdG9yYWdlT2JqZWN0IGZvciBsb2NhbFN0b3JhZ2UuIik7CiAgICAgICAgICAgICB0ZXN0
U3RvcmFnZUV2ZW50cyhsb2NhbFN0b3JhZ2UsIHJlc29sdmUpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2NvbnNvbGUtYmFzaWMuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvY29uc29sZS1iYXNpYy5odG1sCmluZGV4IGFkMTgz
Nzc0NjY4MTcxOThhYjdhMTcwNTBlZWMxOTMyMmIxYmM2OWUuLmExZTBjNWNhZDA4M2I5OGVhNGU4
YjkyMDQxYTg0ODg2ZTMxZmI0OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93
b3JrZXIvY29uc29sZS1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3Jr
ZXIvY29uc29sZS1iYXNpYy5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBXSS5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
V0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVu
dC5NZXNzYWdlQWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxldCBtZXNzYWdlID0g
ZXZlbnQuZGF0YS5tZXNzYWdlOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtZXNzYWdl
IGluc3RhbmNlb2YgV0kuQ29uc29sZU1lc3NhZ2UpOwogICAgICAgICBpZiAodHJpZ2dlck5leHRD
b25zb2xlTWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIv
cmVzb3VyY2VzLWluLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9y
ZXNvdXJjZXMtaW4td29ya2VyLmh0bWwKaW5kZXggMjg2Nzc3MWVmOTg2MWIwOTcxNDNmZDQwNDBi
YTRjMWFiN2M2ODc0NC4uM2RhMjNkODlkYjIxYmMzY2JlYjMzMzAwM2Y3YTY2MTZkOTk2YzFiYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9yZXNvdXJjZXMtaW4td29y
a2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9yZXNvdXJjZXMtaW4t
d29ya2VyLmh0bWwKQEAgLTEwOSw3ICsxMDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHJlc291cmNlIGluc3RhbmNlb2Yg
V0kuUmVzb3VyY2UsICJGcmFtZSBzaG91bGQgZGlzcGF0Y2ggUmVzb3VyY2VXYXNBZGRlZCBldmVu
dC4iKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXNv
dXJjZS50eXBlLCBXSS5SZXNvdXJjZS5UeXBlLlhIUiwgIlJlc291cmNlIHNob3VsZCBiZSBYSFIu
Iik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3Vy
Y2UudGFyZ2V0LCBtYWluVGFyZ2V0LCAiUmVzb3VyY2Ugc2hvdWxkIGJlIHRpZWQgdG8gdGhlIE1h
aW4gVGFyZ2V0LiIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHJlc291cmNlLnBhcmVudEZyYW1lLCBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJh
bWUsICJSZXNvdXJjZSBwYXJlbnRGcmFtZSBpcyB0aGUgbWFpbiBmcmFtZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXNvdXJjZS5wYXJlbnRGcmFt
ZSwgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLCAiUmVzb3VyY2UgcGFyZW50RnJhbWUgaXMg
dGhlIG1haW4gZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwod29ya2VyVGFyZ2V0LnJlc291cmNlQ29sbGVjdGlvbi5zaXplLCAyLCAiV29ya2Vy
IFRhcmdldCBzaG91bGQgc3RpbGwgaGF2ZSAyIHJlc291cmNlcy4iKTsKICAgICAgICAgICAgICAg
ICAgICAgZHVtcFdvcmtlclJlc291cmNlcygpOwogICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChyZXNvdXJjZSBpbnN0YW5jZW9mIFdJLlJlc291
cmNlLCAiRnJhbWUgc2hvdWxkIGRpc3BhdGNoIFJlc291cmNlV2FzQWRkZWQgZXZlbnQuIik7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgcmVzb3VyY2UgdHlwZSBmb3IgRmV0Y2gg
dGhhdCBpcyBub3QgWEhSPwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHJlc291cmNlLnRhcmdldCwgbWFpblRhcmdldCwgIlJlc291cmNlIHNob3VsZCBiZSB0
aWVkIHRvIHRoZSBNYWluIFRhcmdldC4iKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChyZXNvdXJjZS5wYXJlbnRGcmFtZSwgV0kuZnJhbWVSZXNvdXJjZU1h
bmFnZXIubWFpbkZyYW1lLCAiUmVzb3VyY2UgcGFyZW50RnJhbWUgaXMgdGhlIG1haW4gZnJhbWUu
Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3Vy
Y2UucGFyZW50RnJhbWUsIFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZSwgIlJlc291cmNlIHBh
cmVudEZyYW1lIGlzIHRoZSBtYWluIGZyYW1lLiIpOwogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHdvcmtlclRhcmdldC5yZXNvdXJjZUNvbGxlY3Rpb24uc2l6
ZSwgMywgIldvcmtlciBUYXJnZXQgc2hvdWxkIHN0aWxsIGhhdmUgMyByZXNvdXJjZXMuIik7CiAg
ICAgICAgICAgICAgICAgICAgIGR1bXBXb3JrZXJSZXNvdXJjZXMoKTsKICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>