<?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>80042</bug_id>
          
          <creation_ts>2012-03-01 12:34:08 -0800</creation_ts>
          <short_desc>[WK2] run-perf-tests should be able to run with WTR</short_desc>
          <delta_ts>2012-03-12 08:31:22 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesus Sanchez-Palencia">jesus</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568822</commentid>
    <comment_count>0</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-03-01 12:34:08 -0800</bug_when>
    <thetext>We should be able to run the performance tests with WebKitTestRunner (WebKit 2) and, therefore, WKTR should  support the --no-timeout parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568879</commentid>
    <comment_count>1</comment_count>
      <attachid>129741</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-01 13:50:46 -0800</bug_when>
    <thetext>Created attachment 129741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568892</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-01 13:56:15 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=129741) [details]
&gt; Patch

This patch adds a necessary option to PerfTestRunner and does some small refactoring in WebKitTestRunner to avoid timing out, as required by perf tests.

I&apos;ve tested these changes on Gtk port with success. I&apos;ve applied the similar logic to the Qt port - it should work, but I haven&apos;t tested it.

I&apos;m unfamiliar with the ways Mac and Win ports set up the loops, so I&apos;ve left a FIXME note in those places. The code should build fine, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569714</commentid>
    <comment_count>3</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-03-02 09:40:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;ve tested these changes on Gtk port with success. I&apos;ve applied the similar logic to the Qt port - it should work, but I haven&apos;t tested it.

I&apos;m testing your patch with the Qt port and it works just fine. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569745</commentid>
    <comment_count>4</comment_count>
      <attachid>129741</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-02 10:26:34 -0800</bug_when>
    <thetext>Comment on attachment 129741
Patch

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

Looks fine, in general, but I have a few nits.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:129
&gt; +    bool m_useTimeoutWatchdog;

nit: m_useWaitToDumpWatchdogTimer?

&gt; Tools/WebKitTestRunner/TestController.cpp:546
&gt; -void TestController::runUntil(bool&amp; done, TimeoutDuration timeoutDuration)
&gt; +void TestController::runUntil(bool&amp; done, TimeoutDuration timeoutDuration, bool shouldTimeout)
&gt;  {
&gt; -    platformRunUntil(done, timeoutDuration == ShortTimeout ? m_shortTimeout : m_longTimeout);
&gt; +    platformRunUntil(done, timeoutDuration == ShortTimeout ? m_shortTimeout : m_longTimeout, shouldTimeout);

Instead of adding an extra parameter, perhaps it would be better to add another value to the enum so there is ShortTimeout, LongTimeout and NoTimeout.

&gt; Tools/WebKitTestRunner/TestController.h:74
&gt; +    void platformRunUntil(bool&amp; done, double timeout, bool shouldTimeout);

Instead of adding another parameter, perhaps you could just have a constant == -1 that signifies no timeout. Another option would be to add another calld platformRun that didn&apos;t timeout.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:153
&gt; +    WKRetainPtr&lt;WKStringRef&gt; useTimeoutWatchdogKey = adoptWK(WKStringCreateWithUTF8CString(&quot;UseTimeoutWatchdog&quot;));
&gt; +    WKRetainPtr&lt;WKBooleanRef&gt; useTimeoutWatchdogValue = adoptWK(WKBooleanCreate(TestController::shared().shouldTimeout()));
&gt; +    WKDictionaryAddItem(beginTestMessageBody.get(), useTimeoutWatchdogKey.get(), useTimeoutWatchdogValue.get());

Probably better to refer to this thing consistently ala useWaitToDumpWatchdogTimer.

&gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:56
&gt; +    // FIXME: No timeout should occur if shouldTimeout is false (necessary when running performance tests).

It seems quite possible to add support here.

&gt; Tools/WebKitTestRunner/win/TestControllerWin.cpp:175
&gt; +    // FIXME: No timeout should occur if shouldTimeout is false (necessary when running performance tests).

This one seems a bit more complicated, so if you don&apos;t add Windows support, be sure to open a bug for it and CC the appropriate people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570851</commentid>
    <comment_count>5</comment_count>
      <attachid>129741</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-05 11:04:15 -0800</bug_when>
    <thetext>Comment on attachment 129741
Patch

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

&gt;&gt; Tools/WebKitTestRunner/TestController.cpp:546
&gt;&gt; +    platformRunUntil(done, timeoutDuration == ShortTimeout ? m_shortTimeout : m_longTimeout, shouldTimeout);
&gt; 
&gt; Instead of adding an extra parameter, perhaps it would be better to add another value to the enum so there is ShortTimeout, LongTimeout and NoTimeout.

Noted.

&gt;&gt; Tools/WebKitTestRunner/TestController.h:74
&gt;&gt; +    void platformRunUntil(bool&amp; done, double timeout, bool shouldTimeout);
&gt; 
&gt; Instead of adding another parameter, perhaps you could just have a constant == -1 that signifies no timeout. Another option would be to add another calld platformRun that didn&apos;t timeout.

platformRun would probably introduce some code duplication, so I&apos;ll just use a negative constant to indicate no timeout and check for that.

&gt;&gt; Tools/WebKitTestRunner/TestInvocation.cpp:153
&gt;&gt; +    WKDictionaryAddItem(beginTestMessageBody.get(), useTimeoutWatchdogKey.get(), useTimeoutWatchdogValue.get());
&gt; 
&gt; Probably better to refer to this thing consistently ala useWaitToDumpWatchdogTimer.

I&apos;ll just put (u/U)seWaitToDumpWatchdogTimer everywhere - consistency at its best.

&gt;&gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:56
&gt;&gt; +    // FIXME: No timeout should occur if shouldTimeout is false (necessary when running performance tests).
&gt; 
&gt; It seems quite possible to add support here.

I&apos;m not familiar enough with Objective C or Cocoa to be comfortable making these changes. I can give it a shot, but I would rather open a bug for this problem, as you suggested doing for the Windows&apos; TestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570966</commentid>
    <comment_count>6</comment_count>
      <attachid>130183</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-05 12:51:19 -0800</bug_when>
    <thetext>Created attachment 130183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574930</commentid>
    <comment_count>7</comment_count>
      <attachid>130183</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-09 09:04:59 -0800</bug_when>
    <thetext>Comment on attachment 130183
Patch

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

&gt; Tools/WebKitTestRunner/TestController.cpp:558
&gt; +        timeout = -1.0;
&gt; +        break;
&gt; +    }

Sorry, I should have been a bit clearer in my review comment. I think it makes sense to have a constant, perhaps a static member variable like:

TestController:s_noTimeoutDuration = -1;

I can change this and land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575540</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-10 10:45:12 -0800</bug_when>
    <thetext>Committed r110382: &lt;http://trac.webkit.org/changeset/110382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575658</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-03-11 00:30:15 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r110382: &lt;http://trac.webkit.org/changeset/110382&gt;

