<?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>197333</bug_id>
          
          <creation_ts>2019-04-26 16:48:57 -0700</creation_ts>
          <short_desc>[WKTR] Move test timeout handling to the UIProcess</short_desc>
          <delta_ts>2019-04-29 10:55:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1530861</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-26 16:48:57 -0700</bug_when>
    <thetext>Move test timeout handling in WebKitTestRunner to the UIProcess to play nicely with PSON. Previous, we&apos;d start the timeout timer in the InjectedBundle, which would fail to account of the time spent in every WebContent process in the case of swapping.
Also, because of process caching, the timeout timer would sometime fire in a cached process and it would lead to crashes like so:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000740b0269e WTFCrash + 14 (Assertions.cpp:305)
1   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b629acd9 WTF::CrashOnOverflow::crash() + 9
2   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b629aca9 WTF::CrashOnOverflow::overflowed() + 9
3   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62ad16b WTF::Vector&lt;std::__1::unique_ptr&lt;WTR::InjectedBundlePage, std::__1::default_delete&lt;WTR::InjectedBundlePage&gt; &gt;, 0ul, WTF::CrashOnOverflow, 16ul&gt;::at(unsigned long) const + 75
4   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62a79dd WTF::Vector&lt;std::__1::unique_ptr&lt;WTR::InjectedBundlePage, std::__1::default_delete&lt;WTR::InjectedBundlePage&gt; &gt;, 0ul, WTF::CrashOnOverflow, 16ul&gt;::operator[](unsigned long) const + 29 (Vector.h:720)
5   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62a79ad WTR::InjectedBundle::page() const + 29 (InjectedBundle.cpp:168)
6   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62a80a6 WTR::InjectedBundle::outputText(WTF::String const&amp;) + 150 (InjectedBundle.cpp:617)
7   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62d9158 WTR::TestRunner::waitToDumpWatchdogTimerFired() + 184 (TestRunner.cpp:192)
8   com.apple.WebKitTestRunner.InjectedBundle	0x00000001b62f1a55 WTR::waitUntilDoneWatchdogTimerFired(__CFRunLoopTimer*, void*) + 37 (TestRunnerMac.mm:51)
9   com.apple.CoreFoundation      	0x00007fff44e8a9e5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
10  com.apple.CoreFoundation      	0x00007fff44e8a59f __CFRunLoopDoTimer + 859
11  com.apple.CoreFoundation      	0x00007fff44e89fc5 __CFRunLoopDoTimers + 317
12  com.apple.CoreFoundation      	0x00007fff44e6b2bb __CFRunLoopRun + 2213
13  com.apple.CoreFoundation      	0x00007fff44e6a791 CFRunLoopRunSpecific + 499
14  com.apple.Foundation          	0x00007fff474b7fa3 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
15  com.apple.Foundation          	0x00007fff474b7ebc -[NSRunLoop(NSRunLoop) run] + 76
16  libxpc.dylib                  	0x00007fff7b677bca _xpc_objc_main.cold.4 + 38
17  libxpc.dylib                  	0x00007fff7b66abb9 _xpc_objc_main + 470
18  libxpc.dylib                  	0x00007fff7b66a72d xpc_main + 377
19  com.apple.WebKit              	0x00000007206add2a WebKit::XPCServiceMain(int, char const**) + 1322 (XPCServiceMain.mm:147)
20  com.apple.WebKit              	0x00000007204e3ecb WKXPCServiceMain + 27 (WKMain.mm:34)
21  com.apple.WebKit.WebContent   	0x000000010658defe main + 94 (AuxiliaryProcessMain.cpp:32)
22  libdyld.dylib                 	0x00007fff7b4201b1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530867</commentid>
    <comment_count>1</comment_count>
      <attachid>368366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-26 16:51:01 -0700</bug_when>
    <thetext>Created attachment 368366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530869</commentid>
    <comment_count>2</comment_count>
      <attachid>368367</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-26 16:53:05 -0700</bug_when>
    <thetext>Created attachment 368367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531007</commentid>
    <comment_count>3</comment_count>
      <attachid>368367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-27 15:45:44 -0700</bug_when>
    <thetext>Comment on attachment 368367
Patch

Clearing flags on attachment: 368367

Committed r244723: &lt;https://trac.webkit.org/changeset/244723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531008</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-27 15:45:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531009</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-27 15:48:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/50273711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531177</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-04-29 09:59:44 -0700</bug_when>
    <thetext>I think with PSON changes, something like this makes sense. It&apos;s probably a performance win for layout tests, but I don&apos;t have the numbers to back up that claim.

Although, I must question what made you think to do this, because I would have expected that the timeouts a level up (in run-webkit-tests) would have caught most of these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531191</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-29 10:55:27 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #6)
&gt; I think with PSON changes, something like this makes sense. It&apos;s probably a
&gt; performance win for layout tests, but I don&apos;t have the numbers to back up
&gt; that claim.
&gt; 
&gt; Although, I must question what made you think to do this, because I would
&gt; have expected that the timeouts a level up (in run-webkit-tests) would have
&gt; caught most of these cases.

The crashes above when I run the layout tests locally is what pushed to me fix this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368366</attachid>
            <date>2019-04-26 16:51:01 -0700</date>
            <delta_ts>2019-04-26 16:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197333-20190426165100.patch</filename>
            <type>text/plain</type>
            <size>17819</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGRlMzdkYTkzOTg1YzYzMGY2MDZjMmI1M2ViNjQyN2Jk
