<?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>72260</bug_id>
          
          <creation_ts>2011-11-14 05:25:45 -0800</creation_ts>
          <short_desc>Web Inspector: adapt Inspector&apos;s performance tests for running with run_webkit_test</short_desc>
          <delta_ts>2011-12-01 11:32:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73079</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501816</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-11-14 05:25:45 -0800</bug_when>
    <thetext>Sample command line:
$ ./webkit/tools/layout_tests/run_webkit_tests.sh --release --no-retry-failures inspector/performance --time-out-ms=30000 --no-pixel-tests --print=performance -f --no-show-results --force

Sample output:
RESULT first-open: first-open-resources= 34 ms
RESULT first-open: heap-delta-first-open-resources= 43 kB
RESULT first-open: first-open-elements= 101 ms
RESULT first-open: heap-delta-first-open-elements= 10 kB
RESULT first-open: first-open-scripts= 158 ms
RESULT first-open: heap-delta-first-open-scripts= 160 kB
RESULT panel-switch: show-panel-elements= 20 ms
RESULT panel-switch: show-panel-resources= 11 ms
RESULT panel-switch: show-panel-network= 58 ms
RESULT panel-switch: show-panel-scripts= 33 ms
RESULT panel-switch: show-panel-timeline= 21 ms
RESULT panel-switch: show-panel-profiles= 10 ms
RESULT panel-switch: show-panel-audits= 9 ms
RESULT panel-switch: show-panel-console= 10 ms
RESULT panel-switch: heap-delta-show-panel= 1 kB
RESULT panel-update: network-append-30-requests= 53 ms
RESULT panel-update: heap-delta-network-append-30-requests= 2 kB
RESULT inspector-startup-time: time= 552 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501821</commentid>
    <comment_count>1</comment_count>
      <attachid>114923</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-11-14 05:36:00 -0800</bug_when>
    <thetext>Created attachment 114923
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501823</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 05:39:52 -0800</bug_when>
    <thetext>Attachment 114923 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Last 3072 characters of output:
ml  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3862:  Path does not exist. svg/zoom/page/relative-sized-document-scrollbars.svg  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3864:  Path does not exist. storage/indexeddb/key-type-array.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3866:  Path does not exist. storage/indexeddb/factory-deletedatabase-interactions.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3868:  Path does not exist. fast/js/array-functions-non-arrays.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3869:  Path does not exist. fast/js/eval-cross-window.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3870:  Path does not exist. fast/js/regexp-caching.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3871:  Path does not exist. fast/js/toString-overrides.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3872:  Path does not exist. fast/js/toString-recursion.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3873:  Path does not exist. http/tests/security/xss-eval.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3875:  Path does not exist. fast/dom/javascript-url-exception-isolation.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3876:  Path does not exist. fast/borders/inline-mask-overlay-image-outset-vertical-rl.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3878:  Path does not exist. fast/dom/rtl-scroll-to-leftmost-and-resize.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3880:  Path does not exist. accessibility/adjacent-continuations-cause-assertion-failure.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3882:  Path does not exist. inspector/debugger/script-formatter.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3885:  Path does not exist. fast/js/mozilla/strict/15.4.5.1.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3887:  Path does not exist. fast/canvas/canvas-transforms-fillRect-shadow.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3889:  Path does not exist. media/track/tracklist-is-reachable.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3891:  Path does not exist. http/tests/inspector-enabled/dedicated-workers-list.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3892:  Path does not exist. http/tests/inspector-enabled/dedicated-workers-list.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3894:  Path does not exist. http/tests/security/cross-frame-access-custom.html  [test/expectations] [2]
Total errors found: 2224 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501843</commentid>
    <comment_count>3</comment_count>
      <attachid>114928</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-11-14 06:02:28 -0800</bug_when>
    <thetext>Created attachment 114928
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501847</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 06:05:48 -0800</bug_when>
    <thetext>Attachment 114928 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Last 3072 characters of output:
ml  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3862:  Path does not exist. svg/zoom/page/relative-sized-document-scrollbars.svg  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3864:  Path does not exist. storage/indexeddb/key-type-array.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3866:  Path does not exist. storage/indexeddb/factory-deletedatabase-interactions.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3868:  Path does not exist. fast/js/array-functions-non-arrays.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3869:  Path does not exist. fast/js/eval-cross-window.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3870:  Path does not exist. fast/js/regexp-caching.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3871:  Path does not exist. fast/js/toString-overrides.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3872:  Path does not exist. fast/js/toString-recursion.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3873:  Path does not exist. http/tests/security/xss-eval.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3875:  Path does not exist. fast/dom/javascript-url-exception-isolation.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3876:  Path does not exist. fast/borders/inline-mask-overlay-image-outset-vertical-rl.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3878:  Path does not exist. fast/dom/rtl-scroll-to-leftmost-and-resize.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3880:  Path does not exist. accessibility/adjacent-continuations-cause-assertion-failure.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3882:  Path does not exist. inspector/debugger/script-formatter.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3885:  Path does not exist. fast/js/mozilla/strict/15.4.5.1.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3887:  Path does not exist. fast/canvas/canvas-transforms-fillRect-shadow.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3889:  Path does not exist. media/track/tracklist-is-reachable.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3891:  Path does not exist. http/tests/inspector-enabled/dedicated-workers-list.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3892:  Path does not exist. http/tests/inspector-enabled/dedicated-workers-list.html  [test/expectations] [2]
LayoutTests/platform/chromium/test_expectations.txt:3894:  Path does not exist. http/tests/security/cross-frame-access-custom.html  [test/expectations] [2]
Total errors found: 2223 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504568</commentid>
    <comment_count>5</comment_count>
      <attachid>114928</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-16 22:46:54 -0800</bug_when>
    <thetext>Comment on attachment 114928
[patch] initial version

Clearing r? until we clarify the overall vision and agree on webkitpy changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508759</commentid>
    <comment_count>6</comment_count>
      <attachid>116507</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-11-24 07:00:29 -0800</bug_when>
    <thetext>Created attachment 116507
[patch] third version with the tests in PerformanceTests/inspector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509634</commentid>
    <comment_count>7</comment_count>
      <attachid>116507</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-28 01:11:56 -0800</bug_when>
    <thetext>Comment on attachment 116507
[patch] third version with the tests in PerformanceTests/inspector

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

&gt; PerformanceTests/ChangeLog:7
&gt; +        $ run-devtools-perf-test.py --release

run-devtools-perf-test.py should be renamed to run-inspector-perf-tests.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512728</commentid>
    <comment_count>8</comment_count>
      <attachid>117407</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 06:40:55 -0800</bug_when>
    <thetext>Created attachment 117407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512914</commentid>
    <comment_count>9</comment_count>
      <attachid>117407</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-01 11:06:07 -0800</bug_when>
    <thetext>Comment on attachment 117407
Patch

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

&gt; PerformanceTests/ChangeLog:3
&gt; +        Web Inspector: chromium: move and adapt Inspector&apos;s performance tests for running with run-devtools-perf-tests.py.

It says &quot;move&quot;, but I don&apos;t see deleted files in this change.

&gt; PerformanceTests/ChangeLog:7
&gt; +        $ run-inspector-perf-tests.py --release

Limiting ChangeLog to this usage line and explaining what it does is sufficient. Otherwise it looks like test results squeezed into the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512923</commentid>
    <comment_count>10</comment_count>
      <attachid>117448</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 11:21:23 -0800</bug_when>
    <thetext>Created attachment 117448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512938</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-12-01 11:32:07 -0800</bug_when>
    <thetext>Committed r101692: &lt;http://trac.webkit.org/changeset/101692&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114923</attachid>
            <date>2011-11-14 05:36:00 -0800</date>
            <delta_ts>2011-11-14 06:02:28 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42881</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMzJjMjllLi5iNDU2NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEt
MTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkYXB0IEluc3BlY3RvcidzIHBlcmZvcm1hbmNlIHRlc3RzIGZvciBydW5u
aW5nIHdpdGggcnVuX3dlYmtpdF90ZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNjAKKworICAgICAgICBTYW1wbGUgY29tbWFuZCBsaW5lOgor
ICAgICAgICAkIC4vd2Via2l0L3Rvb2xzL2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnNo
IC0tcmVsZWFzZSAtLW5vLXJldHJ5LWZhaWx1cmVzIGluc3BlY3Rvci9wZXJmb3JtYW5jZSAtLXRp
bWUtb3V0LW1zPTMwMDAwIC0tbm8tcGl4ZWwtdGVzdHMgLS1wcmludD1wZXJmb3JtYW5jZSAtZiAt
LW5vLXNob3ctcmVzdWx0cyAtLWZvcmNlCisKKyAgICAgICAgU2FtcGxlIG91dHB1dDoKKyAgICAg
ICAgUkVTVUxUIGZpcnN0LW9wZW46IGZpcnN0LW9wZW4tcmVzb3VyY2VzPSAzNCBtcworICAgICAg
ICBSRVNVTFQgZmlyc3Qtb3BlbjogaGVhcC1kZWx0YS1maXJzdC1vcGVuLXJlc291cmNlcz0gNDMg
a0IKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1lbGVtZW50cz0gMjAg
bXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1jb25zb2xlPSAxMCBt
cworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4tZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291
cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0
LW9wZW4tcmVzb3VyY2VzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2Zp
cnN0LW9wZW4tc2NyaXB0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1zY3JpcHRz
Lmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2luc3BlY3Rvci1zdGFydHVw
LXRpbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFu
Y2UvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0
bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNl
LXRlc3QuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
cmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMuCisgICAgICAgIChpbml0aWFsaXplX1RpbWVU
cmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToKKyAgICAgICAg
KGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3Qu
VGltZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIu
SW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmZpbmlzaCk6
CisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9y
bWFuY2VUZXN0LlRpbWVyLnByb3RvdHlwZS5fZ2V0SlNIZWFwU2l6ZSk6CisgICAgICAgIChpbml0
aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVy
LnByb3RvdHlwZS5kb25lKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVj
dG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9ydW5UZXN0KToKKyAg
ICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5j
ZVRlc3QuVGltZXIucHJvdG90eXBlLl9kdW1wKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRy
YWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QpOgorICAgICAgICAoaW5pdGlh
bGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0Lm1hcmspOgorICAgICAgICAqIGluc3BlY3Rv
ci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvY29uc29sZS1hcHBlbmQtMTAwLWxpbmVzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hvdy1wYW5l
bC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jl
c291cmNlcy9zaG93LXBhbmVsLmh0bWwuCisKIDIwMTEtMTEtMTQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2UtdHJlZS9hcHBjYWNoZS1pZnJhbWUtbWFuaWZlc3RzLmh0bWwgZmFpbGluZyBvbiBzb21l
IGNocm9taXVtIGJvdHMgYWZ0ZXIgcjk5OTg4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVu
LWVsZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzODI5MjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVt
ZW50cy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7
CisKKworICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9z
ZXREb2N1bWVudChudWxsKTsKKworICAgICAgICB2YXIgc2hvd1BhbmVsVGltZXJDb29raWUgPSB0
aW1lci5zdGFydCgiZmlyc3Qtb3Blbi1lbGVtZW50cyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKHNob3dQYW5lbFRpbWVyQ29v
a2llKTsKKyAgICAgICAgICAgIHRpbWVyLmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICAgICAgfSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwgNTAwMCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisKKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKworPC9ib2R5PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2Zp
cnN0LW9wZW4tcmVzb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTViYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbApAQCAt
MCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJw
ZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtLnNldChXZWJJbnNwZWN0
b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVy
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisKKyAg
ICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4t
cmVzb3VyY2VzIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25p
ZmZlcihQYWdlQWdlbnQsICJnZXRSZXNvdXJjZUNvbnRlbnQiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgICAgICB0
aW1lci5kb25lKCJmaXJzdC1vcGVuIik7CisgICAgICAgIH0pOworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnJlc291cmNlcy5yZXNldCgpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmVlTW9kZWwuZnJvbnRlbmRSZXVzZWQoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgicmVzb3VyY2VzIik7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3Jt
YW5jZVRlc3QodGVzdCwgNTAwMCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9w
ZW4tc2NyaXB0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOGIxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4t
c2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9w
ZW4tc2NyaXB0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYjRj
ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
Zmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJzY3JpcHRzIik7CisKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVz
Lm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZh
bHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7CisgICAgICAgICAgICAg
ZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisKKyAgICAgICAgdmFyIHNob3dQ
YW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tc2NyaXB0cyIpOworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7CisgICAgICAgIHZhciBjb3Vu
dCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIu
X21haW5QYW5lbC5fdGV4dENodW5rcy5sZW5ndGg7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fZXhwYW5kQ2h1
bmtzKDAsIGNvdW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl92aXNp
YmxlVmlldy5fdGV4dFZpZXdlci5fbWFpblBhbmVsLl9wYWludFNjaGVkdWxlZExpbmVzKCk7Cisg
ICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgIHRpbWVy
LmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZv
cm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9y
LXN0YXJ0dXAtdGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTFmMmQwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1Rlc3RzIFdlYiBJbnNwZWN0b3Igc3RhcnR1cCB0aW1lLgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9pbnNwZWN0b3Itc3RhcnR1cC10aW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9yLXN0YXJ0
dXAtdGltZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiOTA2YzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5z
cGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgdGltZXMgPSBbXTsKKyAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygp
OworICAgIHRlc3RTdGFydFRpbWUgPSBzdGFydFRpbWU7CisgICAgcnVuVGVzdCgpOworfQorCitm
dW5jdGlvbiBpbnNwZWN0b3JJc1JlYWR5KCkKK3sKKyAgICB0aW1lcy5wdXNoKERhdGUubm93KCkg
LSBzdGFydFRpbWUpOworICAgIGlmIChEYXRlLm5vdygpIC0gdGVzdFN0YXJ0VGltZSA+IDIwMDAw
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3Io
MiwgIkluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cygnaW5zcGVjdG9yLXN0YXJ0dXAtdGltZScs
ICd0aW1lJywgIiArIEpTT04uc3RyaW5naWZ5KHRpbWVzKSArICIsICdtcycpIikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcigzLCAiKEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCkpIikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgIHN0YXJ0VGltZSA9IERh
dGUubm93KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwor
ICAgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50Ll9zZXREb2N1bWVudChudWxsKTsKKworICAgIEluc3BlY3RvclRlc3QuYWRkQmFj
a2VuZFJlc3BvbnNlU25pZmZlcihET01BZ2VudCwgInJlcXVlc3RDaGlsZE5vZGVzIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0QWN0aXZlUGFuZWwuc2V0
KCJhdWRpdHMiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiaW5zcGVj
dG9ySXNSZWFkeSgpIik7CisgICAgfSk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxl
bWVudHMiKTsKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2Fk
KCkiPgorPHA+VGVzdHMgV2ViIEluc3BlY3RvciBzdGFydHVwIHRpbWUuPC9wPgorCis8ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvbmV0d29yay1hcHBlbmQtMzAt
cmVxdWVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNl
L25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wZXJmb3JtYW5jZS9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFiODgwMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9uZXR3b3JrLWFwcGVuZC0z
MC1yZXF1ZXN0cy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC5VUkwsIHRydWUpOworICAg
ICAgICB4aHIuc2VuZCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2Vi
SW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworCisgICAgdmFyIG9yaWdpbmFsUmVmcmVz
aCA9IEluc3BlY3RvclRlc3Qub3ZlcnJpZGUoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9u
ZXR3b3JrTG9nVmlldywgInJlZnJlc2giLCB0aW1lVHJhY2tpbmdSZWZyZXNoLCB0cnVlKTsKKyAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9kZWZhdWx0UmVm
cmVzaERlbGF5ID0gMzA7CisgICAgZnVuY3Rpb24gdGltZVRyYWNraW5nUmVmcmVzaCgpCisgICAg
eworICAgICAgICB2YXIgY29va2llID0gSW5zcGVjdG9yVGVzdC50aW1lci5zdGFydCgibmV0d29y
ay1hcHBlbmQtMzAtcmVxdWVzdHMiKTsKKyAgICAgICAgb3JpZ2luYWxSZWZyZXNoLmNhbGwodGhp
cyk7CisgICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZmluaXNoKGNvb2tpZSk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX3Jlc2V0KCk7Cisg
ICAgICAgIC8vIEluIHJlYWwgbGlmZSB0aGlzIGFycmF5IGlzIGNsZWFuaW5nIHVwIGF0IG5hdmln
YXRpb24gZXZlbnQuCisgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLl9yZXNvdXJjZXMg
PSBbXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5kb25lKCJwYW5lbC11cGRhdGUiKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibWFrZVhIUlJlcXVlc3RzKDMwKSIpOworICAgIH0KKwor
ICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDE1MDAwKTsKK30KKwor
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICBtYWtlWEhSUmVxdWVzdHMoMzApOworICAgIH0sIDMwMDApOworfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNl
L3BlcmZvcm1hbmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
cGVyZm9ybWFuY2UtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODhjOGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3BlcmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBpbml0aWFsaXpl
X1RpbWVUcmFja2VyID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3QucnVuUGVyZm9ybWFu
Y2VUZXN0ID0gZnVuY3Rpb24ocGVyZlRlc3QsIGV4ZWN1dGVUaW1lLCBjYWxsYmFjaykKK3sKKyAg
ICB2YXIgVGltZXIgPSBmdW5jdGlvbih0ZXN0LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAg
ICAgICB0aGlzLl90aW1lcyA9IHt9OworICAgICAgICB0aGlzLl90ZXN0U3RhcnRUaW1lID0gbmV3
IERhdGUoKTsKKyAgICAgICAgdGhpcy5faGVhcFNpemVEZWx0YXMgPSBbXTsKKyAgICAgICAgdGhp
cy5fanNIZWFwU2l6ZSA9IHRoaXMuX2dldEpTSGVhcFNpemUoKTsKKyAgICB9CisKKyAgICBUaW1l
ci5wcm90b3R5cGUgPSB7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihuYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4ge25hbWU6IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKX07
CisgICAgICAgIH0sCisKKyAgICAgICAgZmluaXNoOiBmdW5jdGlvbihjb29raWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBlbmRUaW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fdGltZXNbY29va2llLm5hbWVdKQorICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVz
W2Nvb2tpZS5uYW1lXSA9IFtdOworICAgICAgICAgICAgdGhpcy5fdGltZXNbY29va2llLm5hbWVd
LnB1c2goZW5kVGltZSAtIGNvb2tpZS5zdGFydFRpbWUpOworICAgICAgICB9LAorCisgICAgICAg
IF9nZXRKU0hlYXBTaXplOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdpbmRv
dy5nYygpOworICAgICAgICAgICAgd2luZG93LmdjKCk7CisgICAgICAgICAgICByZXR1cm4gY29u
c29sZS5tZW1vcnkudXNlZEpTSGVhcFNpemU7CisgICAgICAgIH0sCisKKyAgICAgICAgZG9uZTog
ZnVuY3Rpb24oZ3JvdXBOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV3SlNIZWFw
U2l6ZSA9IHRoaXMuX2dldEpTSGVhcFNpemUoKTsKKyAgICAgICAgICAgIHRoaXMuX2hlYXBTaXpl
RGVsdGFzLnB1c2gobmV3SlNIZWFwU2l6ZSAtIHRoaXMuX2pzSGVhcFNpemUpOworICAgICAgICAg
ICAgdGhpcy5fanNIZWFwU2l6ZSA9IG5ld0pTSGVhcFNpemU7CisKKyAgICAgICAgICAgIHZhciB0
aW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5fdGVzdFN0YXJ0
VGltZSA8IGV4ZWN1dGVUaW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX3J1blRlc3QoKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRl
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2R1bXAoZ3JvdXBOYW1lKTsKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X2NhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIF9ydW5UZXN0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9ndWFyZCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fcnVuVGVz
dC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciBzYWZl
VGVzdCA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAodGhpcy5fdGVzdCk7CisgICAgICAgICAgICBz
YWZlVGVzdCh0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gZmFsc2U7CisgICAgICAg
IH0sCisKKyAgICAgICAgX2R1bXA6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGltZXMpCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHRoaXMu
X3RpbWVzW3Rlc3ROYW1lXSwgIm1zIik7CisKKyAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNw
ZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTDsKKyAgICAgICAgICAgIHZhciByZWdFeHAg
PSAvKFteXC9dKylcLmh0bWwvOworICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhl
Yyh1cmwpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFt
ZSwgImhlYXAtZGVsdGEtIiArIG1hdGNoZXNbMV0sIHRoaXMuX2hlYXBTaXplRGVsdGFzLCAia0Ii
LCAxMDI0KTsKKyAgICAgICAgfSwKKworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QudGltZXIg
PSBuZXcgVGltZXIocGVyZlRlc3QsIGNhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRpbWVy
Ll9ydW5UZXN0KCk7Cit9CisKK0luc3BlY3RvclRlc3QubWFyayA9IGZ1bmN0aW9uKG1hcmtlck5h
bWUpCit7CisgICAgdmFyIHRpbWVyID0gSW5zcGVjdG9yVGVzdC50aW1lcjsKKyAgICBpZiAoIXRp
bWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nv
b2tpZSkKKyAgICAgICAgdGltZXIuZmluaXNoKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUp
OworCisgICAgSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSA9IG1hcmtlck5hbWUgPyB0aW1l
ci5zdGFydChtYXJrZXJOYW1lKSA6IG51bGw7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFRlc3RT
dGF0cyA9IGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHNhbXBsZXMsIHVuaXRzLCBkaXZp
ZGVyKQoreworICAgIGRpdmlkZXIgPSBkaXZpZGVyIHx8IDE7CisgICAgdmFyIHN0cmlwTlJlc3Vs
dHMgPSBNYXRoLmZsb29yKHNhbXBsZXMubGVuZ3RoIC8gMTApOworICAgIHNhbXBsZXMuc29ydChm
dW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7CisgICAgdmFyIHN1bSA9IDA7CisgICAg
Zm9yICh2YXIgaSA9IHN0cmlwTlJlc3VsdHM7IGkgPCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJl
c3VsdHM7ICsraSkKKyAgICAgICAgc3VtICs9IHNhbXBsZXNbaV07CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiNQRVJGOlJFU1VMVCAiICsgZ3JvdXBOYW1lICsgJzogJyArIHRlc3ROYW1l
ICsgIj0gIiArIE1hdGguZmxvb3Ioc3VtIC8gKHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0
cyAqIDIpIC8gZGl2aWRlcikgKyAiICIgKyB1bml0cyk7Cit9CisKK0luc3BlY3RvclRlc3QuYWRk
QmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3Zl
cnJpZGUsIG9wdF9zdGlja3kpCit7CisgICAgdmFyIG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9y
VGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5hbWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5
KTsKKyAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgpCisgICAgeworICAgICAgICB2YXIgYXJncyA9
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisgICAgICAgIHZhciBjYWxs
YmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAi
ZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOworICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAg
ICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgfQorfQorCit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2Nv
bnNvbGUtYXBwZW5kLTEwMC1saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL3Jlc291cmNlcy9jb25zb2xlLWFwcGVuZC0xMDAtbGluZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjM2JjYS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2NvbnNvbGUtYXBwZW5kLTEwMC1saW5lcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotCi1mdW5jdGlvbiBtYWtlQ29uc29sZUV2ZW50cyhjb3VudCkKLXsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnNvbGUubG9nKCJDb25zb2xl
IGxvZzogIiArIGkpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJjb25zb2xlIik7Ci0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuY2xlYXJNZXNzYWdlcygpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LnByb21wdEVs
ZW1lbnQsICJzY3JvbGxJbnRvVmlldyIsIGZpbmlzaCk7Ci0gICAgICAgIGNvb2tpZSA9IHRpbWVy
LnN0YXJ0KCJjb25zb2xlLWFwcGVuZC0xMDAtbGluZXMiKTsKLQotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlQ29uc29sZUV2ZW50cygxMDApIik7Ci0KLSAgICAgICAg
ZnVuY3Rpb24gZmluaXNoKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGNv
b2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxMDAwMCk7Ci19Ci0KLWlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgbWFrZUNvbnNvbGVFdmVudHMoMTAwKTsKLSAgICB9LCAzMDAwKTsKLX0K
LQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5j
ZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NDEwODMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
ImF1ZGl0cyIpOwotCi0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVy
Q29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tZWxlbWVudHMiKTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VTbmlmZmVyKERPTUFnZW50LCAicmVxdWVzdENo
aWxkTm9kZXMiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFu
ZWxUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0pOwot
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgIH0KLQotICAg
IEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDUwMDApOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotCi08ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci0KLTwvYm9keT4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNv
dXJjZXMvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3Y2YxYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJl
c291cmNlcyIpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0
ZWRJdGVtLnNldChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCk7Ci0KLSAg
ICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgiYXVkaXRzIik7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGlt
ZXIuc3RhcnQoImZpcnN0LW9wZW4tcmVzb3VyY2VzIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkQmFja2VuZFJlc3BvbnNlU25pZmZlcihQYWdlQWdlbnQsICJnZXRSZXNvdXJjZUNvbnRlbnQi
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNv
b2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5fcmVzZXRSZXNvdXJjZXNUcmVlKCk7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mcm9udGVuZFJldXNlZCgpOwotICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKLX0KLQotPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvYm9k
eT4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNTVkZjkuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXNjcmlwdHMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
c2NyaXB0cyIpOwotCi0gICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
Ll9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5vcHRp
b25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tpXS52YWx1ZS5p
bmRleE9mKCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgewotICAgICAgICAgICAgIGZpbGVz
LnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoImF1ZGl0cyIpOwotCi0gICAgICAgIHZhciBzaG93UGFuZWxU
aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmaXJzdC1vcGVuLXNjcmlwdHMiKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgICAgICB2YXIgY291bnQgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9tYWlu
UGFuZWwuX3RleHRDaHVua3MubGVuZ3RoOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9tYWluUGFuZWwuX2V4cGFuZENodW5rcygw
LCBjb3VudCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZp
ZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fcGFpbnRTY2hlZHVsZWRMaW5lcygpOwotICAgICAg
ICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOwotICAgICAgICB0aW1lci5kb25l
KCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwg
NTAwMCk7Ci19Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KLTwvYm9keT4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2luc3BlY3Rvci1zdGFy
dHVwLXRpbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjODFjMS4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2lu
c3BlY3Rvci1zdGFydHVwLXRpbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gb25sb2FkKCkKLXsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGltZXMgPSBbXTsKLSAgICBzdGFy
dFRpbWUgPSBEYXRlLm5vdygpOwotICAgIHRlc3RTdGFydFRpbWUgPSBzdGFydFRpbWU7Ci0gICAg
cnVuVGVzdCgpOwotfQotCi1mdW5jdGlvbiBpbnNwZWN0b3JJc1JlYWR5KCkKLXsKLSAgICB0aW1l
cy5wdXNoKERhdGUubm93KCkgLSBzdGFydFRpbWUpOwotICAgIGlmIChEYXRlLm5vdygpIC0gdGVz
dFN0YXJ0VGltZSA+IDIwMDAwKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoMiwgIkluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cygnaW5zcGVj
dG9yLXN0YXJ0dXAtdGltZScsICIgKyBKU09OLnN0cmluZ2lmeSh0aW1lcykgKyAiKSIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoMywgIihJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpKSIpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICBzdGFydFRpbWUg
PSBEYXRlLm5vdygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3Io
KTsKLSAgICBydW5UZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmFk
ZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIsIGZ1
bmN0aW9uKCkgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVs
LnNldCgiYXVkaXRzIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImlu
c3BlY3RvcklzUmVhZHkoKSIpOwotICAgIH0pOwotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
ImVsZW1lbnRzIik7Ci19Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KLTxwPlRlc3RzIFdlYiBJbnNwZWN0b3Igc3RhcnR1cCB0aW1lLjwvcD4KLQotPGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3
b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGMzN2EwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVz
dHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQotewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC5VUkwsIHRy
dWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOwotCi0gICAgdmFyIG9yaWdp
bmFsUmVmcmVzaCA9IEluc3BlY3RvclRlc3Qub3ZlcnJpZGUoV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLl9uZXR3b3JrTG9nVmlldywgInJlZnJlc2giLCB0aW1lVHJhY2tpbmdSZWZyZXNoLCB0
cnVlKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9k
ZWZhdWx0UmVmcmVzaERlbGF5ID0gMzA7Ci0gICAgZnVuY3Rpb24gdGltZVRyYWNraW5nUmVmcmVz
aCgpCi0gICAgewotICAgICAgICB2YXIgY29va2llID0gSW5zcGVjdG9yVGVzdC50aW1lci5zdGFy
dCgibmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMiKTsKLSAgICAgICAgb3JpZ2luYWxSZWZyZXNo
LmNhbGwodGhpcyk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZmluaXNoKGNvb2tpZSk7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX3Jl
c2V0KCk7Ci0gICAgICAgIC8vIEluIHJlYWwgbGlmZSB0aGlzIGFycmF5IGlzIGNsZWFuaW5nIHVw
IGF0IG5hdmlnYXRpb24gZXZlbnQuCi0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLl9y
ZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5kb25lKCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygzMCkiKTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxNTAwMCk7Ci19Ci0KLWlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKLSAgICAgICAgbWFrZVhIUlJlcXVlc3RzKDMwKTsKLSAgICB9LCAzMDAwKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNv
dXJjZXMvcGVyZm9ybWFuY2UtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3Jt
YW5jZS9yZXNvdXJjZXMvcGVyZm9ybWFuY2UtdGVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2YwMTQ2NC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVy
Zm9ybWFuY2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjcgKzAsMCBAQAotdmFyIGluaXRpYWxpemVfVGltZVRyYWNrZXIgPSBmdW5jdGlvbigpIHsK
LQotSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QgPSBmdW5jdGlvbihwZXJmVGVzdCwg
ZXhlY3V0ZVRpbWUsIGNhbGxiYWNrKQotewotICAgIHZhciBUaW1lciA9IGZ1bmN0aW9uKHRlc3Qs
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAg
ICAgICAgdGhpcy5fdGVzdCA9IHRlc3Q7Ci0gICAgICAgIHRoaXMuX3RpbWVzID0ge307Ci0gICAg
ICAgIHRoaXMuX3Rlc3RTdGFydFRpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICB0aGlzLl9oZWFw
U2l6ZURlbHRhcyA9IFtdOwotICAgICAgICB0aGlzLl9qc0hlYXBTaXplID0gdGhpcy5fZ2V0SlNI
ZWFwU2l6ZSgpOwotICAgIH0KLQotICAgIFRpbWVyLnByb3RvdHlwZSA9IHsKLSAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7bmFtZTog
bmFtZSwgc3RhcnRUaW1lOiBuZXcgRGF0ZSgpfTsKLSAgICAgICAgfSwKLQotICAgICAgICBmaW5p
c2g6IGZ1bmN0aW9uKGNvb2tpZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVuZFRpbWUg
PSBuZXcgRGF0ZSgpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl90aW1lc1tjb29raWUubmFtZV0p
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGltZXNbY29va2llLm5hbWVdID0gW107Ci0gICAgICAg
ICAgICB0aGlzLl90aW1lc1tjb29raWUubmFtZV0ucHVzaChlbmRUaW1lIC0gY29va2llLnN0YXJ0
VGltZSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgX2dldEpTSGVhcFNpemU6IGZ1bmN0aW9uKCkK
LSAgICAgICAgewotICAgICAgICAgICAgd2luZG93LmdjKCk7Ci0gICAgICAgICAgICB3aW5kb3cu
Z2MoKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zb2xlLm1lbW9yeS51c2VkSlNIZWFwU2l6ZTsK
LSAgICAgICAgfSwKLQotICAgICAgICBkb25lOiBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZhciBuZXdKU0hlYXBTaXplID0gdGhpcy5fZ2V0SlNIZWFwU2l6ZSgpOwotICAgICAg
ICAgICAgdGhpcy5faGVhcFNpemVEZWx0YXMucHVzaChuZXdKU0hlYXBTaXplIC0gdGhpcy5fanNI
ZWFwU2l6ZSk7Ci0gICAgICAgICAgICB0aGlzLl9qc0hlYXBTaXplID0gbmV3SlNIZWFwU2l6ZTsK
LQotICAgICAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICAgICAgaWYgKHRp
bWUgLSB0aGlzLl90ZXN0U3RhcnRUaW1lIDwgZXhlY3V0ZVRpbWUpCi0gICAgICAgICAgICAgICAg
dGhpcy5fcnVuVGVzdCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fY29tcGxldGUgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fZHVt
cCgpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgX3J1blRlc3Q6IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHRoaXMuX2d1YXJkKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0
aGlzLl9ydW5UZXN0LmJpbmQodGhpcyksIDApOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSB0cnVlOwotICAgICAgICAg
ICAgdmFyIHNhZmVUZXN0ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCh0aGlzLl90ZXN0KTsKLSAg
ICAgICAgICAgIHNhZmVUZXN0KHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSBmYWxz
ZTsKLSAgICAgICAgfSwKLQotICAgICAgICBfZHVtcDogZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0aGlzLl90aW1lcykKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHModGVzdE5hbWUsIHRoaXMuX3RpbWVzW3Rl
c3ROYW1lXSk7Ci0KLSAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlLl9kb2N1bWVudFVSTDsKLSAgICAgICAgICAgIHZhciByZWdFeHAgPSAvKFteXC9dKylcLmh0
bWwvOwotICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyh1cmwpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKCJoZWFwLWRlbHRhLWtiLSIgKyBtYXRj
aGVzWzFdLCB0aGlzLl9oZWFwU2l6ZURlbHRhcywgMTAyNCk7Ci0gICAgICAgIH0sCi0KLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnRpbWVyID0gbmV3IFRpbWVyKHBlcmZUZXN0LCBjYWxsYmFj
ayk7Ci0gICAgSW5zcGVjdG9yVGVzdC50aW1lci5fcnVuVGVzdCgpOwotfQotCi1JbnNwZWN0b3JU
ZXN0Lm1hcmsgPSBmdW5jdGlvbihtYXJrZXJOYW1lKQotewotICAgIHZhciB0aW1lciA9IEluc3Bl
Y3RvclRlc3QudGltZXI7Ci0gICAgaWYgKCF0aW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUpCi0gICAgICAgIHRpbWVyLmZpbmlzaChJ
bnNwZWN0b3JUZXN0Lmxhc3RNYXJrQ29va2llKTsKLQotICAgIEluc3BlY3RvclRlc3QubGFzdE1h
cmtDb29raWUgPSBtYXJrZXJOYW1lID8gdGltZXIuc3RhcnQobWFya2VyTmFtZSkgOiBudWxsOwot
fQotCi1JbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHMgPSBmdW5jdGlvbih0ZXN0TmFtZSwgc2Ft
cGxlcywgZGl2aWRlcikKLXsKLSAgICBkaXZpZGVyID0gZGl2aWRlciB8fCAxOwotICAgIHZhciBz
dHJpcE5SZXN1bHRzID0gTWF0aC5mbG9vcihzYW1wbGVzLmxlbmd0aCAvIDEwKTsKLSAgICBzYW1w
bGVzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOwotICAgIHZhciBzdW0g
PSAwOwotICAgIGZvciAodmFyIGkgPSBzdHJpcE5SZXN1bHRzOyBpIDwgc2FtcGxlcy5sZW5ndGgg
LSBzdHJpcE5SZXN1bHRzOyArK2kpCi0gICAgICAgIHN1bSArPSBzYW1wbGVzW2ldOwotICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIqICIgKyB0ZXN0TmFtZSArICI6ICIgKyBNYXRoLmZsb29y
KHN1bSAvIChzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHMgKiAyKSAvIGRpdmlkZXIpKTsK
LSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXN0TmFtZSArICIgbWluL21heC9jb3VudDog
IiArIE1hdGguZmxvb3Ioc2FtcGxlc1swXSAvIGRpdmlkZXIpICsgIi8iICsgTWF0aC5mbG9vcihz
YW1wbGVzW3NhbXBsZXMubGVuZ3RoLTFdIC8gZGl2aWRlcikgKyAiLyIgKyBzYW1wbGVzLmxlbmd0
aCk7Ci19Ci0KLUluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0
aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCi17Ci0gICAgdmFy
IG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5h
bWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5KTsKLSAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgp
Ci0gICAgewotICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cyk7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2Yg
YXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOwot
ICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShudWxsLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJn
dW1lbnRzKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVj
dCwgYXJncyk7Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzMDNlNGZmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNjYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5j
dGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCi17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50LlVSTCwgdHJ1ZSk7Ci0gICAgICAgIHhoci5z
ZW5kKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBm
aWxlcy5vcHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tp
XS52YWx1ZS5pbmRleE9mKCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgewotICAgICAgICAg
ICAgIGZpbGVzLnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0cy5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3Vy
Y2VzIik7Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0
ZW0uc2V0KFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJMKTsKLQotICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVzdHMoMjAwKSIsIHJ1blRlc3QpOwotCi0gICAgZnVuY3Rp
b24gcnVuVGVzdCgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNl
VGVzdChwZXJmVGVzdCwgMTAwMDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBlcmZUZXN0KHRp
bWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0g
ICAgICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKSB7Ci0gICAg
ICAgICAgICB2YXIgdGltZXJDb29raWUgPSB0aW1lci5zdGFydCgic2hvdy1wYW5lbC0iICsgcGFu
ZWxOYW1lKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwocGFuZWxOYW1lKTsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgICAg
IHRpbWVyLmZpbmlzaCh0aW1lckNvb2tpZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGltZXIuZG9u
ZSgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgot
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ct
cGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3No
b3ctcGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjhiMTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9y
bWFuY2Uvc2hvdy1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hvdy1wYW5lbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIwOTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwuaHRtbApAQCAtMCwwICsx
LDY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1
ZXN0cyhjb3VudCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3Blbigi
R0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlw
dHMiKTsKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVz
U2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2Yo
Imluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7CisgICAgICAgICAgICAgZmlsZXMuc2VsZWN0
ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9m
aWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAg
ICB9CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFzdFNlbGVjdGVkSXRlbS5zZXQoV2ViSW5zcGVj
dG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkwpOworCisgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgibmV0d29yayIpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VY
SFJSZXF1ZXN0cygyMDApIiwgcnVuVGVzdCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHBlcmZUZXN0LCAx
MDAwMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGVyZlRlc3QodGltZXIpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgZm9yICh2YXIg
cGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5wYW5lbHMpIHsKKyAgICAgICAgICAgIHZhciB0aW1l
ckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93LXBhbmVsLSIgKyBwYW5lbE5hbWUpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChwYW5lbE5hbWUpOworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICAgICAgdGltZXIuZmluaXNoKHRp
bWVyQ29va2llKTsKKyAgICAgICAgfQorICAgICAgICB0aW1lci5kb25lKCJwYW5lbC1zd2l0Y2gi
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgor
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAppbmRleCAyOTY3NTJmLi43MWEyNDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00OTEsNiArNDkxLDEy
IEBAIFdPTlRGSVggV0lOIDogY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLmh0
bWwgPSBQQVNTIEZBSUwKIC8vIE5vIHdlYnAgZW5jb2Rpbmcgc3VwcG9ydCBvbiBNQUMgQ29yZUdy
YXBoaWNzIChDRykKIFdPTlRGSVggTUFDIENQVS1DRyA6IGZhc3QvY2FudmFzL2NhbnZhcy10b0Rh
dGFVUkwtd2VicC5odG1sID0gRkFJTAogCisvLyBTa2lwIFdlYiBJbnNwZWN0b3IncyBwZXJmb3Jt
YW5jZSB0ZXN0cy4gCisvLyBUaGV5IGp1c3Qgc2xvdyBmb3Igc3RhbmRhcmQgdGVzdHMgcnVuLgor
Ly8gV2UgdXNlIGEgc2VwYXJhdGUgYnVpbGQgYm90IGZvciB0aGVzZSB0ZXN0cy4KK1dPTlRGSVgg
U0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9IFBBU1MKKworCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8g
TElHSFRUUEQKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCA1NjQyY2I4Li41NGRjNjQ2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTcsNiArNywxMyBAQCBC
VUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2FmdGVyLXRhYmxlLWRvZXNudC1jcmFzaC5odG1s
ID0gQ1JBU0gKIEJVR1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWFmdGVyLWNv
dW50ZXItZG9lc250LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3Qv
cnVieS9nZW5lcmF0ZWQtYmVmb3JlLWFuZC1hZnRlci1jb3VudGVyLWRvZXNudC1jcmFzaC5odG1s
ID0gQ1JBU0gKIAorLy8gU2tpcCBXZWIgSW5zcGVjdG9yJ3MgcGVyZm9ybWFuY2UgdGVzdHMuIAor
Ly8gVGhleSBqdXN0IHNsb3cgZm9yIHN0YW5kYXJkIHRlc3RzIHJ1bi4KKy8vIFdlIHVzZSBhIHNl
cGFyYXRlIGJ1aWxkIGJvdCBmb3IgdGhlc2UgdGVzdHMuCitXT05URklYIFNLSVAgOiBpbnNwZWN0
b3IvcGVyZm9ybWFuY2UgPSBQQVNTCisKK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9wZXJmb3Jt
YW5jZSA9IFBBU1MKKwogLy8gRmxha3kgdGVzdHMKIAogQlVHV0s2ODUzNiA6IG1lZGlhL21lZGlh
LWJsb2NrZWQtYnktYmVmb3JlbG9hZC5odG1sID0gUEFTUyBURVhUCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA1NjRkYjRhLi5lNjlhMGNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3RhdGlvbnMu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
QEAgLTgsNiArOCwxMSBAQCBCVUdXSzU3NjcyIDogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Nl
bmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sID0gVEVYVCBQQVNTCiBCVUdXSzU3Nzk5IDogc3Rv
cmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNr
ZXItNC1jcmVhdGUuaHRtbCA9IFRFWFQgUEFTUwogQlVHV0s1Nzc5OSA6IHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTUtZGVsZXRl
LW9uZS5odG1sID0gVEVYVCBQQVNTCiAKKy8vIFNraXAgV2ViIEluc3BlY3RvcidzIHBlcmZvcm1h
bmNlIHRlc3RzLiAKKy8vIFRoZXkganVzdCBzbG93IGZvciBzdGFuZGFyZCB0ZXN0cyBydW4uCisv
LyBXZSB1c2UgYSBzZXBhcmF0ZSBidWlsZCBib3QgZm9yIHRoZXNlIHRlc3RzLgorV09OVEZJWCBT
S0lQIDogaW5zcGVjdG9yL3BlcmZvcm1hbmNlID0gUEFTUworCiAvLyBGbGFreSB0ZXN0cyB0aGF0
IGFwcGVhciB0byBiZSBmYWlsIGRlcGVuZGluZyBvbiB3aGljaCBlYXJsaWVyIHRlc3RzCiAvLyBy
dW4gaW4gdGhlIHNhbWUgcHJvY2VzcwogQlVHV0s1NzY4OCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2JpZGktQU4tYWZ0ZXItZW1wdHktcnVuLmh0bWwgPSBQQVNTIFRFWFQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAyNDg4YWFmLi42ZmRi
MDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC00LDYgKzQsMTIgQEAKIAogQlVHV0s2NDUyNiBERUJVRzogc3ZnL2FuaW1hdGlvbnMvc3Zn
dHJhbnNmb3JtLWFuaW1hdGlvbi0xLmh0bWwgPSBDUkFTSCBQQVNTCiAKKy8vIFNraXAgV2ViIElu
c3BlY3RvcidzIHBlcmZvcm1hbmNlIHRlc3RzLiAKKy8vIFRoZXkganVzdCBzbG93IGZvciBzdGFu
ZGFyZCB0ZXN0cyBydW4uCisvLyBXZSB1c2UgYSBzZXBhcmF0ZSBidWlsZCBib3QgZm9yIHRoZXNl
IHRlc3RzLgorV09OVEZJWCBTS0lQIDogaW5zcGVjdG9yL3BlcmZvcm1hbmNlID0gUEFTUworCisK
IC8vIFNsb3cgdGVzdHMKIC8vIEZJWE1FOiBGaWxlIGJ1Z3MuCiBCVUdfUVRfU0xPVyBTTE9XIERF
QlVHOiBlZGl0aW5nL3NlbGVjdGlvbi9lbXB0eS1jZWxsLXJpZ2h0LWNsaWNrLmh0bWwgPSBQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRl
eCBjM2I2YTFkLi43NThlNzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
dGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKQEAgLTcsNiArNywxMSBAQCBCVUdXSzY3MDA3IERFQlVHIDogZmFz
dC9ydWJ5L2FmdGVyLXRhYmxlLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLNjcwMDcg
REVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWFmdGVyLWNvdW50ZXItZG9lc250LWNyYXNoLmh0
bWwgPSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9nZW5lcmF0ZWQtYmVmb3Jl
LWFuZC1hZnRlci1jb3VudGVyLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIAorLy8gU2tpcCBX
ZWIgSW5zcGVjdG9yJ3MgcGVyZm9ybWFuY2UgdGVzdHMuCisvLyBUaGV5IGp1c3Qgc2xvdyBmb3Ig
c3RhbmRhcmQgdGVzdHMgcnVuLgorLy8gV2UgdXNlIGEgc2VwYXJhdGUgYnVpbGQgYm90IGZvciB0
aGVzZSB0ZXN0cy4KK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9IFBBU1MK
KwogLy8gTmVlZCByZWJhc2VsaW5lCiBCVUdXSzcwNzY1IDogZmFzdC9mb3Jtcy9saXN0Ym94LWNs
aXAuaHRtbCA9IFRFWFQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114928</attachid>
            <date>2011-11-14 06:02:28 -0800</date>
            <delta_ts>2011-11-24 07:00:29 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42834</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMzJjMjllLi5iNDU2NWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEt
MTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkYXB0IEluc3BlY3RvcidzIHBlcmZvcm1hbmNlIHRlc3RzIGZvciBydW5u
aW5nIHdpdGggcnVuX3dlYmtpdF90ZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNjAKKworICAgICAgICBTYW1wbGUgY29tbWFuZCBsaW5lOgor
ICAgICAgICAkIC4vd2Via2l0L3Rvb2xzL2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnNo
IC0tcmVsZWFzZSAtLW5vLXJldHJ5LWZhaWx1cmVzIGluc3BlY3Rvci9wZXJmb3JtYW5jZSAtLXRp
bWUtb3V0LW1zPTMwMDAwIC0tbm8tcGl4ZWwtdGVzdHMgLS1wcmludD1wZXJmb3JtYW5jZSAtZiAt
LW5vLXNob3ctcmVzdWx0cyAtLWZvcmNlCisKKyAgICAgICAgU2FtcGxlIG91dHB1dDoKKyAgICAg
ICAgUkVTVUxUIGZpcnN0LW9wZW46IGZpcnN0LW9wZW4tcmVzb3VyY2VzPSAzNCBtcworICAgICAg
ICBSRVNVTFQgZmlyc3Qtb3BlbjogaGVhcC1kZWx0YS1maXJzdC1vcGVuLXJlc291cmNlcz0gNDMg
a0IKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1lbGVtZW50cz0gMjAg
bXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1jb25zb2xlPSAxMCBt
cworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4tZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291
cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0
LW9wZW4tcmVzb3VyY2VzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2Zp
cnN0LW9wZW4tc2NyaXB0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1zY3JpcHRz
Lmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2luc3BlY3Rvci1zdGFydHVw
LXRpbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFu
Y2UvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0
bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNl
LXRlc3QuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
cmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMuCisgICAgICAgIChpbml0aWFsaXplX1RpbWVU
cmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToKKyAgICAgICAg
KGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3Qu
VGltZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIu
SW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmZpbmlzaCk6
CisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9y
bWFuY2VUZXN0LlRpbWVyLnByb3RvdHlwZS5fZ2V0SlNIZWFwU2l6ZSk6CisgICAgICAgIChpbml0
aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVy
LnByb3RvdHlwZS5kb25lKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVj
dG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9ydW5UZXN0KToKKyAg
ICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5j
ZVRlc3QuVGltZXIucHJvdG90eXBlLl9kdW1wKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRy
YWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QpOgorICAgICAgICAoaW5pdGlh
bGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0Lm1hcmspOgorICAgICAgICAqIGluc3BlY3Rv
ci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvY29uc29sZS1hcHBlbmQtMTAwLWxpbmVzLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hvdy1wYW5l
bC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jl
c291cmNlcy9zaG93LXBhbmVsLmh0bWwuCisKIDIwMTEtMTEtMTQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2UtdHJlZS9hcHBjYWNoZS1pZnJhbWUtbWFuaWZlc3RzLmh0bWwgZmFpbGluZyBvbiBzb21l
IGNocm9taXVtIGJvdHMgYWZ0ZXIgcjk5OTg4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVu
LWVsZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzODI5MjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1lbGVt
ZW50cy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7
CisKKworICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9z
ZXREb2N1bWVudChudWxsKTsKKworICAgICAgICB2YXIgc2hvd1BhbmVsVGltZXJDb29raWUgPSB0
aW1lci5zdGFydCgiZmlyc3Qtb3Blbi1lbGVtZW50cyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKHNob3dQYW5lbFRpbWVyQ29v
a2llKTsKKyAgICAgICAgICAgIHRpbWVyLmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICAgICAgfSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwgNTAwMCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisKKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKworPC9ib2R5PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2Zp
cnN0LW9wZW4tcmVzb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXJlc291cmNlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTViYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbApAQCAt
MCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJw
ZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtLnNldChXZWJJbnNwZWN0
b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVy
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisKKyAg
ICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4t
cmVzb3VyY2VzIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25p
ZmZlcihQYWdlQWdlbnQsICJnZXRSZXNvdXJjZUNvbnRlbnQiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgICAgICB0
aW1lci5kb25lKCJmaXJzdC1vcGVuIik7CisgICAgICAgIH0pOworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnJlc291cmNlcy5yZXNldCgpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmVlTW9kZWwuZnJvbnRlbmRSZXVzZWQoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgicmVzb3VyY2VzIik7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3Jt
YW5jZVRlc3QodGVzdCwgNTAwMCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9w
ZW4tc2NyaXB0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOGIxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS9maXJzdC1vcGVuLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9wZW4t
c2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL2ZpcnN0LW9w
ZW4tc2NyaXB0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYjRj
ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
Zmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJzY3JpcHRzIik7CisKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVz
Lm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZh
bHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7CisgICAgICAgICAgICAg
ZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisKKyAgICAgICAgdmFyIHNob3dQ
YW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tc2NyaXB0cyIpOworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7CisgICAgICAgIHZhciBjb3Vu
dCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIu
X21haW5QYW5lbC5fdGV4dENodW5rcy5sZW5ndGg7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fZXhwYW5kQ2h1
bmtzKDAsIGNvdW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl92aXNp
YmxlVmlldy5fdGV4dFZpZXdlci5fbWFpblBhbmVsLl9wYWludFNjaGVkdWxlZExpbmVzKCk7Cisg
ICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgIHRpbWVy
LmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZv
cm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9y
LXN0YXJ0dXAtdGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTFmMmQwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1Rlc3RzIFdlYiBJbnNwZWN0b3Igc3RhcnR1cCB0aW1lLgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9pbnNwZWN0b3Itc3RhcnR1cC10aW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5zcGVjdG9yLXN0YXJ0
dXAtdGltZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiOTA2YzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvaW5z
cGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgdGltZXMgPSBbXTsKKyAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygp
OworICAgIHRlc3RTdGFydFRpbWUgPSBzdGFydFRpbWU7CisgICAgcnVuVGVzdCgpOworfQorCitm
dW5jdGlvbiBpbnNwZWN0b3JJc1JlYWR5KCkKK3sKKyAgICB0aW1lcy5wdXNoKERhdGUubm93KCkg
LSBzdGFydFRpbWUpOworICAgIGlmIChEYXRlLm5vdygpIC0gdGVzdFN0YXJ0VGltZSA+IDIwMDAw
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3Io
MiwgIkluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cygnaW5zcGVjdG9yLXN0YXJ0dXAtdGltZScs
ICd0aW1lJywgIiArIEpTT04uc3RyaW5naWZ5KHRpbWVzKSArICIsICdtcycpIikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcigzLCAiKEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCkpIikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgIHN0YXJ0VGltZSA9IERh
dGUubm93KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwor
ICAgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50Ll9zZXREb2N1bWVudChudWxsKTsKKworICAgIEluc3BlY3RvclRlc3QuYWRkQmFj
a2VuZFJlc3BvbnNlU25pZmZlcihET01BZ2VudCwgInJlcXVlc3RDaGlsZE5vZGVzIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0QWN0aXZlUGFuZWwuc2V0
KCJhdWRpdHMiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiaW5zcGVj
dG9ySXNSZWFkeSgpIik7CisgICAgfSk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxl
bWVudHMiKTsKK30KKworPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2Fk
KCkiPgorPHA+VGVzdHMgV2ViIEluc3BlY3RvciBzdGFydHVwIHRpbWUuPC9wPgorCis8ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvbmV0d29yay1hcHBlbmQtMzAt
cmVxdWVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNl
L25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wZXJmb3JtYW5jZS9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFiODgwMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9uZXR3b3JrLWFwcGVuZC0z
MC1yZXF1ZXN0cy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC5VUkwsIHRydWUpOworICAg
ICAgICB4aHIuc2VuZCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2Vi
SW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworCisgICAgdmFyIG9yaWdpbmFsUmVmcmVz
aCA9IEluc3BlY3RvclRlc3Qub3ZlcnJpZGUoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9u
ZXR3b3JrTG9nVmlldywgInJlZnJlc2giLCB0aW1lVHJhY2tpbmdSZWZyZXNoLCB0cnVlKTsKKyAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9kZWZhdWx0UmVm
cmVzaERlbGF5ID0gMzA7CisgICAgZnVuY3Rpb24gdGltZVRyYWNraW5nUmVmcmVzaCgpCisgICAg
eworICAgICAgICB2YXIgY29va2llID0gSW5zcGVjdG9yVGVzdC50aW1lci5zdGFydCgibmV0d29y
ay1hcHBlbmQtMzAtcmVxdWVzdHMiKTsKKyAgICAgICAgb3JpZ2luYWxSZWZyZXNoLmNhbGwodGhp
cyk7CisgICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZmluaXNoKGNvb2tpZSk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX3Jlc2V0KCk7Cisg
ICAgICAgIC8vIEluIHJlYWwgbGlmZSB0aGlzIGFycmF5IGlzIGNsZWFuaW5nIHVwIGF0IG5hdmln
YXRpb24gZXZlbnQuCisgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLl9yZXNvdXJjZXMg
PSBbXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5kb25lKCJwYW5lbC11cGRhdGUiKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibWFrZVhIUlJlcXVlc3RzKDMwKSIpOworICAgIH0KKwor
ICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDE1MDAwKTsKK30KKwor
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICBtYWtlWEhSUmVxdWVzdHMoMzApOworICAgIH0sIDMwMDApOworfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNl
L3BlcmZvcm1hbmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
cGVyZm9ybWFuY2UtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODhjOGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3BlcmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBpbml0aWFsaXpl
X1RpbWVUcmFja2VyID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3QucnVuUGVyZm9ybWFu
Y2VUZXN0ID0gZnVuY3Rpb24ocGVyZlRlc3QsIGV4ZWN1dGVUaW1lLCBjYWxsYmFjaykKK3sKKyAg
ICB2YXIgVGltZXIgPSBmdW5jdGlvbih0ZXN0LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAg
ICAgICB0aGlzLl90aW1lcyA9IHt9OworICAgICAgICB0aGlzLl90ZXN0U3RhcnRUaW1lID0gbmV3
IERhdGUoKTsKKyAgICAgICAgdGhpcy5faGVhcFNpemVEZWx0YXMgPSBbXTsKKyAgICAgICAgdGhp
cy5fanNIZWFwU2l6ZSA9IHRoaXMuX2dldEpTSGVhcFNpemUoKTsKKyAgICB9CisKKyAgICBUaW1l
ci5wcm90b3R5cGUgPSB7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihuYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4ge25hbWU6IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKX07
CisgICAgICAgIH0sCisKKyAgICAgICAgZmluaXNoOiBmdW5jdGlvbihjb29raWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBlbmRUaW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fdGltZXNbY29va2llLm5hbWVdKQorICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVz
W2Nvb2tpZS5uYW1lXSA9IFtdOworICAgICAgICAgICAgdGhpcy5fdGltZXNbY29va2llLm5hbWVd
LnB1c2goZW5kVGltZSAtIGNvb2tpZS5zdGFydFRpbWUpOworICAgICAgICB9LAorCisgICAgICAg
IF9nZXRKU0hlYXBTaXplOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdpbmRv
dy5nYygpOworICAgICAgICAgICAgd2luZG93LmdjKCk7CisgICAgICAgICAgICByZXR1cm4gY29u
c29sZS5tZW1vcnkudXNlZEpTSGVhcFNpemU7CisgICAgICAgIH0sCisKKyAgICAgICAgZG9uZTog
ZnVuY3Rpb24oZ3JvdXBOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV3SlNIZWFw
U2l6ZSA9IHRoaXMuX2dldEpTSGVhcFNpemUoKTsKKyAgICAgICAgICAgIHRoaXMuX2hlYXBTaXpl
RGVsdGFzLnB1c2gobmV3SlNIZWFwU2l6ZSAtIHRoaXMuX2pzSGVhcFNpemUpOworICAgICAgICAg
ICAgdGhpcy5fanNIZWFwU2l6ZSA9IG5ld0pTSGVhcFNpemU7CisKKyAgICAgICAgICAgIHZhciB0
aW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5fdGVzdFN0YXJ0
VGltZSA8IGV4ZWN1dGVUaW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX3J1blRlc3QoKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRl
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2R1bXAoZ3JvdXBOYW1lKTsKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X2NhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIF9ydW5UZXN0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9ndWFyZCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fcnVuVGVz
dC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciBzYWZl
VGVzdCA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAodGhpcy5fdGVzdCk7CisgICAgICAgICAgICBz
YWZlVGVzdCh0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gZmFsc2U7CisgICAgICAg
IH0sCisKKyAgICAgICAgX2R1bXA6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGltZXMpCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHRoaXMu
X3RpbWVzW3Rlc3ROYW1lXSwgIm1zIik7CisKKyAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNw
ZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTDsKKyAgICAgICAgICAgIHZhciByZWdFeHAg
PSAvKFteXC9dKylcLmh0bWwvOworICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhl
Yyh1cmwpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFt
ZSwgImhlYXAtZGVsdGEtIiArIG1hdGNoZXNbMV0sIHRoaXMuX2hlYXBTaXplRGVsdGFzLCAia0Ii
LCAxMDI0KTsKKyAgICAgICAgfSwKKworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QudGltZXIg
PSBuZXcgVGltZXIocGVyZlRlc3QsIGNhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRpbWVy
Ll9ydW5UZXN0KCk7Cit9CisKK0luc3BlY3RvclRlc3QubWFyayA9IGZ1bmN0aW9uKG1hcmtlck5h
bWUpCit7CisgICAgdmFyIHRpbWVyID0gSW5zcGVjdG9yVGVzdC50aW1lcjsKKyAgICBpZiAoIXRp
bWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nv
b2tpZSkKKyAgICAgICAgdGltZXIuZmluaXNoKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUp
OworCisgICAgSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSA9IG1hcmtlck5hbWUgPyB0aW1l
ci5zdGFydChtYXJrZXJOYW1lKSA6IG51bGw7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFRlc3RT
dGF0cyA9IGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHNhbXBsZXMsIHVuaXRzLCBkaXZp
ZGVyKQoreworICAgIGRpdmlkZXIgPSBkaXZpZGVyIHx8IDE7CisgICAgdmFyIHN0cmlwTlJlc3Vs
dHMgPSBNYXRoLmZsb29yKHNhbXBsZXMubGVuZ3RoIC8gMTApOworICAgIHNhbXBsZXMuc29ydChm
dW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7CisgICAgdmFyIHN1bSA9IDA7CisgICAg
Zm9yICh2YXIgaSA9IHN0cmlwTlJlc3VsdHM7IGkgPCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJl
c3VsdHM7ICsraSkKKyAgICAgICAgc3VtICs9IHNhbXBsZXNbaV07CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiNQRVJGOlJFU1VMVCAiICsgZ3JvdXBOYW1lICsgJzogJyArIHRlc3ROYW1l
ICsgIj0gIiArIE1hdGguZmxvb3Ioc3VtIC8gKHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0
cyAqIDIpIC8gZGl2aWRlcikgKyAiICIgKyB1bml0cyk7Cit9CisKK0luc3BlY3RvclRlc3QuYWRk
QmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3Zl
cnJpZGUsIG9wdF9zdGlja3kpCit7CisgICAgdmFyIG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9y
VGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5hbWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5
KTsKKyAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgpCisgICAgeworICAgICAgICB2YXIgYXJncyA9
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisgICAgICAgIHZhciBjYWxs
YmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAi
ZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOworICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAg
ICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgfQorfQorCit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2Nv
bnNvbGUtYXBwZW5kLTEwMC1saW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL3Jlc291cmNlcy9jb25zb2xlLWFwcGVuZC0xMDAtbGluZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjM2JjYS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2NvbnNvbGUtYXBwZW5kLTEwMC1saW5lcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotCi1mdW5jdGlvbiBtYWtlQ29uc29sZUV2ZW50cyhjb3VudCkKLXsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnNvbGUubG9nKCJDb25zb2xl
IGxvZzogIiArIGkpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJjb25zb2xlIik7Ci0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuY2xlYXJNZXNzYWdlcygpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LnByb21wdEVs
ZW1lbnQsICJzY3JvbGxJbnRvVmlldyIsIGZpbmlzaCk7Ci0gICAgICAgIGNvb2tpZSA9IHRpbWVy
LnN0YXJ0KCJjb25zb2xlLWFwcGVuZC0xMDAtbGluZXMiKTsKLQotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlQ29uc29sZUV2ZW50cygxMDApIik7Ci0KLSAgICAgICAg
ZnVuY3Rpb24gZmluaXNoKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGNv
b2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxMDAwMCk7Ci19Ci0KLWlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgbWFrZUNvbnNvbGVFdmVudHMoMTAwKTsKLSAgICB9LCAzMDAwKTsKLX0K
LQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5j
ZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NDEwODMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
ImF1ZGl0cyIpOwotCi0KLSAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVy
Q29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tZWxlbWVudHMiKTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VTbmlmZmVyKERPTUFnZW50LCAicmVxdWVzdENo
aWxkTm9kZXMiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFu
ZWxUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0pOwot
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgIH0KLQotICAg
IEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDUwMDApOwotfQotCi08L3Nj
cmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotCi08ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci0KLTwvYm9keT4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNv
dXJjZXMvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3Y2YxYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJl
c291cmNlcyIpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0
ZWRJdGVtLnNldChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCk7Ci0KLSAg
ICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgiYXVkaXRzIik7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGlt
ZXIuc3RhcnQoImZpcnN0LW9wZW4tcmVzb3VyY2VzIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkQmFja2VuZFJlc3BvbnNlU25pZmZlcihQYWdlQWdlbnQsICJnZXRSZXNvdXJjZUNvbnRlbnQi
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNv
b2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5fcmVzZXRSZXNvdXJjZXNUcmVlKCk7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mcm9udGVuZFJldXNlZCgpOwotICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKLX0KLQotPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwvYm9k
eT4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvZmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNTVkZjkuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXNjcmlwdHMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
c2NyaXB0cyIpOwotCi0gICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
Ll9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5vcHRp
b25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tpXS52YWx1ZS5p
bmRleE9mKCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgewotICAgICAgICAgICAgIGZpbGVz
LnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoImF1ZGl0cyIpOwotCi0gICAgICAgIHZhciBzaG93UGFuZWxU
aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmaXJzdC1vcGVuLXNjcmlwdHMiKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgICAgICB2YXIgY291bnQgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9tYWlu
UGFuZWwuX3RleHRDaHVua3MubGVuZ3RoOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9tYWluUGFuZWwuX2V4cGFuZENodW5rcygw
LCBjb3VudCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZp
ZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fcGFpbnRTY2hlZHVsZWRMaW5lcygpOwotICAgICAg
ICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOwotICAgICAgICB0aW1lci5kb25l
KCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwg
NTAwMCk7Ci19Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KLTwvYm9keT4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2luc3BlY3Rvci1zdGFy
dHVwLXRpbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjODFjMS4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2lu
c3BlY3Rvci1zdGFydHVwLXRpbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gb25sb2FkKCkKLXsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGltZXMgPSBbXTsKLSAgICBzdGFy
dFRpbWUgPSBEYXRlLm5vdygpOwotICAgIHRlc3RTdGFydFRpbWUgPSBzdGFydFRpbWU7Ci0gICAg
cnVuVGVzdCgpOwotfQotCi1mdW5jdGlvbiBpbnNwZWN0b3JJc1JlYWR5KCkKLXsKLSAgICB0aW1l
cy5wdXNoKERhdGUubm93KCkgLSBzdGFydFRpbWUpOwotICAgIGlmIChEYXRlLm5vdygpIC0gdGVz
dFN0YXJ0VGltZSA+IDIwMDAwKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoMiwgIkluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cygnaW5zcGVj
dG9yLXN0YXJ0dXAtdGltZScsICIgKyBKU09OLnN0cmluZ2lmeSh0aW1lcykgKyAiKSIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoMywgIihJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpKSIpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICBzdGFydFRpbWUg
PSBEYXRlLm5vdygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3Io
KTsKLSAgICBydW5UZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmFk
ZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIsIGZ1
bmN0aW9uKCkgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVs
LnNldCgiYXVkaXRzIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImlu
c3BlY3RvcklzUmVhZHkoKSIpOwotICAgIH0pOwotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
ImVsZW1lbnRzIik7Ci19Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KLTxwPlRlc3RzIFdlYiBJbnNwZWN0b3Igc3RhcnR1cCB0aW1lLjwvcD4KLQotPGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3
b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZv
cm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGMzN2EwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVz
dHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gbWFrZVhIUlJlcXVlc3RzKGNvdW50KQotewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCBkb2N1bWVudC5VUkwsIHRy
dWUpOwotICAgICAgICB4aHIuc2VuZCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOwotCi0gICAgdmFyIG9yaWdp
bmFsUmVmcmVzaCA9IEluc3BlY3RvclRlc3Qub3ZlcnJpZGUoV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLl9uZXR3b3JrTG9nVmlldywgInJlZnJlc2giLCB0aW1lVHJhY2tpbmdSZWZyZXNoLCB0
cnVlKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9k
ZWZhdWx0UmVmcmVzaERlbGF5ID0gMzA7Ci0gICAgZnVuY3Rpb24gdGltZVRyYWNraW5nUmVmcmVz
aCgpCi0gICAgewotICAgICAgICB2YXIgY29va2llID0gSW5zcGVjdG9yVGVzdC50aW1lci5zdGFy
dCgibmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMiKTsKLSAgICAgICAgb3JpZ2luYWxSZWZyZXNo
LmNhbGwodGhpcyk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZmluaXNoKGNvb2tpZSk7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX3Jl
c2V0KCk7Ci0gICAgICAgIC8vIEluIHJlYWwgbGlmZSB0aGlzIGFycmF5IGlzIGNsZWFuaW5nIHVw
IGF0IG5hdmlnYXRpb24gZXZlbnQuCi0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTG9nLl9y
ZXNvdXJjZXMgPSBbXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5kb25lKCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygzMCkiKTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxNTAwMCk7Ci19Ci0KLWlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKLSAgICAgICAgbWFrZVhIUlJlcXVlc3RzKDMwKTsKLSAgICB9LCAzMDAwKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNv
dXJjZXMvcGVyZm9ybWFuY2UtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3Jt
YW5jZS9yZXNvdXJjZXMvcGVyZm9ybWFuY2UtdGVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2YwMTQ2NC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVy
Zm9ybWFuY2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjcgKzAsMCBAQAotdmFyIGluaXRpYWxpemVfVGltZVRyYWNrZXIgPSBmdW5jdGlvbigpIHsK
LQotSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QgPSBmdW5jdGlvbihwZXJmVGVzdCwg
ZXhlY3V0ZVRpbWUsIGNhbGxiYWNrKQotewotICAgIHZhciBUaW1lciA9IGZ1bmN0aW9uKHRlc3Qs
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAg
ICAgICAgdGhpcy5fdGVzdCA9IHRlc3Q7Ci0gICAgICAgIHRoaXMuX3RpbWVzID0ge307Ci0gICAg
ICAgIHRoaXMuX3Rlc3RTdGFydFRpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICB0aGlzLl9oZWFw
U2l6ZURlbHRhcyA9IFtdOwotICAgICAgICB0aGlzLl9qc0hlYXBTaXplID0gdGhpcy5fZ2V0SlNI
ZWFwU2l6ZSgpOwotICAgIH0KLQotICAgIFRpbWVyLnByb3RvdHlwZSA9IHsKLSAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7bmFtZTog
bmFtZSwgc3RhcnRUaW1lOiBuZXcgRGF0ZSgpfTsKLSAgICAgICAgfSwKLQotICAgICAgICBmaW5p
c2g6IGZ1bmN0aW9uKGNvb2tpZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGVuZFRpbWUg
PSBuZXcgRGF0ZSgpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl90aW1lc1tjb29raWUubmFtZV0p
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGltZXNbY29va2llLm5hbWVdID0gW107Ci0gICAgICAg
ICAgICB0aGlzLl90aW1lc1tjb29raWUubmFtZV0ucHVzaChlbmRUaW1lIC0gY29va2llLnN0YXJ0
VGltZSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgX2dldEpTSGVhcFNpemU6IGZ1bmN0aW9uKCkK
LSAgICAgICAgewotICAgICAgICAgICAgd2luZG93LmdjKCk7Ci0gICAgICAgICAgICB3aW5kb3cu
Z2MoKTsKLSAgICAgICAgICAgIHJldHVybiBjb25zb2xlLm1lbW9yeS51c2VkSlNIZWFwU2l6ZTsK
LSAgICAgICAgfSwKLQotICAgICAgICBkb25lOiBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZhciBuZXdKU0hlYXBTaXplID0gdGhpcy5fZ2V0SlNIZWFwU2l6ZSgpOwotICAgICAg
ICAgICAgdGhpcy5faGVhcFNpemVEZWx0YXMucHVzaChuZXdKU0hlYXBTaXplIC0gdGhpcy5fanNI
ZWFwU2l6ZSk7Ci0gICAgICAgICAgICB0aGlzLl9qc0hlYXBTaXplID0gbmV3SlNIZWFwU2l6ZTsK
LQotICAgICAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICAgICAgaWYgKHRp
bWUgLSB0aGlzLl90ZXN0U3RhcnRUaW1lIDwgZXhlY3V0ZVRpbWUpCi0gICAgICAgICAgICAgICAg
dGhpcy5fcnVuVGVzdCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fY29tcGxldGUgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fZHVt
cCgpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgX3J1blRlc3Q6IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHRoaXMuX2d1YXJkKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0
aGlzLl9ydW5UZXN0LmJpbmQodGhpcyksIDApOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSB0cnVlOwotICAgICAgICAg
ICAgdmFyIHNhZmVUZXN0ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCh0aGlzLl90ZXN0KTsKLSAg
ICAgICAgICAgIHNhZmVUZXN0KHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZ3VhcmQgPSBmYWxz
ZTsKLSAgICAgICAgfSwKLQotICAgICAgICBfZHVtcDogZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0aGlzLl90aW1lcykKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHModGVzdE5hbWUsIHRoaXMuX3RpbWVzW3Rl
c3ROYW1lXSk7Ci0KLSAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlLl9kb2N1bWVudFVSTDsKLSAgICAgICAgICAgIHZhciByZWdFeHAgPSAvKFteXC9dKylcLmh0
bWwvOwotICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyh1cmwpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKCJoZWFwLWRlbHRhLWtiLSIgKyBtYXRj
aGVzWzFdLCB0aGlzLl9oZWFwU2l6ZURlbHRhcywgMTAyNCk7Ci0gICAgICAgIH0sCi0KLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnRpbWVyID0gbmV3IFRpbWVyKHBlcmZUZXN0LCBjYWxsYmFj
ayk7Ci0gICAgSW5zcGVjdG9yVGVzdC50aW1lci5fcnVuVGVzdCgpOwotfQotCi1JbnNwZWN0b3JU
ZXN0Lm1hcmsgPSBmdW5jdGlvbihtYXJrZXJOYW1lKQotewotICAgIHZhciB0aW1lciA9IEluc3Bl
Y3RvclRlc3QudGltZXI7Ci0gICAgaWYgKCF0aW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUpCi0gICAgICAgIHRpbWVyLmZpbmlzaChJ
bnNwZWN0b3JUZXN0Lmxhc3RNYXJrQ29va2llKTsKLQotICAgIEluc3BlY3RvclRlc3QubGFzdE1h
cmtDb29raWUgPSBtYXJrZXJOYW1lID8gdGltZXIuc3RhcnQobWFya2VyTmFtZSkgOiBudWxsOwot
fQotCi1JbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHMgPSBmdW5jdGlvbih0ZXN0TmFtZSwgc2Ft
cGxlcywgZGl2aWRlcikKLXsKLSAgICBkaXZpZGVyID0gZGl2aWRlciB8fCAxOwotICAgIHZhciBz
dHJpcE5SZXN1bHRzID0gTWF0aC5mbG9vcihzYW1wbGVzLmxlbmd0aCAvIDEwKTsKLSAgICBzYW1w
bGVzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOwotICAgIHZhciBzdW0g
PSAwOwotICAgIGZvciAodmFyIGkgPSBzdHJpcE5SZXN1bHRzOyBpIDwgc2FtcGxlcy5sZW5ndGgg
LSBzdHJpcE5SZXN1bHRzOyArK2kpCi0gICAgICAgIHN1bSArPSBzYW1wbGVzW2ldOwotICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIqICIgKyB0ZXN0TmFtZSArICI6ICIgKyBNYXRoLmZsb29y
KHN1bSAvIChzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHMgKiAyKSAvIGRpdmlkZXIpKTsK
LSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXN0TmFtZSArICIgbWluL21heC9jb3VudDog
IiArIE1hdGguZmxvb3Ioc2FtcGxlc1swXSAvIGRpdmlkZXIpICsgIi8iICsgTWF0aC5mbG9vcihz
YW1wbGVzW3NhbXBsZXMubGVuZ3RoLTFdIC8gZGl2aWRlcikgKyAiLyIgKyBzYW1wbGVzLmxlbmd0
aCk7Ci19Ci0KLUluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0
aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCi17Ci0gICAgdmFy
IG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5h
bWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5KTsKLSAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgp
Ci0gICAgewotICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cyk7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2Yg
YXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOwot
ICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShudWxsLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJn
dW1lbnRzKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVj
dCwgYXJncyk7Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzMDNlNGZmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNjYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5j
dGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCi17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50LlVSTCwgdHJ1ZSk7Ci0gICAgICAgIHhoci5z
ZW5kKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBm
aWxlcy5vcHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tp
XS52YWx1ZS5pbmRleE9mKCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgewotICAgICAgICAg
ICAgIGZpbGVzLnNlbGVjdGVkSW5kZXggPSBpOwotICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0cy5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3Vy
Y2VzIik7Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0
ZW0uc2V0KFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJMKTsKLQotICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVzdHMoMjAwKSIsIHJ1blRlc3QpOwotCi0gICAgZnVuY3Rp
b24gcnVuVGVzdCgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNl
VGVzdChwZXJmVGVzdCwgMTAwMDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBlcmZUZXN0KHRp
bWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0g
ICAgICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKSB7Ci0gICAg
ICAgICAgICB2YXIgdGltZXJDb29raWUgPSB0aW1lci5zdGFydCgic2hvdy1wYW5lbC0iICsgcGFu
ZWxOYW1lKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwocGFuZWxOYW1lKTsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKLSAgICAgICAgICAg
IHRpbWVyLmZpbmlzaCh0aW1lckNvb2tpZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGltZXIuZG9u
ZSgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgot
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ct
cGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3No
b3ctcGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjhiMTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9y
bWFuY2Uvc2hvdy1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uvc2hvdy1wYW5lbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIwOTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Nob3ctcGFuZWwuaHRtbApAQCAtMCwwICsx
LDY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1
ZXN0cyhjb3VudCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3Blbigi
R0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlw
dHMiKTsKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVz
U2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2Yo
Imluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7CisgICAgICAgICAgICAgZmlsZXMuc2VsZWN0
ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9m
aWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAg
ICB9CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFzdFNlbGVjdGVkSXRlbS5zZXQoV2ViSW5zcGVj
dG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkwpOworCisgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgibmV0d29yayIpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VY
SFJSZXF1ZXN0cygyMDApIiwgcnVuVGVzdCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHBlcmZUZXN0LCAx
MDAwMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGVyZlRlc3QodGltZXIpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgZm9yICh2YXIg
cGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5wYW5lbHMpIHsKKyAgICAgICAgICAgIHZhciB0aW1l
ckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93LXBhbmVsLSIgKyBwYW5lbE5hbWUpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChwYW5lbE5hbWUpOworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgICAgICAgICAgdGltZXIuZmluaXNoKHRp
bWVyQ29va2llKTsKKyAgICAgICAgfQorICAgICAgICB0aW1lci5kb25lKCJwYW5lbC1zd2l0Y2gi
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgor
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAppbmRleCAyOTY3NTJmLi43MWEyNDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00OTEsNiArNDkxLDEy
IEBAIFdPTlRGSVggV0lOIDogY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLmh0
bWwgPSBQQVNTIEZBSUwKIC8vIE5vIHdlYnAgZW5jb2Rpbmcgc3VwcG9ydCBvbiBNQUMgQ29yZUdy
YXBoaWNzIChDRykKIFdPTlRGSVggTUFDIENQVS1DRyA6IGZhc3QvY2FudmFzL2NhbnZhcy10b0Rh
dGFVUkwtd2VicC5odG1sID0gRkFJTAogCisvLyBTa2lwIFdlYiBJbnNwZWN0b3IncyBwZXJmb3Jt
YW5jZSB0ZXN0cy4gCisvLyBUaGV5IGp1c3Qgc2xvdyBmb3Igc3RhbmRhcmQgdGVzdHMgcnVuLgor
Ly8gV2UgdXNlIGEgc2VwYXJhdGUgYnVpbGQgYm90IGZvciB0aGVzZSB0ZXN0cy4KK1dPTlRGSVgg
U0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9IFBBU1MKKworCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8g
TElHSFRUUEQKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCA1NjQyY2I4Li4xOGMyNDkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTcsNiArNywxMSBAQCBC
VUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2FmdGVyLXRhYmxlLWRvZXNudC1jcmFzaC5odG1s
ID0gQ1JBU0gKIEJVR1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJhdGVkLWFmdGVyLWNv
dW50ZXItZG9lc250LWNyYXNoLmh0bWwgPSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3Qv
cnVieS9nZW5lcmF0ZWQtYmVmb3JlLWFuZC1hZnRlci1jb3VudGVyLWRvZXNudC1jcmFzaC5odG1s
ID0gQ1JBU0gKIAorLy8gU2tpcCBXZWIgSW5zcGVjdG9yJ3MgcGVyZm9ybWFuY2UgdGVzdHMuIAor
Ly8gVGhleSBqdXN0IHNsb3cgZm9yIHN0YW5kYXJkIHRlc3RzIHJ1bi4KKy8vIFdlIHVzZSBhIHNl
cGFyYXRlIGJ1aWxkIGJvdCBmb3IgdGhlc2UgdGVzdHMuCitXT05URklYIFNLSVAgOiBpbnNwZWN0
b3IvcGVyZm9ybWFuY2UgPSBQQVNTCisKIC8vIEZsYWt5IHRlc3RzCiAKIEJVR1dLNjg1MzYgOiBt
ZWRpYS9tZWRpYS1ibG9ja2VkLWJ5LWJlZm9yZWxvYWQuaHRtbCA9IFBBU1MgVEVYVApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNTY0ZGI0
YS4uZTY5YTBjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3Rh
dGlvbnMudHh0CkBAIC04LDYgKzgsMTEgQEAgQlVHV0s1NzY3MiA6IGh0dHAvdGVzdHMvbG9jYWwv
ZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbCA9IFRFWFQgUEFTUwogQlVHV0s1
Nzc5OSA6IHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3Rv
cmFnZS10cmFja2VyLTQtY3JlYXRlLmh0bWwgPSBURVhUIFBBU1MKIEJVR1dLNTc3OTkgOiBzdG9y
YWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tl
ci01LWRlbGV0ZS1vbmUuaHRtbCA9IFRFWFQgUEFTUwogCisvLyBTa2lwIFdlYiBJbnNwZWN0b3In
cyBwZXJmb3JtYW5jZSB0ZXN0cy4gCisvLyBUaGV5IGp1c3Qgc2xvdyBmb3Igc3RhbmRhcmQgdGVz
dHMgcnVuLgorLy8gV2UgdXNlIGEgc2VwYXJhdGUgYnVpbGQgYm90IGZvciB0aGVzZSB0ZXN0cy4K
K1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9IFBBU1MKKwogLy8gRmxha3kg
dGVzdHMgdGhhdCBhcHBlYXIgdG8gYmUgZmFpbCBkZXBlbmRpbmcgb24gd2hpY2ggZWFybGllciB0
ZXN0cwogLy8gcnVuIGluIHRoZSBzYW1lIHByb2Nlc3MKIEJVR1dLNTc2ODggOiBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9iaWRpLUFOLWFmdGVyLWVtcHR5LXJ1bi5odG1sID0gUEFTUyBURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMjQ4
OGFhZi4uNmZkYjAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvdGVzdF9l
eHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0
YXRpb25zLnR4dApAQCAtNCw2ICs0LDEyIEBACiAKIEJVR1dLNjQ1MjYgREVCVUc6IHN2Zy9hbmlt
YXRpb25zL3N2Z3RyYW5zZm9ybS1hbmltYXRpb24tMS5odG1sID0gQ1JBU0ggUEFTUwogCisvLyBT
a2lwIFdlYiBJbnNwZWN0b3IncyBwZXJmb3JtYW5jZSB0ZXN0cy4gCisvLyBUaGV5IGp1c3Qgc2xv
dyBmb3Igc3RhbmRhcmQgdGVzdHMgcnVuLgorLy8gV2UgdXNlIGEgc2VwYXJhdGUgYnVpbGQgYm90
IGZvciB0aGVzZSB0ZXN0cy4KK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9wZXJmb3JtYW5jZSA9
IFBBU1MKKworCiAvLyBTbG93IHRlc3RzCiAvLyBGSVhNRTogRmlsZSBidWdzLgogQlVHX1FUX1NM
T1cgU0xPVyBERUJVRzogZWRpdGluZy9zZWxlY3Rpb24vZW1wdHktY2VsbC1yaWdodC1jbGljay5o
dG1sID0gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKaW5kZXggYzNiNmExZC4uNzU4ZTcxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC03LDYgKzcsMTEgQEAgQlVHV0s2NzAwNyBE
RUJVRyA6IGZhc3QvcnVieS9hZnRlci10YWJsZS1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiBC
VUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2dlbmVyYXRlZC1hZnRlci1jb3VudGVyLWRvZXNu
dC1jcmFzaC5odG1sID0gQ1JBU0gKIEJVR1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvZ2VuZXJh
dGVkLWJlZm9yZS1hbmQtYWZ0ZXItY291bnRlci1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiAK
Ky8vIFNraXAgV2ViIEluc3BlY3RvcidzIHBlcmZvcm1hbmNlIHRlc3RzLgorLy8gVGhleSBqdXN0
IHNsb3cgZm9yIHN0YW5kYXJkIHRlc3RzIHJ1bi4KKy8vIFdlIHVzZSBhIHNlcGFyYXRlIGJ1aWxk
IGJvdCBmb3IgdGhlc2UgdGVzdHMuCitXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvcGVyZm9ybWFu
Y2UgPSBQQVNTCisKIC8vIE5lZWQgcmViYXNlbGluZQogQlVHV0s3MDc2NSA6IGZhc3QvZm9ybXMv
bGlzdGJveC1jbGlwLmh0bWwgPSBURVhUCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116507</attachid>
            <date>2011-11-24 07:00:29 -0800</date>
            <delta_ts>2011-12-01 06:40:46 -0800</delta_ts>
            <desc>[patch] third version with the tests in PerformanceTests/inspector</desc>
            <filename>patch.tests</filename>
            <type>text/plain</type>
            <size>18579</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjFjMDFiOC4uNjZiMzU3YyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxMS0xMS0yNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY2hyb21pdW06IG1vdmUgYW5kIGFkYXB0