Thanks for the small changes and landing.

Posted two new bugs for Mac and Win ports, #80780 and #80781.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129741</attachid>
            <date>2012-03-01 13:50:46 -0800</date>
            <delta_ts>2012-03-05 12:51:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80042-20120301225044.patch</filename>
            <type>text/plain</type>
            <size>16608</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIwNmRkNDExYTJkOWU3ZjZiMGRhNWMwMDViZmZmMWEx
Y2NmYzBjNC4uMzQ0MmEyNTMyOTNkNGY3MWMxM2FlZmY2OTVlMTdjNDBjMzU4MGM4OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDEyLTAzLTAxICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW1dLMl0gcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gcnVuIHdpdGgg
V1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
biBvcHRpb24gdG8gUGVyZlRlc3RSdW5uZXIgdG8gdXNlIFdlYktpdFRlc3RSdW5uZXIgaW5zdGVh
ZCBvZgorICAgICAgICBEdW1wUmVuZGVyVHJlZSBhbmQgYWRkIHRoZSAnLS1uby10aW1lb3V0JyBm
bGFnIHRvIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgdG8gYXZvaWQgdGltaW5nIG91dCB3aGVu
IHJ1bm5pbmcgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fcGFyc2VfYXJncyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpJbmplY3RlZEJ1bmRsZSk6IEluaXRpYWxpemUgbV91c2VUaW1lb3V0V2F0Y2hkb2cgdG8gdHJ1
ZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKTogVW5w
YWNrIHRoZSAnQmVnaW5UZXN0JyBtZXNzYWdlCisgICAgICAgIGFzIGEgZGljdGlvbmFyeSBjb250
YWluaW5nIER1bXBQaXhlbHMgYW5kIFVzZVRpbWVvdXRXYXRjaGRvZyBrZXlzLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnVzZVRpbWVvdXRXYXRjaGRvZyk6IE1ha2UgbV91c2VU
aW1lb3V0V2F0Y2hkb2cgcHVibGljbHkKKyAgICAgICAgYWNjZXNzaWJsZS4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRVbnRpbERvbmUpOiBPbmx5
IGluaXRpYWxpemUgdGhlIHdhdGNoZG9nIGlmIGl0CisgICAgICAgIGlzIHJlcXVpcmVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OlRlc3RDb250cm9sbGVyKTogSW5pdGlhbGl6ZSBtX25vVGltZW91dCB0byBmYWxzZS4KKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOiBTZXQgbV9ub1RpbWVvdXQg
dG8gdHJ1ZSBpZiAnLS1uby10aW1lb3V0JworICAgICAgICBvcHRpb24gaXMgcHJlc2VudC4KKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1blVudGlsKTogUGFzcyBhbG9uZyB0aGUgc2hv
dWxkVGltZW91dCBhcmd1bWVudC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzaG91bGRUaW1lb3V0KTog
SWYgLS1uby10aW1lb3V0IGlzIG5vdCBwcmVzZW50LCB0aW1lb3V0CisgICAgICAgIHNob3VsZCBv
Y2N1ciBpZiBuZWNlc3NhcnkuCisgICAgICAgIChUZXN0Q29udHJvbGxlcik6IEFkZCBzaG91bGRU
aW1lb3V0IHBhcmFtZXRlcnMgdG8gcnVuVW50aWwgYW5kIHBsYXRmb3JtUnVuVW50aWwsCisgICAg
ICAgIGRlZmF1bHRpbmcgdG8gdHJ1ZSBpbiBydW5VbnRpbC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
Omludm9rZSk6IFBhY2sgdGhlICdCZWdpblRlc3QnIG1lc3NhZ2UgYXMgYSBkaWN0aW9uYXJ5LAor
ICAgICAgICBjb250YWluaW5nIER1bXBQaXhlbHMgYW5kIFVzZVRpbWVvdXRXYXRjaGRvZyBrZXlz
IGFuZCBjb3JyZXNwb25kaW5nIHZhbHVlcy4KKyAgICAgICAgV2FpdGluZyBmb3IgZmluYWwgbWVz
c2FnZSBzaG91bGQgbm90IHRpbWUgb3V0IGlmIG5vdCBuZWNlc3NhcnkuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6IE9ubHkgc2V0IHVwIGEgdGltZW91dCBp
ZiBpdCBpcyBuZWNlc3NhcnkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29u
dHJvbGxlclF0LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVu
VW50aWwpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50
aWwpOiBBZGQgYSBGSVhNRSwgaW5kaWNhdGluZyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGlzIG1p
c3NpbmcuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6IERp
dHRvLgorCiAyMDEyLTAyLTI5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIG5lZWQgdG8gY2xvbmUgdGhlIGdwdSBiYXNlbGluZXMgYW5kIGV4cGVjdGF0aW9u
cyBpbnRvIHRoZSBuZXcgInZpcnR1YWwiIGRpcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQppbmRleCAx
ODk1MDBmNmEzNjhkMWNmNjJlMTNiYmFlNzNjZjBiNzZhZDZiM2ViLi4xYTAzZDYyNGJjNjc5OTIz
Y2NmNzM0ZDQ0NTNlOTI0YzU2NTY1MzIwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQpAQCAtOTks
NiArOTksOCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBoZWxwPSJQYXRoIHRvIGEgSlNPTiBmaWxlIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSBKU09OIGZp
bGUgd2hlbiAtLW91dHB1dC1qc29uLXBhdGggaXMgcHJlc2VudCIpLAogICAgICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tdGVzdC1yZXN1bHRzLXNlcnZlciIsCiAgICAgICAgICAgICAg
ICAgaGVscD0iVXBsb2FkIHRoZSBnZW5lcmF0ZWQgSlNPTiBmaWxlIHRvIHRoZSBzcGVjaWZpZWQg
c2VydmVyIHdoZW4gLS1vdXRwdXQtanNvbi1wYXRoIGlzIHByZXNlbnQiKSwKKyAgICAgICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdlYmtpdC10ZXN0LXJ1bm5lciIsICItMiIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgaGVscD0iVXNlIFdlYktpdFRlc3RSdW5u
ZXIgcmF0aGVyIHRoYW4gRHVtcFJlbmRlclRyZWUuIiksCiAgICAgICAgICAgICBdCiAKICAgICAg
ICAgb3B0aW9uX2xpc3QgPSAocGVyZl9vcHRpb25fbGlzdCArIHByaW50X29wdGlvbnMpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCmluZGV4IDRkYWFjNzQyNjM0NDczNTIwMGVkYjcxMTliYzhlZjRlNTgwNzM4ZWMu
LjU3N2VmMjQ5ODczYTBkNDQ1MGNlNmYzZWUwMDgzZTI3NWRjNDEyNDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC01MSw2ICs1MSw3IEBAIEluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSgpCiAg
ICAgLCBtX3RvcExvYWRpbmdGcmFtZSgwKQogICAgICwgbV9zdGF0ZShJZGxlKQogICAgICwgbV9k
dW1wUGl4ZWxzKGZhbHNlKQorICAgICwgbV91c2VUaW1lb3V0V2F0Y2hkb2codHJ1ZSkKIHsKIH0K
IApAQCAtMTMxLDggKzEzMiwxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZwogewogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQmVnaW5UZXN0Iikp
IHsKICAgICAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgICAgIG1fZHVt
cFBpeGVscyA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVz
c2FnZUJvZHkpKTsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdl
Qm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KTsKKworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFBpeGVsc0tleShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRHVtcFBpeGVscyIpKTsKKyAgICAg
ICAgbV9kdW1wUGl4ZWxzID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZHVt
cFBpeGVsc0tleS5nZXQoKSkpKTsKKworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dXNlVGltZW91dFdhdGNoZG9nS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJVc2VUaW1lb3V0V2F0Y2hkb2ciKSk7CisgICAgICAgIG1fdXNlVGltZW91dFdhdGNoZG9n
ID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdXNlVGltZW91dFdhdGNoZG9n
S2V5LmdldCgpKSkpOwogCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhY2tNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNrIikpOwog
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApp
bmRleCA4NjA0MWJkNjE0OTg4OTNhZmUwNTQwNWZkNDQwMTYzNzliMjczMWRlLi4xNjMxNjhmOTYx
NjMwNWEzMGY5NDI0YmYzOTBhODM4YzFjMWIwNGM5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC03Niw2ICs3
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcExvYWRpbmdGcmFtZShXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lKSB7IG1fdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7IH0KIAogICAgIGJvb2wgc2hv
dWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFBpeGVsczsgfQorICAgIGJvb2wg
dXNlVGltZW91dFdhdGNoZG9nKCkgY29uc3QgeyByZXR1cm4gbV91c2VUaW1lb3V0V2F0Y2hkb2c7
IH0KICAgICAKICAgICB2b2lkIHBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sKTsK
ICAgICB2b2lkIHBvc3RBZGRDaHJvbWVJbnB1dEZpZWxkKCk7CkBAIC0xMjUsNiArMTI2LDcgQEAg
cHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogCiAgICAgYm9vbCBtX2R1bXBQaXhlbHM7Cisg
ICAgYm9vbCBtX3VzZVRpbWVvdXRXYXRjaGRvZzsKIAogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VS
ZWY+IG1fcGl4ZWxSZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbV9yZXBhaW50
UmVjdHM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGE3OGU3NDExMjZhYmQxN2Yz
ZDQyMTQyNWI4MjE5M2QyMzA3NTI1N2EuLmE5NzYyMmQ3ZWYxYjBhZjI3NzU0ZjAyZmQzZDJlNjUz
MzM0ZjU0MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNTAsNyArMTUwLDgg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRVbnRpbERvbmUoKQogewogICAgIG1fd2FpdFRv
RHVtcCA9IHRydWU7Ci0gICAgaW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVk
ZWQoKTsKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnVzZVRpbWVvdXRXYXRjaGRv
ZygpKQorICAgICAgICBpbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCgp
OwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1l
ckZpcmVkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA3NGZjOTA4ZDc2NjllNjhkMjA5
OTg1MzdjZjgzZDcxZGEyMTE4OGM4Li40Yzk4ZDAzZjZmYzFlODljMTEyN2U0ZGQ5ODQ5M2M5ZWJh
NGVhY2Q4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0yMTcsNiArMjE3LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZHVtcFBpeGVsczsKICAgICBib29sIG1fZHVtcEZ1bGxTY3JlZW5D
YWxsYmFja3M7CiAgICAgYm9vbCBtX3dhaXRUb0R1bXA7IC8vIFRydWUgaWYgd2FpdFVudGlsRG9u
ZSgpIGhhcyBiZWVuIGNhbGxlZCwgYnV0IG5vdGlmeURvbmUoKSBoYXMgbm90IHlldCBiZWVuIGNh
bGxlZC4KKyAgICBib29sIG1fdXNlVGltZW91dFdhdGNoZG9nOwogICAgIGJvb2wgbV90ZXN0UmVw
YWludDsKICAgICBib29sIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAwMjYyYjUzMzEwN2U0Mzkw
YTg4OGI3MDVlYWQ3OTUwODMzODAyYThiLi4wYWFjMjcyMjc3M2E4ZTliZDU0ZTUwZjA4NjYyMmE5
OWZmNWQyOGMwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtNzIsNiArNzIsNyBAQCBUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICAsIG1fZG9uZVJlc2V0dGluZyhmYWxzZSkKICAgICAs
IG1fbG9uZ1RpbWVvdXQoZGVmYXVsdExvbmdUaW1lb3V0KQogICAgICwgbV9zaG9ydFRpbWVvdXQo
ZGVmYXVsdFNob3J0VGltZW91dCkKKyAgICAsIG1fbm9UaW1lb3V0KGZhbHNlKQogICAgICwgbV9k
aWRQcmludFdlYlByb2Nlc3NDcmFzaGVkTWVzc2FnZShmYWxzZSkKICAgICAsIG1fc2hvdWxkRXhp
dFdoZW5XZWJQcm9jZXNzQ3Jhc2hlcyh0cnVlKQogICAgICwgbV9iZWZvcmVVbmxvYWRSZXR1cm5W
YWx1ZSh0cnVlKQpAQCAtMjQ4LDYgKzI0OSwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhcmd1bWVudCA9PSAiLS1uby10aW1lb3V0Iikg
eworICAgICAgICAgICAgbV9ub1RpbWVvdXQgPSB0cnVlOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKwogICAgICAgICBpZiAoYXJndW1lbnQgPT0gIi0tc2tpcC1waXhlbC10ZXN0
LWlmLW5vLWJhc2VsaW5lIikgewogICAgICAgICAgICAgbV9za2lwUGl4ZWxUZXN0T3B0aW9uID0g
dHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTM1LDkgKzU0MSw5IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnJ1bigpCiAgICAgfQogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpydW5V
bnRpbChib29sJiBkb25lLCBUaW1lb3V0RHVyYXRpb24gdGltZW91dER1cmF0aW9uKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6cnVuVW50aWwoYm9vbCYgZG9uZSwgVGltZW91dER1cmF0aW9uIHRpbWVv
dXREdXJhdGlvbiwgYm9vbCBzaG91bGRUaW1lb3V0KQogewotICAgIHBsYXRmb3JtUnVuVW50aWwo
ZG9uZSwgdGltZW91dER1cmF0aW9uID09IFNob3J0VGltZW91dCA/IG1fc2hvcnRUaW1lb3V0IDog
bV9sb25nVGltZW91dCk7CisgICAgcGxhdGZvcm1SdW5VbnRpbChkb25lLCB0aW1lb3V0RHVyYXRp
b24gPT0gU2hvcnRUaW1lb3V0ID8gbV9zaG9ydFRpbWVvdXQgOiBtX2xvbmdUaW1lb3V0LCBzaG91
bGRUaW1lb3V0KTsKIH0KIAogLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzMmI0YWRlNGJhOGU2NTgxZWU0
MjY3NGMyZWU5NTk5MmUzOGI0YTFkLi41MzIxMGFhYWQ0MzQ5ZjZlNGIyM2Q4OTQwN2M3ODQxMzI1
YzNmN2Q5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC01NSw3
ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFJ1bnMgdGhlIHJ1biBsb29wIHVudGlsIGBkb25l
YCBpcyB0cnVlIG9yIHRoZSB0aW1lb3V0IGVsYXBzZXMuCiAgICAgZW51bSBUaW1lb3V0RHVyYXRp
b24geyBTaG9ydFRpbWVvdXQsIExvbmdUaW1lb3V0IH07Ci0gICAgdm9pZCBydW5VbnRpbChib29s
JiBkb25lLCBUaW1lb3V0RHVyYXRpb24pOworICAgIGJvb2wgc2hvdWxkVGltZW91dCgpIHsgcmV0
dXJuICFtX25vVGltZW91dDsgfQorICAgIHZvaWQgcnVuVW50aWwoYm9vbCYgZG9uZSwgVGltZW91
dER1cmF0aW9uLCBib29sIHNob3VsZFRpbWVvdXQgPSB0cnVlKTsKICAgICB2b2lkIG5vdGlmeURv
bmUoKTsKICAgICAKICAgICBib29sIGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZTsgfQpAQCAtNzAsNyArNzEsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZUNvbnRleHQoKTsKLSAgICB2b2lkIHBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9u
ZSwgZG91YmxlIHRpbWVvdXQpOworICAgIHZvaWQgcGxhdGZvcm1SdW5VbnRpbChib29sJiBkb25l
LCBkb3VibGUgdGltZW91dCwgYm9vbCBzaG91bGRUaW1lb3V0KTsKICAgICB2b2lkIHBsYXRmb3Jt
RGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZik7CiAgICAgdm9pZCBp
bml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCk7CiAgICAgdm9pZCBpbml0aWFsaXplVGVzdFBs
dWdpbkRpcmVjdG9yeSgpOwpAQCAtMTI3LDYgKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICBkb3Vi
bGUgbV9sb25nVGltZW91dDsKICAgICBkb3VibGUgbV9zaG9ydFRpbWVvdXQ7CisgICAgYm9vbCBt
X25vVGltZW91dDsKIAogICAgIGJvb2wgbV9kaWRQcmludFdlYlByb2Nlc3NDcmFzaGVkTWVzc2Fn
ZTsKICAgICBib29sIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNzQ3Jhc2hlczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggOWM2NjNjNDgzZjRmODMwYzgx
YTNlMjRkZmI3MTE3ZDNmNjlmNzYzMS4uYjk4OTQxYzNlZDljNWU0MjdjZDIwMjVlNmYxNGM0NTRh
NTk3MjcxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTE0Miw4ICsxNDIsMTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBzaXpl
V2ViVmlld0ZvckN1cnJlbnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkpOwogCiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQmVnaW5UZXN0IikpOwotICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJl
Zj4gZHVtcFBpeGVscyA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fZHVtcFBpeGVscykpOwot
ICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkuY29udGV4dCgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgZHVtcFBpeGVscy5nZXQoKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gYmVnaW5UZXN0TWVzc2Fn
ZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFBpeGVsc0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkR1bXBQaXhlbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29s
ZWFuUmVmPiBkdW1wUGl4ZWxzVmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBQ
aXhlbHMpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5Lmdl
dCgpLCBkdW1wUGl4ZWxzS2V5LmdldCgpLCBkdW1wUGl4ZWxzVmFsdWUuZ2V0KCkpOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVRpbWVvdXRXYXRjaGRvZ0tleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZVRpbWVvdXRXYXRjaGRvZyIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZVRpbWVvdXRXYXRjaGRvZ1ZhbHVlID0gYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNob3VsZFRpbWVv
dXQoKSkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0
KCksIHVzZVRpbWVvdXRXYXRjaGRvZ0tleS5nZXQoKSwgdXNlVGltZW91dFdhdGNoZG9nVmFsdWUu
Z2V0KCkpOworCisgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBiZWdpblRl
c3RNZXNzYWdlQm9keS5nZXQoKSk7CiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVu
VW50aWwobV9nb3RJbml0aWFsUmVzcG9uc2UsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQp
OwogICAgIGlmICghbV9nb3RJbml0aWFsUmVzcG9uc2UpIHsKQEAgLTE2MCw3ICsxNjksNyBAQCB2
b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogCiAgICAgV0tQYWdlTG9hZFVSTChUZXN0Q29u
dHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtX3VybC5nZXQoKSk7CiAK
LSAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RGaW5hbE1lc3NhZ2Us
IFRlc3RDb250cm9sbGVyOjpMb25nVGltZW91dCk7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLnJ1blVudGlsKG1fZ290RmluYWxNZXNzYWdlLCBUZXN0Q29udHJvbGxlcjo6TG9uZ1RpbWVv
dXQsIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5zaG91bGRUaW1lb3V0KCkpOwogICAgIGlmICgh
bV9nb3RGaW5hbE1lc3NhZ2UpCiAgICAgICAgIGR1bXAoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBm
aW5hbCBtZXNzYWdlIGZyb20gd2ViIHByb2Nlc3NcbiIpOwogICAgIGVsc2UgaWYgKG1fZXJyb3Ip
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0
ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAK
aW5kZXggZTVmNmE0NThhMDhiYTE3ODQxZWFiM2RkMTFkZjE0NGQ0OTk3NmYwMC4uZjUwOTUyMjEx
NzVkOWQ1MmRmNTlkYWY1ZWMwZmFkN2NjNjIzYTIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNjEsMTAgKzYxLDExIEBAIHN0
YXRpYyBnYm9vbGVhbiB0aW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIpCiAgICAgcmV0dXJuIEZBTFNF
OwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmLCBkb3Vi
bGUgdGltZW91dCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYs
IGRvdWJsZSB0aW1lb3V0LCBib29sIHNob3VsZFRpbWVvdXQpCiB7CiAgICAgY2FuY2VsVGltZW91
dCgpOwotICAgIGdUaW1lb3V0U291cmNlSWQgPSBnX3RpbWVvdXRfYWRkKHRpbWVvdXQgKiAxMDAw
LCB0aW1lb3V0Q2FsbGJhY2ssIDApOworICAgIGlmIChzaG91bGRUaW1lb3V0KQorICAgICAgICBn
VGltZW91dFNvdXJjZUlkID0gZ190aW1lb3V0X2FkZCh0aW1lb3V0ICogMTAwMCwgdGltZW91dENh
bGxiYWNrLCAwKTsKICAgICBndGtfbWFpbigpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGM4ODRjOGZiMTFjODIyOGUxYWNj
ZDcxY2Y4ODljMWJlNzdkMjljYmQuLjRiYTdhZTk3NTM4OTIzZTgzYzZkMWI4YzRiODg1NDg0NDhl
OTkyNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVy
TWFjLm1tCkBAIC01MSw4ICs1MSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVU
ZXN0UGx1Z2luRGlyZWN0b3J5KCkKICAgICBtX3Rlc3RQbHVnaW5EaXJlY3RvcnkuYWRvcHQoV0tT
dHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlUGF0aF0pKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5V
bnRpbChib29sJiBkb25lLCBkb3VibGUgdGltZW91dCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwgZG91YmxlIHRpbWVvdXQsIGJvb2wgLyogc2hvdWxk
VGltZW91dCAqLykKIHsKKyAgICAvLyBGSVhNRTogTm8gdGltZW91dCBzaG91bGQgb2NjdXIgaWYg
c2hvdWxkVGltZW91dCBpcyBmYWxzZSAobmVjZXNzYXJ5IHdoZW4gcnVubmluZyBwZXJmb3JtYW5j
ZSB0ZXN0cykuCiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgKyB0aW1lb3V0OwogICAgIENGRGF0ZVJlZiBlbmREYXRlID0gQ0ZEYXRlQ3JlYXRlKDAs
IGVuZCk7CiAgICAgd2hpbGUgKCFkb25lICYmIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIDwg
ZW5kKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxl
clF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAK
aW5kZXggZmE4MjdiNmFkNDkwYjBkMmRmNTQ4MDM5ZWMxZDU5ZDVhMTI0OTQ1OC4uMTFkNDY0ZGMw
ZTFlZjQwYmNhZDg0ZjZiYjk4OTQ0M2U5NDU5YWVmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCkBAIC01MywxMCArNTMsMTAgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBRUXVpY2tXZWJWaWV3Ojpw
bGF0Zm9ybUluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1S
dW5VbnRpbChib29sJiBjb25kaXRpb24sIGRvdWJsZSB0aW1lb3V0KQordm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiBjb25kaXRpb24sIGRvdWJsZSB0aW1lb3V0LCBi
b29sIHNob3VsZFRpbWVvdXQpCiB7Ci0gICAgaWYgKHFnZXRlbnYoIlFUX1dFQktJVDJfREVCVUci
KSA9PSAiMSIpIHsKLSAgICAgICAgLy8gTmV2ZXIgdGltZW91dCBpZiB3ZSBhcmUgZGVidWdnaW5n
LgorICAgIGlmIChxZ2V0ZW52KCJRVF9XRUJLSVQyX0RFQlVHIikgPT0gIjEiIHx8ICFzaG91bGRU
aW1lb3V0KSB7CisgICAgICAgIC8vIE5ldmVyIHRpbWVvdXQgaWYgd2UgYXJlIGRlYnVnZ2luZyBv
ciBub3QgbWVhbnQgdG8gdGltZW91dC4KICAgICAgICAgd2hpbGUgKCFjb25kaXRpb24pCiAgICAg
ICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OkV4Y2x1
ZGVVc2VySW5wdXRFdmVudHMsIDUwKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDQ0YTYxMzgzNTMx
YjQ4YmE4ZGFlMWFlYmI0ZDJjOTcxMmQ2ODdmOWMuLjljOTY5ZWNmNWIzYzNhODcxOTI0NDExMDI4
M2YyODdhODk3M2U3ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rl
c3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0
Q29udHJvbGxlcldpbi5jcHAKQEAgLTE3MCw4ICsxNzAsOSBAQCBzdGF0aWMgUnVuTG9vcFJlc3Vs
dCBydW5SdW5Mb29wVW50aWwoYm9vbCYgY29uZGl0aW9uLCBIQU5ETEUgb2JqZWN0LCBkb3VibGUg
dGltZQogICAgIHJldHVybiBDb25kaXRpb25TYXRpc2ZpZWQ7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwgZG91YmxlIHRpbWVvdXQpCit2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmIGRvbmUsIGRvdWJsZSB0aW1l
b3V0LCBib29sIC8qIHNob3VsZFRpbWVvdXQgKi8pCiB7CisgICAgLy8gRklYTUU6IE5vIHRpbWVv
dXQgc2hvdWxkIG9jY3VyIGlmIHNob3VsZFRpbWVvdXQgaXMgZmFsc2UgKG5lY2Vzc2FyeSB3aGVu
IHJ1bm5pbmcgcGVyZm9ybWFuY2UgdGVzdHMpLgogICAgIFJ1bkxvb3BSZXN1bHQgcmVzdWx0ID0g
cnVuUnVuTG9vcFVudGlsKGRvbmUsIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50LCB0aW1lb3V0KTsK
ICAgICBpZiAocmVzdWx0ID09IFRpbWVkT3V0IHx8IHJlc3VsdCA9PSBDb25kaXRpb25TYXRpc2Zp
ZWQpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130183</attachid>
            <date>2012-03-05 12:51:19 -0800</date>
            <delta_ts>2012-03-12 08:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80042-20120305215117.patch</filename>
            <type>text/plain</type>
            <size>15209</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWNjY2M0YjNjOTY0M2I2ZDlmNjU4MGRhNGQ2MjNkMjI1
