<?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>131324</bug_id>
          
          <creation_ts>2014-04-07 16:06:15 -0700</creation_ts>
          <short_desc>Web Inspector: test helper files should be under LayoutTests/http/tests/inspector/</short_desc>
          <delta_ts>2014-04-07 17:57:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>131318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998272</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-07 16:06:15 -0700</bug_when>
    <thetext>If they are located in LayoutTests/inspector/, then any http tests cannot use the files. LayoutTests/http/tests/ is the file root for the test http server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998303</commentid>
    <comment_count>1</comment_count>
      <attachid>228776</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-07 17:03:29 -0700</bug_when>
    <thetext>Created attachment 228776
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998310</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-07 17:11:03 -0700</bug_when>
    <thetext>Try adding the following to your ~/.gitconfig:

    [diff]
        renames = copies

I think it would make diffs like this significantly smaller and easier to read!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998313</commentid>
    <comment_count>3</comment_count>
      <attachid>228776</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-07 17:13:11 -0700</bug_when>
    <thetext>Comment on attachment 228776
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998321</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-07 17:26:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Try adding the following to your ~/.gitconfig:
&gt; 
&gt;     [diff]
&gt;         renames = copies
&gt; 
&gt; I think it would make diffs like this significantly smaller and easier to read!

Will do, thanks. I don&apos;t think I copied that to my centralized dot file repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998339</commentid>
    <comment_count>5</comment_count>
      <attachid>228776</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-07 17:57:03 -0700</bug_when>
    <thetext>Comment on attachment 228776
the patch

Clearing flags on attachment: 228776

Committed r166901: &lt;http://trac.webkit.org/changeset/166901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998340</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-07 17:57:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228776</attachid>
            <date>2014-04-07 17:03:29 -0700</date>
            <delta_ts>2014-04-07 17:57:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-131324-20140407170308.patch</filename>
            <type>text/plain</type>
            <size>50800</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODg4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDI3YzdjNWIwMGVjOWJhMzE4NTAy