ODMxZmQ5My4uZWVhYjNlYzNmYTQyMmU3ODgxZWFlYzAzMTZkMDUzOTBkZTkyNWZkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDE5LTA0LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dLVFJdIE1vdmUgdGVzdCB0aW1lb3V0IGhhbmRsaW5nIHRvIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzMzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGVzdCB0
aW1lb3V0IGhhbmRsaW5nIGluIFdlYktpdFRlc3RSdW5uZXIgdG8gdGhlIFVJUHJvY2VzcyB0byBw
bGF5IG5pY2VseSB3aXRoIFBTT04uIFByZXZpb3VzbHksCisgICAgICAgIHdlJ2Qgc3RhcnQgdGhl
IHRpbWVvdXQgdGltZXIgaW4gdGhlIEluamVjdGVkQnVuZGxlLCB3aGljaCB3b3VsZCBmYWlsIHRv
IGFjY291bnQgb2YgdGhlIHRpbWUgc3BlbnQgaW4KKyAgICAgICAgZXZlcnkgV2ViQ29udGVudCBw
cm9jZXNzIGluIHRoZSBjYXNlIG9mIHN3YXBwaW5nLgorCisgICAgICAgIEFsc28sIGJlY2F1c2Ug
b2YgcHJvY2VzcyBjYWNoaW5nLCB0aGUgdGltZW91dCB0aW1lciB3b3VsZCBzb21ldGltZSBmaXJl
IGluIGEgY2FjaGVkIHByb2Nlc3MgYW5kIGl0CisgICAgICAgIHdvdWxkIGxlYWQgdG8gY3Jhc2hl
cyB3aGVuIGZpcmluZyB0aGUgdGltZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNob3VsZER1
bXBQaXhlbHMgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIp
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c2V0V2FpdFVudGlsRG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dwZS9UZXN0UnVu
bmVyV1BFLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNyZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCk6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXIpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6d2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpzZXRXYWl0VW50aWxEb25l
KToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRvbmUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAxOS0wNC0yNSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM0MzMw
KTogMyBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9jb21wb3NpdGluZyB0ZXN0cyBhcmUgZmxha3kg
ZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYjgzOTdjZjZlMzU1NTNiNjEyM2U1ZTUzYTA2
MjAxMmMwZDI1MzIyMy4uMzFkM2I5NzBlYWNlNmUyODUwMjkzZTRlMmU2OTc0MGJmOTFkNzNhZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKQEAgLTIwOCw5ICsyMDgsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgbQogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFBpeGVsc0tleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBQaXhlbHMiKSk7CiAgICAg
ICAgIG1fZHVtcFBpeGVscyA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGR1
bXBQaXhlbHNLZXkuZ2V0KCkpKSk7CiAKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIiKSk7Ci0gICAgICAgIG1f
dXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcktleS5nZXQoKSkpKTsKLQogICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZW91dEtleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbWVvdXQiKSk7CiAgICAgICAgIG1fdGltZW91dCA9IFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMoV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJ
bnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IHRpbWVvdXRLZXkuZ2V0KCkpKSkpOwogCkBAIC01NDMsOCArNTQwLDYgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZG9uZSgpCiAgICAgcGFnZSgpLT5zdG9wTG9hZGluZygpOwogICAgIHNldFRvcExv
YWRpbmdGcmFtZSgwKTsKIAotICAgIG1fdGVzdFJ1bm5lci0+aW52YWxpZGF0ZVdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyKCk7Ci0KICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbV9hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci0+cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggZTM4N2UzZDJjYzJmM2M3NTA1ZjQwYzZiOTY4YjkxYTUwZmNmNzRlZi4uMjY5
MjdkMjFhNDcwNzNmMmI4ODBlZDRjZDE2OGQ3YWMzMTQ4ZDk5MCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
ODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BMb2FkaW5nRnJhbWUoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSkgeyBtX3RvcExvYWRpbmdGcmFtZSA9IGZyYW1lOyB9CiAKICAgICBi
b29sIHNob3VsZER1bXBQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KLSAg
ICBib29sIHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2VX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsgfQogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnI7IH07CiAKICAg
ICB2b2lkIG91dHB1dFRleHQoY29uc3QgU3RyaW5nJik7CkBAIC0xOTQsNyArMTkzLDYgQEAgcHJp
dmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgSWRsZSB9OwogCiAgICAgYm9vbCBtX2R1bXBQaXhl
bHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lciB7IHRy
dWUgfTsKICAgICBib29sIG1fdXNlV29ya1F1ZXVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGl4
ZWxSZXN1bHRJc1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTljYzI3YzIzNjQ5MWJiZjJkMzRlZjJh
MjUwZGI2NmRkMmIxMTU3Ni4uMDRlYjcwY2Y5NzQxNDk5N2QxM2FiYzVmNmY1YjA3YjU5MTE1MWQ3
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC02Niw5ICs2Niw2IEBAIFJlZjxUZXN0UnVubmVyPiBUZXN0UnVubmVy
OjpjcmVhdGUoKQogCiBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICA6IG1fdXNlclN0eWxl
U2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSkp
Ci0jaWYgIVBMQVRGT1JNKENPQ09BKQotICAgICwgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1l
ckZpcmVkKQotI2VuZGlmCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9CkBAIC0xNjEs
MTYgKzE1OCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUoKQogICAgIFJFTEVB
U0VfQVNTRVJUKGluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSk7CiAKICAgICBzZXRXYWl0
VW50aWxEb25lKHRydWUpOwotICAgIC8vIEZJWE1FOiBXYXRjaGRvZyB0aW1lciBzaG91bGQgYmUg
bW92ZWQgdG8gVUkgcHJvY2VzcyBpbiBvcmRlciB0byB0YWtlIHRoZSBlbGFwc2VkIHRpbWUgaW4g
YW5vdGVociBwcm9jZXNzIGludG8gYWNjb3VudC4KLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudXNl
V2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSkKLSAgICAgICAgaW5pdGlhbGl6ZVdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRXYWl0VW50
aWxEb25lKGJvb2wgdmFsdWUpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdhaXRV
bnRpbERvbmUiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0V2FpdFVudGlsRG9uZSIp
KTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCiBib29sIFRlc3RS
dW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdApAQCAtMTgyLDE5ICsxNzYsNiBAQCBi
b29sIFRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdAogICAgIHJldHVybiBX
S0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJu
RGF0YSkpLmdldCgpKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lckZpcmVkKCkKLXsKLSAgICBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKTsK
LSAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgICBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiI1BJRCBVTlJFU1BPTlNJVkUgLSAlcyAocGlkICVk
KVxuIiwgZ2V0cHJvZ25hbWUoKSwgZ2V0cGlkKCkpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQoYnVmZmVyKTsKLSNlbmRpZgotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoIkZB
SUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuXG4iKTsK
LSAgICBpbmplY3RlZEJ1bmRsZS5kb25lKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5
RG9uZSgpCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IGM3MmJlMTgwNGE2Y2ZhNTNkOTQ2MGIzNWZlZTE0OWMzNDk3Mjky
MjguLjk0NzNjYmVjYjExMGExMzVmOGFkZjA1OTRmNTYzNGEwZTdlOTViOGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0y
MzMsOCArMjMzLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKTsKIAogICAgIGJvb2wgc2hvdWxkV2FpdFVu
dGlsRG9uZSgpIGNvbnN0OwotICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgp
OwotICAgIHZvaWQgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCk7CiAKICAgICAv
LyBEb3dubG9hZHMKICAgICBib29sIHNob3VsZEZpbmlzaEFmdGVyRG93bmxvYWQoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZEZpbmlzaEFmdGVyRG93bmxvYWQ7IH0KQEAgLTUxMiw3ICs1MTAsNiBA
QCBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRl
ZCgpOwogCiAgICAgdm9pZCBzZXREdW1wUGl4ZWxzKGJvb2wpOwogICAgIHZvaWQgc2V0V2FpdFVu
dGlsRG9uZShib29sKTsKQEAgLTUyNyw4ICs1MjQsNiBAQCBwcml2YXRlOgogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAgICAgV0tSZXRhaW5Q
dHI8V0tBcnJheVJlZj4gbV9hbGxvd2VkSG9zdHM7CiAKLSAgICBQbGF0Zm9ybVRpbWVyUmVmIG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7Ci0KICAgICBkb3VibGUgbV9kYXRhYmFzZURlZmF1bHRR
dW90YSB7IC0xIH07CiAgICAgZG91YmxlIG1fZGF0YWJhc2VNYXhRdW90YSB7IC0xIH07CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL1Rlc3RS
dW5uZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggMTBjOTk5ZjQ1ODU4YzViN2U4OTExZjI5ZWM5YWQ4M2Y5
M2M4MjZlZi4uODFiMjE1ODhiODVjY2QwZjA2OTNiNTM2ODY1NDQ5YmJmNDkzYWY0NiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5l
ckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAKQEAgLTM5LDE5ICszOSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cGxh
dGZvcm1Jbml0aWFsaXplKCkKIHsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjppbnZhbGlkYXRlV2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIoKQotewotICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIu
c3RvcCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hk
b2dUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBpZiAobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOwotfQotCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0cmluZ1JlZiB1cmwpCiB7CiAg
ICAgc2l6ZV90IHVybFNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodXJs
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGEzYmU2NzhhNTIwZGYzMmEyMmI1OWVjYmE3MDIw
OTU1NmUyNWQ0YzIuLjA0ODZkYzg2Njg3OTg4MGUxMDFmNWE5ZGQ1YzYwYzgwOTU4ODBlOWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMzYsMzAgKzM2LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpw
bGF0Zm9ybUluaXRpYWxpemUoKQogewogfQogCi12b2lkIFRlc3RSdW5uZXI6OmludmFsaWRhdGVX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCi17Ci0gICAgaWYgKCFtX3dhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUo
bV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5nZXQoKSk7Ci0gICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lciA9IG51bGxwdHI7Ci19Ci0KLXN0YXRpYyB2b2lkIHdhaXRVbnRpbERvbmVXYXRjaGRv
Z1RpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQqIGluZm8pCi17Ci0gICAg
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnRlc3RSdW5uZXIoKS0+d2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXJGaXJlZCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBpZiAobV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwg
PSBtX3RpbWVvdXQuc2Vjb25kcygpOwotICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBh
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWwsIDAsIDAsIDAsIFdUUjo6d2FpdFVudGlsRG9u
ZVdhdGNoZG9nVGltZXJGaXJlZCwgTlVMTCkpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5nZXQoKSwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5u
ZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJpbmdSZWYgdXJsKQogewogICAgIHJldHVybiBK
U1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9uIG1hYy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKaW5kZXggMjVmYmZmNWFmYWIxMTBlZDdkNzQ5ODA5N2I0NTU3ZWJlMmNlYzE2NC4uNzkz
YjU5YjgyNTBhYmY5YWE1NTMxZGM2Y2IzODc5Zjg4MzMyMjU4ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKQEAgLTQwLDIxICs0MCwxMCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1
bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiIik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6aW52YWxpZGF0ZVdhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyKCkKLXsKLSAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0
b3AoKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVl
ZGVkKCkKLXsKLSAgICBpZiAoIW1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0
KTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjppbnN0YWxsRmFrZUhlbHZldGljYShKU1N0cmluZ1Jl
ZiBjb25maWd1cmF0aW9uKQogewogICAgIFdUUjo6aW5zdGFsbEZha2VIZWx2ZXRpY2EodG9XSyhj
b25maWd1cmF0aW9uKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dwZS9UZXN0UnVubmVyV1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJXUEUuY3BwCmluZGV4IDI1ZmJmZjVh
ZmFiMTEwZWQ3ZDc0OTgwOTdiNDU1N2ViZTJjZWMxNjQuLjc5M2I1OWI4MjUwYWJmOWFhNTUzMWRj
NmNiMzg3OWY4ODMzMjI1OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJXUEUuY3BwCkBAIC00MCwyMSArNDAs
MTAgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RT
dHViVVJMKCkKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6OmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigp
Ci17Ci0gICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci19Ci0KIHZvaWQgVGVz
dFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpp
bml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFt
X3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fd2FpdFRvRHVt
cFdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7Ci19Ci0KIHZvaWQgVGVzdFJ1
bm5lcjo6aW5zdGFsbEZha2VIZWx2ZXRpY2EoSlNTdHJpbmdSZWYgY29uZmlndXJhdGlvbikKIHsK
ICAgICBXVFI6Omluc3RhbGxGYWtlSGVsdmV0aWNhKHRvV0soY29uZmlndXJhdGlvbikuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2ZmZhYjNh
YWExZDVjOWE5NzhkMzc2YjAxOGQ1OGMxZGRjNmJmMDliLi41Yzk2ZTgzMmE2ZDVlOTNmNDE3NWE2
NDgyY2E5ODkxYWIzZmU1OGNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2UgV1RSIHsKIFRlc3RJbnZvY2F0aW9u
OjpUZXN0SW52b2NhdGlvbihXS1VSTFJlZiB1cmwsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
KQogICAgIDogbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3dh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRlc3RJbnZvY2F0
aW9uOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQogewogICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyhtX3VybC5nZXQo
KSkpOwogCkBAIC0xMzgsMTAgKzEzOSw2IEBAIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+IFRlc3RJbnZvY2F0aW9uOjpjcmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5CiAgICAg
V0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBkdW1wUGl4ZWxzVmFsdWUgPSBhZG9wdFdLKFdLQm9v
bGVhbkNyZWF0ZShtX2R1bXBQaXhlbHMpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2lu
VGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wUGl4ZWxzS2V5LmdldCgpLCBkdW1wUGl4ZWxzVmFs
dWUuZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
VXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tCb29sZWFu
UmVmPiB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lclZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnVzZVdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5Lmdl
dCgpLCB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcktleS5nZXQoKSwgdXNlV2FpdFRvRHVtcFdh
dGNoZG9nVGltZXJWYWx1ZS5nZXQoKSk7Ci0KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dGltZW91dEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbWVv
dXQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHRpbWVvdXRWYWx1ZSA9IGFkb3B0
V0soV0tVSW50NjRDcmVhdGUobV90aW1lb3V0Lm1pbGxpc2Vjb25kcygpKSk7CiAgICAgV0tEaWN0
aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgdGltZW91dEtleS5nZXQo
KSwgdGltZW91dFZhbHVlLmdldCgpKTsKQEAgLTM1Nyw4ICszNTQsNyBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZQogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9SZXN1bHRL
ZXkgPSAgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXVkaW9SZXN1bHQi
KSk7CiAgICAgICAgIG1fYXVkaW9SZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBhdWRpb1Jlc3VsdEtl
eS5nZXQoKSkpOwogCi0gICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm5vdGlmeURvbmUoKTsKKyAgICAgICAgZG9uZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzIsNyArODI4LDcgQEAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEIKIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU2V0V2FpdFVudGlsRG9uZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwotICAgICAgICBtX3dh
aXRVbnRpbERvbmUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihXS0Jvb2xlYW5HZXRWYWx1
ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICBzZXRX
YWl0VW50aWxEb25lKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KFdLQm9vbGVhbkdldFZhbHVl
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpKSkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJHZXRXYWl0VW50aWxEb25lIikpCkBAIC0xODI5LDQgKzE4MjUsNDYgQEAg
dm9pZCBUZXN0SW52b2NhdGlvbjo6cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKQogICAgIFdLUGFn
ZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQg
VGVzdEludm9jYXRpb246OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVk
KCkKK3sKKyAgICBpZiAobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hv
dChtX3RpbWVvdXQpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZhbGlkYXRlV2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuc3Rv
cCgpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZp
cmVkKCkKK3sKKyAgICBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKTsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGNoYXIgYnVmZmVyWzEwMjRdOworICAgIHNucHJpbnRmKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIjUElEIFVOUkVTUE9OU0lWRSAtICVzIChwaWQgJWQpXG4i
LCBnZXRwcm9nbmFtZSgpLCBnZXRwaWQoKSk7CisgICAgb3V0cHV0VGV4dChidWZmZXIpOworI2Vu
ZGlmCisgICAgb3V0cHV0VGV4dCgiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURv
bmUgdG8gYmUgY2FsbGVkXG5cbiIpOworICAgIGRvbmUoKTsKK30KKwordm9pZCBUZXN0SW52b2Nh
dGlvbjo6c2V0V2FpdFVudGlsRG9uZShib29sIHdhaXRVbnRpbERvbmUpCit7CisgICAgbV93YWl0
VW50aWxEb25lID0gd2FpdFVudGlsRG9uZTsKKyAgICBpZiAod2FpdFVudGlsRG9uZSAmJiBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkudXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSkKKyAg
ICAgICAgaW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKK30KKwor
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZG9uZSgpCit7CisgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0
cnVlOworICAgIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDlkM2NmMmZjZmZmZmEyM2Vk
ZDQ0YzA4MDA3MTdmNjk1YmQ2OTQ0OTcuLmMxYThiNjQzYmI2MjcyMDM0MTlkMGVjZWFhY2YwMGFm
OGRiYTVlNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIApAQCAtOTMsNiArOTQsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVUZXN0U2V0dGluZ3NEaWN0
aW9uYXJ5KCk7CiAKKyAgICB2b2lkIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCk7CisgICAg
dm9pZCBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKTsKKworICAgIHZvaWQgZG9u
ZSgpOworICAgIHZvaWQgc2V0V2FpdFVudGlsRG9uZShib29sKTsKKwogICAgIHZvaWQgZHVtcFJl
c3VsdHMoKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwg
Y29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAg
ICAgZW51bSBjbGFzcyBTbmFwc2hvdFJlc3VsdFR5cGUgeyBXZWJWaWV3LCBXZWJDb250ZW50cyB9
OwpAQCAtMTE5LDYgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fdXJsU3RyaW5nOworICAgIFJ1bkxvb3A6
OlRpbWVyPFRlc3RJbnZvY2F0aW9uPiBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOwogCiAgICAg
c3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368367</attachid>
            <date>2019-04-26 16:53:05 -0700</date>
            <delta_ts>2019-04-27 15:45:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197333-20190426165305.patch</filename>
            <type>text/plain</type>
            <size>18239</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGRlMzdkYTkzOTg1YzYzMGY2MDZjMmI1M2ViNjQyN2Jk
