<?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>77024</bug_id>
          
          <creation_ts>2012-01-25 10:11:49 -0800</creation_ts>
          <short_desc>Web Inspector: tests in PerformanceTests/inspector/ are timing out</short_desc>
          <delta_ts>2013-05-30 03:42:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>yurys</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542406</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-25 10:11:49 -0800</bug_when>
    <thetext>See http://build.webkit.org/builders/Chromium%20Mac%20Release%20%28Perf%29/builds/6/steps/perf-test/logs/stdio

Running inspector/console-300-lines.html (8 of 14)
timeout: PerformanceTests/inspector/console-300-lines.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/first-open-elements.html killing driver
Running inspector/first-open-elements.html (9 of 14)
timeout: PerformanceTests/inspector/first-open-elements.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/first-open-resources.html killing driver
Running inspector/first-open-resources.html (10 of 14)
timeout: PerformanceTests/inspector/first-open-resources.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/first-open-scripts.html killing driver
Running inspector/first-open-scripts.html (11 of 14)
timeout: PerformanceTests/inspector/first-open-scripts.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/inspector-startup-time.html killing driver
Running inspector/inspector-startup-time.html (12 of 14)
timeout: PerformanceTests/inspector/inspector-startup-time.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/network-append-30-requests.html killing driver
Running inspector/network-append-30-requests.html (13 of 14)
timeout: PerformanceTests/inspector/network-append-30-requests.html
FAILED

/Users/chrome-bot/Desktop/WebKit-BuildSlave/chromium-mac-perf-tests/build/PerformanceTests/inspector/show-panel.html killing driver
Running inspector/show-panel.html (14 of 14)
timeout: PerformanceTests/inspector/show-panel.html
FAILED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545681</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-30 18:11:46 -0800</bug_when>
    <thetext>Skipped them in http://trac.webkit.org/changeset/106312 temporarily since run-perf-tests will spend 4+ minutes on each test when a test times out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547763</commentid>
    <comment_count>2</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-02 03:53:54 -0800</bug_when>
    <thetext>The root of problem is that we have no Inspector&apos;s tests support on Chromium Mac platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547950</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-02 09:56:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; The root of problem is that we have no Inspector&apos;s tests support on Chromium Mac platform.

That sounds really bad. Can we add it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547979</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-02 10:46:53 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; The root of problem is that we have no Inspector&apos;s tests support on Chromium Mac platform.
&gt; 
&gt; That sounds really bad. Can we add it?

I&apos;ll try to do that.

Is it possible to disable the tests only for mac platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549299</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-03 18:07:18 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;ll try to do that.
&gt; 
&gt; Is it possible to disable the tests only for mac platform?

