<?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>159038</bug_id>
          
          <creation_ts>2016-06-22 14:23:34 -0700</creation_ts>
          <short_desc>requestFrameAnimation() callback timestamp should be very close to Performance.now()</short_desc>
          <delta_ts>2020-04-21 13:38:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207153</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1204666</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-22 14:23:34 -0700</bug_when>
    <thetext>The current implementation of requestFrameAnimation() passes the sum of timeUntilOutput and Performance.now() to the JS callback. timeUntilOutput is the difference between the outputTime and the now time which are passed to the CVDisplayLink callback. This addition causes the timestamp which is passed to the requestFrameAnimation() callback to be larger than the Performance.now() by almost 33 ms in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204667</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-22 14:24:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/26933562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204670</commentid>
    <comment_count>2</comment_count>
      <attachid>281869</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-22 14:35:22 -0700</bug_when>
    <thetext>Created attachment 281869
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204685</commentid>
    <comment_count>3</comment_count>
      <attachid>281875</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-22 14:57:55 -0700</bug_when>
    <thetext>Created attachment 281875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204704</commentid>
    <comment_count>4</comment_count>
      <attachid>281875</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-22 16:01:25 -0700</bug_when>
    <thetext>Comment on attachment 281875
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        * platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
&gt; +        (WebCore::displayLinkCallback):
&gt; +        (WebCore::DisplayRefreshMonitorMac::displayLinkFired):

You need to fix DisplayRefreshMonitorIOS too.

&gt; Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp:95
&gt; +    setMonotonicAnimationStartTime(monotonicallyIncreasingTime());

I don&apos;t think this is the right level at which to set the time; it only fixes the Mac DisplayRefreshMonitor.

I think you could remove passing the timestamps all the way down to ScriptedAnimationController::serviceScriptedAnimations(), and grab the current time there. Also, you should grab it via Performance::now(), not just monotonicallyIncreasingTime(), since it should be quantized in the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204713</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-22 16:33:16 -0700</bug_when>
    <thetext>I would also like to see a test that checks that multiple rAF callbacks fired at the same time get the same timestamp (if we don&apos;t have one already).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204885</commentid>
    <comment_count>6</comment_count>
      <attachid>281921</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-23 11:47:30 -0700</bug_when>
    <thetext>Created attachment 281921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204906</commentid>
    <comment_count>7</comment_count>
      <attachid>281927</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-23 12:24:36 -0700</bug_when>
    <thetext>Created attachment 281927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204920</commentid>
    <comment_count>8</comment_count>
      <attachid>281927</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-06-23 13:23:52 -0700</bug_when>
    <thetext>Comment on attachment 281927
Patch

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

&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:152
&gt; +    double legacyHighResNowMs = 1000 * m_document-&gt;loader()-&gt;timing().windowTimeToPseudoWallTime(timestamp);

I don&apos;t know if it&apos;s worth preserving this legacy behavior. If it is, I would rename windowTimeToPseudoWallTime() to something like timeForLegacyRequestAnimationFrame() (or move the computation to here).

&gt; Source/WebCore/page/DOMWindow.cpp:757
&gt; +    if (!timestamp &amp;&amp; document()) {
&gt; +        DocumentLoader* loader = document()-&gt;loader();
&gt; +        timestamp = loader ? loader-&gt;timing().monotonicTimeToZeroBasedDocumentTime(monotonicallyIncreasingTime()) : 0;
&gt; +    }

Is timestamp only 0 when ENABLE(WEB_TIMING) is off? If so, I&apos;d just #ifdef the entire block.

&gt; Source/WebCore/page/FrameView.cpp:2832
&gt; +void FrameView::serviceScriptedAnimations(double timestamp)

Are you passing the timestamp through here just for coordinated graphics? I&apos;m not sure why we&apos;d leave their rAF callbacks with a different behavior.

&gt; LayoutTests/animations/animation-callback-timestamp-expected.txt:3
&gt; +PASS successfullyParsed is true
&gt; +
&gt; +TEST COMPLETE

Would be nice if the test result said something like &apos;PASS: requestAnimationFrame callback time was within blah blah&quot;

&gt; LayoutTests/animations/animation-multiple-callbacks-timestamp-expected.txt:3
&gt; +PASS successfullyParsed is true
&gt; +
&gt; +TEST COMPLETE

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204934</commentid>
    <comment_count>9</comment_count>
      <attachid>281933</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-23 14:47:51 -0700</bug_when>
    <thetext>Created attachment 281933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204936</commentid>
    <comment_count>10</comment_count>
      <attachid>281927</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-23 14:53:49 -0700</bug_when>
    <thetext>Comment on attachment 281927
Patch

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

&gt;&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:152
&gt;&gt; +    double legacyHighResNowMs = 1000 * m_document-&gt;loader()-&gt;timing().windowTimeToPseudoWallTime(timestamp);
&gt; 
&gt; I don&apos;t know if it&apos;s worth preserving this legacy behavior. If it is, I would rename windowTimeToPseudoWallTime() to something like timeForLegacyRequestAnimationFrame() (or move the computation to here).

The function DocumentLoadTiming::referenceWallTime() was added and the calculation was moved to here.

&gt;&gt; Source/WebCore/page/DOMWindow.cpp:757
&gt;&gt; +    }
&gt; 
&gt; Is timestamp only 0 when ENABLE(WEB_TIMING) is off? If so, I&apos;d just #ifdef the entire block.

The entire function is now surrounded by  #if #endif directives which is similar to HTMLMediaElement.cpp had before.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2832
&gt;&gt; +void FrameView::serviceScriptedAnimations(double timestamp)
&gt; 
&gt; Are you passing the timestamp through here just for coordinated graphics? I&apos;m not sure why we&apos;d leave their rAF callbacks with a different behavior.

The timestamp is not passed to FrameView::serviceScriptedAnimations() anymore.

&gt;&gt; LayoutTests/animations/animation-callback-timestamp-expected.txt:3
&gt;&gt; +TEST COMPLETE
&gt; 
&gt; Would be nice if the test result said something like &apos;PASS: requestAnimationFrame callback time was within blah blah&quot;

Fixed.

&gt;&gt; LayoutTests/animations/animation-multiple-callbacks-timestamp-expected.txt:3
&gt;&gt; +TEST COMPLETE
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204940</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-23 14:56:42 -0700</bug_when>
    <thetext>*** Bug 115333 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204950</commentid>
    <comment_count>12</comment_count>
      <attachid>281933</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-23 15:46:42 -0700</bug_when>
    <thetext>Comment on attachment 281933
Patch

Clearing flags on attachment: 281933

Committed r202399: &lt;http://trac.webkit.org/changeset/202399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204951</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-23 15:46:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>281869</attachid>
            <date>2016-06-22 14:35:22 -0700</date>
            <delta_ts>2016-06-22 14:35:22 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>reqestAnimationFrame-timestamps.html</filename>
            <type>text/html</type>
            <size>1634</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c2NyaXB0PgogICAgICAgIAogICAg
ICAgIGZ1bmN0aW9uIGR1bXBMb2cocykKICAgICAgICB7CiAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKS50ZXh0Q29udGVudCArPSBzICsgJ1xuJzsKICAgICAgICB9CiAg
ICAgICAgCiAgICAgICAgdmFyIGxhc3RUaW1lID0gMDsKICAgICAgICB2YXIgbGFzdFBlcmZOb3dU
aW1lID0gMDsKICAgICAgICB2YXIgZGVsYXlTdW0gPSAwOwogICAgICAgIHZhciBkZWxheUNvdW50
ID0gMDsKICAgICAgICB2YXIgZGVsYXlNYXggPSAwOwogICAgICAgIHZhciBjb3VudCA9IDA7Cgog
ICAgICAgIGZ1bmN0aW9uIGRvQW5pbWF0aW9uKHRpbWUpCiAgICAgICAgewogICAgICAgICAgICB2
YXIgcGVyZk5vd1RpbWUgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7CiAgICAgICAgICAgIAog
ICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gNjsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZh
ciBpbnRlcnZhbCA9IHRpbWUgLSBsYXN0VGltZTsKICAgICAgICAgICAgbGFzdFRpbWUgPSB0aW1l
OwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHBlcmZOb3dJbnRlcnZhbCA9IHBlcmZOb3dU
aW1lIC0gbGFzdFBlcmZOb3dUaW1lOwogICAgICAgICAgICBsYXN0UGVyZk5vd1RpbWUgPSBwZXJm
Tm93VGltZTsKCiAgICAgICAgICAgIGR1bXBMb2cocGVyZk5vd1RpbWUudG9GaXhlZChwcmVjaXNp
b24pICsgJyAoJyArIHBlcmZOb3dJbnRlcnZhbC50b0ZpeGVkKDMpICsgJykgICAgICAgJyArIHRp
bWUudG9GaXhlZChwcmVjaXNpb24pICsgJyAoJyArIGludGVydmFsLnRvRml4ZWQoMykgKyAnKSAg
ICAgICcgKyAodGltZSAtIHBlcmZOb3dUaW1lKS50b0ZpeGVkKDUpKTsKCiAgICAgICAgICAgIGlm
IChpbnRlcnZhbCA+IGRlbGF5TWF4KQogICAgICAgICAgICAgICAgZGVsYXlNYXggPSBpbnRlcnZh
bDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICBkZWxheVN1bSArPSBpbnRlcnZhbDsKICAg
ICAgICAgICAgKytkZWxheUNvdW50OwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHRoaW5n
ID0gMTsKICAgICAgICAgICAgd2hpbGUgKHBlcmZvcm1hbmNlLm5vdygpIC0gcGVyZk5vd1RpbWUg
PCAzMCkKICAgICAgICAgICAgICAgIHRoaW5nKys7CgogICAgICAgICAgICAvLyBkdW1wTG9nKCdE
ZWxheTogJyArIGludGVydmFsICsgJywgbWF4OiAnICsgZGVsYXlNYXgpOwogICAgICAgICAgICAK
ICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMDApCiAgICAgICAgICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoZG9BbmltYXRpb24pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkdW1w
TG9nKCdwZXJmb3JtYW5jZS5ub3coKSAoaW50ZXJ2YWwpICByYWYgY2FsbGJhY2sgdGltZSAoaW50
ZXJ2YWwpICAgIGRlbHRhJyk7CiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShkb0Fu
aW1hdGlvbik7CiAgICAgICAgfSwgZmFsc2UpOwogICAgPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+
CjxwcmUgaWQ9ImxvZyI+PC9wcmU+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281875</attachid>
            <date>2016-06-22 14:57:55 -0700</date>
            <delta_ts>2016-06-23 11:47:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159038-20160622145747.patch</filename>
            <type>text/plain</type>
            <size>6037</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2LTIyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gcmVx
dWVzdEZyYW1lQW5pbWF0aW9uIGNhbGxiYWNrIHRpbWVzdGFtcCBzaG91bGQgYmUgdmVyeSBjbG9z
ZSB0byBQZXJmb3JtYW5jZS5ub3coKSAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhc3MgdGhlIFBlcmZvcm1hbmNlLm5vdygpIHRvIHJlcXVlc3RGcmFt
ZUFuaW1hdGlvbigpIGNhbGxiYWNrLiBEbyBub3QgYWRkCisgICAgICAgIHRoZSB0aW1lVW50aWxP
dXRwdXQgd2hpY2ggaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvdXRwdXRUaW1lIGFuZCBub3cg
c2luY2UKKyAgICAgICAgdGhpcyBhZGRpdGlvbiBtYWtlcyB1cyByZXBvcnQgYSB0aW1lc3RhbXAg
YWhlYWQgaW4gdGhlIGZ1dHVyZSBieSBhbG1vc3QgMzNtcy4KKworICAgICAgICBUZXN0OiBhbmlt
YXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbAorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwbGF5TGlua0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOgorCiAyMDE2LTA2LTIy
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyMDE2MjkpOiBXZWlyZCBidXR0b24gZ2xpdGNoaW5nIG9uIGdpdGh1Yi5jb20KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCShyZXZpc2lvbiAyMDIzNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTQgKzUwLDEwIEBAIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZyZXMKICAgICB9CiB9CiAKLXN0YXRpYyBDVlJldHVy
biBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGltZVN0YW1w
KiBub3csIGNvbnN0IENWVGltZVN0YW1wKiBvdXRwdXRUaW1lLCBDVk9wdGlvbkZsYWdzLCBDVk9w
dGlvbkZsYWdzKiwgdm9pZCogZGF0YSkKK3N0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxi
YWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGltZVN0YW1wKiwgY29uc3QgQ1ZUaW1lU3Rh
bXAqLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9pZCogZGF0YSkKIHsKICAgICBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqIG1vbml0b3IgPSBzdGF0aWNfY2FzdDxEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMqPihkYXRhKTsKLQotICAgIGRvdWJsZSBub3dTZWNvbmRzID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+
dmlkZW9UaW1lU2NhbGUpOwotICAgIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyA9IHN0YXRpY19j
YXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4o
b3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOwotICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmly
ZWQobm93U2Vjb25kcywgb3V0cHV0VGltZVNlY29uZHMpOwotCisgICAgbW9uaXRvci0+ZGlzcGxh
eUxpbmtGaXJlZCgpOwogICAgIHJldHVybiBrQ1ZSZXR1cm5TdWNjZXNzOwogfQogCkBAIC04OCw3
ICs4NCw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlM
aW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcykKK3Zv
aWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKCkKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkp
CkBAIC05NiwxMSArOTIsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxh
eUxpCiAKICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKIAotICAgIGRvdWJsZSB3
ZWJLaXRNb25vdG9uaWNOb3cgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBk
b3VibGUgdGltZVVudGlsT3V0cHV0ID0gb3V0cHV0VGltZVNlY29uZHMgLSBub3dTZWNvbmRzOwot
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB3ZWJLaXRNb25vdG9uaWNOb3c/Ci0g
ICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKHdlYktpdE1vbm90b25pY05vdyArIHRp
bWVVbnRpbE91dHB1dCk7Ci0KKyAgICBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUobW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogCiAgICAgLy8gRklYTUU6IElzIGl0IHJlYWxs
eSBva2F5IHRvIGNyZWF0ZSBhIHdlYWtQdHIgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgdGhl
biB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkPwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbd2Vha1B0ciA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwg
fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVk
KGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpOworICAgIHZvaWQg
ZGlzcGxheUxpbmtGaXJlZCgpOwogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMzQxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYt
MjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWFjXSByZXF1ZXN0RnJhbWVBbmltYXRpb24gY2FsbGJhY2sgdGltZXN0YW1wIHNob3VsZCBi
ZSB2ZXJ5IGNsb3NlIHRvIFBlcmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFj
ay10aW1lc3RhbXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2Fu
aW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbDogQWRkZWQuCisKIDIwMTYtMDYtMjIgIEFk
YW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFdl
YlJUQzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZWdvdGlhdGlvbm5lZWRlZCBldmVudCBpbiBNZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5p
bWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFtcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNh
bGxiYWNrLXRpbWVzdGFtcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1w
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2Fs
bGJhY2stdGltZXN0YW1wLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRp
b25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgY3VycmVudFRyaWFsID0gMDsKKyAgICAg
ICAgCisgICAgICAgIGZ1bmN0aW9uIGRvQW5pbWF0aW9uKHRpbWVzdGFtcCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29uc3QgVG9sZXJhbmNlID0gMzsKKyAgICAgICAgICAgIGNvbnN0IFdhcm11
cFRyaWFscyA9IDU7CisKKyAgICAgICAgICAgIGlmICgrK2N1cnJlbnRUcmlhbCA+IFdhcm11cFRy
aWFscyAmJiBNYXRoLmFicyh0aW1lc3RhbXAgLSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpID49
IFRvbGVyYW5jZSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ0aW1lc3RhbXAgb2YgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKCkgaXMgbXVjaCBkaWZmZXJlbnQgZnJvbSB3aW5kb3cucGVyZm9y
bWFuY2Uubm93KCkiKTsKKworICAgICAgICAgICAgY29uc3QgTWF4VHJpYWxzID0gMjU7CisgICAg
ICAgICAgICBpZiAoY3VycmVudFRyaWFsIDwgTWF4VHJpYWxzKQorICAgICAgICAgICAgICAgIHJl
cXVlc3RBbmltYXRpb25GcmFtZShkb0FuaW1hdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKGRvQW5pbWF0aW9uKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281921</attachid>
            <date>2016-06-23 11:47:30 -0700</date>
            <delta_ts>2016-06-23 12:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159038-20160623114720.patch</filename>
            <type>text/plain</type>
            <size>31535</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA2LTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgcmVxdWVzdEZy
YW1lQW5pbWF0aW9uKCkgY2FsbGJhY2sgdGltZXN0YW1wIHNob3VsZCBiZSB2ZXJ5IGNsb3NlIHRv
IFBlcmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFzcyB0aGUgUGVyZm9ybWFuY2Uubm93KCkgdG8gcmVxdWVzdEZyYW1lQW5p
bWF0aW9uKCkgY2FsbGJhY2suIERvIG5vdCBhZGQKKyAgICAgICAgdGhlIHRpbWVVbnRpbE91dHB1
dCB3aGljaCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG91dHB1dFRpbWUgYW5kIG5vdyBzaW5j
ZQorICAgICAgICB0aGlzIGFkZGl0aW9uIG1ha2VzIHVzIHJlcG9ydCBhIHRpbWVzdGFtcCBhaGVh
ZCBpbiB0aGUgZnV0dXJlIGJ5IGFsbW9zdCAzM21zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9u
IG5hbWVkICJub3dUaW1lc3RhbXAoKSIgaXMgYWRkZWQgdG8gdGhlIERPTVdpbmRvdyBjbGFzcy4g
SXQKKyAgICAgICAgY2FsbHMgUGVyZm9ybWFuY2Uubm93KCkgaWYgV0VCX1RJTUlORyBpcyBlbmFi
bGVkLCBvdGhlcndpc2UgaXQgY2FsbHMKKyAgICAgICAgbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkuIFRoZSByZXR1cm5lZCB0aW1lc3RhbXAgaXMgc2Vjb25kcyBhbmQgaXQgaXMKKyAgICAg
ICAgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IGxvYWRpbmcgdGltZS4KKworICAgICAgICBUaGUg
dGltZXN0YW1wIHBhc3Npbmcgd2lsbCBiZSByZW1vdmVkIGFsbCB0aGUgZG93biB0aWxsIHRoZSBj
YWxsZXJzIG9mCisgICAgICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNj
cmlwdGVkQW5pbWF0aW9ucygpLiBUaGUgY2FsbGVycyB3aWxsCisgICAgICAgIGdldHRpbmcgdGhl
IG5vdyB0aW1lc3RhbXAgYnkgY2FsbGluZyBET01XaW5kb3c6Om5vd1RpbWVzdGFtcCgpLgorCisg
ICAgICAgIFRlc3RzOiBhbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRt
bAorICAgICAgICAgICAgICAgYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tz
LXRpbWVzdGFtcC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpz
ZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjp3aW5k
b3dUaW1lVG9Qc2V1ZG9XYWxsVGltZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6bm93VGltZXN0YW1wKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNw
bGF5RGlkUmVmcmVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNl
dE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpkaXNwbGF5
UmVmcmVzaEZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
VXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgaGFu
ZGxlRGlzcGxheUxpbms6XSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFUaW1lVG9D
dXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwbGF5TGlu
a0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnN5bmNEaXNwbGF5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6bmV4dEFuaW1hdGlvblNlcnZpY2VUaW1l
KToKKwogMjAxNi0wNi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjAxNjI5KTogV2VpcmQgYnV0dG9uIGdsaXRjaGluZyBv
biBnaXRodWIuY29tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxOTAsMTEgKzYxOTAsMTEgQEAgdm9pZCBEb2N1bWVudDo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUo
aW50IAogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5jYW5jZWxDYWxsYmFjayhp
ZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSkKK3ZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCkKIHsKICAgICBpZiAoIW1fc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXItPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMobW9ub3RvbmljQW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyh0aW1lc3RhbXApOwogfQogCiB2b2lkIERvY3VtZW50OjpjbGVh
clNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNjksNyArMTE2OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUUpCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShQYXNzUmVm
UHRyPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPik7CiAgICAgdm9pZCBjYW5jZWxBbmlt
YXRpb25GcmFtZShpbnQgaWQpOwotICAgIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICB2b2lkIHNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2Vu
ZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgbmV3UG9zaXRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIEVsZW1lbnQqIHRhcmdldCA9IG51bGxwdHIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNsdWRl
ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
QEAgLTE0MCwxNSArMTQxLDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpj
YW5jZWwKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2
aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQordm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91Ymxl
IHRpbWVzdGFtcCkKIHsKICAgICBpZiAoIW1fY2FsbGJhY2tzLnNpemUoKSB8fCBtX3N1c3BlbmRD
b3VudCB8fCAhcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShSQUZDYWxsYmFja1N0YXJ0LCBSQUZDYWxs
YmFja0VuZCk7Ci0gICAgCi0gICAgZG91YmxlIGhpZ2hSZXNOb3dNcyA9IDEwMDAuMCAqIG1fZG9j
dW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9aZXJvQmFzZWREb2N1bWVu
dFRpbWUobW9ub3RvbmljVGltZU5vdyk7Ci0gICAgZG91YmxlIGxlZ2FjeUhpZ2hSZXNOb3dNcyA9
IDEwMDAuMCAqIG1fZG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9Q
c2V1ZG9XYWxsVGltZShtb25vdG9uaWNUaW1lTm93KTsKKworICAgIGRvdWJsZSBoaWdoUmVzTm93
TXMgPSAxMDAwICogdGltZXN0YW1wOworICAgIGRvdWJsZSBsZWdhY3lIaWdoUmVzTm93TXMgPSAx
MDAwICogbV9kb2N1bWVudC0+bG9hZGVyKCktPnRpbWluZygpLndpbmRvd1RpbWVUb1BzZXVkb1dh
bGxUaW1lKHRpbWVzdGFtcCk7CiAKICAgICAvLyBGaXJzdCwgZ2VuZXJhdGUgYSBsaXN0IG9mIGNh
bGxiYWNrcyB0byBjb25zaWRlci4gIENhbGxiYWNrcyByZWdpc3RlcmVkIGZyb20gdGhpcyBwb2lu
dAogICAgIC8vIG9uIGFyZSBjb25zaWRlcmVkIG9ubHkgZm9yIHRoZSAibmV4dCIgZnJhbWUsIG5v
dCB0aGlzIG9uZS4KQEAgLTIxNiw3ICsyMTcsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c2NoZWR1CiAgICAgICAgIGFuaW1hdGlvbkludGVydmFsID0gTWluaW11bVRocm90
dGxlZEFuaW1hdGlvbkludGVydmFsOwogI2VuZGlmCiAKLSAgICBkb3VibGUgc2NoZWR1bGVEZWxh
eSA9IHN0ZDo6bWF4PGRvdWJsZT4oYW5pbWF0aW9uSW50ZXJ2YWwgLSAobW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVNb25vdG9uaWMpLCAwKTsK
KyAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4PGRvdWJsZT4oYW5pbWF0aW9uSW50
ZXJ2YWwgLSAobV9kb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpIC0gbV9sYXN0
QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwKTsKICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0
T25lU2hvdChzY2hlZHVsZURlbGF5KTsKICNlbHNlCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gbV9kb2N1bWVudC0+dmlldygpKQpAQCAtMjI3LDEzICsyMjgsMTMgQEAgdm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRV9USU1FUikKIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRp
b25UaW1lckZpcmVkKCkKIHsKLSAgICBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVNb25vdG9uaWMg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBzZXJ2aWNlU2NyaXB0ZWRBbmlt
YXRpb25zKG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1vbm90b25pYyk7CisgICAgbV9sYXN0QW5p
bWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0
YW1wKCk7CisgICAgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWVzdGFtcCk7CiB9CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikKLXZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpkaXNwbGF5UmVmcmVz
aEZpcmVkKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQordm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoKQogewotICAgIHNlcnZpY2VTY3JpcHRlZEFu
aW1hdGlvbnMobW9ub3RvbmljVGltZU5vdyk7CisgICAgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9u
cyhtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkpOwogfQogI2VuZGlmCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBDYWxsYmFja0lkIHJlZ2lzdGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4pOwogICAgIHZvaWQgY2FuY2VsQ2FsbGJhY2so
Q2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lTm93KTsKKyAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91
YmxlIHRpbWVzdGFtcCk7CiAKICAgICB2b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3VtZSgp
OwpAQCAtODgsMTEgKzg4LDExIEBAIHByaXZhdGU6CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX1RJTUVSKQogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIFRpbWVy
IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1v
bm90b25pYyB7IDAgfTsKKyAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAg
eyAwIH07CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQogICAgIC8vIE92ZXJyaWRlIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQKLSAgICB2
b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxh
eUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1VzaW5nVGltZXIgeyBmYWxzZSB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDIzNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDI0LDE5ICs2NDI0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQmVoYXZpb3JzUmUKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogUmVmUHRyPFZp
ZGVvUGxheWJhY2tRdWFsaXR5PiBIVE1MTWVkaWFFbGVtZW50OjpnZXRWaWRlb1BsYXliYWNrUXVh
bGl0eSgpCiB7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgRE9NV2luZG93KiBkb21XaW5k
b3cgPSBkb2N1bWVudCgpLmRvbVdpbmRvdygpOwotICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5j
ZSA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+cGVyZm9ybWFuY2UoKSA6IG51bGxwdHI7Ci0gICAg
ZG91YmxlIG5vdyA9IHBlcmZvcm1hbmNlID8gcGVyZm9ybWFuY2UtPm5vdygpIDogMDsKLSNlbHNl
Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50KCkubG9hZGVyKCk7Ci0gICAg
ZG91YmxlIG5vdyA9IGxvYWRlciA/IDEwMDAuMCAqIGxvYWRlci0+dGltaW5nKCkubW9ub3Rvbmlj
VGltZVRvWmVyb0Jhc2VkRG9jdW1lbnRUaW1lKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
KSA6IDA7Ci0jZW5kaWYKKyAgICBkb3VibGUgdGltZXN0YW1wID0gZG9tV2luZG93ID8gMTAwMCAq
IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkgOiAwOwogCiAgICAgaWYgKCFtX3BsYXllcikKLSAg
ICAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpjcmVhdGUobm93LCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpjcmVhdGUodGltZXN0YW1w
LCAwLCAwLCAwLCAwKTsKIAotICAgIHJldHVybiBWaWRlb1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRl
KG5vdywKKyAgICByZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3RhbXAs
CiAgICAgICAgIG1fZHJvcHBlZFZpZGVvRnJhbWVzICsgbV9wbGF5ZXItPnRvdGFsVmlkZW9GcmFt
ZXMoKSwKICAgICAgICAgbV9kcm9wcGVkVmlkZW9GcmFtZXMgKyBtX3BsYXllci0+ZHJvcHBlZFZp
ZGVvRnJhbWVzKCksCiAgICAgICAgIG1fcGxheWVyLT5jb3JydXB0ZWRWaWRlb0ZyYW1lcygpLApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAJKHJl
dmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1p
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMSBAQCBkb3VibGUgRG9jdW1lbnRM
b2FkVGltaW5nOjptb25vdG9uaWNUaW1lCiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlV2FsbFRpbWUg
KyBtb25vdG9uaWNUaW1lIC0gbV9yZWZlcmVuY2VNb25vdG9uaWNUaW1lOwogfQogCitkb3VibGUg
RG9jdW1lbnRMb2FkVGltaW5nOjp3aW5kb3dUaW1lVG9Qc2V1ZG9XYWxsVGltZShkb3VibGUgd2lu
ZG93VGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VXYWxsVGltZSArIHdpbmRv
d1RpbWU7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjptYXJrTmF2aWdhdGlvblN0YXJ0
KCkKIHsKICAgICBBU1NFUlQoIW1fbmF2aWdhdGlvblN0YXJ0ICYmICFtX3JlZmVyZW5jZU1vbm90
b25pY1RpbWUgJiYgIW1fcmVmZXJlbmNlV2FsbFRpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lVG9aZXJvQmFz
ZWREb2N1bWVudFRpbWUoZG91YmxlKSBjb25zdDsKICAgICBkb3VibGUgbW9ub3RvbmljVGltZVRv
UHNldWRvV2FsbFRpbWUoZG91YmxlKSBjb25zdDsKKyAgICBkb3VibGUgd2luZG93VGltZVRvUHNl
dWRvV2FsbFRpbWUoZG91YmxlIHdpbmRvd1RpbWUpIGNvbnN0OwogCiAgICAgdm9pZCBtYXJrTmF2
aWdhdGlvblN0YXJ0KCk7CiAgICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0
aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDMsNiArNzQzLDIyIEBAIFBlcmZvcm1hbmNl
KiBET01XaW5kb3c6OnBlcmZvcm1hbmNlKCkgY28KIH0KICNlbmRpZgogCitkb3VibGUgRE9NV2lu
ZG93Ojpub3dUaW1lc3RhbXAoKSBjb25zdAoreworICAgIGRvdWJsZSB0aW1lc3RhbXAgPSAwOwor
I2lmIEVOQUJMRShXRUJfVElNSU5HKQorICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSA9IHRo
aXMtPnBlcmZvcm1hbmNlKCk7CisgICAgdGltZXN0YW1wID0gcGVyZm9ybWFuY2UgPyBwZXJmb3Jt
YW5jZS0+bm93KCkgLyAxMDAwIDogMDsKKyNlbmRpZgorCisgICAgaWYgKCF0aW1lc3RhbXAgJiYg
ZG9jdW1lbnQoKSkgeworICAgICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnQo
KS0+bG9hZGVyKCk7CisgICAgICAgIHRpbWVzdGFtcCA9IGxvYWRlciA/IGxvYWRlci0+dGltaW5n
KCkubW9ub3RvbmljVGltZVRvWmVyb0Jhc2VkRG9jdW1lbnRUaW1lKG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpKSA6IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRpbWVzdGFtcDsKK30KKwog
TG9jYXRpb24qIERPTVdpbmRvdzo6bG9jYXRpb24oKSBjb25zdAogewogICAgIGlmICghaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJl
dmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxNiw2ICszMTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSgpIGNvbnN0
OwogI2VuZGlmCisgICAgICAgIGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKIAogI2lmIFBM
QVRGT1JNKElPUykKICAgICAgICAgdm9pZCBpbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0Nv
dW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMDIzNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4MjksNyArMjgyOSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1bnNjaGVkdWxlUmVsYXlvdXQoKQog
fQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotdm9pZCBGcmFtZVZpZXc6
OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0
VGltZSkKK3ZvaWQgRnJhbWVWaWV3OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSB0
aW1lc3RhbXApCiB7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgZnJhbWUt
PnZpZXcoKS0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKQEAgLTI4NDEsNyArMjg0MSw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb24KICAgICAgICAgZG9jdW1l
bnRzLmFwcGVuZChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50
IDogZG9jdW1lbnRzKQotICAgICAgICBkb2N1bWVudC0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9u
cyhtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUpOworICAgICAgICBkb2N1bWVudC0+c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyh0aW1lc3RhbXApOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIHZvaWQgd2ls
bFJlY2FsY1N0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDcgQEAgUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZgogfQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi0gICAgOiBt
X21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSgwKQotICAgICwgbV9hY3RpdmUodHJ1ZSkKKyAg
ICA6IG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3NjaGVkdWxlZChmYWxzZSkKICAgICAsIG1fcHJl
dmlvdXNGcmFtZURvbmUodHJ1ZSkKICAgICAsIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQoMCkKQEAg
LTkwLDggKzg5LDYgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudAog
CiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goKQogewotICAg
IGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWU7Ci0KICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKQEAgLTEw
MCw3ICs5Nyw2IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmUKICAg
ICAgICAgICAgIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPSAwOwogCiAgICAgICAgIG1fc2NoZWR1
bGVkID0gZmFsc2U7Ci0gICAgICAgIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IG1fbW9u
b3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIH0KIAogICAgIC8vIFRoZSBjYWxsIGJhY2sg
Y2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5lZWQg
dG8gcHJvdGVjdApAQCAtMTEzLDcgKzEwOSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5RGlkUmUKICAgICBtX2NsaWVudHNUb0JlTm90aWZpZWQgPSAmY2xpZW50c1RvQmVO
b3RpZmllZDsKICAgICB3aGlsZSAoIWNsaWVudHNUb0JlTm90aWZpZWQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gY2xpZW50c1RvQmVO
b3RpZmllZC50YWtlQW55KCk7Ci0gICAgICAgIGNsaWVudC0+ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQobW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50LT5maXJl
RGlzcGxheVJlZnJlc2hJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRo
aXMgZnVuY3Rpb24gd2FzIHJlZW50ZXJlZC4gSW4gdGhhdCBjYXNlLCBzdG9wIGl0ZXJhdGluZwog
ICAgICAgICAvLyBzaW5jZSBpdCdzIG5vdCBzYWZlIHRvIHVzZSB0aGUgc2V0IGFueSBtb3JlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJldmlvdXNGcmFtZURvbmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9CiAgICAgdm9pZCBzZXRJc1By
ZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3VzRnJhbWVEb25lID0gZG9uZTsg
fQogCi0gICAgdm9pZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0YXJ0
VGltZSkgeyBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQotCiAg
ICAgTG9jayYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9CiAKICAgICBzdGF0aWMgUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCk7CkBAIC04Myw3ICs4MSw2IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwbGF5RGlkUmVmcmVzaCgpOwogCi0gICAgZG91YmxlIG1fbW9ub3Rv
bmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgYm9vbCBtX3Nj
aGVkdWxlZDsKICAgICBib29sIG1fcHJldmlvdXNGcmFtZURvbmU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDEzICs0MiwxMyBAQCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6
On5EaXNwbGF5UmVmCiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnVucmVnaXN0ZXJDbGllbnQoKnRoaXMpOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFt
cCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKLSAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVzdGFt
cCk7CisgICAgZGlzcGxheVJlZnJlc2hGaXJlZCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCgpOwogCiAgICAgLy8gQWx3YXlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCi0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFt
cCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVm
cmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0ID0gMDsKIApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIGlzU2NoZWR1bGVkKSB7
IG1fc2NoZWR1bGVkID0gaXNTY2hlZHVsZWQ7IH0KICAgICBib29sIGlzU2NoZWR1bGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zY2hlZHVsZWQ7IH0KIAotICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNo
SWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZCgpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSwxMSArNzEsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpzY3JlZW5E
aWRDaGFuCiB9CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQotdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChkb3Vi
bGUgdGltZXN0YW1wKQordm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hG
aXJlZCgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAgICAgbV9zY2hlZHVsZWQg
PSBmYWxzZTsKLSAgICAKICAgICBtX2NsaWVudC5mbHVzaExheWVyc1Nvb24oKnRoaXMpOwogfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyVXBkYXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi0gICAgdm9pZCBkaXNwbGF5UmVm
cmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGxheVJl
ZnJlc2hGaXJlZCgpIG92ZXJyaWRlOwogICAgIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50JiBt
X2NsaWVudDsKICNlbmRpZgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZChkb3VibGUgbm93U2Vjb25kcyk7CisgICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCk7CiAg
ICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0JKHJldmlzaW9uIDIwMjM0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgLSAodm9pZClkZWFsbG9j
CiAtICh2b2lkKWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlMaW5rICopc2VuZGVyCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX21vbml0b3ItPmRpc3BsYXlMaW5rRmly
ZWQoc2VuZGVyLnRpbWVzdGFtcCk7CisgICAgbV9tb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKCk7
CiB9CiAKIC0gKHZvaWQpaW52YWxpZGF0ZQpAQCAtMTA5LDIwICsxMDksMTIgQEAgYm9vbCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1M6OnJlcXVlc3RSZQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBtYXkgYmUgYSBuby1vcCBpZiBDQUN1cnJlbnRNZWRpYVRpbWUg
aXMgKmd1YXJhbnRlZWQqIHRvIGJlIG1hY2hfYWJzb2x1dGVfdGltZS4KLSAgICByZXR1cm4gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Ci19
Ci0KLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJs
ZSBub3dTZWNvbmRzKQordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OmRpc3BsYXlMaW5r
RmlyZWQoKQogewogICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKLSAgICBzZXRNb25vdG9u
aWNBbmltYXRpb25TdGFydFRpbWUobWVkaWFUaW1lVG9DdXJyZW50VGltZShub3dTZWNvbmRzKSk7
Ci0KICAgICBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRo
aXMpOwogICAgIAogICAgIFRyYWNlUG9pbnQoUkFGRGlzcGxheUxpbmtGaXJlZCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE0ICs1MCwxMCBAQCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWM6On5EaXNwbGF5UmVmcmVzCiAgICAgfQogfQogCi1zdGF0aWMgQ1ZSZXR1cm4gZGlz
cGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93
LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25G
bGFncyosIHZvaWQqIGRhdGEpCitzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhD
VkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCosIGNvbnN0IENWVGltZVN0YW1wKiwg
Q1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpCiB7CiAgICAgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjKiBtb25pdG9yID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjKj4oZGF0YSk7Ci0KLSAgICBkb3VibGUgbm93U2Vjb25kcyA9IHN0YXRpY19jYXN0
PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVv
VGltZVNjYWxlKTsKLSAgICBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG91dHB1
dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKLSAgICBtb25pdG9yLT5kaXNwbGF5TGlua0ZpcmVkKG5v
d1NlY29uZHMsIG91dHB1dFRpbWVTZWNvbmRzKTsKLQorICAgIG1vbml0b3ItPmRpc3BsYXlMaW5r
RmlyZWQoKTsKICAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2VzczsKIH0KIApAQCAtODgsNyArODQs
NyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0Zp
cmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpCit2b2lkIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtGaXJlZCgpCiB7CiAgICAgTG9ja0hv
bGRlciBsb2NrKG11dGV4KCkpOwogICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQpAQCAt
OTYsMTIgKzkyLDYgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaQog
CiAgICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CiAKLSAgICBkb3VibGUgd2ViS2l0
TW9ub3RvbmljTm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgZG91Ymxl
IHRpbWVVbnRpbE91dHB1dCA9IG91dHB1dFRpbWVTZWNvbmRzIC0gbm93U2Vjb25kczsKLSAgICAv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgdXNpbmcgd2ViS2l0TW9ub3RvbmljTm93PwotICAgIHNl
dE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSh3ZWJLaXRNb25vdG9uaWNOb3cgKyB0aW1lVW50
aWxPdXRwdXQpOwotCi0KICAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IG9rYXkgdG8gY3JlYXRl
IGEgd2Vha1B0ciBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGFuZCB0aGVuIHVzZSBpdCBvbiB0aGUg
bWFpbiB0aHJlYWQ/CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUHRyID0gbV93
ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCldIHsKICAgICAgICAgaWYgKGF1dG8qIG1vbml0b3Ig
PSB3ZWFrUHRyLmdldCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAkocmV2
aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoKTsK
IAotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChkb3VibGUgbm93U2Vjb25kcywgZG91YmxlIG91
dHB1dFRpbWVTZWNvbmRzKTsKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKTsKICAgICBib29s
IHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAJ
KHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDcgKzE0NSw4IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0Rp
c3BsYXkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFVU0UoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpICYmICFVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBwcmV2aW91c2x5
IHJlZ2lzdGVyZWQgYW5pbWF0aW9uIGNhbGxiYWNrcyBhcmUgYmVpbmcgZXhlY3V0ZWQgYmVmb3Jl
IHdlIGZsdXNoIHRoZSBsYXllcnMuCi0gICAgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGF1dG8qIGRvY3VtZW50ID0g
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOworICAgIG1fbGFzdEFuaW1hdGlvblNlcnZp
Y2VUaW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd0luU2Vjb25kcygp
IDogV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhtX2xhc3RBbmltYXRpb25T
ZXJ2aWNlVGltZSk7CiAjZW5kaWYKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dXBk
YXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwpAQCAtMTU2LDcgKzE1NywxMCBA
QCBkb3VibGUgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6bmV4dEFuaW1hCiB7CiAgICAgLy8gQWNj
b3JkaW5nIHRvIHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3BlYywgckFGIGNhbGxiYWNrcyBz
aG91bGQgbm90IGJlIGZhc3RlciB0aGFuIDYwRlBTLgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
TWluaW1hbFRpbWVvdXRGb3JBbmltYXRpb25zID0gMS4gLyA2MC47Ci0gICAgcmV0dXJuIHN0ZDo6
bWF4PGRvdWJsZT4oMC4sIE1pbmltYWxUaW1lb3V0Rm9yQW5pbWF0aW9ucyAtIFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyBtX2xhc3RBbmltYXRpb25TZXJ2aWNlVGltZSk7CisK
KyAgICBhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAg
ICBkb3VibGUgdGltZXN0YW1wID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5v
d0luU2Vjb25kcygpIDogV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBy
ZXR1cm4gc3RkOjptYXg8ZG91YmxlPigwLiwgTWluaW1hbFRpbWVvdXRGb3JBbmltYXRpb25zIC0g
dGltZXN0YW1wICsgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM4MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA2LTIzICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgcmVxdWVzdEZyYW1l
QW5pbWF0aW9uKCkgY2FsbGJhY2sgdGltZXN0YW1wIHNob3VsZCBiZSB2ZXJ5IGNsb3NlIHRvIFBl
cmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEaXNw
bGF5UmVmcmVzaE1vbml0b3I6OmRpZFVwZGF0ZUxheWVycyk6CisKIDIwMTYtMDYtMjMgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMDExOTQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0JKHJldmlzaW9uIDIwMjM0MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVMYXllclRyZWVEaXNw
bGF5UmVmcmVzaE1vbml0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDYgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0bwogICAgICAgICByZXR1cm47CiAK
ICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKLSAgICBzZXRNb25vdG9uaWNBbmlt
YXRpb25TdGFydFRpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwotCiAgICAgaGFu
ZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKIH0KIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjAyMzQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMjMgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICByZXF1ZXN0RnJhbWVBbmltYXRp
b24oKSBjYWxsYmFjayB0aW1lc3RhbXAgc2hvdWxkIGJlIHZlcnkgY2xvc2UgdG8gUGVyZm9ybWFu
Y2Uubm93KCkgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTkwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFtcC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFt
cC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1tdWx0aXBsZS1j
YWxsYmFja3MtdGltZXN0YW1wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0
aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC5odG1sOiBBZGRlZC4K
KwogMjAxNi0wNi0yMiAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5j
b20+CiAKICAgICAgICAgV2ViUlRDOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5lZ290aWF0aW9ubmVl
ZGVkIGV2ZW50IGluIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbgpJbmRleDogTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10
aW1lc3RhbXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1j
YWxsYmFjay10aW1lc3RhbXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRp
b25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFtcC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBjdXJyZW50
RnJhbWUgPSAwOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gZG9BbmltYXRpb24odGltZXN0
YW1wKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUb2xlcmFuY2UgPSAzOworICAgICAg
ICAgICAgY29uc3QgV2FybXVwRnJhbWVzID0gNTsKKworICAgICAgICAgICAgdmFyIHBlcmZvcm1h
bmNlTm93ID0gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpOworICAgICAgICAgICAgaWYgKCsrY3Vy
cmVudEZyYW1lID4gV2FybXVwRnJhbWVzICYmIE1hdGguYWJzKHRpbWVzdGFtcCAtIHBlcmZvcm1h
bmNlTm93KSA+PSBUb2xlcmFuY2UpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkgdGltZXN0YW1wID0gIiArIHRpbWVzdGFtcCArICIsIHdpbmRvdy5w
ZXJmb3JtYW5jZS5ub3coKSA9ICIgKyBwZXJmb3JtYW5jZU5vdyk7CisKKyAgICAgICAgICAgIGNv
bnN0IE1heEZyYW1lcyA9IDI1OworICAgICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZSA9PSBNYXhG
cmFtZXMpCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvQW5pbWF0aW9uKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZG9BbmltYXRpb24pOworICAgIDwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10aW1lc3RhbXAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10
aW1lc3RhbXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9h
bmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10aW1l
c3RhbXAuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10aW1lc3RhbXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgY3VycmVudEZyYW1lID0gMDsKKyAgICAg
ICAgdmFyIHRpbWVzdGFtcDEgPSAwOworCisgICAgICAgIGZ1bmN0aW9uIGRvQW5pbWF0aW9uMSh0
aW1lc3RhbXApCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVzdGFtcDEgPSB0aW1lc3RhbXA7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IE1heEZyYW1lcyA9IDI1OworICAgICAg
ICAgICAgaWYgKGN1cnJlbnRGcmFtZSA9PSBNYXhGcmFtZXMpCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUoZG9BbmltYXRpb24xKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoZG9BbmltYXRpb24yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGRvQW5pbWF0aW9uMih0aW1lc3RhbXApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IFdhcm11cEZyYW1lcyA9IDU7CisgICAgICAgICAgICBpZiAoKytjdXJyZW50
RnJhbWUgPiBXYXJtdXBGcmFtZXMgJiYgdGltZXN0YW1wICE9IHRpbWVzdGFtcDEpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgcGVyZm9ybWFuY2VOb3cgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgidGltZXN0YW1wMSA9ICIgKyB0aW1lc3RhbXAx
ICsgIiwgdGltZXN0YW1wMiA9ICIgKyB0aW1lc3RhbXAyICArICIsIHdpbmRvdy5wZXJmb3JtYW5j
ZS5ub3coKSA9ICIgKyBwZXJmb3JtYW5jZU5vdyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvQW5pbWF0aW9uMSk7CisgICAgPC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281927</attachid>
            <date>2016-06-23 12:24:36 -0700</date>
            <delta_ts>2016-06-23 14:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159038-20160623122425.patch</filename>
            <type>text/plain</type>
            <size>31564</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA2LTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgcmVxdWVzdEZy
YW1lQW5pbWF0aW9uKCkgY2FsbGJhY2sgdGltZXN0YW1wIHNob3VsZCBiZSB2ZXJ5IGNsb3NlIHRv
IFBlcmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFzcyB0aGUgUGVyZm9ybWFuY2Uubm93KCkgdG8gcmVxdWVzdEZyYW1lQW5p
bWF0aW9uKCkgY2FsbGJhY2suIERvIG5vdCBhZGQKKyAgICAgICAgdGhlIHRpbWVVbnRpbE91dHB1
dCB3aGljaCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG91dHB1dFRpbWUgYW5kIG5vdyBzaW5j
ZQorICAgICAgICB0aGlzIGFkZGl0aW9uIG1ha2VzIHVzIHJlcG9ydCBhIHRpbWVzdGFtcCBhaGVh
ZCBpbiB0aGUgZnV0dXJlIGJ5IGFsbW9zdCAzM21zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9u
IG5hbWVkICJub3dUaW1lc3RhbXAoKSIgaXMgYWRkZWQgdG8gdGhlIERPTVdpbmRvdyBjbGFzcy4g
SXQKKyAgICAgICAgY2FsbHMgUGVyZm9ybWFuY2Uubm93KCkgaWYgV0VCX1RJTUlORyBpcyBlbmFi
bGVkLCBvdGhlcndpc2UgaXQgY2FsbHMKKyAgICAgICAgbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkuIFRoZSByZXR1cm5lZCB0aW1lc3RhbXAgaXMgc2Vjb25kcyBhbmQgaXQgaXMKKyAgICAg
ICAgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IGxvYWRpbmcgdGltZS4KKworICAgICAgICBUaGUg
dGltZXN0YW1wIHBhc3Npbmcgd2lsbCBiZSByZW1vdmVkIGFsbCB0aGUgZG93biB0aWxsIHRoZSBj
YWxsZXJzIG9mCisgICAgICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNj
cmlwdGVkQW5pbWF0aW9ucygpLiBUaGUgY2FsbGVycyB3aWxsCisgICAgICAgIGdldHRpbmcgdGhl
IG5vdyB0aW1lc3RhbXAgYnkgY2FsbGluZyBET01XaW5kb3c6Om5vd1RpbWVzdGFtcCgpLgorCisg
ICAgICAgIFRlc3RzOiBhbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRt
bAorICAgICAgICAgICAgICAgYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tz
LXRpbWVzdGFtcC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpz
ZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjp3aW5k
b3dUaW1lVG9Qc2V1ZG9XYWxsVGltZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6bm93VGltZXN0YW1wKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNw
bGF5RGlkUmVmcmVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNl
dE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpkaXNwbGF5
UmVmcmVzaEZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
VXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TLm1tOgorICAgICAgICAoLVtXZWJEaXNwbGF5TGlua0hhbmRsZXIgaGFu
ZGxlRGlzcGxheUxpbms6XSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFUaW1lVG9D
dXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwbGF5TGlu
a0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnN5bmNEaXNwbGF5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6bmV4dEFuaW1hdGlvblNlcnZpY2VUaW1l
KToKKwogMjAxNi0wNi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjAxNjI5KTogV2VpcmQgYnV0dG9uIGdsaXRjaGluZyBv
biBnaXRodWIuY29tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxOTAsMTEgKzYxOTAsMTEgQEAgdm9pZCBEb2N1bWVudDo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUo
aW50IAogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5jYW5jZWxDYWxsYmFjayhp
ZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSkKK3ZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCkKIHsKICAgICBpZiAoIW1fc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXItPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMobW9ub3RvbmljQW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyh0aW1lc3RhbXApOwogfQogCiB2b2lkIERvY3VtZW50OjpjbGVh
clNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNjksNyArMTE2OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUUpCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShQYXNzUmVm
UHRyPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPik7CiAgICAgdm9pZCBjYW5jZWxBbmlt
YXRpb25GcmFtZShpbnQgaWQpOwotICAgIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICB2b2lkIHNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2Vu
ZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgbmV3UG9zaXRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIEVsZW1lbnQqIHRhcmdldCA9IG51bGxwdHIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNsdWRl
ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
QEAgLTE0MCwxNSArMTQxLDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpj
YW5jZWwKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2
aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQordm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91Ymxl
IHRpbWVzdGFtcCkKIHsKICAgICBpZiAoIW1fY2FsbGJhY2tzLnNpemUoKSB8fCBtX3N1c3BlbmRD
b3VudCB8fCAhcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShSQUZDYWxsYmFja1N0YXJ0LCBSQUZDYWxs
YmFja0VuZCk7Ci0gICAgCi0gICAgZG91YmxlIGhpZ2hSZXNOb3dNcyA9IDEwMDAuMCAqIG1fZG9j
dW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9aZXJvQmFzZWREb2N1bWVu
dFRpbWUobW9ub3RvbmljVGltZU5vdyk7Ci0gICAgZG91YmxlIGxlZ2FjeUhpZ2hSZXNOb3dNcyA9
IDEwMDAuMCAqIG1fZG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9Q
c2V1ZG9XYWxsVGltZShtb25vdG9uaWNUaW1lTm93KTsKKworICAgIGRvdWJsZSBoaWdoUmVzTm93
TXMgPSAxMDAwICogdGltZXN0YW1wOworICAgIGRvdWJsZSBsZWdhY3lIaWdoUmVzTm93TXMgPSAx
MDAwICogbV9kb2N1bWVudC0+bG9hZGVyKCktPnRpbWluZygpLndpbmRvd1RpbWVUb1BzZXVkb1dh
bGxUaW1lKHRpbWVzdGFtcCk7CiAKICAgICAvLyBGaXJzdCwgZ2VuZXJhdGUgYSBsaXN0IG9mIGNh
bGxiYWNrcyB0byBjb25zaWRlci4gIENhbGxiYWNrcyByZWdpc3RlcmVkIGZyb20gdGhpcyBwb2lu
dAogICAgIC8vIG9uIGFyZSBjb25zaWRlcmVkIG9ubHkgZm9yIHRoZSAibmV4dCIgZnJhbWUsIG5v
dCB0aGlzIG9uZS4KQEAgLTIxNiw3ICsyMTcsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c2NoZWR1CiAgICAgICAgIGFuaW1hdGlvbkludGVydmFsID0gTWluaW11bVRocm90
dGxlZEFuaW1hdGlvbkludGVydmFsOwogI2VuZGlmCiAKLSAgICBkb3VibGUgc2NoZWR1bGVEZWxh
eSA9IHN0ZDo6bWF4PGRvdWJsZT4oYW5pbWF0aW9uSW50ZXJ2YWwgLSAobW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVNb25vdG9uaWMpLCAwKTsK
KyAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4PGRvdWJsZT4oYW5pbWF0aW9uSW50
ZXJ2YWwgLSAobV9kb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpIC0gbV9sYXN0
QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwKTsKICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0
T25lU2hvdChzY2hlZHVsZURlbGF5KTsKICNlbHNlCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gbV9kb2N1bWVudC0+dmlldygpKQpAQCAtMjI3LDEzICsyMjgsMTMgQEAgdm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRV9USU1FUikKIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRp
b25UaW1lckZpcmVkKCkKIHsKLSAgICBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVNb25vdG9uaWMg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBzZXJ2aWNlU2NyaXB0ZWRBbmlt
YXRpb25zKG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1vbm90b25pYyk7CisgICAgbV9sYXN0QW5p
bWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0
YW1wKCk7CisgICAgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWVzdGFtcCk7CiB9CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikKLXZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpkaXNwbGF5UmVmcmVz
aEZpcmVkKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQordm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoKQogewotICAgIHNlcnZpY2VTY3JpcHRlZEFu
aW1hdGlvbnMobW9ub3RvbmljVGltZU5vdyk7CisgICAgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9u
cyhtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkpOwogfQogI2VuZGlmCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBDYWxsYmFja0lkIHJlZ2lzdGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4pOwogICAgIHZvaWQgY2FuY2VsQ2FsbGJhY2so
Q2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lTm93KTsKKyAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91
YmxlIHRpbWVzdGFtcCk7CiAKICAgICB2b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3VtZSgp
OwpAQCAtODgsMTEgKzg4LDExIEBAIHByaXZhdGU6CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX1RJTUVSKQogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIFRpbWVy
IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1v
bm90b25pYyB7IDAgfTsKKyAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAg
eyAwIH07CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQogICAgIC8vIE92ZXJyaWRlIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQKLSAgICB2
b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxh
eUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1VzaW5nVGltZXIgeyBmYWxzZSB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDIzNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDI0LDE5ICs2NDI0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQmVoYXZpb3JzUmUKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogUmVmUHRyPFZp
ZGVvUGxheWJhY2tRdWFsaXR5PiBIVE1MTWVkaWFFbGVtZW50OjpnZXRWaWRlb1BsYXliYWNrUXVh
bGl0eSgpCiB7Ci0jaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgRE9NV2luZG93KiBkb21XaW5k
b3cgPSBkb2N1bWVudCgpLmRvbVdpbmRvdygpOwotICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5j
ZSA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+cGVyZm9ybWFuY2UoKSA6IG51bGxwdHI7Ci0gICAg
ZG91YmxlIG5vdyA9IHBlcmZvcm1hbmNlID8gcGVyZm9ybWFuY2UtPm5vdygpIDogMDsKLSNlbHNl
Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50KCkubG9hZGVyKCk7Ci0gICAg
ZG91YmxlIG5vdyA9IGxvYWRlciA/IDEwMDAuMCAqIGxvYWRlci0+dGltaW5nKCkubW9ub3Rvbmlj
VGltZVRvWmVyb0Jhc2VkRG9jdW1lbnRUaW1lKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
KSA6IDA7Ci0jZW5kaWYKKyAgICBkb3VibGUgdGltZXN0YW1wID0gZG9tV2luZG93ID8gMTAwMCAq
IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkgOiAwOwogCiAgICAgaWYgKCFtX3BsYXllcikKLSAg
ICAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpjcmVhdGUobm93LCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpjcmVhdGUodGltZXN0YW1w
LCAwLCAwLCAwLCAwKTsKIAotICAgIHJldHVybiBWaWRlb1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRl
KG5vdywKKyAgICByZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3RhbXAs
CiAgICAgICAgIG1fZHJvcHBlZFZpZGVvRnJhbWVzICsgbV9wbGF5ZXItPnRvdGFsVmlkZW9GcmFt
ZXMoKSwKICAgICAgICAgbV9kcm9wcGVkVmlkZW9GcmFtZXMgKyBtX3BsYXllci0+ZHJvcHBlZFZp
ZGVvRnJhbWVzKCksCiAgICAgICAgIG1fcGxheWVyLT5jb3JydXB0ZWRWaWRlb0ZyYW1lcygpLApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAJKHJl
dmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1p
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMSBAQCBkb3VibGUgRG9jdW1lbnRM
b2FkVGltaW5nOjptb25vdG9uaWNUaW1lCiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlV2FsbFRpbWUg
KyBtb25vdG9uaWNUaW1lIC0gbV9yZWZlcmVuY2VNb25vdG9uaWNUaW1lOwogfQogCitkb3VibGUg
RG9jdW1lbnRMb2FkVGltaW5nOjp3aW5kb3dUaW1lVG9Qc2V1ZG9XYWxsVGltZShkb3VibGUgd2lu
ZG93VGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VXYWxsVGltZSArIHdpbmRv
d1RpbWU7Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjptYXJrTmF2aWdhdGlvblN0YXJ0
KCkKIHsKICAgICBBU1NFUlQoIW1fbmF2aWdhdGlvblN0YXJ0ICYmICFtX3JlZmVyZW5jZU1vbm90
b25pY1RpbWUgJiYgIW1fcmVmZXJlbmNlV2FsbFRpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lVG9aZXJvQmFz
ZWREb2N1bWVudFRpbWUoZG91YmxlKSBjb25zdDsKICAgICBkb3VibGUgbW9ub3RvbmljVGltZVRv
UHNldWRvV2FsbFRpbWUoZG91YmxlKSBjb25zdDsKKyAgICBkb3VibGUgd2luZG93VGltZVRvUHNl
dWRvV2FsbFRpbWUoZG91YmxlIHdpbmRvd1RpbWUpIGNvbnN0OwogCiAgICAgdm9pZCBtYXJrTmF2
aWdhdGlvblN0YXJ0KCk7CiAgICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0
aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDMsNiArNzQzLDIyIEBAIFBlcmZvcm1hbmNl
KiBET01XaW5kb3c6OnBlcmZvcm1hbmNlKCkgY28KIH0KICNlbmRpZgogCitkb3VibGUgRE9NV2lu
ZG93Ojpub3dUaW1lc3RhbXAoKSBjb25zdAoreworICAgIGRvdWJsZSB0aW1lc3RhbXAgPSAwOwor
I2lmIEVOQUJMRShXRUJfVElNSU5HKQorICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSA9IHRo
aXMtPnBlcmZvcm1hbmNlKCk7CisgICAgdGltZXN0YW1wID0gcGVyZm9ybWFuY2UgPyBwZXJmb3Jt
YW5jZS0+bm93KCkgLyAxMDAwIDogMDsKKyNlbmRpZgorCisgICAgaWYgKCF0aW1lc3RhbXAgJiYg
ZG9jdW1lbnQoKSkgeworICAgICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnQo
KS0+bG9hZGVyKCk7CisgICAgICAgIHRpbWVzdGFtcCA9IGxvYWRlciA/IGxvYWRlci0+dGltaW5n
KCkubW9ub3RvbmljVGltZVRvWmVyb0Jhc2VkRG9jdW1lbnRUaW1lKG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpKSA6IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRpbWVzdGFtcDsKK30KKwog
TG9jYXRpb24qIERPTVdpbmRvdzo6bG9jYXRpb24oKSBjb25zdAogewogICAgIGlmICghaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJl
dmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxNiw2ICszMTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSgpIGNvbnN0
OwogI2VuZGlmCisgICAgICAgIGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKIAogI2lmIFBM
QVRGT1JNKElPUykKICAgICAgICAgdm9pZCBpbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0Nv
dW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMDIzNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4MjksNyArMjgyOSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1bnNjaGVkdWxlUmVsYXlvdXQoKQog
fQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotdm9pZCBGcmFtZVZpZXc6
OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0
VGltZSkKK3ZvaWQgRnJhbWVWaWV3OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSB0
aW1lc3RhbXApCiB7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgZnJhbWUt
PnZpZXcoKS0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKQEAgLTI4NDEsNyArMjg0MSw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb24KICAgICAgICAgZG9jdW1l
bnRzLmFwcGVuZChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50
IDogZG9jdW1lbnRzKQotICAgICAgICBkb2N1bWVudC0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9u
cyhtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUpOworICAgICAgICBkb2N1bWVudC0+c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyh0aW1lc3RhbXApOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIHZvaWQgd2ls
bFJlY2FsY1N0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDcgQEAgUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZgogfQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi0gICAgOiBt
X21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSgwKQotICAgICwgbV9hY3RpdmUodHJ1ZSkKKyAg
ICA6IG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3NjaGVkdWxlZChmYWxzZSkKICAgICAsIG1fcHJl
dmlvdXNGcmFtZURvbmUodHJ1ZSkKICAgICAsIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQoMCkKQEAg
LTkwLDggKzg5LDYgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudAog
CiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goKQogewotICAg
IGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWU7Ci0KICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKQEAgLTEw
MCw3ICs5Nyw2IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmUKICAg
ICAgICAgICAgIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPSAwOwogCiAgICAgICAgIG1fc2NoZWR1
bGVkID0gZmFsc2U7Ci0gICAgICAgIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IG1fbW9u
b3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIH0KIAogICAgIC8vIFRoZSBjYWxsIGJhY2sg
Y2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5lZWQg
dG8gcHJvdGVjdApAQCAtMTEzLDcgKzEwOSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5RGlkUmUKICAgICBtX2NsaWVudHNUb0JlTm90aWZpZWQgPSAmY2xpZW50c1RvQmVO
b3RpZmllZDsKICAgICB3aGlsZSAoIWNsaWVudHNUb0JlTm90aWZpZWQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gY2xpZW50c1RvQmVO
b3RpZmllZC50YWtlQW55KCk7Ci0gICAgICAgIGNsaWVudC0+ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQobW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50LT5maXJl
RGlzcGxheVJlZnJlc2hJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRo
aXMgZnVuY3Rpb24gd2FzIHJlZW50ZXJlZC4gSW4gdGhhdCBjYXNlLCBzdG9wIGl0ZXJhdGluZwog
ICAgICAgICAvLyBzaW5jZSBpdCdzIG5vdCBzYWZlIHRvIHVzZSB0aGUgc2V0IGFueSBtb3JlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJldmlvdXNGcmFtZURvbmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9CiAgICAgdm9pZCBzZXRJc1By
ZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3VzRnJhbWVEb25lID0gZG9uZTsg
fQogCi0gICAgdm9pZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0YXJ0
VGltZSkgeyBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQotCiAg
ICAgTG9jayYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9CiAKICAgICBzdGF0aWMgUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCk7CkBAIC04Myw3ICs4MSw2IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwbGF5RGlkUmVmcmVzaCgpOwogCi0gICAgZG91YmxlIG1fbW9ub3Rv
bmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgYm9vbCBtX3Nj
aGVkdWxlZDsKICAgICBib29sIG1fcHJldmlvdXNGcmFtZURvbmU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDEzICs0MiwxMyBAQCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6
On5EaXNwbGF5UmVmCiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLnVucmVnaXN0ZXJDbGllbnQoKnRoaXMpOwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFt
cCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKLSAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVzdGFt
cCk7CisgICAgZGlzcGxheVJlZnJlc2hGaXJlZCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCgpOwogCiAgICAgLy8gQWx3YXlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCi0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFt
cCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVm
cmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0ID0gMDsKIApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIGlzU2NoZWR1bGVkKSB7
IG1fc2NoZWR1bGVkID0gaXNTY2hlZHVsZWQ7IH0KICAgICBib29sIGlzU2NoZWR1bGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zY2hlZHVsZWQ7IH0KIAotICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNo
SWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZCgpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSwxMSArNzEsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpzY3JlZW5E
aWRDaGFuCiB9CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQotdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChkb3Vi
bGUgdGltZXN0YW1wKQordm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hG
aXJlZCgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAgICAgbV9zY2hlZHVsZWQg
PSBmYWxzZTsKLSAgICAKICAgICBtX2NsaWVudC5mbHVzaExheWVyc1Nvb24oKnRoaXMpOwogfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyVXBkYXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi0gICAgdm9pZCBkaXNwbGF5UmVm
cmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGxheVJl
ZnJlc2hGaXJlZCgpIG92ZXJyaWRlOwogICAgIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50JiBt
X2NsaWVudDsKICNlbmRpZgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKTsKIAotICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZChkb3VibGUgbm93U2Vjb25kcyk7CisgICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCk7CiAg
ICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0JKHJldmlzaW9uIDIwMjM0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDkgQEAgLSAodm9pZClkZWFsbG9j
CiAKIC0gKHZvaWQpaGFuZGxlRGlzcGxheUxpbms6KENBRGlzcGxheUxpbmsgKilzZW5kZXIKIHsK
KyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIG1fbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZChzZW5kZXIudGltZXN0YW1wKTsKKyAgICBt
X21vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQoKTsKIH0KIAogLSAodm9pZClpbnZhbGlkYXRlCkBA
IC0xMDksMjAgKzExMCwxMiBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6cmVxdWVz
dFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJy
ZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQotewotICAgIC8vIEZJWE1FOiBUaGlzIG1heSBiZSBh
IG5vLW9wIGlmIENBQ3VycmVudE1lZGlhVGltZSBpcyAqZ3VhcmFudGVlZCogdG8gYmUgbWFjaF9h
YnNvbHV0ZV90aW1lLgotICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAr
IHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKLX0KLQotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMpCit2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheUxpbmtGaXJlZCgpCiB7CiAgICAgaWYgKCFpc1ByZXZp
b3VzRnJhbWVEb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzUHJldmlvdXNGcmFt
ZURvbmUoZmFsc2UpOwotICAgIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZShtZWRpYVRp
bWVUb0N1cnJlbnRUaW1lKG5vd1NlY29uZHMpKTsKLQogICAgIGhhbmRsZURpc3BsYXlSZWZyZXNo
ZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7CiAgICAgCiAgICAgVHJhY2VQb2ludChS
QUZEaXNwbGF5TGlua0ZpcmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
Y3BwCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTQgKzUwLDEwIEBAIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZyZXMKICAg
ICB9CiB9CiAKLXN0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxp
bmtSZWYsIGNvbnN0IENWVGltZVN0YW1wKiBub3csIGNvbnN0IENWVGltZVN0YW1wKiBvdXRwdXRU
aW1lLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9pZCogZGF0YSkKK3N0YXRpYyBD
VlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGlt
ZVN0YW1wKiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdz
Kiwgdm9pZCogZGF0YSkKIHsKICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqIG1vbml0b3Ig
PSBzdGF0aWNfY2FzdDxEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqPihkYXRhKTsKLQotICAgIGRv
dWJsZSBub3dTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkgLyBz
dGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lU2NhbGUpOwotICAgIGRvdWJsZSBvdXRw
dXRUaW1lU2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1l
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOwotICAg
IG1vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQobm93U2Vjb25kcywgb3V0cHV0VGltZVNlY29uZHMp
OwotCisgICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwogICAgIHJldHVybiBrQ1ZSZXR1
cm5TdWNjZXNzOwogfQogCkBAIC04OCw3ICs4NCw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJs
ZSBvdXRwdXRUaW1lU2Vjb25kcykKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNw
bGF5TGlua0ZpcmVkKCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgaWYg
KCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCkBAIC05NiwxMiArOTIsNiBAQCB2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpCiAKICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25l
KGZhbHNlKTsKIAotICAgIGRvdWJsZSB3ZWJLaXRNb25vdG9uaWNOb3cgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBkb3VibGUgdGltZVVudGlsT3V0cHV0ID0gb3V0cHV0VGlt
ZVNlY29uZHMgLSBub3dTZWNvbmRzOwotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2lu
ZyB3ZWJLaXRNb25vdG9uaWNOb3c/Ci0gICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1l
KHdlYktpdE1vbm90b25pY05vdyArIHRpbWVVbnRpbE91dHB1dCk7Ci0KLQogICAgIC8vIEZJWE1F
OiBJcyBpdCByZWFsbHkgb2theSB0byBjcmVhdGUgYSB3ZWFrUHRyIG9uIGEgYmFja2dyb3VuZCB0
aHJlYWQgYW5kIHRoZW4gdXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZD8KICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtQdHIgPSBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKV0g
ewogICAgICAgICBpZiAoYXV0byogbW9uaXRvciA9IHdlYWtQdHIuZ2V0KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwg
fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVk
KGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpOworICAgIHZvaWQg
ZGlzcGxheUxpbmtGaXJlZCgpOwogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDggQEAgdm9pZCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jRGlzcGxheQogewogI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikg
JiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgYW55IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhbmltYXRpb24gY2FsbGJh
Y2tzIGFyZSBiZWluZyBleGVjdXRlZCBiZWZvcmUgd2UgZmx1c2ggdGhlIGxheWVycy4KLSAgICBt
X2xhc3RBbmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCk7CisgICAgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50
LT5kb21XaW5kb3coKS0+bm93SW5TZWNvbmRzKCkgOiBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXJ2aWNlU2NyaXB0
ZWRBbmltYXRpb25zKG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKTsKICNlbmRpZgogICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVj
dXJzaXZlKCk7CkBAIC0xNTYsNyArMTU3LDEwIEBAIGRvdWJsZSBDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpuZXh0QW5pbWEKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHJlcXVlc3RBbmltYXRp
b25GcmFtZSBzcGVjLCByQUYgY2FsbGJhY2tzIHNob3VsZCBub3QgYmUgZmFzdGVyIHRoYW4gNjBG
UFMuCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBNaW5pbWFsVGltZW91dEZvckFuaW1hdGlvbnMg
PSAxLiAvIDYwLjsKLSAgICByZXR1cm4gc3RkOjptYXg8ZG91YmxlPigwLiwgTWluaW1hbFRpbWVv
dXRGb3JBbmltYXRpb25zIC0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIG1f
bGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKTsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOworICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBkb2N1bWVu
dCA/IGRvY3VtZW50LT5kb21XaW5kb3coKS0+bm93SW5TZWNvbmRzKCkgOiBXVEY6Om1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHJldHVybiBzdGQ6Om1heDxkb3VibGU+KDAuLCBN
aW5pbWFsVGltZW91dEZvckFuaW1hdGlvbnMgLSB0aW1lc3RhbXAgKyBtX2xhc3RBbmltYXRpb25T
ZXJ2aWNlVGltZSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMzgx
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTYtMDYtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICByZXF1ZXN0RnJhbWVBbmltYXRpb24oKSBjYWxsYmFjayB0aW1lc3Rh
bXAgc2hvdWxkIGJlIHZlcnkgY2xvc2UgdG8gUGVyZm9ybWFuY2Uubm93KCkgCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlkVXBkYXRl
TGF5ZXJzKToKKwogMjAxNi0wNi0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMTE5NC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVMYXllclRyZWVE
aXNwbGF5UmVmcmVzaE1vbml0b3IubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
ci5tbQkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsOCArNjcsNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUo
ZmFsc2UpOwotICAgIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZShtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSk7Ci0KICAgICBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0
aW9uT25NYWluVGhyZWFkKHRoaXMpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDIzNDEpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxNi0wNi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIHJlcXVlc3RGcmFtZUFuaW1hdGlvbigpIGNhbGxiYWNrIHRpbWVzdGFtcCBzaG91
bGQgYmUgdmVyeSBjbG9zZSB0byBQZXJmb3JtYW5jZS5ub3coKSAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTAzOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tY2Fs
bGJhY2stdGltZXN0YW1wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9u
cy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFu
aW1hdGlvbnMvYW5pbWF0aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10aW1lc3RhbXAtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxs
YmFja3MtdGltZXN0YW1wLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA2LTIyICBBZGFtIEJlcmdrdmlz
dCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IEFkZCBz
dXBwb3J0IGZvciB0aGUgbmVnb3RpYXRpb25uZWVkZWQgZXZlbnQgaW4gTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jYWxs
YmFjay10aW1lc3RhbXAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fu
aW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFtcC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1l
c3RhbXAtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVzdGFtcC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVz
dGFtcC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tY2FsbGJhY2stdGltZXN0YW1wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBA
QAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZSA9IDA7CisgICAgICAgIAorICAgICAg
ICBmdW5jdGlvbiBkb0FuaW1hdGlvbih0aW1lc3RhbXApCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnN0IFRvbGVyYW5jZSA9IDM7CisgICAgICAgICAgICBjb25zdCBXYXJtdXBGcmFtZXMgPSA1
OworCisgICAgICAgICAgICB2YXIgcGVyZm9ybWFuY2VOb3cgPSB3aW5kb3cucGVyZm9ybWFuY2Uu
bm93KCk7CisgICAgICAgICAgICBpZiAoKytjdXJyZW50RnJhbWUgPiBXYXJtdXBGcmFtZXMgJiYg
TWF0aC5hYnModGltZXN0YW1wIC0gcGVyZm9ybWFuY2VOb3cpID49IFRvbGVyYW5jZSkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB0aW1lc3RhbXAg
PSAiICsgdGltZXN0YW1wICsgIiwgd2luZG93LnBlcmZvcm1hbmNlLm5vdygpID0gIiArIHBlcmZv
cm1hbmNlTm93KTsKKworICAgICAgICAgICAgY29uc3QgTWF4RnJhbWVzID0gMjU7CisgICAgICAg
ICAgICBpZiAoY3VycmVudEZyYW1lID09IE1heEZyYW1lcykKKyAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoZG9BbmltYXRpb24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZShkb0FuaW1hdGlvbik7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVz
dGFtcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9h
bmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxs
YmFja3MtdGltZXN0YW1wLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQg
QEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxsYmFja3Mt
dGltZXN0YW1wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmlt
YXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVz
dGFtcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IHZhciBjdXJyZW50RnJhbWUgPSAwOworICAgICAgICB2YXIgdGltZXN0YW1wMSA9IDA7CisKKyAg
ICAgICAgZnVuY3Rpb24gZG9BbmltYXRpb24xKHRpbWVzdGFtcCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGltZXN0YW1wMSA9IHRpbWVzdGFtcDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Y29uc3QgTWF4RnJhbWVzID0gMjU7CisgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lID09IE1h
eEZyYW1lcykKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShkb0FuaW1hdGlvbjEp
OworICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShkb0FuaW1hdGlvbjIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9BbmltYXRpb24y
KHRpbWVzdGFtcCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgV2FybXVwRnJhbWVzID0g
NTsKKyAgICAgICAgICAgIGlmICgrK2N1cnJlbnRGcmFtZSA+IFdhcm11cEZyYW1lcyAmJiB0aW1l
c3RhbXAgIT0gdGltZXN0YW1wMSkgeworICAgICAgICAgICAgICAgIHZhciBwZXJmb3JtYW5jZU5v
dyA9IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJ0aW1lc3RhbXAxID0gIiArIHRpbWVzdGFtcDEgKyAiLCB0aW1lc3RhbXAyID0gIiArIHRpbWVz
dGFtcDIgICsgIiwgd2luZG93LnBlcmZvcm1hbmNlLm5vdygpID0gIiArIHBlcmZvcm1hbmNlTm93
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZG9Bbmlt
YXRpb24xKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281933</attachid>
            <date>2016-06-23 14:47:51 -0700</date>
            <delta_ts>2016-06-23 15:46:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159038-20160623144741.patch</filename>
            <type>text/plain</type>
            <size>33287</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA2LTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgcmVxdWVzdEZy
YW1lQW5pbWF0aW9uKCkgY2FsbGJhY2sgdGltZXN0YW1wIHNob3VsZCBiZSB2ZXJ5IGNsb3NlIHRv
IFBlcmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFzcyB0aGUgUGVyZm9ybWFuY2Uubm93KCkgdG8gcmVxdWVzdEZyYW1lQW5p
bWF0aW9uKCkgY2FsbGJhY2suIERvIG5vdCBhZGQKKyAgICAgICAgdGhlIHRpbWVVbnRpbE91dHB1
dCB3aGljaCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG91dHB1dFRpbWUgYW5kIG5vdyBzaW5j
ZQorICAgICAgICB0aGlzIGFkZGl0aW9uIG1ha2VzIHVzIHJlcG9ydCBhIHRpbWVzdGFtcCBhaGVh
ZCBpbiB0aGUgZnV0dXJlIGJ5IGFsbW9zdCAzM21zLgorCisgICAgICAgIEEgbmV3IGZ1bmN0aW9u
IG5hbWVkICJub3dUaW1lc3RhbXAoKSIgaXMgYWRkZWQgdG8gdGhlIERPTVdpbmRvdyBjbGFzcy4g
SXQKKyAgICAgICAgY2FsbHMgUGVyZm9ybWFuY2Uubm93KCkgaWYgV0VCX1RJTUlORyBpcyBlbmFi
bGVkLCBvdGhlcndpc2UgaXQgY2FsbHMKKyAgICAgICAgbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkuIFRoZSByZXR1cm5lZCB0aW1lc3RhbXAgaXMgc2Vjb25kcyBhbmQgaXQgaXMKKyAgICAg
ICAgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50IGxvYWRpbmcgdGltZS4KKworICAgICAgICBUaGUg
dGltZXN0YW1wIHBhc3Npbmcgd2lsbCBiZSByZW1vdmVkIGFsbCB0aGUgZG93biB0aWxsIHRoZSBj
YWxsZXJzIG9mCisgICAgICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNj
cmlwdGVkQW5pbWF0aW9ucygpLiBUaGUgY2FsbGVycyB3aWxsCisgICAgICAgIGdldHRpbmcgdGhl
IG5vdyB0aW1lc3RhbXAgYnkgY2FsbGluZyBET01XaW5kb3c6Om5vd1RpbWVzdGFtcCgpLgorCisg
ICAgICAgIFRlc3RzOiBhbmltYXRpb25zL2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRt
bAorICAgICAgICAgICAgICAgYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tz
LXRpbWVzdGFtcC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Om1vbm90b25pY1RpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VT
Y3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOjphbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk6CisgICAgICAgICog
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpnZXRW
aWRlb1BsYXliYWNrUXVhbGl0eSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZFRpbWlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpyZWZlcmVuY2VXYWxs
VGltZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojpub3dUaW1lc3RhbXApOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bs
YXlEaWRSZWZyZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2V0
TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclVwZGF0ZXI6OmRpc3BsYXlS
ZWZyZXNoRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJV
cGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MubW06CisgICAgICAgICgtW1dlYkRpc3BsYXlMaW5rSGFuZGxlciBoYW5k
bGVEaXNwbGF5TGluazpdKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUzo6ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVRpbWVUb0N1
cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlMaW5r
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpk
aXNwbGF5TGlua0ZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpuZXh0QW5pbWF0aW9uU2VydmljZVRpbWUp
OgorCiAyMDE2LTA2LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDE2MjkpOiBXZWlyZCBidXR0b24gZ2xpdGNoaW5nIG9u
IGdpdGh1Yi5jb20KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjAyMzQx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjE2NCw2ICs2MTY0LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJl
ZCgKICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tDb21wbGV0ZWQoKTsKIH0KIAorZG91
YmxlIERvY3VtZW50Ojptb25vdG9uaWNUaW1lc3RhbXAoKSBjb25zdAoreworICAgIGF1dG8qIGxv
YWRlciA9IHRoaXMtPmxvYWRlcigpOworICAgIHJldHVybiBsb2FkZXIgPyBsb2FkZXItPnRpbWlu
ZygpLm1vbm90b25pY1RpbWVUb1plcm9CYXNlZERvY3VtZW50VGltZShtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSkgOiAwOworfQorCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQogaW50IERvY3VtZW50OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUGFzc1JlZlB0cjxSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY2FsbGJhY2spCiB7CkBAIC02MTkwLDExICs2MTk2
LDExIEBAIHZvaWQgRG9jdW1lbnQ6OmNhbmNlbEFuaW1hdGlvbkZyYW1lKGludCAKICAgICBtX3Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+Y2FuY2VsQ2FsbGJhY2soaWQpOwogfQogCi12b2lk
IERvY3VtZW50OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNBbmlt
YXRpb25TdGFydFRpbWUpCit2b2lkIERvY3VtZW50OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25z
KGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgaWYgKCFtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcikKICAgICAgICAgcmV0dXJuOwotICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LT5zZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSk7
CisgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VTY3JpcHRlZEFuaW1h
dGlvbnModGltZXN0YW1wKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y2xlYXJTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTY2LDEwICsxMTY2LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBEb2N1bWVudFRpbWluZyYgdGlt
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFRpbWluZzsgfQogI2VuZGlmCiAKKyAgICBk
b3VibGUgbW9ub3RvbmljVGltZXN0YW1wKCkgY29uc3Q7CisKICNpZiBFTkFCTEUoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShQYXNzUmVmUHRy
PFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPik7CiAgICAgdm9pZCBjYW5jZWxBbmltYXRp
b25GcmFtZShpbnQgaWQpOwotICAgIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICB2b2lkIHNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2VuZFdp
bGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgbmV3UG9zaXRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBj
b25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIEVsZW1lbnQqIHRhcmdldCA9IG51bGxwdHIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNsdWRlICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAg
LTE0MCwxNSArMTQxLDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjYW5j
ZWwKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNl
U2NyaXB0ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQordm9pZCBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIHRp
bWVzdGFtcCkKIHsKICAgICBpZiAoIW1fY2FsbGJhY2tzLnNpemUoKSB8fCBtX3N1c3BlbmRDb3Vu
dCB8fCAhcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShSQUZDYWxsYmFja1N0YXJ0LCBSQUZDYWxsYmFj
a0VuZCk7Ci0gICAgCi0gICAgZG91YmxlIGhpZ2hSZXNOb3dNcyA9IDEwMDAuMCAqIG1fZG9jdW1l
bnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9aZXJvQmFzZWREb2N1bWVudFRp
bWUobW9ub3RvbmljVGltZU5vdyk7Ci0gICAgZG91YmxlIGxlZ2FjeUhpZ2hSZXNOb3dNcyA9IDEw
MDAuMCAqIG1fZG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9Qc2V1
ZG9XYWxsVGltZShtb25vdG9uaWNUaW1lTm93KTsKKworICAgIGRvdWJsZSBoaWdoUmVzTm93TXMg
PSAxMDAwICogdGltZXN0YW1wOworICAgIGRvdWJsZSBsZWdhY3lIaWdoUmVzTm93TXMgPSAxMDAw
ICogKHRpbWVzdGFtcCArIG1fZG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKS5yZWZlcmVuY2VX
YWxsVGltZSgpKTsKIAogICAgIC8vIEZpcnN0LCBnZW5lcmF0ZSBhIGxpc3Qgb2YgY2FsbGJhY2tz
IHRvIGNvbnNpZGVyLiAgQ2FsbGJhY2tzIHJlZ2lzdGVyZWQgZnJvbSB0aGlzIHBvaW50CiAgICAg
Ly8gb24gYXJlIGNvbnNpZGVyZWQgb25seSBmb3IgdGhlICJuZXh0IiBmcmFtZSwgbm90IHRoaXMg
b25lLgpAQCAtMjE2LDcgKzIxNyw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
OjpzY2hlZHUKICAgICAgICAgYW5pbWF0aW9uSW50ZXJ2YWwgPSBNaW5pbXVtVGhyb3R0bGVkQW5p
bWF0aW9uSW50ZXJ2YWw7CiAjZW5kaWYKIAotICAgIGRvdWJsZSBzY2hlZHVsZURlbGF5ID0gc3Rk
OjptYXg8ZG91YmxlPihhbmltYXRpb25JbnRlcnZhbCAtIChtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1vbm90b25pYyksIDApOworICAgIGRv
dWJsZSBzY2hlZHVsZURlbGF5ID0gc3RkOjptYXg8ZG91YmxlPihhbmltYXRpb25JbnRlcnZhbCAt
IChtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkgLSBtX2xhc3RBbmltYXRp
b25GcmFtZVRpbWVzdGFtcCksIDApOwogICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90
KHNjaGVkdWxlRGVsYXkpOwogI2Vsc2UKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBt
X2RvY3VtZW50LT52aWV3KCkpCkBAIC0yMjcsMTMgKzIyOCwxMyBAQCB2b2lkIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X1RJTUVSKQogdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGlvblRpbWVy
RmlyZWQoKQogewotICAgIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZU1vbm90b25pYyA9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMo
bV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKTsKKyAgICBtX2xhc3RBbmltYXRpb25G
cmFtZVRpbWVzdGFtcCA9IG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKTsK
KyAgICBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0
YW1wKTsKIH0KICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQotdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQo
ZG91YmxlIG1vbm90b25pY1RpbWVOb3cpCit2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6ZGlzcGxheVJlZnJlc2hGaXJlZCgpCiB7Ci0gICAgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9u
cyhtb25vdG9uaWNUaW1lTm93KTsKKyAgICBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1fZG9j
dW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKSk7CiB9CiAjZW5kaWYKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKIAogICAgIENhbGxiYWNrSWQgcmVnaXN0ZXJDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrPik7CiAgICAgdm9pZCBjYW5jZWxDYWxsYmFjayhDYWxsYmFj
a0lkKTsKLSAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y1RpbWVOb3cpOworICAgIHZvaWQgc2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUgdGlt
ZXN0YW1wKTsKIAogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC04
OCwxMSArODgsMTEgQEAgcHJpdmF0ZToKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
VElNRVIpCiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgVGltZXIgbV9hbmlt
YXRpb25UaW1lcjsKLSAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lTW9ub3Rvbmlj
IHsgMCB9OworICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCB7IDAgfTsK
IAogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAg
Ly8gT3ZlcnJpZGUgZm9yIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudAotICAgIHZvaWQgZGlz
cGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c3BsYXlSZWZyZXNoRmlyZWQoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8RGlzcGxheVJlZnJlc2hN
b25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBtX2lzVXNpbmdUaW1lciB7IGZhbHNlIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMjM0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0MjQsMTkgKzY0MjQsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVCZWhhdmlvcnNSZQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBSZWZQdHI8VmlkZW9QbGF5
YmFja1F1YWxpdHk+IEhUTUxNZWRpYUVsZW1lbnQ6OmdldFZpZGVvUGxheWJhY2tRdWFsaXR5KCkK
IHsKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGRv
Y3VtZW50KCkuZG9tV2luZG93KCk7Ci0gICAgUGVyZm9ybWFuY2UqIHBlcmZvcm1hbmNlID0gZG9t
V2luZG93ID8gZG9tV2luZG93LT5wZXJmb3JtYW5jZSgpIDogbnVsbHB0cjsKLSAgICBkb3VibGUg
bm93ID0gcGVyZm9ybWFuY2UgPyBwZXJmb3JtYW5jZS0+bm93KCkgOiAwOwotI2Vsc2UKLSAgICBE
b2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS5sb2FkZXIoKTsKLSAgICBkb3VibGUg
bm93ID0gbG9hZGVyID8gMTAwMC4wICogbG9hZGVyLT50aW1pbmcoKS5tb25vdG9uaWNUaW1lVG9a
ZXJvQmFzZWREb2N1bWVudFRpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpIDogMDsK
LSNlbmRpZgorICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBkb21XaW5kb3cgPyAxMDAwICogZG9tV2lu
ZG93LT5ub3dUaW1lc3RhbXAoKSA6IDA7CiAKICAgICBpZiAoIW1fcGxheWVyKQotICAgICAgICBy
ZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZShub3csIDAsIDAsIDAsIDApOworICAg
ICAgICByZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3RhbXAsIDAsIDAs
IDAsIDApOwogCi0gICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5OjpjcmVhdGUobm93LAor
ICAgIHJldHVybiBWaWRlb1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRlKHRpbWVzdGFtcCwKICAgICAg
ICAgbV9kcm9wcGVkVmlkZW9GcmFtZXMgKyBtX3BsYXllci0+dG90YWxWaWRlb0ZyYW1lcygpLAog
ICAgICAgICBtX2Ryb3BwZWRWaWRlb0ZyYW1lcyArIG1fcGxheWVyLT5kcm9wcGVkVmlkZW9GcmFt
ZXMoKSwKICAgICAgICAgbV9wbGF5ZXItPmNvcnJ1cHRlZFZpZGVvRnJhbWVzKCksCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCShyZXZpc2lvbiAyMDIz
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2FtZU9yaWdp
bkFzUHJldmlvdXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2FtZU9yaWdpbkFzUHJl
dmlvdXNEb2N1bWVudDsgfQogCiAgICAgZG91YmxlIHJlZmVyZW5jZU1vbm90b25pY1RpbWUoKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyZW5jZU1vbm90b25pY1RpbWU7IH0KKyAgICBkb3VibGUgcmVm
ZXJlbmNlV2FsbFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZVdhbGxUaW1lOyB9CiAK
IHByaXZhdGU6CiAgICAgZG91YmxlIG1fcmVmZXJlbmNlTW9ub3RvbmljVGltZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQzLDYgKzc0MywxNSBA
QCBQZXJmb3JtYW5jZSogRE9NV2luZG93OjpwZXJmb3JtYW5jZSgpIGNvCiB9CiAjZW5kaWYKIAor
ZG91YmxlIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VC
X1RJTUlORykKKyAgICByZXR1cm4gcGVyZm9ybWFuY2UoKSA/IHBlcmZvcm1hbmNlKCktPm5vdygp
IC8gMTAwMCA6IDA7CisjZWxzZQorICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+
bW9ub3RvbmljVGltZXN0YW1wKCkgOiAwOworI2VuZGlmCit9CisKIExvY2F0aW9uKiBET01XaW5k
b3c6OmxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyMDIzNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYs
NiArMzE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXRUJfVElNSU5HKQog
ICAgICAgICBQZXJmb3JtYW5jZSogcGVyZm9ybWFuY2UoKSBjb25zdDsKICNlbmRpZgorICAgICAg
ICBkb3VibGUgbm93VGltZXN0YW1wKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgIHZvaWQgaW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODI5LDE5ICsyODI5LDIz
IEBAIHZvaWQgRnJhbWVWaWV3Ojp1bnNjaGVkdWxlUmVsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotdm9pZCBGcmFtZVZpZXc6OnNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSkKK3ZvaWQgRnJh
bWVWaWV3OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKCkKIHsKICAgICBmb3IgKGF1dG8qIGZy
YW1lID0gbV9mcmFtZS5wdHIoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+dmlldygpLT5zZXJ2aWNlU2Nyb2xsQW5pbWF0aW9u
cygpOwogICAgICAgICBmcmFtZS0+YW5pbWF0aW9uKCkuc2VydmljZUFuaW1hdGlvbnMoKTsKICAg
ICB9CiAKKyAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKSB8fCAhZnJhbWUoKS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgVmVjdG9yPFJlZlB0cjxEb2N1
bWVudD4+IGRvY3VtZW50czsKICAgICBmb3IgKGF1dG8qIGZyYW1lID0gbV9mcmFtZS5wdHIoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZG9j
dW1lbnRzLmFwcGVuZChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAKKyAgICBkb3VibGUgdGltZXN0YW1w
ID0gZnJhbWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAg
Zm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3VtZW50cykKLSAgICAgICAgZG9jdW1lbnQtPnNlcnZp
Y2VTY3JpcHRlZEFuaW1hdGlvbnMobW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAg
ICAgZG9jdW1lbnQtPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnModGltZXN0YW1wKTsKIH0KICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDIwMjM0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3
ICsxNDksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlv
bnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
d2lsbFJlY2FsY1N0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAJKHJldmlzaW9uIDIw
MjM0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDcgQEAgUmVmUHRyPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZgogfQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi0gICAg
OiBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSgwKQotICAgICwgbV9hY3RpdmUodHJ1ZSkK
KyAgICA6IG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3NjaGVkdWxlZChmYWxzZSkKICAgICAsIG1f
cHJldmlvdXNGcmFtZURvbmUodHJ1ZSkKICAgICAsIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQoMCkK
QEAgLTkwLDggKzg5LDYgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVu
dAogCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goKQogewot
ICAgIGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWU7Ci0KICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKCFtX3NjaGVkdWxlZCkKQEAg
LTEwMCw3ICs5Nyw2IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmUK
ICAgICAgICAgICAgIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPSAwOwogCiAgICAgICAgIG1fc2No
ZWR1bGVkID0gZmFsc2U7Ci0gICAgICAgIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IG1f
bW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIH0KIAogICAgIC8vIFRoZSBjYWxsIGJh
Y2sgY2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5l
ZWQgdG8gcHJvdGVjdApAQCAtMTEzLDcgKzEwOSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpkaXNwbGF5RGlkUmUKICAgICBtX2NsaWVudHNUb0JlTm90aWZpZWQgPSAmY2xpZW50c1Rv
QmVOb3RpZmllZDsKICAgICB3aGlsZSAoIWNsaWVudHNUb0JlTm90aWZpZWQuaXNFbXB0eSgpKSB7
CiAgICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gY2xpZW50c1Rv
QmVOb3RpZmllZC50YWtlQW55KCk7Ci0gICAgICAgIGNsaWVudC0+ZmlyZURpc3BsYXlSZWZyZXNo
SWZOZWVkZWQobW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50LT5m
aXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIFRoaXMgY2hlY2tzIGlm
IHRoaXMgZnVuY3Rpb24gd2FzIHJlZW50ZXJlZC4gSW4gdGhhdCBjYXNlLCBzdG9wIGl0ZXJhdGlu
ZwogICAgICAgICAvLyBzaW5jZSBpdCdzIG5vdCBzYWZlIHRvIHVzZSB0aGUgc2V0IGFueSBtb3Jl
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJldmlvdXNGcmFtZURv
bmUoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9CiAgICAgdm9pZCBzZXRJ
c1ByZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3VzRnJhbWVEb25lID0gZG9u
ZTsgfQogCi0gICAgdm9pZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0
YXJ0VGltZSkgeyBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQot
CiAgICAgTG9jayYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9CiAKICAgICBzdGF0aWMgUmVm
UHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoTW9u
aXRvcihQbGF0Zm9ybURpc3BsYXlJRCk7CkBAIC04Myw3ICs4MSw2IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXNwbGF5RGlkUmVmcmVzaCgpOwogCi0gICAgZG91YmxlIG1fbW9u
b3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgYm9vbCBt
X3NjaGVkdWxlZDsKICAgICBib29sIG1fcHJldmlvdXNGcmFtZURvbmU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDEzICs0MiwxMyBAQCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQ6On5EaXNwbGF5UmVmCiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLnVucmVnaXN0ZXJDbGllbnQoKnRoaXMpOwogfQogCi12b2lkIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVz
dGFtcCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJl
c2hJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9zY2hlZHVsZWQgPSBmYWxzZTsKLSAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVz
dGFtcCk7CisgICAgZGlzcGxheVJlZnJlc2hGaXJlZCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCgpOwogCiAgICAgLy8gQWx3YXlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVz
dGFtcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKCkgPSAwOwog
CiAgICAgdmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5
UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0ID0gMDsKIApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIGlzU2NoZWR1bGVk
KSB7IG1fc2NoZWR1bGVkID0gaXNTY2hlZHVsZWQ7IH0KICAgICBib29sIGlzU2NoZWR1bGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zY2hlZHVsZWQ7IH0KIAotICAgIHZvaWQgZmlyZURpc3BsYXlSZWZy
ZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBmaXJlRGlzcGxheVJlZnJl
c2hJZk5lZWRlZCgpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVw
ZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MSwxMSArNzEsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpzY3Jl
ZW5EaWRDaGFuCiB9CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQotdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChk
b3VibGUgdGltZXN0YW1wKQordm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJl
c2hGaXJlZCgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAgICAgbV9zY2hlZHVs
ZWQgPSBmYWxzZTsKLSAgICAKICAgICBtX2NsaWVudC5mbHVzaExheWVyc1Nvb24oKnRoaXMpOwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyVXBkYXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi0gICAgdm9pZCBkaXNwbGF5
UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGxh
eVJlZnJlc2hGaXJlZCgpIG92ZXJyaWRlOwogICAgIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50
JiBtX2NsaWVudDsKICNlbmRpZgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAkocmV2aXNpb24gMjAyMzQxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKTsKIAotICAgIHZvaWQgZGlzcGxheUxp
bmtGaXJlZChkb3VibGUgbm93U2Vjb25kcyk7CisgICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCk7
CiAgICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0JKHJldmlzaW9uIDIwMjM0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDkgQEAgLSAodm9pZClkZWFs
bG9jCiAKIC0gKHZvaWQpaGFuZGxlRGlzcGxheUxpbms6KENBRGlzcGxheUxpbmsgKilzZW5kZXIK
IHsKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIG1fbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZChzZW5kZXIudGltZXN0YW1wKTsKKyAg
ICBtX21vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQoKTsKIH0KIAogLSAodm9pZClpbnZhbGlkYXRl
CkBAIC0xMDksMjAgKzExMCwxMiBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6cmVx
dWVzdFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9D
dXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQotewotICAgIC8vIEZJWE1FOiBUaGlzIG1heSBi
ZSBhIG5vLW9wIGlmIENBQ3VycmVudE1lZGlhVGltZSBpcyAqZ3VhcmFudGVlZCogdG8gYmUgbWFj
aF9hYnNvbHV0ZV90aW1lLgotICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSArIHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKLX0KLQotdm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1M6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMpCit2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheUxpbmtGaXJlZCgpCiB7CiAgICAgaWYgKCFpc1By
ZXZpb3VzRnJhbWVEb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzUHJldmlvdXNG
cmFtZURvbmUoZmFsc2UpOwotICAgIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZShtZWRp
YVRpbWVUb0N1cnJlbnRUaW1lKG5vd1NlY29uZHMpKTsKLQogICAgIGhhbmRsZURpc3BsYXlSZWZy
ZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7CiAgICAgCiAgICAgVHJhY2VQb2lu
dChSQUZEaXNwbGF5TGlua0ZpcmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuY3BwCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTQgKzUwLDEwIEBAIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZyZXMK
ICAgICB9CiB9CiAKLXN0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxh
eUxpbmtSZWYsIGNvbnN0IENWVGltZVN0YW1wKiBub3csIGNvbnN0IENWVGltZVN0YW1wKiBvdXRw
dXRUaW1lLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9pZCogZGF0YSkKK3N0YXRp
YyBDVlJldHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENW
VGltZVN0YW1wKiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZs
YWdzKiwgdm9pZCogZGF0YSkKIHsKICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqIG1vbml0
b3IgPSBzdGF0aWNfY2FzdDxEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqPihkYXRhKTsKLQotICAg
IGRvdWJsZSBub3dTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkg
LyBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lU2NhbGUpOwotICAgIGRvdWJsZSBv
dXRwdXRUaW1lU2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9U
aW1lKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOwot
ICAgIG1vbml0b3ItPmRpc3BsYXlMaW5rRmlyZWQobm93U2Vjb25kcywgb3V0cHV0VGltZVNlY29u
ZHMpOwotCisgICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwogICAgIHJldHVybiBrQ1ZS
ZXR1cm5TdWNjZXNzOwogfQogCkBAIC04OCw3ICs4NCw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjOjpyZXF1ZXN0UmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRv
dWJsZSBvdXRwdXRUaW1lU2Vjb25kcykKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpk
aXNwbGF5TGlua0ZpcmVkKCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCkBAIC05NiwxMiArOTIsNiBAQCB2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpCiAKICAgICBzZXRJc1ByZXZpb3VzRnJhbWVE
b25lKGZhbHNlKTsKIAotICAgIGRvdWJsZSB3ZWJLaXRNb25vdG9uaWNOb3cgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBkb3VibGUgdGltZVVudGlsT3V0cHV0ID0gb3V0cHV0
VGltZVNlY29uZHMgLSBub3dTZWNvbmRzOwotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1
c2luZyB3ZWJLaXRNb25vdG9uaWNOb3c/Ci0gICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRU
aW1lKHdlYktpdE1vbm90b25pY05vdyArIHRpbWVVbnRpbE91dHB1dCk7Ci0KLQogICAgIC8vIEZJ
WE1FOiBJcyBpdCByZWFsbHkgb2theSB0byBjcmVhdGUgYSB3ZWFrUHRyIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgYW5kIHRoZW4gdXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZD8KICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtQdHIgPSBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIo
KV0gewogICAgICAgICBpZiAoYXV0byogbW9uaXRvciA9IHdlYWtQdHIuZ2V0KCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpOwogCi0gICAgdm9pZCBkaXNwbGF5TGlua0Zp
cmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpOworICAgIHZv
aWQgZGlzcGxheUxpbmtGaXJlZCgpOwogICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjAyMzQxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0
aW5nQ29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTIgKzE0MSwyMCBAQCBi
b29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluCiAgICAgcmV0dXJuIGRpZFN5
bmM7CiB9CiAKK2RvdWJsZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp0aW1lc3RhbXAoKSBjb25z
dAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBkb2N1
bWVudC0+ZG9tV2luZG93KCkgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgp
IDogZG9jdW1lbnQtPm1vbm90b25pY1RpbWVzdGFtcCgpOworfQorCiB2b2lkIENvbXBvc2l0aW5n
Q29vcmRpbmF0b3I6OnN5bmNEaXNwbGF5U3RhdGUoKQogewogI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikgJiYg
IVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgYW55IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhbmltYXRpb24gY2FsbGJhY2tz
IGFyZSBiZWluZyBleGVjdXRlZCBiZWZvcmUgd2UgZmx1c2ggdGhlIGxheWVycy4KLSAgICBtX2xh
c3RBbmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnNlcnZpY2VTY3JpcHRlZEFuaW1h
dGlvbnMobV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUpOworICAgIG1fbGFzdEFuaW1hdGlvblNl
cnZpY2VUaW1lID0gdGltZXN0YW1wKCk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkt
PnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoKTsKICNlbmRpZgogICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9
CkBAIC0xNTYsNyArMTY0LDcgQEAgZG91YmxlIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5leHRB
bmltYQogewogICAgIC8vIEFjY29yZGluZyB0byB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNw
ZWMsIHJBRiBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBmYXN0ZXIgdGhhbiA2MEZQUy4KICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIE1pbmltYWxUaW1lb3V0Rm9yQW5pbWF0aW9ucyA9IDEuIC8gNjAu
OwotICAgIHJldHVybiBzdGQ6Om1heDxkb3VibGU+KDAuLCBNaW5pbWFsVGltZW91dEZvckFuaW1h
dGlvbnMgLSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgbV9sYXN0QW5pbWF0
aW9uU2VydmljZVRpbWUpOworICAgIHJldHVybiBzdGQ6Om1heDxkb3VibGU+KDAuLCBNaW5pbWFs
VGltZW91dEZvckFuaW1hdGlvbnMgLSB0aW1lc3RhbXAoKSArIG1fbGFzdEFuaW1hdGlvblNlcnZp
Y2VUaW1lKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDIwMjM0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCgpOwogCisgICAgZG91
YmxlIHRpbWVzdGFtcCgpIGNvbnN0OworCiAgICAgUGFnZSogbV9wYWdlOwogICAgIENvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OkNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMjM5OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTA2LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgcmVxdWVzdEZyYW1lQW5pbWF0aW9uKCkgY2FsbGJh
Y2sgdGltZXN0YW1wIHNob3VsZCBiZSB2ZXJ5IGNsb3NlIHRvIFBlcmZvcm1hbmNlLm5vdygpIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmRpZFVwZGF0ZUxheWVycyk6CisKIDIwMTYtMDYtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBIFdlYlBhZ2VQcm94eSBpbiBjbG9zZWQgc3RhdGUg
c2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGhvbGQgYSBwcm9jZXNzIGFzc2VydGlvbgpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURp
c3BsYXlSZWZyZXNoTW9uaXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
Lm1tCShyZXZpc2lvbiAyMDIzNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw4ICs2Nyw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShm
YWxzZSk7Ci0gICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpKTsKLQogICAgIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRp
b25Pbk1haW5UaHJlYWQodGhpcyk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjM0MSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDE2LTA2LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgcmVxdWVzdEZyYW1lQW5pbWF0aW9uKCkgY2FsbGJhY2sgdGltZXN0YW1wIHNob3Vs
ZCBiZSB2ZXJ5IGNsb3NlIHRvIFBlcmZvcm1hbmNlLm5vdygpIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1jYWxs
YmFjay10aW1lc3RhbXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25z
L2FuaW1hdGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5p
bWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLW11bHRpcGxlLWNhbGxi
YWNrcy10aW1lc3RhbXAuaHRtbDogQWRkZWQuCisKIDIwMTYtMDYtMjIgIEFkYW0gQmVyZ2t2aXN0
ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFdlYlJUQzogQWRkIHN1
cHBvcnQgZm9yIHRoZSBuZWdvdGlhdGlvbm5lZWRlZCBldmVudCBpbiBNZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxi
YWNrLXRpbWVzdGFtcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNhbGxiYWNrLXRpbWVz
dGFtcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACitQQVNTIEFs
bCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFj
ayB0aW1lc3RhbXBzIGFuZCBQZXJmb3JtYW5jZS5ub3coKSB3ZXJlIHdpdGhpbiAzbXMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGltZXN0YW1wLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY2FsbGJhY2stdGlt
ZXN0YW1wLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1h
dGlvbi1jYWxsYmFjay10aW1lc3RhbXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQz
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8c2NyaXB0PgorICAgICAgICB2YXIgY3VycmVudEZyYW1lID0gMDsKKyAgICAgICAgdmFyIGZh
aWxlZCA9IGZhbHNlOworCisgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoZmFpbGVkKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNv
bWUgb2YgdGhlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrIHRpbWVzdGFtcHMgd2Vy
ZSBsYXJnZXIgdGhhbiBQZXJmb3JtYW5jZS5ub3coKSBieSBtb3JlIHRoYW4gM21zLiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCB0aGUgZGlmZmVy
ZW5jZXMgYmV0d2VlbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFjayB0aW1lc3RhbXBz
IGFuZCBQZXJmb3JtYW5jZS5ub3coKSB3ZXJlIHdpdGhpbiAzbXMuIikKKyAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBkb0Fu
aW1hdGlvbih0aW1lc3RhbXApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRvbGVyYW5j
ZSA9IDM7CisgICAgICAgICAgICBjb25zdCBXYXJtdXBGcmFtZXMgPSA1OworCisgICAgICAgICAg
ICB2YXIgcGVyZm9ybWFuY2VOb3cgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7CisgICAgICAg
ICAgICBpZiAoKytjdXJyZW50RnJhbWUgPiBXYXJtdXBGcmFtZXMgJiYgTWF0aC5hYnModGltZXN0
YW1wIC0gcGVyZm9ybWFuY2VOb3cpID49IFRvbGVyYW5jZSkgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB0aW1lc3RhbXAgPSAiICsgdGltZXN0YW1wICsg
Iiwgd2luZG93LnBlcmZvcm1hbmNlLm5vdygpID0gIiArIHBlcmZvcm1hbmNlTm93KTsKKyAgICAg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
b25zdCBNYXhGcmFtZXMgPSAyNTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWUgPT0gTWF4
RnJhbWVzKQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZG9BbmltYXRpb24pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShkb0FuaW1hdGlvbik7CisgICAgPC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tbXVsdGlwbGUtY2FsbGJhY2tzLXRpbWVzdGFtcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tbXVsdGlwbGUtY2FsbGJhY2tzLXRp
bWVzdGFtcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRp
b25zL2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxsYmFja3MtdGltZXN0YW1wLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKK1BBU1MgQWxsIHRoZSBtdWx0aXBsZSByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKSBjYWxsYmFja3MsIHdoaWNoIHdlcmUgZmlyZWQgYXQgdGhlIHNh
bWUgdGltZSwgcmVjZWl2ZWQgdGhlIHNhbWUgdGltZXN0YW1wLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FuaW1h
dGlvbnMvYW5pbWF0aW9uLW11bHRpcGxlLWNhbGxiYWNrcy10aW1lc3RhbXAuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxsYmFj
a3MtdGltZXN0YW1wLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25z
L2FuaW1hdGlvbi1tdWx0aXBsZS1jYWxsYmFja3MtdGltZXN0YW1wLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZSA9IDA7
CisgICAgICAgIHZhciB0aW1lc3RhbXAxID0gMDsKKyAgICAgICAgdmFyIGZhaWxlZCA9IGZhbHNl
OworCisgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZmFpbGVkKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNvbWUgb2YgdGhlIG11
bHRpcGxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrcywgd2hpY2ggd2VyZSBmaXJl
ZCBhdCB0aGUgc2FtZSB0aW1lLCByZWNlaXZlZCBkaWZmZXJlbnQgdGltZXN0YW1wcy4iKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgdGhlIG11bHRp
cGxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrcywgd2hpY2ggd2VyZSBmaXJlZCBh
dCB0aGUgc2FtZSB0aW1lLCByZWNlaXZlZCB0aGUgc2FtZSB0aW1lc3RhbXAuIik7CisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvQW5p
bWF0aW9uMSh0aW1lc3RhbXApCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVzdGFtcDEgPSB0
aW1lc3RhbXA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IE1heEZyYW1lcyA9IDI1
OworICAgICAgICAgICAgaWYgKGN1cnJlbnRGcmFtZSA9PSBNYXhGcmFtZXMpCisgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvQW5pbWF0aW9uMSk7CisgICAgICAgICAgICAgICAgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKGRvQW5pbWF0aW9uMik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkb0FuaW1hdGlvbjIodGltZXN0YW1wKQorICAgICAgICB7
CisgICAgICAgICAgICBjb25zdCBXYXJtdXBGcmFtZXMgPSA1OworICAgICAgICAgICAgaWYgKCsr
Y3VycmVudEZyYW1lID4gV2FybXVwRnJhbWVzICYmIHRpbWVzdGFtcCAhPSB0aW1lc3RhbXAxKSB7
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgidGltZXN0YW1wMSA9ICIgKyB0aW1lc3RhbXAx
ICsgIiwgdGltZXN0YW1wMiA9ICIgKyB0aW1lc3RhbXAyICArICIsIHdpbmRvdy5wZXJmb3JtYW5j
ZS5ub3coKSA9ICIgKyB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpOworICAgICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGRvQW5pbWF0aW9uMSk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>