IEluc3BlY3RvcidzIHBlcmZvcm1hbmNlIHRlc3RzIGZvciBydW5uaW5nIHdpdGggcnVuLWRldnRv
b2xzLXBlcmYtdGVzdHMucHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjI2MAorCisgICAgICAgIFNhbXBsZSBjb21tYW5kIGxpbmU6CisgICAgICAg
ICQgcnVuLWRldnRvb2xzLXBlcmYtdGVzdC5weSAtLXJlbGVhc2UKKworICAgICAgICAwIHRlc3Rz
IHJhbiBhcyBleHBlY3RlZCAoMiBkaWRuJ3QgcnVuKS4KKworICAgICAgICBSRVNVTFQgaW5zcGVj
dG9yLXN0YXJ0dXAtdGltZTogdGltZT0gNjQwIG1zCisKKyAgICAgICAgMSB0ZXN0cyByYW4gYXMg
ZXhwZWN0ZWQgKDEgZGlkbid0IHJ1bikuCisKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDog
c2hvdy1wYW5lbC1lbGVtZW50cz0gNiBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBz
aG93LXBhbmVsLXJlc291cmNlcz0gNyBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBz
aG93LXBhbmVsLW5ldHdvcms9IDUyIG1zCisgICAgICAgIFJFU1VMVCBwYW5lbC1zd2l0Y2g6IHNo
b3ctcGFuZWwtc2NyaXB0cz0gMjggbXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hv
dy1wYW5lbC10aW1lbGluZT0gMTcgbXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hv
dy1wYW5lbC1wcm9maWxlcz0gOCBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93
LXBhbmVsLWF1ZGl0cz0gNyBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93LXBh
bmVsLWNvbnNvbGU9IDggbXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogaGVhcC1kZWx0
YS1zaG93LXBhbmVsPSA2IGtCCisgICAgICAgIEFsbCAyIHRlc3RzIHJhbiBhcyBleHBlY3RlZC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9maXJzdC1vcGVuLXJlc291cmNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Zmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9pbnNw
ZWN0b3Itc3RhcnR1cC10aW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3
b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cGVyZm9ybWFuY2UtdGVzdC5qczogQWRkZWQuCisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFj
a2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToKKyAgICAgICAgKGlu
aXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGlt
ZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5z
cGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmZpbmlzaCk6Cisg
ICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFu
Y2VUZXN0LlRpbWVyLnByb3RvdHlwZS5fZ2V0SlNIZWFwU2l6ZSk6CisgICAgICAgIChpbml0aWFs
aXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyLnBy
b3RvdHlwZS5kb25lKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9y
VGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9ydW5UZXN0KToKKyAgICAg
ICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRl
c3QuVGltZXIucHJvdG90eXBlLl9kdW1wKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNr
ZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0Lm1hcmspOgorICAgICAgICAqIGluc3BlY3Rvci9z
aG93LXBhbmVsLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA5ICBBZGFtIEtsZWluICA8YWRhbWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtNdXRhdGlvbk9ic2VydmVyc10gTWljcm9iZW5jaG1h
cmtzIGZvciBhcHBlbmRDaGlsZCwgcmVtb3ZlQ2hpbGQsIGFuZCBpbm5lckhUTUwKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRtbCBi
L1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTI0ZThkCi0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sCkBA
IC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7
CisKKworICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9z
ZXREb2N1bWVudChudWxsKTsKKworICAgICAgICB2YXIgc2hvd1BhbmVsVGltZXJDb29raWUgPSB0
aW1lci5zdGFydCgiZmlyc3Qtb3Blbi1lbGVtZW50cyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKHNob3dQYW5lbFRpbWVyQ29v
a2llKTsKKyAgICAgICAgICAgIHRpbWVyLmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICAgICAgfSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QodGVzdCwgNTAwMCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisKKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKworPC9ib2R5PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Bl
bi1yZXNvdXJjZXMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4t
cmVzb3VyY2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg2ZDE4
NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9w
ZW4tcmVzb3VyY2VzLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3Vy
Y2VzTGFzdFNlbGVjdGVkSXRlbS5zZXQoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwpOwor
CisgICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoImF1ZGl0cyIpOworCisgICAgICAgIHZhciBzaG93UGFuZWxUaW1lckNvb2tpZSA9
IHRpbWVyLnN0YXJ0KCJmaXJzdC1vcGVuLXJlc291cmNlcyIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoUGFnZUFnZW50LCAiZ2V0UmVzb3VyY2VDb250
ZW50IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGlt
ZXJDb29raWUpOworICAgICAgICAgICAgdGltZXIuZG9uZSgiZmlyc3Qtb3BlbiIpOworICAgICAg
ICB9KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVzZXQoKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZyb250ZW5kUmV1c2VkKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworICAgIH0KKworICAg
IEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDUwMDApOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZmly
c3Qtb3Blbi1zY3JpcHRzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1v
cGVuLXNjcmlwdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2Ni
YWE0NQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0
LW9wZW4tc2NyaXB0cy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgic2NyaXB0cyIpOworICAgIHZhciBmaWxlcyA9IFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5fZmlsZXNTZWxlY3RFbGVtZW50OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZmlsZXMub3B0aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgaWYgKGZpbGVzLm9wdGlvbnNb
aV0udmFsdWUuaW5kZXhPZigiaW5zcGVjdG9yLXRlc3QuanMiKSAhPT0gLTEpIHsKKyAgICAgICAg
ICAgICBmaWxlcy5zZWxlY3RlZEluZGV4ID0gaTsKKyAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0Q2hhbmdlZCgpOworICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCisgICAgewor
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgdmFyIHNo
b3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tc2NyaXB0cyIpOwor
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7CisgICAgICAgIHZhciBj
b3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3
ZXIuX21haW5QYW5lbC5fdGV4dENodW5rcy5sZW5ndGg7CisgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fZXhwYW5k
Q2h1bmtzKDAsIGNvdW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl92
aXNpYmxlVmlldy5fdGV4dFZpZXdlci5fbWFpblBhbmVsLl9wYWludFNjaGVkdWxlZExpbmVzKCk7
CisgICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgIHRp
bWVyLmRvbmUoImZpcnN0LW9wZW4iKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuYmlu
ZChudWxsLCB0ZXN0LCA1MDAwKSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBmYTFiZgotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci1zdGFydHVwLXRpbWUuaHRtbApAQCAt
MCwwICsxLDU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG9u
bG9hZCgpCit7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRpbWVzID0gW107CisgICAgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICB0ZXN0U3RhcnRU
aW1lID0gc3RhcnRUaW1lOworICAgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gaW5zcGVjdG9y
SXNSZWFkeSgpCit7CisgICAgdGltZXMucHVzaChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKTsKKyAg
ICBpZiAoRGF0ZS5ub3coKSAtIHRlc3RTdGFydFRpbWUgPiAyMDAwMCkgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDIsICJJbnNwZWN0b3JUZXN0
LmR1bXBUZXN0U3RhdHMoJ2luc3BlY3Rvci1zdGFydHVwLXRpbWUnLCAndGltZScsICIgKyBKU09O
LnN0cmluZ2lmeSh0aW1lcykgKyAiLCAnbXMnKSIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoMywgIihJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpKSIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICBydW5UZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5fc2V0RG9j
dW1lbnQobnVsbCk7CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZm
ZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIsIGZ1bmN0aW9uKCkgeworICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsLnNldCgiYXVkaXRzIik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImluc3BlY3RvcklzUmVhZHkoKSIpOwor
ICAgIH0pOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7Cit9CisKKzwv
c2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzYyNmJkCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmV0d29yay1hcHBlbmQtMzAt
cmVxdWVzdHMuaHRtbApAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHhociA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLCB0
cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKKworICAgIHZhciBvcmln
aW5hbFJlZnJlc2ggPSBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5fbmV0d29ya0xvZ1ZpZXcsICJyZWZyZXNoIiwgdGltZVRyYWNraW5nUmVmcmVzaCwg
dHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5f
ZGVmYXVsdFJlZnJlc2hEZWxheSA9IDMwOworICAgIGZ1bmN0aW9uIHRpbWVUcmFja2luZ1JlZnJl
c2goKQorICAgIHsKKyAgICAgICAgdmFyIGNvb2tpZSA9IEluc3BlY3RvclRlc3QudGltZXIuc3Rh
cnQoIm5ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzIik7CisgICAgICAgIG9yaWdpbmFsUmVmcmVz
aC5jYWxsKHRoaXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLmZpbmlzaChjb29raWUp
OworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9y
ZXNldCgpOworICAgICAgICAvLyBJbiByZWFsIGxpZmUgdGhpcyBhcnJheSBpcyBjbGVhbmluZyB1
cCBhdCBuYXZpZ2F0aW9uIGV2ZW50LgorICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5f
cmVzb3VyY2VzID0gW107CisgICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZG9uZSgicGFuZWwt
dXBkYXRlIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygzMCkiKTsK
KyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxNTAw
MCk7Cit9CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgbWFrZVhIUlJlcXVlc3RzKDMwKTsKKyAgICB9LCAz
MDAwKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZGU5
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJmb3Jt
YW5jZS10ZXN0LmpzCkBAIC0wLDAgKzEsMTI4IEBACit2YXIgaW5pdGlhbGl6ZV9UaW1lVHJhY2tl
ciA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCA9IGZ1
bmN0aW9uKHBlcmZUZXN0LCBleGVjdXRlVGltZSwgY2FsbGJhY2spCit7CisgICAgdmFyIFRpbWVy
ID0gZnVuY3Rpb24odGVzdCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9jYWxsYmFj
ayA9IGNhbGxiYWNrOworICAgICAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICAgICAgdGhpcy5f
dGltZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fdGVzdFN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7Cisg
ICAgICAgIHRoaXMuX2hlYXBTaXplRGVsdGFzID0gW107CisgICAgICAgIHRoaXMuX2pzSGVhcFNp
emUgPSB0aGlzLl9nZXRKU0hlYXBTaXplKCk7CisgICAgfQorCisgICAgVGltZXIucHJvdG90eXBl
ID0geworICAgICAgICBzdGFydDogZnVuY3Rpb24obmFtZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHtuYW1lOiBuYW1lLCBzdGFydFRpbWU6IG5ldyBEYXRlKCl9OworICAgICAgICB9
LAorCisgICAgICAgIGZpbmlzaDogZnVuY3Rpb24oY29va2llKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgZW5kVGltZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3Rp
bWVzW2Nvb2tpZS5uYW1lXSkKKyAgICAgICAgICAgICAgICB0aGlzLl90aW1lc1tjb29raWUubmFt
ZV0gPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1lXS5wdXNoKGVuZFRp
bWUgLSBjb29raWUuc3RhcnRUaW1lKTsKKyAgICAgICAgfSwKKworICAgICAgICBfZ2V0SlNIZWFw
U2l6ZTogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmdjKSB7
CisgICAgICAgICAgICAgICAgd2luZG93LmdjKCk7CisgICAgICAgICAgICAgICAgd2luZG93Lmdj
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY29uc29sZS5tZW1vcnkudXNl
ZEpTSGVhcFNpemU7CisgICAgICAgIH0sCisKKyAgICAgICAgZG9uZTogZnVuY3Rpb24oZ3JvdXBO
YW1lKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV3SlNIZWFwU2l6ZSA9IHRoaXMuX2dl
dEpTSGVhcFNpemUoKTsKKyAgICAgICAgICAgIHRoaXMuX2hlYXBTaXplRGVsdGFzLnB1c2gobmV3
SlNIZWFwU2l6ZSAtIHRoaXMuX2pzSGVhcFNpemUpOworICAgICAgICAgICAgdGhpcy5fanNIZWFw
U2l6ZSA9IG5ld0pTSGVhcFNpemU7CisKKyAgICAgICAgICAgIHZhciB0aW1lID0gbmV3IERhdGUo
KTsKKyAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5fdGVzdFN0YXJ0VGltZSA8IGV4ZWN1dGVU
aW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX3J1blRlc3QoKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlID0gdHJ1ZTsKKworICAg
ICAgICAgICAgICAgIHRoaXMuX2R1bXAoZ3JvdXBOYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAo
dGhpcy5fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIF9ydW5U
ZXN0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9ndWFyZCkg
eworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fcnVuVGVzdC5iaW5kKHRoaXMpLCAw
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRoaXMuX2d1YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciBzYWZlVGVzdCA9IEluc3BlY3Rv
clRlc3Quc2FmZVdyYXAodGhpcy5fdGVzdCk7CisgICAgICAgICAgICBzYWZlVGVzdCh0aGlzKTsK
KyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gZmFsc2U7CisgICAgICAgIH0sCisKKyAgICAgICAg
X2R1bXA6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2
YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGltZXMpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHRoaXMuX3RpbWVzW3Rlc3ROYW1l
XSwgIm1zIik7CisKKyAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVk
UGFnZVVSTDsKKyAgICAgICAgICAgIHZhciByZWdFeHAgPSAvKFteXC9dKylcLmh0bWwvOworICAg
ICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyh1cmwpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgImhlYXAtZGVsdGEtIiArIG1hdGNo
ZXNbMV0sIHRoaXMuX2hlYXBTaXplRGVsdGFzLCAia0IiLCAxMDI0KTsKKyAgICAgICAgfSwKKwor
ICAgIH0KKworICAgIEluc3BlY3RvclRlc3QudGltZXIgPSBuZXcgVGltZXIocGVyZlRlc3QsIGNh
bGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLl9ydW5UZXN0KCk7Cit9CisKK0luc3Bl
Y3RvclRlc3QubWFyayA9IGZ1bmN0aW9uKG1hcmtlck5hbWUpCit7CisgICAgdmFyIHRpbWVyID0g
SW5zcGVjdG9yVGVzdC50aW1lcjsKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSkKKyAgICAgICAgdGltZXIuZmlu
aXNoKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUpOworCisgICAgSW5zcGVjdG9yVGVzdC5s
YXN0TWFya0Nvb2tpZSA9IG1hcmtlck5hbWUgPyB0aW1lci5zdGFydChtYXJrZXJOYW1lKSA6IG51
bGw7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyA9IGZ1bmN0aW9uKGdyb3VwTmFt
ZSwgdGVzdE5hbWUsIHNhbXBsZXMsIHVuaXRzLCBkaXZpZGVyKQoreworICAgIGRpdmlkZXIgPSBk
aXZpZGVyIHx8IDE7CisgICAgdmFyIHN0cmlwTlJlc3VsdHMgPSBNYXRoLmZsb29yKHNhbXBsZXMu
bGVuZ3RoIC8gMTApOworICAgIHNhbXBsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBh
IC0gYjsgfSk7CisgICAgdmFyIHN1bSA9IDA7CisgICAgZm9yICh2YXIgaSA9IHN0cmlwTlJlc3Vs
dHM7IGkgPCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHM7ICsraSkKKyAgICAgICAgc3Vt
ICs9IHNhbXBsZXNbaV07CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJFU1VMVCAiICsg
Z3JvdXBOYW1lICsgJzogJyArIHRlc3ROYW1lICsgIj0gIiArIE1hdGguZmxvb3Ioc3VtIC8gKHNh
bXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0cyAqIDIpIC8gZGl2aWRlcikgKyAiICIgKyB1bml0
cyk7Cit9CisKK0luc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1bmN0
aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCit7CisgICAgdmFy
IG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhvZE5h
bWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5KTsKKyAgICBmdW5jdGlvbiBiYWNrZW5kQ2FsbCgp
CisgICAgeworICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cyk7CisgICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBlb2Yg
YXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAwOwor
ICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwgYXJn
dW1lbnRzKTsKKyAgICAgICAgfSk7CisgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9iamVj
dCwgYXJncyk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9zaG93LXBhbmVsLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9zaG93
LXBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAyYjZjYgot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL3Nob3ctcGFuZWwu
aHRtbApAQCAtMCwwICsxLDY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKK3sKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsKKyAg
ICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxl
cy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7
CisgICAgICAgICAgICAgZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFz
dFNlbGVjdGVkSXRlbS5zZXQoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwpOworCisgICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygyMDApIiwgcnVuVGVzdCk7CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFu
Y2VUZXN0KHBlcmZUZXN0LCAxMDAwMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGVyZlRlc3Qo
dGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsK
KyAgICAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5wYW5lbHMpIHsKKyAg
ICAgICAgICAgIHZhciB0aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93LXBhbmVsLSIgKyBw
YW5lbE5hbWUpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChwYW5lbE5hbWUp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlzcGxheSgpOyIpOworICAgICAgICAgICAgdGltZXIuZmluaXNoKHRpbWVyQ29v
a2llKTsKKyAgICAgICAgfQorICAgICAgICB0aW1lci5kb25lKCJwYW5lbC1zd2l0Y2giKTsKKyAg
ICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117407</attachid>
            <date>2011-12-01 06:40:55 -0800</date>
            <delta_ts>2011-12-01 11:21:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72260-20111201184052.patch</filename>
            <type>text/plain</type>
            <size>17812</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjU4CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxYzAxYjg4ZTQ2