Not at the moment :( layout-test-style skipped list or test_expectations.txt won&apos;t work here because we don&apos;t have a platform directory. But we can safely assume all perf bots are on Mac for now since I haven&apos;t heard anything about adding win/linux bot from the infrastructure team although I&apos;m also intending to ping Qt/GTK folks.

It might be a good idea to add --force option so that you can run skipped tests locally though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660474</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-06-29 07:46:49 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; It might be a good idea to add --force option so that you can run skipped tests locally though.

I filed it: bug #90279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726096</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-09-22 01:45:40 -0700</bug_when>
    <thetext>
Some tests are not timeouting for me on Qt anymore:

Pass:
Running inspector/console-300-lines.html (1 of 7)
Running inspector/first-open-elements.html (2 of 7)
Running inspector/first-open-resources.html (3 of 7)
Running inspector/inspector-startup-time.html (6 of 7)

Timeout:
Running inspector/heap-snapshot-advanced.html (4 of 7)
Running inspector/heap-snapshot.html (5 of 7)

Fail:
Running inspector/native-memory-snapshot.html (7 of 7)

Ilya, was there any progress on Mac-Chromium inspector support?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785826</commentid>
    <comment_count>8</comment_count>
      <attachid>178204</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-07 05:34:13 -0800</bug_when>
    <thetext>Created attachment 178204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785830</commentid>
    <comment_count>9</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-07 05:39:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Some tests are not timeouting for me on Qt anymore:
&gt; 
&gt; Pass:
&gt; Running inspector/console-300-lines.html (1 of 7)
&gt; Running inspector/first-open-elements.html (2 of 7)
&gt; Running inspector/first-open-resources.html (3 of 7)
&gt; Running inspector/inspector-startup-time.html (6 of 7)
&gt; 
&gt; Timeout:
&gt; Running inspector/heap-snapshot-advanced.html (4 of 7)
&gt; Running inspector/heap-snapshot.html (5 of 7)
&gt; 
&gt; Fail:
&gt; Running inspector/native-memory-snapshot.html (7 of 7)
&gt; 
&gt; Ilya, was there any progress on Mac-Chromium inspector support?

I&apos;ve fixed the problem with chromium-mac but heap-snapshot* tests wouldn&apos;t work in non-chromium WebKit ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786384</commentid>
    <comment_count>10</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-12-07 19:44:54 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt;
&gt; I&apos;ve fixed the problem with chromium-mac but heap-snapshot* tests wouldn&apos;t work in non-chromium WebKit ports.

Great, thanks! 

Can you explain me the situation with the heap-snapshot tests? (What do we need to do to get these work on non-chromium ports?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786398</commentid>
    <comment_count>11</comment_count>
      <attachid>178204</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 20:18:03 -0800</bug_when>
    <thetext>Comment on attachment 178204
Patch

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

&gt; PerformanceTests/ChangeLog:8
&gt; +        It was fixed in downstream patch r171707.

Does it work on non-Chromium ports? run-perf-tests doesn’t support per-port skipped list. If any of the tests don’t pass on non-Chromium ports, then we have to skip them on bots.
Also, we might want to consider adopting the perf. test framework used by other perf. tests instead of using chromium perf-bot style output.
runner.js has improved considerably in the last six months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786399</commentid>
    <comment_count>12</comment_count>
      <attachid>178204</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 20:21:10 -0800</bug_when>
    <thetext>Comment on attachment 178204
Patch

It appears that we shouldn’t land this patch since some of the tests wouldn’t run on non-Chromium ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786402</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-07 20:47:39 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 178204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178204&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/ChangeLog:8
&gt; &gt; +        It was fixed in downstream patch r171707.
&gt; 
&gt; Does it work on non-Chromium ports? run-perf-tests doesn’t support per-port skipped list. If any of the tests don’t pass on non-Chromium ports, then we have to skip them on bots.
&gt; Also, we might want to consider adopting the perf. test framework used by other perf. tests instead of using chromium perf-bot style output.
&gt; runner.js has improved considerably in the last six months.

Is there a chance to support port specific skip list or even support current TestExpectation format?

(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt;
&gt; &gt; I&apos;ve fixed the problem with chromium-mac but heap-snapshot* tests wouldn&apos;t work in non-chromium WebKit ports.
&gt; 
&gt; Great, thanks! 
&gt; 
&gt; Can you explain me the situation with the heap-snapshot tests? (What do we need to do to get these work on non-chromium ports?)


You need to implement detailed heap snapshot for JSC engine.

It is a bit complex task. Each memory fragment separately allocated by JSC should be reported as a snapshot node with id, size, type, name and edges count. Also all the links from the fragment to other fragments should be reported as snapshot edges with type, name and to_node_id.

Id consistency: The node id that was assigned to a memory fragment when you took a snapshot has to be the same in the second snapshot even if the memory fragment was moved by GC.

Also you can report an array of strings and their indexes can be used as node names and edge names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786407</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 21:07:13 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 178204 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178204&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; PerformanceTests/ChangeLog:8
&gt; &gt; &gt; +        It was fixed in downstream patch r171707.
&gt; &gt; 
&gt; &gt; Does it work on non-Chromium ports? run-perf-tests doesn’t support per-port skipped list. If any of the tests don’t pass on non-Chromium ports, then we have to skip them on bots.
&gt; &gt; Also, we might want to consider adopting the perf. test framework used by other perf. tests instead of using chromium perf-bot style output.
&gt; &gt; runner.js has improved considerably in the last six months.
&gt; 
&gt; Is there a chance to support port specific skip list or even support current TestExpectation format?

No. We don’t have platforms directory so I’m not even sure how we’d support that, and adding platforms directly just to support Skipped/TestExpectations files seems rather silly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895401</commentid>
    <comment_count>15</comment_count>
      <attachid>203321</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-30 01:01:19 -0700</bug_when>
    <thetext>Created attachment 203321
Delete tests for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895429</commentid>
    <comment_count>16</comment_count>
      <attachid>203321</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-30 02:39:19 -0700</bug_when>
    <thetext>Comment on attachment 203321
Delete tests for now

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895466</commentid>
    <comment_count>17</comment_count>
      <attachid>203321</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-30 03:42:55 -0700</bug_when>
    <thetext>Comment on attachment 203321
Delete tests for now

Clearing flags on attachment: 203321

Committed r150955: &lt;http://trac.webkit.org/changeset/150955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895467</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-30 03:42:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178204</attachid>
            <date>2012-12-07 05:34:13 -0800</date>
            <delta_ts>2013-05-30 01:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77024-20121207173156.patch</filename>
            <type>text/plain</type>
            <size>1199</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQ0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1MDAxNjY5YmJm
ODE2OTdkYTQ3OTNkNmEyYWU5NjI0NmM5OTYxYzMuLjcwY2Y1ZTgzMmRjOTkwNDY3ODQ2ZmU3ZGJj
ZWYzNTc5NTg4NTE1MDcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTIt
MDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yLyBhcmUgdGlt
aW5nIG91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzcwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dCB3YXMgZml4ZWQgaW4gZG93bnN0cmVhbSBwYXRjaCByMTcxNzA3LgorCisgICAgICAgICogU2tp
cHBlZDoKKwogMjAxMi0xMi0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1NoYWRvd10gUGVyZm9ybWFuY2UgdGVzdHMgZm9yIFNoYWRvd0RPTSBk
aXN0cmlidXRpb24KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU2tpcHBlZCBiL1BlcmZv
cm1hbmNlVGVzdHMvU2tpcHBlZAppbmRleCA1MDkyMzRhYjgxMzU3NGQyZjQyMzQ3MjQ1OGE5Mzg0
YzZlMGRkODAwLi4xNGM4MmUzNGZhNWJhMmY4NTA1ZTczNjJhZjZjOTlmMjI3ZTM1OTc5IDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NraXBwZWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
a2lwcGVkCkBAIC01NCw5ICs1NCw2IEBAIERyb21hZW8vdjgtZWFybGV5LWJveWVyLmh0bWwKIERy
b21hZW8vdjgtcmF5dHJhY2UuaHRtbAogRHJvbWFlby92OC1yaWNoYXJkcy5odG1sCiAKLSMgQnVn
IDc3MDI0IC0gV2ViIEluc3BlY3RvcjogdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0
b3IvIGFyZSB0aW1pbmcgb3V0Ci1pbnNwZWN0b3IKLQogIyBCdWcgMTAwMjYyIC0gUkVHUkVTU0lP
TihyMTMxOTgyKTogdGhpcyB0ZXN0IGlzIGNyYXNoaW5nCiBTVkcvU3ZnTmVzdGVkVXNlLmh0bWwK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203321</attachid>
            <date>2013-05-30 01:01:19 -0700</date>
            <delta_ts>2013-05-30 03:42:55 -0700</delta_ts>
            <desc>Delete tests for now</desc>
            <filename>bug-77024-20130530005956.patch</filename>
            <type>text/plain</type>
            <size>39152</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTA5NTIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA1LTMwICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yLyBhcmUgdGltaW5nIG91dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSB0ZXN0cyBo
YXZlIGJlZW4gZGlzYWJsZWQgZm9yIGFnZXMgYW5kIGRvbid0IGNvbmZvcm0gdG8gdGhlIHN0YW5k
YXJkIGZvcm1hdC4KKworICAgICAgICAqIFNraXBwZWQ6CisgICAgICAgICogaW5zcGVjdG9yOiBS
ZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLTMwMC1saW5lcy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2ZpcnN0LW9wZW4tc2NyaXB0cy5odG1sLmJyb2tlbjog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZhbmNlZC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNl
LXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1
ZXN0cy5odG1sLmJyb2tlbjogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFu
Y2UtdGVzdC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2hvdy1wYW5lbC5odG1s
LmJyb2tlbjogUmVtb3ZlZC4KKwogMjAxMy0wNS0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmph
bWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgYmFsYW5jZWQgYmVuY2htYXJrIGZvciBR
dWVyeVNlbGVjdG9yCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Ta2lwcGVkCShyZXZpc2lvbiAxNTA4NzkpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDYgQEAgRHJvbWFl
by92OC1lYXJsZXktYm95ZXIuaHRtbAogRHJvbWFlby92OC1yYXl0cmFjZS5odG1sCiBEcm9tYWVv
L3Y4LXJpY2hhcmRzLmh0bWwKIAotIyBCdWcgNzcwMjQgLSBXZWIgSW5zcGVjdG9yOiB0ZXN0cyBp
biBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci8gYXJlIHRpbWluZyBvdXQKLWluc3BlY3Rvcgot
CiAjIEJ1ZyAxMDAyNjIgLSBSRUdSRVNTSU9OKHIxMzE5ODIpOiB0aGlzIHRlc3QgaXMgY3Jhc2hp
bmcKIFNWRy9TdmdOZXN0ZWRVc2UuaHRtbAogCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLTMwMC1saW5lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtMzAwLWxpbmVzLmh0bWwJKHJldmlzaW9uIDE1MDg3OSkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtMzAwLWxpbmVzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsODAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotCi1mdW5jdGlvbiBtYWtlQ29uc29sZUV2ZW50cyhjb3VudCkKLXsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnNvbGUubG9nKCJDb25zb2xl
IGxvZzogIiArIGkpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgbWVzc2FnZSA9
IHsKLSAgICAgICAgIm1ldGhvZCI6IkNvbnNvbGUubWVzc2FnZUFkZGVkIiwKLSAgICAgICAgInBh
cmFtcyI6ewotICAgICAgICAgICAgIm1lc3NhZ2UiOnsKLSAgICAgICAgICAgICAgICAic291cmNl
IjoiY29uc29sZS1hcGkiLAotICAgICAgICAgICAgICAgICJsZXZlbCI6ImxvZyIsCi0gICAgICAg
ICAgICAgICAgInRleHQiOiJDb25zb2xlIGxvZyBtZXNzYWdlIiwKLSAgICAgICAgICAgICAgICAi
dHlwZSI6ImxvZyIsCi0gICAgICAgICAgICAgICAgImxpbmUiOjEwLAotICAgICAgICAgICAgICAg
ICJ1cmwiOiJmaWxlOi8vLi9jb25zb2xlLTMwMC1saW5lcy5odG1sIiwKLSAgICAgICAgICAgICAg
ICAicmVwZWF0Q291bnQiOjEsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOlt7Ci0gICAg
ICAgICAgICAgICAgICAgICJ0eXBlIjoic3RyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgInZh
bHVlIjoiQ29uc29sZSBsb2c6IDQyIgotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgICJzdGFja1RyYWNlIjpbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiJtYWtlQ29uc29sZUV2ZW50cyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAidXJsIjoiZmlsZTovLy4vY29uc29sZS0zMDAtbGluZXMuaHRtbCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAibGluZU51bWJlciI6MTAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiY29sdW1uTnVtYmVyIjoxNwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjoi
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiJmaWxlOi8vLi9jb25zb2xlLTMwMC1s
aW5lcy5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lTnVtYmVyIjozNywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOjkKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07
Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJjb25zb2xlIik7Ci0KLSAgICBmdW5jdGlv
biB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuY2xlYXJN
ZXNzYWdlcygpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LmNvbnNvbGVWaWV3LnByb21wdEVsZW1lbnQsICJzY3JvbGxJbnRvVmlldyIsIGZpbmlzaCk7Ci0K
LSAgICAgICAgdmFyIGNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJjb25zb2xlLTMwMC1saW5lcyIpOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMwMDsgKytpKQotICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5kaXNwYXRjaChtZXNzYWdlKTsKLQotICAgICAgICBmdW5jdGlvbiBmaW5pc2go
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goY29va2llKTsKLSAgICAgICAg
ICAgIHRpbWVyLmRvbmUoInBhbmVsLXVwZGF0ZSIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
SW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwgMTAwMDApOwotfQotCi1pZiAo
IXdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAg
ICAgbWFrZUNvbnNvbGVFdmVudHMoMzAwKTsKLSAgICB9LCAzMDAwKTsKLX0KLQotPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1vcGVuLWVs
ZW1lbnRzLmh0bWwJKHJldmlzaW9uIDE1MDg3OSkKKysrIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCww
IEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImF1ZGl0cyIpOwotCi0KLSAgICBm
dW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5l
bCgiYXVkaXRzIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5fc2V0RG9jdW1lbnQo
bnVsbCk7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQo
ImZpcnN0LW9wZW4tZWxlbWVudHMiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5k
UmVzcG9uc2VTbmlmZmVyKERPTUFnZW50LCAicmVxdWVzdENoaWxkTm9kZXMiLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7Ci0gICAg
ICAgICAgICB0aW1lci5kb25lKCJmaXJzdC1vcGVuIik7Ci0gICAgICAgIH0pOwotICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgIH0KLQotICAgIEluc3BlY3Rv
clRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDUwMDApOwotfQotCi08L3NjcmlwdD4KLTwv
aGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotCi08ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci0KLTwvYm9keT4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1yZXNv
dXJjZXMuaHRtbAkocmV2aXNpb24gMTUwODc5KQorKysgUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0
b3IvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCww
IEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwotICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtLnNldChXZWJJbnNw
ZWN0b3IuaW5zcGVjdGVkUGFnZVVSTCk7Ci0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0gICAgICAgIHZh
ciByZXNvdXJjZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlczsKLSAgICAgICAgcmVz
b3VyY2VzLnJlc2V0KCk7Ci0gICAgICAgIHZhciB0cmVlTW9kZWwgPSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUcmVlTW9kZWw7Ci0gICAgICAgIHRyZWVNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lQWRkZWQsIHJlc291
cmNlcy5fZnJhbWVBZGRlZCwgcmVzb3VyY2VzKTsKLSAgICAgICAgdHJlZU1vZGVsLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJh
bWVOYXZpZ2F0ZWQsIHJlc291cmNlcy5fZnJhbWVOYXZpZ2F0ZWQsIHJlc291cmNlcyk7Ci0gICAg
ICAgIHRyZWVNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lRGV0YWNoZWQsIHJlc291cmNlcy5fZnJhbWVEZXRhY2hl
ZCwgcmVzb3VyY2VzKTsKLSAgICAgICAgdHJlZU1vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgcmVz
b3VyY2VzLl9yZXNvdXJjZUFkZGVkLCByZXNvdXJjZXMpOwotICAgICAgICByZXNvdXJjZXMuX2lu
aXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVz
cG9uc2VTbmlmZmVyKEFwcGxpY2F0aW9uQ2FjaGVBZ2VudCwgImdldEZyYW1lc1dpdGhNYW5pZmVz
dHMiLCBmaW5pc2gpOwotICAgICAgICB2YXIgc2hvd1BhbmVsVGltZXJDb29raWUgPSB0aW1lci5z
dGFydCgiZmlyc3Qtb3Blbi1yZXNvdXJjZXMiKTsKLSAgICAgICAgdHJlZU1vZGVsLl9mZXRjaFJl
c291cmNlVHJlZSgpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMi
KTsKLQotICAgICAgICBmdW5jdGlvbiBmaW5pc2goKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOwotICAgICAgICAgICAgdGltZXIuZG9u
ZSgiZmlyc3Qtb3BlbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIEluc3BlY3RvclRlc3QucnVu
UGVyZm9ybWFuY2VUZXN0KHRlc3QsIDUwMDApOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwuYnJv
a2VuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4t
c2NyaXB0cy5odG1sLmJyb2tlbgkocmV2aXNpb24gMTUwODc5KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwuYnJva2VuCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0
cyIpOwotICAgIHZhciBmaWxlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZmlsZVNl
bGVjdG9yLl9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxl
cy5vcHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tpXS52
YWx1ZS5pbmRleE9mKCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgewotICAgICAgICAgICAg
IGZpbGVzLnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5fZmlsZVNlbGVjdG9yLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKLSAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVy
KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0gICAg
ICAgIHZhciBzaG93UGFuZWxUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmaXJzdC1vcGVuLXNj
cmlwdHMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAg
ICAgICB2YXIgY291bnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXcu
X3RleHRFZGl0b3IuX21haW5QYW5lbC5fdGV4dENodW5rcy5sZW5ndGg7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52aXNpYmxlVmlldy5fdGV4dEVkaXRvci5fbWFpblBhbmVs
Ll9leHBhbmRDaHVua3MoMCwgY291bnQpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMudmlzaWJsZVZpZXcuX3RleHRFZGl0b3IuX21haW5QYW5lbC5fcGFpbnRTY2hlZHVsZWRM
aW5lcygpOwotICAgICAgICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOwotICAg
ICAgICB0aW1lci5kb25lKCJmaXJzdC1vcGVuIik7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVz
dC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VU
ZXN0LmJpbmQobnVsbCwgdGVzdCwgNTAwMCkpOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZhbmNlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QtYWR2YW5jZWQu
aHRtbAkocmV2aXNpb24gMTUwODc5KQorKysgUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVh
cC1zbmFwc2hvdC1hZHZhbmNlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3Jj
PSIuLi8uLi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2Ny
aXB0PgotICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIG1ha2VMaW5rZWRMaXN0KG4pCi17Ci0gICAg
dmFyIG5vZGUgPSB7fTsKLSAgICB3aGlsZSAoLS1uKQotICAgICAgICBub2RlID0geyBuZXh0OiBu
b2RlIH07Ci0gICAgcmV0dXJuIG5vZGU7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VEb3VibGVMaW5rZWRM
aXN0KG4pCi17Ci0gIHZhciB0YWlsID0ge307Ci0gIHZhciBoZWFkID0gdGFpbDsKLSAgd2hpbGUg
KC0tbikgewotICAgIGhlYWQgPSB7IG5leHQ6IGhlYWQgfTsKLSAgICBoZWFkLm5leHQucHJldiA9
IGhlYWQ7Ci0gIH0KLSAgcmV0dXJuIHsgaGVhZDogaGVhZCwgdGFpbDogdGFpbCB9OwotfQotCi12
YXIgbGlzdCA9IG1ha2VMaW5rZWRMaXN0KDIwMDAwKTsKLXZhciBkb3VibGVfbGlzdCA9IG1ha2VE
b3VibGVMaW5rZWRMaXN0KDUwMDApOwotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
aW5zcGVjdG9yL2hlYXAtc25hcHNob3QtcGVyZm9ybWFuY2UtdGVzdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNlLXRl
c3QuanMJKHJldmlzaW9uIDE1MDg3OSkKKysrIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hl
YXAtc25hcHNob3QtcGVyZm9ybWFuY2UtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3NSAr
MCwwIEBACi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJw
cm9maWxlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRFZGdlSW5kZXhlcyIpOwotICAgIElu
c3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdC5w
cm90b3R5cGUsICJfYnVpbGRSZXRhaW5lcnMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9t
aW5hdGVkTm9kZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZUZsYWdzIik7Ci0gICAg
SW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90
LnByb3RvdHlwZSwgIl9idWlsZEFnZ3JlZ2F0ZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1
bGF0ZUNsYXNzZXNSZXRhaW5lZFNpemUiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5j
dGlvbihXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZURp
c3RhbmNlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlUmV0YWluZWRTaXplcyIpOwot
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFw
c2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7Ci0gICAgSW5zcGVj
dG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1l
YXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21h
cmtQYWdlT3duZWROb2RlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdl
Ykluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRh
aW5tZW50RWRnZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsK
LSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSlNIZWFwU25h
cHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdG9yVHJlZSIpOwotICAgIEluc3BlY3RvclRl
c3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNE
YXRhR3JpZC5wcm90b3R5cGUsICJfYWdncmVnYXRlc1JlY2VpdmVkIik7Ci0KLSAgICBmdW5jdGlv
biBwZXJmb3JtYW5jZVRlc3QodGltZXIpCi0gICAgewotICAgICAgICB2YXIgdHJhbnNmZXJUaW1l
ckNvb2tpZTsKLSAgICAgICAgdmFyIHNob3dUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNoYW5n
ZVZpZXdUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNsZWFyVGltZXJDb29raWU7Ci0KLSAgICAg
ICAgdmFyIHRlc3ROYW1lID0gLyhbXlwvXSspXC5odG1sJC8uZXhlYyhXZWJJbnNwZWN0b3IuaW5z
cGVjdGVkUGFnZVVSTClbMV07Ci0gICAgICAgIHZhciBmdWxsVGltZXJDb29raWUgPSB0aW1lci5z
dGFydCgiZnVsbC1zdW1tYXJ5LXNuYXBzaG90LXRpbWUiKTsKLSAgICAgICAgdmFyIGJhY2tlbmRU
aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJ0YWtlLXNuYXBzaG90Iik7Ci0gICAgICAgIEhlYXBQ
cm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3Qoc3RlcDApOwotCi0gICAgICAgIGZ1bmN0aW9u
IHN0ZXAwKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tlbmRUaW1l
ckNvb2tpZSk7Ci0gICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQo
InRyYW5zZmVyLXNuYXBzaG90Iik7Ci0gICAgICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXMuZ2V0UHJvZmlsZVR5cGUoIkhFQVAiKTsKLSAgICAgICAgICAgIHZh
ciBwcm9maWxlcyA9IHR5cGUuZ2V0UHJvZmlsZXMoKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXMuX3Nob3dQcm9maWxlKHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0aCAt
IDFdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcih0eXBlLCAiZmluaXNo
SGVhcFNuYXBzaG90Iiwgc3RlcDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc3Rl
cDEodWlkKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2godHJhbnNmZXJUaW1l
ckNvb2tpZSk7Ci0gICAgICAgICAgICBzaG93VGltZXJDb29raWUgPSB0aW1lci5zdGFydCgic2hv
dy1zbmFwc2hvdCIpOwotICAgICAgICAgICAgdmFyIHBhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5wcm9maWxlczsKLSAgICAgICAgICAgIHZhciBwcm9maWxlID0gcGFuZWwuZ2V0UHJvZmlsZSgi
SEVBUCIsIHVpZCk7Ci0gICAgICAgICAgICBwcm9maWxlLmxvYWQoc3RlcDIpOyAvLyBBZGQgbG9h
ZCBjYWxsYmFjay4KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKHNob3dUaW1lckNvb2tpZSk7Ci0gICAgICAg
ICAgICBjaGFuZ2VWaWV3VGltZXJDb29raWUgPSB0aW1lci5zdGFydCgic3dpdGNoLXRvLWNvbnRh
aW5tZW50LXZpZXciKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJD
b250YWlubWVudCIsIGNsZWFudXApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2xl
YW51cCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChjaGFuZ2VWaWV3VGlt
ZXJDb29raWUpOwotICAgICAgICAgICAgdGltZXIuZmluaXNoKGZ1bGxUaW1lckNvb2tpZSk7Ci0g
ICAgICAgICAgICBjbGVhclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImNsZWFyLXNuYXBzaG90
Iik7Ci0gICAgICAgICAgICBIZWFwUHJvZmlsZXJBZ2VudC5jbGVhclByb2ZpbGVzKGRvbmUpOwot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5fcmVzZXQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGRvbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aW1lci5maW5pc2goY2xlYXJUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKHRl
c3ROYW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9y
bWFuY2VUZXN0KHBlcmZvcm1hbmNlVGVzdCwgNjAwMDApOwotfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbAkocmV2aXNpb24gMTUwODc5KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIu
Li8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9InBl
cmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hv
dC1wZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXZhciBjb3VudGVy
ID0gMDsKLQotZnVuY3Rpb24gbWFrZU9iamVjdHNUcmVlKGRlZXApCi17Ci0gICAgdmFyIG5vZGUg
PSB7fTsKLSAgICBub2RlLnRleHQgPSAic29tZSB0ZXh0ICIgKyBjb3VudGVyOwotICAgIGlmIChk
ZWVwID09PSAwKQotICAgICAgICByZXR1cm4gbm9kZTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDI7ICsraSkKLSAgICAgICAgbm9kZVtjb3VudGVyKytdID0gbWFrZU9iamVjdHNUcmVlKGRlZXAg
LSAxKTsKLSAgICByZXR1cm4gbm9kZTsKLX0KLQotZnVuY3Rpb24gbWFrZU9iamVjdHNUcmVlMihu
YW1lLCBkZWVwKQotewotICAgIHdpbmRvd1tuYW1lXSA9IG1ha2VPYmplY3RzVHJlZShkZWVwKTsK
LX0KLQotbWFrZU9iamVjdHNUcmVlMigidCIsIDE2KTsKLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5o
dG1sCShyZXZpc2lvbiAxNTA4NzkpCisrKyBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTcgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2Ut
dGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBvbmxvYWQoKQotewotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRpbWVzID0gW107Ci0gICAgc3RhcnRU
aW1lID0gRGF0ZS5ub3coKTsKLSAgICB0ZXN0U3RhcnRUaW1lID0gc3RhcnRUaW1lOwotICAgIHJ1
blRlc3QoKTsKLX0KLQotZnVuY3Rpb24gaW5zcGVjdG9ySXNSZWFkeSgpCi17Ci0gICAgdGltZXMu
cHVzaChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKTsKLSAgICBpZiAoRGF0ZS5ub3coKSAtIHRlc3RT
dGFydFRpbWUgPiAyMDAwMCkgewotICAgICAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IoMiwgIkluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cygnaW5zcGVjdG9yLXN0YXJ0dXAt
dGltZScsICd0aW1lJywgIiArIEpTT04uc3RyaW5naWZ5KHRpbWVzKSArICIsICdtcycpIikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDMsICIoSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKSkiKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHRlc3RSdW5u
ZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygpOwotICAg
IHRlc3RSdW5uZXIuc2hvd1dlYkluc3BlY3RvcigpOwotICAgIHJ1blRlc3QoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9zZXREb2N1bWVudChu
dWxsKTsKLQotICAgIEluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlcihET01B
Z2VudCwgInJlcXVlc3RDaGlsZE5vZGVzIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5sYXN0QWN0aXZlUGFuZWwuc2V0KCJhdWRpdHMiKTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiaW5zcGVjdG9ySXNSZWFkeSgpIik7Ci0gICAgfSk7
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKLX0KLQotPC9zY3JpcHQ+
Ci0KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgotPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwuYnJva2VuCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLmh0bWwuYnJva2VuCShyZXZpc2lvbiAxNTA4NzkpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sLmJyb2tlbgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKLXsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOwotICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsK
LSAgICAgICAgeGhyLnNlbmQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKLQotICAgIHZhciBvcmlnaW5hbFJl
ZnJlc2ggPSBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5fbmV0d29ya0xvZ1ZpZXcsICJyZWZyZXNoIiwgdGltZVRyYWNraW5nUmVmcmVzaCwgdHJ1ZSk7
Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5fZGVmYXVs
dFJlZnJlc2hEZWxheSA9IDMwOwotICAgIGZ1bmN0aW9uIHRpbWVUcmFja2luZ1JlZnJlc2goKQot
ICAgIHsKLSAgICAgICAgdmFyIGNvb2tpZSA9IEluc3BlY3RvclRlc3QudGltZXIuc3RhcnQoIm5l
dHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzIik7Ci0gICAgICAgIG9yaWdpbmFsUmVmcmVzaC5jYWxs
KHRoaXMpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLmZpbmlzaChjb29raWUpOwotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9yZXNldCgp
OwotICAgICAgICAvLyBJbiByZWFsIGxpZmUgdGhpcyBhcnJheSBpcyBjbGVhbmluZyB1cCBhdCBu
YXZpZ2F0aW9uIGV2ZW50LgotICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5fcmVzb3Vy
Y2VzID0gW107Ci0gICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZG9uZSgicGFuZWwtdXBkYXRl
Iik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygzMCkiKTsKLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxNTAwMCk7Ci19
Ci0KLWlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBtYWtlWEhSUmVxdWVzdHMoMzApOwotICAgIH0sIDMwMDApOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UtdGVzdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS10
ZXN0LmpzCShyZXZpc2lvbiAxNTA4NzkpCisrKyBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS10ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0NCArMCwwIEBACi12YXIg
aW5pdGlhbGl6ZV9UaW1lVHJhY2tlciA9IGZ1bmN0aW9uKCkgewotCi1JbnNwZWN0b3JUZXN0LnJ1
blBlcmZvcm1hbmNlVGVzdCA9IGZ1bmN0aW9uKHBlcmZUZXN0LCBleGVjdXRlVGltZSwgY2FsbGJh
Y2spCi17Ci0gICAgdmFyIFRpbWVyID0gZnVuY3Rpb24odGVzdCwgY2FsbGJhY2spCi0gICAgewot
ICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgICAgICB0aGlzLl90ZXN0ID0g
dGVzdDsKLSAgICAgICAgdGhpcy5fdGltZXMgPSB7fTsKLSAgICAgICAgdGhpcy5fdGVzdFN0YXJ0
VGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgICAgIHRoaXMuX2hlYXBTaXplRGVsdGFzID0gW107Ci0g
ICAgICAgIHRoaXMuX2pzSGVhcFNpemUgPSB0aGlzLl9nZXRKU0hlYXBTaXplKCk7Ci0gICAgfQot
Ci0gICAgVGltZXIucHJvdG90eXBlID0gewotICAgICAgICBzdGFydDogZnVuY3Rpb24obmFtZSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHtuYW1lOiBuYW1lLCBzdGFydFRpbWU6IG5l
dyBEYXRlKCl9OwotICAgICAgICB9LAotCi0gICAgICAgIGZpbmlzaDogZnVuY3Rpb24oY29va2ll
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZW5kVGltZSA9IG5ldyBEYXRlKCk7Ci0gICAg
ICAgICAgICBpZiAoIXRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1lXSkKLSAgICAgICAgICAgICAgICB0
aGlzLl90aW1lc1tjb29raWUubmFtZV0gPSBbXTsKLSAgICAgICAgICAgIHRoaXMuX3RpbWVzW2Nv
b2tpZS5uYW1lXS5wdXNoKGVuZFRpbWUgLSBjb29raWUuc3RhcnRUaW1lKTsKLSAgICAgICAgfSwK
LQotICAgICAgICBfZ2V0SlNIZWFwU2l6ZTogZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmdjKSB7Ci0gICAgICAgICAgICAgICAgd2luZG93LmdjKCk7Ci0gICAg
ICAgICAgICAgICAgd2luZG93LmdjKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gY29uc29sZS5tZW1vcnkudXNlZEpTSGVhcFNpemU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZG9uZTogZnVuY3Rpb24oZ3JvdXBOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbmV3
SlNIZWFwU2l6ZSA9IHRoaXMuX2dldEpTSGVhcFNpemUoKTsKLSAgICAgICAgICAgIHRoaXMuX2hl
YXBTaXplRGVsdGFzLnB1c2gobmV3SlNIZWFwU2l6ZSAtIHRoaXMuX2pzSGVhcFNpemUpOwotICAg
ICAgICAgICAgdGhpcy5fanNIZWFwU2l6ZSA9IG5ld0pTSGVhcFNpemU7Ci0KLSAgICAgICAgICAg
IHZhciB0aW1lID0gbmV3IERhdGUoKTsKLSAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5fdGVz
dFN0YXJ0VGltZSA8IGV4ZWN1dGVUaW1lKQotICAgICAgICAgICAgICAgIHRoaXMuX3J1blRlc3Qo
KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0
ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIHRoaXMuX2Nv
bXBsZXRlID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIHRoaXMuX2R1bXAoZ3JvdXBOYW1lKTsK
LSAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9LAotCi0gICAgICAgIF9ydW5UZXN0OiBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh0aGlzLl9ndWFyZCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5f
cnVuVGVzdC5iaW5kKHRoaXMpLCAwKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gdHJ1ZTsKLSAgICAgICAgICAgIHZh
ciBzYWZlVGVzdCA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAodGhpcy5fdGVzdCk7Ci0gICAgICAg
ICAgICBzYWZlVGVzdCh0aGlzKTsKLSAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gZmFsc2U7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgX2R1bXA6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGltZXMpCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgdGVzdE5hbWUs
IHRoaXMuX3RpbWVzW3Rlc3ROYW1lXSwgIm1zIik7Ci0KLSAgICAgICAgICAgIHZhciB1cmwgPSBX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTDsKLSAgICAgICAgICAgIHZhciByZWdFeHAgPSAv
KFteXC9dKylcLmh0bWwvOwotICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyh1
cmwpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKCJoZWFwLWRlbHRh
IiwgbWF0Y2hlc1sxXSwgdGhpcy5faGVhcFNpemVEZWx0YXMsICJrQiIsIDEwMjQpOwotICAgICAg
ICB9LAotICAgIH0KLQotICAgIEluc3BlY3RvclRlc3QudGltZXIgPSBuZXcgVGltZXIocGVyZlRl
c3QsIGNhbGxiYWNrKTsKLSAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLl9ydW5UZXN0KCk7Ci19Ci0K
LUluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uID0gZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlv
bk5hbWUpCi17Ci0gICAgZnVuY3Rpb24gbWVhc3VyZSgpIHsKLSAgICAgICAgdmFyIHRpbWVyID0g
SW5zcGVjdG9yVGVzdC50aW1lcjsKLSAgICAgICAgdmFyIGNvb2tpZTsKLSAgICAgICAgaWYgKHRp
bWVyKQotICAgICAgICAgICAgY29va2llID0gdGltZXIuc3RhcnQoZnVuY3Rpb25OYW1lKTsKLSAg
ICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLQotICAgICAg
ICBpZiAodGltZXIpCi0gICAgICAgICAgICB0aW1lci5maW5pc2goY29va2llKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgdmFyIGZ1bmMgPSBvYmplY3RbZnVuY3Rpb25OYW1l
XTsKLSAgICBvYmplY3RbZnVuY3Rpb25OYW1lXSA9IG1lYXN1cmU7Ci19Ci0KLUluc3BlY3RvclRl
c3QubWFyayA9IGZ1bmN0aW9uKG1hcmtlck5hbWUpCi17Ci0gICAgdmFyIHRpbWVyID0gSW5zcGVj
dG9yVGVzdC50aW1lcjsKLSAgICBpZiAoIXRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSkKLSAgICAgICAgdGltZXIuZmluaXNoKElu
c3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUpOwotCi0gICAgSW5zcGVjdG9yVGVzdC5sYXN0TWFy
a0Nvb2tpZSA9IG1hcmtlck5hbWUgPyB0aW1lci5zdGFydChtYXJrZXJOYW1lKSA6IG51bGw7Ci19
Ci0KLUluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyA9IGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVz
dE5hbWUsIHNhbXBsZXMsIHVuaXRzLCBkaXZpZGVyKQotewotICAgIGRpdmlkZXIgPSBkaXZpZGVy
IHx8IDE7Ci0gICAgdmFyIHN0cmlwTlJlc3VsdHMgPSBNYXRoLmZsb29yKHNhbXBsZXMubGVuZ3Ro
IC8gMTApOwotICAgIHNhbXBsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsg
fSk7Ci0gICAgdmFyIHN1bSA9IDA7Ci0gICAgZm9yICh2YXIgaSA9IHN0cmlwTlJlc3VsdHM7IGkg
PCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHM7ICsraSkKLSAgICAgICAgc3VtICs9IHNh
bXBsZXNbaV07Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJFU1VMVCAiICsgZ3JvdXBO
YW1lICsgJzogJyArIHRlc3ROYW1lICsgIj0gIiArIE1hdGguZmxvb3Ioc3VtIC8gKHNhbXBsZXMu
bGVuZ3RoIC0gc3RyaXBOUmVzdWx0cyAqIDIpIC8gZGl2aWRlcikgKyAiICIgKyB1bml0cyk7Ci19
Ci0KLUluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0aW9uKG9i
amVjdCwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCi17Ci0gICAgdmFyIG9yaWdp
bmFsTWV0aG9kID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5hbWUsIGJh
Y2tlbmRDYWxsLCBvcHRfc3RpY2t5KTsKLSAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgpCi0gICAg
ewotICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50
cyk7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2YgYXJnc1th
cmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOwotICAgICAg
ICBhcmdzLnB1c2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxs
LCBhcmd1bWVudHMpOwotICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJndW1lbnRz
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVjdCwgYXJn
cyk7Ci0gICAgfQotfQotCi19CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9zaG93
LXBhbmVsLmh0bWwuYnJva2VuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL3Nob3ctcGFuZWwuaHRtbC5icm9rZW4JKHJldmlzaW9uIDE1MDg3OSkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvaW5zcGVjdG9yL3Nob3ctcGFuZWwuaHRtbC5icm9rZW4JKHdvcmtpbmcgY29weSkK
QEAgLTEsNjYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Ci1mdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCi17Ci0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50LlVSTCwgdHJ1ZSk7Ci0gICAgICAg
IHhoci5zZW5kKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLl9maWxlU2VsZWN0b3IuX2ZpbGVzU2VsZWN0RWxlbWVudDsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
IGlmIChmaWxlcy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikg
IT09IC0xKSB7Ci0gICAgICAgICAgICAgZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7Ci0gICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxlU2VsZWN0b3IuX2ZpbGVzU2Vs
ZWN0Q2hhbmdlZCgpOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgIH0KLQot
ICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwotICAgIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtLnNldChXZWJJbnNwZWN0b3IuaW5z
cGVjdGVkUGFnZVVSTCk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7
Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibWFrZVhIUlJlcXVlc3RzKDIwMCki
LCBydW5UZXN0KTsKLQotICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQotICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QocGVyZlRlc3QsIDEwMDAwKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBwZXJmVGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93UGFuZWwoImF1ZGl0cyIpOwotICAgICAgICBmb3IgKHZhciBwYW5lbE5hbWUgaW4gV2Vi
SW5zcGVjdG9yLnBhbmVscykgewotICAgICAgICAgICAgdmFyIHRpbWVyQ29va2llID0gdGltZXIu
c3RhcnQoInNob3ctcGFuZWwtIiArIHBhbmVsTmFtZSk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKHBhbmVsTmFtZSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJ0ZXN0UnVubmVyLmRpc3BsYXkoKTsiKTsKLSAgICAgICAgICAgIHRpbWVyLmZp
bmlzaCh0aW1lckNvb2tpZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGltZXIuZG9uZSgicGFuZWwt
c3dpdGNoIik7Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4K
LTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTA5NTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0wNS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXN0cyBpbiBQZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci8gYXJlIHRpbWluZyBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGluc3BlY3RvciBwZXJmb3JtYW5jZSB0ZXN0cyBz
aW5jZSB0aGV5IGhhdmUgYmVlbiBkaXNhYmxlZCBmb3IgYWdlcywKKyAgICAgICAgYW5kIHRoZXkg
ZG9uJ3QgdXNlIHRoZSBzdGFuZGFyZCBwYXJzZXItc3R5bGUgcGVyZm9ybWFuY2Ugb3V0cHV0Lgor
CisgICAgICAgIEl0J3MgYWRkaW5nIGEgbG90IG9mIGNvZGUgY29tcGxleGl0eSB0byBvdXIgaW5m
cmFzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0LnB5OgorICAgICAgICAoU2luZ2xlUHJvY2Vzc1BlcmZUZXN0Ll9faW5pdF9f
KToKKyAgICAgICAgKFBlcmZUZXN0RmFjdG9yeSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RQ
ZXJmVGVzdEZhY3RvcnkudGVzdF9yZWd1bGFyX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5w
eToKKyAgICAgICAgKFRlc3REcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoTWFpblRlc3QucnVu
X3Rlc3QpOgorICAgICAgICAoTWFpblRlc3QuX3Rlc3RzX2Zvcl9ydW5uZXIpOgorICAgICAgICAo
TWFpblRlc3QudGVzdF9ydW5fdGVzdF9zZXRfa2lsbHNfZHJ0X3Blcl9ydW4pOgorICAgICAgICAo
TWFpblRlc3QuX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQpOgorICAgICAgICAoTWFpblRlc3Qp
OgorICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fd2l0aF91cGxvYWRfanNvbl9zaG91bGRfZ2Vu
ZXJhdGVfcGVyZl93ZWJraXRfanNvbik6CisKIDIwMTMtMDUtMzAgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHJlcXVpcmVzX2h0dHBfc2VydmVyIGFz
IENocm9taXVtIEFuZHJvaWQgd2FzIHRoZSBvbmx5IHBvcnQgdGhhdCBuZWVkZWQgdGhpcwpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0LnB5CShyZXZpc2lvbiAxNTA4NzkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bl
cmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNDAgKzI2
OCw2IEBAIGNsYXNzIFNpbmdsZVByb2Nlc3NQZXJmVGVzdChQZXJmVGVzdCk6CiAgICAgICAgIHN1
cGVyKFNpbmdsZVByb2Nlc3NQZXJmVGVzdCwgc2VsZikuX19pbml0X18ocG9ydCwgdGVzdF9uYW1l
LCB0ZXN0X3BhdGgsIHRlc3RfcnVubmVyX2NvdW50KQogCiAKLWNsYXNzIENocm9taXVtU3R5bGVQ
ZXJmVGVzdChQZXJmVGVzdCk6Ci0gICAgX2Nocm9taXVtX3N0eWxlX3Jlc3VsdF9yZWdleCA9IHJl
LmNvbXBpbGUocideUkVTVUxUXHMrKD9QPG5hbWU+W149XSspXHMqPVxzKyg/UDx2YWx1ZT5cZCso
XC5cZCspPylccyooP1A8dW5pdD5cdyspJCcpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dCwgdGVzdF9uYW1lLCB0ZXN0X3BhdGgsIHRlc3RfcnVubmVyX2NvdW50PURFRkFVTFRfVEVTVF9S
VU5ORVJfQ09VTlQpOgotICAgICAgICBzdXBlcihDaHJvbWl1bVN0eWxlUGVyZlRlc3QsIHNlbGYp
Ll9faW5pdF9fKHBvcnQsIHRlc3RfbmFtZSwgdGVzdF9wYXRoLCB0ZXN0X3J1bm5lcl9jb3VudCkK
LQotICAgIGRlZiBydW4oc2VsZiwgdGltZV9vdXRfbXMpOgotICAgICAgICBkcml2ZXIgPSBzZWxm
Ll9jcmVhdGVfZHJpdmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0ID0gc2Vs
Zi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9vdXRfbXMpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBkcml2ZXIuc3RvcCgpCi0KLSAgICAgICAgc2VsZi5f
ZmlsdGVyX291dHB1dChvdXRwdXQpCi0gICAgICAgIGlmIHNlbGYucnVuX2ZhaWxlZChvdXRwdXQp
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9h
bmRfbG9nX291dHB1dChvdXRwdXQpCi0KLSAgICBkZWYgcGFyc2VfYW5kX2xvZ19vdXRwdXQoc2Vs
Ziwgb3V0cHV0KToKLSAgICAgICAgdGVzdF9mYWlsZWQgPSBGYWxzZQotICAgICAgICByZXN1bHRz
ID0ge30KLSAgICAgICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgot
ICAgICAgICAgICAgcmVzdWx0TGluZSA9IENocm9taXVtU3R5bGVQZXJmVGVzdC5fY2hyb21pdW1f
c3R5bGVfcmVzdWx0X3JlZ2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiByZXN1bHRMaW5l
OgotICAgICAgICAgICAgICAgICMgRklYTUU6IFN0b3JlIHRoZSB1bml0Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0c1tyZXN1bHRMaW5lLmdyb3VwKCduYW1lJykucmVwbGFjZSgnICcsICcnKV0gPSBm
bG9hdChyZXN1bHRMaW5lLmdyb3VwKCd2YWx1ZScpKQotICAgICAgICAgICAgICAgIF9sb2cuaW5m
byhsaW5lKQotICAgICAgICAgICAgZWxpZiBub3QgbGVuKGxpbmUpID09IDA6Ci0gICAgICAgICAg
ICAgICAgdGVzdF9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5l
KQotICAgICAgICByZXR1cm4gcmVzdWx0cyBpZiByZXN1bHRzIGFuZCBub3QgdGVzdF9mYWlsZWQg
ZWxzZSBOb25lCi0KLQogY2xhc3MgUmVwbGF5U2VydmVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGFyY2hpdmUsIHJlY29yZCk6CiAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25l
CkBAIC00NTYsNyArNDIyLDYgQEAgY2xhc3MgUGVyZlRlc3RGYWN0b3J5KG9iamVjdCk6CiAKICAg
ICBfcGF0dGVybl9tYXAgPSBbCiAgICAgICAgIChyZS5jb21waWxlKHInXkRyb21hZW8vJyksIFNp
bmdsZVByb2Nlc3NQZXJmVGVzdCksCi0gICAgICAgIChyZS5jb21waWxlKHInXmluc3BlY3Rvci8n
KSwgQ2hyb21pdW1TdHlsZVBlcmZUZXN0KSwKICAgICAgICAgKHJlLmNvbXBpbGUocicoLispXC5y
ZXBsYXkkJyksIFJlcGxheVBlcmZUZXN0KSwKICAgICBdCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91
bml0dGVzdC5weQkocmV2aXNpb24gMTUwODc5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyCiBm
cm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0
cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBp
bXBvcnQgVGVzdFBvcnQKLWZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3Qg
aW1wb3J0IENocm9taXVtU3R5bGVQZXJmVGVzdAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90
ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3QKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2Vf
dGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0TWV0cmljCiBmcm9tIHdlYmtpdHB5LnBlcmZv
cm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdEZhY3RvcnkKQEAgLTQ3MSw3ICs0
NzAsMyBAQCBjbGFzcyBUZXN0UGVyZlRlc3RGYWN0b3J5KHVuaXR0ZXN0LlRlc3RDCiAgICAgZGVm
IHRlc3RfcmVndWxhcl90ZXN0KHNlbGYpOgogICAgICAgICB0ZXN0ID0gUGVyZlRlc3RGYWN0b3J5
LmNyZWF0ZV9wZXJmX3Rlc3QoTW9ja1BvcnQoKSwgJ3NvbWUtZGlyL3NvbWUtdGVzdCcsICcvcGF0
aC9zb21lLWRpci9zb21lLXRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QuX19j
bGFzc19fLCBQZXJmVGVzdCkKLQotICAgIGRlZiB0ZXN0X2luc3BlY3Rvcl90ZXN0KHNlbGYpOgot
ICAgICAgICB0ZXN0ID0gUGVyZlRlc3RGYWN0b3J5LmNyZWF0ZV9wZXJmX3Rlc3QoTW9ja1BvcnQo
KSwgJ2luc3BlY3Rvci9zb21lLXRlc3QnLCAnL3BhdGgvaW5zcGVjdG9yL3NvbWUtdGVzdCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5fX2NsYXNzX18sIENocm9taXVtU3R5bGVQZXJm
VGVzdCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlv
bnRlc3QucHkJKHJldmlzaW9uIDE1MDg3OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMjAgKzM4LDEwIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGlt
cG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2
ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAotZnJvbSB3
ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgQ2hyb21pdW1TdHlsZVBl
cmZUZXN0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQ
ZXJmVGVzdAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5uZXIg
aW1wb3J0IFBlcmZUZXN0c1J1bm5lcgogCiAKLWNsYXNzIEluc3BlY3RvclBhc3NUZXN0RGF0YToK
LSAgICB0ZXh0ID0gJ1JFU1VMVCBncm91cF9uYW1lOiB0ZXN0X25hbWU9IDQyIG1zJwotICAgIG91
dHB1dCA9ICIiIlJ1bm5pbmcgaW5zcGVjdG9yL3Bhc3MuaHRtbCAoMiBvZiAyKQotUkVTVUxUIGdy
b3VwX25hbWU6IHRlc3RfbmFtZT0gNDIgbXMKLUZpbmlzaGVkOiAwLjEgcwotCi0iIiIKLQotCiBj
bGFzcyBFdmVudFRhcmdldFdyYXBwZXJUZXN0RGF0YToKICAgICB0ZXh0ID0gIiIiUnVubmluZyAy
MCB0aW1lcwogSWdub3Jpbmcgd2FybS11cCBydW4gKDE1MDIpCkBAIC0xMTYsNiArMTA2LDkgQEAg
RmluaXNoZWQ6IDAuMSBzCiAKICIiIgogCisgICAgcmVzdWx0cyA9IHsndXJsJzogJ2h0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9zb21l
LXBhcnNlci5odG1sJywKKyAgICAgICAgJ21ldHJpY3MnOiB7J1RpbWUnOiB7J2N1cnJlbnQnOiBb
WzEwODAuMCwgMTEyMC4wLCAxMDk1LjAsIDExMDEuMCwgMTEwNC4wXV0gKiA0fX19CisKIAogY2xh
c3MgTWVtb3J5VGVzdERhdGE6CiAgICAgdGV4dCA9ICIiIlJ1bm5pbmcgMjAgdGltZXMKQEAgLTE2
OCw3ICsxNjEsNyBAQCBjbGFzcyBUZXN0RHJpdmVyOgogICAgICAgICB0aW1lb3V0ID0gRmFsc2UK
ICAgICAgICAgY3Jhc2ggPSBGYWxzZQogICAgICAgICBpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1l
LmVuZHN3aXRoKCdwYXNzLmh0bWwnKToKLSAgICAgICAgICAgIHRleHQgPSBJbnNwZWN0b3JQYXNz
VGVzdERhdGEudGV4dAorICAgICAgICAgICAgdGV4dCA9IFNvbWVQYXJzZXJUZXN0RGF0YS50ZXh0
CiAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgndGltZW91dC5o
dG1sJyk6CiAgICAgICAgICAgICB0aW1lb3V0ID0gVHJ1ZQogICAgICAgICBlbGlmIGRyaXZlcl9p
bnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2ZhaWxlZC5odG1sJyk6CkBAIC0yMTQsNyArMjA3LDcg
QEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHJ1bl90ZXN0
KHNlbGYsIHRlc3RfbmFtZSk6CiAgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1
bm5lcigpCi0gICAgICAgIHRlc3RzID0gW0Nocm9taXVtU3R5bGVQZXJmVGVzdChwb3J0LCB0ZXN0
X25hbWUsIHJ1bm5lci5faG9zdC5maWxlc3lzdGVtLmpvaW4oJ3NvbWUtZGlyJywgdGVzdF9uYW1l
KSldCisgICAgICAgIHRlc3RzID0gW1BlcmZUZXN0KHBvcnQsIHRlc3RfbmFtZSwgcnVubmVyLl9o
b3N0LmZpbGVzeXN0ZW0uam9pbignc29tZS1kaXInLCB0ZXN0X25hbWUpKV0KICAgICAgICAgcmV0
dXJuIHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cykgPT0gMAogCiAgICAgZGVmIHRlc3RfcnVu
X3Bhc3NpbmdfdGVzdChzZWxmKToKQEAgLTI0MSwyNSArMjM0LDkgQEAgY2xhc3MgTWFpblRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0X25hbWVzOgogICAg
ICAgICAgICAgcGF0aCA9IGZpbGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgdGVzdCkK
ICAgICAgICAgICAgIGRpcm5hbWUgPSBmaWxlc3lzdGVtLmRpcm5hbWUocGF0aCkKLSAgICAgICAg
ICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgnaW5zcGVjdG9yLycpOgotICAgICAgICAgICAgICAgIHRl
c3RzLmFwcGVuZChDaHJvbWl1bVN0eWxlUGVyZlRlc3QocnVubmVyLl9wb3J0LCB0ZXN0LCBwYXRo
KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFBlcmZU
ZXN0KHJ1bm5lci5fcG9ydCwgdGVzdCwgcGF0aCkpCisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQo
UGVyZlRlc3QocnVubmVyLl9wb3J0LCB0ZXN0LCBwYXRoKSkKICAgICAgICAgcmV0dXJuIHRlc3Rz
CiAKLSAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXQoc2VsZik6Ci0gICAgICAgIHJ1bm5lciwgcG9y
dCA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCi0gICAgICAgIHRlc3RzID0gc2VsZi5fdGVzdHNfZm9y
X3J1bm5lcihydW5uZXIsIFsnaW5zcGVjdG9yL3Bhc3MuaHRtbCcsICdpbnNwZWN0b3Ivc2lsZW50
Lmh0bWwnLCAnaW5zcGVjdG9yL2ZhaWxlZC5odG1sJywKLSAgICAgICAgICAgICdpbnNwZWN0b3Iv
dG9uZ3VleS5odG1sJywgJ2luc3BlY3Rvci90aW1lb3V0Lmh0bWwnLCAnaW5zcGVjdG9yL2NyYXNo
Lmh0bWwnXSkKLSAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1
dC5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHVuZXhwZWN0ZWRf
cmVzdWx0X2NvdW50ID0gcnVubmVyLl9ydW5fdGVzdHNfc2V0KHRlc3RzKQotICAgICAgICBmaW5h
bGx5OgotICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIsIGxvZyA9IG91dHB1dC5yZXN0b3JlX291
dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5leHBlY3RlZF9yZXN1bHRfY291bnQs
IGxlbih0ZXN0cykgLSAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1xuUkVTVUxUIGdyb3Vw
X25hbWU6IHRlc3RfbmFtZT0gNDIgbXNcbicgaW4gbG9nKQotCiAgICAgZGVmIHRlc3RfcnVuX3Rl
c3Rfc2V0X2tpbGxzX2RydF9wZXJfcnVuKHNlbGYpOgogCiAgICAgICAgIGNsYXNzIFRlc3REcml2
ZXJXaXRoU3RvcENvdW50KFRlc3REcml2ZXIpOgpAQCAtMjczLDcgKzI1MCw3IEBAIGNsYXNzIE1h
aW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdpbnNwZWN0b3IvdG9uZ3Vl
eS5odG1sJywgJ2luc3BlY3Rvci90aW1lb3V0Lmh0bWwnLCAnaW5zcGVjdG9yL2NyYXNoLmh0bWwn
XSkKICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSBydW5uZXIuX3J1bl90ZXN0c19z
ZXQodGVzdHMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0RHJpdmVyV2l0aFN0b3BD
b3VudC5zdG9wX2NvdW50LCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3REcml2ZXJX
aXRoU3RvcENvdW50LnN0b3BfY291bnQsIDkpCiAKICAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXRf
Zm9yX3BhcnNlcl90ZXN0cyhzZWxmKToKICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVh
dGVfcnVubmVyKCkKQEAgLTMwNiw3ICsyODMsNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyX3Rlc3RzWydtZW1vcnkt
dGVzdCddWydtZXRyaWNzJ11bJ01hbGxvYyddLCBNZW1vcnlUZXN0RGF0YS5tYWxsb2NfcmVzdWx0
cykKIAogICAgIGRlZiBfdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChzZWxmLCBydW5uZXIsIGZp
bGVzeXN0ZW0sIHVwbG9hZF9zdWNjZWVkcz1GYWxzZSwgcmVzdWx0c19zaG93bj1UcnVlLCBleHBl
Y3RlZF9leGl0X2NvZGU9MCwgcmVwZWF0PTEsIGNvbXBhcmVfbG9ncz1UcnVlKToKLSAgICAgICAg
ZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocnVubmVyLl9iYXNlX3BhdGggKyAnL2luc3BlY3Rv
ci9wYXNzLmh0bWwnLCAnc29tZSBjb250ZW50JykKKyAgICAgICAgZmlsZXN5c3RlbS53cml0ZV90
ZXh0X2ZpbGUocnVubmVyLl9iYXNlX3BhdGggKyAnL1BhcnNlci9zb21lLXBhcnNlci5odG1sJywg
J3NvbWUgY29udGVudCcpCiAgICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5l
ci5fYmFzZV9wYXRoICsgJy9CaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJywgJ3Nv
bWUgY29udGVudCcpCiAKICAgICAgICAgdXBsb2FkZWQgPSBbRmFsc2VdCkBAIC0zMzMsNyArMzEw
LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZXhw
ZWN0ZWRfbG9ncyA9ICcnCiAgICAgICAgICAgICBmb3IgaSBpbiB4cmFuZ2UocmVwZWF0KToKICAg
ICAgICAgICAgICAgICBydW5zID0gJyAoUnVuICVkIG9mICVkKScgJSAoaSArIDEsIHJlcGVhdCkg
aWYgcmVwZWF0ID4gMSBlbHNlICcnCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncyArPSAn
UnVubmluZyAyIHRlc3RzJXNcbicgJSBydW5zICsgRXZlbnRUYXJnZXRXcmFwcGVyVGVzdERhdGEu
b3V0cHV0ICsgSW5zcGVjdG9yUGFzc1Rlc3REYXRhLm91dHB1dAorICAgICAgICAgICAgICAgIGV4
cGVjdGVkX2xvZ3MgKz0gJ1J1bm5pbmcgMiB0ZXN0cyVzXG4nICUgcnVucyArIEV2ZW50VGFyZ2V0
V3JhcHBlclRlc3REYXRhLm91dHB1dCArIFNvbWVQYXJzZXJUZXN0RGF0YS5vdXRwdXQKICAgICAg
ICAgICAgIGlmIHJlc3VsdHNfc2hvd246CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncyAr
PSAnTU9DSzogdXNlci5vcGVuX3VybDogZmlsZTovLy4uLlxuJwogICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLl9ub3JtYWxpemVfb3V0cHV0KGxvZ3MpLCBleHBlY3RlZF9sb2dzKQpA
QCAtMzQ1LDcgKzMyMiwxMCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cyA9IHsKICAgICAg
ICAgIkJpbmRpbmdzIjoKICAgICAgICAgICAgIHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzIiwKLSAgICAgICAgICAg
ICJ0ZXN0cyI6IHsiZXZlbnQtdGFyZ2V0LXdyYXBwZXIiOiBFdmVudFRhcmdldFdyYXBwZXJUZXN0
RGF0YS5yZXN1bHRzfX19CisgICAgICAgICAgICAidGVzdHMiOiB7ImV2ZW50LXRhcmdldC13cmFw
cGVyIjogRXZlbnRUYXJnZXRXcmFwcGVyVGVzdERhdGEucmVzdWx0c319LAorICAgICAgICAiUGFy
c2VyIjoKKyAgICAgICAgICAgIHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL1BhcnNlciIsCisgICAgICAgICAgICAidGVzdHMiOiB7
InNvbWUtcGFyc2VyIjogU29tZVBhcnNlclRlc3REYXRhLnJlc3VsdHN9fX0KIAogICAgIGRlZiB0
ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHNlbGYpOgogICAgICAgICBydW5uZXIsIHBvcnQgPSBz
ZWxmLmNyZWF0ZV9ydW5uZXJfYW5kX3NldHVwX3Jlc3VsdHNfdGVtcGxhdGUoYXJncz1bJy0tb3V0
cHV0LWpzb24tcGF0aD0vbW9jay1jaGVja291dC9vdXRwdXQuanNvbicsCkBAIC01MzgsNyArNTE4
LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG91dHB1dFsnYnVpbGRlck5hbWUnXSwgJ2J1aWxkZXIxJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChvdXRwdXRbJ2J1aWxkZXJLZXknXSwgJ3ZhbHVlMScpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwob3V0cHV0WydyZXZpc2lvbnMnXSwgeydXZWJLaXQnOiB7J3JldmlzaW9u
JzogJzU2NzgnLCAndGltZXN0YW1wJzogJzIwMTMtMDItMDEgMDg6NDg6MDUgKzAwMDAnfX0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Wyd0ZXN0cyddLmtleXMoKSwgWydCaW5kaW5n
cyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dFsndGVzdHMnXS5rZXlzKCksIFsn
QmluZGluZ3MnLCAnUGFyc2VyJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG91
dHB1dFsndGVzdHMnXVsnQmluZGluZ3MnXS5rZXlzKCkpLCBbJ3Rlc3RzJywgJ3VybCddKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dFsndGVzdHMnXVsnQmluZGluZ3MnXVsndXJsJ10s
ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9C
aW5kaW5ncycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Wyd0ZXN0cyddWydCaW5k
aW5ncyddWyd0ZXN0cyddLmtleXMoKSwgWydldmVudC10YXJnZXQtd3JhcHBlciddKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>