NjczOTQ2MjMzN2E5NDE5MDQ0Yy4uZGI3MzU1MjdmMTQ1YzQwYTk5ZmU5OGFhYWQ1Zjk0OWQxZTk3
ZDE2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE0LTA0LTA3ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXN0IGhl
bHBlciBmaWxlcyBzaG91bGQgYmUgdW5kZXIgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEz
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFy
cmFuZ2UgaGVscGVyIGZpbGVzIHVzZWQgYnkgZnVsbCBpbnNwZWN0b3IgdGVzdHMuIEluIHRoZWly
IHByZXZpb3VzIHBsYWNlbWVudCwKKyAgICAgICAgdGhleSB3ZXJlIG91dHNpZGUgdGhlIGh0dHAg
c2VydmVyIHJvb3QgYW5kIGNvdWxkbid0IGJlIGxvYWRlZCBmcm9tIGh0dHAgdGVzdHMuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzOiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3Qu
anMuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzOiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcy4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcy4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanM6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzLgorICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LXJlbW92YWwuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1saXN0Lmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8uaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1zaGFwZS1vdXRzaWRlLW1hcmdpbi5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kb20vaGlnaGxpZ2h0LXNoYXBlLW91dHNpZGUuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcGFnZS9tYWluLWZyYW1lLXJlc291cmNlLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlcGxheS9qYXZhc2NyaXB0LWRhdGUtbm93Lmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3JlcGxheS9qYXZhc2NyaXB0LXJhbmRvbS1zZWVkLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3Rlc3QtaGFybmVzcy10cml2aWFsbHktd29ya3MuaHRtbDoKKwogMjAxNC0wMy0z
MCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc2xvdyBK
U1JlZ3Jlc3MgdGVzdHMgb3V0IG9mIHRoZSB3YXkgc28gdGhhdCB0aGV5IGRvbid0IHNob3cgdXAg
aW4gcnVuLWpzYy1iZW5jaG1hcmtzIHJ1bnMgYW5kIGFsc28gc2tpcCB0ZXN0cyB0aGF0IGFyZSBl
eHRyZW1lbHkgbG9uZy1ydW5uaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTAy
NTU4NzBhMTk1NjFkNzk2ZWY4OGYyZDg1OTYwMDkwMzRlMjRhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5q
cwpAQCAtMCwwICsxLDExNSBAQAorSW5zcGVjdG9yVGVzdFByb3h5LnJlZ2lzdGVySW5pdGlhbGl6
ZXIoZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3Quc3RhcnRUcmFjaW5nQnJlYWtwb2ludHMg
PSBmdW5jdGlvbigpCit7CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50
QWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVh
a3BvaW50IHdhcyBhZGRlZC4iKTsKKyAgICB9KTsKKworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiQnJlYWtwb2ludCB3YXMgcmVtb3ZlZC4iKTsKKyAgICB9KTsKKworICAgIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFr
cG9pbnQgZGlzYWJsZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuZGlzYWJsZWQpOwor
ICAgIH0pOworCisgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5j
dGlvbihldmVudCkgeworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKworICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtw
b2ludC5yZXNvbHZlZCk7CisgICAgfSk7CisKKyAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51
ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYXV0b2NvbnRpbnVlIHN0YXRl
IGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmF1dG9Db250aW51ZSk7CisgICAgfSk7CisKKyAgICBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCwgIlVuZXhwZWN0
ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9p
bnQgY29uZGl0aW9uIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmNvbmRpdGlvbik7CisgICAgfSk7
CisKKyAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQsICJV
bmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworCisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJC
cmVha3BvaW50IGFjdGlvbnMgY2hhbmdlZC4gTmV3IGNvdW50OiAiICsgYnJlYWtwb2ludC5hY3Rp
b25zLmxlbmd0aCk7CisgICAgfSk7Cit9CisKK0luc3BlY3RvclRlc3Quc3RhcnRUcmFjaW5nUHJv
YmVzID0gZnVuY3Rpb24oKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwg
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9i
ZVNldDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVTZXQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUHJvYmVTZXQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworCisgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJQcm9iZSBzZXQgd2FzIGFkZGVkLiBOZXcgY291bnQ6ICIgKyBXZWJJ
bnNwZWN0b3IucHJvYmVNYW5hZ2VyLnByb2JlU2V0cy5sZW5ndGgpOworICAgIH0pOworCisgICAg
V2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Q
cm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICB2YXIgcHJvYmVTZXQgPSBldmVudC5kYXRhLnByb2JlU2V0OworICAgICAgICBjb25zb2xl
LmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlByb2Jl
IHNldCB3YXMgcmVtb3ZlZC4gTmV3IGNvdW50OiAiICsgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdl
ci5wcm9iZVNldHMubGVuZ3RoKTsKKyAgICB9KTsKKworICAgIFdlYkluc3BlY3Rvci5Qcm9iZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5FeHByZXNzaW9uQ2hhbmdl
ZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdmFyIHByb2JlID0gZXZlbnQudGFyZ2V0Owor
ICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9i
ZSwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlByb2JlIHdpdGggaWRlbnRpZmllciAiICsgcHJvYmUuaWQgKyAiIGNoYW5nZWQgZXhwcmVz
c2lvbjogIiArIHByb2JlLmV4cHJlc3Npb24pOworICAgIH0pOworCisgICAgV2ViSW5zcGVjdG9y
LlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50LlNhbXBsZUFk
ZGVkLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICB2YXIgcHJvYmUgPSBldmVudC50YXJnZXQ7
CisgICAgICAgIHZhciBzYW1wbGUgPSBldmVudC5kYXRhOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChwcm9iZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZSwgIlVuZXhwZWN0ZWQgb2JqZWN0
IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNhbXBsZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9iZVNhbXBsZSwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlByb2JlIHdpdGggaWRlbnRpZmllciAiICsgcHJvYmUuaWQg
KyAiIGFkZGVkIHNhbXBsZTogIiArIHNhbXBsZSk7CisgICAgfSk7CisKKyAgICBXZWJJbnNwZWN0
b3IuUHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuU2FtcGxl
c0NsZWFyZWQsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LnRh
cmdldDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUHJvYmUsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworCisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJQcm9iZSB3aXRoIGlkZW50aWZpZXIgIiArIHByb2JlLmlkICsgIiBjbGVhcmVk
IGFsbCBzYW1wbGVzLiIpOworICAgIH0pOworCisgICAgV2ViSW5zcGVjdG9yLlByb2JlU2V0LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlByb2JlQWRkZWQsIGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciBwcm9iZVNldCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocHJv
YmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmUsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlByb2JlIHdpdGggaWRlbnRpZmllciAiICsgcHJvYmUuaWQgKyAiIHdh
cyBhZGRlZCB0byBwcm9iZSBzZXQuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm9i
ZSBzZXQncyBwcm9iZSBjb3VudDogIiArIHByb2JlU2V0LnByb2Jlcy5sZW5ndGgpOworICAgIH0p
OworCisgICAgV2ViSW5zcGVjdG9yLlByb2JlU2V0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlByb2JlU2V0LkV2ZW50LlByb2JlUmVtb3ZlZCwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgdmFyIHByb2JlID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQu
dGFyZ2V0OworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Qcm9iZSwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0LCAiVW5leHBl
Y3RlZCBvYmplY3QgdHlwZSEiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUHJvYmUg
d2l0aCBpZGVudGlmaWVyICIgKyBwcm9iZS5pZCArICIgd2FzIHJlbW92ZWQgZnJvbSBwcm9iZSBz
ZXQuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm9iZSBzZXQncyBwcm9iZSBjb3Vu
dDogIiArIHByb2JlU2V0LnByb2Jlcy5sZW5ndGgpOworICAgIH0pOworfQorCit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yM2M1Njk1NjQwYjBmYmZmNmRiZGNlYTA2NjcxZjUzYmZmN2NhNTk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBl
cy10ZXN0LmpzCkBAIC0wLDAgKzEsOTEgQEAKK0luc3BlY3RvclRlc3RQcm94eS5yZWdpc3Rlcklu
aXRpYWxpemVyKGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LlNoYXBlcyA9IHsKKyAgICBn
ZXRTaGFwZU91dHNpZGVJbmZvRm9yU2VsZWN0b3I6IGZ1bmN0aW9uKHNlbGVjdG9yLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9j
dW1lbnQocmVxdWVzdERvY3VtZW50Q2FsbGJhY2spOworCisgICAgICAgIGZ1bmN0aW9uIHJlcXVl
c3REb2N1bWVudENhbGxiYWNrKG5vZGUpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NTm9kZSwgIlVuZXhwZWN0ZWQgYXJn
dW1lbnQgdG8gcmVxdWVzdERvY3VtZW50IGNhbGxiYWNrLiIpCisgICAgICAgICAgICBET01BZ2Vu
dC5xdWVyeVNlbGVjdG9yLmludm9rZSh7bm9kZUlkOiBub2RlLmlkLCBzZWxlY3Rvcjogc2VsZWN0
b3J9LCBxdWVyeVNlbGVjdG9yQ2FsbGJhY2spOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gcXVlcnlTZWxlY3RvckNhbGxiYWNrKGVycm9yLCBub2RlSWQpIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KCFlcnJvciwgIkVycm9yIGluIGNhbGxiYWNrIGZvciBET01BZ2Vu
dC5xdWVyeVNlbGVjdG9yIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
SWQsICJJbnZhbGlkIGFyZ3VtZW50IHRvIGNhbGxiYWNrIGZvciBET01BZ2VudC5xdWVyeVNlbGVj
dG9yIik7CisKKyAgICAgICAgICAgIHZhciBoaWdobGlnaHRDb25maWcgPSB7CisgICAgICAgICAg
ICAgICAgc2hvd0luZm86IHRydWUsCisgICAgICAgICAgICAgICAgY29udGVudENvbG9yOiB7cjog
MjU1LCBnOiAyNTUsIGI6IDI1NX0sCisgICAgICAgICAgICAgICAgcGFkZGluZ0NvbG9yOiB7cjog
MjU1LCBnOiAyNTUsIGI6IDI1NX0sCisgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHtyOiAy
NTUsIGc6IDI1NSwgYjogMjU1fSwKKyAgICAgICAgICAgICAgICBtYXJnaW5Db2xvcjoge3I6IDI1
NSwgZzogMjU1LCBiOiAyNTV9LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIERPTUFnZW50
LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtub2RlSWQ6IG5vZGVJZCwgaGlnaGxpZ2h0Q29uZmlnOiBo
aWdobGlnaHRDb25maWd9LCBoaWdobGlnaHROb2RlQ2FsbGJhY2spOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gaGlnaGxpZ2h0Tm9kZUNhbGxiYWNrKGVycm9yKSB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZXJyb3IsICJFcnJvciBpbiBjYWxsYmFjayBmb3IgRE9N
QWdlbnQuaGlnaGxpZ2h0Tm9kZSIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJ3aW5kb3cuaW50ZXJuYWxzLmluc3BlY3RvckhpZ2hsaWdodE9iamVjdCgpIiwg
cmVjZWl2ZWRIaWdobGlnaHRPYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cmVjZWl2ZWRIaWdobGlnaHRPYmplY3QoZXJyb3IsIHBheWxvYWQsIHdhc1Rocm93bikgeworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIWVycm9yLCAiV2hlbiBldmFsdWF0aW5nIGNvZGUsIHJl
Y2VpdmVkIHVuZXhwZWN0ZWQgZXJyb3I6IiArIGVycm9yKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFlcnJvciwgIldoZW4gZXZhbHVhdGluZyBjb2RlLCBhbiBleGNlcHRpb24gd2FzIHRo
cm93bjoiICsgd2FzVGhyb3duKTsKKworICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNl
KHBheWxvYWQudmFsdWUpOworICAgICAgICAgICAgY2FsbGJhY2soZGF0YS5lbGVtZW50SW5mby5z
aGFwZU91dHNpZGVJbmZvKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBhc3NlcnRQYXRoc0Fy
ZVJvdWdobHlFcXVhbDogZnVuY3Rpb24oYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkKKyAgICB7
CisgICAgICAgIGZ1bmN0aW9uIGNvb3JkaW5hdGVzQXJlUm91Z2hseUVxdWFsKGEsIGIpIHsKKyAg
ICAgICAgICAgIC8vIFNvbWUgcGxhdGZvcm1zIG1heSBvbmx5IHN0b3JlIGludGVnZXIgcGF0aCBw
b2ludHMsIHNvIHRoZSBwb3RlbnRpYWwKKyAgICAgICAgICAgIC8vIGRpZmZlcmVuY2VzIGJldHdl
ZW4gY29ycmVjdCBwYXRocyBjYW4gYmUgcm91Z2hseSBoYWxmIGEgdW5pdC4KKyAgICAgICAgICAg
IHJldHVybiB0eXBlb2YgYSA9PT0gIm51bWJlciIgJiYgdHlwZW9mIGIgPT09ICJudW1iZXIiICYm
IE1hdGguYWJzKGEgLSBiKSA8IDAuNTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHBh
dGhzQXJlUm91Z2hseUVxdWFsKGFjdHVhbFBhdGgsIGV4cGVjdGVkUGF0aCkgeworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkU3VicGF0aFN0YXJ0ID0gMCwgZWksIGFpOworICAgICAgICAgICAgZm9y
ICh2YXIgZWkgPSAwLCBhaSA9IDA7IGFpIDwgYWN0dWFsUGF0aC5sZW5ndGggJiYgZWkgPCBleHBl
Y3RlZFBhdGgubGVuZ3RoOyBhaSsrLCBlaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVj
dGVkUGF0aFtlaV0gPT09ICdNJykKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRTdWJwYXRo
U3RhcnQgPSBlaTsKKworICAgICAgICAgICAgICAgIGlmIChhY3R1YWxQYXRoW2FpXSA9PT0gZXhw
ZWN0ZWRQYXRoW2VpXQorICAgICAgICAgICAgICAgICAgICB8fCBjb29yZGluYXRlc0FyZVJvdWdo
bHlFcXVhbChhY3R1YWxQYXRoW2FpXSwgZXhwZWN0ZWRQYXRoW2VpXSkpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gRXh0cmFwb2xhdGUgdGhlIG1p
c3NpbmcgbGluZSB0byBjb21tYW5kIGlmIGl0IGlzIG1pc3NpbmcgZnJvbSBhY3R1YWwuCisgICAg
ICAgICAgICAgICAgLy8gVGhlIGNob2ljZSB0byBjbG9zZSB0aGUgcGF0aCB3aXRoIGFuIGV4cGxp
Y2l0IGxpbmUgdG8gY29tbWFuZCBpcworICAgICAgICAgICAgICAgIC8vIHBsYXRmb3JtIGRlcGVu
ZGVudC4KKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsUGF0aFthaV0gPT09ICdaJworICAgICAg
ICAgICAgICAgICAgICAmJiBleHBlY3RlZFBhdGhbZWldID09PSAnTCcKKyAgICAgICAgICAgICAg
ICAgICAgJiYgY29vcmRpbmF0ZXNBcmVSb3VnaGx5RXF1YWwoZXhwZWN0ZWRQYXRoW2V4cGVjdGVk
U3VicGF0aFN0YXJ0ICsgMV0sIGV4cGVjdGVkUGF0aFtlaSArIDFdKQorICAgICAgICAgICAgICAg
ICAgICAmJiBjb29yZGluYXRlc0FyZVJvdWdobHlFcXVhbChleHBlY3RlZFBhdGhbZXhwZWN0ZWRT
dWJwYXRoU3RhcnQgKyAyXSwgZXhwZWN0ZWRQYXRoW2VpICsgMl0pKSB7CisgICAgICAgICAgICAg
ICAgICAgIGVpICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGFpLS07CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1ha2VTdHJpbmdGb3JQYXRoKHBhdGgpIHsKKyAgICAg
ICAgICAgIHJldHVybiBwYXRoLm1hcChmdW5jdGlvbihpdGVtKSB7CisgICAgICAgICAgICAgICAg
aWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICtpdGVtLnRvRml4ZWQoMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAg
ICAgICB9KS5qb2luKCcgJyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgZXhwZWN0ZWRQYXRo
U3RyaW5nID0gbWFrZVN0cmluZ0ZvclBhdGgoZXhwZWN0ZWQpOworICAgICAgICB2YXIgYWN0dWFs
UGF0aFN0cmluZyA9IG1ha2VTdHJpbmdGb3JQYXRoKGFjdHVhbCk7CisgICAgICAgIHZhciBhc3Nl
cnRpb25NZXNzYWdlID0gbWVzc2FnZSArICIgXG5FWFBFQ1RFRDogIiArIGV4cGVjdGVkUGF0aFN0
cmluZyArICJcbiAgQUNUVUFMOiAiICsgYWN0dWFsUGF0aFN0cmluZzsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQocGF0aHNBcmVSb3VnaGx5RXF1YWwoYWN0dWFsLCBleHBlY3RlZCksIGFz
c2VydGlvbk1lc3NhZ2UpOworICAgIH0KK30KKworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMjk5ZWJj
OWMxN2YzZGY4OGFlZWZkM2ZkYTNhMDE5Y2JmZDg4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMCwwICsx
LDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBuYW1lc3BhY2Ug
aXMgaW5qZWN0ZWQgaW50byBldmVyeSB0ZXN0IHBhZ2UuIEl0cyBmdW5jdGlvbnMgYXJlIGludm9r
ZWQgYnkKKy8vIEluc3BlY3RvclRlc3QgbWV0aG9kcyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2Ugdmlh
IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgpIGNhbGxzLgorSW5zcGVjdG9yVGVzdFByb3h5ID0ge307
CitJbnNwZWN0b3JUZXN0UHJveHkuX2luaXRpYWxpemVycyA9IFtdOworCisvLyBIZWxwZXIgc2Ny
aXB0cyBsaWtlIGBkZWJ1Z2dlci10ZXN0LmpzYCBtdXN0IHJlZ2lzdGVyIHRoZWlyIGluaXRpYWxp
emF0aW9uCisvLyBmdW5jdGlvbiB3aXRoIHRoaXMgbWV0aG9kIHNvIGl0IHdpbGwgYmUgbWFyc2hh
bGxlZCB0byB0aGUgaW5zcGVjdG9yIHBhZ2UuCitJbnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJ
bml0aWFsaXplciA9IGZ1bmN0aW9uKGluaXRpYWxpemVyKQoreworICAgIGlmICh0eXBlb2YgaW5p
dGlhbGl6ZXIgPT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRoaXMuX2luaXRpYWxpemVycy5wdXNo
KGluaXRpYWxpemVyLnRvU3RyaW5nKCkpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBieSB0aGUgdGVzdCBkb2N1bWVudCdzIGJvZHkgb25sb2FkIGhhbmRsZXIuCisKKy8vIEl0IGlu
aXRpYWxpemVzIHRoZSBpbnNwZWN0b3IgYW5kIGxvYWRzIGFueSBgKi10ZXN0LmpzYCBoZWxwZXIg
c2NyaXB0cworLy8gaW50byB0aGUgaW5zcGVjdG9yIHBhZ2UgY29udGV4dC4KK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIC8vIERvbid0IHRyeSB0byB1c2UgdGVzdFJ1bm5lciBpZiBydW5uaW5n
IHRocm91Z2ggdGhlIGJyb3dzZXIuCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gU2V0IHVwIHRoZSB0ZXN0IHBhZ2UgYmVmb3JlIHRoZSBsb2Fk
IGV2ZW50IGZpcmVzLgorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgd2luZG93LmludGVybmFscy5zZXRJbnNwZWN0b3JJ
c1VuZGVyVGVzdCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKwor
ICAgIGZ1bmN0aW9uIHJ1bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6
ZXJzQXJyYXkpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RQYWdlRGlkTG9hZCgp
OworCisgICAgICAgIC8vIElmIHRoZSB0ZXN0IHBhZ2UgcmVsb2FkZWQgYnV0IHdlIHN0YXJ0ZWQg
cnVubmluZyB0aGUgdGVzdCBpbiBhIHByZXZpb3VzCisgICAgICAgIC8vIG5hdmlnYXRpb24sIHRo
ZW4gZG9uJ3QgaW5pdGlhbGl6ZSB0aGUgaW5zcGVjdG9yIGZyb250ZW5kIGFnYWluLgorICAgICAg
ICBpZiAoSW5zcGVjdG9yVGVzdC5kaWRJbmplY3RUZXN0Q29kZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBmb3IgKHZhciBpbml0aWFsaXplciBvZiBpbml0aWFsaXplcnNBcnJheSkg
eworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplcigpOworICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkV4
Y2VwdGlvbiBpbiB0ZXN0IGluaXRpYWxpemF0aW9uOiAiICsgZSwgZS5zdGFjayB8fCAiKG5vIHN0
YWNrIHRyYWNlKSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0TWV0aG9kSW5Gcm9udGVuZCh0ZXN0RnVuY3Rpb24pCisgICAgeworICAgICAgICBpZiAoSW5z
cGVjdG9yVGVzdC5kaWRJbmplY3RUZXN0Q29kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmRpZEluamVjdFRlc3RDb2RlID0gdHJ1ZTsKKworICAgICAgICB0
cnkgeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9uKCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkV4Y2VwdGlvbiBkdXJpbmcgdGVzdCBleGVjdXRp
b246ICIgKyBlLCBlLnN0YWNrIHx8ICIobm8gc3RhY2sgdHJhY2UpIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFy
IGNvZGVTdHJpbmdUb0V2YWx1YXRlID0gIigiICsgcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5G
cm9udGVuZC50b1N0cmluZygpICsgIikoWyIgKyBJbnNwZWN0b3JUZXN0UHJveHkuX2luaXRpYWxp
emVycyArICJdKTsiOworICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb2Rl
U3RyaW5nVG9FdmFsdWF0ZSk7CisKKyAgICAvLyBgdGVzdGAgcmVmZXJzIHRvIGEgZnVuY3Rpb24g
ZGVmaW5lZCBpbiBnbG9iYWwgc2NvcGUgaW4gdGhlIHRlc3QgSFRNTCBwYWdlLgorICAgIGNvZGVT
dHJpbmdUb0V2YWx1YXRlID0gIigiICsgcnVuVGVzdE1ldGhvZEluRnJvbnRlbmQudG9TdHJpbmco
KSArICIpKCIgKyB0ZXN0LnRvU3RyaW5nKCkgKyAiKTsiOworICAgIHRlc3RSdW5uZXIuZXZhbHVh
dGVJbldlYkluc3BlY3Rvcihjb2RlU3RyaW5nVG9FdmFsdWF0ZSk7Cit9CisKK0luc3BlY3RvclRl
c3RQcm94eS5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgLy8gRG9uJ3QgdHJ5IHRv
IHVzZSB0ZXN0UnVubmVyIGlmIHJ1bm5pbmcgdGhyb3VnaCB0aGUgYnJvd3Nlci4KKyAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDbG9zZSBpbnNw
ZWN0b3IgYXN5bmNocm91c2x5IGluIGNhc2Ugd2Ugd2FudCB0byB0ZXN0IHRlYXItZG93biBiZWhh
dmlvci4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0UnVubmVyLmNs
b3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSwg
MCk7Cit9CisKKy8vIExvZ3MgbWVzc2FnZSB0byB1bmJ1ZmZlcmVkIHByb2Nlc3Mgc3Rkb3V0LCBh
dm9pZGluZyB0aW1lb3V0cy4KKy8vIG9ubHkgYmUgdXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90
IHRvIHByb2R1Y2Ugbm9ybWFsIHRlc3Qgb3V0cHV0LgorSW5zcGVjdG9yVGVzdFByb3h5LmRlYnVn
TG9nID0gZnVuY3Rpb24obWVzc2FnZSkKK3sKKyAgICB3aW5kb3cuYWxlcnQobWVzc2FnZSk7Cit9
CisKKy8vIEFkZCBhbmQgY2xlYXIgdGVzdCBvdXRwdXQgZnJvbSB0aGUgcmVzdWx0cyB3aW5kb3cu
CitJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKK3sKKyAgICAv
LyBGb3IgZWFybHkgZXJyb3JzIHRyaWdnZXJlZCB3aGVuIGxvYWRpbmcgdGhlIHRlc3QgcGFnZSwg
d3JpdGUgdG8gc3RkZXJyLgorICAgIGlmICghZG9jdW1lbnQuYm9keSkgeworICAgICAgICB0aGlz
LmRlYnVnTG9nKHRleHQpOworICAgICAgICB0aGlzLmNvbXBsZXRlVGVzdCgpOworICAgIH0KKwor
ICAgIGlmICghdGhpcy5fcmVzdWx0RWxlbWVudCkgeworICAgICAgICB0aGlzLl9yZXN1bHRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicHJlIik7CisgICAgICAgIHRoaXMuX3Jlc3Vs
dEVsZW1lbnQuaWQgPSAib3V0cHV0IjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0aGlzLl9yZXN1bHRFbGVtZW50KTsKKyAgICB9CisgICAgdGhpcy5fcmVzdWx0RWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgdGhpcy5fcmVz
dWx0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30K
KworSW5zcGVjdG9yVGVzdFByb3h5LmNsZWFyUmVzdWx0cyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAodGhpcy5fcmVzdWx0RWxlbWVudCkgeworICAgICAgICB0aGlzLl9yZXN1bHRFbGVtZW50LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fcmVzdWx0RWxlbWVudCk7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXN1bHRFbGVtZW50OworICAgIH0KK30KKworSW5zcGVjdG9yVGVzdFByb3h5LnJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVy
KQoreworICAgIHZhciByZXN1bHQgPSAiVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3QgcGFnZTog
IiArIG1lc3NhZ2UgKyAiIFsiICsgdXJsICsgIjoiICsgbGluZU51bWJlciArICJdIjsKKyAgICBJ
bnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KHJlc3VsdCk7CisgICAgSW5zcGVjdG9yVGVzdFBy
b3h5LmNvbXBsZXRlVGVzdCgpOworfQorCisvLyBDYXRjaCBzeW50YXggZXJyb3JzLCB0eXBlIGVy
cm9ycywgYW5kIG90aGVyIGV4Y2VwdGlvbnMuIFJ1biB0aGlzIGJlZm9yZSBsb2FkaW5nIG90aGVy
IGZpbGVzLgord2luZG93Lm9uZXJyb3IgPSBJbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5jYXVn
aHRFeGNlcHRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXBsYXkvcmVwbGF5LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXBsYXkvcmVwbGF5LXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjZGZjM2RlOWI0YWUwMjQ4OTMz
YzcwYjUxNDgyYzA3MTBkYmRkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcwpAQCAtMCwwICsxLDc5IEBACitJ
bnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKKworSW5z
cGVjdG9yVGVzdC5SZXBsYXkgPSB7fTsKKworSW5zcGVjdG9yVGVzdC5SZXBsYXkucnVuU2luZ2xl
U2VnbWVudFJlZlRlc3QgPSBmdW5jdGlvbihzdGF0ZUNvbXBhcmF0b3IpCit7CisgICAgdmFyIHN0
YXRlRHVyaW5nQ2FwdHVyaW5nID0gbnVsbDsKKyAgICB2YXIgc3RhdGVEdXJpbmdSZXBsYXlpbmcg
PSBudWxsOworCisgICAgdmFyIGlnbm9yZUNhY2hlT25SZWxvYWQgPSB0cnVlOworICAgIEluc3Bl
Y3RvclRlc3QucmVsb2FkUGFnZShpZ25vcmVDYWNoZU9uUmVsb2FkKQorICAgIC50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gd2FpdEZvck1haW5S
ZXNvdXJjZUJlZm9yZVN0YXJ0aW5nKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JUZXN0
LkV2ZW50RGlzcGF0Y2hlci5FdmVudC5UZXN0UGFnZURpZExvYWQsIHJlc29sdmUpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIldhaXRpbmcgZm9yIHRlc3QgcGFnZSB0byBmaW5pc2gg
aXRzIGluaXRpYWwgbG9hZC4uLiIpOworICAgICAgICB9KTsKKyAgICB9KQorICAgIC50aGVuKGZ1
bmN0aW9uKCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVGVzdCBwYWdlIGluaXRpYWwg
bG9hZCBkb25lLiIpOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gc3RhcnRD
YXB0dXJpbmcocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiV2FpdGluZyBmb3IgY2FwdHVyaW5nIHRvIHN0YXJ0Li4uIik7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdGFydENhcHR1cmluZygpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVw
bGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3RhcnRlZCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOwor
ICAgIH0pCisgICAgLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJDYXB0dXJpbmcgaGFzIHN0YXJ0ZWQuIik7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShm
dW5jdGlvbiB3YWl0VG9DYXB0dXJlSW5pdGlhbE5hdmlnYXRpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdGluZyB0byBjYXB0dXJlIGluaXRp
YWwgbmF2aWdhdGlvbi4uLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmVudERpc3Bh
dGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVu
dC5UZXN0UGFnZURpZExvYWQsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9KQorICAgIC50
aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiSW5pdGlhbCBuYXZp
Z2F0aW9uIGNhcHR1cmVkLiBEdW1waW5nIHN0YXRlLi4uLiIpOworICAgICAgICByZXR1cm4gUnVu
dGltZUFnZW50LmV2YWx1YXRlLnByb21pc2UoImR1bXBOb25kZXRlcm1pbmlzdGljU3RhdGUoKSIp
OworICAgIH0pCisgICAgLnRoZW4oZnVuY3Rpb24ocGF5bG9hZCkgeworICAgICAgICBzdGF0ZUR1
cmluZ0NhcHR1cmluZyA9IHBheWxvYWQudmFsdWU7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbiBzdG9wQ2FwdHVyaW5nKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc3RvcENhcHR1cmluZygpOworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3RvcHBlZCwgcmVzb2x2ZSk7CisgICAgICAgIH0p
OworICAgIH0pCisgICAgLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJDYXB0dXJlIHN0b3BwZWQsIG5vdyBzdGFydGluZyByZXBsYXkgdG8gY29tcGxldGlvbi4u
LiIpCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBzdGFydFBsYXliYWNrKHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
cmVwbGF5VG9Db21wbGV0aW9uKCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LlBs
YXliYWNrU3RhcnRlZCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0pCisgICAgLnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQbGF5YmFjayBoYXMgc3Rh
cnRlZC4iKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHdhaXRGb3JNYWlu
UmVzb3VyY2VXaGVuUmVwbGF5aW5nKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIldhaXRpbmcgdG8gcmVwbGF5IGluaXRpYWwgbmF2aWdhdGlvbi4uLiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0
ZW5lcihJbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudC5UZXN0UGFnZURpZExvYWQs
IHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9KQorICAgIC50aGVuKGZ1bmN0aW9uKCkgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiSW5pdGlhbCBuYXZpZ2F0aW9uIHJlcGxheWVkLiBE
dW1waW5nIHN0YXRlLi4uIik7CisgICAgICAgIHJldHVybiBSdW50aW1lQWdlbnQuZXZhbHVhdGUu
cHJvbWlzZSgiZHVtcE5vbmRldGVybWluaXN0aWNTdGF0ZSgpIik7CisgICAgfSkKKyAgICAudGhl
bihmdW5jdGlvbihwYXlsb2FkKSB7CisgICAgICAgIHN0YXRlRHVyaW5nUmVwbGF5aW5nID0gcGF5
bG9hZC52YWx1ZTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHdhaXRGb3JS
ZXBsYXlpbmdUb0ZpbmlzaChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIuRXZlbnQuUGxheWJhY2tGaW5pc2hlZCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAg
IH0pCisgICAgLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzdGF0ZXNFcXVhbCA9IHN0
YXRlRHVyaW5nQ2FwdHVyaW5nID09PSBzdGF0ZUR1cmluZ1JlcGxheWluZzsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0YXRlc0VxdWFsLCAiTm9uZGV0ZXJtaW5pc3RpYyBzdGF0
ZSBzaG91bGQgbm90IGRpZmZlciBkdXJpbmcgY2FwdHVyZSBhbmQgcmVwbGF5LiIpOworICAgICAg
ICBpZiAoIXN0YXRlc0VxdWFsKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU3Rh
dGUgZHVyaW5nIGNhcHR1cmluZzogIiArIHN0YXRlRHVyaW5nQ2FwdHVyaW5nKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJTdGF0ZSBkdXJpbmcgcmVwbGF5aW5nOiAiICsgc3RhdGVE
dXJpbmdSZXBsYXlpbmcpOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfSk7Cit9OworCit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVz
dC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTAyNTU4NzBhMTk1NjFkNzk2ZWY4OGYyZDg1
OTYwMDkwMzRlMjRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3Rlcklu
aXRpYWxpemVyKGZ1bmN0aW9uKCkgewotCi1JbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFr
cG9pbnRzID0gZnVuY3Rpb24oKQotewotICAgIGlmICghV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFu
YWdlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJl
YWtwb2ludEFkZGVkLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQnJlYWtwb2ludCB3YXMgYWRkZWQuIik7Ci0gICAgfSk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5CcmVha3BvaW50UmVtb3ZlZCwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgd2FzIHJlbW92ZWQuIik7Ci0gICAgfSk7Ci0K
LSAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQs
ICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJCcmVha3BvaW50IGRpc2FibGVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmRpc2Fi
bGVkKTsKLSAgICB9KTsKLQotICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5n
ZSwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJn
ZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7Ci0KLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlZDogIiAr
IGJyZWFrcG9pbnQucmVzb2x2ZWQpOwotICAgIH0pOwotCi0gICAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BdXRv
Q29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHZhciBicmVha3Bv
aW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGF1dG9jb250aW51
ZSBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwotICAgIH0pOwot
Ci0gICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQsICJV
bmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJC
cmVha3BvaW50IGNvbmRpdGlvbiBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5jb25kaXRpb24pOwot
ICAgIH0pOwotCi0gICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKLQotICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQnJlYWtwb2ludCBhY3Rpb25zIGNoYW5nZWQuIE5ldyBjb3VudDogIiArIGJyZWFrcG9p
bnQuYWN0aW9ucy5sZW5ndGgpOwotICAgIH0pOwotfQotCi1JbnNwZWN0b3JUZXN0LnN0YXJ0VHJh
Y2luZ1Byb2JlcyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIVdlYkluc3BlY3Rvci5wcm9iZU1h
bmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0
QWRkZWQsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHZhciBwcm9iZVNldCA9IGV2ZW50LmRh
dGEucHJvYmVTZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlByb2JlU2V0LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKLQotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUHJvYmUgc2V0IHdhcyBhZGRlZC4gTmV3IGNvdW50OiAi
ICsgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5wcm9iZVNldHMubGVuZ3RoKTsKLSAgICB9KTsK
LQotICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQocHJvYmVTZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXQs
ICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJQcm9iZSBzZXQgd2FzIHJlbW92ZWQuIE5ldyBjb3VudDogIiArIFdlYkluc3BlY3Rvci5wcm9i
ZU1hbmFnZXIucHJvYmVTZXRzLmxlbmd0aCk7Ci0gICAgfSk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
UHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuRXhwcmVzc2lv
bkNoYW5nZWQsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LnRh
cmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUHJvYmUsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotCi0gICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJQcm9iZSB3aXRoIGlkZW50aWZpZXIgIiArIHByb2JlLmlkICsgIiBjaGFuZ2Vk
IGV4cHJlc3Npb246ICIgKyBwcm9iZS5leHByZXNzaW9uKTsKLSAgICB9KTsKLQotICAgIFdlYklu
c3BlY3Rvci5Qcm9iZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5T
YW1wbGVBZGRlZCwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgdmFyIHByb2JlID0gZXZlbnQu
dGFyZ2V0OwotICAgICAgICB2YXIgc2FtcGxlID0gZXZlbnQuZGF0YTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmUsICJVbmV4cGVjdGVk
IG9iamVjdCB0eXBlISIpOwotICAgICAgICBjb25zb2xlLmFzc2VydChzYW1wbGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUHJvYmVTYW1wbGUsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwot
Ci0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm9iZSB3aXRoIGlkZW50aWZpZXIgIiArIHBy
b2JlLmlkICsgIiBhZGRlZCBzYW1wbGU6ICIgKyBzYW1wbGUpOwotICAgIH0pOwotCi0gICAgV2Vi
SW5zcGVjdG9yLlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50
LlNhbXBsZXNDbGVhcmVkLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICB2YXIgcHJvYmUgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlByb2JlLCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKLQotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiUHJvYmUgd2l0aCBpZGVudGlmaWVyICIgKyBwcm9iZS5pZCArICIg
Y2xlYXJlZCBhbGwgc2FtcGxlcy4iKTsKLSAgICB9KTsKLQotICAgIFdlYkluc3BlY3Rvci5Qcm9i
ZVNldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZUFk
ZGVkLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICB2YXIgcHJvYmUgPSBldmVudC5kYXRhOwot
ICAgICAgICB2YXIgcHJvYmVTZXQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHByb2JlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlLCAiVW5leHBlY3RlZCBvYmpl
Y3QgdHlwZSEiKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVTZXQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUHJvYmVTZXQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotCi0gICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJQcm9iZSB3aXRoIGlkZW50aWZpZXIgIiArIHByb2JlLmlk
ICsgIiB3YXMgYWRkZWQgdG8gcHJvYmUgc2V0LiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiUHJvYmUgc2V0J3MgcHJvYmUgY291bnQ6ICIgKyBwcm9iZVNldC5wcm9iZXMubGVuZ3RoKTsK
LSAgICB9KTsKLQotICAgIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZVJlbW92ZWQsIGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgIHZhciBwcm9iZVNldCA9
IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUHJvYmUsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwotICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwg
IlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlByb2JlIHdpdGggaWRlbnRpZmllciAiICsgcHJvYmUuaWQgKyAiIHdhcyByZW1vdmVkIGZyb20g
cHJvYmUgc2V0LiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUHJvYmUgc2V0J3MgcHJv
YmUgY291bnQ6ICIgKyBwcm9iZVNldC5wcm9iZXMubGVuZ3RoKTsKLSAgICB9KTsKLX0KLQotfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcHJvYmUtbWFuYWdl
ci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCmluZGV4IGY2Mzg5YTk4MDU4
N2Q2ODY2OGU4YjlhZTFhMjM3MWQ5MGFhNzYyMTcuLjVjYjA1NzVmMDY5M2EwMjdhYzAzNDE1ZjA5
NDdjYzQyMGRjMTU3YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1s
CkBAIC0xLDggKzEsOCBAQAogPCFkb2N0eXBlIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9kZWJ1Z2dlci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iLi9yZXNvdXJjZXMvYnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0bWwKaW5kZXggZmMyMTM2MGNm
NjFmNzQyZGU1MjliM2UxNTZkMWE4OGU0OTU0Mjg0NS4uYWJjMjdjZDliNDRkY2Q0NjJmMDhkNjQw
YmU0NTRmNzc0YjE5NDRmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9j
b250ZW50LWZsb3ctY29udGVudC1ub2Rlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMuaHRtbApAQCAtMTEsNyArMTEsNyBAQAog
ICAgIC13ZWJraXQtZmxvdy1pbnRvOiBub25lOwogfQogPC9zdHlsZT4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBjaGFu
Z2VGbG93Q29udGVudCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2NvbnRlbnQtZmxvdy1jb250ZW50LXJlbW92YWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3ZhbC5odG1sCmluZGV4IDg0Y2UxMzAyYjhh
Yjc5MWRlZDUxYjhmMTE4ODk5ZWU0NWQyYmY1ZTEuLjE1ZWNiNWJhOWZkNjM0M2Q0ZGE0NTc1Njgz
ODlmOTY1ZTRlNTY4MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29u
dGVudC1mbG93LWNvbnRlbnQtcmVtb3ZhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3ZhbC5odG1sCkBAIC03LDcgKzcsNyBAQAog
ICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OwogfQogPC9zdHlsZT4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBjaGFu
Z2VGbG93Q29udGVudCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2NvbnRlbnQtZmxvdy1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRl
bnQtZmxvdy1saXN0Lmh0bWwKaW5kZXggN2I2ODdmODhjMGMxMDc1NmE1YzBiNjRiNDA3ZTdkY2Y3
ZWZlZTc3NC4uMzZmZTkyZTNmNzU4YTdhZTg3ZDhhOWFiYzJlZjRjNTA1OTdhNTAwNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctbGlzdC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWxpc3QuaHRtbApAQCAt
Nyw3ICs3LDcgQEAKICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7CiB9CiA8L3N0eWxlPgot
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
IGZ1bmN0aW9uIHJlbW92ZUZsb3coKQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8uaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLmh0bWwKaW5kZXggMDc5NGEyZWMyZGJj
OTNkYzA1YzgyZTUyZjJmYzVlN2U2NjVjYzU5OS4uN2IwZDUyNWQwNTk5NzU2NDk0YWJhMTAwNDRm
ODc3YjYyZWQ4NWI5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250
ZW50LW5vZGUtcmVnaW9uLWluZm8uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2NvbnRlbnQtbm9kZS1yZWdpb24taW5mby5odG1sCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgaGVp
Z2h0OiAxMDBweDsKIH0KIDwvc3R5bGU+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1zaGFwZS1vdXRzaWRlLW1hcmdp
bi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtc2hhcGUtb3V0c2lk
ZS1tYXJnaW4uaHRtbAppbmRleCA0OGI0ZGRiNzg0NTMwMzMyMzE0NmE1MjVjZWE1NzYwNGU2YmE0
Y2NkLi5kNWE1Y2VhNTc1ZGUwZjljNmRmNzY1YTVlMDI2OTkwZDgwNmM5Mjk5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1zaGFwZS1vdXRzaWRlLW1hcmdp
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0LXNoYXBlLW91
dHNpZGUtbWFyZ2luLmh0bWwKQEAgLTI0LDggKzI0LDggQEAgYm9keSB7CiAgICAgLXdlYmtpdC1z
aGFwZS1tYXJnaW46IDFweDsKIH0KIDwvc3R5bGU+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL3NoYXBlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgdGVzdGNhc2Vz
ID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtc2hh
cGUtb3V0c2lkZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtc2hh
cGUtb3V0c2lkZS5odG1sCmluZGV4IGYxZjEwYzBkYzNkMjkwOTA4N2VlNDMzZTljZjgyNTI3MWFl
YzJmYWMuLmRlODE2NjlhYTZiZDE1Nzg2MWY1MjI5MjI2YmExZDkwY2VmOWU3MTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0LXNoYXBlLW91dHNpZGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1zaGFwZS1vdXRzaWRl
Lmh0bWwKQEAgLTUyLDggKzUyLDggQEAgYm9keSB7CiAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6
IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFB
QUJrQ0FNQUFBQkhQR1ZtQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlX
UjVjY2xsUEFBQUFBWlFURlJGQUFELy8vLy9lOXlaTEFBQUFBSjBVazVUL3dEbHR6QktBQUFBU1Vs
RVFWUjQydXpZc1EwQU1BZ0VzV2YvcFRNREJVUkl2Z1hjWDJxaFFDQVFDQVFDZ1VBK0kya0hnVUFn
RUFnRUFvRkFJQkFJQkFLQlFPWVJveE1DZ1VBZ0VBamtIUElFR0FBMmloMU5WbmFER2dBQUFBQkpS
VTVFcmtKZ2dnPT0iKTsKIH0KIDwvc3R5bGU+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIuL3NoYXBlcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKICAgICB2YXIgdGVzdGNhc2VzID0g
WwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDIzYzU2OTU2NDBiMGZiZmY2ZGJkY2VhMDY2NzFmNTNiZmY3Y2E1OTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDkxICsw
LDAgQEAKLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkg
ewotCi1JbnNwZWN0b3JUZXN0LlNoYXBlcyA9IHsKLSAgICBnZXRTaGFwZU91dHNpZGVJbmZvRm9y
U2VsZWN0b3I6IGZ1bmN0aW9uKHNlbGVjdG9yLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQocmVxdWVzdERvY3VtZW50
Q2FsbGJhY2spOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlcXVlc3REb2N1bWVudENhbGxiYWNrKG5v
ZGUpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRE9NTm9kZSwgIlVuZXhwZWN0ZWQgYXJndW1lbnQgdG8gcmVxdWVzdERvY3Vt
ZW50IGNhbGxiYWNrLiIpCi0gICAgICAgICAgICBET01BZ2VudC5xdWVyeVNlbGVjdG9yLmludm9r
ZSh7bm9kZUlkOiBub2RlLmlkLCBzZWxlY3Rvcjogc2VsZWN0b3J9LCBxdWVyeVNlbGVjdG9yQ2Fs
bGJhY2spOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcXVlcnlTZWxlY3RvckNhbGxi
YWNrKGVycm9yLCBub2RlSWQpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFl
cnJvciwgIkVycm9yIGluIGNhbGxiYWNrIGZvciBET01BZ2VudC5xdWVyeVNlbGVjdG9yIik7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlSWQsICJJbnZhbGlkIGFyZ3VtZW50
IHRvIGNhbGxiYWNrIGZvciBET01BZ2VudC5xdWVyeVNlbGVjdG9yIik7Ci0KLSAgICAgICAgICAg
IHZhciBoaWdobGlnaHRDb25maWcgPSB7Ci0gICAgICAgICAgICAgICAgc2hvd0luZm86IHRydWUs
Ci0gICAgICAgICAgICAgICAgY29udGVudENvbG9yOiB7cjogMjU1LCBnOiAyNTUsIGI6IDI1NX0s
Ci0gICAgICAgICAgICAgICAgcGFkZGluZ0NvbG9yOiB7cjogMjU1LCBnOiAyNTUsIGI6IDI1NX0s
Ci0gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwK
LSAgICAgICAgICAgICAgICBtYXJnaW5Db2xvcjoge3I6IDI1NSwgZzogMjU1LCBiOiAyNTV9LAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUuaW52b2tl
KHtub2RlSWQ6IG5vZGVJZCwgaGlnaGxpZ2h0Q29uZmlnOiBoaWdobGlnaHRDb25maWd9LCBoaWdo
bGlnaHROb2RlQ2FsbGJhY2spOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gaGlnaGxp
Z2h0Tm9kZUNhbGxiYWNrKGVycm9yKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dCghZXJyb3IsICJFcnJvciBpbiBjYWxsYmFjayBmb3IgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZSIp
OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuaW50
ZXJuYWxzLmluc3BlY3RvckhpZ2hsaWdodE9iamVjdCgpIiwgcmVjZWl2ZWRIaWdobGlnaHRPYmpl
Y3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZWRIaWdobGlnaHRPYmpl
Y3QoZXJyb3IsIHBheWxvYWQsIHdhc1Rocm93bikgewotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWVycm9yLCAiV2hlbiBldmFsdWF0aW5nIGNvZGUsIHJlY2VpdmVkIHVuZXhwZWN0ZWQgZXJy
b3I6IiArIGVycm9yKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFlcnJvciwgIldoZW4g
ZXZhbHVhdGluZyBjb2RlLCBhbiBleGNlcHRpb24gd2FzIHRocm93bjoiICsgd2FzVGhyb3duKTsK
LQotICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHBheWxvYWQudmFsdWUpOwotICAg
ICAgICAgICAgY2FsbGJhY2soZGF0YS5lbGVtZW50SW5mby5zaGFwZU91dHNpZGVJbmZvKTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBhc3NlcnRQYXRoc0FyZVJvdWdobHlFcXVhbDogZnVuY3Rp
b24oYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNv
b3JkaW5hdGVzQXJlUm91Z2hseUVxdWFsKGEsIGIpIHsKLSAgICAgICAgICAgIC8vIFNvbWUgcGxh
dGZvcm1zIG1heSBvbmx5IHN0b3JlIGludGVnZXIgcGF0aCBwb2ludHMsIHNvIHRoZSBwb3RlbnRp
YWwKLSAgICAgICAgICAgIC8vIGRpZmZlcmVuY2VzIGJldHdlZW4gY29ycmVjdCBwYXRocyBjYW4g
YmUgcm91Z2hseSBoYWxmIGEgdW5pdC4KLSAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYSA9PT0g
Im51bWJlciIgJiYgdHlwZW9mIGIgPT09ICJudW1iZXIiICYmIE1hdGguYWJzKGEgLSBiKSA8IDAu
NTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHBhdGhzQXJlUm91Z2hseUVxdWFsKGFj
dHVhbFBhdGgsIGV4cGVjdGVkUGF0aCkgewotICAgICAgICAgICAgdmFyIGV4cGVjdGVkU3VicGF0
aFN0YXJ0ID0gMCwgZWksIGFpOwotICAgICAgICAgICAgZm9yICh2YXIgZWkgPSAwLCBhaSA9IDA7
IGFpIDwgYWN0dWFsUGF0aC5sZW5ndGggJiYgZWkgPCBleHBlY3RlZFBhdGgubGVuZ3RoOyBhaSsr
LCBlaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUGF0aFtlaV0gPT09ICdNJykK
LSAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRTdWJwYXRoU3RhcnQgPSBlaTsKLQotICAgICAg
ICAgICAgICAgIGlmIChhY3R1YWxQYXRoW2FpXSA9PT0gZXhwZWN0ZWRQYXRoW2VpXQotICAgICAg
ICAgICAgICAgICAgICB8fCBjb29yZGluYXRlc0FyZVJvdWdobHlFcXVhbChhY3R1YWxQYXRoW2Fp
XSwgZXhwZWN0ZWRQYXRoW2VpXSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICAgICAgLy8gRXh0cmFwb2xhdGUgdGhlIG1pc3NpbmcgbGluZSB0byBjb21tYW5k
IGlmIGl0IGlzIG1pc3NpbmcgZnJvbSBhY3R1YWwuCi0gICAgICAgICAgICAgICAgLy8gVGhlIGNo
b2ljZSB0byBjbG9zZSB0aGUgcGF0aCB3aXRoIGFuIGV4cGxpY2l0IGxpbmUgdG8gY29tbWFuZCBp
cwotICAgICAgICAgICAgICAgIC8vIHBsYXRmb3JtIGRlcGVuZGVudC4KLSAgICAgICAgICAgICAg
ICBpZiAoYWN0dWFsUGF0aFthaV0gPT09ICdaJwotICAgICAgICAgICAgICAgICAgICAmJiBleHBl
Y3RlZFBhdGhbZWldID09PSAnTCcKLSAgICAgICAgICAgICAgICAgICAgJiYgY29vcmRpbmF0ZXNB
cmVSb3VnaGx5RXF1YWwoZXhwZWN0ZWRQYXRoW2V4cGVjdGVkU3VicGF0aFN0YXJ0ICsgMV0sIGV4
cGVjdGVkUGF0aFtlaSArIDFdKQotICAgICAgICAgICAgICAgICAgICAmJiBjb29yZGluYXRlc0Fy
ZVJvdWdobHlFcXVhbChleHBlY3RlZFBhdGhbZXhwZWN0ZWRTdWJwYXRoU3RhcnQgKyAyXSwgZXhw
ZWN0ZWRQYXRoW2VpICsgMl0pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVpICs9IDI7Ci0gICAg
ICAgICAgICAgICAgICAgIGFpLS07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIG1ha2VTdHJpbmdGb3JQYXRoKHBhdGgpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXRoLm1h
cChmdW5jdGlvbihpdGVtKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAn
bnVtYmVyJykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICtpdGVtLnRvRml4ZWQoMik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgICAgICB9KS5qb2luKCcgJyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgZXhwZWN0ZWRQYXRoU3RyaW5nID0gbWFrZVN0cmluZ0Zv
clBhdGgoZXhwZWN0ZWQpOwotICAgICAgICB2YXIgYWN0dWFsUGF0aFN0cmluZyA9IG1ha2VTdHJp
bmdGb3JQYXRoKGFjdHVhbCk7Ci0gICAgICAgIHZhciBhc3NlcnRpb25NZXNzYWdlID0gbWVzc2Fn
ZSArICIgXG5FWFBFQ1RFRDogIiArIGV4cGVjdGVkUGF0aFN0cmluZyArICJcbiAgQUNUVUFMOiAi
ICsgYWN0dWFsUGF0aFN0cmluZzsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQocGF0aHNB
cmVSb3VnaGx5RXF1YWwoYWN0dWFsLCBleHBlY3RlZCksIGFzc2VydGlvbk1lc3NhZ2UpOwotICAg
IH0KLX0KLQotfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMjk5ZWJjOWMxN2YzZGY4OGFlZWZkM2ZkYTNhMDE5
Y2JmZDg4M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi0g
KiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQKLSAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQotICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgbmFt
ZXNwYWNlIGlzIGluamVjdGVkIGludG8gZXZlcnkgdGVzdCBwYWdlLiBJdHMgZnVuY3Rpb25zIGFy
ZSBpbnZva2VkIGJ5Ci0vLyBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgb24gdGhlIGluc3BlY3RvciBw
YWdlIHZpYSBSdW50aW1lQWdlbnQuZXZhbHVhdGUoKSBjYWxscy4KLUluc3BlY3RvclRlc3RQcm94
eSA9IHt9OwotSW5zcGVjdG9yVGVzdFByb3h5Ll9pbml0aWFsaXplcnMgPSBbXTsKLQotLy8gSGVs
cGVyIHNjcmlwdHMgbGlrZSBgZGVidWdnZXItdGVzdC5qc2AgbXVzdCByZWdpc3RlciB0aGVpciBp
bml0aWFsaXphdGlvbgotLy8gZnVuY3Rpb24gd2l0aCB0aGlzIG1ldGhvZCBzbyBpdCB3aWxsIGJl
IG1hcnNoYWxsZWQgdG8gdGhlIGluc3BlY3RvciBwYWdlLgotSW5zcGVjdG9yVGVzdFByb3h5LnJl
Z2lzdGVySW5pdGlhbGl6ZXIgPSBmdW5jdGlvbihpbml0aWFsaXplcikKLXsKLSAgICBpZiAodHlw
ZW9mIGluaXRpYWxpemVyID09PSAiZnVuY3Rpb24iKQotICAgICAgICB0aGlzLl9pbml0aWFsaXpl
cnMucHVzaChpbml0aWFsaXplci50b1N0cmluZygpKTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgYnkgdGhlIHRlc3QgZG9jdW1lbnQncyBib2R5IG9ubG9hZCBoYW5kbGVyLgotCi0v
LyBJdCBpbml0aWFsaXplcyB0aGUgaW5zcGVjdG9yIGFuZCBsb2FkcyBhbnkgYCotdGVzdC5qc2Ag
aGVscGVyIHNjcmlwdHMKLS8vIGludG8gdGhlIGluc3BlY3RvciBwYWdlIGNvbnRleHQuCi1mdW5j
dGlvbiBydW5UZXN0KCkKLXsKLSAgICAvLyBEb24ndCB0cnkgdG8gdXNlIHRlc3RSdW5uZXIgaWYg
cnVubmluZyB0aHJvdWdoIHRoZSBicm93c2VyLgotICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFNldCB1cCB0aGUgdGVzdCBwYWdlIGJlZm9yZSB0
aGUgbG9hZCBldmVudCBmaXJlcy4KLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0SW5z
cGVjdG9ySXNVbmRlclRlc3QodHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zaG93V2ViSW5zcGVjdG9y
KCk7Ci0KLSAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250ZW5kKGlu
aXRpYWxpemVyc0FycmF5KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC50ZXN0UGFnZURp
ZExvYWQoKTsKLQotICAgICAgICAvLyBJZiB0aGUgdGVzdCBwYWdlIHJlbG9hZGVkIGJ1dCB3ZSBz
dGFydGVkIHJ1bm5pbmcgdGhlIHRlc3QgaW4gYSBwcmV2aW91cwotICAgICAgICAvLyBuYXZpZ2F0
aW9uLCB0aGVuIGRvbid0IGluaXRpYWxpemUgdGhlIGluc3BlY3RvciBmcm9udGVuZCBhZ2Fpbi4K
LSAgICAgICAgaWYgKEluc3BlY3RvclRlc3QuZGlkSW5qZWN0VGVzdENvZGUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaW5pdGlhbGl6ZXIgb2YgaW5pdGlhbGl6ZXJz
QXJyYXkpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIo
KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKCJFeGNlcHRpb24gaW4gdGVzdCBpbml0aWFsaXphdGlvbjogIiArIGUsIGUuc3RhY2sgfHwg
IihubyBzdGFjayB0cmFjZSkiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gcnVuVGVzdE1ldGhvZEluRnJvbnRlbmQodGVzdEZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAg
aWYgKEluc3BlY3RvclRlc3QuZGlkSW5qZWN0VGVzdENvZGUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5kaWRJbmplY3RUZXN0Q29kZSA9IHRydWU7Ci0KLSAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHRlc3RGdW5jdGlvbigpOwotICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFeGNlcHRpb24gZHVyaW5nIHRlc3Qg
ZXhlY3V0aW9uOiAiICsgZSwgZS5zdGFjayB8fCAiKG5vIHN0YWNrIHRyYWNlKSIpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZhciBjb2RlU3RyaW5nVG9FdmFsdWF0ZSA9ICIoIiArIHJ1bkluaXRpYWxpemF0aW9uTWV0
aG9kc0luRnJvbnRlbmQudG9TdHJpbmcoKSArICIpKFsiICsgSW5zcGVjdG9yVGVzdFByb3h5Ll9p
bml0aWFsaXplcnMgKyAiXSk7IjsKLSAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoY29kZVN0cmluZ1RvRXZhbHVhdGUpOwotCi0gICAgLy8gYHRlc3RgIHJlZmVycyB0byBhIGZ1
bmN0aW9uIGRlZmluZWQgaW4gZ2xvYmFsIHNjb3BlIGluIHRoZSB0ZXN0IEhUTUwgcGFnZS4KLSAg
ICBjb2RlU3RyaW5nVG9FdmFsdWF0ZSA9ICIoIiArIHJ1blRlc3RNZXRob2RJbkZyb250ZW5kLnRv
U3RyaW5nKCkgKyAiKSgiICsgdGVzdC50b1N0cmluZygpICsgIik7IjsKLSAgICB0ZXN0UnVubmVy
LmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29kZVN0cmluZ1RvRXZhbHVhdGUpOwotfQotCi1JbnNw
ZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQotewotICAgIC8vIERvbid0
IHRyeSB0byB1c2UgdGVzdFJ1bm5lciBpZiBydW5uaW5nIHRocm91Z2ggdGhlIGJyb3dzZXIuCi0g
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ2xv
c2UgaW5zcGVjdG9yIGFzeW5jaHJvdXNseSBpbiBjYXNlIHdlIHdhbnQgdG8gdGVzdCB0ZWFyLWRv
d24gYmVoYXZpb3IuCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFJ1
bm5lci5jbG9zZVdlYkluc3BlY3RvcigpOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0sIDApOwot
ICAgIH0sIDApOwotfQotCi0vLyBMb2dzIG1lc3NhZ2UgdG8gdW5idWZmZXJlZCBwcm9jZXNzIHN0
ZG91dCwgYXZvaWRpbmcgdGltZW91dHMuCi0vLyBvbmx5IGJlIHVzZWQgdG8gZGVidWcgdGVzdHMg
YW5kIG5vdCB0byBwcm9kdWNlIG5vcm1hbCB0ZXN0IG91dHB1dC4KLUluc3BlY3RvclRlc3RQcm94
eS5kZWJ1Z0xvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCi17Ci0gICAgd2luZG93LmFsZXJ0KG1lc3Nh
Z2UpOwotfQotCi0vLyBBZGQgYW5kIGNsZWFyIHRlc3Qgb3V0cHV0IGZyb20gdGhlIHJlc3VsdHMg
d2luZG93LgotSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCi17
Ci0gICAgLy8gRm9yIGVhcmx5IGVycm9ycyB0cmlnZ2VyZWQgd2hlbiBsb2FkaW5nIHRoZSB0ZXN0
IHBhZ2UsIHdyaXRlIHRvIHN0ZGVyci4KLSAgICBpZiAoIWRvY3VtZW50LmJvZHkpIHsKLSAgICAg
ICAgdGhpcy5kZWJ1Z0xvZyh0ZXh0KTsKLSAgICAgICAgdGhpcy5jb21wbGV0ZVRlc3QoKTsKLSAg
ICB9Ci0KLSAgICBpZiAoIXRoaXMuX3Jlc3VsdEVsZW1lbnQpIHsKLSAgICAgICAgdGhpcy5fcmVz
dWx0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByZSIpOwotICAgICAgICB0aGlz
Ll9yZXN1bHRFbGVtZW50LmlkID0gIm91dHB1dCI7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQodGhpcy5fcmVzdWx0RWxlbWVudCk7Ci0gICAgfQotICAgIHRoaXMuX3Jlc3VsdEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOwotICAgIHRo
aXMuX3Jlc3VsdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KSk7Ci19Ci0KLUluc3BlY3RvclRlc3RQcm94eS5jbGVhclJlc3VsdHMgPSBmdW5jdGlvbigpCi17
Ci0gICAgaWYgKHRoaXMuX3Jlc3VsdEVsZW1lbnQpIHsKLSAgICAgICAgdGhpcy5fcmVzdWx0RWxl
bWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX3Jlc3VsdEVsZW1lbnQpOwotICAgICAg
ICBkZWxldGUgdGhpcy5fcmVzdWx0RWxlbWVudDsKLSAgICB9Ci19Ci0KLUluc3BlY3RvclRlc3RQ
cm94eS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGlu
ZU51bWJlcikKLXsKLSAgICB2YXIgcmVzdWx0ID0gIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiB0ZXN0
IHBhZ2U6ICIgKyBtZXNzYWdlICsgIiBbIiArIHVybCArICI6IiArIGxpbmVOdW1iZXIgKyAiXSI7
Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdChyZXN1bHQpOwotICAgIEluc3BlY3Rv
clRlc3RQcm94eS5jb21wbGV0ZVRlc3QoKTsKLX0KLQotLy8gQ2F0Y2ggc3ludGF4IGVycm9ycywg
dHlwZSBlcnJvcnMsIGFuZCBvdGhlciBleGNlcHRpb25zLiBSdW4gdGhpcyBiZWZvcmUgbG9hZGlu
ZyBvdGhlciBmaWxlcy4KLXdpbmRvdy5vbmVycm9yID0gSW5zcGVjdG9yVGVzdFByb3h5LnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Bh
Z2UvbWFpbi1mcmFtZS1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2Uv
bWFpbi1mcmFtZS1yZXNvdXJjZS5odG1sCmluZGV4IDk4MWUzYjAzN2VhMDY2NGY3NDgyMDM3YmY3
YzNjN2EzZTAzMDRmNWUuLmJiNTM2MDZiYmM0NGNiNGFmZWU1OThhM2Y0YzY2ZDQ4NDY1MDQyMWYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL21haW4tZnJhbWUtcmVzb3Vy
Y2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9tYWluLWZyYW1lLXJlc291
cmNlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IWRvY3R5cGUgaHRtbD4KIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogZnVuY3Rpb24gdGVzdCgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cmVwbGF5L2phdmFzY3JpcHQtZGF0ZS1ub3cuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXBsYXkvamF2YXNjcmlwdC1kYXRlLW5vdy5odG1sCmluZGV4IGQzMjkwZTllZmU5MzAyODAxODMw
ODFkZmIyMGNlZThlMTE0OTdlYWYuLjY4ZDQ2MjA3NWUxYTg1ZTQ5OGFjNmY0MmZkMzA5ZTkxMmNl
ODc2OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvamF2YXNjcmlw
dC1kYXRlLW5vdy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvamF2YXNj
cmlwdC1kYXRlLW5vdy5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vcmVwbGF5LXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVwbGF5L3JlcGxheS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHdpbmRvdy5fdGlt
ZXMgPSBbRGF0ZS5ub3coKSwgbmV3IERhdGUoKS50b1N0cmluZygpXTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvamF2YXNjcmlwdC1yYW5kb20tc2VlZC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS9qYXZhc2NyaXB0LXJhbmRvbS1zZWVkLmh0bWwK
aW5kZXggMjIxMWYyMDY4Y2VmOGZkNDkxZmFkMWE2NmQ1YzI1MjRlMjJlYzA1OC4uNjNlYzRkZTk0
NWY3YzBlYWI2ZTNjOGQ3YjY2Zjk1MDQ1M2JkNDVmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3JlcGxheS9qYXZhc2NyaXB0LXJhbmRvbS1zZWVkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3JlcGxheS9qYXZhc2NyaXB0LXJhbmRvbS1zZWVkLmh0bWwKQEAgLTEs
NyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iLi9yZXBsYXktdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIAogd2luZG93Ll9yYW5kb21OdW1iZXIgPSBNYXRoLnJhbmRvbSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5q
cyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1Y2RmYzNkZTliNGFlMDI0ODkzM2M3MGI1MTQ4MmMwNzEw
ZGJkZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxpemVyKGZ1
bmN0aW9uKCkgewotCi1JbnNwZWN0b3JUZXN0LlJlcGxheSA9IHt9OwotCi1JbnNwZWN0b3JUZXN0
LlJlcGxheS5ydW5TaW5nbGVTZWdtZW50UmVmVGVzdCA9IGZ1bmN0aW9uKHN0YXRlQ29tcGFyYXRv
cikKLXsKLSAgICB2YXIgc3RhdGVEdXJpbmdDYXB0dXJpbmcgPSBudWxsOwotICAgIHZhciBzdGF0
ZUR1cmluZ1JlcGxheWluZyA9IG51bGw7Ci0KLSAgICB2YXIgaWdub3JlQ2FjaGVPblJlbG9hZCA9
IHRydWU7Ci0gICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKGlnbm9yZUNhY2hlT25SZWxvYWQp
Ci0gICAgLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbiB3YWl0Rm9yTWFpblJlc291cmNlQmVmb3JlU3RhcnRpbmcocmVzb2x2ZSwgcmVqZWN0KSB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3Rl
bmVyKEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCwg
cmVzb2x2ZSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdGluZyBmb3IgdGVz
dCBwYWdlIHRvIGZpbmlzaCBpdHMgaW5pdGlhbCBsb2FkLi4uIik7Ci0gICAgICAgIH0pOwotICAg
IH0pCi0gICAgLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
ZXN0IHBhZ2UgaW5pdGlhbCBsb2FkIGRvbmUuIik7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbiBzdGFydENhcHR1cmluZyhyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJXYWl0aW5nIGZvciBjYXB0dXJpbmcgdG8gc3RhcnQuLi4iKTsK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0Q2FwdHVyaW5nKCk7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNhcHR1cmVTdGFydGVkLCByZXNvbHZl
KTsKLSAgICAgICAgfSk7Ci0gICAgfSkKLSAgICAudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkNhcHR1cmluZyBoYXMgc3RhcnRlZC4iKTsKLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHdhaXRUb0NhcHR1cmVJbml0aWFsTmF2aWdhdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJXYWl0aW5n
IHRvIGNhcHR1cmUgaW5pdGlhbCBuYXZpZ2F0aW9uLi4uIik7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKEluc3BlY3RvclRlc3QuRXZl
bnREaXNwYXRjaGVyLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0p
OwotICAgIH0pCi0gICAgLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJJbml0aWFsIG5hdmlnYXRpb24gY2FwdHVyZWQuIER1bXBpbmcgc3RhdGUuLi4uIik7Ci0g
ICAgICAgIHJldHVybiBSdW50aW1lQWdlbnQuZXZhbHVhdGUucHJvbWlzZSgiZHVtcE5vbmRldGVy
bWluaXN0aWNTdGF0ZSgpIik7Ci0gICAgfSkKLSAgICAudGhlbihmdW5jdGlvbihwYXlsb2FkKSB7
Ci0gICAgICAgIHN0YXRlRHVyaW5nQ2FwdHVyaW5nID0gcGF5bG9hZC52YWx1ZTsKLSAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHN0b3BDYXB0dXJpbmcocmVzb2x2ZSwgcmVqZWN0
KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdG9wQ2FwdHVyaW5n
KCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNhcHR1cmVTdG9wcGVkLCByZXNv
bHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfSkKLSAgICAudGhlbihmdW5jdGlvbigpIHsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhcHR1cmUgc3RvcHBlZCwgbm93IHN0YXJ0aW5nIHJlcGxh
eSB0byBjb21wbGV0aW9uLi4uIikKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
IHN0YXJ0UGxheWJhY2socmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3IucmVwbGF5TWFuYWdlci5yZXBsYXlUb0NvbXBsZXRpb24oKTsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuRXZlbnQuUGxheWJhY2tTdGFydGVkLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSkKLSAgICAudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlBsYXliYWNrIGhhcyBzdGFydGVkLiIpOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVu
Y3Rpb24gd2FpdEZvck1haW5SZXNvdXJjZVdoZW5SZXBsYXlpbmcocmVzb2x2ZSwgcmVqZWN0KSB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdGluZyB0byByZXBsYXkgaW5pdGlh
bCBuYXZpZ2F0aW9uLi4uIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2ZW50RGlzcGF0
Y2hlci5hZGRFdmVudExpc3RlbmVyKEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyLkV2ZW50
LlRlc3RQYWdlRGlkTG9hZCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0pCi0gICAgLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJJbml0aWFsIG5hdmln
YXRpb24gcmVwbGF5ZWQuIER1bXBpbmcgc3RhdGUuLi4iKTsKLSAgICAgICAgcmV0dXJuIFJ1bnRp
bWVBZ2VudC5ldmFsdWF0ZS5wcm9taXNlKCJkdW1wTm9uZGV0ZXJtaW5pc3RpY1N0YXRlKCkiKTsK
LSAgICB9KQotICAgIC50aGVuKGZ1bmN0aW9uKHBheWxvYWQpIHsKLSAgICAgICAgc3RhdGVEdXJp
bmdSZXBsYXlpbmcgPSBwYXlsb2FkLnZhbHVlOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
ZnVuY3Rpb24gd2FpdEZvclJlcGxheWluZ1RvRmluaXNoKHJlc29sdmUsIHJlamVjdCkgewotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5QbGF5YmFja0ZpbmlzaGVkLCByZXNvbHZlKTsK
LSAgICAgICAgfSk7Ci0gICAgfSkKLSAgICAudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IHN0YXRlc0VxdWFsID0gc3RhdGVEdXJpbmdDYXB0dXJpbmcgPT09IHN0YXRlRHVyaW5nUmVwbGF5
aW5nOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3RhdGVzRXF1YWwsICJOb25k
ZXRlcm1pbmlzdGljIHN0YXRlIHNob3VsZCBub3QgZGlmZmVyIGR1cmluZyBjYXB0dXJlIGFuZCBy
ZXBsYXkuIik7Ci0gICAgICAgIGlmICghc3RhdGVzRXF1YWwpIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJTdGF0ZSBkdXJpbmcgY2FwdHVyaW5nOiAiICsgc3RhdGVEdXJpbmdDYXB0
dXJpbmcpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlN0YXRlIGR1cmluZyByZXBs
YXlpbmc6ICIgKyBzdGF0ZUR1cmluZ1JlcGxheWluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9KTsKLX07Ci0KLX0pOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90ZXN0
LWhhcm5lc3MtdHJpdmlhbGx5LXdvcmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGVz
dC1oYXJuZXNzLXRyaXZpYWxseS13b3Jrcy5odG1sCmluZGV4IGMwOGFlMWFhYjcxMTE0NGMxNGFj
MjZmYWNiY2IzNzAwODI4NmYxMTAuLmIwODFhNzRkMmRjYzgwNGMyZjk5YTI4YjM5NDFiNmQ0Yjg1
ZDQzOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90ZXN0LWhhcm5lc3MtdHJp
dmlhbGx5LXdvcmtzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rlc3QtaGFybmVz
cy10cml2aWFsbHktd29ya3MuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rp
b24gdGVzdCgpCiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>