ODMxZmQ5My4uZWVhYjNlYzNmYTQyMmU3ODgxZWFlYzAzMTZkMDUzOTBkZTkyNWZkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDE5LTA0LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dLVFJdIE1vdmUgdGVzdCB0aW1lb3V0IGhhbmRsaW5nIHRvIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzMzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGVzdCB0
aW1lb3V0IGhhbmRsaW5nIGluIFdlYktpdFRlc3RSdW5uZXIgdG8gdGhlIFVJUHJvY2VzcyB0byBw
bGF5IG5pY2VseSB3aXRoIFBTT04uIFByZXZpb3VzbHksCisgICAgICAgIHdlJ2Qgc3RhcnQgdGhl
IHRpbWVvdXQgdGltZXIgaW4gdGhlIEluamVjdGVkQnVuZGxlLCB3aGljaCB3b3VsZCBmYWlsIHRv
IGFjY291bnQgb2YgdGhlIHRpbWUgc3BlbnQgaW4KKyAgICAgICAgZXZlcnkgV2ViQ29udGVudCBw
cm9jZXNzIGluIHRoZSBjYXNlIG9mIHN3YXBwaW5nLgorCisgICAgICAgIEFsc28sIGJlY2F1c2Ug
b2YgcHJvY2VzcyBjYWNoaW5nLCB0aGUgdGltZW91dCB0aW1lciB3b3VsZCBzb21ldGltZSBmaXJl
IGluIGEgY2FjaGVkIHByb2Nlc3MgYW5kIGl0CisgICAgICAgIHdvdWxkIGxlYWQgdG8gY3Jhc2hl
cyB3aGVuIGZpcmluZyB0aGUgdGltZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRvbmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNob3VsZER1
bXBQaXhlbHMgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIp
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c2V0V2FpdFVudGlsRG9uZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dwZS9UZXN0UnVu
bmVyV1BFLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNyZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCk6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXIpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6d2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpzZXRXYWl0VW50aWxEb25l
KToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRvbmUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAxOS0wNC0yNSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM0MzMw
KTogMyBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9jb21wb3NpdGluZyB0ZXN0cyBhcmUgZmxha3kg
ZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYjgzOTdjZjZlMzU1NTNiNjEyM2U1ZTUzYTA2
MjAxMmMwZDI1MzIyMy4uMzFkM2I5NzBlYWNlNmUyODUwMjkzZTRlMmU2OTc0MGJmOTFkNzNhZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKQEAgLTIwOCw5ICsyMDgsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgbQogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFBpeGVsc0tleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBQaXhlbHMiKSk7CiAgICAg
ICAgIG1fZHVtcFBpeGVscyA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGR1
bXBQaXhlbHNLZXkuZ2V0KCkpKSk7CiAKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIiKSk7Ci0gICAgICAgIG1f
dXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcktleS5nZXQoKSkpKTsKLQogICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZW91dEtleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbWVvdXQiKSk7CiAgICAgICAgIG1fdGltZW91dCA9IFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMoV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJ
bnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IHRpbWVvdXRLZXkuZ2V0KCkpKSkpOwogCkBAIC01NDMsOCArNTQwLDYgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZG9uZSgpCiAgICAgcGFnZSgpLT5zdG9wTG9hZGluZygpOwogICAgIHNldFRvcExv
YWRpbmdGcmFtZSgwKTsKIAotICAgIG1fdGVzdFJ1bm5lci0+aW52YWxpZGF0ZVdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyKCk7Ci0KICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgbV9hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci0+cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggZTM4N2UzZDJjYzJmM2M3NTA1ZjQwYzZiOTY4YjkxYTUwZmNmNzRlZi4uMjY5
MjdkMjFhNDcwNzNmMmI4ODBlZDRjZDE2OGQ3YWMzMTQ4ZDk5MCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
ODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BMb2FkaW5nRnJhbWUoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSkgeyBtX3RvcExvYWRpbmdGcmFtZSA9IGZyYW1lOyB9CiAKICAgICBi
b29sIHNob3VsZER1bXBQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KLSAg
ICBib29sIHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2VX
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsgfQogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnI7IH07CiAKICAg
ICB2b2lkIG91dHB1dFRleHQoY29uc3QgU3RyaW5nJik7CkBAIC0xOTQsNyArMTkzLDYgQEAgcHJp
dmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgSWRsZSB9OwogCiAgICAgYm9vbCBtX2R1bXBQaXhl
bHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lciB7IHRy
dWUgfTsKICAgICBib29sIG1fdXNlV29ya1F1ZXVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGl4
ZWxSZXN1bHRJc1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTljYzI3YzIzNjQ5MWJiZjJkMzRlZjJh
MjUwZGI2NmRkMmIxMTU3Ni4uMDRlYjcwY2Y5NzQxNDk5N2QxM2FiYzVmNmY1YjA3YjU5MTE1MWQ3
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC02Niw5ICs2Niw2IEBAIFJlZjxUZXN0UnVubmVyPiBUZXN0UnVubmVy
OjpjcmVhdGUoKQogCiBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICA6IG1fdXNlclN0eWxl
U2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSkp
Ci0jaWYgIVBMQVRGT1JNKENPQ09BKQotICAgICwgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1l
ckZpcmVkKQotI2VuZGlmCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9CkBAIC0xNjEs
MTYgKzE1OCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUoKQogICAgIFJFTEVB
U0VfQVNTRVJUKGluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSk7CiAKICAgICBzZXRXYWl0
VW50aWxEb25lKHRydWUpOwotICAgIC8vIEZJWE1FOiBXYXRjaGRvZyB0aW1lciBzaG91bGQgYmUg
bW92ZWQgdG8gVUkgcHJvY2VzcyBpbiBvcmRlciB0byB0YWtlIHRoZSBlbGFwc2VkIHRpbWUgaW4g
YW5vdGVociBwcm9jZXNzIGludG8gYWNjb3VudC4KLSAgICBpZiAoaW5qZWN0ZWRCdW5kbGUudXNl
V2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSkKLSAgICAgICAgaW5pdGlhbGl6ZVdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRXYWl0VW50
aWxEb25lKGJvb2wgdmFsdWUpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFdhaXRV
bnRpbERvbmUiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0V2FpdFVudGlsRG9uZSIp
KTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCiBib29sIFRlc3RS
dW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdApAQCAtMTgyLDE5ICsxNzYsNiBAQCBi
b29sIFRlc3RSdW5uZXI6OnNob3VsZFdhaXRVbnRpbERvbmUoKSBjb25zdAogICAgIHJldHVybiBX
S0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJu
RGF0YSkpLmdldCgpKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lckZpcmVkKCkKLXsKLSAgICBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKTsK
LSAgICBhdXRvJiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgICBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiI1BJRCBVTlJFU1BPTlNJVkUgLSAlcyAocGlkICVk
KVxuIiwgZ2V0cHJvZ25hbWUoKSwgZ2V0cGlkKCkpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1
dFRleHQoYnVmZmVyKTsKLSNlbmRpZgotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoIkZB
SUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuXG4iKTsK
LSAgICBpbmplY3RlZEJ1bmRsZS5kb25lKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5
RG9uZSgpCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IGM3MmJlMTgwNGE2Y2ZhNTNkOTQ2MGIzNWZlZTE0OWMzNDk3Mjky
MjguLjVlZTZiMDkwNjE2YzViOWZkYzdmOTEwNmU2NTU4Y2I4ODRmZTFlMmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0z
NiwxOCArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+Ci10eXBlZGVm
IFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gUGxhdGZvcm1UaW1lclJlZjsKLSNlbHNlCi0j
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLW5hbWVzcGFjZSBXVFIgewotY2xhc3MgVGVzdFJ1bm5l
cjsKLXR5cGVkZWYgUnVuTG9vcDo6VGltZXI8VGVzdFJ1bm5lcj4gUGxhdGZvcm1UaW1lclJlZjsK
LX0KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdFJ1bm5lciA6IHB1Ymxp
YyBKU1dyYXBwYWJsZSB7CkBAIC0yMzMsOCArMjIxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXJEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oKTsKIAog
ICAgIGJvb2wgc2hvdWxkV2FpdFVudGlsRG9uZSgpIGNvbnN0OwotICAgIHZvaWQgd2FpdFRvRHVt
cFdhdGNoZG9nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgaW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyKCk7CiAKICAgICAvLyBEb3dubG9hZHMKICAgICBib29sIHNob3VsZEZpbmlzaEFm
dGVyRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpbmlzaEFmdGVyRG93bmxvYWQ7
IH0KQEAgLTUxMiw3ICs0OTgsNiBAQCBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIAogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplV2FpdFRvRHVt
cFdhdGNoZG9nVGltZXJJZk5lZWRlZCgpOwogCiAgICAgdm9pZCBzZXREdW1wUGl4ZWxzKGJvb2wp
OwogICAgIHZvaWQgc2V0V2FpdFVudGlsRG9uZShib29sKTsKQEAgLTUyNyw4ICs1MTIsNiBAQCBw
cml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb247CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbV9hbGxvd2VkSG9zdHM7CiAKLSAg
ICBQbGF0Zm9ybVRpbWVyUmVmIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7Ci0KICAgICBkb3Vi
bGUgbV9kYXRhYmFzZURlZmF1bHRRdW90YSB7IC0xIH07CiAgICAgZG91YmxlIG1fZGF0YWJhc2VN
YXhRdW90YSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggMTBjOTk5ZjQ1ODU4
YzViN2U4OTExZjI5ZWM5YWQ4M2Y5M2M4MjZlZi4uODFiMjE1ODhiODVjY2QwZjA2OTNiNTM2ODY1
NDQ5YmJmNDkzYWY0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTM5LDE5ICszOSw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQotewotICAgIG1fd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIuc3RvcCgpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OmluaXRp
YWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBpZiAobV93YWl0
VG9EdW1wV2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOwotfQotCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShK
U1N0cmluZ1JlZiB1cmwpCiB7CiAgICAgc2l6ZV90IHVybFNpemUgPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUodXJsKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGEzYmU2Nzhh
NTIwZGYzMmEyMmI1OWVjYmE3MDIwOTU1NmUyNWQ0YzIuLjA0ODZkYzg2Njg3OTg4MGUxMDFmNWE5
ZGQ1YzYwYzgwOTU4ODBlOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMzYsMzAgKzM2LDYg
QEAgdm9pZCBUZXN0UnVubmVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogfQogCi12b2lkIFRl
c3RSdW5uZXI6OmludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCi17Ci0gICAgaWYg
KCFtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1
bkxvb3BUaW1lckludmFsaWRhdGUobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5nZXQoKSk7Ci0g
ICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lciA9IG51bGxwdHI7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdhaXRVbnRpbERvbmVXYXRjaGRvZ1RpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIs
IHZvaWQqIGluZm8pCi17Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnRlc3RSdW5u
ZXIoKS0+d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwotfQotCi12b2lkIFRlc3RSdW5u
ZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBp
ZiAobV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZU
aW1lSW50ZXJ2YWwgaW50ZXJ2YWwgPSBtX3RpbWVvdXQuc2Vjb25kcygpOwotICAgIG1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWwsIDAsIDAs
IDAsIFdUUjo6d2FpdFVudGlsRG9uZVdhdGNoZG9nVGltZXJGaXJlZCwgTlVMTCkpOwotICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLX0KLQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJpbmdSZWYg
dXJsKQogewogICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9u
IG1hYy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
d2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggMjVmYmZmNWFmYWIxMTBlZDdkNzQ5ODA5
N2I0NTU3ZWJlMmNlYzE2NC4uNzkzYjU5YjgyNTBhYmY5YWE1NTMxZGM2Y2IzODc5Zjg4MzMyMjU4
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4v
VGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTQwLDIxICs0MCwxMCBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQogICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIik7CiB9CiAKLXZvaWQgVGVzdFJ1
bm5lcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkKLXsKLSAgICBtX3dhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyLnN0b3AoKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpwbGF0Zm9y
bUluaXRpYWxpemUoKQogewogfQogCi12b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBpZiAoIW1fd2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5z
dGFydE9uZVNob3QobV90aW1lb3V0KTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjppbnN0YWxsRmFr
ZUhlbHZldGljYShKU1N0cmluZ1JlZiBjb25maWd1cmF0aW9uKQogewogICAgIFdUUjo6aW5zdGFs
bEZha2VIZWx2ZXRpY2EodG9XSyhjb25maWd1cmF0aW9uKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dwZS9UZXN0UnVubmVyV1BFLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJX
UEUuY3BwCmluZGV4IDI1ZmJmZjVhZmFiMTEwZWQ3ZDc0OTgwOTdiNDU1N2ViZTJjZWMxNjQuLjc5
M2I1OWI4MjUwYWJmOWFhNTUzMWRjNmNiMzg3OWY4ODMzMjI1OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJXUEUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL1Rlc3RSdW5uZXJX
UEUuY3BwCkBAIC00MCwyMSArNDAsMTAgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RS
dW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIiIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmludmFsaWRhdGVXYWl0
VG9EdW1wV2F0Y2hkb2dUaW1lcigpCi17Ci0gICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5z
dG9wKCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5l
ZWRlZCgpCi17Ci0gICAgaWYgKCFtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91
dCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbEZha2VIZWx2ZXRpY2EoSlNTdHJpbmdS
ZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBXVFI6Omluc3RhbGxGYWtlSGVsdmV0aWNhKHRvV0so
Y29uZmlndXJhdGlvbikuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCA2ZmZhYjNhYWExZDVjOWE5NzhkMzc2YjAxOGQ1OGMxZGRjNmJmMDliLi41
Yzk2ZTgzMmE2ZDVlOTNmNDE3NWE2NDgyY2E5ODkxYWIzZmU1OGNlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2Ug
V1RSIHsKIFRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihXS1VSTFJlZiB1cmwsIGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBt
X3VybCh1cmwpCisgICAgLCBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlRlc3RJbnZvY2F0aW9uOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJM
Q29weVN0cmluZyhtX3VybC5nZXQoKSkpOwogCkBAIC0xMzgsMTAgKzEzOSw2IEBAIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IFRlc3RJbnZvY2F0aW9uOjpjcmVhdGVUZXN0U2V0
dGluZ3NEaWN0aW9uYXJ5CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBkdW1wUGl4ZWxz
VmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBQaXhlbHMpKTsKICAgICBXS0Rp
Y3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wUGl4ZWxzS2V5
LmdldCgpLCBkdW1wUGl4ZWxzVmFsdWUuZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIiKSk7Ci0gICAg
V0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lclZhbHVl
ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnVz
ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJl
Z2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcktleS5n
ZXQoKSwgdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJWYWx1ZS5nZXQoKSk7Ci0KICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZW91dEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlRpbWVvdXQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+
IHRpbWVvdXRWYWx1ZSA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobV90aW1lb3V0Lm1pbGxpc2Vj
b25kcygpKSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5n
ZXQoKSwgdGltZW91dEtleS5nZXQoKSwgdGltZW91dFZhbHVlLmdldCgpKTsKQEAgLTM1Nyw4ICsz
NTQsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gYXVkaW9SZXN1bHRLZXkgPSAgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQXVkaW9SZXN1bHQiKSk7CiAgICAgICAgIG1fYXVkaW9SZXN1bHQgPSBzdGF0aWNf
Y2FzdDxXS0RhdGFSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBhdWRpb1Jlc3VsdEtleS5nZXQoKSkpOwogCi0gICAgICAgIG1fZ290RmluYWxNZXNz
YWdlID0gdHJ1ZTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgZG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzIs
NyArODI4LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKIAogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2FpdFVudGlsRG9uZSIpKSB7CiAg
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlw
ZUlEKCkpOwotICAgICAgICBtX3dhaXRVbnRpbERvbmUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VC
b2R5KSkpOworICAgICAgICBzZXRXYWl0VW50aWxEb25lKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJv
ZHkpKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXYWl0VW50aWxEb25lIikpCkBA
IC0xODI5LDQgKzE4MjUsNDYgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cGVyZm9ybUN1c3RvbU1l
bnVBY3Rpb24oKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmluaXRpYWxpemVXYWl0VG9EdW1w
V2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV93YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOworfQorCit2b2lkIFRlc3RJbnZvY2F0
aW9uOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIG1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIuc3RvcCgpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjp3YWl0
VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpbnZhbGlkYXRlV2FpdFRvRHVtcFdh
dGNoZG9nVGltZXIoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNoYXIgYnVmZmVyWzEw
MjRdOworICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIjUElEIFVOUkVTUE9O
U0lWRSAtICVzIChwaWQgJWQpXG4iLCBnZXRwcm9nbmFtZSgpLCBnZXRwaWQoKSk7CisgICAgb3V0
cHV0VGV4dChidWZmZXIpOworI2VuZGlmCisgICAgb3V0cHV0VGV4dCgiRkFJTDogVGltZWQgb3V0
IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkXG5cbiIpOworICAgIGRvbmUoKTsK
K30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6c2V0V2FpdFVudGlsRG9uZShib29sIHdhaXRVbnRp
bERvbmUpCit7CisgICAgbV93YWl0VW50aWxEb25lID0gd2FpdFVudGlsRG9uZTsKKyAgICBpZiAo
d2FpdFVudGlsRG9uZSAmJiBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkudXNlV2FpdFRvRHVt
cFdhdGNoZG9nVGltZXIoKSkKKyAgICAgICAgaW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVySWZOZWVkZWQoKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZG9uZSgpCit7CisgICAg
bV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOworICAgIGludmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hk
b2dUaW1lcigpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CisgICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmlu
ZGV4IDlkM2NmMmZjZmZmZmEyM2VkZDQ0YzA4MDA3MTdmNjk1YmQ2OTQ0OTcuLmMxYThiNjQzYmI2
MjcyMDM0MTlkMGVjZWFhY2YwMGFmOGRiYTVlNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtOTMsNiArOTQsMTMgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVUZXN0U2V0dGluZ3NEaWN0aW9uYXJ5KCk7CiAKKyAgICB2b2lkIHdhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dU
aW1lcklmTmVlZGVkKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXIoKTsKKworICAgIHZvaWQgZG9uZSgpOworICAgIHZvaWQgc2V0V2FpdFVudGlsRG9uZShib29s
KTsKKwogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0
IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBz
ZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgZW51bSBjbGFzcyBTbmFwc2hvdFJlc3VsdFR5cGUgeyBX
ZWJWaWV3LCBXZWJDb250ZW50cyB9OwpAQCAtMTE5LDYgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fdXJs
U3RyaW5nOworICAgIFJ1bkxvb3A6OlRpbWVyPFRlc3RJbnZvY2F0aW9uPiBtX3dhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyOwogCiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>