Y2RmNTlhNi4uZjliZTU5ODI2MTgwYmMyM2E2MWIxY2ZiMDkyNTVkMzBlYTE0NDQxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDEyLTAzLTA1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW1dLMl0gcnVuLXBlcmYtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gcnVuIHdpdGgg
V1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
biBvcHRpb24gdG8gUGVyZlRlc3RSdW5uZXIgdG8gdXNlIFdlYktpdFRlc3RSdW5uZXIgaW5zdGVh
ZCBvZgorICAgICAgICBEdW1wUmVuZGVyVHJlZSBhbmQgYWRkIHRoZSAnLS1uby10aW1lb3V0JyBm
bGFnIHRvIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgdG8gYXZvaWQgdGltaW5nIG91dCB3aGVu
IHJ1bm5pbmcgcGVyZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fcGFyc2VfYXJncyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpJbmplY3RlZEJ1bmRsZSk6IEluaXRpYWxpemUgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1l
cgorICAgICAgICB0byB0cnVlLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOiBVbnBhY2sgdGhlICdCZWdpblRlc3QnIG1lc3NhZ2UKKyAgICAgICAgYXMg
YSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgRHVtcFBpeGVscyBhbmQgVXNlV2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXIga2V5cy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjp1c2VXYWl0
VG9EdW1wV2F0Y2hkb2dUaW1lcik6IE1ha2UgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcgor
ICAgICAgICBwdWJsaWNseSBhY2Nlc3NpYmxlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdFVudGlsRG9uZSk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUg
d2F0Y2hkb2cgaWYgaXQKKyAgICAgICAgaXMgcmVxdWlyZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpUZXN0Q29udHJvbGxlcik6IEluaXRpYWxpemUgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1l
cgorICAgICAgICB0byB0cnVlLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZSk6IFNldCBtX3VzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyIHRvIGZhbHNlCisgICAgICAg
IGlmICctLW5vLXRpbWVvdXQnIG9wdGlvbiBpcyBwcmVzZW50LgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cnVuVW50aWwpOiBUcmFuc2xhdGUgVGltZW91dER1cmF0aW9uIHRvIGEgcHJv
cGVyIHRpbWVvdXQKKyAgICAgICAgdmFsdWUsIG9yIC0xLjAgaWYgdGltZW91dCBzaG91bGQgbm90
IG9jY3VyLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKTog
TWFrZSBtX3VzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyCisgICAgICAgIHB1YmxpY2x5IGFjY2Vz
c2libGUuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOiBQYWNrIHRoZSAnQmVnaW5UZXN0
JyBtZXNzYWdlIGFzIGEgZGljdGlvbmFyeSwKKyAgICAgICAgY29udGFpbmluZyBEdW1wUGl4ZWxz
IGFuZCBVc2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lciBrZXlzIGFuZCBjb3JyZXNwb25kaW5nIHZh
bHVlcy4KKyAgICAgICAgV2FpdGluZyBmb3IgZmluYWwgbWVzc2FnZSBzaG91bGQgbm90IHRpbWUg
b3V0IGlmIG5vdCBuZWNlc3NhcnkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1SdW5VbnRpbCk6IE9ubHkgc2V0IHVwIGEgdGltZW91dCBpZiBuZWNlc3NhcnkuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwpOiBBZGQgYSBGSVhNRSwgaW5kaWNhdGlu
ZyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGlzIG1pc3NpbmcuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6IERpdHRvLgorCiAyMDEyLTAzLTA1ICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUXQgQVBJIHRlc3QgYnVp
bGRzdGVwIHRocm93cyBleGNlcHRpb24gYWZ0ZXIgYnVpbGRtYXN0ZXIgdXBkYXRlCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5CmluZGV4IDVhZDM0ZTc4NjU1OGQ2MjJhODRjZmZkMjMyY2Y2MGI5MzY2ZDlk
ODUuLjhjYzBkNzQ1ZTJjYTIyNzBkZWU2ZmI5NTBlYmNiNDZhZjZhZjhmNDYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5CkBAIC05OSw2ICs5OSw4IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gYSBKU09OIGZpbGUgdG8gYmUgbWVy
Z2VkIGludG8gdGhlIEpTT04gZmlsZSB3aGVuIC0tb3V0cHV0LWpzb24tcGF0aCBpcyBwcmVzZW50
IiksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10ZXN0LXJlc3VsdHMtc2Vy
dmVyIiwKICAgICAgICAgICAgICAgICBoZWxwPSJVcGxvYWQgdGhlIGdlbmVyYXRlZCBKU09OIGZp
bGUgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIgd2hlbiAtLW91dHB1dC1qc29uLXBhdGggaXMgcHJl
c2VudCIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td2Via2l0LXRlc3Qt
cnVubmVyIiwgIi0yIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICBoZWxw
PSJVc2UgV2ViS2l0VGVzdFJ1bm5lciByYXRoZXIgdGhhbiBEdW1wUmVuZGVyVHJlZS4iKSwKICAg
ICAgICAgICAgIF0KIAogICAgICAgICBvcHRpb25fbGlzdCA9IChwZXJmX29wdGlvbl9saXN0ICsg
cHJpbnRfb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNGRhYWM3NDI2MzQ0NzM1MjAwZWRi
NzExOWJjOGVmNGU1ODA3MzhlYy4uNTAyM2YxNDFlMTM5YWEzNGIxZDhkOWFhODE3YzAyYWY1Mzdk
ZDdmMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgSW5qZWN0ZWRCdW5kbGU6
OkluamVjdGVkQnVuZGxlKCkKICAgICAsIG1fdG9wTG9hZGluZ0ZyYW1lKDApCiAgICAgLCBtX3N0
YXRlKElkbGUpCiAgICAgLCBtX2R1bXBQaXhlbHMoZmFsc2UpCisgICAgLCBtX3VzZVdhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVyKHRydWUpCiB7CiB9CiAKQEAgLTEzMSw4ICsxMzIsMTQgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUs
IFdLVHlwZVJlZiBtZXNzYWcKIHsKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkJlZ2luVGVzdCIpKSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9k
eSk7Ci0gICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFu
R2V0VHlwZUlEKCkpOwotICAgICAgICBtX2R1bXBQaXhlbHMgPSBXS0Jvb2xlYW5HZXRWYWx1ZShz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIEFTU0VSVChX
S0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAg
ICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8
V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkR1bXBQaXhlbHMiKSk7CisgICAgICAgIG1fZHVtcFBpeGVscyA9IFdLQm9vbGVhbkdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGR1bXBQaXhlbHNLZXkuZ2V0KCkpKSk7CisKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyS2V5
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VXYWl0VG9EdW1wV2F0
Y2hkb2dUaW1lciIpKTsKKyAgICAgICAgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lciA9IFdL
Qm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyS2V5LmdldCgpKSkpOwogCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhY2tN
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNrIikp
OwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAppbmRleCA4NjA0MWJkNjE0OTg4OTNhZmUwNTQwNWZkNDQwMTYzNzliMjczMWRlLi5kOTBlNGUw
NzE3ODQ3ZmEwNGE4NTFmNzhiNDc4NTExZTJiMGJlZTk2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC03Niw2
ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcExvYWRpbmdGcmFtZShXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lKSB7IG1fdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7IH0KIAogICAgIGJvb2wg
c2hvdWxkRHVtcFBpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFBpeGVsczsgfQorICAgIGJv
b2wgdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSBjb25zdCB7IHJldHVybiBtX3VzZVdhaXRU
b0R1bXBXYXRjaGRvZ1RpbWVyOyB9CiAgICAgCiAgICAgdm9pZCBwb3N0TmV3QmVmb3JlVW5sb2Fk
UmV0dXJuVmFsdWUoYm9vbCk7CiAgICAgdm9pZCBwb3N0QWRkQ2hyb21lSW5wdXRGaWVsZCgpOwpA
QCAtMTI1LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKIAogICAgIGJv
b2wgbV9kdW1wUGl4ZWxzOworICAgIGJvb2wgbV91c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcjsK
IAogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4ZWxSZXN1bHQ7CiAgICAgV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGE3OGU3NDExMjZhYmQxN2YzZDQyMTQyNWI4MjE5M2QyMzA3NTI1N2EuLmZiZGI1
ZGNmNzA1YmVmMmViODRkNjU4MjA3YzliMDA3ZWI5MTQ1NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0xNTAsNyArMTUwLDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRV
bnRpbERvbmUoKQogewogICAgIG1fd2FpdFRvRHVtcCA9IHRydWU7Ci0gICAgaW5pdGlhbGl6ZVdh
aXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQoKTsKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkpCisgICAgICAgIGluaXRpYWxp
emVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAwMjYyYjUzMzEwN2U0MzkwYTg4OGI3
MDVlYWQ3OTUwODMzODAyYThiLi40YzNjNTY4ZDY2YjMzYjE0ZTVlOWE1ZjIyM2EyZDliNDdmNTA1
N2ZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNzIs
NiArNzIsNyBAQCBUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIoaW50IGFyZ2MsIGNvbnN0
IGNoYXIqIGFyZ3ZbXSkKICAgICAsIG1fZG9uZVJlc2V0dGluZyhmYWxzZSkKICAgICAsIG1fbG9u
Z1RpbWVvdXQoZGVmYXVsdExvbmdUaW1lb3V0KQogICAgICwgbV9zaG9ydFRpbWVvdXQoZGVmYXVs
dFNob3J0VGltZW91dCkKKyAgICAsIG1fdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIodHJ1ZSkK
ICAgICAsIG1fZGlkUHJpbnRXZWJQcm9jZXNzQ3Jhc2hlZE1lc3NhZ2UoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZEV4aXRXaGVuV2ViUHJvY2Vzc0NyYXNoZXModHJ1ZSkKICAgICAsIG1fYmVmb3JlVW5s
b2FkUmV0dXJuVmFsdWUodHJ1ZSkKQEAgLTI0OCw2ICsyNDksMTEgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoYXJndW1lbnQgPT0gIi0tbm8t
dGltZW91dCIpIHsKKyAgICAgICAgICAgIG1fdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIgPSBm
YWxzZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKGFy
Z3VtZW50ID09ICItLXNraXAtcGl4ZWwtdGVzdC1pZi1uby1iYXNlbGluZSIpIHsKICAgICAgICAg
ICAgIG1fc2tpcFBpeGVsVGVzdE9wdGlvbiA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTUzNyw3ICs1NDMsMjEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuKCkKIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cnVuVW50aWwoYm9vbCYgZG9uZSwgVGltZW91dER1cmF0aW9uIHRpbWVv
dXREdXJhdGlvbikKIHsKLSAgICBwbGF0Zm9ybVJ1blVudGlsKGRvbmUsIHRpbWVvdXREdXJhdGlv
biA9PSBTaG9ydFRpbWVvdXQgPyBtX3Nob3J0VGltZW91dCA6IG1fbG9uZ1RpbWVvdXQpOworICAg
IGRvdWJsZSB0aW1lb3V0OworICAgIHN3aXRjaCAodGltZW91dER1cmF0aW9uKSB7CisgICAgY2Fz
ZSBTaG9ydFRpbWVvdXQ6CisgICAgICAgIHRpbWVvdXQgPSBtX3Nob3J0VGltZW91dDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMb25nVGltZW91dDoKKyAgICAgICAgdGltZW91dCA9IG1fbG9u
Z1RpbWVvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9UaW1lb3V0OgorICAgIGRlZmF1
bHQ6CisgICAgICAgIHRpbWVvdXQgPSAtMS4wOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBwbGF0Zm9ybVJ1blVudGlsKGRvbmUsIHRpbWVvdXQpOwogfQogCiAvLyBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDMyYjRhZGU0YmE4ZTY1ODFlZTQyNjc0YzJlZTk1OTkyZTM4YjRhMWQuLjJhNTkwNTU1Y2I3
NmE4NmFmOTY5ZTgxMWIxM2M4ZGNhMzliMGJhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTU0LDcgKzU0LDggQEAgcHVibGljOgogICAgIFdLQ29udGV4dFJl
ZiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICAvLyBSdW5zIHRo
ZSBydW4gbG9vcCB1bnRpbCBgZG9uZWAgaXMgdHJ1ZSBvciB0aGUgdGltZW91dCBlbGFwc2VzLgot
ICAgIGVudW0gVGltZW91dER1cmF0aW9uIHsgU2hvcnRUaW1lb3V0LCBMb25nVGltZW91dCB9Owor
ICAgIGVudW0gVGltZW91dER1cmF0aW9uIHsgU2hvcnRUaW1lb3V0LCBMb25nVGltZW91dCwgTm9U
aW1lb3V0IH07CisgICAgYm9vbCB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpIHsgcmV0dXJu
IG1fdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXI7IH0KICAgICB2b2lkIHJ1blVudGlsKGJvb2wm
IGRvbmUsIFRpbWVvdXREdXJhdGlvbik7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgCkBA
IC0xMjcsNiArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX2xvbmdUaW1lb3V0Owog
ICAgIGRvdWJsZSBtX3Nob3J0VGltZW91dDsKKyAgICBib29sIG1fdXNlV2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXI7CiAKICAgICBib29sIG1fZGlkUHJpbnRXZWJQcm9jZXNzQ3Jhc2hlZE1lc3NhZ2U7
CiAgICAgYm9vbCBtX3Nob3VsZEV4aXRXaGVuV2ViUHJvY2Vzc0NyYXNoZXM7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDgwNmVhYTU1Yjc1MmU0MmJjOTAx
MGM4YTY4MTdiOGE4MjA0NzU1YTQuLmY2ZmIzMTEyNjFjNGJjNTdjN2RiN2Q1ZDhkZDI2NWNhYTVm
YTYxYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0x
NDAsOCArMTQwLDE3IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAgICAgc2l6ZVdl
YlZpZXdGb3JDdXJyZW50VGVzdChtX3BhdGhPclVSTC5jX3N0cigpKTsKIAogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKLSAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+
IGR1bXBQaXhlbHMgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX2R1bXBQaXhlbHMpKTsKLSAg
ICBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNo
YXJlZCgpLmNvbnRleHQoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIGR1bXBQaXhlbHMuZ2V0KCkpOwor
ICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGJlZ2luVGVzdE1lc3NhZ2VC
b2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVh
blJlZj4gZHVtcFBpeGVsc1ZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUobV9kdW1wUGl4
ZWxzKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQo
KSwgZHVtcFBpeGVsc0tleS5nZXQoKSwgZHVtcFBpeGVsc1ZhbHVlLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcktleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZVdhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlV2FpdFRvRHVtcFdh
dGNoZG9nVGltZXJWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVy
OjpzaGFyZWQoKS51c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpKSk7CisgICAgV0tEaWN0aW9u
YXJ5QWRkSXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgdXNlV2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXJLZXkuZ2V0KCksIHVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyVmFsdWUuZ2V0KCkp
OworCisgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9s
bGVyOjpzaGFyZWQoKS5jb250ZXh0KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBiZWdpblRlc3RNZXNz
YWdlQm9keS5nZXQoKSk7CiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwo
bV9nb3RJbml0aWFsUmVzcG9uc2UsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQpOwogICAg
IGlmICghbV9nb3RJbml0aWFsUmVzcG9uc2UpIHsKQEAgLTE1OCw3ICsxNjcsNyBAQCB2b2lkIFRl
c3RJbnZvY2F0aW9uOjppbnZva2UoKQogCiAgICAgV0tQYWdlTG9hZFVSTChUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtX3VybC5nZXQoKSk7CiAKLSAgICBU
ZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RGaW5hbE1lc3NhZ2UsIFRlc3RD
b250cm9sbGVyOjpMb25nVGltZW91dCk7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnJ1
blVudGlsKG1fZ290RmluYWxNZXNzYWdlLCBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkudXNlV2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIoKSA/IFRlc3RDb250cm9sbGVyOjpMb25nVGltZW91dCA6IFRl
c3RDb250cm9sbGVyOjpOb1RpbWVvdXQpOwogICAgIGlmICghbV9nb3RGaW5hbE1lc3NhZ2UpCiAg
ICAgICAgIGR1bXAoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBmaW5hbCBtZXNzYWdlIGZyb20gd2Vi
IHByb2Nlc3NcbiIpOwogICAgIGVsc2UgaWYgKG1fZXJyb3IpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggZTVmNmE0NThhMDhiYTE3
ODQxZWFiM2RkMTFkZjE0NGQ0OTk3NmYwMC4uMGFjZjk2YWE4N2FjMmFmYThkYTRmMjU5MjRmZmFh
ZDA0YmQ1YjIzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENv
bnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250
cm9sbGVyR3RrLmNwcApAQCAtNjQsNyArNjQsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gdGltZW91dENh
bGxiYWNrKGdwb2ludGVyKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbChi
b29sJiwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgY2FuY2VsVGltZW91dCgpOwotICAgIGdUaW1l
b3V0U291cmNlSWQgPSBnX3RpbWVvdXRfYWRkKHRpbWVvdXQgKiAxMDAwLCB0aW1lb3V0Q2FsbGJh
Y2ssIDApOworICAgIGlmICh0aW1lb3V0ID49IDApCisgICAgICAgIGdUaW1lb3V0U291cmNlSWQg
PSBnX3RpbWVvdXRfYWRkKHRpbWVvdXQgKiAxMDAwLCB0aW1lb3V0Q2FsbGJhY2ssIDApOwogICAg
IGd0a19tYWluKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENv
bnRyb2xsZXJNYWMubW0KaW5kZXggYzg4NGM4ZmIxMWM4MjI4ZTFhY2NkNzFjZjg4OWMxYmU3N2Qy
OWNiZC4uNWI4NjdiMTk4ZGJiMDY0MjYyNjVlZGMxZjA4ZjU2MDY3ZWE3MDRiMSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTUzLDYg
KzUzLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3Rv
cnkoKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmIGRvbmUs
IGRvdWJsZSB0aW1lb3V0KQogeworICAgIC8vIEZJWE1FOiBObyB0aW1lb3V0IHNob3VsZCBvY2N1
ciBpZiB0aW1lb3V0IGlzIGxlc3MgdGhhbiB6ZXJvIChuZWNlc3Nhcnkgd2hlbiBydW5uaW5nIHBl
cmZvcm1hbmNlIHRlc3RzKS4KICAgICBDRkFic29sdXRlVGltZSBlbmQgPSBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIHRpbWVvdXQ7CiAgICAgQ0ZEYXRlUmVmIGVuZERhdGUgPSBDRkRhdGVD
cmVhdGUoMCwgZW5kKTsKICAgICB3aGlsZSAoIWRvbmUgJiYgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgPCBlbmQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RD
b250cm9sbGVyUXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxl
clF0LmNwcAppbmRleCBmYTgyN2I2YWQ0OTBiMGQyZGY1NDgwMzllYzFkNTlkNWExMjQ5NDU4Li40
YzAyNTMzMjUyYWVmYWFhYjFiNzg3YmQzYjk4YTg0NWFkMmQ1ZDJkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTU1LDggKzU1LDggQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIAogdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiBjb25kaXRpb24sIGRvdWJsZSB0aW1lb3V0
KQogewotICAgIGlmIChxZ2V0ZW52KCJRVF9XRUJLSVQyX0RFQlVHIikgPT0gIjEiKSB7Ci0gICAg
ICAgIC8vIE5ldmVyIHRpbWVvdXQgaWYgd2UgYXJlIGRlYnVnZ2luZy4KKyAgICBpZiAocWdldGVu
digiUVRfV0VCS0lUMl9ERUJVRyIpID09ICIxIiB8fCB0aW1lb3V0IDwgMCkgeworICAgICAgICAv
LyBOZXZlciB0aW1lb3V0IGlmIHdlIGFyZSBkZWJ1Z2dpbmcgb3Igbm90IG1lYW50IHRvIHRpbWVv
dXQuCiAgICAgICAgIHdoaWxlICghY29uZGl0aW9uKQogICAgICAgICAgICAgUUNvcmVBcHBsaWNh
dGlvbjo6cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpFeGNsdWRlVXNlcklucHV0RXZlbnRzLCA1
MCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL1Rlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rl
c3RDb250cm9sbGVyV2luLmNwcAppbmRleCA0NGE2MTM4MzUzMWI0OGJhOGRhZTFhZWJiNGQyYzk3
MTJkNjg3ZjljLi5kODY4NmY4MmZlZDAzYzIxMDUyZTExNjdhNWMxMzE2NjBjYjdiZjVlIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCkBA
IC0xNzIsNiArMTcyLDcgQEAgc3RhdGljIFJ1bkxvb3BSZXN1bHQgcnVuUnVuTG9vcFVudGlsKGJv
b2wmIGNvbmRpdGlvbiwgSEFORExFIG9iamVjdCwgZG91YmxlIHRpbWUKIAogdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiBkb25lLCBkb3VibGUgdGltZW91dCkKIHsK
KyAgICAvLyBGSVhNRTogTm8gdGltZW91dCBzaG91bGQgb2NjdXIgaWYgdGltZW91dCBpcyBsZXNz
IHRoYW4gemVybyAobmVjZXNzYXJ5IHdoZW4gcnVubmluZyBwZXJmb3JtYW5jZSB0ZXN0cykuCiAg
ICAgUnVuTG9vcFJlc3VsdCByZXN1bHQgPSBydW5SdW5Mb29wVW50aWwoZG9uZSwgd2ViUHJvY2Vz
c0NyYXNoaW5nRXZlbnQsIHRpbWVvdXQpOwogICAgIGlmIChyZXN1bHQgPT0gVGltZWRPdXQgfHwg
cmVzdWx0ID09IENvbmRpdGlvblNhdGlzZmllZCkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>