<?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>148122</bug_id>
          
          <creation_ts>2015-08-17 23:29:31 -0700</creation_ts>
          <short_desc>REGRESSION(r188539): Broke tests and some build styles (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-08-17 23:34:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147955</blocked>
    
    <blocked>148077</blocked>
    
    <blocked>148079</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>bburg</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118464</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 23:29:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/188539 broke the build:
Broke tests and some build styles (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118468</commentid>
    <comment_count>1</comment_count>
      <attachid>259253</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 23:30:13 -0700</bug_when>
    <thetext>Created attachment 259253
ROLLOUT of r188539

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118470</commentid>
    <comment_count>2</comment_count>
      <attachid>259253</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 23:33:58 -0700</bug_when>
    <thetext>Comment on attachment 259253
ROLLOUT of r188539

Clearing flags on attachment: 259253

Committed r188579: &lt;http://trac.webkit.org/changeset/188579&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118471</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 23:34:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259253</attachid>
            <date>2015-08-17 23:30:13 -0700</date>
            <delta_ts>2015-08-17 23:33:58 -0700</delta_ts>
            <desc>ROLLOUT of r188539</desc>
            <filename>bug-148122-20150817233011.patch</filename>
            <type>text/plain</type>
            <size>125556</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZWIyMjhkZjk2ODA0YzcyYTM1NGNlOTY1NjdiMDA3NjQzODhjY2JlLi5iNWEwNjY3Y2RmNjE2MjNh
MmZiYTUwZjMwM2MyMjI2M2YxNzczNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNS0wOC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4ODUzOSwgcjE4ODU0
NCwgcjE4ODU1MiwgYW5kCisgICAgICAgIHIxODg1NjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxMjIKKworICAgICAgICBCcm9rZSB0ZXN0cyBh
bmQgc29tZSBidWlsZCBzdHlsZXMgKFJlcXVlc3RlZCBieSBhcCBvbgorICAgICAgICAjd2Via2l0
KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJXZWIgSW5zcGVj
dG9yOiBsb2FkIFByb3RvY29sVGVzdFN0dWIgZnJvbSB0aGUgV2ViSW5zcGVjdG9yVUkKKyAgICAg
ICAgYnVuZGxlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3OTU1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4ODUz
OQorCisgICAgICAgICJXZWIgSW5zcGVjdG9yOiBzcGxpdCBUZXN0U3R1Yi5qcyBpbnRvIG11bHRp
cGxlIGZpbGVzIGFuZAorICAgICAgICBtb2Rlcm5pemUgaXQiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwNzcKKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg4NTQ0CisKKyAgICAgICAgIldlYiBJbnNwZWN0b3I6IElu
c3BlY3RvclRlc3Qgc2hvdWxkIGJlIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgVGVzdEhhcm5lc3Mi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwNzkK
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg4NTUyCisKKyAgICAg
ICAgIlVucmV2aWV3ZWQgaW50ZXJuYWwgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjE4ODUzOS4i
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4ODU2NAorCiAyMDE1
LTA4LTE3ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBzbGlkZXIgc3R5bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNhYTUxYTNk
MDg1NmNhY2I3MjQ1ZDMwODExZWQwOWY0MDRiYTI3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwpAQCAtMCwwICsxLDI3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2Fi
bGVUeXBlID0geworICAgIFdlYjogIndlYiIsCisgICAgSmF2YVNjcmlwdDogImphdmFzY3JpcHQi
Cit9OworCitXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuZGVi
dWdnYWJsZVR5cGUgPSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuV2ViOworICAgIHRoaXMu
aGFzRXh0cmFEb21haW5zID0gZmFsc2U7CisKKyAgICAvLyBSZWdpc3RlciBvYnNlcnZlcnMgZm9y
IGV2ZW50cyBmcm9tIHRoZSBJbnNwZWN0b3JCYWNrZW5kLgorICAgIC8vIFRoZSBpbml0aWFsaXph
dGlvbiBvcmRlciBzaG91bGQgbWF0Y2ggdGhlIHNhbWUgaW4gTWFpbi5qcy4KKyAgICBJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLklu
c3BlY3Rvck9ic2VydmVyKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3Bh
dGNoZXIobmV3IFdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJDb25zb2xlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNl
cnZlcik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRPTURpc3BhdGNoZXIobmV3IFdl
Ykluc3BlY3Rvci5ET01PYnNlcnZlcik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlck5l
dHdvcmtEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyKTsKKyAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRGVidWdnZXJEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0
b3IuRGVidWdnZXJPYnNlcnZlcik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclRpbWVs
aW5lRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIpOworICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuQ1NT
T2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJSdW50aW1lRGlzcGF0Y2hl
cihuZXcgV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlcik7CisgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJSZXBsYXlEaXNwYXRjaGVyKQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyUmVwbGF5RGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlJlcGxheU9ic2VydmVy
KTsKKworICAgIC8vIEluc3RhbnRpYXRlIGNvbnRyb2xsZXJzIHVzZWQgYnkgdGVzdHMuCisgICAg
dGhpcy5mcmFtZVJlc291cmNlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZU1hbmFnZXI7CisgICAgdGhpcy5kb21UcmVlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRE9N
VHJlZU1hbmFnZXI7CisgICAgdGhpcy5jc3NTdHlsZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTWFuYWdlcjsKKyAgICB0aGlzLmxvZ01hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkxvZ01hbmFnZXI7CisgICAgdGhpcy5pc3N1ZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLklz
c3VlTWFuYWdlcjsKKyAgICB0aGlzLnJ1bnRpbWVNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5S
dW50aW1lTWFuYWdlcjsKKyAgICB0aGlzLnRpbWVsaW5lTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyOworICAgIHRoaXMuZGVidWdnZXJNYW5hZ2VyID0gbmV3IFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXI7CisgICAgdGhpcy5wcm9iZU1hbmFnZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlByb2JlTWFuYWdlcjsKKyAgICB0aGlzLnJlcGxheU1hbmFnZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlJlcGxheU1hbmFnZXI7CisKKyAgICAvLyBHbG9iYWwgY29udHJvbGxlcnMuCisg
ICAgdGhpcy5xdWlja0NvbnNvbGUgPSB7ZXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6IHVuZGVm
aW5lZH07CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVk
IiwgdGhpcy5jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOworCisgICAgLy8gRW5hYmxlIGFnZW50
cy4KKyAgICBJbnNwZWN0b3JBZ2VudC5lbmFibGUoKTsKKyAgICBDb25zb2xlQWdlbnQuZW5hYmxl
KCk7CisKKyAgICAvLyBQZXJmb3JtIG9uZS10aW1lIHRhc2tzLgorICAgIFdlYkluc3BlY3Rvci5D
U1NDb21wbGV0aW9ucy5yZXF1ZXN0Q1NTQ29tcGxldGlvbnMoKTsKKworICAgIC8vIEdsb2JhbCBz
ZXR0aW5ncy4KKyAgICB0aGlzLnNob3dTaGFkb3dET01TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJzaG93LXNoYWRvdy1kb20iLCB0cnVlKTsKK30KKworV2ViSW5zcGVjdG9yLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCit7CisgICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250
ZW5kIGlzIG5vdyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgorICAgIEluc3BlY3RvckZyb250
ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKKworICAgIC8vIFRlbGwgdGhlIEluc3BlY3RvckZyb250
ZW5kSG9zdCB3ZSBsb2FkZWQsIHdoaWNoIGNhdXNlcyB0aGUgd2luZG93IHRvIGRpc3BsYXkKKyAg
ICAvLyBhbmQgcGVuZGluZyBJbnNwZWN0b3JGcm9udGVuZEFQSSBjb21tYW5kcyB0byBiZSBzZW50
LgorICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsKK30KKworV2ViSW5zcGVjdG9y
LlVJU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmc7Cit9CisK
Ky8vIEFkZCBzdHVicyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGZyb250ZW5kIEFQSS4KK1dlYklu
c3BlY3Rvci51cGRhdGVEb2NrZWRTdGF0ZSA9IGZ1bmN0aW9uKCkge307CitXZWJJbnNwZWN0b3Iu
dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSA9IGZ1bmN0aW9uKCkge307CisKKy8vIEluc3BlY3Rv
clRlc3QgY29udGFpbnMgZXh0cmEgbWV0aG9kcyB0aGF0IGFyZSBvbmx5IGF2YWlsYWJsZSB0byB0
ZXN0IGNvZGUgcnVubmluZworLy8gaW4gdGhlIFdlYiBJbnNwZWN0b3IgcGFnZS4gVGhleSByZWx5
IG9uIGVxdWl2YWxlbnRzIGluIHRoZSBhY3R1YWwgdGVzdCBwYWdlCisvLyB3aGljaCBhcmUgcHJv
dmlkZWQgYnkgYGluc3BlY3Rvci10ZXN0LmpzYC4KK0luc3BlY3RvclRlc3QgPSB7fTsKKworLy8g
VGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBJbnNwZWN0b3IgdGVzdHMgYnkgc3luY2hyb25v
dXNseSBsb2dnaW5nIG1lc3NhZ2VzLgorSW5zcGVjdG9yVGVzdC5kdW1wTWVzc2FnZXNUb0NvbnNv
bGUgPSBmYWxzZTsKKworLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQg
aXQgd291bGQgYmUgaGFyZCB0byBzZXQgdXAgYSBjb25zdHJ1Y3RvciwKKy8vIHByb3RvdHlwZSwg
YW5kIHByb3RvdHlwZSBjaGFpbiBmb3IgdGhlIHNpbmdsZXRvbiBJbnNwZWN0b3JUZXN0LgorSW5z
cGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIgPSBjbGFzcyBFdmVudERpc3BhdGNoZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgZGlzcGF0Y2hFdmVudChldmVudCkKKyAgICB7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKGV2ZW50KTsKKyAgICB9Cit9
OworCitJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudCA9IHsKKyAgICBUZXN0UGFn
ZURpZExvYWQ6ICJpbnNwZWN0b3ItdGVzdC10ZXN0LXBhZ2UtZGlkLWxvYWQiCit9OworCitJbnNw
ZWN0b3JUZXN0LmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0
Y2hlcjsKKworLy8gTm90ZTogQWRkaXRpb25hbCBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgYXJlIGlu
Y2x1ZGVkIG9uIGEgcGVyLXRlc3QgYmFzaXMgZnJvbQorLy8gZmlsZXMgbGlrZSBgZGVidWdnZXIt
dGVzdC5qc2AuCisKKy8vIEFwcGVuZHMgYSBsb2cgbWVzc2FnZSBpbiB0aGUgdGVzdCBkb2N1bWVu
dC4KK0luc3BlY3RvclRlc3QubG9nID0gZnVuY3Rpb24obWVzc2FnZSkKK3sKKyAgICB2YXIgc3Ry
aW5naWZpZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJvYmplY3QiID8gbWVzc2FnZSA6
IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHN0
cmluZ2lmaWVkTWVzc2FnZSk7Cit9CisKKy8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0ZXN0
IGRvY3VtZW50IG9ubHkgaWYgdGhlIGNvbmRpdGlvbiBpcyBmYWxzZS4KK0luc3BlY3RvclRlc3Qu
YXNzZXJ0ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBtZXNzYWdlKQoreworICAgIGlmIChjb25kaXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIHZhciBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBl
b2YgbWVzc2FnZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkobWVzc2Fn
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFTU0VSVDogIiArIHN0cmluZ2lmaWVk
TWVzc2FnZSk7Cit9CisKKy8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0ZXN0IGRvY3VtZW50
IHdoZXRoZXIgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9yIG5vdC4KK0luc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgbWVzc2FnZSkKK3sKKyAgICB2YXIgcHJlZml4
ID0gY29uZGl0aW9uID8gIlBBU1MiIDogIkZBSUwiOworICAgIHZhciBzdHJpbmdpZmllZE1lc3Nh
Z2UgPSB0eXBlb2YgbWVzc2FnZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDogSlNPTi5zdHJpbmdp
ZnkobWVzc2FnZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4ICsgIjogIiAr
IHN0cmluZ2lmaWVkTWVzc2FnZSk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkg
YmUgdXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90IHRvIHByb2R1Y2Ugbm9ybWFsIHRlc3Qgb3V0
cHV0LgorSW5zcGVjdG9yVGVzdC5kZWJ1Z0xvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCit7CisgICAg
aWYgKEluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2VzVG9Db25zb2xlKQorICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZygiZGVidWdMb2c6ICIgKyBtZXNzYWdlKTsKKwor
ICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoIkluc3BlY3RvclRlc3RQcm94eS5kZWJ1Z0xvZyh1bmVz
Y2FwZSgnIiArIGVzY2FwZShKU09OLnN0cmluZ2lmeShtZXNzYWdlKSkgKyAiJykpIik7Cit9CisK
Ky8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0ZXN0IGRvY3VtZW50IGlmIHRoZXJlIHdhcyBh
biBlcnJvciwgYW5kIGF0dGVtcHRzIHRvIGNvbXBsZXRlIHRoZSB0ZXN0LgorSW5zcGVjdG9yVGVz
dC5leHBlY3ROb0Vycm9yID0gZnVuY3Rpb24oZXJyb3IpCit7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQUk9UT0NPTCBFUlJPUjogIiArIGVycm9yKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgdGhyb3cgIlBST1RP
Q09MIEVSUk9SIjsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVu
Y3Rpb24oKQoreworICAgIGlmIChJbnNwZWN0b3JUZXN0LmR1bXBNZXNzYWdlc1RvQ29uc29sZSkK
KyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coIkluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCkiKTsKKworICAgIC8vIFdhaXQgZm9yIHJlc3VsdHMgdG8gYmUgcmVz
ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbXBsZXRlVGVzdCgpLiBPdGhlcndpc2UsIG1lc3NhZ2Vz
IHdpbGwgYmUKKyAgICAvLyBxdWV1ZWQgYWZ0ZXIgcGVuZGluZyBkaXNwYXRjaGVzIHJ1biB0byB6
ZXJvIGFuZCB0aGUgdGVzdCBwYWdlIHdpbGwgcXVpdCBiZWZvcmUgcHJvY2Vzc2luZyB0aGVtLgor
ICAgIGlmICh0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKSB7CisgICAgICAgIHRoaXMuX2NvbXBs
ZXRlVGVzdEFmdGVyUmVsb2FkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyh0aGlzLmV2YWx1YXRl
SW5QYWdlLmJpbmQodGhpcywgIkluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRlc3QoKSIpKTsK
K30KKworSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSA9IGZ1bmN0aW9uKGNvZGVTdHJpbmcs
IGNhbGxiYWNrKQoreworICAgIC8vIElmIHdlIGxvYWQgdGhpcyBwYWdlIG91dHNpZGUgb2YgdGhl
IGluc3BlY3Rvciwgb3IgaGl0IGFuIGVhcmx5IGVycm9yIHdoZW4gbG9hZGluZworICAgIC8vIHRo
ZSB0ZXN0IGZyb250ZW5kLCB0aGVuIGRlZmVyIGV2YWx1YXRpbmcgdGhlIGNvbW1hbmRzIChpbmRl
ZmluaXRlbHkgaW4gdGhlIGZvcm1lciBjYXNlKS4KKyAgICBpZiAoIXdpbmRvdy5SdW50aW1lQWdl
bnQpIHsKKyAgICAgICAgdGhpcy5fb3JpZ2luYWxDb25zb2xlTWV0aG9kc1siZXJyb3IiXSgiVHJp
ZWQgdG8gZXZhbHVhdGUgaW4gdGVzdCBwYWdlLCBidXQgY29ubmVjdGlvbiBub3QgeWV0IGVzdGFi
bGlzaGVkOiIsIGNvZGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogY29kZVN0cmluZywgb2JqZWN0
R3JvdXA6ICJ0ZXN0IiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZX0sIGNhbGxiYWNrKTsK
K30KKworSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQgPSBmdW5jdGlvbih0ZXh0KQoreworICAgIHRo
aXMuX3Jlc3VsdHMucHVzaCh0ZXh0KTsKKworICAgIGlmIChJbnNwZWN0b3JUZXN0LmR1bXBNZXNz
YWdlc1RvQ29uc29sZSkKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRM
b2coImFkZFJlc3VsdDogIiArIHRleHQpOworCisgICAgaWYgKCF0aGlzLl90ZXN0UGFnZUlzUmVs
b2FkaW5nKQorICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJJbnNwZWN0b3JUZXN0UHJveHku
YWRkUmVzdWx0KHVuZXNjYXBlKCciICsgZXNjYXBlKHRleHQpICsgIicpKSIpOworfQorCitJbnNw
ZWN0b3JUZXN0Ll9yZXNlbmRSZXN1bHRzID0gZnVuY3Rpb24oKQoreworICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMpOworICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJl
c3VsdHMgPSBmYWxzZTsKKworICAgIGZvciAodmFyIHJlc3VsdCBvZiB0aGlzLl9yZXN1bHRzKQor
ICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0
KHVuZXNjYXBlKCciICsgZXNjYXBlKHJlc3VsdCkgKyAiJykpIik7Cit9CisKK0luc3BlY3RvclRl
c3QudGVzdFBhZ2VEaWRMb2FkID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3Rlc3RQYWdlSXNS
ZWxvYWRpbmcgPSBmYWxzZTsKKyAgICB0aGlzLl9yZXNlbmRSZXN1bHRzKCk7CisKKyAgICB0aGlz
LmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRj
aGVyLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7CisKKyAgICBpZiAodGhpcy5fY29tcGxldGVUZXN0
QWZ0ZXJSZWxvYWQpCisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9CisK
K0luc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKHNob3VsZElnbm9yZUNhY2hlKQor
eworICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKTsKKyAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VSZWxvYWRlZE9uY2UpOworCisgICAgdGhpcy5f
dGVzdFBhZ2VJc1JlbG9hZGluZyA9IHRydWU7CisKKyAgICByZXR1cm4gUGFnZUFnZW50LnJlbG9h
ZCghIXNob3VsZElnbm9yZUNhY2hlKQorICAgICAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMgPSB0cnVlOworICAgICAgICAgICAgdGhp
cy5fdGVzdFBhZ2VSZWxvYWRlZE9uY2UgPSB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKG51bGwpOworICAgICAgICB9LmJpbmQodGhpcykpOworfQorCitJbnNwZWN0
b3JUZXN0LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBs
aW5lTnVtYmVyKQoreworICAgIHZhciByZXN1bHQgPSAiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGlu
c3BlY3RvciBwYWdlOiAiICsgbWVzc2FnZSArICIgWyIgKyB1cmwgKyAiOiIgKyBsaW5lTnVtYmVy
ICsgIl0iOworCisgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHRlc3QgcGFnZSBpcyBu
b3Qgc2V0IHVwLCB0aGVuIGp1c3QgZHVtcCB0byBjb25zb2xlIGFuZCBnaXZlIHVwLgorICAgIC8v
IEVycm9ycyBlbmNvdW50ZXJlZCB0aGlzIGVhcmx5IGNhbiBiZSBkZWJ1Z2dlZCBieSBsb2FkaW5n
IFRlc3QuaHRtbCBpbiBhIG5vcm1hbCBicm93c2VyIHBhZ2UuCisgICAgaWYgKCFJbnNwZWN0b3JG
cm9udGVuZEhvc3QgfHwgIUluc3BlY3RvckJhY2tlbmQpIHsKKyAgICAgICAgdGhpcy5fb3JpZ2lu
YWxDb25zb2xlTWV0aG9kc1siZXJyb3IiXShyZXN1bHQpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgdGhpcy5hZGRSZXN1bHQocmVzdWx0KTsKKyAgICB0aGlzLmNvbXBsZXRl
VGVzdCgpOworICAgIC8vIFN0b3AgZGVmYXVsdCBoYW5kbGVyIHNvIHdlIGNhbiBlbXB0eSBJbnNw
ZWN0b3JCYWNrZW5kJ3MgbWVzc2FnZSBxdWV1ZS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8g
SW5pdGlhbGl6ZSByZXBvcnRpbmcgbWVjaGFuaXNtcyBiZWZvcmUgbG9hZGluZyB0aGUgcmVzdCBv
ZiB0aGUgaW5zcGVjdG9yIHBhZ2UuCitJbnNwZWN0b3JUZXN0Ll9yZXN1bHRzID0gW107CitJbnNw
ZWN0b3JUZXN0Ll9zaG91bGRSZXNlbmRSZXN1bHRzID0gdHJ1ZTsKK0luc3BlY3RvclRlc3QuX29y
aWdpbmFsQ29uc29sZU1ldGhvZHMgPSB7fTsKKworLy8gQ2F0Y2ggc3ludGF4IGVycm9ycywgdHlw
ZSBlcnJvcnMsIGFuZCBvdGhlciBleGNlcHRpb25zLgord2luZG93Lm9uZXJyb3IgPSBJbnNwZWN0
b3JUZXN0LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uLmJpbmQoSW5zcGVjdG9yVGVzdCk7CisKKy8v
IFJlZGlyZWN0IGZyb250ZW5kIGNvbnNvbGUgbWV0aG9kcyB0byBsb2cgbWVzc2FnZXMgaW50byB0
aGUgdGVzdCByZXN1bHQuCisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gY3JlYXRlUHJveHlD
b25zb2xlSGFuZGxlcih0eXBlKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHR5cGUgKyAiOiAiICsgQXJyYXkuZnJvbShh
cmd1bWVudHMpLmpvaW4oIiAiKSk7CisgICAgICAgIH07CisgICAgfQorCisgICAgZm9yICh2YXIg
dHlwZSBvZiBbImxvZyIsICJlcnJvciIsICJpbmZvIl0pIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5fb3JpZ2luYWxDb25zb2xlTWV0aG9kc1t0eXBlXSA9IGNvbnNvbGVbdHlwZV0uYmluZChjb25z
b2xlKTsKKyAgICAgICAgY29uc29sZVt0eXBlXSA9IGNyZWF0ZVByb3h5Q29uc29sZUhhbmRsZXIo
dHlwZS50b1VwcGVyQ2FzZSgpKTsKKyAgICB9Cit9KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDdmZGFlODY1MWQ5ZTQyYzRjYmM2ODQ2
OGE1YmU1NDE1NGQ0NTA4NDIuLjM3MDRkOWViM2U1OTI5YmZmOTcyMGJhMzQ3YjUyMTAwZDU3ZTM5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
QEAgLTMyLDExICszMiw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0Pgog
Ci0gICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJUZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJUZXN0L1Rlc3RTdWl0ZS5qcyI+PC9zY3JpcHQ+Ci0KLSAgICA8c2NyaXB0IHNy
Yz0iVGVzdC9UZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9UZXN0Lmpz
Ij48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RPTVV0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRXZlbnRMaXN0ZW5lci5qcyI+PC9zY3JpcHQ+
CkBAIC0xNDYsMTIgKzE0Miw2IEBACiAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2FkZWQoKTsKLQotICAgICAgICAvLyBOb3QgcmVs
aWFibGUgdW5sZXNzIGNvbnNvbGUgbWVzc2FnZXMgYXJlIGR1bXBlZCB0byBzdGRlcnIuIFNlZSB3
aWtpIGZvciBkZXRhaWxzLgotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJbnNwZWN0b3JQ
cm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gU3luY2hyb25vdXMgbG9nZ2lu
ZyBtYXkgcHJvZHVjZSBtb3JlIG91dHB1dCBwcmlvciB0byBhIHRpbWVvdXQuCi0gICAgICAgIElu
c3BlY3RvclRlc3QuZm9yY2VTeW5jRGVidWdMb2dnaW5nID0gZmFsc2U7CiAgICAgPC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGViMmJlYzFjYzRjZDhmOGMxNzZkMTE0NTBhODkzY2QzN2Vi
NTg2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3Mu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1Gcm9udGVuZFRl
c3RIYXJuZXNzID0gY2xhc3MgRnJvbnRlbmRUZXN0SGFybmVzcyBleHRlbmRzIFRlc3RIYXJuZXNz
Ci17Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAg
ICB0aGlzLl9yZXN1bHRzID0gW107Ci0gICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMg
PSB0cnVlOwotICAgIH0KLQotICAgIC8vIFRlc3RIYXJuZXNzIE92ZXJyaWRlcwotCi0gICAgY29t
cGxldGVUZXN0KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmZvcmNlU3luY0RlYnVnTG9nZ2lu
ZykKLSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVkTG9nKCJGcm9u
dGVuZFRlc3RIYXJuZXNzLmNvbXBsZXRlVGVzdCgpIik7Ci0KLSAgICAgICAgLy8gV2FpdCBmb3Ig
cmVzdWx0cyB0byBiZSByZXNlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29tcGxldGVUZXN0KCkuIE90
aGVyd2lzZSwgbWVzc2FnZXMgd2lsbCBiZQotICAgICAgICAvLyBxdWV1ZWQgYWZ0ZXIgcGVuZGlu
ZyBkaXNwYXRjaGVzIHJ1biB0byB6ZXJvIGFuZCB0aGUgdGVzdCBwYWdlIHdpbGwgcXVpdCBiZWZv
cmUgcHJvY2Vzc2luZyB0aGVtLgotICAgICAgICBpZiAodGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGlu
ZykgewotICAgICAgICAgICAgdGhpcy5fY29tcGxldGVUZXN0QWZ0ZXJSZWxvYWQgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHRoaXMuZXZhbHVhdGVJblBhZ2UuYmluZCh0aGlz
LCAiVGVzdFBhZ2UuY29tcGxldGVUZXN0KCkiKSk7Ci0gICAgfQotCi0gICAgYWRkUmVzdWx0KG1l
c3NhZ2UpCi0gICAgewotICAgICAgICB0aGlzLl9yZXN1bHRzLnB1c2gobWVzc2FnZSk7Ci0KLSAg
ICAgICAgaWYgKHRoaXMuZm9yY2VTeW5jRGVidWdMb2dnaW5nKQotICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coImFkZFJlc3VsdDogIiArIG1lc3NhZ2UpOwot
Ci0gICAgICAgIGlmICghdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZykKLSAgICAgICAgICAgIHRo
aXMuZXZhbHVhdGVJblBhZ2UoYFRlc3RQYWdlLmFkZFJlc3VsdCh1bmVzY2FwZSgiJHtlc2NhcGUo
bWVzc2FnZSl9IikpYCk7Ci0gICAgfQotCi0gICAgZGVidWdMb2cobWVzc2FnZSkKLSAgICB7Ci0g
ICAgICAgIGxldCBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSAhPT0gInN0cmlu
ZyIgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3NhZ2U7Ci0gICAgICAgIHRoaXMuZXZh
bHVhdGVJblBhZ2UoYFRlc3RQYWdlLmRlYnVnTG9nKHVuZXNjYXBlKCIke2VzY2FwZShzdHJpbmdp
ZmllZE1lc3NhZ2UpfSIpKTtgKTsKLSAgICB9Ci0KLSAgICBldmFsdWF0ZUluUGFnZShleHByZXNz
aW9uLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIC8vIElmIHdlIGxvYWQgdGhpcyBwYWdlIG91
dHNpZGUgb2YgdGhlIGluc3BlY3Rvciwgb3IgaGl0IGFuIGVhcmx5IGVycm9yIHdoZW4gbG9hZGlu
ZwotICAgICAgICAvLyB0aGUgdGVzdCBmcm9udGVuZCwgdGhlbiBkZWZlciBldmFsdWF0aW5nIHRo
ZSBjb21tYW5kcyAoaW5kZWZpbml0ZWx5IGluIHRoZSBmb3JtZXIgY2FzZSkuCi0gICAgICAgIGlm
ICh0aGlzLl9vcmlnaW5hbENvbnNvbGUgJiYgIXdpbmRvdy5SdW50aW1lQWdlbnQpIHsKLSAgICAg
ICAgICAgIHRoaXMuX29yaWdpbmFsQ29uc29sZVsiZXJyb3IiXSgiVHJpZWQgdG8gZXZhbHVhdGUg
aW4gdGVzdCBwYWdlLCBidXQgY29ubmVjdGlvbiBub3QgeWV0IGVzdGFibGlzaGVkOiIsIGV4cHJl
c3Npb24pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUnVudGlt
ZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXA6ICJ0ZXN0Iiwg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZX0sIGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICAv
LyBGcm9udGVuZCB0ZXN0LXNwZWNpZmljIG1ldGhvZHMuCi0KLSAgICBleHBlY3ROb0Vycm9yKGVy
cm9yKQotICAgIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUFJPVE9DT0wgRVJST1I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICAgICAgdGhyb3cgIlBST1RPQ09MIEVSUk9S
IjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlc3RQYWdlRGlkTG9hZCgpCi0gICAgewotICAg
ICAgICB0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3Jl
c2VuZFJlc3VsdHMoKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhG
cm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7Ci0KLSAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRlVGVzdEFmdGVyUmVsb2FkKQotICAgICAgICAgICAgdGhpcy5jb21wbGV0
ZVRlc3QoKTsKLSAgICB9Ci0KLSAgICByZWxvYWRQYWdlKHNob3VsZElnbm9yZUNhY2hlKQotICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcpOwot
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VSZWxvYWRlZE9uY2UpOwotCi0g
ICAgICAgIHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcgPSB0cnVlOwotCi0gICAgICAgIHJldHVy
biBQYWdlQWdlbnQucmVsb2FkKCEhc2hvdWxkSWdub3JlQ2FjaGUpCi0gICAgICAgICAgICAudGhl
bihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG91bGRSZXNlbmRSZXN1bHRz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0aGlzLl90ZXN0UGFnZVJlbG9hZGVkT25jZSA9IHRy
dWU7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOwotICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICByZWRpcmVjdENvbnNvbGVUb1Rl
c3RPdXRwdXQoKQotICAgIHsKLSAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAgICAgICBmdW5j
dGlvbiBjcmVhdGVQcm94eUNvbnNvbGVIYW5kbGVyKHR5cGUpIHsKLSAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzZWxmLmFkZFJlc3VsdCh0eXBlICsgIjog
IiArIEFycmF5LmZyb20oYXJndW1lbnRzKS5qb2luKCIgIikpOwotICAgICAgICAgICAgfTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGxldCByZWRpcmVjdGVkTWV0aG9kcyA9IHt9OwotICAgICAgICBm
b3IgKGxldCBrZXkgaW4gd2luZG93LmNvbnNvbGUpIAotICAgICAgICAgICAgcmVkaXJlY3RlZE1l
dGhvZHNba2V5XSA9IHdpbmRvdy5jb25zb2xlW2tleV0uYmluZCh3aW5kb3cuY29uc29sZSk7Ci0K
LSAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBbImxvZyIsICJlcnJvciIsICJpbmZvIl0pCi0gICAg
ICAgICAgICByZWRpcmVjdGVkTWV0aG9kc1t0eXBlXSA9IGNyZWF0ZVByb3h5Q29uc29sZUhhbmRs
ZXIodHlwZS50b1VwcGVyQ2FzZSgpKTsKLQotICAgICAgICB0aGlzLl9vcmlnaW5hbENvbnNvbGUg
PSB3aW5kb3cuY29uc29sZTsKLSAgICAgICAgd2luZG93LmNvbnNvbGUgPSByZWRpcmVjdGVkTWV0
aG9kczsKLSAgICB9Ci0KLSAgICByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbihtZXNzYWdlLCB1cmws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBg
VW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlOiAke21lc3NhZ2V9IFske3VybH06
JHtsaW5lTnVtYmVyfToke2NvbHVtbk51bWJlcn1dYDsKLQotICAgICAgICAvLyBJZiB0aGUgY29u
bmVjdGlvbiB0byB0aGUgdGVzdCBwYWdlIGlzIG5vdCBzZXQgdXAsIHRoZW4ganVzdCBkdW1wIHRv
IGNvbnNvbGUgYW5kIGdpdmUgdXAuCi0gICAgICAgIC8vIEVycm9ycyBlbmNvdW50ZXJlZCB0aGlz
IGVhcmx5IGNhbiBiZSBkZWJ1Z2dlZCBieSBsb2FkaW5nIFRlc3QuaHRtbCBpbiBhIG5vcm1hbCBi
cm93c2VyIHBhZ2UuCi0gICAgICAgIGlmICh0aGlzLl9vcmlnaW5hbENvbnNvbGUgJiYgKCFJbnNw
ZWN0b3JGcm9udGVuZEhvc3QgfHwgIUluc3BlY3RvckJhY2tlbmQpKSB7Ci0gICAgICAgICAgICB0
aGlzLl9vcmlnaW5hbENvbnNvbGVbImVycm9yIl0ocmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuYWRkUmVzdWx0KHJlc3VsdCk7Ci0g
ICAgICAgIHRoaXMuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIC8vIFN0b3AgZGVmYXVsdCBoYW5k
bGVyIHNvIHdlIGNhbiBlbXB0eSBJbnNwZWN0b3JCYWNrZW5kJ3MgbWVzc2FnZSBxdWV1ZS4KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3Jlc2Vu
ZFJlc3VsdHMoKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2hvdWxkUmVz
ZW5kUmVzdWx0cyk7Ci0gICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMgPSBmYWxzZTsK
LQotICAgICAgICBmb3IgKGxldCByZXN1bHQgb2YgdGhpcy5fcmVzdWx0cykKLSAgICAgICAgICAg
IHRoaXMuZXZhbHVhdGVJblBhZ2UoYFRlc3RQYWdlLmFkZFJlc3VsdCh1bmVzY2FwZSgiJHtlc2Nh
cGUocmVzdWx0KX0iKSlgKTsKLSAgICB9Ci19OwotCi1Gcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50
ID0gewotICAgIFRlc3RQYWdlRGlkTG9hZDogImZyb250ZW5kLXRlc3QtdGVzdC1wYWdlLWRpZC1s
b2FkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QvSW5zcGVjdG9yUHJvdG9jb2wuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0L0luc3BlY3RvclByb3RvY29sLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMTRlNTJiY2EwMzlhZGQ0NGJlZDgwZGQxYTMwNmU0NDk4OTI1NmI5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvSW5zcGVjdG9yUHJvdG9jb2wuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1JbnNwZWN0b3JQcm90b2Nv
bCA9IHt9OwotSW5zcGVjdG9yUHJvdG9jb2wuX2Rpc3BhdGNoVGFibGUgPSBbXTsKLUluc3BlY3Rv
clByb3RvY29sLl9yZXF1ZXN0SWQgPSAtMTsKLUluc3BlY3RvclByb3RvY29sLmV2ZW50SGFuZGxl
ciA9IHt9OwotCi1JbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZCA9IGZ1bmN0aW9uKG1ldGhv
ZE9yT2JqZWN0LCBwYXJhbXMsIGhhbmRsZXIpCi17Ci0gICAgLy8gQWxsb3cgbmV3LXN0eWxlIGFy
Z3VtZW50cyBvYmplY3QsIGFzIGluIGF3YWl0Q29tbWFuZC4KLSAgICBsZXQgbWV0aG9kID0gbWV0
aG9kT3JPYmplY3Q7Ci0gICAgaWYgKHR5cGVvZiBtZXRob2RPck9iamVjdCA9PT0gIm9iamVjdCIp
Ci0gICAgICAgIHZhciB7bWV0aG9kLCBwYXJhbXMsIGhhbmRsZXJ9ID0gbWV0aG9kT3JPYmplY3Q7
Ci0KLSAgICB0aGlzLl9kaXNwYXRjaFRhYmxlWysrdGhpcy5fcmVxdWVzdElkXSA9IGhhbmRsZXI7
Ci0gICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB7bWV0aG9kLCBwYXJhbXMsIGlkOiB0aGlzLl9yZXF1
ZXN0SWR9OwotICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2FnZU9iamVjdCk7Ci0KLSAgICByZXR1
cm4gdGhpcy5fcmVxdWVzdElkOwotfQotCi1JbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQg
PSBmdW5jdGlvbihhcmdzKQotewotICAgIGxldCB7bWV0aG9kLCBwYXJhbXN9ID0gYXJnczsKLSAg
ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
IHRoaXMuX2Rpc3BhdGNoVGFibGVbKyt0aGlzLl9yZXF1ZXN0SWRdID0ge3Jlc29sdmUsIHJlamVj
dH07Ci0gICAgICAgIGxldCBtZXNzYWdlT2JqZWN0ID0ge21ldGhvZCwgcGFyYW1zLCBpZDogdGhp
cy5fcmVxdWVzdElkfTsKLSAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShtZXNzYWdlT2JqZWN0KTsK
LSAgICB9LmJpbmQodGhpcykpOwotfQotCi1JbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50ID0g
ZnVuY3Rpb24oYXJncykKLXsKLSAgICBsZXQgZXZlbnQgPSBhcmdzLmV2ZW50OwotICAgIGlmICh0
eXBlb2YgZXZlbnQgIT09ICJzdHJpbmciKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV2ZW50
IG11c3QgYmUgYSBzdHJpbmcuIik7Ci0KLSAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24o
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgIEluc3BlY3RvclByb3RvY29sLmV2ZW50SGFuZGxl
cltldmVudF0gPSBmdW5jdGlvbihtZXNzYWdlKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JQcm90
b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgcmVzb2x2
ZShtZXNzYWdlKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi1JbnNwZWN0b3JQcm90b2NvbC5h
ZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlT3JPYmplY3QsIGxpc3RlbmVyKQot
ewotICAgIGxldCBldmVudCA9IGV2ZW50VHlwZU9yT2JqZWN0OwotICAgIGlmICh0eXBlb2YgZXZl
bnRUeXBlT3JPYmplY3QgPT09ICJvYmplY3QiKQotICAgICAgICB2YXIge2V2ZW50LCBsaXN0ZW5l
cn0gPSBldmVudFR5cGVPck9iamVjdDsKLQotICAgIGlmICh0eXBlb2YgZXZlbnQgIT09ICJzdHJp
bmciKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV2ZW50IG5hbWUgbXVzdCBiZSBhIHN0cmlu
Zy4iKTsKLQotICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICJmdW5jdGlvbiIpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXZlbnQgbGlzdGVuZXIgbXVzdCBiZSBjYWxsYWJsZS4iKTsKLQot
ICAgIC8vIENvbnZlcnQgdG8gYW4gYXJyYXkgb2YgbGlzdGVuZXJzLgotICAgIGxldCBsaXN0ZW5l
cnMgPSBJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdOwotICAgIGlmICghbGlz
dGVuZXJzKQotICAgICAgICBsaXN0ZW5lcnMgPSBJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRs
ZXJbZXZlbnRdID0gW107Ci0gICAgZWxzZSBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gImZ1bmN0
aW9uIikKLSAgICAgICAgbGlzdGVuZXJzID0gSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVy
W2V2ZW50XSA9IFtsaXN0ZW5lcnNdOwotCi0gICAgLy8gUHJldmVudCByZWdpc3RlcmluZyBtdWx0
aXBsZSB0aW1lcy4KLSAgICBpZiAobGlzdGVuZXJzLmluY2x1ZGVzKGxpc3RlbmVyKSkKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgbGlzdGVuZXIgbW9y
ZSB0aGFuIG9uY2UuIik7Ci0KLSAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7Ci19Ci0KLUlu
c3BlY3RvclByb3RvY29sLnNlbmRNZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKLXsK
LSAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGRlYnVnIGR1bXBpbmcgaW4gSW5zcGVjdG9yQmFja2Vu
ZCwgd2hpY2ggaXMgYnlwYXNzZWQKLSAgICAvLyBieSBJbnNwZWN0b3JQcm90b2NvbC4gUmV0dXJu
IG1lc3NhZ2VzIHNob3VsZCBiZSBkdW1wZWQgYnkgSW5zcGVjdG9yQmFja2VuZC4KLSAgICBpZiAo
UHJvdG9jb2xUZXN0LmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQotICAgICAgICBjb25z
b2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7Ci0K
LSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VUb0JhY2tlbmQoSlNPTi5zdHJp
bmdpZnkobWVzc2FnZU9iamVjdCkpOwotfQotCi1JbnNwZWN0b3JQcm90b2NvbC5jaGVja0ZvckVy
cm9yID0gZnVuY3Rpb24ocmVzcG9uc2VPYmplY3QpCi17Ci0gICAgaWYgKHJlc3BvbnNlT2JqZWN0
LmVycm9yKSB7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBST1RPQ09MIEVSUk9SOiAiICsg
SlNPTi5zdHJpbmdpZnkocmVzcG9uc2VPYmplY3QuZXJyb3IpKTsKLSAgICAgICAgUHJvdG9jb2xU
ZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB0aHJvdyAiUFJPVE9DT0wgRVJST1IiOwotICAg
IH0KLX0KLQotSW5zcGVjdG9yUHJvdG9jb2wuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBm
dW5jdGlvbihtZXNzYWdlT2JqZWN0KQotewotICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgZGVidWcg
ZHVtcGluZyBpbiBJbnNwZWN0b3JCYWNrZW5kLCB3aGljaCBpcyBieXBhc3NlZAotICAgIC8vIGJ5
IEluc3BlY3RvclByb3RvY29sLiBSZXR1cm4gbWVzc2FnZXMgc2hvdWxkIGJlIGR1bXBlZCBieSBJ
bnNwZWN0b3JCYWNrZW5kLgotICAgIGlmIChQcm90b2NvbFRlc3QuZHVtcEluc3BlY3RvclByb3Rv
Y29sTWVzc2FnZXMpCi0gICAgICAgIGNvbnNvbGUubG9nKCJiYWNrZW5kOiAiICsgSlNPTi5zdHJp
bmdpZnkobWVzc2FnZU9iamVjdCkpOwotCi0gICAgLy8gSWYgdGhlIG1lc3NhZ2UgaGFzIGFuIGlk
LCB0aGVuIGl0IGlzIGEgcmVwbHkgdG8gYSBjb21tYW5kLgotICAgIGxldCBtZXNzYWdlSWQgPSBt
ZXNzYWdlT2JqZWN0LmlkOwotICAgIGlmICh0eXBlb2YgbWVzc2FnZUlkID09PSAibnVtYmVyIikg
ewotICAgICAgICBsZXQgaGFuZGxlciA9IEluc3BlY3RvclByb3RvY29sLl9kaXNwYXRjaFRhYmxl
W21lc3NhZ2VJZF07Ci0gICAgICAgIGlmICghaGFuZGxlcikKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAg
ICBoYW5kbGVyKG1lc3NhZ2VPYmplY3QpOwotICAgICAgICBlbHNlIGlmICh0eXBlb2YgaGFuZGxl
ciA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAgIGxldCB7cmVzb2x2ZSwgcmVqZWN0fSA9IGhh
bmRsZXI7Ci0gICAgICAgICAgICBpZiAoImVycm9yIiBpbiBtZXNzYWdlT2JqZWN0KQotICAgICAg
ICAgICAgICAgIHJlamVjdChtZXNzYWdlT2JqZWN0LmVycm9yLm1lc3NhZ2UpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZU9iamVjdC5yZXN1bHQpOwot
ICAgICAgICB9Ci0gICAgLy8gT3RoZXJ3aXNlLCBpdCBpcyBhbiBldmVudC4KLSAgICB9IGVsc2Ug
ewotICAgICAgICBsZXQgZXZlbnROYW1lID0gbWVzc2FnZU9iamVjdFsibWV0aG9kIl07Ci0gICAg
ICAgIGxldCBoYW5kbGVyID0gSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50TmFt
ZV07Ci0gICAgICAgIGlmICghaGFuZGxlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBoYW5kbGVy
KG1lc3NhZ2VPYmplY3QpOwotICAgICAgICBlbHNlIGlmIChoYW5kbGVyIGluc3RhbmNlb2YgQXJy
YXkpIHsKLSAgICAgICAgICAgIGhhbmRsZXIubWFwKGZ1bmN0aW9uKGxpc3RlbmVyKSB7Ci0gICAg
ICAgICAgICAgICAgbGlzdGVuZXIuY2FsbChudWxsLCBtZXNzYWdlT2JqZWN0KTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAib2JqZWN0Iikg
ewotICAgICAgICAgICAgbGV0IHtyZXNvbHZlLCByZWplY3R9ID0gaGFuZGxlcjsKLSAgICAgICAg
ICAgIGlmICgiZXJyb3IiIGluIG1lc3NhZ2VPYmplY3QpCi0gICAgICAgICAgICAgICAgcmVqZWN0
KG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcmVzb2x2ZShtZXNzYWdlT2JqZWN0LnJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Qcm90b2NvbFRlc3RIYXJuZXNzLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Qcm90b2NvbFRlc3RIYXJuZXNz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmJmZGRjNDBlYjk0OTI5MTVhY2Yz
NzY3YWYyY2Q0NWU4ZTBhYWJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvUHJvdG9j
b2xUZXN0SGFybmVzcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVBy
b3RvY29sVGVzdEhhcm5lc3MgPSBjbGFzcyBQcm90b2NvbFRlc3RIYXJuZXNzIGV4dGVuZHMgVGVz
dEhhcm5lc3MKLXsKLSAgICAvLyBUZXN0SGFybmVzcyBPdmVycmlkZXMKLQotICAgIGNvbXBsZXRl
VGVzdCgpCi0gICAgewotICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJUZXN0UGFnZS5jbG9z
ZVRlc3QoKTsiKTsKLSAgICB9Ci0KLSAgICBhZGRSZXN1bHQobWVzc2FnZSkKLSAgICB7Ci0gICAg
ICAgIC8vIFVuZm9ydHVuYXRlbHksIGV2ZXJ5IHN0cmluZyBhcmd1bWVudCBtdXN0IGJlIGVzY2Fw
ZWQgYmVjYXVzZSB0ZXN0cyBhcmUgbm90IGNvbnNpc3RlbnQKLSAgICAgICAgLy8gd2l0aCByZXNw
ZWN0IHRvIGVzY2FwaW5nIHdpdGggc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMuIFNvbWUgZXhjZXB0
aW9ucyB1c2Ugc2luZ2xlIHF1b3Rlcy4KLSAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZSA9
IHR5cGVvZiBtZXNzYWdlICE9PSAic3RyaW5nIiA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDog
bWVzc2FnZTsKLSAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UubG9nKHVuZXNj
YXBlKCIke2VzY2FwZShzdHJpbmdpZmllZE1lc3NhZ2UpfSIpKTtgKTsKLSAgICB9Ci0KLSAgICBk
ZWJ1Z0xvZyhtZXNzYWdlKQotICAgIHsKLSAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZSA9
IHR5cGVvZiBtZXNzYWdlICE9PSAic3RyaW5nIiA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDog
bWVzc2FnZTsKLSAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuZGVidWdMb2co
dW5lc2NhcGUoIiR7ZXNjYXBlKHN0cmluZ2lmaWVkTWVzc2FnZSl9IikpO2ApOwotICAgIH0KLQot
ICAgIGV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24sIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
bGV0IGFyZ3MgPSB7Ci0gICAgICAgICAgICBtZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwKLSAg
ICAgICAgICAgIHBhcmFtczoge2V4cHJlc3Npb259Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
dHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuc2VuZENvbW1hbmQoYXJncywgY2FsbGJhY2spOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKGFyZ3MpOwotICAgIH0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qv
VGVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NlNjI2ZTZlNDYzODRkYjMwNjAzNGEw
Y2Y1YjBkNGRmYmJhNzc0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUwotICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAqIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1XZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUgPSB7Ci0gICAgV2ViOiAid2ViIiwKLSAg
ICBKYXZhU2NyaXB0OiAiamF2YXNjcmlwdCIKLX07Ci0KLVdlYkluc3BlY3Rvci5sb2FkZWQgPSBm
dW5jdGlvbigpCi17Ci0gICAgdGhpcy5kZWJ1Z2dhYmxlVHlwZSA9IFdlYkluc3BlY3Rvci5EZWJ1
Z2dhYmxlVHlwZS5XZWI7Ci0gICAgdGhpcy5oYXNFeHRyYURvbWFpbnMgPSBmYWxzZTsKLQotICAg
IC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tl
bmQuCi0gICAgLy8gVGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIHNob3VsZCBtYXRjaCB0aGUgc2Ft
ZSBpbiBNYWluLmpzLgotICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNw
YXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIpOwotICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlBhZ2VPYnNl
cnZlcik7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbnNvbGVEaXNwYXRjaGVyKG5l
dyBXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVyKTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRE9NRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyKTsKLSAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyTmV0d29ya0Rpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rv
ci5OZXR3b3JrT2JzZXJ2ZXIpOwotICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEZWJ1Z2dl
ckRpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyKTsKLSAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGltZWxpbmVEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPYnNlcnZlcik7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3Bh
dGNoZXIobmV3IFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlcik7Ci0gICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlclJ1bnRpbWVEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuUnVudGltZU9ic2Vy
dmVyKTsKLSAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclJlcGxheURpc3BhdGNoZXIp
Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJSZXBsYXlEaXNwYXRjaGVyKG5ldyBX
ZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIpOwotCi0gICAgLy8gSW5zdGFudGlhdGUgY29udHJv
bGxlcnMgdXNlZCBieSB0ZXN0cy4KLSAgICB0aGlzLmZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gbmV3
IFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlcjsKLSAgICB0aGlzLmRvbVRyZWVNYW5h
Z2VyID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlcjsKLSAgICB0aGlzLmNzc1N0eWxl
TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyOwotICAgIHRoaXMubG9n
TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuTG9nTWFuYWdlcjsKLSAgICB0aGlzLmlzc3VlTWFu
YWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuSXNzdWVNYW5hZ2VyOwotICAgIHRoaXMucnVudGltZU1h
bmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyOwotICAgIHRoaXMudGltZWxp
bmVNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXI7Ci0gICAgdGhpcy5k
ZWJ1Z2dlck1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlcjsKLSAgICB0
aGlzLnByb2JlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyOwotICAgIHRo
aXMucmVwbGF5TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlcjsKLQotICAg
IC8vIEdsb2JhbCBjb250cm9sbGVycy4KLSAgICB0aGlzLnF1aWNrQ29uc29sZSA9IHtleGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcjogdW5kZWZpbmVkfTsKLQotICAgIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB0aGlzLmNvbnRlbnRMb2FkZWQuYmluZCh0aGlz
KSk7Ci0KLSAgICAvLyBFbmFibGUgYWdlbnRzLgotICAgIEluc3BlY3RvckFnZW50LmVuYWJsZSgp
OwotICAgIENvbnNvbGVBZ2VudC5lbmFibGUoKTsKLQotICAgIC8vIFBlcmZvcm0gb25lLXRpbWUg
dGFza3MuCi0gICAgV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLnJlcXVlc3RDU1NDb21wbGV0
aW9ucygpOwotCi0gICAgLy8gR2xvYmFsIHNldHRpbmdzLgotICAgIHRoaXMuc2hvd1NoYWRvd0RP
TVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInNob3ctc2hhZG93LWRvbSIsIHRy
dWUpOwotfQotCi1XZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVz
c2FnZXMuCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwotCi0gICAg
Ly8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2Vz
IHRoZSB3aW5kb3cgdG8gZGlzcGxheQotICAgIC8vIGFuZCBwZW5kaW5nIEluc3BlY3RvckZyb250
ZW5kQVBJIGNvbW1hbmRzIHRvIGJlIHNlbnQuCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmxv
YWRlZCgpOwotfQotCi1XZWJJbnNwZWN0b3IuVUlTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpCi17
Ci0gICAgcmV0dXJuIHN0cmluZzsKLX0KLQotLy8gQWRkIHN0dWJzIHRoYXQgYXJlIGNhbGxlZCBi
eSB0aGUgZnJvbnRlbmQgQVBJLgotV2ViSW5zcGVjdG9yLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVu
Y3Rpb24oKSB7fTsKLVdlYkluc3BlY3Rvci51cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5ID0gZnVu
Y3Rpb24oKSB7fTsKLQotd2luZG93Lkluc3BlY3RvclRlc3QgPSBuZXcgRnJvbnRlbmRUZXN0SGFy
bmVzcygpOwotCi0vLyBDYXRjaCBzeW50YXggZXJyb3JzLCB0eXBlIGVycm9ycywgYW5kIG90aGVy
IGV4Y2VwdGlvbnMuCi13aW5kb3cub25lcnJvciA9IEluc3BlY3RvclRlc3QucmVwb3J0VW5jYXVn
aHRFeGNlcHRpb24uYmluZChJbnNwZWN0b3JUZXN0KTsKLQotSW5zcGVjdG9yVGVzdC5yZWRpcmVj
dENvbnNvbGVUb1Rlc3RPdXRwdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEhhcm5lc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RIYXJuZXNzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZDA4YzExOTAyYzNmNzMzMmExMTg4MDk3YzI0MjE0NTg5MDZmZDRkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEhhcm5lc3MuanMKKysrIC9kZXYvbnVsbApA
QCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1UZXN0SGFybmVzcyA9IGNsYXNzIFRlc3RIYXJuZXNzIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAotewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0g
ICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGhpcy5fbG9nQ291bnQgPSAwOwotICAgIH0KLQot
ICAgIGNvbXBsZXRlVGVzdCgpCi0gICAgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11c3Qg
YmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4iKTsKLSAgICB9Ci0KLSAgICBhZGRSZXN1bHQo
KQotICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuIik7Ci0gICAgfQotCi0gICAgZGVidWdMb2coKQotICAgIHsKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuIik7Ci0g
ICAgfQotCi0gICAgZXZhbHVhdGVJblBhZ2Uoc3RyaW5nLCBjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLiIp
OwotICAgIH0KLQotICAgIGNyZWF0ZUFzeW5jU3VpdGUobmFtZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgQXN5bmNUZXN0U3VpdGUodGhpcywgbmFtZSk7Ci0gICAgfQotCi0gICAgY3JlYXRl
U3luY1N1aXRlKG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFN5bmNUZXN0U3VpdGUo
dGhpcywgbmFtZSk7Ci0gICAgfQotCi0gICAgZ2V0IGxvZ0NvdW50KCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9sb2dDb3VudDsKLSAgICB9Ci0KLSAgICBsb2cobWVzc2FnZSkKLSAgICB7
Ci0gICAgICAgICsrdGhpcy5fbG9nQ291bnQ7Ci0KLSAgICAgICAgaWYgKHRoaXMuZm9yY2VTeW5j
RGVidWdMb2dnaW5nKQotICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhtZXNzYWdlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhpcy5hZGRSZXN1bHQobWVzc2FnZSk7Ci0gICAgfQotCi0g
ICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIGlmIChjb25kaXRp
b24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2Fn
ZSA9IHR5cGVvZiBtZXNzYWdlICE9PSAib2JqZWN0IiA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lm
eShtZXNzYWdlKTsKLSAgICAgICAgdGhpcy5hZGRSZXN1bHQoIkFTU0VSVDogIiArIHN0cmluZ2lm
aWVkTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgZXhwZWN0VGhhdChjb25kaXRpb24sIG1lc3NhZ2Up
Ci0gICAgewotICAgICAgICBsZXQgcHJlZml4ID0gY29uZGl0aW9uID8gIlBBU1MiIDogIkZBSUwi
OwotICAgICAgICBsZXQgc3RyaW5naWZpZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJv
YmplY3QiID8gbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOwotICAgICAgICB0aGlz
LmFkZFJlc3VsdChgJHtwcmVmaXh9OiAke3N0cmluZ2lmaWVkTWVzc2FnZX1gKTsKLSAgICB9Ci19
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9U
ZXN0U3R1Yi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dFN0dWIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MWI3MGY0MzU5N2QzMzlh
YzI3NmM1ZDMyNGZkNGM0OTdlZDE0YTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9U
ZXN0U3R1Yi5qcworKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7fTsKLUluc3BlY3RvckZyb250ZW5kQVBJLmRp
c3BhdGNoTWVzc2FnZUFzeW5jID0gSW5zcGVjdG9yUHJvdG9jb2wuZGlzcGF0Y2hNZXNzYWdlRnJv
bUJhY2tlbmQ7Ci0KLXdpbmRvdy5Qcm90b2NvbFRlc3QgPSBuZXcgUHJvdG9jb2xUZXN0SGFybmVz
cygpOwotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgZXZhbChldmVudC5kYXRhKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGFsZXJ0KGUuc3RhY2spOwotICAgICAgICBQcm90b2NvbFRlc3QuY29tcGxl
dGVUZXN0KCk7Ci0gICAgICAgIHRocm93IGU7Ci0gICAgfQotfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RTdWl0ZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdFN1aXRlLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODUzODZmYWU4NmFjZjBkNDQ1Mzk0NThjY2I3OWIzMDA3
ZjcyMTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdFN1aXRlLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVRlc3RTdWl0ZSA9IGNsYXNzIFRlc3RT
dWl0ZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcihoYXJu
ZXNzLCBuYW1lKSB7Ci0gICAgICAgIGlmICghKGhhcm5lc3MgaW5zdGFuY2VvZiBUZXN0SGFybmVz
cykpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11c3QgcGFzcyB0aGUgdGVzdCdzIGhh
cm5lc3MgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiIpOwotCi0gICAgICAgIGlmICh0eXBlb2YgbmFt
ZSAhPT0gInN0cmluZyIgfHwgIW5hbWUudHJpbSgpLmxlbmd0aCkKLSAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiVHJpZWQgdG8gY3JlYXRlIFRlc3RTdWl0ZSB3aXRob3V0IHN0cmluZyBzdWl0
ZSBuYW1lLiIpOwotCi0gICAgICAgIHN1cGVyKCk7Ci0KLSAgICAgICAgdGhpcy5uYW1lID0gbmFt
ZTsKLSAgICAgICAgdGhpcy5faGFybmVzcyA9IGhhcm5lc3M7Ci0KLSAgICAgICAgdGhpcy50ZXN0
Y2FzZXMgPSBbXTsKLSAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZmFp
bENvdW50ID0gMDsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdGhpcyBpZiB0aGUgdGVzdCBmaWxlIG9u
bHkgaGFzIG9uZSBzdWl0ZSwgYW5kIG5vIGhhbmRsaW5nCi0gICAgLy8gb2YgdGhlIHZhbHVlIHJl
dHVybmVkIGJ5IHJ1blRlc3RDYXNlcygpIGlzIG5lZWRlZC4KLSAgICBydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKQotICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuIik7Ci0gICAgfQotCi0gICAgcnVuVGVzdENhc2VzKCkKLSAgICB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLiIpOwotICAgIH0KLQotICAgIGdldCBwYXNzQ291bnQoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMucnVuQ291bnQgLSB0aGlzLmZhaWxDb3VudDsKLSAgICB9Ci0KLSAgICBnZXQgc2tp
cENvdW50KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmZhaWxDb3VudCkKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLnRlc3RjYXNlcy5sZW5ndGggLSB0aGlzLnJ1bkNvdW50OwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBhZGRUZXN0Q2FzZSh0ZXN0
Y2FzZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGVzdGNhc2UgfHwgISh0ZXN0Y2FzZSBpbnN0YW5j
ZW9mIE9iamVjdCkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGFkZCBu
b24tb2JqZWN0IHRlc3QgY2FzZS4iKTsKLQotICAgICAgICBpZiAodHlwZW9mIHRlc3RjYXNlLm5h
bWUgIT09ICJzdHJpbmciIHx8ICF0ZXN0Y2FzZS5uYW1lLnRyaW0oKS5sZW5ndGgpCi0gICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGFkZCB0ZXN0IGNhc2Ugd2l0aG91dCBhIG5h
bWUuIik7Ci0KLSAgICAgICAgaWYgKHR5cGVvZiB0ZXN0Y2FzZS50ZXN0ICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUcmllZCB0byBhZGQgdGVzdCBjYXNlIHdp
dGhvdXQgYHRlc3RgIGZ1bmN0aW9uLiIpOwotCi0gICAgICAgIHRoaXMudGVzdGNhc2VzLnB1c2go
dGVzdGNhc2UpOwotICAgIH0KLX07Ci0KLUFzeW5jVGVzdFN1aXRlID0gY2xhc3MgQXN5bmNUZXN0
U3VpdGUgZXh0ZW5kcyBUZXN0U3VpdGUKLXsKLSAgICBydW5UZXN0Q2FzZXNBbmRGaW5pc2goKQot
ICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICAgICAgdGhpcy5faGFy
bmVzcy5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMucnVuVGVzdENh
c2VzKCkKLSAgICAgICAgICAgIC50aGVuKGZpbmlzaC5iaW5kKHRoaXMpKQotICAgICAgICAgICAg
LmNhdGNoKGZpbmlzaC5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBydW5UZXN0Q2FzZXMoKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnRlc3RjYXNlcy5sZW5ndGgpCi0gICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNhbGwgcnVuVGVzdENhc2VzKCkgZm9yIHN1aXRlIHdp
dGggbm8gdGVzdCBjYXNlcyIpOwotICAgICAgICBpZiAodGhpcy5fc3RhcnRlZFJ1bm5pbmcpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNhbGwgcnVuVGVzdENhc2VzKCkg
bW9yZSB0aGFuIG9uY2UuIik7Ci0KLSAgICAgICAgdGhpcy5fc3RhcnRlZFJ1bm5pbmcgPSB0cnVl
OwotCi0gICAgICAgIHRoaXMuX2hhcm5lc3MubG9nKCIiKTsKLSAgICAgICAgdGhpcy5faGFybmVz
cy5sb2coIj09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogIiArIHRoaXMubmFtZSk7Ci0KLSAgICAgICAg
Ly8gQXZvaWQgYWRkaW5nIG5ld2xpbmVzIGlmIG5vdGhpbmcgd2FzIGxvZ2dlZC4KLSAgICAgICAg
bGV0IHByaW9yTG9nQ291bnQgPSB0aGlzLl9oYXJuZXNzLmxvZ0NvdW50OwotICAgICAgICBsZXQg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnRlc3RjYXNlcy5yZWR1Y2Uo
ZnVuY3Rpb24oY2hhaW4sIHRlc3RjYXNlLCBpKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2hhaW4u
dGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgcHJpb3JMb2dD
b3VudCArIDEgPCBzZWxmLl9oYXJuZXNzLmxvZ0NvdW50KQotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9oYXJuZXNzLmxvZygiIik7Ci0KLSAgICAgICAgICAgICAgICBwcmlvckxvZ0NvdW50ID0g
c2VsZi5faGFybmVzcy5sb2dDb3VudDsKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXJuZXNzLmxv
ZygiLS0gUnVubmluZyB0ZXN0IGNhc2U6ICIgKyB0ZXN0Y2FzZS5uYW1lKTsKLSAgICAgICAgICAg
ICAgICBzZWxmLnJ1bkNvdW50Kys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHRlc3RjYXNlLnRlc3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIFByb21pc2UucmVz
b2x2ZSgpKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0LmNhdGNoKGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgIHNlbGYuZmFpbENvdW50Kys7Ci0gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGU7
Ci0gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKQotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSBlLm1lc3NhZ2U7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPT0g
InN0cmluZyIpCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3Nh
Z2UpOwotCi0gICAgICAgICAgICBzZWxmLl9oYXJuZXNzLmxvZygiISEgRVhDRVBUSU9OOiAiICsg
bWVzc2FnZSk7Ci0gICAgICAgICAgICB0aHJvdyBlOyAvLyBSZWplY3QgdGhpcyBwcm9taXNlIGJ5
IHJlLXRocm93aW5nIHRoZSBlcnJvci4KLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotU3luY1Rl
c3RTdWl0ZSA9IGNsYXNzIFN5bmNUZXN0U3VpdGUgZXh0ZW5kcyBUZXN0U3VpdGUKLXsKLSAgICBy
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKQotICAgIHsKLSAgICAgICAgdGhpcy5ydW5UZXN0Q2FzZXMo
KTsKLSAgICAgICAgdGhpcy5faGFybmVzcy5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci0KLSAgICBy
dW5UZXN0Q2FzZXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnRlc3RjYXNlcy5sZW5ndGgp
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNhbGwgcnVuVGVzdENhc2Vz
KCkgZm9yIHN1aXRlIHdpdGggbm8gdGVzdCBjYXNlcyIpOwotICAgICAgICBpZiAodGhpcy5fc3Rh
cnRlZFJ1bm5pbmcpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNhbGwg
cnVuVGVzdENhc2VzKCkgbW9yZSB0aGFuIG9uY2UuIik7Ci0KLSAgICAgICAgdGhpcy5fc3RhcnRl
ZFJ1bm5pbmcgPSB0cnVlOwotCi0gICAgICAgIHRoaXMuX2hhcm5lc3MubG9nKCIiKTsKLSAgICAg
ICAgdGhpcy5faGFybmVzcy5sb2coIj09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogIiArIHRoaXMubmFt
ZSk7Ci0KLSAgICAgICAgbGV0IHByaW9yTG9nQ291bnQgPSB0aGlzLl9oYXJuZXNzLmxvZ0NvdW50
OwotICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dGhpcy50ZXN0Y2FzZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCB0ZXN0Y2FzZSA9
IHRoaXMudGVzdGNhc2VzW2ldOwotICAgICAgICAgICAgaWYgKGkgPiAwICYmIHByaW9yTG9nQ291
bnQgKyAxIDwgdGhpcy5faGFybmVzcy5sb2dDb3VudCkKLSAgICAgICAgICAgICAgICB0aGlzLl9o
YXJuZXNzLmxvZygiIik7Ci0KLSAgICAgICAgICAgIHByaW9yTG9nQ291bnQgPSB0aGlzLl9oYXJu
ZXNzLmxvZ0NvdW50OwotCi0gICAgICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6ICIgKyB0ZXN0Y2FzZS5uYW1lKTsKLSAgICAgICAgICAgIHNlbGYucnVuQ291
bnQrKzsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRl
c3RjYXNlLnRlc3QuY2FsbChudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBm
YWxzZSkgewotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxDb3VudCsrOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIHNlbGYuZmFpbENvdW50Kys7Ci0gICAgICAg
ICAgICAgICAgbGV0IG1lc3NhZ2UgPSBlOwotICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNl
b2YgRXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlLm1lc3NhZ2U7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBlID0gbmV3IEVycm9yKGUpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSAic3RyaW5nIikKLSAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOwotCi0gICAg
ICAgICAgICAgICAgdGhpcy5faGFybmVzcy5sb2coIiEhIEVYQ0VQVElPTjogIiArIG1lc3NhZ2Up
OwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0U3R1Yi5odG1sIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdFN0dWIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgzMTU5MzNlOWFjZjdkNGY1YjE4YzhlMWRjMmJlMTgzZmQ3YThmMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0U3R1Yi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0KLTEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLTIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLUxP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS0tPgotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KLSAgICA8IS0tCi0gICAgVGhlc2UgcmVzb3VyY2VzIHNob3VsZCBtYXRjaCB0aGUgb3JkZXIg
YW5kIGdyb3VwcyB1c2VkIGluIE1haW4uaHRtbCBhbmQgVGVzdC5odG1sLgotICAgIC0tPgotICAg
IDxzY3JpcHQgc3JjPSJCYXNlL1dlYkluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KLQotICAgIDxzY3JpcHQgc3JjPSJUZXN0
L1Rlc3RTdWl0ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVzdEhhcm5l
c3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJUZXN0L1Byb3RvY29sVGVzdEhhcm5l
c3MuanMiPjwvc2NyaXB0PgotCi0gICAgPHNjcmlwdCBzcmM9IlRlc3QvSW5zcGVjdG9yUHJvdG9j
b2wuanMiPjwvc2NyaXB0PgotCi0gICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVzdFN0dWIuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIC8vIE5vdCByZWxpYWJsZSB1bmxlc3MgY29u
c29sZSBtZXNzYWdlcyBhcmUgZHVtcGVkIHRvIGNvbnNvbGUuIFNlZSB3aWtpIGZvciBkZXRhaWxz
LgotICAgICAgICBQcm90b2NvbFRlc3QuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBm
YWxzZTsKLQotICAgICAgICAvLyBTeW5jaHJvbm91cyBsb2dnaW5nIG1heSBwcm9kdWNlIG1vcmUg
b3V0cHV0IHByaW9yIHRvIGEgdGltZW91dC4KLSAgICAgICAgUHJvdG9jb2xUZXN0LmZvcmNlU3lu
Y0RlYnVnTG9nZ2luZyA9IGZhbHNlOwotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJhNDc1
NGFlNzhjY2RhZmZhZmFmNGIxYTlhNjBhMTUzNzkxNTMwMDkuLmRkYzUwNDVlMzljY2FmMGE0NzJm
NzAyNTBiYTFiM2UzODNkODY1OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wOC0xNyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE4ODUzOSwgcjE4ODU0NCwgcjE4ODU1MiwgYW5kCisgICAgICAgIHIxODg1NjQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxMjIKKwor
ICAgICAgICBCcm9rZSB0ZXN0cyBhbmQgc29tZSBidWlsZCBzdHlsZXMgKFJlcXVlc3RlZCBieSBh
cCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgor
CisgICAgICAgICJXZWIgSW5zcGVjdG9yOiBsb2FkIFByb3RvY29sVGVzdFN0dWIgZnJvbSB0aGUg
V2ViSW5zcGVjdG9yVUkKKyAgICAgICAgYnVuZGxlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTU1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzE4ODUzOQorCisgICAgICAgICJXZWIgSW5zcGVjdG9yOiBzcGxpdCBU
ZXN0U3R1Yi5qcyBpbnRvIG11bHRpcGxlIGZpbGVzIGFuZAorICAgICAgICBtb2Rlcm5pemUgaXQi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwNzcK
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg4NTQ0CisKKyAgICAg
ICAgIldlYiBJbnNwZWN0b3I6IEluc3BlY3RvclRlc3Qgc2hvdWxkIGJlIGEgc3ViY2xhc3Mgb2YK
KyAgICAgICAgVGVzdEhhcm5lc3MiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwNzkKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTg4NTUyCisKKyAgICAgICAgIlVucmV2aWV3ZWQgaW50ZXJuYWwgYnVpbGQgZml4IGF0
dGVtcHQgYWZ0ZXIgcjE4ODUzOS4iCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE4ODU2NAorCiAyMDE1LTA4LTE3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW09TIFhdIFJlbW92ZSBzdXBwb3J0IGZvciBjb21wb3Np
dGUgZm9udHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggODE0ZmRhNGUwMDg0
NjQ5YjY2NjE0MDM5NDk3ZDM5ZDVjOTgzYzBiNi4uOTUxNDBkMjZhMjFjMmJjYzFlOTQyYTMxNGVm
OWNiZGM2ZTc5NTNiOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTE3OTAs
MTMgKzE3OTAsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaXRsZVRleHREaXJlY3Rpb25DYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZQogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0LCB0aXRsZURpcmVjdGlvbi5nZXQoKSk7CiB9CiAKLXN0YXRpYyBK
U1ZhbHVlUmVmIGdldEluc3BlY3RvclRlc3RTdHViVVJMQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
LSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdXJsKEFkb3B0LCBjb250cm9sbGVyLT5pbnNw
ZWN0b3JUZXN0U3R1YlVSTCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4
dCwgdXJsLmdldCgpKTsKLX0KLQogc3RhdGljIGJvb2wgc2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xOTkwLDcgKzE5ODMsNiBAQCBKU1N0
YXRpY1ZhbHVlKiBUZXN0UnVubmVyOjpzdGF0aWNWYWx1ZXMoKQogICAgICAgICB7ICJ0aXRsZVRl
eHREaXJlY3Rpb24iLCBnZXRUaXRsZVRleHREaXJlY3Rpb25DYWxsYmFjaywgMCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJkYXRhYmFzZURlZmF1bHRRdW90YSIsIGdldERhdGFiYXNlRGVmYXVsdFF1b3Rh
Q2FsbGJhY2ssIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJkYXRhYmFzZU1heFF1b3RhIiwgZ2V0RGF0YWJhc2VN
YXhRdW90YUNhbGxiYWNrLCBzZXREYXRhYmFzZU1heFF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJpbnNwZWN0b3JUZXN0U3R1YlVSTCIsIGdldElu
c3BlY3RvclRlc3RTdHViVVJMQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAw
LCAwIH0KICAgICB9OwogICAgIHJldHVybiBzdGF0aWNWYWx1ZXM7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKaW5kZXggYWI3NzlhZTBmMTIxMmUzODNlYjc5NjljMTkwYTI4ZmU4N2U5NmMxMS4u
OGU2ZDc0MTI4NTcwYmNhM2I1Y2QzMjgxYThjZGMxYTUyMGQzNjY0ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuaApAQCAtMzA4LDggKzMwOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dX
ZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgdm9pZCBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKEpTU3RyaW5nUmVmIHNjcmlwdCk7Ci0gICAgSlNTdHJpbmdS
ZWYgaW5zcGVjdG9yVGVzdFN0dWJVUkwoKTsKLQogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklz
b2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0LCBK
U1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29y
bGRBbmRSZXR1cm5WYWx1ZSh1bnNpZ25lZCB3b3JsZElELCBKU09iamVjdFJlZiBnbG9iYWxPYmpl
Y3QsIEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0KaW5kZXggZTM1NmRlM2Q1OGM3M2ZiMDk2OGM5YzRkMjAzYzE3ZDlkOGVmYTJm
Yi4uZjJjYjQxMDU3YWY0MjI5NDgyZmRmZTUwNjRkMTMwNDVjMmU4YWZlZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTQzLDcgKzQzLDYgQEAKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZkNGLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24u
aD4KLSNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01E
b2N1bWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYktp
dC9ET01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5oPgpAQCAtODksOCArODgsNiBAQAogI2ltcG9y
dCA8V2ViS2l0L1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmg+CiAjZW5kaWYKIAotU09GVF9MSU5L
X1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQot
CiAjaWYgIVBMQVRGT1JNKElPUykKIEBpbnRlcmZhY2UgQ29tbWFuZFZhbGlkYXRpb25UYXJnZXQg
OiBOU09iamVjdCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4KIHsKQEAgLTc4MywyMyAr
NzgwLDYgQEAgdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKEpTU3RyaW5n
UmVmIHNjcmlwdCkKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gaW5zcGVjdG9yXSBldmFsdWF0
ZUluRnJvbnRlbmQ6bmlsIHNjcmlwdDpzY3JpcHROU107CiB9CiAKLUpTU3RyaW5nUmVmIFRlc3RS
dW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkKLXsKLSAgICAvLyBDYWxsIHRoZSBzb2Z0IGxp
bmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBDRkJ1bmRsZUdldEJ1bmRs
ZVdpdGhJZGVudGlmaWVyIHdpbGwgd29yay4KLSAgICBXZWJJbnNwZWN0b3JVSUxpYnJhcnkoKTsK
LQotICAgIENGQnVuZGxlUmVmIGluc3BlY3RvckJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0
aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSIpKTsKLSAgICBpZiAo
IWluc3BlY3RvckJ1bmRsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoaW5zcGVj
dG9yQnVuZGxlLCBDRlNUUigiVGVzdFN0dWIiKSwgQ0ZTVFIoImh0bWwiKSwgTlVMTCkpOwotICAg
IGlmICghdXJsKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENGU3RyaW5nUmVmIHVy
bFN0cmluZyA9IENGVVJMR2V0U3RyaW5nKHVybC5nZXQoKSk7Ci0gICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKHVybFN0cmluZyk7Ci19Ci0KIHR5cGVkZWYgSGFzaE1hcDx1bnNp
Z25lZCwgUmV0YWluUHRyPFdlYlNjcmlwdFdvcmxkPiA+IFdvcmxkTWFwOwogc3RhdGljIFdvcmxk
TWFwJiB3b3JsZE1hcCgpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKaW5kZXggNWEyOWVlNjYxNTU3MzA4MmQ0Y2EzZTYzM2Q2YTY5ZGIzOGY1ZmYwZi4uZWE0
ZGFlZGU0MmM4MGM2MzA2YTI0YWM1NzM0NjVmZmY1YWQwNzc0ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtMTA5MywxNSArMTA5Myw2IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3RvcihKU1N0cmluZ1JlZiBzY3JpcHQpCiAg
ICAgaW5zcGVjdG9yUHJpdmF0ZS0+ZXZhbHVhdGVJbkZyb250ZW5kKGJzdHJUKHNjcmlwdCkuR2V0
QlNUUigpKTsKIH0KIAotSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJV
UkwoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBzdXBwb3J0IFdlYiBJbnNw
ZWN0b3IgdGVzdHMgdXNpbmcgYHByb3RvY29sLXRlc3QuanNgLgotICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDI1LgotICAgIHByaW50ZigiRVJS
T1I6IFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkgbm90IGltcGxlbWVudGVkXG4i
KTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQs
IENPTVB0cjxJV2ViU2NyaXB0V29ybGQ+ID4gV29ybGRNYXA7CiBzdGF0aWMgV29ybGRNYXAmIHdv
cmxkTWFwKCkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDFiMzA3NTkwYzE3Njkx
OWY4MTBhMjgwMzY2MGFlZDFmYTJmNTEyYWQuLjI2MjU0NDM5MjhhM2FjOWQ1OGFmOTAzNjUxNDYw
ODMyMGJkMDU5OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTI1LDcgKzEyNSw2
IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNob3dXZWJJbnNwZWN0b3IoKTsK
ICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgdm9pZCBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKERPTVN0cmluZyBzY3JpcHQpOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgaW5zcGVjdG9yVGVzdFN0dWJVUkw7CiAKICAgICB2b2lkIHNldFBPU0lYTG9jYWxlKERPTVN0
cmluZyBsb2NhbGUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDgxZDYyYjYxOTYwM2E3OTRmNTU5MTAyMGI5ZDBhYWJj
YjJhOWQ0NzEuLjQxNDA2YjMxNjgxMDU0NjM2NDM3YzE2MzBjYTcxMWU1YzQ5YTM0NjcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CkBAIC0xOTksNyArMTk5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1dlYkluc3BlY3Rvcigp
OwogICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICB2b2lkIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IoSlNTdHJpbmdSZWYgc2NyaXB0KTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gaW5zcGVjdG9yVGVzdFN0dWJVUkwoKTsKIAogICAgIHZvaWQgc2V0UE9TSVhMb2NhbGUoSlNT
dHJpbmdSZWYpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDk5NjMxOGI1Y2Q0NTIyMjg2
MmE4Y2E2ZDA5MGVhODYyZmU0YTY0YmQuLmNiYzA3MGIzYThmZmYzNTFmN2YxN2IxNGM1YzA1YTU2
NTkzNzJlZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0yMyw5ICsyMyw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FZmxJbnNw
ZWN0b3JVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTg0LDE0ICs4Miw0IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5nUmVmIHVy
bCkKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZnVsbFBhdGhUb1Vy
bC51dGY4KCkuZGF0YSgpKTsKIH0KIAotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5u
ZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgYnVpbGRlci5hcHBlbmQoImZpbGU6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChXZWJD
b3JlOjppbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIvVGVzdFN0dWIuaHRtbCIpOwotCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2d0ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGRhYWRlMzQzYjUwMmNiYWEyMTJh
MmQzNmYyZGNkMjBhZmRlZDBkMzUuLjZhMzZlZTc1ODkwNjgyYWJkMjE4MTkwYmI2NGIyNjRmZjk1
NTgzN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Z3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBAIC02Nyw5ICs2Nyw0IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5n
UmVmIHVybCkKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGVzdFVS
SS5nZXQoKSk7CiB9CiAKLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjppbnNw
ZWN0b3JUZXN0U3R1YlVSTCgpCi17Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJyZXNvdXJjZTovLy9vcmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Vc2VySW50ZXJmYWNl
L1Rlc3RTdHViLmh0bWwiKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVyTWFjLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQppbmRleCBlMjQ1Y2UwMjE1NDY0MmNjMjU4NjEyNTNlYWU2MzJmNGQyMTI5YTkzLi4yM2Y1
YjY5MDUxNmU5YjgxYzZjM2EwYTY3YjA0ZmMzOTRkMjNjNzkzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KQEAgLTIzLDE0ICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIAog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWZDRi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KLQotU09GVF9M
SU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBB
KQogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNjcsMjEgKzYyLDQgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJpbmdSZWYgdXJs
KQogICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9uIG1hYy4K
IH0KIAotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RT
dHViVVJMKCkKLXsKLSAgICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9u
IHRvIGRsb3BlbiBpdCwgdGhlbiBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyIHdpbGwg
d29yay4KLSAgICBXZWJJbnNwZWN0b3JVSUxpYnJhcnkoKTsKLQotICAgIENGQnVuZGxlUmVmIGlu
c3BlY3RvckJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNv
bS5hcHBsZS5XZWJJbnNwZWN0b3JVSSIpKTsKLSAgICBpZiAoIWluc3BlY3RvckJ1bmRsZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFk
b3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwoaW5zcGVjdG9yQnVuZGxlLCBDRlNUUigiVGVz
dFN0dWIiKSwgQ0ZTVFIoImh0bWwiKSwgTlVMTCkpOwotICAgIGlmICghdXJsKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIENGU3RyaW5nUmVmIHVybFN0cmluZyA9IENGVVJMR2V0U3Ry
aW5nKHVybC5nZXQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKHVybFN0cmluZykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDZiOGNl
ZjIwMzJmYWMwNDUwNzU4NmUyMmIxMmZkNGIxMGFhNTFhLi4zYTJlY2M5NGYxZWZmNzkzZGJiY2E4
OGI2ZGM3NmYxM2I5OWEwMzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTUtMDgtMTcgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxODg1MzksIHIxODg1NDQsIHIxODg1NTIsIGFuZAorICAgICAgICBy
MTg4NTY0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4MTIyCisKKyAgICAgICAgQnJva2UgdGVzdHMgYW5kIHNvbWUgYnVpbGQgc3R5bGVzIChSZXF1
ZXN0ZWQgYnkgYXAgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hh
bmdlc2V0czoKKworICAgICAgICAiV2ViIEluc3BlY3RvcjogbG9hZCBQcm90b2NvbFRlc3RTdHVi
IGZyb20gdGhlIFdlYkluc3BlY3RvclVJCisgICAgICAgIGJ1bmRsZSIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzk1NQorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xODg1MzkKKworICAgICAgICAiV2ViIEluc3BlY3Rv
cjogc3BsaXQgVGVzdFN0dWIuanMgaW50byBtdWx0aXBsZSBmaWxlcyBhbmQKKyAgICAgICAgbW9k
ZXJuaXplIGl0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MDc3CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4ODU0
NAorCisgICAgICAgICJXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JUZXN0IHNob3VsZCBiZSBhIHN1
YmNsYXNzIG9mCisgICAgICAgIFRlc3RIYXJuZXNzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDc5CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzE4ODU1MgorCisgICAgICAgICJVbnJldmlld2VkIGludGVybmFsIGJ1
aWxkIGZpeCBhdHRlbXB0IGFmdGVyIHIxODg1MzkuIgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xODg1NjQKKwogMjAxNS0wOC0xNyAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIE91dGxpbmUgd2l0aCBhdXRvIHN0eWxlIGxlYXZlcyBi
aXRzIGJlaGluZCB3aGVuIHRoZSB0aGUgYm94IGlzIG1vdmVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNmFiM2RlMzE3NmY4YmVlMGQ0NjljZjEyMmFmYjZlNTM2MjRjYTYxNC4uN2U3ODE5OTVkYWIy
NmUwNDk0YzU3Y2RkYjgxMTVkYmIwYTQzMWJjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC05NCw5
ICs5NCw2IEBAIHdlYmtpdC5vcmcvYi84MzYxOCBmYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmli
dXRlcy1yZWxlYXNlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzEyOTA1NyBtZWRp
YS9jb250cm9scy1zdHlsaW5nLXN0cmljdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyBUaGVz
ZSB0ZXN0cyB3aWxsIGJlIHJld3JpdHRlbiwganVzdCBza2lwIHRoZW0gdW50aWwgdGhhdCB0aW1l
Lgotd2Via2l0Lm9yZy9iLzE0ODAzNiBodHRwL3Rlc3RzL2luc3BlY3Rvci8gWyBTa2lwIF0KLQog
d2Via2l0Lm9yZy9iLzEyOTYzOSBpbnNwZWN0b3IvZG9tL2RvbS1zZWFyY2gtY3Jhc2guaHRtbCBb
IFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTMzNzYxIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LWFjdGlvbi1kZXRhY2guaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKaW5kZXgg
NzRkYTkyZTg2MWYxZmNkMGI2YjQwODVmYWQzZmM2MjM0MWFkYzM2Mi4uZDEwMjU1ODcwYTE5NTYx
ZDc5NmVmODhmMmQ4NTk2MDA5MDM0ZTI0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xLDQg
KzEsNCBAQAotVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKK0luc3Bl
Y3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgewogCiBJbnNwZWN0
b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzID0gZnVuY3Rpb24oKQogewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9JbnNwZWN0
b3JET01MaXN0ZW5lci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9y
ZXNvdXJjZXMvSW5zcGVjdG9yRE9NTGlzdGVuZXIuanMKaW5kZXggYThlMDIxZTYwMzU4M2Y5MWMw
ZWZlZjcwNzgwYWJlODFiYmUyNjY1Ny4uNWQxOWZhMTM5MGM4YTc4ZmVjNmFhOTNlZjEyMTdmOWY0
Mjg1MTY5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9t
L3Jlc291cmNlcy9JbnNwZWN0b3JET01MaXN0ZW5lci5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kb20vcmVzb3VyY2VzL0luc3BlY3RvckRPTUxpc3RlbmVyLmpzCkBA
IC0yNyw5ICsyNyw3IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi1UZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyKGZ1bmN0aW9uKCl7Ci0KLXdpbmRvdy5jcmVhdGVET01MaXN0ZW5lciA9IGZ1
bmN0aW9uKCkKK2Z1bmN0aW9uIGNyZWF0ZURPTUxpc3RlbmVyKCkKIHsKICAgICB2YXIgbm9kZXNC
eUlkID0ge307CiAKQEAgLTEwMyw1ICsxMDEsMyBAQCB3aW5kb3cuY3JlYXRlRE9NTGlzdGVuZXIg
PSBmdW5jdGlvbigpCiAgICAgICAgIGNvbGxlY3ROb2RlOiBjb2xsZWN0Tm9kZQogICAgIH07CiB9
Ci0KLX0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9t
L3NoYXBlcy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3No
YXBlcy10ZXN0LmpzCmluZGV4IGJiYmVlYTk1NDVkNmI0NGRhNzUyYzIwMGQ5ZGNiY2ZiOTA2NmE0
ZDYuLmJjY2U5ZjE5YTM4Y2ZmY2I2OGZjZTNjZDJiZDkyNWMwNWY1M2YwMzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKQEAg
LTEsNCArMSw0IEBACi1UZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgewor
SW5zcGVjdG9yVGVzdFByb3h5LnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAKIElu
c3BlY3RvclRlc3QuU2hhcGVzID0gewogICAgIGdldFNoYXBlT3V0c2lkZUluZm9Gb3JTZWxlY3Rv
cjogZnVuY3Rpb24oc2VsZWN0b3IsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzCmluZGV4IGM4ZjRhODM5
ZGVkMGU3Y2Y1ODMxOGJiMjgwYzQ0ODM2ZjRlYzAzMmMuLjMzM2Q3ODM0M2Q1ZWY3NDY5YWJhMDkx
MjhhMGJhZTdmNDRjMTgwNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanMKQEAgLTEsNCArMSw0IEBACi1UZXN0UGFn
ZS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgeworSW5zcGVjdG9yVGVzdFByb3h5LnJl
Z2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAKIEluc3BlY3RvclRlc3QuUmVwbGF5ID0g
e307CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9Qcm90b2NvbFRlc3RTdHViLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvUHJvdG9jb2xUZXN0U3R1Yi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMjNjZTgw
NzhjYjc5YTU3ODFiNzg4OGI4ZTQ0ZDlmNTViMjQ4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvUHJvdG9jb2xUZXN0U3R1Yi5o
dG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhLS0KK0NvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBt
ZXQ6CisKKzEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyhJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKK0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm90b2NvbFRlc3RTdHViLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9Qcm90b2NvbFRlc3RTdHViLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL1Byb3RvY29sVGVzdFN0dWIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2U3YWQ5ODRlNDgzNmM2YmY2NmM5ZjcxMzk3ODUyMWNiMWRkNWUxNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9Qcm90b2NvbFRl
c3RTdHViLmpzCkBAIC0wLDAgKzEsNDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCitJbnNwZWN0b3JG
cm9udGVuZEFQSSA9IHt9OworCitJbmplY3RlZFRlc3RIYXJuZXNzID0gY2xhc3MgSW5qZWN0ZWRU
ZXN0SGFybmVzcworeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xv
Z0NvdW50ID0gMDsKKyAgICAgICAgdGhpcy5mb3JjZVN5bmNEZWJ1Z0xvZ2dpbmcgPSBmYWxzZTsK
KyAgICB9CisKKyAgICBjb21wbGV0ZVRlc3QoKQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuIik7CisgICAgfQorCisgICAg
YWRkUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBpbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLiIpOworICAgIH0KKworICAgIGRlYnVnTG9nKCkKKyAgICB7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLiIpOworICAgIH0KKworICAgIGV2YWx1YXRlSW5QYWdlKHN0cmluZywgY2FsbGJhY2spCisg
ICAgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4iKTsKKyAgICB9CisKKyAgICBjcmVhdGVBc3luY1N1aXRlKG5hbWUpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IEluamVjdGVkVGVzdEhhcm5lc3MuQXN5bmNUZXN0U3VpdGUodGhp
cywgbmFtZSk7CisgICAgfQorCisgICAgY3JlYXRlU3luY1N1aXRlKG5hbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IEluamVjdGVkVGVzdEhhcm5lc3MuU3luY1Rlc3RTdWl0ZSh0aGlzLCBu
YW1lKTsKKyAgICB9CisKKyAgICBpbXBvcnRTY3JpcHQoc2NyaXB0TmFtZSkKKyAgICB7CisgICAg
ICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgdmFyIGlzQXN5bmNS
ZXF1ZXN0ID0gZmFsc2U7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBzY3JpcHROYW1lLCBpc0Fz
eW5jUmVxdWVzdCk7CisgICAgICAgIHhoci5zZW5kKG51bGwpOworICAgICAgICBpZiAoeGhyLnN0
YXR1cyAhPT0gMCAmJiB4aHIuc3RhdHVzICE9PSAyMDApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkludmFsaWQgc2NyaXB0IFVSTDogIiArIHNjcmlwdE5hbWUpOworICAgICAgICB2YXIg
c2NyaXB0ID0gYC8vIEZyb20gSW5qZWN0ZWRUZXN0SGFybmVzcy5pbXBvcnRTY3JpcHQoJHtzY3Jp
cHROYW1lfSkKK3RyeSB7CisgICAgJHt4aHIucmVzcG9uc2VUZXh0fQorfSBjYXRjaCAoZSkgewor
ICAgIGFsZXJ0KCR7SlNPTi5zdHJpbmdpZnkoIkVycm9yIGluOiAiICsgc2NyaXB0TmFtZSl9KTsK
KyAgICB0aHJvdyBlOworfWA7CisgICAgICAgIHdpbmRvdy5ldmFsKHNjcmlwdCk7CisgICAgfQor
CisgICAgZ2V0IGxvZ0NvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9sb2dDb3Vu
dDsKKyAgICB9CisKKyAgICBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgICsrdGhpcy5fbG9n
Q291bnQ7CisKKyAgICAgICAgaWYgKHRoaXMuZm9yY2VTeW5jRGVidWdMb2dnaW5nKQorICAgICAg
ICAgICAgdGhpcy5kZWJ1Z0xvZyhtZXNzYWdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGhpcy5hZGRSZXN1bHQobWVzc2FnZSk7CisgICAgfQorCisgICAgYXNzZXJ0KGNvbmRpdGlvbiwg
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIGlmIChjb25kaXRpb24pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlICE9
PSAib2JqZWN0IiA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKTsKKyAgICAgICAg
dGhpcy5hZGRSZXN1bHQoIkFTU0VSVDogIiArIHN0cmluZ2lmaWVkTWVzc2FnZSk7CisgICAgfQor
CisgICAgZXhwZWN0VGhhdChjb25kaXRpb24sIG1lc3NhZ2UpCisgICAgeworICAgICAgICBsZXQg
cHJlZml4ID0gY29uZGl0aW9uID8gIlBBU1MiIDogIkZBSUwiOworICAgICAgICBsZXQgc3RyaW5n
aWZpZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJvYmplY3QiID8gbWVzc2FnZSA6IEpT
T04uc3RyaW5naWZ5KG1lc3NhZ2UpOworICAgICAgICB0aGlzLmFkZFJlc3VsdChwcmVmaXggKyAi
OiAiICsgc3RyaW5naWZpZWRNZXNzYWdlKTsKKyAgICB9Cit9CisKK0luamVjdGVkVGVzdEhhcm5l
c3MuQXN5bmNUZXN0U3VpdGUgPSBjbGFzcyBBc3luY1Rlc3RTdWl0ZQoreworICAgIGNvbnN0cnVj
dG9yKGhhcm5lc3MsIG5hbWUpIHsKKyAgICAgICAgaWYgKCEoaGFybmVzcyBpbnN0YW5jZW9mIElu
amVjdGVkVGVzdEhhcm5lc3MpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IHBh
c3MgdGhlIHRlc3QncyBoYXJuZXNzIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4iKTsKKworICAgICAg
ICBpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICJzdHJpbmciKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJUcmllZCB0byBjcmVhdGUgQXN5bmNUZXN0U3VpdGUgd2l0aG91dCBzdHJp
bmcgc3VpdGUgbmFtZS4iKTsKKworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0
aGlzLl9oYXJuZXNzID0gaGFybmVzczsKKworICAgICAgICB0aGlzLnRlc3RjYXNlcyA9IFtdOwor
ICAgICAgICB0aGlzLnJ1bkNvdW50ID0gMDsKKyAgICAgICAgdGhpcy5mYWlsQ291bnQgPSAwOwor
ICAgIH0KKworICAgIGdldCBwYXNzQ291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cnVuQ291bnQgLSB0aGlzLmZhaWxDb3VudDsKKyAgICB9CisKKyAgICBnZXQgc2tpcENvdW50KCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLmZhaWxDb3VudCkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLnRlc3RjYXNlcy5sZW5ndGggLSB0aGlzLnJ1bkNvdW50OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBhZGRUZXN0Q2FzZSh0ZXN0Y2FzZSkKKyAg
ICB7CisgICAgICAgIGlmICghdGVzdGNhc2UgfHwgISh0ZXN0Y2FzZSBpbnN0YW5jZW9mIE9iamVj
dCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGFkZCBub24tb2JqZWN0
IHRlc3QgY2FzZS4iKTsKKworICAgICAgICBpZiAodHlwZW9mIHRlc3RjYXNlLm5hbWUgIT09ICJz
dHJpbmciKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUcmllZCB0byBhZGQgdGVzdCBj
YXNlIHdpdGhvdXQgYSBuYW1lLiIpOworCisgICAgICAgIGlmICh0eXBlb2YgdGVzdGNhc2UudGVz
dCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJpZWQgdG8g
YWRkIHRlc3QgY2FzZSB3aXRob3V0IGB0ZXN0YCBmdW5jdGlvbi4iKTsKKworICAgICAgICB0aGlz
LnRlc3RjYXNlcy5wdXNoKHRlc3RjYXNlKTsKKyAgICB9CisKKyAgICAvLyBVc2UgdGhpcyBpZiB0
aGUgdGVzdCBmaWxlIG9ubHkgaGFzIG9uZSBzdWl0ZSwgYW5kIG5vIGhhbmRsaW5nCisgICAgLy8g
b2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgcnVuVGVzdENhc2VzKCkgaXMgbmVlZGVkLgorICAg
IHJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpCisgICAgeworICAgICAgICBmdW5jdGlvbiBmaW5pc2go
KSB7CisgICAgICAgICAgICB0aGlzLl9oYXJuZXNzLmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5ydW5UZXN0Q2FzZXMoKQorICAgICAgICAgICAgLnRoZW4oZmluaXNo
LmJpbmQodGhpcykpCisgICAgICAgICAgICAuY2F0Y2goZmluaXNoLmJpbmQodGhpcykpOworICAg
IH0KKworICAgIHJ1blRlc3RDYXNlcygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudGVzdGNh
c2VzLmxlbmd0aCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJpZWQgdG8gY2FsbCBy
dW5UZXN0Q2FzZXMoKSBmb3Igc3VpdGUgd2l0aCBubyB0ZXN0IGNhc2VzIik7CisgICAgICAgIGlm
ICh0aGlzLl9zdGFydGVkUnVubmluZykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJp
ZWQgdG8gY2FsbCBydW5UZXN0Q2FzZXMoKSBtb3JlIHRoYW4gb25jZS4iKTsKKworICAgICAgICB0
aGlzLl9zdGFydGVkUnVubmluZyA9IHRydWU7CisKKyAgICAgICAgdGhpcy5faGFybmVzcy5sb2co
IiIpOworICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiPT0gUnVubmluZyB0ZXN0IHN1aXRlOiAi
ICsgdGhpcy5uYW1lKTsKKworICAgICAgICAvLyBBdm9pZCBhZGRpbmcgbmV3bGluZXMgaWYgbm90
aGluZyB3YXMgbG9nZ2VkLgorICAgICAgICB2YXIgcHJpb3JMb2dDb3VudCA9IHRoaXMuX2hhcm5l
c3MubG9nQ291bnQ7CisgICAgICAgIHZhciBzdWl0ZSA9IHRoaXM7CisgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzLnRlc3RjYXNlcy5yZWR1Y2UoZnVuY3Rpb24oY2hhaW4sIHRlc3RjYXNlLCBpKSB7
CisgICAgICAgICAgICByZXR1cm4gY2hhaW4udGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaSA+IDAgJiYgcHJpb3JMb2dDb3VudCArIDEgPCBzdWl0ZS5faGFybmVzcy5sb2dD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgc3VpdGUuX2hhcm5lc3MubG9nKCIiKTsKKworICAg
ICAgICAgICAgICAgIHByaW9yTG9nQ291bnQgPSBzdWl0ZS5faGFybmVzcy5sb2dDb3VudDsKKyAg
ICAgICAgICAgICAgICBzdWl0ZS5faGFybmVzcy5sb2coIi0tIFJ1bm5pbmcgdGVzdCBjYXNlOiAi
ICsgdGVzdGNhc2UubmFtZSk7CisgICAgICAgICAgICAgICAgc3VpdGUucnVuQ291bnQrKzsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVzdGNhc2UudGVzdCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpOworCisgICAgICAgIHJldHVy
biByZXN1bHQuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgc3VpdGUuZmFpbENvdW50
Kys7CisgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGU7CisgICAgICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIEVycm9yKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisKKyAg
ICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPT0gInN0cmluZyIpCisgICAgICAgICAgICAg
ICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOworCisgICAgICAgICAgICBzdWl0
ZS5faGFybmVzcy5sb2coIiEhIEVYQ0VQVElPTjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAg
dGhyb3cgZTsgLy8gUmVqZWN0IHRoaXMgcHJvbWlzZSBieSByZS10aHJvd2luZyB0aGUgZXJyb3Iu
CisgICAgICAgIH0pOworICAgIH0KK30KKworSW5qZWN0ZWRUZXN0SGFybmVzcy5TeW5jVGVzdFN1
aXRlID0gY2xhc3MgU3luY1Rlc3RTdWl0ZQoreworICAgIGNvbnN0cnVjdG9yKGhhcm5lc3MsIG5h
bWUpIHsKKyAgICAgICAgaWYgKCEoaGFybmVzcyBpbnN0YW5jZW9mIEluamVjdGVkVGVzdEhhcm5l
c3MpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IHBhc3MgdGhlIHRlc3QncyBo
YXJuZXNzIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4iKTsKKworICAgICAgICBpZiAoIW5hbWUgfHwg
dHlwZW9mIG5hbWUgIT09ICJzdHJpbmciKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJU
cmllZCB0byBjcmVhdGUgU3luY1Rlc3RTdWl0ZSB3aXRob3V0IHN0cmluZyBzdWl0ZSBuYW1lLiIp
OworCisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX2hhcm5lc3MgPSBo
YXJuZXNzOworCisgICAgICAgIHRoaXMudGVzdGNhc2VzID0gW107CisgICAgICAgIHRoaXMucnVu
Q291bnQgPSAwOworICAgICAgICB0aGlzLmZhaWxDb3VudCA9IDA7CisgICAgfQorCisgICAgZ2V0
IHBhc3NDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5ydW5Db3VudCAtIHRoaXMu
ZmFpbENvdW50OworICAgIH0KKworICAgIGdldCBza2lwQ291bnQoKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuZmFpbENvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMudGVzdGNhc2VzLmxl
bmd0aCAtIHRoaXMucnVuQ291bnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHRlc3RjYXNlKQorICAgIHsKKyAgICAgICAgaWYg
KCF0ZXN0Y2FzZSB8fCAhKHRlc3RjYXNlIGluc3RhbmNlb2YgT2JqZWN0KSkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVHJpZWQgdG8gYWRkIG5vbi1vYmplY3QgdGVzdCBjYXNlLiIpOwor
CisgICAgICAgIGlmICh0eXBlb2YgdGVzdGNhc2UubmFtZSAhPT0gInN0cmluZyIpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGFkZCB0ZXN0IGNhc2Ugd2l0aG91dCBhIG5h
bWUuIik7CisKKyAgICAgICAgaWYgKHR5cGVvZiB0ZXN0Y2FzZS50ZXN0ICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUcmllZCB0byBhZGQgdGVzdCBjYXNlIHdp
dGhvdXQgYHRlc3RgIGZ1bmN0aW9uLiIpOworCisgICAgICAgIHRoaXMudGVzdGNhc2VzLnB1c2go
dGVzdGNhc2UpOworICAgIH0KKworICAgIC8vIFVzZSB0aGlzIGlmIHRoZSB0ZXN0IGZpbGUgb25s
eSBoYXMgb25lIHN1aXRlLgorICAgIHJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpCisgICAgeworICAg
ICAgICB0aGlzLnJ1blRlc3RDYXNlcygpOworICAgICAgICB0aGlzLl9oYXJuZXNzLmNvbXBsZXRl
VGVzdCgpOworICAgIH0KKworICAgIHJ1blRlc3RDYXNlcygpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMudGVzdGNhc2VzLmxlbmd0aCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJp
ZWQgdG8gY2FsbCBydW5UZXN0Q2FzZXMoKSBmb3Igc3VpdGUgd2l0aCBubyB0ZXN0IGNhc2VzIik7
CisgICAgICAgIGlmICh0aGlzLl9zdGFydGVkUnVubmluZykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiVHJpZWQgdG8gY2FsbCBydW5UZXN0Q2FzZXMoKSBtb3JlIHRoYW4gb25jZS4iKTsK
KworICAgICAgICB0aGlzLl9zdGFydGVkUnVubmluZyA9IHRydWU7CisKKyAgICAgICAgdGhpcy5f
aGFybmVzcy5sb2coIiIpOworICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiAiICsgdGhpcy5uYW1lKTsKKworICAgICAgICB2YXIgcHJpb3JMb2dDb3VudCA9
IHRoaXMuX2hhcm5lc3MubG9nQ291bnQ7CisgICAgICAgIHZhciBzdWl0ZSA9IHRoaXM7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50ZXN0Y2FzZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIHZhciB0ZXN0Y2FzZSA9IHRoaXMudGVzdGNhc2VzW2ldOworICAgICAgICAgICAg
aWYgKGkgPiAwICYmIHByaW9yTG9nQ291bnQgKyAxIDwgdGhpcy5faGFybmVzcy5sb2dDb3VudCkK
KyAgICAgICAgICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiIik7CisKKyAgICAgICAgICAgIHBy
aW9yTG9nQ291bnQgPSB0aGlzLl9oYXJuZXNzLmxvZ0NvdW50OworCisgICAgICAgICAgICB0aGlz
Ll9oYXJuZXNzLmxvZygiLS0gUnVubmluZyB0ZXN0IGNhc2U6ICIgKyB0ZXN0Y2FzZS5uYW1lKTsK
KyAgICAgICAgICAgIHN1aXRlLnJ1bkNvdW50Kys7CisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIHZhciByZXN1bHQgPSB0ZXN0Y2FzZS50ZXN0LmNhbGwobnVsbCk7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Vp
dGUuZmFpbENvdW50Kys7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAg
c3VpdGUuZmFpbENvdW50Kys7CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlOworICAg
ICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBlID0gbmV3IEVycm9yKGUpOworCisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBt
ZXNzYWdlICE9PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEpTT04u
c3RyaW5naWZ5KG1lc3NhZ2UpOworCisgICAgICAgICAgICAgICAgdGhpcy5faGFybmVzcy5sb2co
IiEhIEVYQ0VQVElPTjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KK30KKworY2xhc3MgUHJvdG9jb2xUZXN0SGFybmVzcyBleHRlbmRzIEluamVjdGVkVGVzdEhh
cm5lc3MKK3sKKyAgICAvLyBJbmplY3RlZFRlc3RIYXJuZXNzIE92ZXJyaWRlcworCisgICAgY29t
cGxldGVUZXN0KCkKKyAgICB7CisgICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoImNsb3NlVGVz
dCgpOyIpOworICAgIH0KKworICAgIGFkZFJlc3VsdChtZXNzYWdlKQorICAgIHsKKyAgICAgICAg
Ly8gVW5mb3J0dW5hdGVseSwgZXZlcnkgc3RyaW5nIGFyZ3VtZW50IG11c3QgYmUgZXNjYXBlZCBi
ZWNhdXNlIHRlc3RzIGFyZSBub3QgY29uc2lzdGVudAorICAgICAgICAvLyB3aXRoIHJlc3BlY3Qg
dG8gZXNjYXBpbmcgd2l0aCBzaW5nbGUgb3IgZG91YmxlIHF1b3Rlcy4gU29tZSBleGNlcHRpb25z
IHVzZSBzaW5nbGUgcXVvdGVzLgorICAgICAgICB2YXIgc3RyaW5naWZpZWRNZXNzYWdlID0gdHlw
ZW9mIG1lc3NhZ2UgIT09ICJzdHJpbmciID8gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgOiBtZXNz
YWdlOworICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJsb2codW5lc2NhcGUoJyIgKyBlc2Nh
cGUoc3RyaW5naWZpZWRNZXNzYWdlKSArICInKSk7Iik7CisgICAgfQorCisgICAgZGVidWdMb2co
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBlb2Yg
bWVzc2FnZSAhPT0gInN0cmluZyIgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3NhZ2U7
CisgICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoImRlYnVnTG9nKHVuZXNjYXBlKCciICsgZXNj
YXBlKHN0cmluZ2lmaWVkTWVzc2FnZSkgKyAiJykpOyIpCisgICAgfQorCisgICAgZXZhbHVhdGVJ
blBhZ2UoZXhwcmVzc2lvbiwgY2FsbGJhY2spCisgICAgeworICAgICAgICBsZXQgYXJncyA9IHsK
KyAgICAgICAgICAgIG1ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLAorICAgICAgICAgICAgcGFy
YW1zOiB7ZXhwcmVzc2lvbn0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgY2FsbGJh
Y2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29t
bWFuZChhcmdzLCBjYWxsYmFjayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoYXJncyk7CisgICAgfQorfQorCit3aW5kb3cu
UHJvdG9jb2xUZXN0ID0gbmV3IFByb3RvY29sVGVzdEhhcm5lc3MoKTsKKworSW5zcGVjdG9yUHJv
dG9jb2wgPSB7fTsKK0luc3BlY3RvclByb3RvY29sLl9kaXNwYXRjaFRhYmxlID0gW107CitJbnNw
ZWN0b3JQcm90b2NvbC5fcmVxdWVzdElkID0gLTE7CitJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhh
bmRsZXIgPSB7fTsKKworSW5zcGVjdG9yUHJvdG9jb2wuZHVtcEluc3BlY3RvclByb3RvY29sTWVz
c2FnZXMgPSBmYWxzZTsKKworSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQgPSBmdW5jdGlv
bihtZXRob2RPck9iamVjdCwgcGFyYW1zLCBoYW5kbGVyKQoreworICAgIC8vIEFsbG93IG5ldy1z
dHlsZSBhcmd1bWVudHMgb2JqZWN0LCBhcyBpbiBhd2FpdENvbW1hbmQuCisgICAgdmFyIG1ldGhv
ZCA9IG1ldGhvZE9yT2JqZWN0OworICAgIGlmICh0eXBlb2YgbWV0aG9kT3JPYmplY3QgPT09ICJv
YmplY3QiKQorICAgICAgICB2YXIge21ldGhvZCwgcGFyYW1zLCBoYW5kbGVyfSA9IG1ldGhvZE9y
T2JqZWN0OworCisgICAgdGhpcy5fZGlzcGF0Y2hUYWJsZVsrK3RoaXMuX3JlcXVlc3RJZF0gPSBo
YW5kbGVyOworICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge21ldGhvZCwgcGFyYW1zLCAiaWQiOiB0
aGlzLl9yZXF1ZXN0SWR9OworICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2FnZU9iamVjdCk7CisK
KyAgICByZXR1cm4gdGhpcy5fcmVxdWVzdElkOworfQorCitJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQgPSBmdW5jdGlvbihhcmdzKQoreworICAgIHZhciB7bWV0aG9kLCBwYXJhbXN9ID0g
YXJnczsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoVGFibGVbKyt0aGlzLl9yZXF1ZXN0SWRdID0ge3Jlc29s
dmUsIHJlamVjdH07CisgICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge21ldGhvZCwgcGFyYW1z
LCAiaWQiOiB0aGlzLl9yZXF1ZXN0SWR9OworICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKG1lc3Nh
Z2VPYmplY3QpOworICAgIH0uYmluZCh0aGlzKSk7Cit9CisKK0luc3BlY3RvclByb3RvY29sLmF3
YWl0RXZlbnQgPSBmdW5jdGlvbihhcmdzKQoreworICAgIHZhciB7ZXZlbnR9ID0gYXJnczsKKyAg
ICBpZiAodHlwZW9mIGV2ZW50ICE9PSAic3RyaW5nIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFdmVudCBtdXN0IGJlIGEgc3RyaW5nLiIpOworCisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5ldmVu
dEhhbmRsZXJbZXZlbnRdID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAgICAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50XSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IHJlc29sdmUobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworSW5zcGVjdG9yUHJv
dG9jb2wuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50VHlwZU9yT2JqZWN0LCBsaXN0
ZW5lcikKK3sKKyAgICB2YXIgZXZlbnQgPSBldmVudFR5cGVPck9iamVjdDsKKyAgICBpZiAodHlw
ZW9mIGV2ZW50VHlwZU9yT2JqZWN0ID09PSAib2JqZWN0IikKKyAgICAgICAgdmFyIHtldmVudCwg
bGlzdGVuZXJ9ID0gZXZlbnRUeXBlT3JPYmplY3Q7CisKKyAgICBpZiAodHlwZW9mIGV2ZW50ICE9
PSAic3RyaW5nIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFdmVudCBuYW1lIG11c3QgYmUg
YSBzdHJpbmcuIik7CisKKyAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV2ZW50IGxpc3RlbmVyIG11c3QgYmUgY2FsbGFibGUu
Iik7CisKKyAgICAvLyBDb252ZXJ0IHRvIGFuIGFycmF5IG9mIGxpc3RlbmVycy4KKyAgICB2YXIg
bGlzdGVuZXJzID0gSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50XTsKKyAgICBp
ZiAoIWxpc3RlbmVycykKKyAgICAgICAgbGlzdGVuZXJzID0gSW5zcGVjdG9yUHJvdG9jb2wuZXZl
bnRIYW5kbGVyW2V2ZW50XSA9IFtdOworICAgIGVsc2UgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09
ICJmdW5jdGlvbiIpCisgICAgICAgIGxpc3RlbmVycyA9IEluc3BlY3RvclByb3RvY29sLmV2ZW50
SGFuZGxlcltldmVudF0gPSBbbGlzdGVuZXJzXTsKKworICAgIC8vIFByZXZlbnQgcmVnaXN0ZXJp
bmcgbXVsdGlwbGUgdGltZXMuCisgICAgaWYgKGxpc3RlbmVycy5pbmNsdWRlcyhsaXN0ZW5lcikp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIHRoZSBzYW1lIGxpc3Rl
bmVyIG1vcmUgdGhhbiBvbmNlLiIpOworCisgICAgbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpOwor
fQorCitJbnNwZWN0b3JQcm90b2NvbC5zZW5kTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmpl
Y3QpCit7CisgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBkZWJ1ZyBkdW1waW5nIGluIEluc3BlY3Rv
ckJhY2tlbmQsIHdoaWNoIGlzIGJ5cGFzc2VkCisgICAgLy8gYnkgSW5zcGVjdG9yUHJvdG9jb2wu
IFJldHVybiBtZXNzYWdlcyBzaG91bGQgYmUgZHVtcGVkIGJ5IEluc3BlY3RvckJhY2tlbmQuCisg
ICAgaWYgKEluc3BlY3RvclByb3RvY29sLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQor
ICAgICAgICBjb25zb2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdl
T2JqZWN0KSk7CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VUb0JhY2tl
bmQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOworfQorCitJbnNwZWN0b3JQcm90b2Nv
bC5jaGVja0ZvckVycm9yID0gZnVuY3Rpb24ocmVzcG9uc2VPYmplY3QpCit7CisgICAgaWYgKHJl
c3BvbnNlT2JqZWN0LmVycm9yKSB7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBST1RPQ09M
IEVSUk9SOiAiICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2VPYmplY3QuZXJyb3IpKTsKKyAgICAg
ICAgUHJvdG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB0aHJvdyAiUFJPVE9DT0wg
RVJST1IiOworICAgIH0KK30KKworSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdl
QXN5bmMgPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQoreworICAgIC8vIFRoaXMgbWF0Y2hlcyB0
aGUgZGVidWcgZHVtcGluZyBpbiBJbnNwZWN0b3JCYWNrZW5kLCB3aGljaCBpcyBieXBhc3NlZAor
ICAgIC8vIGJ5IEluc3BlY3RvclByb3RvY29sLiBSZXR1cm4gbWVzc2FnZXMgc2hvdWxkIGJlIGR1
bXBlZCBieSBJbnNwZWN0b3JCYWNrZW5kLgorICAgIGlmIChJbnNwZWN0b3JQcm90b2NvbC5kdW1w
SW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKKyAgICAgICAgY29uc29sZS5sb2coImJhY2tlbmQ6
ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7CisKKyAgICAvLyBJZiB0aGUgbWVz
c2FnZSBoYXMgYW4gaWQsIHRoZW4gaXQgaXMgYSByZXBseSB0byBhIGNvbW1hbmQuCisgICAgdmFy
IG1lc3NhZ2VJZCA9IG1lc3NhZ2VPYmplY3RbImlkIl07CisgICAgaWYgKHR5cGVvZiBtZXNzYWdl
SWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgIHZhciBoYW5kbGVyID0gSW5zcGVjdG9yUHJvdG9j
b2wuX2Rpc3BhdGNoVGFibGVbbWVzc2FnZUlkXTsKKyAgICAgICAgaWYgKCFoYW5kbGVyKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIGhhbmRsZXIobWVzc2FnZU9iamVjdCk7CisgICAgICAgIGVsc2Ug
aWYgKHR5cGVvZiBoYW5kbGVyID09PSAib2JqZWN0IikgeworICAgICAgICAgICAgdmFyIHtyZXNv
bHZlLCByZWplY3R9ID0gaGFuZGxlcjsKKyAgICAgICAgICAgIGlmICgiZXJyb3IiIGluIG1lc3Nh
Z2VPYmplY3QpCisgICAgICAgICAgICAgICAgcmVqZWN0KG1lc3NhZ2VPYmplY3QuZXJyb3IubWVz
c2FnZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdl
T2JqZWN0LnJlc3VsdCk7CisgICAgICAgIH0KKyAgICAvLyBPdGhlcndpc2UsIGl0IGlzIGFuIGV2
ZW50LgorICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBldmVudE5hbWUgPSBtZXNzYWdlT2JqZWN0
WyJtZXRob2QiXTsKKyAgICAgICAgdmFyIGhhbmRsZXIgPSBJbnNwZWN0b3JQcm90b2NvbC5ldmVu
dEhhbmRsZXJbZXZlbnROYW1lXTsKKyAgICAgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgICAgIGhhbmRsZXIobWVzc2FnZU9iamVjdCk7CisgICAgICAgIGVsc2UgaWYgKGhhbmRs
ZXIgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgaGFuZGxlci5tYXAoZnVuY3Rpb24o
bGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKG51bGwsIG1lc3NhZ2VP
YmplY3QpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhhbmRs
ZXIgPT09ICJvYmplY3QiKSB7CisgICAgICAgICAgICB2YXIge3Jlc29sdmUsIHJlamVjdH0gPSBo
YW5kbGVyOworICAgICAgICAgICAgaWYgKCJlcnJvciIgaW4gbWVzc2FnZU9iamVjdCkKKyAgICAg
ICAgICAgICAgICByZWplY3QobWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsK
KyAgICAgICAgfQorICAgIH0KK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBmdW5jdGlvbihldmVudCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoZXZlbnQuZGF0YSk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhbGVydChlLnN0YWNrKTsKKyAgICAgICAgUHJv
dG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB0aHJvdyBlOworICAgIH0KK30pOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb25zb2xlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10ZXN0LmpzCmluZGV4IGJlMzAy
MTRhZDhiY2YwNTNmMTcyNWUzMDZlMDM3ZTBhYzZhZmVkYmMuLjJkNGUzN2ZlMGE0ZmJmMGZmNjc0
NzgzOWJhNWJiYTc0MjUyZmE1OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9jb25zb2xlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbnNvbGUtdGVzdC5qcwpAQCAtMSw1ICsxLDMg
QEAKLVRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7Ci0KIFByb3RvY29s
VGVzdC5Db25zb2xlID0ge307CiAKIFByb3RvY29sVGVzdC5Db25zb2xlLnNhbml0aXplQ29uc29s
ZU1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQpAQCAtMzQsNyArMzIsNyBAQCBQcm90
b2NvbFRlc3QuQ29uc29sZS5zYW5pdGl6ZUNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24obWVzc2Fn
ZU9iamVjdCkKIAogUHJvdG9jb2xUZXN0LkNvbnNvbGUuYWRkVGVzdENhc2UgPSBmdW5jdGlvbihz
dWl0ZSwgYXJncykKIHsKLSAgICBpZiAoIShzdWl0ZSBpbnN0YW5jZW9mIEFzeW5jVGVzdFN1aXRl
KSkKKyAgICBpZiAoIShzdWl0ZSBpbnN0YW5jZW9mIEluamVjdGVkVGVzdEhhcm5lc3MuQXN5bmNU
ZXN0U3VpdGUpKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvbnNvbGUgdGVzdCBjYXNlcyBt
dXN0IGJlIGFkZGVkIHRvIGFuIGFzeW5jIHRlc3Qgc3VpdGUuIik7CiAKICAgICB2YXIge25hbWUs
IGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBleHBlY3RlZH0gPSBhcmdzOwpAQCAtNzUsNSArNzMs
MyBAQCBQcm90b2NvbFRlc3QuQ29uc29sZS5hZGRUZXN0Q2FzZSA9IGZ1bmN0aW9uKHN1aXRlLCBh
cmdzKQogICAgICAgICB9CiAgICAgfSk7CiB9Ci0KLX0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
CmluZGV4IDQ4ZGNlYTMyYmM1YzY4NTkzY2M1ZWI2OTM1OTY5ZDgxNzUxN2FiOTcuLjAyZGVhYjA0
ODViZDYwMDJlNTBkMjQwYjk1MTgyZTY0Mjg5NWMyYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAKIC8vIFRoaXMgbmFtZXNwYWNlIGlzIGluamVj
dGVkIGludG8gZXZlcnkgdGVzdCBwYWdlLiBJdHMgZnVuY3Rpb25zIGFyZSBpbnZva2VkIGJ5Ci0v
LyBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgb24gdGhlIGluc3BlY3RvciBwYWdlIHZpYSBhIFRlc3RI
YXJuZXNzIHN1YmNsYXNzLgotVGVzdFBhZ2UgPSB7fTsKLVRlc3RQYWdlLl9pbml0aWFsaXplcnMg
PSBbXTsKKy8vIEluc3BlY3RvclRlc3QgbWV0aG9kcyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2Ugdmlh
IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgpIGNhbGxzLgorSW5zcGVjdG9yVGVzdFByb3h5ID0ge307
CitJbnNwZWN0b3JUZXN0UHJveHkuX2luaXRpYWxpemVycyA9IFtdOwogCiAvLyBIZWxwZXIgc2Ny
aXB0cyBsaWtlIGBkZWJ1Z2dlci10ZXN0LmpzYCBtdXN0IHJlZ2lzdGVyIHRoZWlyIGluaXRpYWxp
emF0aW9uCiAvLyBmdW5jdGlvbiB3aXRoIHRoaXMgbWV0aG9kIHNvIGl0IHdpbGwgYmUgbWFyc2hh
bGxlZCB0byB0aGUgaW5zcGVjdG9yIHBhZ2UuCi1UZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVy
ID0gZnVuY3Rpb24oaW5pdGlhbGl6ZXIpCitJbnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJbml0
aWFsaXplciA9IGZ1bmN0aW9uKGluaXRpYWxpemVyKQogewogICAgIGlmICh0eXBlb2YgaW5pdGlh
bGl6ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVycy5wdXNoKGlu
aXRpYWxpemVyLnRvU3RyaW5nKCkpOwpAQCAtODcsNyArODcsNyBAQCBmdW5jdGlvbiBydW5UZXN0
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHZhciBjb2RlU3RyaW5nVG9FdmFsdWF0ZSA9ICIo
IiArIHJ1bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQudG9TdHJpbmcoKSArICIpKFsi
ICsgVGVzdFBhZ2UuX2luaXRpYWxpemVycyArICJdKTsiOworICAgIHZhciBjb2RlU3RyaW5nVG9F
dmFsdWF0ZSA9ICIoIiArIHJ1bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQudG9TdHJp
bmcoKSArICIpKFsiICsgSW5zcGVjdG9yVGVzdFByb3h5Ll9pbml0aWFsaXplcnMgKyAiXSk7IjsK
ICAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29kZVN0cmluZ1RvRXZhbHVh
dGUpOwogCiAgICAgLy8gYHRlc3RgIHJlZmVycyB0byBhIGZ1bmN0aW9uIGRlZmluZWQgaW4gZ2xv
YmFsIHNjb3BlIGluIHRoZSB0ZXN0IEhUTUwgcGFnZS4KQEAgLTk1LDcgKzk1LDcgQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNvZGVT
dHJpbmdUb0V2YWx1YXRlKTsKIH0KIAotVGVzdFBhZ2UuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24o
KQorSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKCkKIHsKICAgICAv
LyBEb24ndCB0cnkgdG8gdXNlIHRlc3RSdW5uZXIgaWYgcnVubmluZyB0aHJvdWdoIHRoZSBicm93
c2VyLgogICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCkBAIC0xMTIsMTMgKzExMiwxMyBAQCBU
ZXN0UGFnZS5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCiAKIC8vIExvZ3MgbWVzc2FnZSB0byB1
bmJ1ZmZlcmVkIHByb2Nlc3Mgc3Rkb3V0LCBhdm9pZGluZyB0aW1lb3V0cy4KIC8vIG9ubHkgYmUg
dXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90IHRvIHByb2R1Y2Ugbm9ybWFsIHRlc3Qgb3V0cHV0
LgotVGVzdFBhZ2UuZGVidWdMb2cgPSBmdW5jdGlvbihtZXNzYWdlKQorSW5zcGVjdG9yVGVzdFBy
b3h5LmRlYnVnTG9nID0gZnVuY3Rpb24obWVzc2FnZSkKIHsKICAgICB3aW5kb3cuYWxlcnQobWVz
c2FnZSk7CiB9CiAKIC8vIEFkZCBhbmQgY2xlYXIgdGVzdCBvdXRwdXQgZnJvbSB0aGUgcmVzdWx0
cyB3aW5kb3cuCi1UZXN0UGFnZS5hZGRSZXN1bHQgPSBmdW5jdGlvbih0ZXh0KQorSW5zcGVjdG9y
VGVzdFByb3h5LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCiB7CiAgICAgLy8gRm9yIGVhcmx5
IGVycm9ycyB0cmlnZ2VyZWQgd2hlbiBsb2FkaW5nIHRoZSB0ZXN0IHBhZ2UsIHdyaXRlIHRvIHN0
ZGVyci4KICAgICBpZiAoIWRvY3VtZW50LmJvZHkpIHsKQEAgLTEzNSwxMSArMTM1LDExIEBAIFRl
c3RQYWdlLmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCiAgICAgdGhpcy5fcmVzdWx0RWxlbWVu
dC5hcHBlbmQodGV4dCwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7CiB9CiAKLVRlc3RQ
YWdlLm5lZWRUb1Nhbml0aXplVW5jYXVnaHRFeGNlcHRpb25VUkxzID0gZmFsc2U7CitJbnNwZWN0
b3JUZXN0UHJveHkubmVlZFRvU2FuaXRpemVVbmNhdWdodEV4Y2VwdGlvblVSTHMgPSBmYWxzZTsK
IAotVGVzdFBhZ2UucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1
cmwsIGxpbmVOdW1iZXIpCitJbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5jYXVnaHRFeGNlcHRp
b24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIpCiB7Ci0gICAgaWYgKFRlc3RQ
YWdlLm5lZWRUb1Nhbml0aXplVW5jYXVnaHRFeGNlcHRpb25VUkxzKSB7CisgICAgaWYgKEluc3Bl
Y3RvclRlc3RQcm94eS5uZWVkVG9TYW5pdGl6ZVVuY2F1Z2h0RXhjZXB0aW9uVVJMcykgewogICAg
ICAgICBpZiAodHlwZW9mIHVybCA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgdmFyIGxhc3RT
bGFzaCA9IHVybC5sYXN0SW5kZXhPZigiLyIpOwogICAgICAgICAgICAgdmFyIGxhc3RCYWNrU2xh
c2ggPSB1cmwubGFzdEluZGV4T2YoIlxcIik7CkBAIC0xNTAsOSArMTUwLDkgQEAgVGVzdFBhZ2Uu
cmVwb3J0VW5jYXVnaHRFeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVOdW1i
ZXIpCiAgICAgfQogCiAgICAgdmFyIHJlc3VsdCA9ICJVbmNhdWdodCBleGNlcHRpb24gaW4gdGVz
dCBwYWdlOiAiICsgbWVzc2FnZSArICIgWyIgKyB1cmwgKyAiOiIgKyBsaW5lTnVtYmVyICsgIl0i
OwotICAgIFRlc3RQYWdlLmFkZFJlc3VsdChyZXN1bHQpOwotICAgIFRlc3RQYWdlLmNvbXBsZXRl
VGVzdCgpOworICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQocmVzdWx0KTsKKyAgICBJ
bnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0KCk7CiB9CiAKIC8vIENhdGNoIHN5bnRheCBl
cnJvcnMsIHR5cGUgZXJyb3JzLCBhbmQgb3RoZXIgZXhjZXB0aW9ucy4gUnVuIHRoaXMgYmVmb3Jl
IGxvYWRpbmcgb3RoZXIgZmlsZXMuCi13aW5kb3cub25lcnJvciA9IFRlc3RQYWdlLnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uOword2luZG93Lm9uZXJyb3IgPSBJbnNwZWN0b3JUZXN0UHJveHkucmVw
b3J0VW5jYXVnaHRFeGNlcHRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzCmluZGV4IGEzNTYxMmE3ZDI1ZDNh
ZTRhYThiNDUxNThjODNmMGE1Mzg0NWVhYjUuLjA1M2Y5ZjllNzgyMTk0MDMzMjZkYmVmZmM0MTVh
MGM3YjY3NTMzNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzCkBAIC0xLDUgKzEsMyBAQAotVGVzdFBhZ2Uu
cmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKLQogUHJvdG9jb2xUZXN0LlByb2JlID0g
e307CiAKIFByb3RvY29sVGVzdC5Qcm9iZS5zYW5pdGl6ZVByb2JlU2FtcGxlID0gZnVuY3Rpb24o
bWVzc2FnZU9iamVjdCkKQEAgLTEyNyw1ICsxMjUsMyBAQCBQcm90b2NvbFRlc3QuUHJvYmUuaW5z
dGFsbFRyYWNpbmdMaXN0ZW5lcnMgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJQcm9iZSBzZXQncyBwcm9iZSBjb3VudDogIiArIHByb2JlU2V0LnByb2Jlcy5sZW5ndGgp
OwogICAgIH0pOwogfQotCi19KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKaW5kZXggZDE1ZTM1Nzdl
YWMyY2Q2Yjg5YzMyODgwNjRmMDRlMTY0NDViNmQ5Yi4uZjg4MWQ0NzRlZDZlNTBmNGFiMGMyMTky
ZjdlMTBhOTFkOGI0ZThmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKQEAgLTIzLDM0ICsyMywy
NyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCit2YXIgb3V0cHV0RWxl
bWVudDsKIAotLy8gVGhpcyBuYW1lc3BhY2UgaXMgaW5qZWN0ZWQgaW50byBldmVyeSB0ZXN0IHBh
Z2UuIEl0cyBmdW5jdGlvbnMgYXJlIGludm9rZWQgYnkKLS8vIFByb3RvY29sVGVzdCBtZXRob2Rz
IG9uIHRoZSBpbnNwZWN0b3IgcGFnZSB2aWEgYSBUZXN0SGFybmVzcyBzdWJjbGFzcy4KLVRlc3RQ
YWdlID0ge307Ci1UZXN0UGFnZS5faW5pdGlhbGl6ZXJzID0gW107Ci0KLS8vIEhlbHBlciBzY3Jp
cHRzIGxpa2UgYGNvbnNvbGUtdGVzdC5qc2AgbXVzdCByZWdpc3RlciB0aGVpciBpbml0aWFsaXph
dGlvbgotLy8gZnVuY3Rpb24gd2l0aCB0aGlzIG1ldGhvZCBzbyBpdCB3aWxsIGJlIG1hcnNoYWxs
ZWQgdG8gdGhlIGluc3BlY3RvciBwYWdlLgotVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplciA9
IGZ1bmN0aW9uKGluaXRpYWxpemVyKQotewotICAgIGlmICh0eXBlb2YgaW5pdGlhbGl6ZXIgPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgIHRoaXMuX2luaXRpYWxpemVycy5wdXNoKGluaXRpYWxpemVy
LnRvU3RyaW5nKCkpOwotfTsKLQotbGV0IG91dHB1dEVsZW1lbnQ7Ci0KLVRlc3RQYWdlLmRlYnVn
TG9nID0gd2luZG93LmRlYnVnTG9nID0gZnVuY3Rpb24odGV4dCkKKy8qKgorICogTG9ncyBtZXNz
YWdlIHRvIHByb2Nlc3Mgc3Rkb3V0IHZpYSBhbGVydCAoaG9wZWZ1bGx5IGltcGxlbWVudGVkIHdp
dGggaW1tZWRpYXRlIGZsdXNoKS4KKyAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0CisgKi8KK2Z1bmN0
aW9uIGRlYnVnTG9nKHRleHQpCiB7CiAgICAgYWxlcnQodGV4dCk7Ci19OworfQogCi1UZXN0UGFn
ZS5sb2cgPSB3aW5kb3cubG9nID0gZnVuY3Rpb24odGV4dCkKKy8qKgorICogQHBhcmFtIHtzdHJp
bmd9IHRleHQKKyAqLworZnVuY3Rpb24gbG9nKHRleHQpCiB7CiAgICAgaWYgKCFvdXRwdXRFbGVt
ZW50KSB7Ci0gICAgICAgIGxldCBpbnRlcm1lZGlhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdmFyIGludGVybWVkaWF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGludGVybWVkaWF0
ZSk7CiAKLSAgICAgICAgbGV0IGludGVybWVkaWF0ZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdmFyIGludGVybWVkaWF0ZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgaW50ZXJtZWRpYXRlLmFwcGVuZENoaWxkKGludGVybWVkaWF0
ZTIpOwogCiAgICAgICAgIG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKQEAgLTYxLDkgKzU0LDkgQEAgVGVzdFBhZ2UubG9nID0gd2luZG93LmxvZyA9IGZ1bmN0
aW9uKHRleHQpCiAgICAgfQogICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUodGV4dCkpOwogICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Ci19OworfQogCi1UZXN0UGFnZS5jbG9zZVRlc3Qg
PSB3aW5kb3cuY2xvc2VUZXN0ID0gZnVuY3Rpb24oKQorZnVuY3Rpb24gY2xvc2VUZXN0KCkKIHsK
ICAgICB3aW5kb3cuaW50ZXJuYWxzLmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpOwogCkBA
IC03Miw1OSArNjUsMzkgQEAgVGVzdFBhZ2UuY2xvc2VUZXN0ID0gd2luZG93LmNsb3NlVGVzdCA9
IGZ1bmN0aW9uKCkKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKLX07Cit9CiAKLVRlc3RQYWdlLnJ1blRlc3Qg
PSB3aW5kb3cucnVuVGVzdCA9IGZ1bmN0aW9uKCkKK2Z1bmN0aW9uIHJ1blRlc3QoKQogewogICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgY29uc29sZS5lcnJvcigiVGhpcyB0
ZXN0IG11c3QgYmUgcnVuIHZpYSBEdW1wUmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLiIp
OworICAgICAgICBjb25zb2xlLmVycm9yKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRy
ZWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3ModHJ1ZSk7CiAKLSAgICBsZXQgdGVzdEZ1bmN0aW9uID0gd2luZG93LnRl
c3Q7Ci0gICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpIHsKLSAgICAg
ICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRlc3QoKSBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1bmN0
aW9uLiIpOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci0KLSAgICBs
ZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKLSAgICBpZiAoIXVybCkg
ewotICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBzdHViIFVS
TC4iKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCi0g
ICAgewotICAgICAgICBmb3IgKGxldCBpbml0aWFsaXplciBvZiBpbml0aWFsaXplcnMpIHsKLSAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIoKTsKLSAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJFeGNl
cHRpb24gaW4gdGVzdCBpbml0aWFsaXphdGlvbjogIiArIGUsIGUuc3RhY2sgfHwgIihubyBzdGFj
ayB0cmFjZSkiKTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuY29tcGxldGVUZXN0KCk7
Ci0gICAgICAgICAgICB9CisgICAgdmFyIHNjcmlwdFRhZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgic2NyaXB0Iik7CisgICAgdmFyIHNjcmlwdFVybEJhc2VQYXRoID0gIiI7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRUYWdzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBpbmRleCA9IHNjcmlwdFRhZ3NbaV0uc3JjLmxhc3RJbmRleE9mKCIvcHJvdG9jb2wtdGVz
dC5qcyIpOworICAgICAgICBpZiAoaW5kZXggPiAtMSApIHsKKyAgICAgICAgICAgIHNjcmlwdFVy
bEJhc2VQYXRoID0gc2NyaXB0VGFnc1tpXS5zcmMuc2xpY2UoMCwgaW5kZXgpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmdW5jdGlvbiBydW5UZXN0TWV0aG9k
SW5Gcm9udGVuZCh0ZXN0RnVuY3Rpb24pCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgdGVzdEZ1bmN0aW9uKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5sb2coIkV4Y2VwdGlvbiBkdXJpbmcgdGVzdCBleGVjdXRpb246ICIgKyBlLCBl
LnN0YWNrIHx8ICIobm8gc3RhY2sgdHJhY2UpIik7Ci0gICAgICAgICAgICBQcm90b2NvbFRlc3Qu
Y29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsZXQgaW5zcGVjdG9yRnJv
bnRlbmQgPSB3aW5kb3cuaW50ZXJuYWxzLm9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKHVybCk7
CisgICAgdmFyIHVybCA9IHNjcmlwdFVybEJhc2VQYXRoICsgIi9Qcm90b2NvbFRlc3RTdHViLmh0
bWwiOworICAgIHZhciBpbnNwZWN0b3JGcm9udGVuZCA9IHdpbmRvdy5pbnRlcm5hbHMub3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQodXJsKTsKICAgICBpbnNwZWN0b3JGcm9udGVuZC5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbGV0IGluaXRpYWxp
emF0aW9uQ29kZVN0cmluZyA9IGAoJHtydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250ZW5k
LnRvU3RyaW5nKCl9KShbJHtUZXN0UGFnZS5faW5pdGlhbGl6ZXJzfV0pO2A7Ci0gICAgICAgIGxl
dCB0ZXN0RnVuY3Rpb25Db2RlU3RyaW5nID0gYCgke3J1blRlc3RNZXRob2RJbkZyb250ZW5kLnRv
U3RyaW5nKCl9KSgke3Rlc3RGdW5jdGlvbi50b1N0cmluZygpfSk7YDsKLQotICAgICAgICBpbnNw
ZWN0b3JGcm9udGVuZC5wb3N0TWVzc2FnZShpbml0aWFsaXphdGlvbkNvZGVTdHJpbmcsICIqIik7
Ci0gICAgICAgIGluc3BlY3RvckZyb250ZW5kLnBvc3RNZXNzYWdlKHRlc3RGdW5jdGlvbkNvZGVT
dHJpbmcsICIqIik7CisgICAgICAgIC8vIEZJWE1FOiByZW5hbWUgdGhpcyAndGVzdCcgZ2xvYmFs
IGZpZWxkIGFjcm9zcyBhbGwgdGVzdHMuCisgICAgICAgIHZhciB0ZXN0RnVuY3Rpb24gPSB3aW5k
b3cudGVzdDsKKyAgICAgICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gPT09ICJmdW5jdGlvbiIp
IHsKKyAgICAgICAgICAgIGluc3BlY3RvckZyb250ZW5kLnBvc3RNZXNzYWdlKCIoIiArIHRlc3RG
dW5jdGlvbi50b1N0cmluZygpICsiKSgpOyIsICIqIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gS2lsbCB3YWl0aW5nIHByb2Nlc3MgaWYgZmFpbGVkIHRvIHNl
bmQuCisgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gc2VuZCB0ZXN0IGZ1bmN0aW9uIik7CisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0pOwotfTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtbWVzc2FnZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWwKaW5kZXggODIx
MTYwOTQ4ODFmMDJiNDc0MzdhYzhmNzZmZjc0ZTRlYTg3N2M3Yy4uOGZiM2Y5NmU2OTA5ZDNkNzE3
MzE2NjI5MzI1MTg5MjFiZmQ4MGQ3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWwKQEAgLTIsNyArMiw2IEBACiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9w
cm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiBmdW5jdGlvbiBnZW5lcmF0ZVNpbXBsZUNvbnNvbGVNZXNzYWdlcygpCiB7CkBAIC0xNSw2ICsx
NCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRlU2ltcGxlQ29uc29sZU1lc3NhZ2VzKCkKIAogZnVuY3Rp
b24gdGVzdCgpCiB7CisgICAgUHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCgiY29uc29sZS10ZXN0
LmpzIik7CiAKICAgICB2YXIgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
Q29uc29sZS5NZXNzYWdlc0Zyb21Db21tYW5kTGluZUFQSSIpOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jc3Mtc291cmNlLWxvY2F0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jc3Mtc291cmNlLWxvY2F0aW9ucy1l
eHBlY3RlZC50eHQKaW5kZXggZGZkMTQ0NGFmNGIwNWFkZGI4MjQ5OWI4MDY1YzdlNDk4ZmFkZmU5
NS4uOTVhNjM4ZGY1MDQzYjk3MTE4YzE0NDA0MTNiZDZhYTEzMTNlMWQ3YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY3NzLXNvdXJjZS1sb2NhdGlvbnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2Nzcy1zb3VyY2UtbG9j
YXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIFRlc3RzIHRoYXQgQ1NTIHBhcnNl
ciB3YXJuaW5ncyBmcm9tIGlubGluZSBzdHlsZSB0YWdzIGFuZCBleHRlcm5hbCBzdHlsZXNoZWV0
cyBhcmUgc2VudCB0byB0aGUgY29uc29sZSB3aXRoIGNvcnJlY3QgbGluZSBhbmQgY29sdW1uIGlu
Zm9ybWF0aW9uLgoteyJzb3VyY2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52
YWxpZCBDU1MgcHJvcGVydHkgZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6ImNzcy1zb3Vy
Y2UtbG9jYXRpb25zLmh0bWw6NzoyMCJ9Ci17InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2Fybmlu
ZyIsInRleHQiOiJJbnZhbGlkIENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0
aW9uIjoiY3NzLXNvdXJjZS1sb2NhdGlvbnMuaHRtbDo4OjE0In0KLXsic291cmNlIjoiY3NzIiwi
bGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6IkludmFsaWQgQ1NTIHByb3BlcnR5IGRlY2xhcmF0aW9u
IGF0OiAqIiwibG9jYXRpb24iOiJjc3Mtc291cmNlLWxvY2F0aW9ucy5odG1sOjk6NyJ9Ci17InNv
dXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlkIENTUyBwcm9wZXJ0
eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoiY3NzLXNvdXJjZS1sb2NhdGlvbnMuaHRt
bDoxMTo4In0KK3sic291cmNlIjoiY3NzIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6IkludmFs
aWQgQ1NTIHByb3BlcnR5IGRlY2xhcmF0aW9uIGF0OiAqIiwibG9jYXRpb24iOiJjc3Mtc291cmNl
LWxvY2F0aW9ucy5odG1sOjY6MjAifQoreyJzb3VyY2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmci
LCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkgZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlv
biI6ImNzcy1zb3VyY2UtbG9jYXRpb25zLmh0bWw6NzoxNCJ9Cit7InNvdXJjZSI6ImNzcyIsImxl
dmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlkIENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBh
dDogKiIsImxvY2F0aW9uIjoiY3NzLXNvdXJjZS1sb2NhdGlvbnMuaHRtbDo4OjcifQoreyJzb3Vy
Y2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkg
ZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6ImNzcy1zb3VyY2UtbG9jYXRpb25zLmh0bWw6
MTA6OCJ9CiB7InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlk
IENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoiZXJyb3JzLmNzczox
OjcifQogeyJzb3VyY2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBD
U1MgcHJvcGVydHkgZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6ImVycm9ycy5jc3M6MToy
OSJ9CiB7InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlkIENT
UyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoiZXJyb3JzLmNzczo0OjUi
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY3NzLXNvdXJjZS1s
b2NhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2Nzcy1zb3VyY2Ut
bG9jYXRpb25zLmh0bWwKaW5kZXggNTlkYzBlZWU5Mzg0OWQ3ZjMyZmM2Yzc5OWEyM2MwMWVmMDlj
YzI4OC4uZGFhYTBkYTU2OTkyZjQwNTM0YmFhZTkxM2NkYjhkMGM5MmVjMDgzOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY3NzLXNvdXJjZS1sb2NhdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jc3Mtc291cmNlLWxvY2F0aW9u
cy5odG1sCkBAIC0yLDcgKzIsNiBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2Nv
bnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9lcnJvcnMuY3NzIj4KICAgPHN0eWxlPiAgICBkaXYgeyAqIGNvbG9yOiByZWQ7IH08
L3N0eWxlPgogPHN0eWxlPmRpdiB7ICogY29sb3I6IHJlZDsgfQpAQCAtMTYsNiArMTUsOCBAQCBk
aXYgeyAqIGNvbG9yOiByZWQ7IH0KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBQ
cm90b2NvbFRlc3QuaW1wb3J0U2NyaXB0KCJjb25zb2xlLXRlc3QuanMiKTsKKwogICAgIHZhciBj
b25zb2xlTWVzc2FnZUNvdW50ID0gMDsKICAgICBjb25zdCBleHBlY3RlZENvbnNvbGVNZXNzYWdl
Q291bnQgPSA3OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9q
cy1zb3VyY2UtbG9jYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL2pzLXNvdXJjZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGMwZDc3YzViNWMw
YjhkMGEyMmY0NTExYjk4YTJlMTQ5NDNmMmJmMjAuLmQ5ZmU4NTg5MGJjZmE4M2M4OTU5YTIwMWRk
ZTA3MDYzODZkODE3MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
L2pzLXNvdXJjZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlL2pzLXNvdXJjZS1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0yLDE3ICsy
LDE3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBlcnJvciBzY3JpcHQKIENPTlNPTEUgTUVT
U0FHRTogbGluZSAxOiB3YXJuIHNjcmlwdAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IGVycm9y
IHNjcmlwdAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IHdhcm4gc2NyaXB0Ci1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNzogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnW10ueC54JykKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA5OiB3YXJuIDEKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA5OiBlcnJvciAxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IGVy
cm9yIDIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdbXS54LngnKQorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDg6IHdhcm4gMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IGVycm9yIDEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA5OiBlcnJvciAyCiBUZXN0cyB0aGF0IEphdmFTY3JpcHQgZXJyb3JzIGFuZCB3
YXJuaW5ncyBmcm9tIGlubGluZSBzY3JpcHQgdGFncyBhbmQgZXh0ZXJuYWwgZmlsZXMgYXJlIHNl
bnQgdG8gdGhlIGNvbnNvbGUgd2l0aCBjb3JyZWN0IGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlv
bi4KIHsic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6ImVycm9y
IHNjcmlwdCIsImxvY2F0aW9uIjoiZXJyb3JzLmpzOjE6MTQiLCJwYXJhbWV0ZXJzIjpbeyJ0eXBl
Ijoic3RyaW5nIn1dfQogeyJzb3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVsIjoid2FybmluZyIs
InRleHQiOiJ3YXJuIHNjcmlwdCIsImxvY2F0aW9uIjoiZXJyb3JzLmpzOjE6NDQiLCJwYXJhbWV0
ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1dfQogeyJzb3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVs
IjoiZXJyb3IiLCJ0ZXh0IjoiZXJyb3Igc2NyaXB0IiwibG9jYXRpb24iOiJlcnJvcnMuanM6NTox
OCIsInBhcmFtZXRlcnMiOlt7InR5cGUiOiJzdHJpbmcifV19CiB7InNvdXJjZSI6ImNvbnNvbGUt
YXBpIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6Indhcm4gc2NyaXB0IiwibG9jYXRpb24iOiJl
cnJvcnMuanM6NjoxNyIsInBhcmFtZXRlcnMiOlt7InR5cGUiOiJzdHJpbmcifV19Ci17InNvdXJj
ZSI6ImphdmFzY3JpcHQiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6IlR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ1tdLngueCcpIiwibG9jYXRpb24iOiJq
cy1zb3VyY2UtbG9jYXRpb25zLmh0bWw6NzoxOCJ9Ci17InNvdXJjZSI6ImNvbnNvbGUtYXBpIiwi
bGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6Indhcm4gMSIsImxvY2F0aW9uIjoianMtc291cmNlLWxv
Y2F0aW9ucy5odG1sOjk6MTMiLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1dfQoteyJz
b3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVsIjoiZXJyb3IiLCJ0ZXh0IjoiZXJyb3IgMSIsImxv
Y2F0aW9uIjoianMtc291cmNlLWxvY2F0aW9ucy5odG1sOjk6MzgiLCJwYXJhbWV0ZXJzIjpbeyJ0
eXBlIjoic3RyaW5nIn1dfQoteyJzb3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVsIjoiZXJyb3Ii
LCJ0ZXh0IjoiZXJyb3IgMiIsImxvY2F0aW9uIjoianMtc291cmNlLWxvY2F0aW9ucy5odG1sOjEw
OjE3IiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoiamF2YXNj
cmlwdCIsImxldmVsIjoiZXJyb3IiLCJ0ZXh0IjoiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnW10ueC54JykiLCJsb2NhdGlvbiI6ImpzLXNvdXJjZS1s
b2NhdGlvbnMuaHRtbDo2OjE4In0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6Indh
cm5pbmciLCJ0ZXh0Ijoid2FybiAxIiwibG9jYXRpb24iOiJqcy1zb3VyY2UtbG9jYXRpb25zLmh0
bWw6ODoxMyIsInBhcmFtZXRlcnMiOlt7InR5cGUiOiJzdHJpbmcifV19Cit7InNvdXJjZSI6ImNv
bnNvbGUtYXBpIiwibGV2ZWwiOiJlcnJvciIsInRleHQiOiJlcnJvciAxIiwibG9jYXRpb24iOiJq
cy1zb3VyY2UtbG9jYXRpb25zLmh0bWw6ODozOCIsInBhcmFtZXRlcnMiOlt7InR5cGUiOiJzdHJp
bmcifV19Cit7InNvdXJjZSI6ImNvbnNvbGUtYXBpIiwibGV2ZWwiOiJlcnJvciIsInRleHQiOiJl
cnJvciAyIiwibG9jYXRpb24iOiJqcy1zb3VyY2UtbG9jYXRpb25zLmh0bWw6OToxNyIsInBhcmFt
ZXRlcnMiOlt7InR5cGUiOiJzdHJpbmcifV19CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2pzLXNvdXJjZS1sb2NhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2pzLXNvdXJjZS1sb2NhdGlvbnMuaHRtbAppbmRleCBjODc4N2JmY2Jl
ODUxZDZiNDgwZjdlOWI3MWRiMzgyMTM5ODM2NjEwLi42MzBmZDhjMmVmMWNlNTQ5ZDc3MGE2MWZl
YjBmNTkyMjA3YTI5OGFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS9qcy1zb3VyY2UtbG9jYXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUvanMtc291cmNlLWxvY2F0aW9ucy5odG1sCkBAIC0yLDcgKzIsNiBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
cHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2Vycm9ycy5qcyI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQ+ICAgW10ueC54
ICAgPC9zY3JpcHQ+CiA8c2NyaXB0PgpAQCAtMTIsNiArMTEsOCBAQCBjb25zb2xlLndhcm4oIndh
cm4gMSIpOyBjb25zb2xlLmVycm9yKCJlcnJvciAxIik7CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVz
dCgpCiB7CisgICAgUHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCgiY29uc29sZS10ZXN0LmpzIik7
CisKICAgICB2YXIgY29uc29sZU1lc3NhZ2VDb3VudCA9IDA7CiAgICAgY29uc3QgZXhwZWN0ZWRD
b25zb2xlTWVzc2FnZUNvdW50ID0gODsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUveC1mcmFtZS1vcHRpb25zLW1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUveC1mcmFtZS1vcHRpb25zLW1lc3NhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDg3NjliY2QwZGU0ZjYyODI2NzlkMmEyZDhlMGVlYjFlMjcwOGVjOGIuLmI5OGZk
NzVlNGFkM2IyZDg3ZGQ1ZjYwZWE3NmExNWUxNzFjMmIwZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jb25zb2xlL3gtZnJhbWUtb3B0aW9ucy1tZXNzYWdlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS94LWZyYW1lLW9wdGlvbnMtbWVz
c2FnZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDE6IFJlZnVzZWQgdG8gZGlzcGxheSAneC1mcmFtZS1vcHRpb25zLW1lc3NhZ2UuaHRtbCcgaW4g
YSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnZGVueScuCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNDI6IFJlZnVzZWQgdG8gZGlzcGxheSAneC1mcmFtZS1vcHRpb25z
LW1lc3NhZ2UuaHRtbCcgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25z
JyB0byAnZGVueScuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDb25zb2xlLlhGcmFtZU9w
dGlvbnNNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
eC1mcmFtZS1vcHRpb25zLW1lc3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL3gtZnJhbWUtb3B0aW9ucy1tZXNzYWdlLmh0bWwKaW5kZXggNzM3YWIxZjliMzlkMmIwMWU5
M2I1ODU4MThkZWEyZmNhZGVhMDRlYy4uOTY3MGRmMWE3YzdlMTNkMWJkNDhjYzhjMDgzY2Y3MTYw
ODViMGMwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUveC1mcmFt
ZS1vcHRpb25zLW1lc3NhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS94LWZyYW1lLW9wdGlvbnMtbWVzc2FnZS5odG1sCkBAIC0yLDEwICsyLDExIEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBQcm90b2NvbFRlc3QuaW1wb3J0U2NyaXB0KCJj
b25zb2xlLXRlc3QuanMiKTsKKwogICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJDb25zb2xlLlhGcmFtZU9wdGlvbnNNZXNzYWdlcyIpOwogCiAgICAgUHJvdG9j
b2xUZXN0LkNvbnNvbGUuYWRkVGVzdENhc2Uoc3VpdGUsIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCmlu
ZGV4IDUxODg5MTJmNTkzZGQzMzg5YWYyOWRiOTdlNGYyOWVlY2RmOTY1NGMuLmFjNzE1M2MzYjAy
MjUxMDBkY2YyMjlhZjNlN2YyMzQwOWNmYjMxMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbApAQCAt
MTMsOCArMTMsOCBAQCBmdW5jdGlvbiBydW5CcmVha3BvaW50QWN0aW9ucygpCiAKIGZ1bmN0aW9u
IGFjdGlvbihhLCBiKQogewotICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiQnJlYWtwb2ludCBhY3Rp
b24gZXZhbHVhdGVkLiBhOigiICsgYSArICIpIGI6KCIgKyBiICsgIikiKTsKLSAgICBUZXN0UGFn
ZS5jb21wbGV0ZVRlc3QoKTsKKyAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJCcmVh
a3BvaW50IGFjdGlvbiBldmFsdWF0ZWQuIGE6KCIgKyBhICsgIikgYjooIiArIGIgKyAiKSIpOwor
ICAgIEluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRlc3QoKTsKIH0KIAogZnVuY3Rpb24gdGVz
dCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGlkU2FtcGxl
UHJvYmUtbXVsdGlwbGUtcHJvYmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvZGlkU2FtcGxlUHJvYmUtbXVsdGlwbGUtcHJvYmVzLmh0bWwKaW5kZXggNGE0MDJiOTZiMTBi
YmVlYzY5OWNiZjY3NjdiMzljNGI0YWY3YWNiOC4uMzVkMDc5OWYyOGUyZDhkYjJlOWNiZDU3ZDJl
ZmY4NDc5MDFlZmM5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2RpZFNhbXBsZVByb2JlLW11bHRpcGxlLXByb2Jlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kaWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMuaHRtbApAQCAt
MSwxMSArMSwxMiBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBQcm90b2NvbFRlc3QuaW1w
b3J0U2NyaXB0KCJwcm9iZS10ZXN0LmpzIik7CisKICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5k
Q29tbWFuZCgiRGVidWdnZXIuZW5hYmxlIiwge30pOwogCiAgICAgdmFyIHNhbXBsZXMgPSBbXTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJl
YWstb24tZXhjZXB0aW9uLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMKaW5kZXggYWU5ZTNiYTNjNmM2
NjFlYjZkYjc4YzZmZTIyMGY4ODNlMmNmYTRlOC4uYWY5NWU0MjI0YzQ2MTcwZWNjMGIzMmU2NWQ5
NjNhY2VmN2U3MmFkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMK
QEAgLTEsNCArMSw0IEBACi1UZXN0UGFnZS5uZWVkVG9TYW5pdGl6ZVVuY2F1Z2h0RXhjZXB0aW9u
VVJMcyA9IHRydWU7CitJbnNwZWN0b3JUZXN0UHJveHkubmVlZFRvU2FuaXRpemVVbmNhdWdodEV4
Y2VwdGlvblVSTHMgPSB0cnVlOwogCiB2YXIgYXJyID0gWyAxLCAyLCAzIF07CiB2YXIgbWFwRGF0
YSA9IFtbICJhIiwgYXJyIF1dOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQtZm9yLWJyZWFrcG9pbnQtYWN0aW9ucy5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvc2NyaXB0LWZvci1icmVha3BvaW50
LWFjdGlvbnMuanMKaW5kZXggZjExNjhjNDczNTIyMGY3YTkzMWNiNDE2OTJmYzE2YmIyYzhiYzk3
My4uZDBhMDZhODI5YzhjMWZjYjk4N2EzYmViM2NmNzQxMjFmYjE0OWEwZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQtZm9yLWJyZWFr
cG9pbnQtYWN0aW9ucy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVz
b3VyY2VzL3NjcmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rpb25zLmpzCkBAIC0xLDUgKzEsNSBAQAog
ZnVuY3Rpb24gYnJlYWtwb2ludEFjdGlvbnMoYSwgYikKIHsKICAgICAvLyBPbmx5IHByZXNlcnZl
IHRoaXMgbWVzc2FnZSBvbiB0aGUgY3VycmVudCB0ZXN0IHBhZ2UgbG9hZC4KLSAgICBUZXN0UGFn
ZS5hZGRSZXN1bHQoImluc2lkZSBicmVha3BvaW50QWN0aW9ucyBhOigiICsgYSArICIpIGI6KCIg
KyBiICsgIikiKTsKKyAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJpbnNpZGUgYnJl
YWtwb2ludEFjdGlvbnMgYTooIiArIGEgKyAiKSBiOigiICsgYiArICIpIik7CiB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2VhcmNoLXNjcmlwdHMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1sCmluZGV4
IDI5NDZmMmQ5MDRkOWYzZWU5YzI5YjI3OTg1MTNiMTczYjNiMmM2NzcuLjk1Njk1MGViYzYxNWRh
NDdjMTQ2YWYxMWQ5N2FjZTk1ZTAzOGMyOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1sCkBAIC00NCw3ICs0NCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIEluc3BlY3RvclRlc3QuYWRk
RXZlbnRMaXN0ZW5lcihGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCwg
ZnVuY3Rpb24oKSB7CisgICAgSW5zcGVjdG9yVGVzdC5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRM
aXN0ZW5lcihJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudC5UZXN0UGFnZURpZExv
YWQsIGZ1bmN0aW9uKCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJw
ZXJmb3JtRXZhbHMoKSIpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hY3Rpb25zLmh0bWwKaW5kZXggMzQzMDRk
OGU0NTVjYTZjZWYyNzFmZWFmODA5MjY4ZGZkZWQ0MGE1Zi4uNGFkNGJmMzFlM2NjMGFjMzZmMGNm
ZGI4NmFhNjE5ODNhMjQwNzQ0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMuaHRtbApAQCAtMSwxMiArMSwxMyBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b2JlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBQcm90b2Nv
bFRlc3QuaW1wb3J0U2NyaXB0KCJjb25zb2xlLXRlc3QuanMiKTsKKyAgICBQcm90b2NvbFRlc3Qu
aW1wb3J0U2NyaXB0KCJwcm9iZS10ZXN0LmpzIik7CisKICAgICBJbnNwZWN0b3JQcm90b2NvbC5z
ZW5kQ29tbWFuZCgiQ29uc29sZS5lbmFibGUiLCB7fSk7CiAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
c2VuZENvbW1hbmQoIkRlYnVnZ2VyLmVuYWJsZSIsIHt9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtb3B0aW9ucy1leGNlcHRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LW9wdGlv
bnMtZXhjZXB0aW9uLmh0bWwKaW5kZXggNzk2ZGRiOGMzNmM2MjNkOTM3MjdmZmQzNGE4NDhkNGJk
OTAxMjdjMS4uY2Y5MWUyNDM3MTk2ZDI3MDFhYTJjOTJjY2Q0OTVhYWEwM2I5MTA5YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtb3B0aW9u
cy1leGNlcHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0
QnJlYWtwb2ludC1vcHRpb25zLWV4Y2VwdGlvbi5odG1sCkBAIC0xLDExICsxLDEyIEBACiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
ZnVuY3Rpb24gdGVzdCgpCiB7CisgICAgUHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCgiY29uc29s
ZS10ZXN0LmpzIik7CisKICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZCgiQ29uc29s
ZS5lbmFibGUiLCB7fSk7CiAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIkRlYnVn
Z2VyLmVuYWJsZSIsIHt9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9kb20tc2VhcmNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9t
LXNlYXJjaC1leHBlY3RlZC50eHQKaW5kZXggNjkwZTY2M2UwYTZlMmZkY2ExNGZkYzgzMTY3Nzdh
YzZjNDAxOTk1Yy4uZDU3YWUwYzQzOWQ1MGMyMzZmYjU3NmZkYjhiOTMyZDRlMmFlMjYzMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb20tc2VhcmNoLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbS1zZWFyY2gtZXhwZWN0ZWQudHh0
CkBAIC00OCwxMyArNDgsMTEgQEAgYm9keS5tYWluLWZyYW1lCiA9PT0gUXVlcnk6ICIuYm9keS1p
bnNpZGUtaWZyYW1lIiA9PT0KIENvdW50OiAwCiA9PT0gUXVlcnk6ICIqIiA9PT0KLUNvdW50OiAx
NAorQ291bnQ6IDEyCiBodG1sCiBoZWFkCiBzY3JpcHQKIHNjcmlwdAotc2NyaXB0Ci1zY3JpcHQK
IGJvZHkubWFpbi1mcmFtZQogcAogaWZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2RvbS1zZWFyY2gtd2l0aC1jb250ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2RvbS1zZWFyY2gtd2l0aC1jb250ZXh0Lmh0bWwKaW5kZXggZThmOWI2NzUzNmQ0
NWFkMTRlMTAxOTNmZjE3ZTYyM2VmZWY1YTcwMS4uMzI4YzMwZjVlYjgxNGJkMjcxMTUzYmQ0NWIy
OTU1NWE0NmEzOGJmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb20t
c2VhcmNoLXdpdGgtY29udGV4dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
ZG9tLXNlYXJjaC13aXRoLWNvbnRleHQuaHRtbApAQCAtMSwxMSArMSwxMSBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RvbS9yZXNvdXJjZXMvSW5zcGVjdG9yRE9NTGlzdGVuZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8vIENyZWF0ZSBhIERPTSBsaXN0ZW5lciB0byBj
b252ZXJ0IG5vZGVJZHMgdG8gdGFnIG5hbWVzLgorICAgIFByb3RvY29sVGVzdC5pbXBvcnRTY3Jp
cHQoIi4uL2RvbS9yZXNvdXJjZXMvSW5zcGVjdG9yRE9NTGlzdGVuZXIuanMiKTsKICAgICB2YXIg
ZG9tID0gY3JlYXRlRE9NTGlzdGVuZXIoKTsKIAogICAgIC8vIENhY2hpbmcgdGhlIG91dHB1dCB0
byBhdm9pZCBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgbG9nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9kb20tc2VhcmNoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2RvbS1zZWFyY2guaHRtbAppbmRleCBiYjFiZGYzYWY3MDUwZGUyMDRhMTBkYTc2YTQ1N2M4
Nzk4NmIwMTc0Li42M2I0YWI2ZWQ3ZmYyNTIxZTRmYmNkYzgwNTQ0YzQ0MTljZjQxMTRjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbS1zZWFyY2guaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2RvbS1zZWFyY2guaHRtbApAQCAtMSwxMyArMSwxNCBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RvbS9yZXNvdXJjZXMvSW5zcGVjdG9yRE9NTGlzdGVuZXIuanMiPjwvc2Ny
aXB0PgotPCEtLSBMb2FkaW5nIHRoZSBxdWVyaWVzIGZyb20gZXh0ZXJuYWwgZmlsZSB0byBhdm9p
ZCBoYXZpbmcgdGhlbSBzaG93IHVwIGluIHRoZSByZXN1bHRzLiAtLT4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9kb20tc2VhcmNoLXF1ZXJpZXMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogeworICAgIC8vIExvYWRpbmcgdGhl
IHF1ZXJpZXMgZnJvbSBleHRlcm5hbCBmaWxlIHRvIGF2b2lkIGhhdmluZyB0aGVtIHNob3cgdXAg
aW4gdGhlIHJlc3VsdHMuCisgICAgUHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCgiLi4vLi4vLi4v
Li4vaW5zcGVjdG9yL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVzLmpzIik7CisKICAg
ICAvLyBDcmVhdGUgYSBET00gbGlzdGVuZXIgdG8gY29udmVydCBub2RlSWRzIHRvIHRhZyBuYW1l
cy4KKyAgICBQcm90b2NvbFRlc3QuaW1wb3J0U2NyaXB0KCIuLi9kb20vcmVzb3VyY2VzL0luc3Bl
Y3RvckRPTUxpc3RlbmVyLmpzIik7CiAgICAgdmFyIGRvbSA9IGNyZWF0ZURPTUxpc3RlbmVyKCk7
CiAKICAgICAvLyBDYWNoaW5nIHRoZSBvdXRwdXQgdG8gYXZvaWQgc2VhcmNoaW5nIHRocm91Z2gg
dGhlIGxvZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vcmVzb3VyY2Vz
L2RvbS1zZWFyY2gtcXVlcmllcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vcmVzb3Vy
Y2VzL2RvbS1zZWFyY2gtcXVlcmllcy5qcwppbmRleCAxZDg0NzI0MjVhYzdlOGQ4MjE3ZTZmYjg2
YjM0ZTM1MTc4ZjQxNzVkLi44ZTY1MmU1OTdlYWJlNTI1ZGEzOTQwODA0YWY0YjFlMmFkZTIzZTEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9kb20tc2Vh
cmNoLXF1ZXJpZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9yZXNvdXJjZXMv
ZG9tLXNlYXJjaC1xdWVyaWVzLmpzCkBAIC0xLDggKzEsNiBAQAotVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcihmdW5jdGlvbigpIHsKLQogLy8gSGF2aW5nIHRoZSBxdWVyaWVzIGluIGFuIGV4
dGVybmFsIGZpbGUsIHNvIHRoYXQgRE9NIHNlYXJjaCB3aWxsIG5vdCBmaW5kIHRoZSBzY3JpcHQg
d2hlbiBzZWFyY2hpbmcgZm9yIHZhbHVlcy4KIAotd2luZG93LmRvbVNlYXJjaFF1ZXJpZXMgPSBb
Cit2YXIgZG9tU2VhcmNoUXVlcmllcyA9IFsKICAgICAiYm9keSIsCiAgICAgIjxib2R5IiwKICAg
ICAiYm9keT4iLApAQCAtMzAsNiArMjgsNCBAQCB3aW5kb3cuZG9tU2VhcmNoUXVlcmllcyA9IFsK
ICAgICAiL2h0bWwvYm9keSIsCiAgICAgIi9odG1sL2JvZHkvQG9ubG9hZCIsCiAgICAgIi9IVE1M
L0JPRFkiCi1dOwotCi19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitdOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1s
CmluZGV4IDNiYjJiMzk3ZTM0NTJkOGIxMDhhMzBlOWUxZmM5NzdlZDIyMzg4YjkuLmZmNWRlZDZi
MjIzZWJjMjQxNDI4NTgyMzgwODY1NjJiNDRiNDFjNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS93aW5kb3ctbmF2aWdhdG9yLXBsdWdp
bnMtbWVtb2l6ZWQuaHRtbApAQCAtNzcsMTIgKzc3LDEyIEBAIGZ1bmN0aW9uIGR1bXBOb25kZXRl
cm1pbmlzdGljU3RhdGUoKQogLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaW4gdGhlIHBy
ZXZpb3VzIG1haW4gZnJhbWUgcHJpb3IgdG8gdGhlIGluaXRpYWwKIC8vIG5hdmlnYXRpb24gdGhh
dCBiZWdpbnMgY2FwdHVyaW5nIG9yIHJlcGxheWluZy4gQ2FyZWZ1bCwgaGVhcCBzdGF0ZSB3aWxs
IGJlIGxvc3QuCiBmdW5jdGlvbiBzZXR1cFByZUNhcHR1cmUoKSB7Ci0gICAgVGVzdFBhZ2UuYWRk
UmVzdWx0KCJFbmFibGluZyBwbHVnaW5zIGJlZm9yZSBjYXB0dXJlLiIpOworICAgIEluc3BlY3Rv
clRlc3RQcm94eS5hZGRSZXN1bHQoIkVuYWJsaW5nIHBsdWdpbnMgYmVmb3JlIGNhcHR1cmUuIik7
CiAgICAgdGVzdFJ1bm5lci5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CiB9CiAKIGZ1bmN0aW9u
IHNldHVwUHJlUmVwbGF5KCkgewotICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiRGlzYWJsaW5nIHBs
dWdpbnMgYmVmb3JlIHJlcGxheS4iKTsKKyAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0
KCJEaXNhYmxpbmcgcGx1Z2lucyBiZWZvcmUgcmVwbGF5LiIpOwogICAgIHRlc3RSdW5uZXIuc2V0
UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9kZWJ1Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvZGVidWdnZXItcGF1c2VkLXdoaWxlLXJlY29yZGlu
Zy5odG1sCmluZGV4IGU5YWM5YjNmNjE4YTFlY2NjMmRjNmU0ZWNhMTJhNDJjM2MzZTA0MjMuLmI2
NzM0MzgxMWFhMWUwY2I5Mzc5NjMwNjA2NzZiZTlhNDk2MDQwNGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9kZWJ1Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5n
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2RlYnVnZ2VyLXBhdXNl
ZC13aGlsZS1yZWNvcmRpbmcuaHRtbApAQCAtMTUsMTMgKzE1LDEzIEBAIGZ1bmN0aW9uIGluc3Rh
bGxUaW1lcigpCiAKIGZ1bmN0aW9uIGFkZChhLCBiKQogewotICAgIFRlc3RQYWdlLmFkZFJlc3Vs
dCgiQ2FsbGluZyBhZGQoKTogIiArIGEgKyAiICsgIiArIGIpOworICAgIEluc3BlY3RvclRlc3RQ
cm94eS5hZGRSZXN1bHQoIkNhbGxpbmcgYWRkKCk6ICIgKyBhICsgIiArICIgKyBiKTsKICAgICBy
ZXR1cm4gYSArIGI7CiB9CiAKIGZ1bmN0aW9uIG11bChhLCBiKQogewotICAgIFRlc3RQYWdlLmFk
ZFJlc3VsdCgiQ2FsbGluZyBtdWwoKTogIiArIGEgKyAiICogIiArIGIpOworICAgIEluc3BlY3Rv
clRlc3RQcm94eS5hZGRSZXN1bHQoIkNhbGxpbmcgbXVsKCk6ICIgKyBhICsgIiAqICIgKyBiKTsK
ICAgICByZXR1cm4gYSAqIGI7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS9leGNlcHRpb24taW4taW5qZWN0ZWQtc2NyaXB0LXdoaWxlLXJlY29yZGluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3Rl
ZC1zY3JpcHQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKaW5kZXggMTllMzdjODBjNDRmYmFmOWUxOGU4
N2Q3OGZkMmE3YzU3YWU3MjU0Ny4uOWI1ZmNmOTNhNDI1ODkzM2RjMmIzZWVlNzcxYjhjNTEyNDMz
NmJkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlv
bi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUt
cmVjb3JkaW5nLmh0bWwKQEAgLTE1LDEzICsxNSwxMyBAQCBmdW5jdGlvbiBpbnN0YWxsVGltZXIo
KQogCiBmdW5jdGlvbiBhZGQoYSwgYikKIHsKLSAgICBUZXN0UGFnZS5hZGRSZXN1bHQoIkNhbGxp
bmcgYWRkKCk6ICIgKyBhICsgIiArICIgKyBiKTsKKyAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRk
UmVzdWx0KCJDYWxsaW5nIGFkZCgpOiAiICsgYSArICIgKyAiICsgYik7CiAgICAgcmV0dXJuIGEg
KyBiOwogfQogCiBmdW5jdGlvbiBtdWwoYSwgYikKIHsKLSAgICBUZXN0UGFnZS5hZGRSZXN1bHQo
IkNhbGxpbmcgbXVsKCk6ICIgKyBhICsgIiAqICIgKyBiKTsKKyAgICBJbnNwZWN0b3JUZXN0UHJv
eHkuYWRkUmVzdWx0KCJDYWxsaW5nIG11bCgpOiAiICsgYSArICIgKiAiICsgYik7CiAgICAgcmV0
dXJuIGEgKiBiOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy9hc3luYy10ZXN0LXN1aXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0CmluZGV4IGI5MTMzOTA0
Nzk0NDkwNDRjYWE3ZjBlYjUyZTdjM2JmYTc5ZDk2NmIuLmY3MDQwMDY5MjJlZmQ4OTA2YWIwMGRl
MDk0ZDUyZDZiODlkNjY0ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0
LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0CkBAIC0xLDEx
ICsxLDkgQEAKIFBBU1M6IGluc3RhbnRpYXRpbmcgQXN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgbmFt
ZSBhcmd1bWVudC4KIFBBU1M6IGluc3RhbnRpYXRpbmcgQXN5bmNUZXN0U3VpdGUgcmVxdWlyZXMg
c3RyaW5nIG5hbWUgYXJndW1lbnQuCi1QQVNTOiBpbnN0YW50aWF0aW5nIEFzeW5jVGVzdFN1aXRl
IHJlcXVpcmVzIG5vbi13aGl0ZXNwYWNlIG5hbWUgYXJndW1lbnQuCiBQQVNTOiBpbnN0YW50aWF0
aW5nIEFzeW5jVGVzdFN1aXRlIHJlcXVpcmVzIHRlc3QgaGFybmVzcyBhcmd1bWVudC4KIFBBU1M6
IHNob3VsZCBub3QgYmUgYWJsZSB0byBhZGQgZW1wdHkgdGVzdCBjYXNlLgogUEFTUzogc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIGFkZCBub24tb2JqZWN0IHRlc3QgY2FzZS4KIFBBU1M6IHRlc3QgY2Fz
ZSBzaG91bGQgcmVxdWlyZSBzdHJpbmcgbmFtZS4KLVBBU1M6IHRlc3QgY2FzZSBzaG91bGQgcmVx
dWlyZSBub24td2hpdGVzcGFjZSBuYW1lLgogUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJl
IHRlc3QgZnVuY3Rpb24uCiBQQVNTOiBzaG91bGQgbm90IGJlIGFibGUgdG8gcnVuIGVtcHR5IHRl
c3Qgc3VpdGUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L2FzeW5jLXRlc3Qtc3VpdGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L2FzeW5jLXRlc3Qtc3VpdGUuaHRtbAppbmRleCAwMWI2ZmZhNjhlODBkZWRiZGM5NGJkZmRmZmIz
NWIyZGY4MDI1MzBlLi43NjgyNTliOThjMWRhODRhNDcyNDNiZDJkNDdiZGFlMzZkY2M3ZTZhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hc3luYy10ZXN0LXN1
aXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXN5bmMtdGVz
dC1zdWl0ZS5odG1sCkBAIC02LDM0ICs2LDI3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICB0
cnkgewotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEFzeW5jVGVzdFN1aXRlKHRoaXMpOworICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IEluamVjdGVkVGVzdEhhcm5lc3MuQXN5bmNUZXN0U3VpdGUo
dGhpcyk7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IGluc3RhbnRpYXRpbmcgQXN5
bmNUZXN0U3VpdGUgcmVxdWlyZXMgbmFtZSBhcmd1bWVudC4iKTsKICAgICB9IGNhdGNoIChlKSB7
CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IGluc3RhbnRpYXRpbmcgQXN5bmNUZXN0
U3VpdGUgcmVxdWlyZXMgbmFtZSBhcmd1bWVudC4iKTsKICAgICB9CiAKICAgICB0cnkgewotICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IEFzeW5jVGVzdFN1aXRlKHRoaXMsIHt9KTsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IG5ldyBJbmplY3RlZFRlc3RIYXJuZXNzLkFzeW5jVGVzdFN1aXRlKHRoaXMs
IHt9KTsKICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiRkFJTDogaW5zdGFudGlhdGluZyBBc3lu
Y1Rlc3RTdWl0ZSByZXF1aXJlcyBzdHJpbmcgbmFtZSBhcmd1bWVudC4iKTsKICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IGluc3RhbnRpYXRpbmcgQXN5
bmNUZXN0U3VpdGUgcmVxdWlyZXMgc3RyaW5nIG5hbWUgYXJndW1lbnQuIik7CiAgICAgfQogCiAg
ICAgdHJ5IHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBBc3luY1Rlc3RTdWl0ZSh0aGlzLCAi
ICAgICAgIik7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IGluc3RhbnRpYXRpbmcg
QXN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgbm9uLXdoaXRlc3BhY2UgbmFtZSBhcmd1bWVudC4iKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IGluc3Rh
bnRpYXRpbmcgQXN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgbm9uLXdoaXRlc3BhY2UgbmFtZSBhcmd1
bWVudC4iKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEFz
eW5jVGVzdFN1aXRlKCJzb21ldGhpbmciLCB7fSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
SW5qZWN0ZWRUZXN0SGFybmVzcy5Bc3luY1Rlc3RTdWl0ZSgic29tZXRoaW5nIiwge30pOwogICAg
ICAgICBQcm90b2NvbFRlc3QubG9nKCJGQUlMOiBpbnN0YW50aWF0aW5nIEFzeW5jVGVzdFN1aXRl
IHJlcXVpcmVzIHRlc3QgaGFybmVzcyBhcmd1bWVudC4iKTsKICAgICB9IGNhdGNoIChlKSB7CiAg
ICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IGluc3RhbnRpYXRpbmcgQXN5bmNUZXN0U3Vp
dGUgcmVxdWlyZXMgdGVzdCBoYXJuZXNzIGFyZ3VtZW50LiIpOwogICAgIH0KIAotICAgIGxldCBi
YWRBcmdzU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiZHVtbXkiKTsKKyAg
ICB2YXIgYmFkQXJnc1N1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoImR1bW15
Iik7CiAgICAgdHJ5IHsKICAgICAgICAgYmFkQXJnc1N1aXRlLmFkZFRlc3RDYXNlKCk7CiAgICAg
ICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhZGQgZW1w
dHkgdGVzdCBjYXNlLiIpOwpAQCAtNTcsMTUgKzUwLDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
fQogICAgIHRyeSB7CiAgICAgICAgIGJhZEFyZ3NTdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAg
ICAgICBuYW1lOiAiICAgICAgICAiLAotICAgICAgICAgICAgdGVzdDogZnVuY3Rpb24oKSB7fSwK
LSAgICAgICAgfSk7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IHRlc3QgY2FzZSBz
aG91bGQgcmVxdWlyZSBub24td2hpdGVzcGFjZSBuYW1lLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJl
IG5vbi13aGl0ZXNwYWNlIG5hbWUuIik7Ci0gICAgfQotICAgIHRyeSB7Ci0gICAgICAgIGJhZEFy
Z3NTdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgICAgICBuYW1lOiAiZm9vIiwKICAgICAgICAg
ICAgIHRlc3Q6IG51bGwsCiAgICAgICAgIH0pOwpAQCAtNzQsNyArNTgsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogdGVzdCBjYXNlIHNob3VsZCBy
ZXF1aXJlIHRlc3QgZnVuY3Rpb24uIik7CiAgICAgfQogCi0gICAgbGV0IHJ1bkVtcHR5U3VpdGUg
PSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuUnVuRW1wdHlT
dWl0ZSIpOworICAgIHZhciBydW5FbXB0eVN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIkFzeW5jVGVzdFN1aXRlLlJ1bkVtcHR5U3VpdGUiKTsKICAgICB0cnkgewogICAgICAg
ICBydW5FbXB0eVN1aXRlLnJ1blRlc3RDYXNlcygpOwogICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJGQUlMOiBzaG91bGQgbm90IGJlIGFibGUgdG8gcnVuIGVtcHR5IHRlc3Qgc3VpdGUuIik7CkBA
IC04Miw3ICs2Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJQQVNTOiBzaG91bGQgbm90IGJlIGFibGUgdG8gcnVuIGVtcHR5IHRlc3Qgc3VpdGUuIik7CiAg
ICAgfQogCi0gICAgbGV0IHJ1blR3aWNlU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiQXN5bmNUZXN0U3VpdGUuUnVuVHdpY2VTdWl0ZSIpOworICAgIHZhciBydW5Ud2ljZVN1
aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkFzeW5jVGVzdFN1aXRlLlJ1blR3
aWNlU3VpdGUiKTsKICAgICBydW5Ud2ljZVN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFt
ZTogIkR1bW15VGVzdDAiLAogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYSBzdWl0
ZSBjYW4ndCBydW4gbW9yZSB0aGFuIG9uY2UuIiwKQEAgLTkxLDcgKzc1LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCByZXN1bHQgPSBydW5Ud2ljZVN1
aXRlLnJ1blRlc3RDYXNlcygpOworICAgIHZhciByZXN1bHQgPSBydW5Ud2ljZVN1aXRlLnJ1blRl
c3RDYXNlcygpOwogICAgIHRyeSB7CiAgICAgICAgIC8vIFRlc3QgY2FzZXMgd29uJ3QgcnVuIGlu
IHRoaXMgZXZlbnQgbG9vcDsgdGhpcyBjYWxsIHNob3VsZCBzdGlsbCB0aHJvdy4KICAgICAgICAg
Ly8gTGF0ZXIgdGVzdHMgYXJlIGNoYWluZWQgdG8gdGhpcyBzdWl0ZSB0byBhdm9pZCBub25kZXRl
cm1pbmlzbS4KQEAgLTEwMSwxMCArODUsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIFBy
b3RvY29sVGVzdC5sb2coIlBBU1M6IHNob3VsZCBub3QgYmUgYWJsZSB0byBydW4gYSB0ZXN0IHN1
aXRlIHR3aWNlLiIpOwogICAgIH0KIAotICAgIGxldCByZWplY3RUb2tlbiA9IHsidG9rZW4iOiA2
NjZ9OwotICAgIGxldCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcihyZWplY3RUb2tlbik7CisgICAg
dmFyIHJlamVjdFRva2VuID0geyJ0b2tlbiI6IDY2Nn07CisgICAgdmFyIHRocm93bkVycm9yID0g
bmV3IEVycm9yKHJlamVjdFRva2VuKTsKIAotICAgIGxldCBzZXF1ZW50aWFsRXhlY3V0aW9uU3Vp
dGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuU2VxdWVu
dGlhbEV4ZWN1dGlvbiIpOworICAgIHZhciBzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgPSBQcm90
b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuU2VxdWVudGlhbEV4ZWN1
dGlvbiIpOwogICAgIHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJEdW1teVRlc3QxIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0ZXN0
IGNhc2UgZXhlY3V0aW9uIG9yZGVyLiIsCkBAIC0xMzQsNyArMTE4LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhYm9ydE9uRmFpbHVyZVN1aXRlID0g
UHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkFzeW5jVGVzdFN1aXRlLkFib3J0T25GYWls
dXJlIik7CisgICAgdmFyIGFib3J0T25GYWlsdXJlU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuQWJvcnRPbkZhaWx1cmUiKTsKICAgICBhYm9ydE9u
RmFpbHVyZVN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlBhc3NpbmdUZXN0NSIs
CiAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGhpcyB0ZXN0IGlzIGEgZHVtbXkuIiwKQEAgLTE1OCw3
ICsxNDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9KTsKIAogICAgIHJlc3VsdCA9IHJlc3Vs
dC50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBsZXQgcHJvbWlzZSA9IHNlcXVlbnRpYWxFeGVj
dXRpb25TdWl0ZS5ydW5UZXN0Q2FzZXMoKTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBzZXF1ZW50
aWFsRXhlY3V0aW9uU3VpdGUucnVuVGVzdENhc2VzKCk7CiAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UsICJBc3luY1Rlc3RTdWl0ZS5SdW5U
ZXN0Q2FzZXMoKSBzaG91bGQgcmV0dXJuIGEgUHJvbWlzZS4iKTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2U7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy9zeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvc3luYy10ZXN0LXN1aXRlLWV4cGVjdGVkLnR4dAppbmRleCAzYmFiYzU5NWFl
ZTkzNGQyY2M3NDlmMWI5ZTdiYWY0ZGI0MzAyMThkLi4yNTZiYjE5NTVmNjYzMjdhN2QyNDMxOTEy
MjVlOWQxMzU1NzVlZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy9zeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL3N5bmMtdGVzdC1zdWl0ZS1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEs
OSBAQAogUEFTUzogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVzIG5hbWUgYXJn
dW1lbnQuCiBQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgc3RyaW5n
IG5hbWUgYXJndW1lbnQuCi1QQVNTOiBpbnN0YW50aWF0aW5nIEFzeW5jVGVzdFN1aXRlIHJlcXVp
cmVzIG5vbi13aGl0ZXNwYWNlIG5hbWUgYXJndW1lbnQuCiBQQVNTOiBpbnN0YW50aWF0aW5nIFN5
bmNUZXN0U3VpdGUgcmVxdWlyZXMgdGVzdCBoYXJuZXNzIGFyZ3VtZW50LgogUEFTUzogc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIGFkZCBlbXB0eSB0ZXN0IGNhc2UuCiBQQVNTOiBzaG91bGQgbm90IGJl
IGFibGUgdG8gYWRkIG5vbi1vYmplY3QgdGVzdCBjYXNlLgogUEFTUzogdGVzdCBjYXNlIHNob3Vs
ZCByZXF1aXJlIHN0cmluZyBuYW1lLgotUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJlIG5v
bi13aGl0ZXNwYWNlIG5hbWUuCiBQQVNTOiB0ZXN0IGNhc2Ugc2hvdWxkIHJlcXVpcmUgdGVzdCBm
dW5jdGlvbi4KIFBBU1M6IHNob3VsZCBub3QgYmUgYWJsZSB0byBydW4gZW1wdHkgdGVzdCBzdWl0
ZS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc3luYy10
ZXN0LXN1aXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRl
c3Qtc3VpdGUuaHRtbAppbmRleCAwMWNjZjA5MmQwN2RjMmI1YTc1NGJhYTljZTEwODNmZjA2NDFl
NmZkLi5lYzQ4NmFjNWJmNWMxOGFkOTk0ZTA3MDI0OTJkNTQzMmM5NWQyMWE4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qtc3VpdGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qtc3VpdGUuaHRt
bApAQCAtNiwzNCArNiwyNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdHJ5IHsKLSAgICAg
ICAgbGV0IHJlc3VsdCA9IG5ldyBTeW5jVGVzdFN1aXRlKHRoaXMpOworICAgICAgICBsZXQgcmVz
dWx0ID0gbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKHRoaXMpOwogICAgICAgICBQcm90
b2NvbFRlc3QubG9nKCJGQUlMOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMg
bmFtZSBhcmd1bWVudC4iKTsKICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIFByb3RvY29sVGVz
dC5sb2coIlBBU1M6IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBuYW1lIGFy
Z3VtZW50LiIpOwogICAgIH0KIAogICAgIHRyeSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcg
U3luY1Rlc3RTdWl0ZSh0aGlzLCB7fSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgUHJvdG9j
b2xUZXN0LlN5bmNUZXN0U3VpdGUodGhpcywge30pOwogICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJGQUlMOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgc3RyaW5nIG5hbWUg
YXJndW1lbnQuIik7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgc3RyaW5nIG5hbWUg
YXJndW1lbnQuIik7CiAgICAgfQogCiAgICAgdHJ5IHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5l
dyBzeW5jVGVzdFN1aXRlKHRoaXMsICIgICAgICAiKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygiRkFJTDogaW5zdGFudGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBub24td2hpdGVz
cGFjZSBuYW1lIGFyZ3VtZW50LiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgUHJvdG9j
b2xUZXN0LmxvZygiUEFTUzogaW5zdGFudGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBu
b24td2hpdGVzcGFjZSBuYW1lIGFyZ3VtZW50LiIpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAg
ICAgIGxldCByZXN1bHQgPSBuZXcgU3luY1Rlc3RTdWl0ZSgic29tZXRoaW5nIiwge30pOworICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKCJzb21ldGhp
bmciLCB7fSk7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IGluc3RhbnRpYXRpbmcg
U3luY1Rlc3RTdWl0ZSByZXF1aXJlcyB0ZXN0IGhhcm5lc3MgYXJndW1lbnQuIik7CiAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJQQVNTOiBpbnN0YW50aWF0aW5n
IFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgdGVzdCBoYXJuZXNzIGFyZ3VtZW50LiIpOwogICAgIH0K
IAotICAgIGxldCBiYWRBcmdzU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlU3luY1N1aXRlKCJk
dW1teSIpOworICAgIHZhciBiYWRBcmdzU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlU3luY1N1
aXRlKCJkdW1teSIpOwogICAgIHRyeSB7CiAgICAgICAgIGJhZEFyZ3NTdWl0ZS5hZGRUZXN0Q2Fz
ZSgpOwogICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJGQUlMOiBzaG91bGQgbm90IGJlIGFibGUg
dG8gYWRkIGVtcHR5IHRlc3QgY2FzZS4iKTsKQEAgLTU3LDE1ICs1MCw2IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIH0KICAgICB0cnkgewogICAgICAgICBiYWRBcmdzU3VpdGUuYWRkVGVzdENhc2Uo
ewotICAgICAgICAgICAgbmFtZTogIiAgICAgICAgIiwKLSAgICAgICAgICAgIHRlc3Q6IGZ1bmN0
aW9uKCkge30sCi0gICAgICAgIH0pOwotICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJGQUlMOiB0
ZXN0IGNhc2Ugc2hvdWxkIHJlcXVpcmUgbm9uLXdoaXRlc3BhY2UgbmFtZS4iKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IHRlc3QgY2FzZSBzaG91
bGQgcmVxdWlyZSBub24td2hpdGVzcGFjZSBuYW1lLiIpOwotICAgIH0KLSAgICB0cnkgewotICAg
ICAgICBiYWRBcmdzU3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICAgICAgbmFtZTogImZvbyIs
CiAgICAgICAgICAgICB0ZXN0OiBudWxsLAogICAgICAgICB9KTsKQEAgLTc0LDcgKzU4LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IHRlc3QgY2Fz
ZSBzaG91bGQgcmVxdWlyZSB0ZXN0IGZ1bmN0aW9uLiIpOwogICAgIH0KIAotICAgIGxldCBydW5F
bXB0eVN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiU3luY1Rlc3RTdWl0ZS5S
dW5FbXB0eVN1aXRlIik7CisgICAgdmFyIHJ1bkVtcHR5U3VpdGUgPSBQcm90b2NvbFRlc3QuY3Jl
YXRlU3luY1N1aXRlKCJTeW5jVGVzdFN1aXRlLlJ1bkVtcHR5U3VpdGUiKTsKICAgICB0cnkgewog
ICAgICAgICBydW5FbXB0eVN1aXRlLnJ1blRlc3RDYXNlcygpOwogICAgICAgICBQcm90b2NvbFRl
c3QubG9nKCJGQUlMOiBzaG91bGQgbm90IGJlIGFibGUgdG8gcnVuIGVtcHR5IHRlc3Qgc3VpdGUu
Iik7CkBAIC04Miw3ICs2Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBQcm90b2NvbFRl
c3QubG9nKCJQQVNTOiBzaG91bGQgbm90IGJlIGFibGUgdG8gcnVuIGVtcHR5IHRlc3Qgc3VpdGUu
Iik7CiAgICAgfQogCi0gICAgbGV0IHJ1blR3aWNlU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRl
U3luY1N1aXRlKCJTeW5jVGVzdFN1aXRlLlJ1blR3aWNlU3VpdGUiKTsKKyAgICB2YXIgcnVuVHdp
Y2VTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVTeW5jU3VpdGUoIlN5bmNUZXN0U3VpdGUuUnVu
VHdpY2VTdWl0ZSIpOwogICAgIHJ1blR3aWNlU3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBu
YW1lOiAiRHVtbXlUZXN0MCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBhIHN1
aXRlIGNhbid0IHJ1biBtb3JlIHRoYW4gb25jZS4iLApAQCAtOTAsNyArNzQsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICB9KTsKIAogICAgIHRyeSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBydW5U
d2ljZVN1aXRlLnJ1blRlc3RDYXNlcygpOworICAgICAgICB2YXIgcmVzdWx0ID0gcnVuVHdpY2VT
dWl0ZS5ydW5UZXN0Q2FzZXMoKTsKICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQocmVz
dWx0ID09PSB0cnVlLCAiUmV0dXJuIHZhbHVlIG9mIHJ1blR3aWNlU3VpdGUucnVuVGVzdENhc2Vz
KCkgc2hvdWxkIGJlIHRydWUgd2hlbiBhbGwgdGVzdHMgcGFzcy4iKTsKIAogICAgICAgICBydW5U
d2ljZVN1aXRlLnJ1blRlc3RDYXNlcygpOyAvLyBUcnkgdG8gdHJpZ2dlciBhbiBlcnJvci4KQEAg
LTk5LDkgKzgzLDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
IlBBU1M6IHNob3VsZCBub3QgYmUgYWJsZSB0byBydW4gYSB0ZXN0IHN1aXRlIHR3aWNlLiIpOwog
ICAgIH0KIAotICAgIGxldCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcih7InRva2VuIjogNjY2fSk7
CisgICAgdmFyIHRocm93bkVycm9yID0gbmV3IEVycm9yKHsidG9rZW4iOiA2NjZ9KTsKIAotICAg
IGxldCBzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlU3luY1N1
aXRlKCJTeW5jVGVzdFN1aXRlLlNlcXVlbnRpYWxFeGVjdXRpb24iKTsKKyAgICB2YXIgc2VxdWVu
dGlhbEV4ZWN1dGlvblN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiU3luY1Rl
c3RTdWl0ZS5TZXF1ZW50aWFsRXhlY3V0aW9uIik7CiAgICAgc2VxdWVudGlhbEV4ZWN1dGlvblN1
aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkR1bW15VGVzdDEiLAogICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRlc3QgY2FzZSBleGVjdXRpb24gb3JkZXIuIiwKQEAgLTEyMywx
NCArMTA3LDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0ZXN0OiBmdW5jdGlvbigpIHsg
dGhyb3cgdGhyb3duRXJyb3I7IH0KICAgICB9KTsKIAotICAgIGxldCByZXN1bHQgPSBzZXF1ZW50
aWFsRXhlY3V0aW9uU3VpdGUucnVuVGVzdENhc2VzKCk7CisgICAgdmFyIHJlc3VsdCA9IHNlcXVl
bnRpYWxFeGVjdXRpb25TdWl0ZS5ydW5UZXN0Q2FzZXMoKTsKICAgICBQcm90b2NvbFRlc3QuZXhw
ZWN0VGhhdChyZXN1bHQgPT09IGZhbHNlLCAiUmV0dXJuIHZhbHVlIG9mIHNlcXVlbnRpYWxFeGVj
dXRpb25TdWl0ZS5ydW5UZXN0Q2FzZXMoKSBzaG91bGQgYmUgZmFsc2Ugd2hlbiBhIHRlc3QgY2Fz
ZSBmYWlscy4iKTsKICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChzZXF1ZW50aWFsRXhlY3V0
aW9uU3VpdGUucnVuQ291bnQgPT09IDQsICJzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxk
IGhhdmUgZXhlY3V0ZWQgZm91ciB0ZXN0cy4iKTsKICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhh
dChzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUucGFzc0NvdW50ID09PSAzLCAic2VxdWVudGlhbEV4
ZWN1dGlvblN1aXRlIHNob3VsZCBoYXZlIHBhc3NlZCB0aHJlZSB0ZXN0cy4iKTsKICAgICBQcm90
b2NvbFRlc3QuZXhwZWN0VGhhdChzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUuZmFpbENvdW50ID09
PSAxLCAic2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlIHNob3VsZCBoYXZlIGZhaWxlZCAxIHRlc3Qu
Iik7CiAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRl
LnNraXBDb3VudCA9PT0gMCwgInNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZSBzaG91bGQgaGF2ZSBz
a2lwcGVkIHplcm8gdGVzdHMuIik7CiAKLSAgICBsZXQgYWJvcnRPbkZhaWx1cmVTdWl0ZSA9IFBy
b3RvY29sVGVzdC5jcmVhdGVTeW5jU3VpdGUoIlN5bmNUZXN0U3VpdGUuQWJvcnRPbkZhaWx1cmUi
KTsKKyAgICB2YXIgYWJvcnRPbkZhaWx1cmVTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVTeW5j
U3VpdGUoIlN5bmNUZXN0U3VpdGUuQWJvcnRPbkZhaWx1cmUiKTsKICAgICBhYm9ydE9uRmFpbHVy
ZVN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIlBhc3NpbmdUZXN0NSIsCiAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVGhpcyB0ZXN0IGlzIGEgZHVtbXkuIiwK
</data>

          </attachment>
      

    </bug>

</bugzilla>