ZjA5YjIyMTVhN2FmOTU2MDM1YTY1YzNkY2RhNDQuLjNhNzE2Zjg4MDQ5NTIxOTE5NzE4NWQwOTc0
NWRlNTMzNzgxMDUwYTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTIt
MDEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGNocm9taXVtOiBtb3ZlIGFuZCBhZGFwdCBJbnNwZWN0b3IncyBwZXJmb3Jt
YW5jZSB0ZXN0cyBmb3IgcnVubmluZyB3aXRoIHJ1bi1kZXZ0b29scy1wZXJmLXRlc3RzLnB5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIyNjAKKwor
ICAgICAgICBTYW1wbGUgY29tbWFuZCBsaW5lOgorICAgICAgICAkIHJ1bi1pbnNwZWN0b3ItcGVy
Zi10ZXN0cy5weSAtLXJlbGVhc2UKKworICAgICAgICAwIHRlc3RzIHJhbiBhcyBleHBlY3RlZCAo
MiBkaWRuJ3QgcnVuKS4KKworICAgICAgICBSRVNVTFQgaW5zcGVjdG9yLXN0YXJ0dXAtdGltZTog
dGltZT0gNjQwIG1zCisKKyAgICAgICAgMSB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQgKDEgZGlkbid0
IHJ1bikuCisKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1lbGVtZW50
cz0gNiBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93LXBhbmVsLXJlc291cmNl
cz0gNyBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93LXBhbmVsLW5ldHdvcms9
IDUyIG1zCisgICAgICAgIFJFU1VMVCBwYW5lbC1zd2l0Y2g6IHNob3ctcGFuZWwtc2NyaXB0cz0g
MjggbXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC10aW1lbGluZT0g
MTcgbXMKKyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogc2hvdy1wYW5lbC1wcm9maWxlcz0g
OCBtcworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93LXBhbmVsLWF1ZGl0cz0gNyBt
cworICAgICAgICBSRVNVTFQgcGFuZWwtc3dpdGNoOiBzaG93LXBhbmVsLWNvbnNvbGU9IDggbXMK
KyAgICAgICAgUkVTVUxUIHBhbmVsLXN3aXRjaDogaGVhcC1kZWx0YS1zaG93LXBhbmVsPSA2IGtC
CisgICAgICAgIEFsbCAyIHRlc3RzIHJhbiBhcyBleHBlY3RlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9maXJzdC1vcGVuLWVs
ZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9maXJzdC1vcGVuLXNjcmlw
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2luc3BlY3Rvci1zdGFydHVwLXRp
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wZXJmb3JtYW5jZS10ZXN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVz
dC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJh
Y2tlci5JbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdC5UaW1lci5wcm90b3R5cGUuc3Rh
cnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0LnJ1blBl
cmZvcm1hbmNlVGVzdC5UaW1lci5wcm90b3R5cGUuZmluaXNoKToKKyAgICAgICAgKGluaXRpYWxp
emVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJv
dG90eXBlLl9nZXRKU0hlYXBTaXplKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIu
SW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLmRvbmUpOgor
ICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1h
bmNlVGVzdC5UaW1lci5wcm90b3R5cGUuX3J1blRlc3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9U
aW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdC5UaW1lci5wcm90b3R5
cGUuX2R1bXApOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0
LnJ1blBlcmZvcm1hbmNlVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLklu
c3BlY3RvclRlc3QubWFyayk6CisgICAgICAgICogaW5zcGVjdG9yL3Nob3ctcGFuZWwuaHRtbDog
QWRkZWQuCisKIDIwMTEtMTEtMDkgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW011dGF0aW9uT2JzZXJ2ZXJzXSBNaWNyb2JlbmNobWFya3MgZm9yIGFwcGVuZENo
aWxkLCByZW1vdmVDaGlsZCwgYW5kIGlubmVySFRNTApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MjRlOGQ1
NDVhMDA4OGEwMjBiYWJhMzVhYTM3ZjRhNTk2MjVmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwKQEAgLTAsMCAr
MSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKKworCisg
ICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoImF1ZGl0cyIpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX3NldERvY3Vt
ZW50KG51bGwpOworCisgICAgICAgIHZhciBzaG93UGFuZWxUaW1lckNvb2tpZSA9IHRpbWVyLnN0
YXJ0KCJmaXJzdC1vcGVuLWVsZW1lbnRzIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQmFj
a2VuZFJlc3BvbnNlU25pZmZlcihET01BZ2VudCwgInJlcXVlc3RDaGlsZE5vZGVzIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOwor
ICAgICAgICAgICAgdGltZXIuZG9uZSgiZmlyc3Qtb3BlbiIpOworICAgICAgICB9KTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICB9CisKKyAgICBJbnNw
ZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKK30KKworPC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKworPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorCis8L2JvZHk+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1vcGVuLXNjcmlw
dHMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tc2NyaXB0cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjY2JhYTQ1ZmI3ZTFlZTA0NzkxOTYwODQ4OWQxMDAxMmQwMjAwNjQK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1vcGVu
LXNjcmlwdHMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInNjcmlwdHMiKTsKKyAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVz
Lm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZh
bHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7CisgICAgICAgICAgICAg
ZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7CisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKKyAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisgICAgICAgIHZhciBzaG93UGFu
ZWxUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmaXJzdC1vcGVuLXNjcmlwdHMiKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOworICAgICAgICB2YXIgY291bnQg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9t
YWluUGFuZWwuX3RleHRDaHVua3MubGVuZ3RoOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMuX3Zpc2libGVWaWV3Ll90ZXh0Vmlld2VyLl9tYWluUGFuZWwuX2V4cGFuZENodW5r
cygwLCBjb3VudCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJs
ZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fcGFpbnRTY2hlZHVsZWRMaW5lcygpOworICAg
ICAgICB0aW1lci5maW5pc2goc2hvd1BhbmVsVGltZXJDb29raWUpOworICAgICAgICB0aW1lci5k
b25lKCJmaXJzdC1vcGVuIik7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBl
bmRpbmdEaXNwYXRjaGVzKEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LmJpbmQobnVs
bCwgdGVzdCwgNTAwMCkpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
ZmExYmY4ZDFiZjEwYWUwYmY0ODVhNmZhZmVlZGQwNDQ5MzBmODEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwK
QEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBvbmxvYWQoKQoreworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0aW1lcyA9IFtdOworICAgIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CisgICAgdGVzdFN0
YXJ0VGltZSA9IHN0YXJ0VGltZTsKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGluc3Bl
Y3RvcklzUmVhZHkoKQoreworICAgIHRpbWVzLnB1c2goRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7
CisgICAgaWYgKERhdGUubm93KCkgLSB0ZXN0U3RhcnRUaW1lID4gMjAwMDApIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcigyLCAiSW5zcGVjdG9y
VGVzdC5kdW1wVGVzdFN0YXRzKCdpbnNwZWN0b3Itc3RhcnR1cC10aW1lJywgJ3RpbWUnLCAiICsg
SlNPTi5zdHJpbmdpZnkodGltZXMpICsgIiwgJ21zJykiKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDMsICIoSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKSkiKQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgcnVuVGVzdCgp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX3Nl
dERvY3VtZW50KG51bGwpOworCisgICAgSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VT
bmlmZmVyKERPTUFnZW50LCAicmVxdWVzdENoaWxkTm9kZXMiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RBY3RpdmVQYW5lbC5zZXQoImF1ZGl0cyIpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJpbnNwZWN0b3JJc1JlYWR5KCki
KTsKKyAgICB9KTsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworfQor
Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25ldHdvcmstYXBwZW5kLTMwLXJlcXVl
c3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM2MjZiZDI5ZjZlN2U0NjgxZWY2YjU3YjcwOWYwMzc0N2Jj
NjZhYwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25ldHdv
cmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMoY291
bnQpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGRv
Y3VtZW50LlVSTCwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7CisK
KyAgICB2YXIgb3JpZ2luYWxSZWZyZXNoID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3LCAicmVmcmVzaCIsIHRpbWVUcmFj
a2luZ1JlZnJlc2gsIHRydWUpOworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0
d29ya0xvZ1ZpZXcuX2RlZmF1bHRSZWZyZXNoRGVsYXkgPSAzMDsKKyAgICBmdW5jdGlvbiB0aW1l
VHJhY2tpbmdSZWZyZXNoKCkKKyAgICB7CisgICAgICAgIHZhciBjb29raWUgPSBJbnNwZWN0b3JU
ZXN0LnRpbWVyLnN0YXJ0KCJuZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cyIpOworICAgICAgICBv
cmlnaW5hbFJlZnJlc2guY2FsbCh0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5m
aW5pc2goY29va2llKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3
b3JrTG9nVmlldy5fcmVzZXQoKTsKKyAgICAgICAgLy8gSW4gcmVhbCBsaWZlIHRoaXMgYXJyYXkg
aXMgY2xlYW5pbmcgdXAgYXQgbmF2aWdhdGlvbiBldmVudC4KKyAgICAgICAgV2ViSW5zcGVjdG9y
Lm5ldHdvcmtMb2cuX3Jlc291cmNlcyA9IFtdOworICAgICAgICBJbnNwZWN0b3JUZXN0LnRpbWVy
LmRvbmUoInBhbmVsLXVwZGF0ZSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QodGltZXIp
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSUmVx
dWVzdHMoMzApIik7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRl
c3QodGVzdCwgMTUwMDApOworfQorCitpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIG1ha2VYSFJSZXF1ZXN0cygz
MCk7CisgICAgfSwgMzAwMCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9p
bnNwZWN0b3IvcGVyZm9ybWFuY2UtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWRlOWQwYzJkZjljODA0
MDVmMjJmYjU2ZmE1MDI4MmQxZjJjODJiCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UtdGVzdC5qcwpAQCAtMCwwICsxLDEyOCBAQAordmFy
IGluaXRpYWxpemVfVGltZVRyYWNrZXIgPSBmdW5jdGlvbigpIHsKKworSW5zcGVjdG9yVGVzdC5y
dW5QZXJmb3JtYW5jZVRlc3QgPSBmdW5jdGlvbihwZXJmVGVzdCwgZXhlY3V0ZVRpbWUsIGNhbGxi
YWNrKQoreworICAgIHZhciBUaW1lciA9IGZ1bmN0aW9uKHRlc3QsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5fdGVzdCA9
IHRlc3Q7CisgICAgICAgIHRoaXMuX3RpbWVzID0ge307CisgICAgICAgIHRoaXMuX3Rlc3RTdGFy
dFRpbWUgPSBuZXcgRGF0ZSgpOworICAgICAgICB0aGlzLl9oZWFwU2l6ZURlbHRhcyA9IFtdOwor
ICAgICAgICB0aGlzLl9qc0hlYXBTaXplID0gdGhpcy5fZ2V0SlNIZWFwU2l6ZSgpOworICAgIH0K
KworICAgIFRpbWVyLnByb3RvdHlwZSA9IHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKG5hbWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7bmFtZTogbmFtZSwgc3RhcnRUaW1lOiBu
ZXcgRGF0ZSgpfTsKKyAgICAgICAgfSwKKworICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSBuZXcgRGF0ZSgpOworICAg
ICAgICAgICAgaWYgKCF0aGlzLl90aW1lc1tjb29raWUubmFtZV0pCisgICAgICAgICAgICAgICAg
dGhpcy5fdGltZXNbY29va2llLm5hbWVdID0gW107CisgICAgICAgICAgICB0aGlzLl90aW1lc1tj
b29raWUubmFtZV0ucHVzaChlbmRUaW1lIC0gY29va2llLnN0YXJ0VGltZSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgX2dldEpTSGVhcFNpemU6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5nYykgeworICAgICAgICAgICAgICAgIHdpbmRvdy5nYygpOworICAg
ICAgICAgICAgICAgIHdpbmRvdy5nYygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIGNvbnNvbGUubWVtb3J5LnVzZWRKU0hlYXBTaXplOworICAgICAgICB9LAorCisgICAgICAg
IGRvbmU6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG5l
d0pTSGVhcFNpemUgPSB0aGlzLl9nZXRKU0hlYXBTaXplKCk7CisgICAgICAgICAgICB0aGlzLl9o
ZWFwU2l6ZURlbHRhcy5wdXNoKG5ld0pTSGVhcFNpemUgLSB0aGlzLl9qc0hlYXBTaXplKTsKKyAg
ICAgICAgICAgIHRoaXMuX2pzSGVhcFNpemUgPSBuZXdKU0hlYXBTaXplOworCisgICAgICAgICAg
ICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBpZiAodGltZSAtIHRoaXMuX3Rl
c3RTdGFydFRpbWUgPCBleGVjdXRlVGltZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9ydW5UZXN0
KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29tcGxl
dGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0aGlzLl9j
b21wbGV0ZSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9kdW1wKGdyb3VwTmFtZSk7
CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9jYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBfcnVuVGVzdDogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fZ3VhcmQpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMu
X3J1blRlc3QuYmluZCh0aGlzKSwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9ndWFyZCA9IHRydWU7CisgICAgICAgICAgICB2
YXIgc2FmZVRlc3QgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKHRoaXMuX3Rlc3QpOworICAgICAg
ICAgICAgc2FmZVRlc3QodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9ndWFyZCA9IGZhbHNlOwor
ICAgICAgICB9LAorCisgICAgICAgIF9kdW1wOiBmdW5jdGlvbihncm91cE5hbWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHRoaXMuX3RpbWVzKQorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyhncm91cE5hbWUsIHRlc3ROYW1l
LCB0aGlzLl90aW1lc1t0ZXN0TmFtZV0sICJtcyIpOworCisgICAgICAgICAgICB2YXIgdXJsID0g
V2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkw7CisgICAgICAgICAgICB2YXIgcmVnRXhwID0g
LyhbXlwvXSspXC5odG1sLzsKKyAgICAgICAgICAgIHZhciBtYXRjaGVzID0gcmVnRXhwLmV4ZWMo
dXJsKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyhncm91cE5hbWUs
ICJoZWFwLWRlbHRhLSIgKyBtYXRjaGVzWzFdLCB0aGlzLl9oZWFwU2l6ZURlbHRhcywgImtCIiwg
MTAyNCk7CisgICAgICAgIH0sCisKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnRpbWVyID0g
bmV3IFRpbWVyKHBlcmZUZXN0LCBjYWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVzdC50aW1lci5f
cnVuVGVzdCgpOworfQorCitJbnNwZWN0b3JUZXN0Lm1hcmsgPSBmdW5jdGlvbihtYXJrZXJOYW1l
KQoreworICAgIHZhciB0aW1lciA9IEluc3BlY3RvclRlc3QudGltZXI7CisgICAgaWYgKCF0aW1l
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29r
aWUpCisgICAgICAgIHRpbWVyLmZpbmlzaChJbnNwZWN0b3JUZXN0Lmxhc3RNYXJrQ29va2llKTsK
KworICAgIEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUgPSBtYXJrZXJOYW1lID8gdGltZXIu
c3RhcnQobWFya2VyTmFtZSkgOiBudWxsOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3Rh
dHMgPSBmdW5jdGlvbihncm91cE5hbWUsIHRlc3ROYW1lLCBzYW1wbGVzLCB1bml0cywgZGl2aWRl
cikKK3sKKyAgICBkaXZpZGVyID0gZGl2aWRlciB8fCAxOworICAgIHZhciBzdHJpcE5SZXN1bHRz
ID0gTWF0aC5mbG9vcihzYW1wbGVzLmxlbmd0aCAvIDEwKTsKKyAgICBzYW1wbGVzLnNvcnQoZnVu
Y3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOworICAgIHZhciBzdW0gPSAwOworICAgIGZv
ciAodmFyIGkgPSBzdHJpcE5SZXN1bHRzOyBpIDwgc2FtcGxlcy5sZW5ndGggLSBzdHJpcE5SZXN1
bHRzOyArK2kpCisgICAgICAgIHN1bSArPSBzYW1wbGVzW2ldOworICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJSRVNVTFQgIiArIGdyb3VwTmFtZSArICc6ICcgKyB0ZXN0TmFtZSArICI9ICIg
KyBNYXRoLmZsb29yKHN1bSAvIChzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHMgKiAyKSAv
IGRpdmlkZXIpICsgIiAiICsgdW5pdHMpOworfQorCitJbnNwZWN0b3JUZXN0LmFkZEJhY2tlbmRS
ZXNwb25zZVNuaWZmZXIgPSBmdW5jdGlvbihvYmplY3QsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBv
cHRfc3RpY2t5KQoreworICAgIHZhciBvcmlnaW5hbE1ldGhvZCA9IEluc3BlY3RvclRlc3Qub3Zl
cnJpZGUob2JqZWN0LCBtZXRob2ROYW1lLCBiYWNrZW5kQ2FsbCwgb3B0X3N0aWNreSk7CisgICAg
ZnVuY3Rpb24gYmFja2VuZENhbGwoKQorICAgIHsKKyAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOworICAgICAgICB2YXIgY2FsbGJhY2sgPSAo
YXJncy5sZW5ndGggJiYgdHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gImZ1bmN0aW9u
IikgPyBhcmdzLnBvcCgpIDogMDsKKyAgICAgICAgYXJncy5wdXNoKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIG92
ZXJyaWRlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgICAgIH0pOworICAgICAgICBvcmln
aW5hbE1ldGhvZC5hcHBseShvYmplY3QsIGFyZ3MpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3Ivc2hvdy1wYW5lbC5odG1sIGIvUGVyZm9ybWFu
Y2VUZXN0cy9pbnNwZWN0b3Ivc2hvdy1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMmI2Y2JkNzlh
M2MwY2FjZDE4ZTIzMDE1YmFhN2U1ZWUyOWE1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9zaG93LXBhbmVsLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGVyZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlWEhSUmVx
dWVzdHMoY291bnQpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Cisg
ICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgeGhyLm9wZW4o
IkdFVCIsIGRvY3VtZW50LlVSTCwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3Jp
cHRzIik7CisgICAgdmFyIGZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxl
c1NlbGVjdEVsZW1lbnQ7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5vcHRpb25zLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICBpZiAoZmlsZXMub3B0aW9uc1tpXS52YWx1ZS5pbmRleE9m
KCJpbnNwZWN0b3ItdGVzdC5qcyIpICE9PSAtMSkgeworICAgICAgICAgICAgIGZpbGVzLnNlbGVj
dGVkSW5kZXggPSBpOworICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5f
ZmlsZXNTZWxlY3RDaGFuZ2VkKCk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9Cisg
ICAgfQorCisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CisgICAgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0uc2V0KFdlYkluc3Bl
Y3Rvci5pbnNwZWN0ZWRQYWdlVVJMKTsKKworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5l
dHdvcmsiKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSUmVxdWVz
dHMoMjAwKSIsIHJ1blRlc3QpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdChwZXJmVGVzdCwgMTAwMDApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHBlcmZUZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7CisgICAgICAgIGZvciAodmFyIHBhbmVsTmFt
ZSBpbiBXZWJJbnNwZWN0b3IucGFuZWxzKSB7CisgICAgICAgICAgICB2YXIgdGltZXJDb29raWUg
PSB0aW1lci5zdGFydCgic2hvdy1wYW5lbC0iICsgcGFuZWxOYW1lKTsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwocGFuZWxOYW1lKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsiKTsKKyAg
ICAgICAgICAgIHRpbWVyLmZpbmlzaCh0aW1lckNvb2tpZSk7CisgICAgICAgIH0KKyAgICAgICAg
dGltZXIuZG9uZSgicGFuZWwtc3dpdGNoIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117448</attachid>
            <date>2011-12-01 11:21:23 -0800</date>
            <delta_ts>2011-12-01 11:24:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72260-20111201232121.patch</filename>
            <type>text/plain</type>
            <size>36432</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNjU4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjM0NWQ5NDdjODIyOTkyYzFmMTAy
MmEwMzkwNzZhMzM1MGExNDg3My4uNWQ3ZThkMDZkZDVhODMwZDU0Y2I0MDBhNTRjMDMzNTgzNTgx
MjI2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTAxICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBjaHJvbWl1
bTogbW92ZSBhbmQgYWRhcHQgSW5zcGVjdG9yJ3MgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIHJ1bm5p
bmcgd2l0aCBydW4taW5zcGVjdG9yLXBlcmYtdGVzdHMucHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjI2MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291
cmNlcy9jb25zb2xlLWFwcGVuZC0xMDAtbGluZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0LW9wZW4tcmVzb3VyY2VzLmh0bWw6
IFJlbW92ZWQuCisKIDIwMTEtMTItMDEgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9u
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJj
ZXMvY29uc29sZS1hcHBlbmQtMTAwLWxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cGVyZm9ybWFuY2UvcmVzb3VyY2VzL2NvbnNvbGUtYXBwZW5kLTEwMC1saW5lcy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmMzYmNhMzE5NzYyMDVhOWJmODVlZTllMDE2Yjgy
NjE2OWQxMDk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvY29uc29sZS1hcHBl
bmQtMTAwLWxpbmVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIG1ha2VDb25zb2xlRXZlbnRzKGNvdW50
KQotewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgY29uc29s
ZS5sb2coIkNvbnNvbGUgbG9nOiAiICsgaSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImNvbnNvbGUiKTsKLQotICAgIGZ1bmN0aW9uIHRlc3Qo
dGltZXIpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5jbGVhck1lc3NhZ2Vz
KCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuY29uc29s
ZVZpZXcucHJvbXB0RWxlbWVudCwgInNjcm9sbEludG9WaWV3IiwgZmluaXNoKTsKLSAgICAgICAg
Y29va2llID0gdGltZXIuc3RhcnQoImNvbnNvbGUtYXBwZW5kLTEwMC1saW5lcyIpOwotCi0gICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VDb25zb2xlRXZlbnRzKDEwMCki
KTsKLQotICAgICAgICBmdW5jdGlvbiBmaW5pc2goKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aW1lci5maW5pc2goY29va2llKTsKLSAgICAgICAgICAgIHRpbWVyLmRvbmUoKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDEw
MDAwKTsKLX0KLQotaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBtYWtlQ29uc29sZUV2ZW50cygxMDApOwotICAg
IH0sIDMwMDApOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0LW9wZW4tZWxlbWVu
dHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg0MTA4M2YxMWJkZTE3NjJm
MDZjMTQ5MmM3NjA5NWU2ZjAyNWU1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2Vz
L2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNl
LXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Ci0KLQotICAgIGZ1bmN0aW9uIHRlc3Qo
dGltZXIpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9zZXREb2N1bWVudChudWxsKTsKLQotICAg
ICAgICB2YXIgc2hvd1BhbmVsVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgiZmlyc3Qtb3Blbi1l
bGVtZW50cyIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZm
ZXIoRE9NQWdlbnQsICJyZXF1ZXN0Q2hpbGROb2RlcyIsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgdGltZXIuZmluaXNoKHNob3dQYW5lbFRpbWVyQ29va2llKTsKLSAgICAgICAgICAgIHRpbWVy
LmRvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVs
ZW1lbnRzIik7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3Qo
dGVzdCwgNTAwMCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0KLTxkaXY+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
LQotPC9ib2R5PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXJlc291cmNlcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXJl
c291cmNlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjExMTZkMzA3NTMz
Zjg0ZmIwZTU3YTc1MjFiY2EwNDJlZWMzMTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNv
dXJjZXMvZmlyc3Qtb3Blbi1yZXNvdXJjZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBlcmZv
cm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7Ci0gICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0uc2V0KFdlYkluc3BlY3Rvci5p
bnNwZWN0ZWRQYWdlVVJMKTsKLQotICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCi0gICAgewotICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKLQotICAgICAgICB2YXIgc2hv
d1BhbmVsVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgiZmlyc3Qtb3Blbi1yZXNvdXJjZXMiKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VTbmlmZmVyKFBhZ2VBZ2Vu
dCwgImdldFJlc291cmNlQ29udGVudCIsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGltZXIu
ZmluaXNoKHNob3dQYW5lbFRpbWVyQ29va2llKTsKLSAgICAgICAgICAgIHRpbWVyLmRvbmUoKTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLl9yZXNl
dFJlc291cmNlc1RyZWUoKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LmZyb250ZW5kUmV1c2VkKCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291
cmNlcyIpOwotICAgIH0KLQotICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRl
c3QsIDUwMDApOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgotPC9ib2R5PgotPC9ib2R5PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL2ZpcnN0LW9wZW4tc2NyaXB0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9maXJzdC1v
cGVuLXNjcmlwdHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI1NWRmOTZh
ZTlmMjNjNzc0ZGRiYjNkZTM1MWVmMjQxMDZlZjk1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2Uv
cmVzb3VyY2VzL2ZpcnN0LW9wZW4tc2NyaXB0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDMg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVy
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0KLSAgICB2YXIgZmls
ZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0Lmpz
IikgIT09IC0xKSB7Ci0gICAgICAgICAgICAgZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7Ci0gICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQo
KTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlv
biB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVk
aXRzIik7Ci0KLSAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQo
ImZpcnN0LW9wZW4tc2NyaXB0cyIpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJz
Y3JpcHRzIik7Ci0gICAgICAgIHZhciBjb3VudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0
cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fdGV4dENodW5rcy5sZW5ndGg7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRW
aWV3ZXIuX21haW5QYW5lbC5fZXhwYW5kQ2h1bmtzKDAsIGNvdW50KTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLl92aXNpYmxlVmlldy5fdGV4dFZpZXdlci5fbWFpblBhbmVs
Ll9wYWludFNjaGVkdWxlZExpbmVzKCk7Ci0gICAgICAgIHRpbWVyLmZpbmlzaChzaG93UGFuZWxU
aW1lckNvb2tpZSk7Ci0gICAgICAgIHRpbWVyLmRvbmUoKTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0
b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCA1MDAwKTsKLX0KLQotPC9zY3JpcHQ+Ci0K
LTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPC9ib2R5PgotPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2Vz
L2luc3BlY3Rvci1zdGFydHVwLXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS9yZXNvdXJjZXMvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0YWM4MWMxMjhjOTVlMzFkNWE2OTg1OGJhM2U0YzdiODA1ZDRk
NTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS9yZXNvdXJjZXMvaW5zcGVjdG9yLXN0YXJ0dXAt
dGltZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotCi1mdW5jdGlvbiBvbmxvYWQoKQotewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICB0aW1lcyA9IFtdOwotICAgIHN0YXJ0VGltZSA9IERhdGUubm93
KCk7Ci0gICAgdGVzdFN0YXJ0VGltZSA9IHN0YXJ0VGltZTsKLSAgICBydW5UZXN0KCk7Ci19Ci0K
LWZ1bmN0aW9uIGluc3BlY3RvcklzUmVhZHkoKQotewotICAgIHRpbWVzLnB1c2goRGF0ZS5ub3co
KSAtIHN0YXJ0VGltZSk7Ci0gICAgaWYgKERhdGUubm93KCkgLSB0ZXN0U3RhcnRUaW1lID4gMjAw
MDApIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigyLCAiSW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKCdpbnNwZWN0b3Itc3RhcnR1cC10aW1l
JywgIiArIEpTT04uc3RyaW5naWZ5KHRpbWVzKSArICIpIikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcigzLCAiKEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCkpIikKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5jbG9zZVdlYkluc3BlY3RvcigpOwotICAgIHN0YXJ0VGltZSA9IERhdGUubm93KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwotICAgIHJ1blRlc3Qo
KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9z
ZXREb2N1bWVudChudWxsKTsKLQotICAgIEluc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNl
U25pZmZlcihET01BZ2VudCwgInJlcXVlc3RDaGlsZE5vZGVzIiwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0QWN0aXZlUGFuZWwuc2V0KCJhdWRpdHMiKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiaW5zcGVjdG9ySXNSZWFkeSgp
Iik7Ci0gICAgfSk7Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKLX0K
LQotPC9zY3JpcHQ+Ci0KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgotPHA+VGVz
dHMgV2ViIEluc3BlY3RvciBzdGFydHVwIHRpbWUuPC9wPgotCi08ZGl2PjwvZGl2PjxkaXY+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+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL25ldHdvcmstYXBwZW5kLTMwLXJl
cXVlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2Vz
L25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM4YzM3YTBjMTMyYjY1ZTViNmYyZWU4MDBlNjdjZWJmZGEwZDM4MWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotCi1mdW5jdGlvbiBtYWtlWEhSUmVxdWVzdHMoY291bnQpCi17Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGRvY3VtZW50LlVSTCwgdHJ1ZSk7Ci0g
ICAgICAgIHhoci5zZW5kKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7Ci0KLSAgICB2YXIgb3JpZ2luYWxSZWZy
ZXNoID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
X25ldHdvcmtMb2dWaWV3LCAicmVmcmVzaCIsIHRpbWVUcmFja2luZ1JlZnJlc2gsIHRydWUpOwot
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXcuX2RlZmF1bHRS
ZWZyZXNoRGVsYXkgPSAzMDsKLSAgICBmdW5jdGlvbiB0aW1lVHJhY2tpbmdSZWZyZXNoKCkKLSAg
ICB7Ci0gICAgICAgIHZhciBjb29raWUgPSBJbnNwZWN0b3JUZXN0LnRpbWVyLnN0YXJ0KCJuZXR3
b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cyIpOwotICAgICAgICBvcmlnaW5hbFJlZnJlc2guY2FsbCh0
aGlzKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC50aW1lci5maW5pc2goY29va2llKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5fcmVzZXQoKTsK
LSAgICAgICAgLy8gSW4gcmVhbCBsaWZlIHRoaXMgYXJyYXkgaXMgY2xlYW5pbmcgdXAgYXQgbmF2
aWdhdGlvbiBldmVudC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtMb2cuX3Jlc291cmNl
cyA9IFtdOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLmRvbmUoKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiB0ZXN0KHRpbWVyKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZSgibWFrZVhIUlJlcXVlc3RzKDMwKSIpOwotICAgIH0KLQotICAgIEluc3BlY3Rv
clRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHRlc3QsIDE1MDAwKTsKLX0KLQotaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAg
ICAgICBtYWtlWEhSUmVxdWVzdHMoMzApOwotICAgIH0sIDMwMDApOwotfQotCi08L3NjcmlwdD4K
LTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9w
ZXJmb3JtYW5jZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jl
c291cmNlcy9wZXJmb3JtYW5jZS10ZXN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzMjZmNTNhNGIzYmY2OTQ1YzczMmQ0YjhhODIyNzI5YTM3OGViZTdiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
ZXJmb3JtYW5jZS9yZXNvdXJjZXMvcGVyZm9ybWFuY2UtdGVzdC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDEyNyArMCwwIEBACi12YXIgaW5pdGlhbGl6ZV9UaW1lVHJhY2tlciA9IGZ1bmN0aW9uKCkg
ewotCi1JbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCA9IGZ1bmN0aW9uKHBlcmZUZXN0
LCBleGVjdXRlVGltZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIFRpbWVyID0gZnVuY3Rpb24odGVz
dCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwot
ICAgICAgICB0aGlzLl90ZXN0ID0gdGVzdDsKLSAgICAgICAgdGhpcy5fdGltZXMgPSB7fTsKLSAg
ICAgICAgdGhpcy5fdGVzdFN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgICAgIHRoaXMuX2hl
YXBTaXplRGVsdGFzID0gW107Ci0gICAgICAgIHRoaXMuX2pzSGVhcFNpemUgPSB0aGlzLl9nZXRK
U0hlYXBTaXplKCk7Ci0gICAgfQotCi0gICAgVGltZXIucHJvdG90eXBlID0gewotICAgICAgICBz
dGFydDogZnVuY3Rpb24obmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHtuYW1l
OiBuYW1lLCBzdGFydFRpbWU6IG5ldyBEYXRlKCl9OwotICAgICAgICB9LAotCi0gICAgICAgIGZp
bmlzaDogZnVuY3Rpb24oY29va2llKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZW5kVGlt
ZSA9IG5ldyBEYXRlKCk7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1l
XSkKLSAgICAgICAgICAgICAgICB0aGlzLl90aW1lc1tjb29raWUubmFtZV0gPSBbXTsKLSAgICAg
ICAgICAgIHRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1lXS5wdXNoKGVuZFRpbWUgLSBjb29raWUuc3Rh
cnRUaW1lKTsKLSAgICAgICAgfSwKLQotICAgICAgICBfZ2V0SlNIZWFwU2l6ZTogZnVuY3Rpb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aW5kb3cuZ2MoKTsKLSAgICAgICAgICAgIHdpbmRv
dy5nYygpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUubWVtb3J5LnVzZWRKU0hlYXBTaXpl
OwotICAgICAgICB9LAotCi0gICAgICAgIGRvbmU6IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIG5ld0pTSGVhcFNpemUgPSB0aGlzLl9nZXRKU0hlYXBTaXplKCk7Ci0gICAg
ICAgICAgICB0aGlzLl9oZWFwU2l6ZURlbHRhcy5wdXNoKG5ld0pTSGVhcFNpemUgLSB0aGlzLl9q
c0hlYXBTaXplKTsKLSAgICAgICAgICAgIHRoaXMuX2pzSGVhcFNpemUgPSBuZXdKU0hlYXBTaXpl
OwotCi0gICAgICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgICAgICAgICBpZiAo
dGltZSAtIHRoaXMuX3Rlc3RTdGFydFRpbWUgPCBleGVjdXRlVGltZSkKLSAgICAgICAgICAgICAg
ICB0aGlzLl9ydW5UZXN0KCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAodGhpcy5fY29tcGxldGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl9k
dW1wKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQotICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9jYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSwKLQotICAgICAgICBfcnVuVGVzdDogZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5fZ3VhcmQpIHsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KHRoaXMuX3J1blRlc3QuYmluZCh0aGlzKSwgMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLl9ndWFyZCA9IHRydWU7Ci0gICAgICAg
ICAgICB2YXIgc2FmZVRlc3QgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKHRoaXMuX3Rlc3QpOwot
ICAgICAgICAgICAgc2FmZVRlc3QodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLl9ndWFyZCA9IGZh
bHNlOwotICAgICAgICB9LAotCi0gICAgICAgIF9kdW1wOiBmdW5jdGlvbigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHRoaXMuX3RpbWVzKQotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyh0ZXN0TmFtZSwgdGhpcy5fdGltZXNb
dGVzdE5hbWVdKTsKLQotICAgICAgICAgICAgdmFyIHVybCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0
ZWRQYWdlVVJMOwotICAgICAgICAgICAgdmFyIHJlZ0V4cCA9IC8oW15cL10rKVwuaHRtbC87Ci0g
ICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHJlZ0V4cC5leGVjKHVybCk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHMoImhlYXAtZGVsdGEta2ItIiArIG1hdGNoZXNbMV0s
IHRoaXMuX2hlYXBTaXplRGVsdGFzLCAxMDI0KTsKLSAgICAgICAgfSwKLQotICAgIH0KLQotICAg
IEluc3BlY3RvclRlc3QudGltZXIgPSBuZXcgVGltZXIocGVyZlRlc3QsIGNhbGxiYWNrKTsKLSAg
ICBJbnNwZWN0b3JUZXN0LnRpbWVyLl9ydW5UZXN0KCk7Ci19Ci0KLUluc3BlY3RvclRlc3QubWFy
ayA9IGZ1bmN0aW9uKG1hcmtlck5hbWUpCi17Ci0gICAgdmFyIHRpbWVyID0gSW5zcGVjdG9yVGVz
dC50aW1lcjsKLSAgICBpZiAoIXRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoSW5z
cGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSkKLSAgICAgICAgdGltZXIuZmluaXNoKEluc3BlY3Rv
clRlc3QubGFzdE1hcmtDb29raWUpOwotCi0gICAgSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tp
ZSA9IG1hcmtlck5hbWUgPyB0aW1lci5zdGFydChtYXJrZXJOYW1lKSA6IG51bGw7Ci19Ci0KLUlu
c3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyA9IGZ1bmN0aW9uKHRlc3ROYW1lLCBzYW1wbGVzLCBk
aXZpZGVyKQotewotICAgIGRpdmlkZXIgPSBkaXZpZGVyIHx8IDE7Ci0gICAgdmFyIHN0cmlwTlJl
c3VsdHMgPSBNYXRoLmZsb29yKHNhbXBsZXMubGVuZ3RoIC8gMTApOwotICAgIHNhbXBsZXMuc29y
dChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7Ci0gICAgdmFyIHN1bSA9IDA7Ci0g
ICAgZm9yICh2YXIgaSA9IHN0cmlwTlJlc3VsdHM7IGkgPCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlw
TlJlc3VsdHM7ICsraSkKLSAgICAgICAgc3VtICs9IHNhbXBsZXNbaV07Ci0gICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiogIiArIHRlc3ROYW1lICsgIjogIiArIE1hdGguZmxvb3Ioc3VtIC8g
KHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0cyAqIDIpIC8gZGl2aWRlcikpOwotICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KHRlc3ROYW1lICsgIiBtaW4vbWF4L2NvdW50OiAiICsgTWF0
aC5mbG9vcihzYW1wbGVzWzBdIC8gZGl2aWRlcikgKyAiLyIgKyBNYXRoLmZsb29yKHNhbXBsZXNb
c2FtcGxlcy5sZW5ndGgtMV0gLyBkaXZpZGVyKSArICIvIiArIHNhbXBsZXMubGVuZ3RoKTsKLX0K
LQotSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VTbmlmZmVyID0gZnVuY3Rpb24ob2Jq
ZWN0LCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKLXsKLSAgICB2YXIgb3JpZ2lu
YWxNZXRob2QgPSBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKG9iamVjdCwgbWV0aG9kTmFtZSwgYmFj
a2VuZENhbGwsIG9wdF9zdGlja3kpOwotICAgIGZ1bmN0aW9uIGJhY2tlbmRDYWxsKCkKLSAgICB7
Ci0gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRz
KTsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gKGFyZ3MubGVuZ3RoICYmIHR5cGVvZiBhcmdzW2Fy
Z3MubGVuZ3RoIC0gMV0gPT09ICJmdW5jdGlvbiIpID8gYXJncy5wb3AoKSA6IDA7Ci0gICAgICAg
IGFyZ3MucHVzaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGws
IGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBvdmVycmlkZS5hcHBseShudWxsLCBhcmd1bWVudHMp
OwotICAgICAgICB9KTsKLSAgICAgICAgb3JpZ2luYWxNZXRob2QuYXBwbHkob2JqZWN0LCBhcmdz
KTsKLSAgICB9Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS9yZXNvdXJjZXMvc2hvdy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3BlcmZvcm1hbmNlL3Jlc291cmNlcy9zaG93LXBhbmVsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDI2Yjg0YzViY2YxYmJjOWMwMDliMGEwNTk5MWQ5ZTMwNWE5ZTM3NzcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9zaG93LXBhbmVsLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw2NiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1
bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKLSAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwot
ICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsKLSAgICAgICAgeGhy
LnNlbmQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIFdlYkluc3BlY3Rv
ci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICB2YXIgZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGZpbGVzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgIGlmIChmaWxlcy5vcHRpb25z
W2ldLnZhbHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0LmpzIikgIT09IC0xKSB7Ci0gICAgICAg
ICAgICAgZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7Ci0gICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKLSAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgIH0KLSAgICB9Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNv
dXJjZXMiKTsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFzdFNlbGVjdGVk
SXRlbS5zZXQoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwpOwotCi0gICAgV2ViSW5zcGVj
dG9yLnNob3dQYW5lbCgibmV0d29yayIpOwotICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoIm1ha2VYSFJSZXF1ZXN0cygyMDApIiwgcnVuVGVzdCk7Ci0KLSAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHBl
cmZUZXN0LCAxMDAwMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcGVyZlRlc3QodGltZXIpCi0g
ICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJhdWRpdHMiKTsKLSAgICAgICAg
Zm9yICh2YXIgcGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5wYW5lbHMpIHsKLSAgICAgICAgICAg
IHZhciB0aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93LXBhbmVsLSIgKyBwYW5lbE5hbWUp
OwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChwYW5lbE5hbWUpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwotICAgICAgICAgICAgdGltZXIu
ZmluaXNoKHRpbWVyQ29va2llKTsKLSAgICAgICAgfQotICAgICAgICB0aW1lci5kb25lKCk7Ci0g
ICAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
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+Ci08ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgotPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KLTxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGYxYzAxYjg4ZTQ2ZjA5YjIyMTVhN2FmOTU2MDM1YTY1YzNkY2RhNDQu
LmIxZDFmZjgzYzYyOTFlZDI3NTQ5ZWJiNDcxYzA3Yjc2N2FjZjljZDIgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMTItMDEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNocm9taXVtOiBtb3ZlIGFu
ZCBhZGFwdCBJbnNwZWN0b3IncyBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgcnVubmluZyB3aXRoIHJ1
bi1pbnNwZWN0b3ItcGVyZi10ZXN0cy5weS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZmlyc3Qtb3Blbi1lbGVtZW50cy5odG1sOiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9m
aXJzdC1vcGVuLWVsZW1lbnRzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL2ZpcnN0LW9wZW4t
c2NyaXB0cy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlL3Jlc291cmNlcy9maXJzdC1vcGVuLXNjcmlwdHMuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvaW5zcGVjdG9yLXN0YXJ0dXAtdGltZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9pbnNwZWN0b3Itc3RhcnR1cC10aW1lLmh0
bWwuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2Vz
L25ldHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Bl
cmZvcm1hbmNlLXRlc3QuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGVy
Zm9ybWFuY2UvcmVzb3VyY2VzL3BlcmZvcm1hbmNlLXRlc3QuanMuCisgICAgICAgIChpbml0aWFs
aXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyKToK
KyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3Jt
YW5jZVRlc3QuVGltZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGlt
ZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBl
LmZpbmlzaCk6CisgICAgICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3Qu
cnVuUGVyZm9ybWFuY2VUZXN0LlRpbWVyLnByb3RvdHlwZS5fZ2V0SlNIZWFwU2l6ZSk6CisgICAg
ICAgIChpbml0aWFsaXplX1RpbWVUcmFja2VyLkluc3BlY3RvclRlc3QucnVuUGVyZm9ybWFuY2VU
ZXN0LlRpbWVyLnByb3RvdHlwZS5kb25lKToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNr
ZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9ydW5U
ZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5Q
ZXJmb3JtYW5jZVRlc3QuVGltZXIucHJvdG90eXBlLl9kdW1wKToKKyAgICAgICAgKGluaXRpYWxp
emVfVGltZVRyYWNrZXIuSW5zcGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9UaW1lVHJhY2tlci5JbnNwZWN0b3JUZXN0Lm1hcmspOgorICAgICAgICAq
IGluc3BlY3Rvci9zaG93LXBhbmVsLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcGVyZm9ybWFuY2UvcmVzb3VyY2VzL3Nob3ctcGFuZWwuaHRtbC4KKwogMjAxMS0xMS0w
OSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbTXV0YXRpb25P
YnNlcnZlcnNdIE1pY3JvYmVuY2htYXJrcyBmb3IgYXBwZW5kQ2hpbGQsIHJlbW92ZUNoaWxkLCBh
bmQgaW5uZXJIVE1MCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJz
dC1vcGVuLWVsZW1lbnRzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9maXJzdC1v
cGVuLWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkyNGU4ZDU0NWEwMDg4YTAyMGJhYmEzNWFh
MzdmNGE1OTYyNWYyZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL2ZpcnN0LW9wZW4tZWxlbWVudHMuaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoImF1ZGl0cyIpOworCisKKyAgICBmdW5jdGlvbiB0ZXN0KHRp
bWVyKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiYXVkaXRzIik7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7CisKKyAgICAg
ICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZpcnN0LW9wZW4tZWxl
bWVudHMiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRCYWNrZW5kUmVzcG9uc2VTbmlmZmVy
KERPTUFnZW50LCAicmVxdWVzdENoaWxkTm9kZXMiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRpbWVyLmZpbmlzaChzaG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgICAgICB0aW1lci5k
b25lKCJmaXJzdC1vcGVuIik7CisgICAgICAgIH0pOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJlbGVtZW50cyIpOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuUGVyZm9y
bWFuY2VUZXN0KHRlc3QsIDUwMDApOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorCis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+CisKKzwvYm9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tc2NyaXB0cy5odG1sIGIvUGVyZm9ybWFu
Y2VUZXN0cy9pbnNwZWN0b3IvZmlyc3Qtb3Blbi1zY3JpcHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNj
YmFhNDVmYjdlMWVlMDQ3OTE5NjA4NDg5ZDEwMDEyZDAyMDA2NAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2ZpcnN0LW9wZW4tc2NyaXB0cy5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwor
ICAgIHZhciBmaWxlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZmlsZXNTZWxlY3RF
bGVtZW50OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMub3B0aW9ucy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgaWYgKGZpbGVzLm9wdGlvbnNbaV0udmFsdWUuaW5kZXhPZigiaW5zcGVj
dG9yLXRlc3QuanMiKSAhPT0gLTEpIHsKKyAgICAgICAgICAgICBmaWxlcy5zZWxlY3RlZEluZGV4
ID0gaTsKKyAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2Vs
ZWN0Q2hhbmdlZCgpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3QodGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJhdWRpdHMiKTsKKyAgICAgICAgdmFyIHNob3dQYW5lbFRpbWVyQ29va2llID0gdGlt
ZXIuc3RhcnQoImZpcnN0LW9wZW4tc2NyaXB0cyIpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJzY3JpcHRzIik7CisgICAgICAgIHZhciBjb3VudCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5fdmlzaWJsZVZpZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fdGV4dENodW5r
cy5sZW5ndGg7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdmlzaWJsZVZp
ZXcuX3RleHRWaWV3ZXIuX21haW5QYW5lbC5fZXhwYW5kQ2h1bmtzKDAsIGNvdW50KTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl92aXNpYmxlVmlldy5fdGV4dFZpZXdlci5f
bWFpblBhbmVsLl9wYWludFNjaGVkdWxlZExpbmVzKCk7CisgICAgICAgIHRpbWVyLmZpbmlzaChz
aG93UGFuZWxUaW1lckNvb2tpZSk7CisgICAgICAgIHRpbWVyLmRvbmUoImZpcnN0LW9wZW4iKTsK
KyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoSW5z
cGVjdG9yVGVzdC5ydW5QZXJmb3JtYW5jZVRlc3QuYmluZChudWxsLCB0ZXN0LCA1MDAwKSk7Cit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3Itc3RhcnR1cC10aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBmYTFiZjhkMWJmMTBhZTBiZjQ4
NWE2ZmFmZWVkZDA0NDkzMGY4MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci1zdGFydHVwLXRpbWUuaHRtbApAQCAtMCwwICsxLDU3IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG9ubG9hZCgpCit7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRpbWVzID0gW107Cisg
ICAgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICB0ZXN0U3RhcnRUaW1lID0gc3RhcnRUaW1l
OworICAgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gaW5zcGVjdG9ySXNSZWFkeSgpCit7Cisg
ICAgdGltZXMucHVzaChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKTsKKyAgICBpZiAoRGF0ZS5ub3co
KSAtIHRlc3RTdGFydFRpbWUgPiAyMDAwMCkgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDIsICJJbnNwZWN0b3JUZXN0LmR1bXBUZXN0U3RhdHMo
J2luc3BlY3Rvci1zdGFydHVwLXRpbWUnLCAndGltZScsICIgKyBKU09OLnN0cmluZ2lmeSh0aW1l
cykgKyAiLCAnbXMnKSIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5X
ZWJJbnNwZWN0b3IoMywgIihJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpKSIpCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0
b3IoKTsKKyAgICBzdGFydFRpbWUgPSBEYXRlLm5vdygpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5fc2V0RG9jdW1lbnQobnVsbCk7CisK
KyAgICBJbnNwZWN0b3JUZXN0LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIoRE9NQWdlbnQsICJy
ZXF1ZXN0Q2hpbGROb2RlcyIsIGZ1bmN0aW9uKCkgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MubGFzdEFjdGl2ZVBhbmVsLnNldCgiYXVkaXRzIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImluc3BlY3RvcklzUmVhZHkoKSIpOworICAgIH0pOworICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7Cit9CisKKzwvc2NyaXB0PgorCis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0cy5odG1sIGIvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVzdHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YzYyNmJkMjlmNmU3ZTQ2ODFlZjZiNTdiNzA5ZjAzNzQ3YmM2NmFjCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmV0d29yay1hcHBlbmQtMzAtcmVxdWVz
dHMuaHRtbApAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKK3sKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJMLCB0cnVlKTsK
KyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKKworICAgIHZhciBvcmlnaW5hbFJl
ZnJlc2ggPSBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5fbmV0d29ya0xvZ1ZpZXcsICJyZWZyZXNoIiwgdGltZVRyYWNraW5nUmVmcmVzaCwgdHJ1ZSk7
CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldy5fZGVmYXVs
dFJlZnJlc2hEZWxheSA9IDMwOworICAgIGZ1bmN0aW9uIHRpbWVUcmFja2luZ1JlZnJlc2goKQor
ICAgIHsKKyAgICAgICAgdmFyIGNvb2tpZSA9IEluc3BlY3RvclRlc3QudGltZXIuc3RhcnQoIm5l
dHdvcmstYXBwZW5kLTMwLXJlcXVlc3RzIik7CisgICAgICAgIG9yaWdpbmFsUmVmcmVzaC5jYWxs
KHRoaXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLmZpbmlzaChjb29raWUpOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX25ldHdvcmtMb2dWaWV3Ll9yZXNldCgp
OworICAgICAgICAvLyBJbiByZWFsIGxpZmUgdGhpcyBhcnJheSBpcyBjbGVhbmluZyB1cCBhdCBu
YXZpZ2F0aW9uIGV2ZW50LgorICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5fcmVzb3Vy
Y2VzID0gW107CisgICAgICAgIEluc3BlY3RvclRlc3QudGltZXIuZG9uZSgicGFuZWwtdXBkYXRl
Iik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCh0aW1lcikKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygzMCkiKTsKKyAgICB9
CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCh0ZXN0LCAxNTAwMCk7Cit9
CisKK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgbWFrZVhIUlJlcXVlc3RzKDMwKTsKKyAgICB9LCAzMDAwKTsK
K30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL3Bl
cmZvcm1hbmNlLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5j
ZS10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZGU5ZDBjMmRmOWM4MDQwNWYyMmZiNTZmYTUwMjgyZDFm
MmM4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJm
b3JtYW5jZS10ZXN0LmpzCkBAIC0wLDAgKzEsMTI4IEBACit2YXIgaW5pdGlhbGl6ZV9UaW1lVHJh
Y2tlciA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdCA9
IGZ1bmN0aW9uKHBlcmZUZXN0LCBleGVjdXRlVGltZSwgY2FsbGJhY2spCit7CisgICAgdmFyIFRp
bWVyID0gZnVuY3Rpb24odGVzdCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9jYWxs
YmFjayA9IGNhbGxiYWNrOworICAgICAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICAgICAgdGhp
cy5fdGltZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fdGVzdFN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7
CisgICAgICAgIHRoaXMuX2hlYXBTaXplRGVsdGFzID0gW107CisgICAgICAgIHRoaXMuX2pzSGVh
cFNpemUgPSB0aGlzLl9nZXRKU0hlYXBTaXplKCk7CisgICAgfQorCisgICAgVGltZXIucHJvdG90
eXBlID0geworICAgICAgICBzdGFydDogZnVuY3Rpb24obmFtZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHtuYW1lOiBuYW1lLCBzdGFydFRpbWU6IG5ldyBEYXRlKCl9OworICAgICAg
ICB9LAorCisgICAgICAgIGZpbmlzaDogZnVuY3Rpb24oY29va2llKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgZW5kVGltZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBpZiAoIXRoaXMu
X3RpbWVzW2Nvb2tpZS5uYW1lXSkKKyAgICAgICAgICAgICAgICB0aGlzLl90aW1lc1tjb29raWUu
bmFtZV0gPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVzW2Nvb2tpZS5uYW1lXS5wdXNoKGVu
ZFRpbWUgLSBjb29raWUuc3RhcnRUaW1lKTsKKyAgICAgICAgfSwKKworICAgICAgICBfZ2V0SlNI
ZWFwU2l6ZTogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93Lmdj
KSB7CisgICAgICAgICAgICAgICAgd2luZG93LmdjKCk7CisgICAgICAgICAgICAgICAgd2luZG93
LmdjKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY29uc29sZS5tZW1vcnku
dXNlZEpTSGVhcFNpemU7CisgICAgICAgIH0sCisKKyAgICAgICAgZG9uZTogZnVuY3Rpb24oZ3Jv
dXBOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbmV3SlNIZWFwU2l6ZSA9IHRoaXMu
X2dldEpTSGVhcFNpemUoKTsKKyAgICAgICAgICAgIHRoaXMuX2hlYXBTaXplRGVsdGFzLnB1c2go
bmV3SlNIZWFwU2l6ZSAtIHRoaXMuX2pzSGVhcFNpemUpOworICAgICAgICAgICAgdGhpcy5fanNI
ZWFwU2l6ZSA9IG5ld0pTSGVhcFNpemU7CisKKyAgICAgICAgICAgIHZhciB0aW1lID0gbmV3IERh
dGUoKTsKKyAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5fdGVzdFN0YXJ0VGltZSA8IGV4ZWN1
dGVUaW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX3J1blRlc3QoKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0ZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMuX2R1bXAoZ3JvdXBOYW1lKTsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIF9y
dW5UZXN0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9ndWFy
ZCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5fcnVuVGVzdC5iaW5kKHRoaXMp
LCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHRoaXMuX2d1YXJkID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhciBzYWZlVGVzdCA9IEluc3Bl
Y3RvclRlc3Quc2FmZVdyYXAodGhpcy5fdGVzdCk7CisgICAgICAgICAgICBzYWZlVGVzdCh0aGlz
KTsKKyAgICAgICAgICAgIHRoaXMuX2d1YXJkID0gZmFsc2U7CisgICAgICAgIH0sCisKKyAgICAg
ICAgX2R1bXA6IGZ1bmN0aW9uKGdyb3VwTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
ICh2YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGltZXMpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgdGVzdE5hbWUsIHRoaXMuX3RpbWVzW3Rlc3RO
YW1lXSwgIm1zIik7CisKKyAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IuaW5zcGVj
dGVkUGFnZVVSTDsKKyAgICAgICAgICAgIHZhciByZWdFeHAgPSAvKFteXC9dKylcLmh0bWwvOwor
ICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSByZWdFeHAuZXhlYyh1cmwpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wVGVzdFN0YXRzKGdyb3VwTmFtZSwgImhlYXAtZGVsdGEtIiArIG1h
dGNoZXNbMV0sIHRoaXMuX2hlYXBTaXplRGVsdGFzLCAia0IiLCAxMDI0KTsKKyAgICAgICAgfSwK
KworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QudGltZXIgPSBuZXcgVGltZXIocGVyZlRlc3Qs
IGNhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRpbWVyLl9ydW5UZXN0KCk7Cit9CisKK0lu
c3BlY3RvclRlc3QubWFyayA9IGZ1bmN0aW9uKG1hcmtlck5hbWUpCit7CisgICAgdmFyIHRpbWVy
ID0gSW5zcGVjdG9yVGVzdC50aW1lcjsKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5sYXN0TWFya0Nvb2tpZSkKKyAgICAgICAgdGltZXIu
ZmluaXNoKEluc3BlY3RvclRlc3QubGFzdE1hcmtDb29raWUpOworCisgICAgSW5zcGVjdG9yVGVz
dC5sYXN0TWFya0Nvb2tpZSA9IG1hcmtlck5hbWUgPyB0aW1lci5zdGFydChtYXJrZXJOYW1lKSA6
IG51bGw7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFRlc3RTdGF0cyA9IGZ1bmN0aW9uKGdyb3Vw
TmFtZSwgdGVzdE5hbWUsIHNhbXBsZXMsIHVuaXRzLCBkaXZpZGVyKQoreworICAgIGRpdmlkZXIg
PSBkaXZpZGVyIHx8IDE7CisgICAgdmFyIHN0cmlwTlJlc3VsdHMgPSBNYXRoLmZsb29yKHNhbXBs
ZXMubGVuZ3RoIC8gMTApOworICAgIHNhbXBsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVy
biBhIC0gYjsgfSk7CisgICAgdmFyIHN1bSA9IDA7CisgICAgZm9yICh2YXIgaSA9IHN0cmlwTlJl
c3VsdHM7IGkgPCBzYW1wbGVzLmxlbmd0aCAtIHN0cmlwTlJlc3VsdHM7ICsraSkKKyAgICAgICAg
c3VtICs9IHNhbXBsZXNbaV07CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJFU1VMVCAi
ICsgZ3JvdXBOYW1lICsgJzogJyArIHRlc3ROYW1lICsgIj0gIiArIE1hdGguZmxvb3Ioc3VtIC8g
KHNhbXBsZXMubGVuZ3RoIC0gc3RyaXBOUmVzdWx0cyAqIDIpIC8gZGl2aWRlcikgKyAiICIgKyB1
bml0cyk7Cit9CisKK0luc3BlY3RvclRlc3QuYWRkQmFja2VuZFJlc3BvbnNlU25pZmZlciA9IGZ1
bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCit7CisgICAg
dmFyIG9yaWdpbmFsTWV0aG9kID0gSW5zcGVjdG9yVGVzdC5vdmVycmlkZShvYmplY3QsIG1ldGhv
ZE5hbWUsIGJhY2tlbmRDYWxsLCBvcHRfc3RpY2t5KTsKKyAgICBmdW5jdGlvbiBiYWNrZW5kQ2Fs
bCgpCisgICAgeworICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cyk7CisgICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0aCAmJiB0eXBl
b2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3MucG9wKCkgOiAw
OworICAgICAgICBhcmdzLnB1c2goZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsYmFjay5h
cHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkobnVsbCwg
YXJndW1lbnRzKTsKKyAgICAgICAgfSk7CisgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KG9i
amVjdCwgYXJncyk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L2luc3BlY3Rvci9zaG93LXBhbmVsLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9z
aG93LXBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAyYjZjYmQ3OWEzYzBjYWNkMThlMjMwMTViYWE3
ZTVlZTI5YTUzOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9y
L3Nob3ctcGFuZWwuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG1ha2VYSFJSZXF1ZXN0cyhjb3VudCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHhociA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB4aHIub3BlbigiR0VUIiwgZG9jdW1lbnQuVVJM
LCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKKyAgICB2YXIgZmls
ZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgIGlmIChmaWxlcy5vcHRpb25zW2ldLnZhbHVlLmluZGV4T2YoImluc3BlY3Rvci10ZXN0Lmpz
IikgIT09IC0xKSB7CisgICAgICAgICAgICAgZmlsZXMuc2VsZWN0ZWRJbmRleCA9IGk7CisgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxlc1NlbGVjdENoYW5nZWQo
KTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
cmVzb3VyY2VzTGFzdFNlbGVjdGVkSXRlbS5zZXQoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VV
UkwpOworCisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgibmV0d29yayIpOworICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VYSFJSZXF1ZXN0cygyMDApIiwgcnVuVGVzdCk7
CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
cnVuUGVyZm9ybWFuY2VUZXN0KHBlcmZUZXN0LCAxMDAwMCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcGVyZlRlc3QodGltZXIpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJhdWRpdHMiKTsKKyAgICAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIFdlYkluc3BlY3Rvci5w
YW5lbHMpIHsKKyAgICAgICAgICAgIHZhciB0aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzaG93
LXBhbmVsLSIgKyBwYW5lbE5hbWUpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5l
bChwYW5lbE5hbWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
bGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOyIpOworICAgICAgICAgICAgdGltZXIuZmlu
aXNoKHRpbWVyQ29va2llKTsKKyAgICAgICAgfQorICAgICAgICB0aW1lci5kb25lKCJwYW5lbC1z
d2l0Y2giKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48
ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+
PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PgorPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj4KKzxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rp
dj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
Cis8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgor
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pjxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzxk
aXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8ZGl2
PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9k
aXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>
<flag name="review"
          id="116877"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>