<?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>113615</bug_id>
          
          <creation_ts>2013-03-29 15:21:38 -0700</creation_ts>
          <short_desc>Update all float attributes in HTMLMediaElement to double</short_desc>
          <delta_ts>2013-04-10 09:28:16 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Colwell">acolwell</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>866428</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 15:21:38 -0700</bug_when>
    <thetext>HTMLMediaElement has several attributes declared as float that are actually specified as double in the HTML5 spec. These include currentTime, startTime, duration, defaultPlaybackRate, playbackRate, and volume. These should be updated to match the HTML5 spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866491</commentid>
    <comment_count>1</comment_count>
      <attachid>195821</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 16:57:04 -0700</bug_when>
    <thetext>Created attachment 195821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866498</commentid>
    <comment_count>2</comment_count>
      <attachid>195821</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-29 17:09:17 -0700</bug_when>
    <thetext>Comment on attachment 195821
Patch

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

This looks fine, but please wait until the bots have had their way with it before landing. Also, please file bugs against all ports that need to be updated, and also file one to remove the old versions once everyone has updated.

&gt; Source/WebCore/ChangeLog:41
&gt; +        (HTMLMediaElement):

These bogus entries generated by prepare-ChangeLog aren&apos;t helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866508</commentid>
    <comment_count>3</comment_count>
      <attachid>195821</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 17:29:50 -0700</bug_when>
    <thetext>Comment on attachment 195821
Patch

Attachment 195821 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17257710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866513</commentid>
    <comment_count>4</comment_count>
      <attachid>195821</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 17:38:41 -0700</bug_when>
    <thetext>Comment on attachment 195821
Patch

Attachment 195821 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17311762</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866521</commentid>
    <comment_count>5</comment_count>
      <attachid>195831</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 17:57:48 -0700</bug_when>
    <thetext>Created attachment 195831
Remove ChangeLog cruft and fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866522</commentid>
    <comment_count>6</comment_count>
      <attachid>195831</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 18:04:32 -0700</bug_when>
    <thetext>Comment on attachment 195831
Remove ChangeLog cruft and fix Mac build

Attachment 195831 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17356171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866529</commentid>
    <comment_count>7</comment_count>
      <attachid>195831</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 18:40:48 -0700</bug_when>
    <thetext>Comment on attachment 195831
Remove ChangeLog cruft and fix Mac build

Attachment 195831 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17255683</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866542</commentid>
    <comment_count>8</comment_count>
      <attachid>195838</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-29 21:08:22 -0700</bug_when>
    <thetext>Created attachment 195838
Another mac build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866548</commentid>
    <comment_count>9</comment_count>
      <attachid>195838</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 21:51:12 -0700</bug_when>
    <thetext>Comment on attachment 195838
Another mac build fix.

Attachment 195838 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17377035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866550</commentid>
    <comment_count>10</comment_count>
      <attachid>195838</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-29 21:58:07 -0700</bug_when>
    <thetext>Comment on attachment 195838
Another mac build fix.

Attachment 195838 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17345825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866562</commentid>
    <comment_count>11</comment_count>
      <attachid>195845</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-30 00:10:31 -0700</bug_when>
    <thetext>Created attachment 195845
Fix unused parameter error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866563</commentid>
    <comment_count>12</comment_count>
      <attachid>195845</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-30 00:17:08 -0700</bug_when>
    <thetext>Comment on attachment 195845
Fix unused parameter error

Attachment 195845 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17317297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866569</commentid>
    <comment_count>13</comment_count>
      <attachid>195845</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-30 01:01:18 -0700</bug_when>
    <thetext>Comment on attachment 195845
Fix unused parameter error

Attachment 195845 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17250676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866702</commentid>
    <comment_count>14</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2013-03-30 16:44:27 -0700</bug_when>
    <thetext>Eric, could you help me with the Mac build errors. I&apos;m getting these symbol export errors.

Undefined symbols for architecture x86_64:
  &quot;__ZN7WebCore16HTMLMediaElement14setCurrentTimeEfRi&quot;, referenced from:
     -exported_symbol[s_list] command line option
  &quot;__ZN7WebCore16HTMLMediaElement9setVolumeEfRi&quot;, referenced from:
     -exported_symbol[s_list] command line option
  &quot;__ZN7WebCore16HTMLMediaElement6rewindEf&quot;, referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64

I&apos;m assuming I have to change Source/WebCore/WebCore.order and/or Source/WebCore/WebCore.exp.in, but I don&apos;t have a Mac build environment so I have no idea what the new mangled signatures should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872799</commentid>
    <comment_count>15</comment_count>
      <attachid>197271</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-10 08:16:40 -0700</bug_when>
    <thetext>Created attachment 197271
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872801</commentid>
    <comment_count>16</comment_count>
      <attachid>197271</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-10 08:31:04 -0700</bug_when>
    <thetext>Comment on attachment 197271
Proposed patch

r=me

It would be nice to write a test that confirmed the additional precision. For example, you could seek to &quot;.0000000000000000000000000000000000000000000001&quot; and then ask for .currentTime and confirm that it&apos;s not 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872816</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-10 09:02:28 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 197271 [details])
&gt; r=me
&gt; 
&gt; It would be nice to write a test that confirmed the additional precision. For example, you could seek to &quot;.0000000000000000000000000000000000000000000001&quot; and then ask for .currentTime and confirm that it&apos;s not 0.

That won&apos;t work reliably because currentTime is the value returned by the media engine, and it will be clamped to whatever level of precision it supports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872890</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-04-10 09:25:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/13620078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872894</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-10 09:28:06 -0700</bug_when>
    <thetext>https://trac.webkit.org/r148099</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195821</attachid>
            <date>2013-03-29 16:57:04 -0700</date>
            <delta_ts>2013-03-29 17:57:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113615-20130329165700.patch</filename>
            <type>text/plain</type>
            <size>72888</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZmNDJkMDY2NDkyZjky
ZDlkM2Y0MjY5NTc4YTliOWM1MDFkMmI5Ni4uZDQ3YjJmMjI4NTViYjQ5YTk1ZmQyYTUzZjMyMDky
MDhlYzAyYTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAxMy0wMy0yOSAgQWFy
b24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgYWxs
IGZsb2F0IGF0dHJpYnV0ZXMgaW4gSFRNTE1lZGlhRWxlbWVudCB0byBkb3VibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gUHJp
bWFyeSBiZWhhdmlvciBkb2Vzbid0IGNoYW5nZS4gSnVzdCB0aW1lLCBwbGF5YmFja1JhdGUsIGFu
ZCB2b2x1bWUgcHJlY2lzaW9uLiBBbGwgZXhpc3RpbmcgbWVkaWEgTGF5b3V0VGVzdHMgc3RpbGwg
cGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3Rh
cnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNr
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1JhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2b2x1bWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWluVGltZVNlZWthYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1heFRpbWVTZWVrYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVNZWRpYUZyYWdtZW50VVJJKToKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpkdXJhdGlvbik6
CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlh
Q29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6cGxheWJh
Y2tSYXRlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0UGxheWJhY2tSYXRlKToKKyAg
ICAgICAgKE1lZGlhQ29udHJvbGxlcjo6c2V0Vm9sdW1lKToKKyAgICAgICAgKiBodG1sL01lZGlh
Q29udHJvbGxlci5oOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbGxlcjo6ZGVmYXVsdFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xsZXI6OnZvbHVtZSk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UuaDoKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSk6Cisg
ICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoKKyAgICAgICAgKFRpbWVSYW5nZXM6OlRpbWVS
YW5nZXMpOgorICAgICAgICAoVGltZVJhbmdlczo6aW52ZXJ0KToKKyAgICAgICAgKFRpbWVSYW5n
ZXM6OnN0YXJ0KToKKyAgICAgICAgKFRpbWVSYW5nZXM6OmVuZCk6CisgICAgICAgIChUaW1lUmFu
Z2VzOjphZGQpOgorICAgICAgICAoVGltZVJhbmdlczo6Y29udGFpbik6CisgICAgICAgIChUaW1l
UmFuZ2VzOjpuZWFyZXN0KToKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNyZWF0ZSk6CisgICAgICAgIChUaW1lUmFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6CisgICAgICAgIChSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lUmFuZ2VzOjpSYW5nZTo6aXNQb2ludEluUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5pZGw6CisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJyZW50VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5l
eHRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzZWVrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgIChNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGlt
ZURpc3BsYXlFbGVtZW50OjpjdXJyZW50VmFsdWUpOgorICAgICAgICAoTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAoTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNz
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNr
U3RvcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6dXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5oOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0Nocm9taXVtOjp1cGRhdGVDdXJyZW50VGltZURp
c3BsYXkpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0d0azo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sc0d0azo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oOgorICAgICAgICAoVGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9j
ay5oOgorICAgICAgICAoQ2xvY2spOgorICAgICAgICAqIHBsYXRmb3JtL0Nsb2NrR2VuZXJpYy5j
cHA6CisgICAgICAgIChDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKENs
b2NrR2VuZXJpYzo6Y3VycmVudFRpbWUpOgorICAgICAgICAoQ2xvY2tHZW5lcmljOjpzZXRQbGF5
UmF0ZSk6CisgICAgICAgIChDbG9ja0dlbmVyaWM6Om5vdyk6CisgICAgICAgICogcGxhdGZvcm0v
Q2xvY2tHZW5lcmljLmg6CisgICAgICAgIChDbG9ja0dlbmVyaWMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvY2tHZW5lcmljOjpwbGF5UmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVyUHJpdmF0
ZTo6ZHVyYXRpb25Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVyUHJp
dmF0ZTo6Y3VycmVudFRpbWVEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxh
eWVyUHJpdmF0ZTo6c2Vla0RvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlOjpzZXRSYXRlRG91YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bGxNZWRpYVBs
YXllclByaXZhdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVk
aWFQbGF5ZXJQcml2YXRlOjptYXhUaW1lU2Vla2FibGVEb3VibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmN1cnJlbnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZWVrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bWF4VGltZVNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUpOgorICAg
ICAgICAoTWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U6OmR1cmF0aW9uRG91YmxlKToKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZTo6Y3VycmVudFRpbWVEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6c2Vla0RvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OnN0YXJ0VGltZURvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRSYXRlRG91YmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0Vm9sdW1lRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bWF4VGltZVNlZWth
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bWF4
VGltZVNlZWthYmxlRG91YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6bWVkaWFUaW1lRm9yVGltZVZhbHVlRG91YmxlKToKKwogMjAxMy0wMy0yOSAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogRmxhbWUgQ2hhcnQuIFJlbW92ZSBob3BwaW5nIGFuY29yRWxlbWVudCBhbmQgdXNl
IGFuY2hvckJveCBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggOWY5MDA2ZjdlZjQxYWQxZjIyYzA2NjgwYjA4N2Q1YTgxOWNiOWNmMy4uZWQ4OGE3
OWY4NTk0YjhkMTE5NDRmOWFjMjA2MTM4OTJlZGE2MjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW0KICAgICAsIG1fbGFzdFNlZWtUaW1lKDApCiAgICAgLCBtX3ByZXZpb3VzUHJvZ3Jl
c3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sYXN0VGltZVVw
ZGF0ZUV2ZW50V2FsbFRpbWUoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGlt
ZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2
ZW50TW92aWVUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sb2Fk
U3RhdGUoV2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURF
TykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHN0YXRpYyBi
b29sIGV2ZW50VGltZUN1ZUNvbXBhcmUoY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgVGV4dFRyYWNr
Q3VlKj4mIGEsCiB9CiAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0
VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogewogICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKIApAQCAtMTExNyw3
ICsxMTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tD
dWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAvLyAzIC0gTGV0IGxhc3QgdGltZSBiZSB0aGUgY3Vy
cmVudCBwbGF5YmFjayBwb3NpdGlvbiBhdCB0aGUgdGltZSB0aGlzCiAgICAgLy8gYWxnb3JpdGht
IHdhcyBsYXN0IHJ1biBmb3IgdGhpcyBtZWRpYSBlbGVtZW50LCBpZiB0aGlzIGlzIG5vdCB0aGUg
Zmlyc3QKICAgICAvLyB0aW1lIGl0IGhhcyBydW4uCi0gICAgZmxvYXQgbGFzdFRpbWUgPSBtX2xh
c3RUZXh0VHJhY2tVcGRhdGVUaW1lOworICAgIGRvdWJsZSBsYXN0VGltZSA9IG1fbGFzdFRleHRU
cmFja1VwZGF0ZVRpbWU7CiAKICAgICAvLyA0IC0gSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9z
aXRpb24gaGFzLCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoaXMKICAgICAvLyBhbGdvcml0aG0gd2Fz
IHJ1biwgb25seSBjaGFuZ2VkIHRocm91Z2ggaXRzIHVzdWFsIG1vbm90b25pYyBpbmNyZWFzZQpA
QCAtMTEzMCw4ICsxMTMwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAgICAgICAgIG1fY3VlVHJlZS5hbGxP
dmVybGFwcyhtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwobGFzdFRpbWUsIG1vdmllVGltZSkpOwog
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG90ZW50aWFsbHlTa2lwcGVkQ3Vlcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgZmxvYXQgY3VlU3RhcnRUaW1lID0gcG90ZW50aWFs
bHlTa2lwcGVkQ3Vlc1tpXS5sb3coKTsKLSAgICAgICAgICAgIGZsb2F0IGN1ZUVuZFRpbWUgPSBw
b3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsKKyAgICAgICAgICAgIGRvdWJsZSBjdWVT
dGFydFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmxvdygpOworICAgICAgICAgICAg
ZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsKIAog
ICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4gbWlzc2VkIHNp
bmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KICAgICAgICAgICAgIGlmIChjdWVTdGFydFRpbWUgPiBt
YXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92aWVUaW1lKQpA
QCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50
VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgfQogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJld2luZChmbG9hdCB0aW1lRGVsdGEpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEpOwogICAgIHNldEN1cnJlbnRUaW1l
KG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5UaW1lU2Vla2FibGUoKSksIElHTk9S
RV9FWENFUFRJT04pOwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZXR1cm5Ub1JlYWx0aW1lKCkKICAgICBzZXRDdXJyZW50VGltZShtYXhUaW1lU2Vla2FibGUo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkUGxh
eWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKCVmLCAlZikiLCBzdGFydCwgZW5k
KTsKICAgICBpZiAoIW1fcGxheWVkVGltZVJhbmdlcykKQEAgLTIwNTEsNyArMjA1MSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSgpCiAgICAgbV9wbGF5ZXItPnByZXBh
cmVUb1BsYXkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGRvdWJsZSB0
aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrKCVmKSIsIHRpbWUpOwogCkBAIC0yMDY5LDcgKzIwNjksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAv
LyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBtX3NlZWtpbmcsIG1fbGFzdFNl
ZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgogICAgIHJlZnJlc2hDYWNoZWRUaW1l
KCk7Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gY3Vy
cmVudFRpbWUoKTsKIAogICAgIC8vIDIgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURMIGF0
dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0aG0g
aXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ugb2Yg
dGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKQEAgLTIwODUs
NyArMjA4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VlayhmbG9hdCB0aW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAgICAg
Ly8gNiAtIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBlYXJs
aWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVhZC4K
LSAgICBmbG9hdCBlYXJsaWVzdFRpbWUgPSBtX3BsYXllci0+c3RhcnRUaW1lKCk7CisgICAgZG91
YmxlIGVhcmxpZXN0VGltZSA9IG1fcGxheWVyLT5zdGFydFRpbWUoKTsKICAgICB0aW1lID0gbWF4
KHRpbWUsIGVhcmxpZXN0VGltZSk7CiAKICAgICAvLyBBc2sgdGhlIG1lZGlhIGVuZ2luZSBmb3Ig
dGhlIHRpbWUgdmFsdWUgaW4gdGhlIG1vdmllJ3MgdGltZSBzY2FsZSBiZWZvcmUgY29tcGFyaW5n
IHdpdGggY3VycmVudCB0aW1lLiBUaGlzCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8g
bm90IGdlbmVyYXRlIGEgdGltZWNoYW5nZWQgY2FsbGJhY2suIFRoaXMgbWVhbnMgbV9zZWVraW5n
IHdpbGwgbmV2ZXIgYmUgY2xlYXJlZCBhbmQgd2Ugd2lsbCBuZXZlciAKICAgICAvLyBmaXJlIGEg
J3NlZWtlZCcgZXZlbnQuCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGZsb2F0IG1lZGlhVGltZSA9
IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CisgICAgZG91YmxlIG1lZGlh
VGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CiAgICAgaWYgKHRp
bWUgIT0gbWVkaWFUaW1lKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrKCVmKSAtIG1lZGlhIHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgJWYiLCB0aW1lLCBtZWRpYVRp
bWUpOwogI2VuZGlmCkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmludmFsaWRhdGVDYWNoZWRUaW1lKCkKIH0KIAogLy8gcGxheWJhY2sgc3RhdGUKLWZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVkaWFFbGVt
ZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdT
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5DYWNoZWREZWx0YUZvcldhcm5pbmcgPSAwLjAx
OwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRp
bWUoKSBjb25zdAogCiAgICAgaWYgKG1fY2FjaGVkVGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKSAmJiBtX3BhdXNlZCkgewogI2lmIExPR19DQUNIRURfVElNRV9XQVJOSU5HUwotICAg
ICAgICBmbG9hdCBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgp
OworICAgICAgICBkb3VibGUgZGVsdGEgPSBtX2NhY2hlZFRpbWUgLSBtX3BsYXllci0+Y3VycmVu
dFRpbWUoKTsKICAgICAgICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFGb3JXYXJuaW5nKQog
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUgLSBX
QVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4g
cGF1c2VkIiwgZGVsdGEpOwogI2VuZGlmCkBAIC0yMjMzLDEwICsyMjMzLDEwIEBAIGZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgICAgICAvLyBOb3QgdG9v
IHNvb24sIHVzZSB0aGUgY2FjaGVkIHRpbWUgb25seSBpZiBpdCBoYXNuJ3QgZXhwaXJlZC4KICAg
ICAgICAgaWYgKHdhbGxDbG9ja0RlbHRhIDwgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGlt
ZSkgewotICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRDYWNoZVRpbWUgPSBzdGF0aWNfY2FzdDxm
bG9hdD4obV9jYWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpKTsK
KyAgICAgICAgICAgIGRvdWJsZSBhZGp1c3RlZENhY2hlVGltZSA9IG1fY2FjaGVkVGltZSArICht
X3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKTsKIAogI2lmIExPR19DQUNIRURfVElNRV9X
QVJOSU5HUwotICAgICAgICAgICAgZmxvYXQgZGVsdGEgPSBhZGp1c3RlZENhY2hlVGltZSAtIG1f
cGxheWVyLT5jdXJyZW50VGltZSgpOworICAgICAgICAgICAgZG91YmxlIGRlbHRhID0gYWRqdXN0
ZWRDYWNoZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlmIChk
ZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKICAgICAgICAgICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0aW1l
IGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVsdGEpOwog
I2VuZGlmCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpjdXJy
ZW50VGltZSgpIGNvbnN0CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAgICAgaWYgKG1h
eGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUgJiYgbm93ID4gbV9taW5pbXVtV2FsbENsb2Nr
VGltZVRvQ2FjaGVNZWRpYVRpbWUgJiYgbV9jYWNoZWRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpKSB7CiAgICAgICAgIGRvdWJsZSB3YWxsQ2xvY2tEZWx0YSA9IG5vdyAtIG1fY2Fj
aGVkVGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7Ci0gICAgICAgIGZsb2F0IGRlbHRhID0gbV9jYWNo
ZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpIC0gbV9wbGF5ZXItPmN1
cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IG1fY2FjaGVkVGltZSArIChtX3Bs
YXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgpOwog
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIGNhY2hl
ZCB0aW1lIHdhcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJlZCIs
IGRlbHRhKTsKICAgICB9CiAjZW5kaWYKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIGZsb2F0IEhUTUxN
ZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRUaW1l
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGlt
ZShkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fbWVkaWFDb250
cm9sbGVyKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yMjY2LDcgKzIy
NjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNlZWsodGltZSwgZWMpOwogfQogCi1mbG9hdCBIVE1M
TWVkaWFFbGVtZW50OjpzdGFydFRpbWUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6
OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0yMjg0LDEyICsyMjg0LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50Ojppbml0
aWFsVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLT5pbml0aWFsVGltZSgpOwogfQog
Ci1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0Citkb3VibGUgSFRNTE1l
ZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewogICAgIGlmIChtX3BsYXllciAmJiBtX3Jl
YWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5kdXJh
dGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7
CisgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgpIGNvbnN0CkBAIC0yMjk3LDEyICsyMjk3LDEy
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9w
YXVzZWQ7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQogewog
ICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX2RlZmF1
bHRQbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtMjMxMCwxMiArMjMxMCwxMiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICB9CiB9
CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Citkb3VibGUg
SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
bGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRl
KGZsb2F0IHJhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShkb3Vi
bGUgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFj
a1JhdGUoJWYpIiwgcmF0ZSk7CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiB7Ci0gICAgZmxvYXQgZWZmZWN0aXZlUmF0
ZSA9IG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPnBsYXliYWNrUmF0ZSgp
IDogbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIGVmZmVjdGl2ZVJhdGUgPSBtX21lZGlhQ29u
dHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5wbGF5YmFja1JhdGUoKSA6IG1fcGxheWJhY2tS
YXRlOwogICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXll
ci0+cmF0ZSgpICE9IGVmZmVjdGl2ZVJhdGUpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKGVm
ZmVjdGl2ZVJhdGUpOwogfQpAQCAtMjYyNywxMiArMjYyNywxMiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldENvbnRyb2xzKGJvb2wgYikKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGNvbnRy
b2xzQXR0ciwgYik7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSgpIGNvbnN0
Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6dm9sdW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV92b2x1bWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0IHZv
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZShk
b3VibGUgdm9sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpzZXRWb2x1bWUoJWYpIiwgdm9sKTsKIApAQCAtMjc2MSw3ICsyNzYxLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlv
ZGljRXZlbnQpCiAKICAgICAvLyBTb21lIG1lZGlhIGVuZ2luZXMgbWFrZSBtdWx0aXBsZSAidGlt
ZSBjaGFuZ2VkIiBjYWxsYmFja3MgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHdlIG9ubHkgd2FudCBv
bmUKICAgICAvLyBldmVudCBhdCBhIGdpdmVuIHRpbWUgc28gZmlsdGVyIGhlcmUKLSAgICBmbG9h
dCBtb3ZpZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBtb3ZpZVRpbWUgPSBjdXJy
ZW50VGltZSgpOwogICAgIGlmIChtb3ZpZVRpbWUgIT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92
aWVUaW1lKSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCk7CiAgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lID0gbm93OwpAQCAt
Mjc3NCwyMCArMjc3NCwyMCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXkoKSBjb25z
dAogICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhBVkVf
TUVUQURBVEE7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBj
b25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogewog
ICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9wbGF5ZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9wbGF5ZXIt
PmR1cmF0aW9uKCk7CiAKICAgICBpZiAoIWR1cmF0aW9uIHx8IHN0ZDo6aXNpbmYoZHVyYXRpb24p
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZsb2F0IGJ1ZmZlcmVkID0gMDsKKyAgICBkb3Vi
bGUgYnVmZmVyZWQgPSAwOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gbV9w
bGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5n
ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZmxvYXQgc3RhcnQgPSB0aW1lUmFuZ2VzLT5z
dGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICAgICAgZmxvYXQgZW5kID0gdGltZVJhbmdl
cy0+ZW5kKGksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgc3RhcnQgPSB0aW1l
UmFuZ2VzLT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgZG91YmxlIGVuZCA9
IHRpbWVSYW5nZXMtPmVuZChpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgYnVmZmVyZWQg
Kz0gZW5kIC0gc3RhcnQ7CiAgICAgfQogICAgIHJldHVybiBidWZmZXJlZCAvIGR1cmF0aW9uOwpA
QCAtMzQ1Nyw4ICszNDU3LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAvLyBtb3ZpZSB0aW1lLgogICAgIHNjaGVkdWxl
VGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKIAotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7
Ci0gICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRp
bWUoKTsKKyAgICBkb3VibGUgZHVyID0gZHVyYXRpb24oKTsKICAgICAKICAgICAvLyBXaGVuIHRo
ZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgbWVkaWEg
cmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gcGxheWJhY2sgaXMgZm9yd2Fy
ZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6CkBAIC0zNTAw
LDcgKzM1MDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hh
bmdlZChNZWRpYVBsYXllciopCiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKSB7Ci0gICAgICAgIGZsb2F0IHZvbCA9IG1fcGxheWVy
LT52b2x1bWUoKTsKKyAgICAgICAgZG91YmxlIHZvbCA9IG1fcGxheWVyLT52b2x1bWUoKTsKICAg
ICAgICAgaWYgKHZvbCAhPSBtX3ZvbHVtZSkgewogICAgICAgICAgICAgbV92b2x1bWUgPSB2b2w7
CiAgICAgICAgICAgICB1cGRhdGVWb2x1bWUoKTsKQEAgLTM1MjksOCArMzUyOSw4IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIq
IHBsYXllcikKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2
ZW50KTsKICAgICBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChwbGF5ZXIpOwogCi0g
ICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigp
OworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXIgPSBkdXJh
dGlvbigpOwogICAgIGlmIChub3cgPiBkdXIpCiAgICAgICAgIHNlZWsoZHVyLCBJR05PUkVfRVhD
RVBUSU9OKTsKIApAQCAtMzY4NSw3ICszNjg1LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBI
VE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiB7CiAgICAgaWYgKG1fcGxheWluZykgewotICAg
ICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHRpbWUgPSBj
dXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+IG1fbGFzdFNlZWtUaW1lKQogICAgICAg
ICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1RpbWUsIHRpbWUpOwogICAgIH0KQEAgLTM3
MTcsNyArMzcxNyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91Z2hE
YXRhKCkgY29uc3QKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKCkgY29u
c3QKIHsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXIgPSBkdXJh
dGlvbigpOwogICAgIGlmICghbV9wbGF5ZXIgfHwgc3RkOjppc25hbihkdXIpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTM3MzEsNyArMzczMSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgLy8gYW5kIHRoZSBjdXJyZW50IHBsYXliYWNr
IHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCB0aGUgZGlyZWN0
aW9uCiAgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVkaWEgZWxl
bWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAogICAgIC8vIG9y
IHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KLSAgICBm
bG9hdCBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgp
OwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCiAgICAgICAgIHJldHVybiBkdXIgPiAwICYm
IG5vdyA+PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCkBAIC0zNzYw
LDEyICszNzYwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVy
YWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6Om1pblRpbWVTZWVrYWJsZSgpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6
bWluVGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQgSFRN
TE1lZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVkaWFF
bGVtZW50OjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXllciA/
IG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSA6IDA7CiB9CkBAIC0zNzc4LDcgKzM3NzgsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgLy8gQXZvaWQgcmVj
dXJzaW9uIHdoZW4gdGhlIHBsYXllciByZXBvcnRzIHZvbHVtZSBjaGFuZ2VzLgogICAgIGlmICgh
cHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0gcGFn
ZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOworICAgICAgICBkb3VibGUgdm9sdW1lTXVsdGlw
bGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKICAgICAgICAgYm9vbCBzaG91
bGRNdXRlID0gbV9tdXRlZDsKIAogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsKQEAg
LTM4NDMsNyArMzg0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRl
KCkKIAogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7CiAgICAgICAgIG1f
cGxheWluZyA9IGZhbHNlOwotICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAg
ICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+IG1f
bGFzdFNlZWtUaW1lKQogICAgICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1RpbWUs
IHRpbWUpOwogCkBAIC00Njg3LDcgKzQ2ODcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
QmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKICAgICAvLyBvciBpZiBpdHMgbWVkaWEg
Y29udHJvbGxlciBwb3NpdGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJjZSdz
IGVhcmxpZXN0IHBvc3NpYmxlIAogICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRp
YUNvbnRyb2xsZXIncyB0aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNv
dXJjZSAKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUu
Ci0gICAgZmxvYXQgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKICAgICBpZiAobWVkaWFDb250cm9sbGVyUG9z
aXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0VGlt
ZSgpICsgZHVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ2OTcsNyArNDY5
Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIo
KSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVSSSgp
CiB7CiAgICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJlbnRT
cmMpOwotICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1cmF0
aW9uKCk7CiAgICAgCiAgICAgZG91YmxlIHN0YXJ0ID0gZnJhZ21lbnRQYXJzZXIuc3RhcnRUaW1l
KCk7CiAgICAgaWYgKHN0YXJ0ICE9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmludmFsaWRUaW1l
VmFsdWUoKSAmJiBzdGFydCA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggMTFkZTZjNjFmNGVlMDJlZjQxZDY4Yzc1NzM1ZjJiMWNiODE4ZGViOS4uMDA0N2Vj
MzE1NjllN2QxNTkzMzllY2MxNzM3NDdkOGNkNDAwYTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGhhc0F1ZGlvKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJld2luZChmbG9hdCB0aW1lRGVsdGEpOwor
ICAgIHZvaWQgcmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpOwogICAgIHZvaWQgcmV0dXJuVG9SZWFs
dGltZSgpOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0VsZW1l
bnQKQEAgLTE0NCwxNiArMTQ0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBjb25z
dDsKIAogLy8gcGxheWJhY2sgc3RhdGUKLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBkb3Vi
bGUgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0OwotICAgIGZs
b2F0IHN0YXJ0VGltZSgpIGNvbnN0OwotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAg
ZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0Owog
ICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7Ci0gICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgp
IGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Ci0gICAgZmxv
YXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
OworICAgIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRE
ZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSk7CisgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CiAgICAgdm9pZCB1cGRhdGVQ
bGF5YmFja1JhdGUoKTsKICAgICBib29sIHdlYmtpdFByZXNlcnZlc1BpdGNoKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKQEAgLTIwNiw4ICsyMDYsOCBA
QCBwdWJsaWM6CiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAgICB2
b2lkIHNldENvbnRyb2xzKGJvb2wpOwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgZG91YmxlIHZvbHVtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpOwogCkBAIC0yMTcs
NyArMjE3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0OwogCi0g
ICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OworICAgIGRvdWJsZSBwZXJjZW50TG9hZGVk
KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5NiwxMCAr
NDk2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpOwog
ICAgIHZvaWQgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAKLSAgICB2b2lkIHNlZWsoZmxvYXQgdGlt
ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgZmluaXNoU2VlaygpOwogICAgIHZvaWQgY2hlY2tJZlNlZWtOZWVk
ZWQoKTsKLSAgICB2b2lkIGFkZFBsYXllZFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpOwor
ICAgIHZvaWQgYWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICAK
ICAgICB2b2lkIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCk7CiAg
ICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKQEAg
LTUyMyw3ICs1MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7CisgICAgdm9pZCB1cGRhdGVB
Y3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCogc2hvd2lu
Z1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQg
bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CkBAIC01NTAsMTMg
KzU1MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkg
Y29uc3Q7CiAgICAgYm9vbCBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdDsKIAotICAgIGZs
b2F0IG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwotICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgp
IGNvbnN0OworICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKKyAgICBkb3VibGUg
bWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0aG91
dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBzZXRQ
YXVzZWRJbnRlcm5hbChib29sKTsKIAotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwo
ZmxvYXQpOworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKQEAgLTYwMCw4ICs2MDAsOCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgT3du
UHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIGZsb2F0IG1f
cGxheWJhY2tSYXRlOwotICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBkb3Vi
bGUgbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKICAg
ICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0Y2g7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0d29y
a1N0YXRlOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwpAQCAtNjEwLDggKzYxMCw4IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAotICAgIGZsb2F0
IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fbGFzdFNlZWtUaW1lOworICAgIGRvdWJsZSBtX3ZvbHVt
ZTsKKyAgICBkb3VibGUgbV9sYXN0U2Vla1RpbWU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9wcmV2
aW91c1Byb2dyZXNzOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwpAQCAtNjIw
LDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdh
bGxUaW1lOwogCiAgICAgLy8gVGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2FzIHNl
bnQgaW4gbW92aWUgdGltZS4KLSAgICBmbG9hdCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRp
bWU7CisgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZTsKICAgICAKICAg
ICAvLyBMb2FkaW5nIHN0YXRlLgogICAgIGVudW0gTG9hZFN0YXRlIHsgV2FpdGluZ0ZvclNvdXJj
ZSwgTG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQgfTsKQEAgLTY0
Nyw3ICs2NDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRpYVNv
dXJjZTsKICNlbmRpZgogCi0gICAgbXV0YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CisgICAgbXV0
YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVkVGlt
ZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2FsbENs
b2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CiAKQEAgLTY5Niw3ICs2OTYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNpYmxlVGV4
dFRyYWNrIDogMTsKICAgICBib29sIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgOiAxOwot
ICAgIGZsb2F0IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CisgICAgZG91YmxlIG1fbGFzdFRl
eHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJh
Y2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5SZXNv
dXJjZVNlbGVjdGlvbkJlZ2FuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKaW5kZXggOTM5NDUyZGMyM2M2ZGRmZjVhZjBiODM1OGU1YzAyYzdiNTMwZTdiYi4uNmZiMzEz
OGIyMWI1NDFhNDIwZjgyN2M3OTI1OTVhMmI1ODljYmU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC02MywxNCArNjMsMTQgQEAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBzZWVraW5nOwogCiAvLyBwbGF5YmFjayBzdGF0ZQotYXR0cmlidXRlIGZsb2F0IGN1cnJlbnRU
aW1lCithdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCiAgICAgc2V0dGVyIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgaW5pdGlhbFRpbWU7Ci1yZWFk
b25seSBhdHRyaWJ1dGUgZmxvYXQgc3RhcnRUaW1lOwotcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0
IGR1cmF0aW9uOworcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBzdGFydFRpbWU7CityZWFkb25s
eSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOwogcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
cGF1c2VkOwotYXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGU7Ci1hdHRyaWJ1dGUg
ZmxvYXQgcGxheWJhY2tSYXRlOworYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRl
OworYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUgVGlt
ZVJhbmdlcyBwbGF5ZWQ7CiByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJsZTsK
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGVuZGVkOwpAQCAtODEsNyArODEsNyBAQCB2b2lk
IHBhdXNlKCk7CiAKIC8vIGNvbnRyb2xzCiBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsKLWF0
dHJpYnV0ZSBmbG9hdCB2b2x1bWUgCithdHRyaWJ1dGUgZG91YmxlIHZvbHVtZSAKICAgICBzZXR0
ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiBhdHRy
aWJ1dGUgW1JlZmxlY3Q9bXV0ZWRdIGJvb2xlYW4gZGVmYXVsdE11dGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDEwMzE2MWIxY2IxYjFiNTVmNWQ3ZGM3Y2Fh
ODMyYWEzYWNjNTVlNmIuLjMzYzYzYTY2ZGE2MTA3OWY3MDBlOWE3NGYyNWUyY2JlZDJiNjY3MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTEyOSwxMyArMTI5
LDEzIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQoKQog
ICAgIHJldHVybiBwbGF5ZWRSYW5nZXM7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVy
YXRpb24oKSBjb25zdAorZG91YmxlIE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0aW9u
IGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKICAgICAvLyB3aGVuIHRoZSBzbGF2
ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCi0gICAgZmxvYXQgbWF4RHVyYXRp
b24gPSAwOworICAgIGRvdWJsZSBtYXhEdXJhdGlvbiA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAg
ICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigpOwor
ICAgICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlv
bigpOwogICAgICAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9uKTsK
QEAgLTE0MywyNiArMTQzLDI2IEBAIGZsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBj
b25zdAogICAgIHJldHVybiBtYXhEdXJhdGlvbjsKIH0KIAotZmxvYXQgTWVkaWFDb250cm9sbGVy
OjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGlt
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgaWYgKG1fcG9zaXRpb24gPT0gTWVkaWFQbGF5ZXI6OmludmFsaWRU
aW1lKCkpIHsKICAgICAgICAgLy8gU29tZSBjbG9ja3MgbWF5IHJldHVybiB0aW1lcyBvdXRzaWRl
IHRoZSByYW5nZSBvZiBbMC4uZHVyYXRpb25dLgotICAgICAgICBtX3Bvc2l0aW9uID0gbWF4KDAu
MGYsIG1pbihkdXJhdGlvbigpLCBtX2Nsb2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAgIG1f
cG9zaXRpb24gPSBtYXgoMC4wLCBtaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+Y3VycmVudFRpbWUo
KSkpOwogICAgICAgICBtX2NsZWFyUG9zaXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVyOjpz
ZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBNZWRp
YUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBj
b2RlKQogewogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVkaWEg
Y29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKICAgICAv
LyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNr
IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgotICAgIHRp
bWUgPSBtYXgoMC4wZiwgdGltZSk7CisgICAgdGltZSA9IG1heCgwLjAsIHRpbWUpOwogICAgIAog
ICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBt
ZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKICAgICAvLyB0byB0aGUgbWVk
aWEgY29udHJvbGxlciBkdXJhdGlvbi4KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbGxlcjo6cGF1c2UoKQogICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOwogfQogCi12b2lk
IE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7
CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47
CkBAIC0yMzAsMTIgKzIzMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCk7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tSYXRl
KCkgY29uc3QKK2RvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9s
bGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpz
ZXRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fY2xvY2stPnBsYXlSYXRl
KCkgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgTWVk
aWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1lZGlhQ29udHJv
bGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShkb3VibGUgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGNv
ZGUpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCA2NjE1YTNiYzQ4MGI5N2JjMmFiZGE4
YWI1MWM1MjMzMTNmZTVmZTA1Li41ZTQ1NmJkMDNjZjM5Y2Y0YjRlZDdhZjNhNDQ5NWNjZGZkZjJi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTYwLDIzICs2MCwy
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgpOwog
ICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZs
b2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1l
KGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQg
dW5wYXVzZSgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWZh
dWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRlOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAgICAK
LSAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXliYWNrUmF0
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CiAgICAgVmVjdG9y
PEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhdXNlZDsK
LSAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7Ci0gICAgZmxvYXQgbV92b2x1bWU7Ci0g
ICAgbXV0YWJsZSBmbG9hdCBtX3Bvc2l0aW9uOworICAgIGRvdWJsZSBtX2RlZmF1bHRQbGF5YmFj
a1JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOworICAgIG11dGFibGUgZG91YmxlIG1fcG9zaXRp
b247CiAgICAgYm9vbCBtX211dGVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAg
IFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKaW5kZXggN2JjZjA2YzVmYjY2NThjZGU0YTliZjAy
MjU2MTI4MDYwYjY2YmEwZC4uNDg1MDUwY2VhN2RkODc4NTRkZTJkZWEyN2VhMDYxOTRjMTNhZTc3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
CkBAIC00NSwyMiArNDUsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gcGxheWVkKCkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24o
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IGRl
ZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERlZmF1
bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0UGxh
eWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJh
Y2tSYXRlKGRvdWJsZSkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpID0g
MDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpID0gMDsKICAgICAKLSAgICB2aXJ0dWFs
IGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZs
b2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMu
Y3BwCmluZGV4IGMyMjQ3NGEwNjI5YzlhN2RkYWIzYzg5MjRkZGY5MjQ5YWVlZmE4ZWMuLmIwNDVh
Y2E3ZTM5ODhlMjAxNTVmOGU4ZGI1ZWY5M2Q4ODYzNTg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
UmFuZ2VzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0
LCBmbG9hdCBlbmQpCitUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CkBAIC01MywxOSArNTMsMTkgQEAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHZvaWQgVGltZVJh
bmdlczo6aW52ZXJ0KCkKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZG91YmxlIHBvc0luZiA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBkb3VibGUgbmVnSW5mID0gLXN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIAogICAgIGlmICghbV9yYW5nZXMu
c2l6ZSgpKQogICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgcG9zSW5mKTsKICAgICBlbHNl
IHsKLSAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0ICE9
IG5lZ0luZikKKyAgICAgICAgaWYgKGRvdWJsZSBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCkubV9z
dGFydCAhPSBuZWdJbmYpCiAgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3RhcnQp
OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5nZXMu
c2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tpbmRl
eF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CiAKLSAgICAgICAgaWYgKGZs
b2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgIGlmIChk
b3VibGUgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKICAgICAgICAgICAg
IGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOwogICAgIH0KIApAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKICAgICBt
X3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKIH0KIAotZmxvYXQgVGltZVJhbmdlczo6
c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBU
aW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBJTkRFWF9T
SVpFX0VSUjsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1bnNp
Z25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmFuZ2Vz
W2luZGV4XS5tX3N0YXJ0OwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjplbmQodW5z
aWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGluZGV4
ID49IGxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgZmxvYXQgVGltZVJhbmdlczo6ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25D
b2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fZW5kOwogfQogCi12
b2lkIFRpbWVSYW5nZXM6OmFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKSAKK3ZvaWQgVGltZVJh
bmdlczo6YWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgCiB7CiAgICAgQVNTRVJUKHN0YXJ0
IDw9IGVuZCk7CiAgICAgdW5zaWduZWQgaW50IG92ZXJsYXBwaW5nQXJjSW5kZXg7CkBAIC0xNTYs
NyArMTU2LDcgQEAgdm9pZCBUaW1lUmFuZ2VzOjphZGQoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkK
ICAgICBtX3Jhbmdlcy5pbnNlcnQob3ZlcmxhcHBpbmdBcmNJbmRleCwgYWRkZWRSYW5nZSk7CiB9
CiAKLWJvb2wgVGltZVJhbmdlczo6Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdAorYm9vbCBUaW1l
UmFuZ2VzOjpjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdAogewogICAgIGZvciAodW5zaWduZWQg
biA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7CiAgICAgICAgIGlmICh0aW1lID49IHN0YXJ0KG4s
IElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENFUFRJT04pKQpA
QCAtMTY1LDEzICsxNjUsMTMgQEAgYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGZsb2F0IHRpbWUp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjpuZWFyZXN0
KGZsb2F0IHRpbWUpIGNvbnN0Citkb3VibGUgVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUgdGlt
ZSkgY29uc3QKIHsKLSAgICBmbG9hdCBjbG9zZXN0ID0gMDsKKyAgICBkb3VibGUgY2xvc2VzdCA9
IDA7CiAgICAgdW5zaWduZWQgY291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIG5k
eCA9IDA7IG5keCA8IGNvdW50OyBuZHgrKykgewotICAgICAgICBmbG9hdCBzdGFydFRpbWUgPSBz
dGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOwotICAgICAgICBmbG9hdCBlbmRUaW1lID0gZW5k
KG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBzdGFy
dChuZHgsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgZW5kVGltZSA9IGVuZChu
ZHgsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBpZiAodGltZSA+PSBzdGFydFRpbWUgJiYg
dGltZSA8PSBlbmRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHRpbWU7CiAgICAgICAgIGlmIChm
YWJzKHN0YXJ0VGltZSAtIHRpbWUpIDwgY2xvc2VzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgK
aW5kZXggNDI1NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3Zi4uZWZkY2FiZmMy
M2UzMzk1MzdkNGYzMDMyMmQzZjI2OTc3YzAzYmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaW1lUmFuZ2VzKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJh
bmdlcz4gY3JlYXRlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAgICAg
fQpAQCAtNTIsMzIgKzUyLDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaW9uV2l0aChjb25zdCBU
aW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Jh
bmdlcy5zaXplKCk7IH0KLSAgICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwotICAgIGZsb2F0IGVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OworICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OworICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKICAgICAKLSAgICB2b2lkIGFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsKKyAg
ICB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAotICAgIGJvb2wgY29u
dGFpbihmbG9hdCB0aW1lKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUpIGNv
bnN0OwogICAgIAotICAgIGZsb2F0IG5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3Q7CisgICAgZG91
YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRpbWVSYW5n
ZXMoKSB7IH0KLSAgICBUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpOworICAgIFRp
bWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICBUaW1lUmFuZ2VzKGNvbnN0
IFRpbWVSYW5nZXMmKTsKIAogICAgIC8vIFdlIGNvbnNpZGVyIGFsbCB0aGUgUmFuZ2VzIHRvIGJl
IHNlbWktYm91bmRlZCBhcyBmb2xsb3c6IFtzdGFydCwgZW5kWwogICAgIHN0cnVjdCBSYW5nZSB7
CiAgICAgICAgIFJhbmdlKCkgeyB9Ci0gICAgICAgIFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBl
bmQpCisgICAgICAgIFJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICAgICAgewog
ICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0OwogICAgICAgICAgICAgbV9lbmQgPSBlbmQ7CiAg
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgbV9zdGFydDsKLSAgICAgICAgZmxvYXQgbV9lbmQ7Cisg
ICAgICAgIGRvdWJsZSBtX3N0YXJ0OworICAgICAgICBkb3VibGUgbV9lbmQ7CiAKLSAgICAgICAg
aW5saW5lIGJvb2wgaXNQb2ludEluUmFuZ2UoZmxvYXQgcG9pbnQpIGNvbnN0CisgICAgICAgIGlu
bGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkgY29uc3QKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYgcG9pbnQgPCBtX2VuZDsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwKaW5kZXggNjFkYTA5M2E5ZTE4ZThi
NTRiNjQ3YTkzOWYyY2IzMmUwZTVkYzNjMC4uOTljYTg4MjcxNzEzYzExYWEwMTVjYjRjNjFkYzg1
MDAzNmMyODVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCkBAIC0yOCw5ICsyOCw5
IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgVGltZVJhbmdl
cyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIGZs
b2F0IHN0YXJ0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCisgICAgZG91YmxlIHN0YXJ0KGluIHVu
c2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBm
bG9hdCBlbmQoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkKKyAgICBkb3VibGUgZW5kKGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRU
eXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
VHlwZXMuY3BwCmluZGV4IDc5ZWZkY2NhNTM5YzNhZTY1YTA4YTkyYmRkODY2YzI1NjY5ZWU3OTMu
LjczMmRiYjAyMDYxMWQ1MGE0YjNjOWJlMmRlNDQ2NGMxNmU2NGE4ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNw
cApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtNDgsMTAgKzQ3LDEwIEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiBjbGFzcyBFdmVudDsKIAogLy8gRklYTUU6IFRoZXNlIGNvbnN0YW50
cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBpbiB0
aGUgUXVpY2tUaW1lIHBsdWctaW4uCi1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXREZWxh
eSA9IDAuMWY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRpYyBj
b25zdCBmbG9hdCBjU2NhblJlcGVhdERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9hdCBj
U2Nhbk1heGltdW1SYXRlID0gODsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBSZXBlYXREZWxh
eSA9IDAuMTsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBUaW1lID0gMC4yOworc3RhdGljIGNv
bnN0IGRvdWJsZSBjU2NhblJlcGVhdERlbGF5ID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBj
U2Nhbk1heGltdW1SYXRlID0gODsKIAogSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVs
ZW1lbnQoTm9kZSogbm9kZSkKIHsKQEAgLTE1NCw3ICsxNTMsNyBAQCBNZWRpYUNvbnRyb2xUaW1l
RGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbgogewogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6c2V0
Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxl
bWVudDo6c2V0Q3VycmVudFZhbHVlKGRvdWJsZSB0aW1lKQogewogICAgIG1fY3VycmVudFZhbHVl
ID0gdGltZTsKIH0KQEAgLTI0OSw5ICsyNDgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0
b25FbGVtZW50OjpzdG9wVGltZXIoKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CiB9CiAK
LWZsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0Citk
b3VibGUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKIHsK
LSAgICBmbG9hdCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVkaWFD
b250cm9sbGVyKCktPnBsYXliYWNrUmF0ZSgpICogMikpOworICAgIGRvdWJsZSByYXRlID0gc3Rk
OjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFicyhtZWRpYUNvbnRyb2xsZXIoKS0+cGxheWJhY2tS
YXRlKCkgKiAyKSk7CiAgICAgaWYgKCFpc0ZvcndhcmRCdXR0b24oKSkKICAgICAgICAgcmF0ZSAq
PSAtMTsKICAgICByZXR1cm4gcmF0ZTsKQEAgLTI2MCw3ICsyNTksNyBAQCBmbG9hdCBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogdm9pZCBNZWRpYUNvbnRy
b2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ+KikKIHsKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7Ci0gICAg
ICAgIGZsb2F0IHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAtY1Nr
aXBUaW1lOworICAgICAgICBkb3VibGUgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNT
a2lwVGltZSA6IC1jU2tpcFRpbWU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJy
ZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBJR05P
UkVfRVhDRVBUSU9OKTsKICAgICB9IGVsc2UKICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNl
dFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKQEAgLTI4OCw3ICsyODcsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVu
dCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9E
b3VibGUoKSk7CisgICAgZG91YmxlIHZvbHVtZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBp
ZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKICAgICAgICAgbWVkaWFD
b250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAg
IGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKQEAgLTMxMSw5ICszMTAsOSBAQCBi
b29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkKICAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit2b2lkIE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogewotICAgIGlmICh2
YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1bWUpCisgICAgaWYgKHZhbHVlKCkudG9Eb3VibGUoKSAh
PSB2b2x1bWUpCiAgICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5oCmluZGV4IGMyZjY3OTE4YjU0MzVhY2FiMjk4OWY4MmQyOTIwMjAwYmUwMzRhNDku
Ljk1OWMyZWZhMDMxNzAzZGIyZmI1MjAxNGUxNTVlZTgyZmUyOTBlNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCkBA
IC0xMzQsMTQgKzEzNCwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdm9pZCBzZXRDdXJyZW50VmFs
dWUoZG91YmxlKTsKKyAgICBkb3VibGUgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50VmFsdWU7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRp
bWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKIAog
cHJpdmF0ZToKLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKKyAgICBkb3VibGUgbV9jdXJyZW50
VmFsdWU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzgsNyAr
MTc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRUaW1lcigpOwogICAgIHZvaWQgc3Rv
cFRpbWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKKyAgICBkb3VibGUgbmV4dFJh
dGUoKSBjb25zdDsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiopOwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywgUGxh
eSwgUGF1c2UgfTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVS
UklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCBzZXRWb2x1bWUoZG91
YmxlKTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCmluZGV4IDIxMTBkMDQ1NGIyZjg0ZDVkYTE0NTk3NWI3ZGVhOTUxMjU5
ZGFjZGUuLjllNjgwZGRlODM2MGU4YTkxNDQ4ODdjM2U3NzNlZTE1MmE1ODc4ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYzMyw3
ICs2MzIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMGYsIG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAg
bWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjAsIG1lZGlhQ29udHJvbGxl
cigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtOTY1LDcgKzk2NCw3IEBAIHZvaWQgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgfHwg
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgp
KTsKKyAgICBkb3VibGUgdGltZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3Vy
cmVudFRpbWUodGltZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTk4MiwxMiArOTgxLDEyIEBA
IGJvb2wgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3ZvaWQgTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRpbWUpCiB7CiAg
ICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0KIAotdm9pZCBNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9p
ZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKIHsKICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoc3RkOjppc2Zp
bml0ZShkdXJhdGlvbikgPyBkdXJhdGlvbiA6IDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDE5ZjgzY2U5YWQ4ZDQ4
OTBlOWQ3NGYxMGU3MTI3YzU1ZTc5NWI0OTMuLmFkMTVmNGEwMWU3OTRlMzgzYjlkNzEzYmU3OTE0
N2MxODIwOTQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaApAQCAtMzM1LDggKzMzNSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOwogCi0gICAg
dm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7Cisg
ICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91Ymxl
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQo
RG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDM2ZTE3ODBiMzI3ZTllNTNhZjEyMGI5ZmM3YTFlOTM1
ZTcxN2ExNzguLmIwYjI4ODQyOGU4OTQ3MjExOTM1MWNkNWE2MWQyNjBkZDgyZjE0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6cmVzZXQoKQogCiAgICAgdXBkYXRlQ3VycmVudFRp
bWVEaXNwbGF5KCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJh
dGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVtZSgp
LT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgewogICAg
ICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1fdGltZWxp
bmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKQEAgLTIx
NCw3ICsyMTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCiAKIHZv
aWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsKLSAgICBmbG9h
dCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAKICAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDkxYThhNzdjZDExOTc3
MTg2ZWFhYTE2MWMyMDA2YzE5NTI5ZDYwMTUuLmM5M2JhNjg5MGEyYzFiZTNkMzQwODMzNjk0NGIz
MzYwYzJjMDM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0Fw
cGxlOjpyZXNldCgpCiAgICAgZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1fdGlt
ZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5l
ci0+c2hvdygpOwpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpy
ZXNldCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURpc3Bs
YXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgp
OwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7Cisg
ICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRv
dWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFn
ZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAK
aW5kZXggYWZmMGRiZjcyYmJlYjU4N2U1Mzc0MmY2Mzk3YWY1NTdjZTEwNzkxMi4uYjFjZjMyOTFi
ZGQxN2NkNmEwMzllYTIxZGFlZWVkOWViNDE3ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgxLDcgKzQ4MCw3IEBAIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgdGltZWxpbmUtPmVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2UiKTsK
LSAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAg
IHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImRvdWJsZSIpOwogICAgIHJl
dHVybiB0aW1lbGluZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTUwNSw3ICs1MDQsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2YWx1
ZSgpLnRvRG91YmxlKCkpOworICAgIGRvdWJsZSB0aW1lID0gdmFsdWUoKS50b0RvdWJsZSgpOwog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRpbWUg
IT0gbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBJR05PUkVfRVhDRVBUSU9OKTsKIApAQCAtNTIy
LDEyICs1MjEsMTIgQEAgYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50
Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24o
ZmxvYXQgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVs
ZW1lbnQ6OnNldFBvc2l0aW9uKGRvdWJsZSBjdXJyZW50VGltZSkKIHsKICAgICBzZXRWYWx1ZShT
dHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihkb3VibGUg
ZHVyYXRpb24pCiB7CiAgICAgc2V0QXR0cmlidXRlKG1heEF0dHIsIFN0cmluZzo6bnVtYmVyKHN0
ZDo6aXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CiB9CkBAIC05MTEsOSArOTEw
LDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAgICAg
fQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7Cisg
ICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAgICAg
aWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2Fi
bGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIGZsb2F0IG5v
dyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUgbm93
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIG1fdGltZWxpbmUt
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNl
dER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hvdygp
OwpAQCAtOTU1LDcgKzk1NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmJ1ZmZl
cmluZ1Byb2dyZXNzZWQoKQogICAgIC8vIFdlIG9ubHkgbmVlZCB0byB1cGRhdGUgYnVmZmVyaW5n
IHByb2dyZXNzIHdoZW4gcGF1c2VkLCBkdXJpbmcgbm9ybWFsCiAgICAgLy8gcGxheWJhY2sgcGxh
eWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyLT5wYXVzZWQoKSkgewotICAgICAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OwogICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICB9
CkBAIC05NjMsNyArOTYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVmZmVy
aW5nUHJvZ3Jlc3NlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNr
U3RhcnRlZCgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgp
OwogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX2Z1bGxzY3Jl
ZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fdGltZWxpbmUtPnNldFBv
c2l0aW9uKG5vdyk7CkBAIC05NzYsNyArOTc1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxl
ci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1
cnJlbnRUaW1lKCk7CiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICB1cGRhdGVDdXJyZW50VGlt
ZURpc3BsYXkoKTsKQEAgLTk4Nyw3ICs5ODYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
OjpwbGF5YmFja1N0b3BwZWQoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3Vy
cmVudFRpbWUoKTsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAgICAg
bV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3RpbWVs
aW5lLT5zZXRQb3NpdGlvbihub3cpOwpAQCAtMTAwMCw4ICs5OTksOCBAQCB2b2lkIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9
IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0g
bV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFD
b250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFD
b250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaAppbmRleCBlNDFmYTY5MWRiZmFhMDUyNmYxZDBi
NjMxNzk2NzRmMTgxN2RhNWYzLi4wZmY3NmNiYzkwZmI3MDlkN2E0OTQwZjRkNDg3NThhNjMwMWMz
YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNCbGFja0JlcnJ5LmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihmbG9h
dCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXRQb3NpdGlvbihk
b3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250
cm9scyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNDaHJvbWl1bS5jcHAKaW5kZXggODU4NTdlODczZDIyODgwOTA4ZjljYzAyYzkwYjVjZDQ0N2U2
OWQ3OS4uYjhiYTliZTgyOGY1NzMwZDc2ODZmMzIzOTQ5YWIzMjkwMzA2ZDk1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3Bw
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJlc2V0KCkK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0g
bV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9t
ZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElu
bmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlvbiks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJyZW50
VmFsdWUoZHVyYXRpb24pOwogCkBAIC0xNzMsOCArMTczLDggQEAgdm9pZCBNZWRpYUNvbnRyb2xz
Q2hyb21pdW06OnBsYXliYWNrU3RhcnRlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVt
Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFD
b250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNv
bnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNHdGsuY3BwCmluZGV4IDdhOGI5MjIyNTMwNjhmZWVkMWZhZmIyODBmNDg3MmUyMmQyNGMyNzcu
LjVlZWMwODdlOTBiMzEyNDU5ZmNmZDk2ODk5YzA5YWIzZTg4MThmZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjpyZXNldCgpCiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJh
dGlvbigpOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUo
KS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsKIApA
QCAtMTcyLDggKzE3Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cGxheWJhY2tTdGFydGVk
KCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQog
ewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAg
IGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91
YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBk
dXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggM2QzZWE4ZjJlMzc2YjUxMjY3OGVhZjIy
YzQwOGUzZTU5ZmYyMTM5NC4uNjk2NWI5MmY0NDg2MTRhNTJhMmY1ZWQ4ODZkMGU0YWIzNWYzMTI5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNzUx
LDcgKzc1MSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENv
bnRhaW5lck5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpCiAgICAgfQogfQogCi12b2lkIFRl
eHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQordm9pZCBUZXh0
VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAgLy8g
VGhlIGRpc3BsYXkgdHJlZSBtYXkgY29udGFpbiBXZWJWVFQgdGltZXN0YW1wIG9iamVjdHMgcmVw
cmVzZW50aW5nCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMpLCBh
bG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmgKaW5kZXggZWM2OTMwY2NhZWY1Mjk3ZDhkYjQzMTUzNDBjMzdjZmRkOGE1YzY4
ZC4uODc2ZDk0YTU0YWUzOGE4ODNjOWExOTcyOTUzODVlMDczMjM4M2VjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25zdCBJ
bnRTaXplJiB2aWRlb1NpemUpOwogICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2N1ZUJhY2tncm91bmRCb3g7IH0KIAotICAgIHZvaWQgdXBk
YXRlRGlzcGxheVRyZWUoZmxvYXQpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoZG91Ymxl
KTsKICAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCBtYXJrRnV0dXJlQW5k
UGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DbG9jay5oCmluZGV4IDg2YWY5NTY1NzM5OGQ0ZTYyOTAyOWIxNGI3ZmYwZTA5ZmQyYjg2Y2Yu
LjBiMzMyMmZlOTMyMWYyZWM2OWFlNmExYjA3OTk5ZjQyYWM1OTc4NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2xvY2suaApAQCAtMzYsMTEgKzM2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDbG9jaz4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgZmxvYXQg
Y3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1l
KGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KSA9IDA7Ci0gICAgdmlydHVh
bCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJh
dGUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCBlZjA5
YzRmMzgyMWY2Y2UzNmJmZTJjOGM1N2U1MDliNzY2MTZlN2Q2Li45OWFhMzQwM2M2MjY4YzkyYWVh
ZmIwYmYwYTg3ZGNmYzM5MDQzYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2Vu
ZXJpYy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDbG9ja0dlbmVyaWMuaCIKIAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5
LDIxICszOCwyMCBAQCBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCiAgICAgbV9zdGFydFRp
bWUgPSBtX2xhc3RUaW1lID0gbm93KCk7CiB9CiAKLXZvaWQgQ2xvY2tHZW5lcmljOjpzZXRDdXJy
ZW50VGltZShmbG9hdCB0aW1lKQordm9pZCBDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKGRv
dWJsZSB0aW1lKQogewogICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwogICAg
IG1fb2Zmc2V0ID0gdGltZTsKIH0KIAotZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgp
IGNvbnN0Citkb3VibGUgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fcnVubmluZykKICAgICAgICAgbV9sYXN0VGltZSA9IG5vdygpOwotICAgIGZsb2F0IHRp
bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KCgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAq
IG1fcmF0ZSkgKyBtX29mZnNldCk7Ci0gICAgcmV0dXJuIHRpbWU7CisgICAgcmV0dXJuICgobV9s
YXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsKIH0KIAotdm9pZCBD
bG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUpCit2b2lkIENsb2NrR2VuZXJpYzo6
c2V0UGxheVJhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgbV9vZmZzZXQgPSBub3coKTsKICAgICBt
X2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKQEAgLTgzLDQgKzgxLDMgQEAgZG91Ymxl
IENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpjdXJyZW50VGlt
ZSgpOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVy
aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IGQ1M2Ex
YmMyZGM0ZDNjNTVmOGUwZDYzOTljZjY1OGI5YjI2YWQ2MDIuLjNkYzBlN2RiNTNmZGEzYjk5NWZj
ZmZlMTgwZTFhZGJlNDY3YzQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJp
Yy5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogICAgIENsb2NrR2VuZXJpYygpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0gICAgdmly
dHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOwotICAgIHZpcnR1YWwgZmxv
YXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UGxheVJhdGUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmF0ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bm93KCkgY29uc3Q7CiAKICAgICBib29sIG1fcnVubmluZzsKLSAgICBmbG9hdCBtX3JhdGU7Cisg
ICAgZG91YmxlIG1fcmF0ZTsKICAgICBkb3VibGUgbV9vZmZzZXQ7CiAgICAgZG91YmxlIG1fc3Rh
cnRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fbGFzdFRpbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODljNWJhNWEzM2I5
YTlkYWI3ZWYyODY4OTRmOTM5NzMzNTQzZTg0MS4uMDQ3MTA1ZDUzYjdmMDE1ZGMzMzE4ZTRlOGQx
NmNmZjllMDhlODJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uRG91
YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkgeyB9
CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCB2b2lkIHNlZWtEb3VibGUoZG91YmxlKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVEb3VibGUoZG91
YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9s
dW1lRG91YmxlKGRvdWJsZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29s
KSB7IH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpFbXB0eTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQogCi0gICAgdmly
dHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IHsgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRvdGFs
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCBNZWRpYVBs
YXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmNhbmNlbEtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBrZXlTeQogfQogI2VuZGlmCiAKLWZsb2F0IE1lZGlhUGxheWVyOjpkdXJhdGlv
bigpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmR1cmF0
aW9uRG91YmxlKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25zdAor
ZG91YmxlIE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX3By
aXZhdGUtPnN0YXJ0VGltZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZURvdWJs
ZSgpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6OmluaXRpYWxUaW1lKCkgY29uc3QKQEAgLTUy
OSwxNCArNTI5LDE0IEBAIGRvdWJsZSBNZWRpYVBsYXllcjo6aW5pdGlhbFRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBtX3ByaXZhdGUtPmluaXRpYWxUaW1lKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxh
eWVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmN1cnJlbnRUaW1l
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jdXJyZW50VGltZSgpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmN1cnJlbnRUaW1lRG91YmxlKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXI6OnNlZWsoZmxvYXQgdGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoZG91YmxlIHRpbWUp
CiB7Ci0gICAgbV9wcml2YXRlLT5zZWVrKHRpbWUpOworICAgIG1fcHJpdmF0ZS0+c2Vla0RvdWJs
ZSh0aW1lKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6cGF1c2VkKCkgY29uc3QKQEAgLTYwOSwx
NyArNjA5LDE3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyOjpyZWFkeVN0
YXRlKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZWFkeVN0YXRlKCk7CiB9CiAKLWZsb2F0IE1l
ZGlhUGxheWVyOjp2b2x1bWUoKSBjb25zdAorZG91YmxlIE1lZGlhUGxheWVyOjp2b2x1bWUoKSBj
b25zdAogewogICAgIHJldHVybiBtX3ZvbHVtZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0
Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZvbHVtZShkb3VibGUg
dm9sdW1lKQogewogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCiAgICAgaWYgKG1fcHJpdmF0ZS0+
c3VwcG9ydHNNdXRpbmcoKSB8fCAhbV9tdXRlZCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRWb2x1
bWUodm9sdW1lKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRWb2x1bWVEb3VibGUodm9sdW1lKTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllcjo6bXV0ZWQoKSBjb25zdApAQCAtNjQ3LDE1ICs2NDcsMTUg
QEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpyYXRlKCkg
Y29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6cmF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cmF0ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShmbG9hdCByYXRlKQordm9pZCBN
ZWRpYVBsYXllcjo6c2V0UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBtX3JhdGUgPSByYXRlOwot
ICAgIG1fcHJpdmF0ZS0+c2V0UmF0ZShyYXRlKTsgICAKKyAgICBtX3ByaXZhdGUtPnNldFJhdGVE
b3VibGUocmF0ZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnByZXNlcnZlc1BpdGNoKCkgY29u
c3QKQEAgLTY3OSw5ICs2NzksOSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVy
OjpzZWVrYWJsZSgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKIH0KIAotZmxv
YXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCitkb3VibGUgTWVkaWFQbGF5ZXI6Om1h
eFRpbWVTZWVrYWJsZSgpCiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxl
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlRG91YmxlKCk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcygpCkBAIC04NTQsOSArODU0LDkg
QEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXI6Om1vdmllTG9hZFR5cGUo
KSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPm1vdmllTG9hZFR5cGUoKTsKIH0KIAotZmxv
YXQgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCB0aW1lVmFsdWUpIGNv
bnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShkb3VibGUgdGlt
ZVZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRpbWVW
YWx1ZSh0aW1lVmFsdWUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRpbWVW
YWx1ZURvdWJsZSh0aW1lVmFsdWUpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6Om1heGltdW1E
dXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdApAQCAtOTUyLDcgKzk1Miw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgbV9tZWRpYVBsYXllckNs
aWVudC0+bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllcjo6dm9sdW1lQ2hhbmdlZChmbG9hdCBuZXdWb2x1bWUpCit2b2lkIE1lZGlhUGxheWVy
Ojp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7CiAgICAgbV92b2x1bWUgPSBuZXdW
b2x1bWU7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4NmVhNDAyNzhjMjQ1NmRmZDM5
MWQ1NDRkZmRjMTI4NTQ1ZTczZWY3Li41ZDY1ZTk4OTVhMjhmMGE5NGUxMTIzMDM5MTdhMjZlNThm
ZTYwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTI5OCwyOSArMjk4LDI5IEBAIHB1YmxpYzoKICAgICBib29sIHBhdXNlZCgpIGNv
bnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGZsb2F0IGludmFs
aWRUaW1lKCkgeyByZXR1cm4gLTEuMGY7fQotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Ci0g
ICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2b2lkIHNlZWsoZmxvYXQgdGltZSk7
CisgICAgc3RhdGljIGRvdWJsZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIC0xLjA7fQorICAgIGRv
dWJsZSBkdXJhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSk7CiAKLSAgICBmbG9hdCBzdGFydFRpbWUoKSBjb25z
dDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CiAKICAgICBkb3VibGUgaW5pdGlhbFRp
bWUoKSBjb25zdDsKIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJhdGUo
ZmxvYXQpOworICAgIGRvdWJsZSByYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSYXRlKGRvdWJs
ZSk7CiAKICAgICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0
UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwotICAgIGZsb2F0
IG1heFRpbWVTZWVrYWJsZSgpOworICAgIGRvdWJsZSBtYXhUaW1lU2Vla2FibGUoKTsKIAogICAg
IGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsK
LSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSk7CiAKICAgICBib29sIG11dGVkKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNdXRlZChib29sKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2Vk
KCk7Ci0gICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNoYW5n
ZWQoZG91YmxlKTsKICAgICB2b2lkIG11dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgdGltZUNo
YW5nZWQoKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CkBAIC00MTQsNyArNDE0LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Q7CiAKLSAgICBm
bG9hdCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OworICAgIGRvdWJsZSBtZWRp
YVRpbWVGb3JUaW1lVmFsdWUoZG91YmxlKSBjb25zdDsKIAogICAgIGRvdWJsZSBtYXhpbXVtRHVy
YXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Q7CiAKQEAgLTQ4NSw4ICs0ODUsOCBAQCBwcml2
YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIFByZWxvYWQgbV9wcmVsb2FkOwogICAgIGJv
b2wgbV92aXNpYmxlOwotICAgIGZsb2F0IG1fcmF0ZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsKKyAg
ICBkb3VibGUgbV9yYXRlOworICAgIGRvdWJsZSBtX3ZvbHVtZTsKICAgICBib29sIG1fbXV0ZWQ7
CiAgICAgYm9vbCBtX3ByZXNlcnZlc1BpdGNoOwogICAgIGJvb2wgbV9wcml2YXRlQnJvd3Npbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCmluZGV4IGI3OTcwOWQ1Mzc1ZDU5MzE1YzY2OWU3MmQyMzQ1ZDNmNDIwNDhmYmIu
LmI1YTk5MTI3NmQ3M2QwODdiM2ZiNzA2NWUzY2RmMDNmZDkxZWM3MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBA
IC03MCwyMiArNzAsMzEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUo
Ym9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgZG91YmxlIGR1cmF0aW9uRG91YmxlKCkgY29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsgfQor
CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJl
bnRUaW1lKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0IHRpbWUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1lKSB7IHNlZWsodGltZSk7IH0KIAot
ICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNlZWsoZmxvYXQgdGltZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBkb3VibGUgc3RhcnRUaW1lRG91YmxlKCkgY29uc3QgeyByZXR1cm4g
c3RhcnRUaW1lKCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxUaW1lKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoZmxvYXQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJh
dGVEb3VibGUoZG91YmxlIHJhdGUpIHsgc2V0UmF0ZShyYXRlKTsgfQorCiAgICAgdmlydHVhbCB2
b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHBhdXNl
ZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Vm9sdW1lRG91YmxlKGRvdWJsZSB2b2x1bWUpIHsgcmV0dXJuIHNldFZvbHVtZSh2b2x1bWUp
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSB7IH0KQEAgLTk3LDcgKzEw
Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
c2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVSYW5nZXM6
OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQot
ICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRpbWVT
ZWVrYWJsZSgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0ID0gMDsKQEAgLTE0OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGltZSB2YWx1ZSBp
biB0aGUgbW92aWUncyB0aW1lIHNjYWxlLiBJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBvdmVycmlk
ZSB0aGlzIGlmIHRoZSBtZWRpYQogICAgIC8vIGVuZ2luZSB1c2VzIHJhdGlvbmFsIG51bWJlcnMg
dG8gcmVwcmVzZW50IG1lZGlhIHRpbWUuCiAgICAgdmlydHVhbCBmbG9hdCBtZWRpYVRpbWVGb3JU
aW1lVmFsdWUoZmxvYXQgdGltZVZhbHVlKSBjb25zdCB7IHJldHVybiB0aW1lVmFsdWU7IH0KKyAg
ICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWVEb3VibGUoZG91YmxlIHRpbWVW
YWx1ZSkgY29uc3QgeyByZXR1cm4gdGltZVZhbHVlOyB9CiAKICAgICAvLyBPdmVyaWRlIHRoaXMg
aWYgaXQgaXMgc2FmZSBmb3IgSFRNTE1lZGlhRWxlbWVudCB0byBjYWNoZSBtb3ZpZSB0aW1lIGFu
ZCByZXBvcnQKICAgICAvLyAnY3VycmVudFRpbWUnIGFzIFtjYWNoZWQgdGltZSArIGVsYXBzZWQg
d2FsbCB0aW1lXS4gUmV0dXJucyB0aGUgbWF4aW11bSB3YWxsIHRpbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195831</attachid>
            <date>2013-03-29 17:57:48 -0700</date>
            <delta_ts>2013-03-29 21:08:19 -0700</delta_ts>
            <desc>Remove ChangeLog cruft and fix Mac build</desc>
            <filename>bug-113615-20130329175744.patch</filename>
            <type>text/plain</type>
            <size>71211</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWUzNDJkODgwZGEzNWRm
YjNiNzBjYWY2ZmQ1OGJkNjBmMTU3NGQ1Zi4uYjcxOTBhMDY3MWM1ZWEyY2M3MzIyMTExYTZmZTYw
MjczZDA3MzMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAzLTI5ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBhbGwg
ZmxvYXQgYXR0cmlidXRlcyBpbiBIVE1MTWVkaWFFbGVtZW50IHRvIGRvdWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gUHJpbWFy
eSBiZWhhdmlvciBkb2Vzbid0IGNoYW5nZS4gSnVzdCB0aW1lLCBwbGF5YmFja1JhdGUsIGFuZCB2
b2x1bWUgcHJlY2lzaW9uLiBBbGwgZXhpc3RpbmcgbWVkaWEgTGF5b3V0VGVzdHMgc3RpbGwgcGFz
cy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDQS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tOgorCiAyMDEzLTAzLTI5ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxleGl0ZW1zIG5vIGxvbmdlciBkZWZhdWx0IG1p
bi13aWR0aCB0byBtaW4tY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOWY5MDA2ZjdlZjQxYWQxZjIyYzA2NjgwYjA4N2Q1YTgxOWNiOWNmMy4uZWQ4
OGE3OWY4NTk0YjhkMTE5NDRmOWFjMjA2MTM4OTJlZGE2MjUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgSFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW0KICAgICAsIG1fbGFzdFNlZWtUaW1lKDApCiAgICAgLCBtX3ByZXZpb3VzUHJv
Z3Jlc3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sYXN0VGlt
ZVVwZGF0ZUV2ZW50V2FsbFRpbWUoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmll
VGltZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0
ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9s
b2FkU3RhdGUoV2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHN0YXRp
YyBib29sIGV2ZW50VGltZUN1ZUNvbXBhcmUoY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgVGV4dFRy
YWNrQ3VlKj4mIGEsCiB9CiAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKIApAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAvLyAzIC0gTGV0IGxhc3QgdGltZSBiZSB0aGUg
Y3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBhdCB0aGUgdGltZSB0aGlzCiAgICAgLy8gYWxnb3Jp
dGhtIHdhcyBsYXN0IHJ1biBmb3IgdGhpcyBtZWRpYSBlbGVtZW50LCBpZiB0aGlzIGlzIG5vdCB0
aGUgZmlyc3QKICAgICAvLyB0aW1lIGl0IGhhcyBydW4uCi0gICAgZmxvYXQgbGFzdFRpbWUgPSBt
X2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lOworICAgIGRvdWJsZSBsYXN0VGltZSA9IG1fbGFzdFRl
eHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICAvLyA0IC0gSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sg
cG9zaXRpb24gaGFzLCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoaXMKICAgICAvLyBhbGdvcml0aG0g
d2FzIHJ1biwgb25seSBjaGFuZ2VkIHRocm91Z2ggaXRzIHVzdWFsIG1vbm90b25pYyBpbmNyZWFz
ZQpAQCAtMTEzMCw4ICsxMTMwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3Rp
dmVUZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAgICAgICAgIG1fY3VlVHJlZS5h
bGxPdmVybGFwcyhtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwobGFzdFRpbWUsIG1vdmllVGltZSkp
OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG90ZW50aWFsbHlTa2lwcGVkQ3Vl
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZmxvYXQgY3VlU3RhcnRUaW1lID0gcG90ZW50
aWFsbHlTa2lwcGVkQ3Vlc1tpXS5sb3coKTsKLSAgICAgICAgICAgIGZsb2F0IGN1ZUVuZFRpbWUg
PSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsKKyAgICAgICAgICAgIGRvdWJsZSBj
dWVTdGFydFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmxvdygpOworICAgICAgICAg
ICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsK
IAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4gbWlzc2Vk
IHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KICAgICAgICAgICAgIGlmIChjdWVTdGFydFRpbWUg
PiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92aWVUaW1l
KQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2
ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgfQogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChmbG9hdCB0aW1lRGVsdGEpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEpOwogICAgIHNldEN1cnJlbnRU
aW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5UaW1lU2Vla2FibGUoKSksIElH
Tk9SRV9FWENFUFRJT04pOwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXR1cm5Ub1JlYWx0aW1lKCkKICAgICBzZXRDdXJyZW50VGltZShtYXhUaW1lU2Vla2Fi
bGUoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRk
UGxheWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKCVmLCAlZikiLCBzdGFydCwg
ZW5kKTsKICAgICBpZiAoIW1fcGxheWVkVGltZVJhbmdlcykKQEAgLTIwNTEsNyArMjA1MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSgpCiAgICAgbV9wbGF5ZXItPnBy
ZXBhcmVUb1BsYXkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGRvdWJs
ZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKCVmKSIsIHRpbWUpOwogCkBAIC0yMDY5LDcgKzIwNjksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBtX3NlZWtpbmcsIG1fbGFz
dFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgogICAgIHJlZnJlc2hDYWNoZWRU
aW1lKCk7Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0g
Y3VycmVudFRpbWUoKTsKIAogICAgIC8vIDIgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURM
IGF0dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0
aG0gaXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ug
b2YgdGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKQEAgLTIw
ODUsNyArMjA4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VlayhmbG9hdCB0aW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAg
ICAgLy8gNiAtIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBl
YXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVh
ZC4KLSAgICBmbG9hdCBlYXJsaWVzdFRpbWUgPSBtX3BsYXllci0+c3RhcnRUaW1lKCk7CisgICAg
ZG91YmxlIGVhcmxpZXN0VGltZSA9IG1fcGxheWVyLT5zdGFydFRpbWUoKTsKICAgICB0aW1lID0g
bWF4KHRpbWUsIGVhcmxpZXN0VGltZSk7CiAKICAgICAvLyBBc2sgdGhlIG1lZGlhIGVuZ2luZSBm
b3IgdGhlIHRpbWUgdmFsdWUgaW4gdGhlIG1vdmllJ3MgdGltZSBzY2FsZSBiZWZvcmUgY29tcGFy
aW5nIHdpdGggY3VycmVudCB0aW1lLiBUaGlzCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
Ly8gbm90IGdlbmVyYXRlIGEgdGltZWNoYW5nZWQgY2FsbGJhY2suIFRoaXMgbWVhbnMgbV9zZWVr
aW5nIHdpbGwgbmV2ZXIgYmUgY2xlYXJlZCBhbmQgd2Ugd2lsbCBuZXZlciAKICAgICAvLyBmaXJl
IGEgJ3NlZWtlZCcgZXZlbnQuCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGZsb2F0IG1lZGlhVGlt
ZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CisgICAgZG91YmxlIG1l
ZGlhVGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CiAgICAgaWYg
KHRpbWUgIT0gbWVkaWFUaW1lKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZWVrKCVmKSAtIG1lZGlhIHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgJWYiLCB0aW1lLCBtZWRp
YVRpbWUpOwogI2VuZGlmCkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCkKIH0KIAogLy8gcGxheWJhY2sgc3RhdGUKLWZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVkaWFF
bGVtZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5J
TkdTCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5DYWNoZWREZWx0YUZvcldhcm5pbmcgPSAw
LjAxOwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVu
dFRpbWUoKSBjb25zdAogCiAgICAgaWYgKG1fY2FjaGVkVGltZSAhPSBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKSAmJiBtX3BhdXNlZCkgewogI2lmIExPR19DQUNIRURfVElNRV9XQVJOSU5HUwot
ICAgICAgICBmbG9hdCBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxheWVyLT5jdXJyZW50VGlt
ZSgpOworICAgICAgICBkb3VibGUgZGVsdGEgPSBtX2NhY2hlZFRpbWUgLSBtX3BsYXllci0+Y3Vy
cmVudFRpbWUoKTsKICAgICAgICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFGb3JXYXJuaW5n
KQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUg
LSBXQVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdo
ZW4gcGF1c2VkIiwgZGVsdGEpOwogI2VuZGlmCkBAIC0yMjMzLDEwICsyMjMzLDEwIEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgICAgICAvLyBOb3Qg
dG9vIHNvb24sIHVzZSB0aGUgY2FjaGVkIHRpbWUgb25seSBpZiBpdCBoYXNuJ3QgZXhwaXJlZC4K
ICAgICAgICAgaWYgKHdhbGxDbG9ja0RlbHRhIDwgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlh
VGltZSkgewotICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRDYWNoZVRpbWUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9jYWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEp
KTsKKyAgICAgICAgICAgIGRvdWJsZSBhZGp1c3RlZENhY2hlVGltZSA9IG1fY2FjaGVkVGltZSAr
IChtX3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKTsKIAogI2lmIExPR19DQUNIRURfVElN
RV9XQVJOSU5HUwotICAgICAgICAgICAgZmxvYXQgZGVsdGEgPSBhZGp1c3RlZENhY2hlVGltZSAt
IG1fcGxheWVyLT5jdXJyZW50VGltZSgpOworICAgICAgICAgICAgZG91YmxlIGRlbHRhID0gYWRq
dXN0ZWRDYWNoZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlm
IChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKICAgICAgICAgICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0
aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVsdGEp
OwogI2VuZGlmCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50Ojpj
dXJyZW50VGltZSgpIGNvbnN0CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAgICAgaWYg
KG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUgJiYgbm93ID4gbV9taW5pbXVtV2FsbENs
b2NrVGltZVRvQ2FjaGVNZWRpYVRpbWUgJiYgbV9jYWNoZWRUaW1lICE9IE1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSgpKSB7CiAgICAgICAgIGRvdWJsZSB3YWxsQ2xvY2tEZWx0YSA9IG5vdyAtIG1f
Y2FjaGVkVGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7Ci0gICAgICAgIGZsb2F0IGRlbHRhID0gbV9j
YWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpIC0gbV9wbGF5ZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IG1fY2FjaGVkVGltZSArICht
X3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgp
OwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIGNh
Y2hlZCB0aW1lIHdhcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJl
ZCIsIGRlbHRhKTsKICAgICB9CiAjZW5kaWYKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIGZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRU
aW1lOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50
VGltZShkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yMjY2LDcg
KzIyNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNlZWsodGltZSwgZWMpOwogfQogCi1mbG9hdCBI
VE1MTWVkaWFFbGVtZW50OjpzdGFydFRpbWUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMjg0LDEyICsyMjg0LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50Ojpp
bml0aWFsVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLT5pbml0aWFsVGltZSgpOwog
fQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0Citkb3VibGUgSFRN
TE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewogICAgIGlmIChtX3BsYXllciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5k
dXJhdGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFO
KCk7CisgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgpIGNvbnN0CkBAIC0yMjk3LDEyICsyMjk3
LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKCkgY29uc3QKICAgICByZXR1cm4g
bV9wYXVzZWQ7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1Jh
dGUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQog
ewogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX2Rl
ZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtMjMxMCwxMiArMjMxMCwxMiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICB9
CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Citkb3Vi
bGUgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tS
YXRlKGZsb2F0IHJhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShk
b3VibGUgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5
YmFja1JhdGUoJWYpIiwgcmF0ZSk7CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiB7Ci0gICAgZmxvYXQgZWZmZWN0aXZl
UmF0ZSA9IG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPnBsYXliYWNrUmF0
ZSgpIDogbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIGVmZmVjdGl2ZVJhdGUgPSBtX21lZGlh
Q29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5wbGF5YmFja1JhdGUoKSA6IG1fcGxheWJh
Y2tSYXRlOwogICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3Bs
YXllci0+cmF0ZSgpICE9IGVmZmVjdGl2ZVJhdGUpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRl
KGVmZmVjdGl2ZVJhdGUpOwogfQpAQCAtMjYyNywxMiArMjYyNywxMiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldENvbnRyb2xzKGJvb2wgYikKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGNv
bnRyb2xzQXR0ciwgYik7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSgpIGNv
bnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6dm9sdW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV92b2x1bWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0
IHZvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVt
ZShkb3VibGUgdm9sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoJWYpIiwgdm9sKTsKIApAQCAtMjc2MSw3ICsyNzYxLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBl
cmlvZGljRXZlbnQpCiAKICAgICAvLyBTb21lIG1lZGlhIGVuZ2luZXMgbWFrZSBtdWx0aXBsZSAi
dGltZSBjaGFuZ2VkIiBjYWxsYmFja3MgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHdlIG9ubHkgd2Fu
dCBvbmUKICAgICAvLyBldmVudCBhdCBhIGdpdmVuIHRpbWUgc28gZmlsdGVyIGhlcmUKLSAgICBm
bG9hdCBtb3ZpZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBtb3ZpZVRpbWUgPSBj
dXJyZW50VGltZSgpOwogICAgIGlmIChtb3ZpZVRpbWUgIT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50
TW92aWVUaW1lKSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnRpbWV1cGRh
dGVFdmVudCk7CiAgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lID0gbm93OwpA
QCAtMjc3NCwyMCArMjc3NCwyMCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXkoKSBj
b25zdAogICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhB
VkVfTUVUQURBVEE7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQo
KSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAog
ewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGZsb2F0IGR1cmF0
aW9uID0gbV9wbGF5ZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9wbGF5
ZXItPmR1cmF0aW9uKCk7CiAKICAgICBpZiAoIWR1cmF0aW9uIHx8IHN0ZDo6aXNpbmYoZHVyYXRp
b24pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZsb2F0IGJ1ZmZlcmVkID0gMDsKKyAgICBk
b3VibGUgYnVmZmVyZWQgPSAwOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0g
bV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVS
YW5nZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZmxvYXQgc3RhcnQgPSB0aW1lUmFuZ2Vz
LT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICAgICAgZmxvYXQgZW5kID0gdGltZVJh
bmdlcy0+ZW5kKGksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgc3RhcnQgPSB0
aW1lUmFuZ2VzLT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgZG91YmxlIGVu
ZCA9IHRpbWVSYW5nZXMtPmVuZChpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgYnVmZmVy
ZWQgKz0gZW5kIC0gc3RhcnQ7CiAgICAgfQogICAgIHJldHVybiBidWZmZXJlZCAvIGR1cmF0aW9u
OwpAQCAtMzQ1Nyw4ICszNDU3LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAvLyBtb3ZpZSB0aW1lLgogICAgIHNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKIAotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVu
dFRpbWUoKTsKKyAgICBkb3VibGUgZHVyID0gZHVyYXRpb24oKTsKICAgICAKICAgICAvLyBXaGVu
IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgbWVk
aWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gcGxheWJhY2sgaXMgZm9y
d2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6CkBAIC0z
NTAwLDcgKzM1MDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKSB7Ci0gICAgICAgIGZsb2F0IHZvbCA9IG1fcGxh
eWVyLT52b2x1bWUoKTsKKyAgICAgICAgZG91YmxlIHZvbCA9IG1fcGxheWVyLT52b2x1bWUoKTsK
ICAgICAgICAgaWYgKHZvbCAhPSBtX3ZvbHVtZSkgewogICAgICAgICAgICAgbV92b2x1bWUgPSB2
b2w7CiAgICAgICAgICAgICB1cGRhdGVWb2x1bWUoKTsKQEAgLTM1MjksOCArMzUyOSw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5
ZXIqIHBsYXllcikKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5n
ZUV2ZW50KTsKICAgICBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChwbGF5ZXIpOwog
Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlv
bigpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmIChub3cgPiBkdXIpCiAgICAgICAgIHNlZWsoZHVyLCBJR05PUkVf
RVhDRVBUSU9OKTsKIApAQCAtMzY4NSw3ICszNjg1LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiB7CiAgICAgaWYgKG1fcGxheWluZykgewot
ICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHRpbWUg
PSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+IG1fbGFzdFNlZWtUaW1lKQogICAg
ICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1RpbWUsIHRpbWUpOwogICAgIH0KQEAg
LTM3MTcsNyArMzcxNyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91
Z2hEYXRhKCkgY29uc3QKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKCkg
Y29uc3QKIHsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmICghbV9wbGF5ZXIgfHwgc3RkOjppc25hbihkdXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3MzEsNyArMzczMSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgLy8gYW5kIHRoZSBjdXJyZW50IHBsYXli
YWNrIHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCB0aGUgZGly
ZWN0aW9uCiAgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVkaWEg
ZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAogICAgIC8v
IG9yIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KLSAg
ICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGlt
ZSgpOwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCiAgICAgICAgIHJldHVybiBkdXIgPiAw
ICYmIG5vdyA+PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCkBAIC0z
NzYwLDEyICszNzYwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlcklu
dGVyYWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZsb2F0IEhUTUxNZWRp
YUVsZW1lbnQ6Om1pblRpbWVTZWVrYWJsZSgpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6bWluVGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVk
aWFFbGVtZW50OjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXll
ciA/IG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSA6IDA7CiB9CkBAIC0zNzc4LDcgKzM3Nzgs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgLy8gQXZvaWQg
cmVjdXJzaW9uIHdoZW4gdGhlIHBsYXllciByZXBvcnRzIHZvbHVtZSBjaGFuZ2VzLgogICAgIGlm
ICghcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0g
cGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOworICAgICAgICBkb3VibGUgdm9sdW1lTXVs
dGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKICAgICAgICAgYm9vbCBz
aG91bGRNdXRlID0gbV9tdXRlZDsKIAogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
QEAgLTM4NDMsNyArMzg0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0
YXRlKCkKIAogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7CiAgICAgICAg
IG1fcGxheWluZyA9IGZhbHNlOwotICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsK
KyAgICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+
IG1fbGFzdFNlZWtUaW1lKQogICAgICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1Rp
bWUsIHRpbWUpOwogCkBAIC00Njg3LDcgKzQ2ODcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKICAgICAvLyBvciBpZiBpdHMgbWVk
aWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJj
ZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAogICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBN
ZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSBy
ZXNvdXJjZSAKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxp
bmUuCi0gICAgZmxvYXQgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxl
ci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBt
X21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKICAgICBpZiAobWVkaWFDb250cm9sbGVy
UG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0
VGltZSgpICsgZHVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ2OTcsNyAr
NDY5Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xs
ZXIoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVS
SSgpCiB7CiAgICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJl
bnRTcmMpOwotICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1
cmF0aW9uKCk7CiAgICAgCiAgICAgZG91YmxlIHN0YXJ0ID0gZnJhZ21lbnRQYXJzZXIuc3RhcnRU
aW1lKCk7CiAgICAgaWYgKHN0YXJ0ICE9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmludmFsaWRU
aW1lVmFsdWUoKSAmJiBzdGFydCA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggMTFkZTZjNjFmNGVlMDJlZjQxZDY4Yzc1NzM1ZjJiMWNiODE4ZGViOS4uMDA0
N2VjMzE1NjllN2QxNTkzMzllY2MxNzM3NDdkOGNkNDAwYTU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJld2luZChmbG9hdCB0aW1lRGVsdGEp
OworICAgIHZvaWQgcmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpOwogICAgIHZvaWQgcmV0dXJuVG9S
ZWFsdGltZSgpOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0Vs
ZW1lbnQKQEAgLTE0NCwxNiArMTQ0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBj
b25zdDsKIAogLy8gcGxheWJhY2sgc3RhdGUKLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0OwotICAg
IGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0OwotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7Ci0gICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Ci0gICAg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxv
YXQpOworICAgIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSk7CisgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CiAgICAgdm9pZCB1cGRh
dGVQbGF5YmFja1JhdGUoKTsKICAgICBib29sIHdlYmtpdFByZXNlcnZlc1BpdGNoKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKQEAgLTIwNiw4ICsyMDYs
OCBAQCBwdWJsaWM6CiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgZG91YmxlIHZvbHVt
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpOwogCkBAIC0y
MTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0Owog
Ci0gICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OworICAgIGRvdWJsZSBwZXJjZW50TG9h
ZGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5Niwx
MCArNDk2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigp
OwogICAgIHZvaWQgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAKLSAgICB2b2lkIHNlZWsoZmxvYXQg
dGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgZmluaXNoU2VlaygpOwogICAgIHZvaWQgY2hlY2tJZlNlZWtO
ZWVkZWQoKTsKLSAgICB2b2lkIGFkZFBsYXllZFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQp
OworICAgIHZvaWQgYWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAg
ICAKICAgICB2b2lkIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCk7
CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsK
QEAgLTUyMyw3ICs1MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7CisgICAgdm9pZCB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCogc2hv
d2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsKIAogICAgIHZv
aWQgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CkBAIC01NTAs
MTMgKzU1MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9u
KCkgY29uc3Q7CiAgICAgYm9vbCBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdDsKIAotICAg
IGZsb2F0IG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwotICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpIGNvbnN0OworICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0
aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBz
ZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJu
YWwoZmxvYXQpOworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKQEAgLTYwMCw4ICs2MDAsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIGZsb2F0
IG1fcGxheWJhY2tSYXRlOwotICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBk
b3VibGUgbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsK
ICAgICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0Y2g7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0
d29ya1N0YXRlOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwpAQCAtNjEwLDggKzYxMCw4
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAotICAgIGZs
b2F0IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fbGFzdFNlZWtUaW1lOworICAgIGRvdWJsZSBtX3Zv
bHVtZTsKKyAgICBkb3VibGUgbV9sYXN0U2Vla1RpbWU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9w
cmV2aW91c1Byb2dyZXNzOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVu
dFdhbGxUaW1lOwogCiAgICAgLy8gVGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2Fz
IHNlbnQgaW4gbW92aWUgdGltZS4KLSAgICBmbG9hdCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWU7CisgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZTsKICAgICAK
ICAgICAvLyBMb2FkaW5nIHN0YXRlLgogICAgIGVudW0gTG9hZFN0YXRlIHsgV2FpdGluZ0ZvclNv
dXJjZSwgTG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQgfTsKQEAg
LTY0Nyw3ICs2NDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRp
YVNvdXJjZTsKICNlbmRpZgogCi0gICAgbXV0YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CisgICAg
bXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVk
VGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2Fs
bENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CiAKQEAgLTY5Niw3ICs2OTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNpYmxl
VGV4dFRyYWNrIDogMTsKICAgICBib29sIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgOiAx
OwotICAgIGZsb2F0IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CisgICAgZG91YmxlIG1fbGFz
dFRleHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0
VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKaW5kZXggOTM5NDUyZGMyM2M2ZGRmZjVhZjBiODM1OGU1YzAyYzdiNTMwZTdiYi4uNmZi
MzEzOGIyMWI1NDFhNDIwZjgyN2M3OTI1OTVhMmI1ODljYmU4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC02MywxNCArNjMsMTQgQEAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBzZWVraW5nOwogCiAvLyBwbGF5YmFjayBzdGF0ZQotYXR0cmlidXRlIGZsb2F0IGN1cnJl
bnRUaW1lCithdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCiAgICAgc2V0dGVyIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgaW5pdGlhbFRpbWU7Ci1y
ZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgc3RhcnRUaW1lOwotcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0IGR1cmF0aW9uOworcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBzdGFydFRpbWU7CityZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOwogcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gcGF1c2VkOwotYXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGU7Ci1hdHRyaWJ1
dGUgZmxvYXQgcGxheWJhY2tSYXRlOworYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tS
YXRlOworYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUg
VGltZVJhbmdlcyBwbGF5ZWQ7CiByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJs
ZTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGVuZGVkOwpAQCAtODEsNyArODEsNyBAQCB2
b2lkIHBhdXNlKCk7CiAKIC8vIGNvbnRyb2xzCiBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsK
LWF0dHJpYnV0ZSBmbG9hdCB2b2x1bWUgCithdHRyaWJ1dGUgZG91YmxlIHZvbHVtZSAKICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiBh
dHRyaWJ1dGUgW1JlZmxlY3Q9bXV0ZWRdIGJvb2xlYW4gZGVmYXVsdE11dGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDEwMzE2MWIxY2IxYjFiNTVmNWQ3ZGM3
Y2FhODMyYWEzYWNjNTVlNmIuLjMzYzYzYTY2ZGE2MTA3OWY3MDBlOWE3NGYyNWUyY2JlZDJiNjY3
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTEyOSwxMyAr
MTI5LDEzIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQo
KQogICAgIHJldHVybiBwbGF5ZWRSYW5nZXM7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6
ZHVyYXRpb24oKSBjb25zdAorZG91YmxlIE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25z
dAogewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0
aW9uIGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKICAgICAvLyB3aGVuIHRoZSBz
bGF2ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCi0gICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGRvdWJsZSBtYXhEdXJhdGlvbiA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKLSAg
ICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigp
OworICAgICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJh
dGlvbigpOwogICAgICAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKQEAgLTE0MywyNiArMTQzLDI2IEBAIGZsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24o
KSBjb25zdAogICAgIHJldHVybiBtYXhEdXJhdGlvbjsKIH0KIAotZmxvYXQgTWVkaWFDb250cm9s
bGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50
VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKG1fcG9zaXRpb24gPT0gTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCkpIHsKICAgICAgICAgLy8gU29tZSBjbG9ja3MgbWF5IHJldHVybiB0aW1lcyBvdXRz
aWRlIHRoZSByYW5nZSBvZiBbMC4uZHVyYXRpb25dLgotICAgICAgICBtX3Bvc2l0aW9uID0gbWF4
KDAuMGYsIG1pbihkdXJhdGlvbigpLCBtX2Nsb2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAg
IG1fcG9zaXRpb24gPSBtYXgoMC4wLCBtaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+Y3VycmVudFRp
bWUoKSkpOwogICAgICAgICBtX2NsZWFyUG9zaXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lLCBFeGNlcHRpb25Db2Rl
JiBjb2RlKQogewogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVk
aWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKICAg
ICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAvLyBJZiB0aGUgbmV3IHBsYXli
YWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgotICAg
IHRpbWUgPSBtYXgoMC4wZiwgdGltZSk7CisgICAgdGltZSA9IG1heCgwLjAsIHRpbWUpOwogICAg
IAogICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRo
ZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKICAgICAvLyB0byB0aGUg
bWVkaWEgY29udHJvbGxlciBkdXJhdGlvbi4KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbGxlcjo6cGF1c2UoKQogICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOwogfQogCi12
b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQor
dm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUp
CiB7CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1
cm47CkBAIC0yMzAsMTIgKzIzMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVs
dFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnJhdGVjaGFuZ2VFdmVudCk7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tS
YXRlKCkgY29uc3QKK2RvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250
cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fY2xvY2stPnBsYXlS
YXRlKCkgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShkb3VibGUgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUm
IGNvZGUpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCA2NjE1YTNiYzQ4MGI5N2JjMmFi
ZGE4YWI1MWM1MjMzMTNmZTVmZTA1Li41ZTQ1NmJkMDNjZjM5Y2Y0YjRlZDdhZjNhNDQ5NWNjZGZk
ZjJiYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTYwLDIzICs2
MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWth
YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgp
OwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZv
aWQgdW5wYXVzZSgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXliYWNr
UmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1l
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CiAgICAgVmVj
dG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhdXNl
ZDsKLSAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7Ci0gICAgZmxvYXQgbV92b2x1bWU7
Ci0gICAgbXV0YWJsZSBmbG9hdCBtX3Bvc2l0aW9uOworICAgIGRvdWJsZSBtX2RlZmF1bHRQbGF5
YmFja1JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOworICAgIG11dGFibGUgZG91YmxlIG1fcG9z
aXRpb247CiAgICAgYm9vbCBtX211dGVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKaW5kZXggN2JjZjA2YzVmYjY2NThjZGU0YTli
ZjAyMjU2MTI4MDYwYjY2YmEwZC4uNDg1MDUwY2VhN2RkODc4NTRkZTJkZWEyN2VhMDYxOTRjMTNh
ZTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC00NSwyMiArNDUsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRp
b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0
UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxh
eWJhY2tSYXRlKGRvdWJsZSkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tS
YXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpID0gMDsKICAgICAKLSAgICB2aXJ0
dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwCmluZGV4IGMyMjQ3NGEwNjI5YzlhN2RkYWIzYzg5MjRkZGY5MjQ5YWVlZmE4ZWMuLmIw
NDVhY2E3ZTM5ODhlMjAxNTVmOGU4ZGI1ZWY5M2Q4ODYzNTg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0
YXJ0LCBmbG9hdCBlbmQpCitUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CkBAIC01MywxOSArNTMsMTkgQEAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHZvaWQgVGlt
ZVJhbmdlczo6aW52ZXJ0KCkKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZG91YmxlIHBvc0luZiA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBkb3VibGUgbmVnSW5mID0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIAogICAgIGlmICghbV9yYW5n
ZXMuc2l6ZSgpKQogICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgcG9zSW5mKTsKICAgICBl
bHNlIHsKLSAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IG5lZ0luZikKKyAgICAgICAgaWYgKGRvdWJsZSBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCku
bV9zdGFydCAhPSBuZWdJbmYpCiAgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3Rh
cnQpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5n
ZXMuc2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tp
bmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CiAKLSAgICAgICAgaWYg
KGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgIGlm
IChkb3VibGUgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKICAgICAgICAg
ICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOwogICAgIH0KIApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKICAg
ICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKIH0KIAotZmxvYXQgVGltZVJhbmdl
czo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJs
ZSBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmFu
Z2VzW2luZGV4XS5tX3N0YXJ0OwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjplbmQo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGlu
ZGV4ID49IGxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0xMTMs
NyArMTEzLDcgQEAgZmxvYXQgVGltZVJhbmdlczo6ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fZW5kOwogfQog
Ci12b2lkIFRpbWVSYW5nZXM6OmFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKSAKK3ZvaWQgVGlt
ZVJhbmdlczo6YWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgCiB7CiAgICAgQVNTRVJUKHN0
YXJ0IDw9IGVuZCk7CiAgICAgdW5zaWduZWQgaW50IG92ZXJsYXBwaW5nQXJjSW5kZXg7CkBAIC0x
NTYsNyArMTU2LDcgQEAgdm9pZCBUaW1lUmFuZ2VzOjphZGQoZmxvYXQgc3RhcnQsIGZsb2F0IGVu
ZCkKICAgICBtX3Jhbmdlcy5pbnNlcnQob3ZlcmxhcHBpbmdBcmNJbmRleCwgYWRkZWRSYW5nZSk7
CiB9CiAKLWJvb2wgVGltZVJhbmdlczo6Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdAorYm9vbCBU
aW1lUmFuZ2VzOjpjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdAogewogICAgIGZvciAodW5zaWdu
ZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7CiAgICAgICAgIGlmICh0aW1lID49IHN0YXJ0
KG4sIElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENFUFRJT04p
KQpAQCAtMTY1LDEzICsxNjUsMTMgQEAgYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGZsb2F0IHRp
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjpuZWFy
ZXN0KGZsb2F0IHRpbWUpIGNvbnN0Citkb3VibGUgVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUg
dGltZSkgY29uc3QKIHsKLSAgICBmbG9hdCBjbG9zZXN0ID0gMDsKKyAgICBkb3VibGUgY2xvc2Vz
dCA9IDA7CiAgICAgdW5zaWduZWQgY291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVk
IG5keCA9IDA7IG5keCA8IGNvdW50OyBuZHgrKykgewotICAgICAgICBmbG9hdCBzdGFydFRpbWUg
PSBzdGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOwotICAgICAgICBmbG9hdCBlbmRUaW1lID0g
ZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBz
dGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgZW5kVGltZSA9IGVu
ZChuZHgsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBpZiAodGltZSA+PSBzdGFydFRpbWUg
JiYgdGltZSA8PSBlbmRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHRpbWU7CiAgICAgICAgIGlm
IChmYWJzKHN0YXJ0VGltZSAtIHRpbWUpIDwgY2xvc2VzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmgKaW5kZXggNDI1NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3Zi4uZWZkY2Fi
ZmMyM2UzMzk1MzdkNGYzMDMyMmQzZjI2OTc3YzAzYmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUaW1lUmFuZ2VzKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gY3JlYXRlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAg
ICAgfQpAQCAtNTIsMzIgKzUyLDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaW9uV2l0aChjb25z
dCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3Jhbmdlcy5zaXplKCk7IH0KLSAgICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwotICAgIGZsb2F0IGVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsK
KyAgICB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUp
IGNvbnN0OwogICAgIAotICAgIGZsb2F0IG5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3Q7CisgICAg
ZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRpbWVS
YW5nZXMoKSB7IH0KLSAgICBUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpOworICAg
IFRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICBUaW1lUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKTsKIAogICAgIC8vIFdlIGNvbnNpZGVyIGFsbCB0aGUgUmFuZ2VzIHRv
IGJlIHNlbWktYm91bmRlZCBhcyBmb2xsb3c6IFtzdGFydCwgZW5kWwogICAgIHN0cnVjdCBSYW5n
ZSB7CiAgICAgICAgIFJhbmdlKCkgeyB9Ci0gICAgICAgIFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9h
dCBlbmQpCisgICAgICAgIFJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICAgICAg
ewogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0OwogICAgICAgICAgICAgbV9lbmQgPSBlbmQ7
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgbV9zdGFydDsKLSAgICAgICAgZmxvYXQgbV9lbmQ7
CisgICAgICAgIGRvdWJsZSBtX3N0YXJ0OworICAgICAgICBkb3VibGUgbV9lbmQ7CiAKLSAgICAg
ICAgaW5saW5lIGJvb2wgaXNQb2ludEluUmFuZ2UoZmxvYXQgcG9pbnQpIGNvbnN0CisgICAgICAg
IGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYgcG9pbnQgPCBtX2VuZDsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwKaW5kZXggNjFkYTA5M2E5ZTE4
ZThiNTRiNjQ3YTkzOWYyY2IzMmUwZTVkYzNjMC4uOTljYTg4MjcxNzEzYzExYWEwMTVjYjRjNjFk
Yzg1MDAzNmMyODVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCkBAIC0yOCw5ICsy
OCw5IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgVGltZVJh
bmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAg
IGZsb2F0IHN0YXJ0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCisgICAgZG91YmxlIHN0YXJ0KGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAg
ICBmbG9hdCBlbmQoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkKKyAgICBkb3VibGUgZW5kKGluIHVu
c2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZXMuY3BwCmluZGV4IDc5ZWZkY2NhNTM5YzNhZTY1YTA4YTkyYmRkODY2YzI1NjY5ZWU3
OTMuLjczMmRiYjAyMDYxMWQ1MGE0YjNjOWJlMmRlNDQ2NGMxNmU2NGE4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVz
LmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtNDgsMTAgKzQ3LDEwIEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBjbGFzcyBFdmVudDsKIAogLy8gRklYTUU6IFRoZXNlIGNvbnN0
YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBp
biB0aGUgUXVpY2tUaW1lIHBsdWctaW4uCi1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMWY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRp
YyBjb25zdCBmbG9hdCBjU2NhblJlcGVhdERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9h
dCBjU2Nhbk1heGltdW1SYXRlID0gODsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMTsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBUaW1lID0gMC4yOworc3RhdGlj
IGNvbnN0IGRvdWJsZSBjU2NhblJlcGVhdERlbGF5ID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJs
ZSBjU2Nhbk1heGltdW1SYXRlID0gODsKIAogSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRp
YUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKQEAgLTE1NCw3ICsxNTMsNyBAQCBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbgogewogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6
c2V0Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6c2V0Q3VycmVudFZhbHVlKGRvdWJsZSB0aW1lKQogewogICAgIG1fY3VycmVudFZh
bHVlID0gdGltZTsKIH0KQEAgLTI0OSw5ICsyNDgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50OjpzdG9wVGltZXIoKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CiB9
CiAKLWZsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0
Citkb3VibGUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QK
IHsKLSAgICBmbG9hdCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVk
aWFDb250cm9sbGVyKCktPnBsYXliYWNrUmF0ZSgpICogMikpOworICAgIGRvdWJsZSByYXRlID0g
c3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFicyhtZWRpYUNvbnRyb2xsZXIoKS0+cGxheWJh
Y2tSYXRlKCkgKiAyKSk7CiAgICAgaWYgKCFpc0ZvcndhcmRCdXR0b24oKSkKICAgICAgICAgcmF0
ZSAqPSAtMTsKICAgICByZXR1cm4gcmF0ZTsKQEAgLTI2MCw3ICsyNTksNyBAQCBmbG9hdCBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogdm9pZCBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQ+KikKIHsKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7Ci0g
ICAgICAgIGZsb2F0IHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAt
Y1NraXBUaW1lOworICAgICAgICBkb3VibGUgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/
IGNTa2lwVGltZSA6IC1jU2tpcFRpbWU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRD
dXJyZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBJ
R05PUkVfRVhDRVBUSU9OKTsKICAgICB9IGVsc2UKICAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKQEAgLTI4OCw3ICsyODcsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCku
dG9Eb3VibGUoKSk7CisgICAgZG91YmxlIHZvbHVtZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAg
ICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKICAgICAgICAgbWVk
aWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKQEAgLTMxMSw5ICszMTAsOSBA
QCBib29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogewotICAgIGlm
ICh2YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1bWUpCisgICAgaWYgKHZhbHVlKCkudG9Eb3VibGUo
KSAhPSB2b2x1bWUpCiAgICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5oCmluZGV4IGMyZjY3OTE4YjU0MzVhY2FiMjk4OWY4MmQyOTIwMjAwYmUwMzRh
NDkuLjk1OWMyZWZhMDMxNzAzZGIyZmI1MjAxNGUxNTVlZTgyZmUyOTBlNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
CkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1l
RGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdm9pZCBzZXRDdXJyZW50
VmFsdWUoZG91YmxlKTsKKyAgICBkb3VibGUgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50VmFsdWU7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
IAogcHJpdmF0ZToKLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKKyAgICBkb3VibGUgbV9jdXJy
ZW50VmFsdWU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRUaW1lcigpOwogICAgIHZvaWQg
c3RvcFRpbWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKKyAgICBkb3VibGUgbmV4
dFJhdGUoKSBjb25zdDsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50PiopOwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywg
UGxheSwgUGF1c2UgfTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBP
VkVSUklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCBzZXRWb2x1bWUo
ZG91YmxlKTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDIxMTBkMDQ1NGIyZjg0ZDVkYTE0NTk3NWI3ZGVhOTUx
MjU5ZGFjZGUuLjllNjgwZGRlODM2MGU4YTkxNDQ4ODdjM2U3NzNlZTE1MmE1ODc4ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYz
Myw3ICs2MzIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMGYsIG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjAsIG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtOTY1LDcgKzk2NCw3IEBAIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJs
ZSgpKTsKKyAgICBkb3VibGUgdGltZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
Q3VycmVudFRpbWUodGltZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTk4MiwxMiArOTgxLDEy
IEBAIGJvb2wgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3ZvaWQgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRpbWUpCiB7
CiAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0KIAotdm9pZCBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQor
dm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoc3RkOjpp
c2Zpbml0ZShkdXJhdGlvbikgPyBkdXJhdGlvbiA6IDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDE5ZjgzY2U5YWQ4
ZDQ4OTBlOWQ3NGYxMGU3MTI3YzU1ZTc5NWI0OTMuLmFkMTVmNGEwMWU3OTRlMzgzYjlkNzEzYmU3
OTE0N2MxODIwOTQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuaApAQCAtMzM1LDggKzMzNSw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOwogCi0g
ICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7
CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91
YmxlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDM2ZTE3ODBiMzI3ZTllNTNhZjEyMGI5ZmM3YTFl
OTM1ZTcxN2ExNzguLmIwYjI4ODQyOGU4OTQ3MjExOTM1MWNkNWE2MWQyNjBkZDgyZjE0NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6cmVzZXQoKQogCiAgICAgdXBkYXRlQ3VycmVu
dFRpbWVEaXNwbGF5KCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVt
ZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgewog
ICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1fdGlt
ZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKQEAg
LTIxNCw3ICsyMTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCiAK
IHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsKLSAgICBm
bG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAKICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDkxYThhNzdjZDEx
OTc3MTg2ZWFhYTE2MWMyMDA2YzE5NTI5ZDYwMTUuLmM5M2JhNjg5MGEyYzFiZTNkMzQwODMzNjk0
NGIzMzYwYzJjMDM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTWVkaWFDb250cm9s
c0FwcGxlOjpyZXNldCgpCiAgICAgZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhp
ZGUoKTsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CiAgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1f
dGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRh
aW5lci0+c2hvdygpOwpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxl
OjpyZXNldCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURp
c3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAKaW5kZXggYWZmMGRiZjcyYmJlYjU4N2U1Mzc0MmY2Mzk3YWY1NTdjZTEwNzkxMi4uYjFjZjMy
OTFiZGQxN2NkNmEwMzllYTIxZGFlZWVkOWViNDE3ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgxLDcgKzQ4MCw3IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgdGltZWxpbmUtPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2Ui
KTsKLSAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwor
ICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImRvdWJsZSIpOwogICAg
IHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTUwNSw3ICs1MDQsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGRvdWJsZSB0aW1lID0gdmFsdWUoKS50b0RvdWJsZSgp
OwogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRp
bWUgIT0gbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBJR05PUkVfRVhDRVBUSU9OKTsKIApAQCAt
NTIyLDEyICs1MjEsMTIgQEAgYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRp
b24oZmxvYXQgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGRvdWJsZSBjdXJyZW50VGltZSkKIHsKICAgICBzZXRWYWx1
ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pCiB7CiAgICAgc2V0QXR0cmlidXRlKG1heEF0dHIsIFN0cmluZzo6bnVtYmVy
KHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CiB9CkBAIC05MTEsOSAr
OTEwLDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAg
ICAgfQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIGZsb2F0
IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIG1fdGltZWxp
bmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUt
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hv
dygpOwpAQCAtOTU1LDcgKzk1NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmJ1
ZmZlcmluZ1Byb2dyZXNzZWQoKQogICAgIC8vIFdlIG9ubHkgbmVlZCB0byB1cGRhdGUgYnVmZmVy
aW5nIHByb2dyZXNzIHdoZW4gcGF1c2VkLCBkdXJpbmcgbm9ybWFsCiAgICAgLy8gcGxheWJhY2sg
cGxheWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCiAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5wYXVzZWQoKSkgewotICAgICAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOwogICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAg
ICB9CkBAIC05NjMsNyArOTYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVm
ZmVyaW5nUHJvZ3Jlc3NlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXli
YWNrU3RhcnRlZCgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CkBAIC05NzYsNyArOTc1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICBt
X2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICB1cGRhdGVDdXJyZW50
VGltZURpc3BsYXkoKTsKQEAgLTk4Nyw3ICs5ODYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKTsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAg
ICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3Rp
bWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwpAQCAtMTAwMCw4ICs5OTksOCBAQCB2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5v
dyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVk
aWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaAppbmRleCBlNDFmYTY5MWRiZmFhMDUyNmYx
ZDBiNjMxNzk2NzRmMTgxN2RhNWYzLi4wZmY3NmNiYzkwZmI3MDlkN2E0OTQwZjRkNDg3NThhNjMw
MWMzYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihm
bG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXRQb3NpdGlv
bihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFD
b250cm9scyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jcHAKaW5kZXggODU4NTdlODczZDIyODgwOTA4ZjljYzAyYzkwYjVjZDQ0
N2U2OWQ3OS4uYjhiYTliZTgyOGY1NzMwZDc2ODZmMzIzOTQ5YWIzMjkwMzA2ZDk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0u
Y3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJlc2V0
KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
bV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNl
dElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlv
biksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJy
ZW50VmFsdWUoZHVyYXRpb24pOwogCkBAIC0xNzMsOCArMTczLDggQEAgdm9pZCBNZWRpYUNvbnRy
b2xzQ2hyb21pdW06OnBsYXliYWNrU3RhcnRlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0Nocm9t
aXVtOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRp
YUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9s
bGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNHdGsuY3BwCmluZGV4IDdhOGI5MjIyNTMwNjhmZWVkMWZhZmIyODBmNDg3MmUyMmQyNGMy
NzcuLjVlZWMwODdlOTBiMzEyNDU5ZmNmZDk2ODk5YzA5YWIzZTg4MThmZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjpyZXNldCgpCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsK
IApAQCAtMTcyLDggKzE3Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cGxheWJhY2tTdGFy
dGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXko
KQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwot
ICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAg
ZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggM2QzZWE4ZjJlMzc2YjUxMjY3OGVh
ZjIyYzQwOGUzZTU5ZmYyMTM5NC4uNjk2NWI5MmY0NDg2MTRhNTJhMmY1ZWQ4ODZkMGU0YWIzNWYz
MTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAt
NzUxLDcgKzc1MSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVz
KENvbnRhaW5lck5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpCiAgICAgfQogfQogCi12b2lk
IFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQordm9pZCBU
ZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAg
Ly8gVGhlIGRpc3BsYXkgdHJlZSBtYXkgY29udGFpbiBXZWJWVFQgdGltZXN0YW1wIG9iamVjdHMg
cmVwcmVzZW50aW5nCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMp
LCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmgKaW5kZXggZWM2OTMwY2NhZWY1Mjk3ZDhkYjQzMTUzNDBjMzdjZmRkOGE1
YzY4ZC4uODc2ZDk0YTU0YWUzOGE4ODNjOWExOTcyOTUzODVlMDczMjM4M2VjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpOwogICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2N1ZUJhY2tncm91bmRCb3g7IH0KIAotICAgIHZvaWQg
dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoZG91
YmxlKTsKICAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCBtYXJrRnV0dXJl
QW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9jay5oCmluZGV4IDg2YWY5NTY1NzM5OGQ0ZTYyOTAyOWIxNGI3ZmYwZTA5ZmQyYjg2
Y2YuLjBiMzMyMmZlOTMyMWYyZWM2OWFlNmExYjA3OTk5ZjQyYWM1OTc4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suaApAQCAtMzYsMTEgKzM2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDbG9jaz4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgZmxv
YXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KSA9IDA7Ci0gICAgdmly
dHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxh
eVJhdGUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVy
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCBl
ZjA5YzRmMzgyMWY2Y2UzNmJmZTJjOGM1N2U1MDliNzY2MTZlN2Q2Li45OWFhMzQwM2M2MjY4Yzky
YWVhZmIwYmYwYTg3ZGNmYzM5MDQzYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDbG9ja0dlbmVyaWMuaCIKIAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTM5LDIxICszOCwyMCBAQCBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCiAgICAgbV9zdGFy
dFRpbWUgPSBtX2xhc3RUaW1lID0gbm93KCk7CiB9CiAKLXZvaWQgQ2xvY2tHZW5lcmljOjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lKQordm9pZCBDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1l
KGRvdWJsZSB0aW1lKQogewogICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwog
ICAgIG1fb2Zmc2V0ID0gdGltZTsKIH0KIAotZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGlt
ZSgpIGNvbnN0Citkb3VibGUgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcnVubmluZykKICAgICAgICAgbV9sYXN0VGltZSA9IG5vdygpOwotICAgIGZsb2F0
IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KCgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1l
KSAqIG1fcmF0ZSkgKyBtX29mZnNldCk7Ci0gICAgcmV0dXJuIHRpbWU7CisgICAgcmV0dXJuICgo
bV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsKIH0KIAotdm9p
ZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUpCit2b2lkIENsb2NrR2VuZXJp
Yzo6c2V0UGxheVJhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgbV9vZmZzZXQgPSBub3coKTsKICAg
ICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKQEAgLTgzLDQgKzgxLDMgQEAgZG91
YmxlIENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpjdXJyZW50
VGltZSgpOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IGQ1
M2ExYmMyZGM0ZDNjNTVmOGUwZDYzOTljZjY1OGI5YjI2YWQ2MDIuLjNkYzBlN2RiNTNmZGEzYjk5
NWZjZmZlMTgwZTFhZGJlNDY3YzQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2Vu
ZXJpYy5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogICAgIENsb2NrR2VuZXJpYygpOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0gICAg
dmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRD
dXJyZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOwotICAgIHZpcnR1YWwg
ZmxvYXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhdGU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGxheVJhdGUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbm93KCkgY29uc3Q7CiAKICAgICBib29sIG1fcnVubmluZzsKLSAgICBmbG9hdCBtX3JhdGU7
CisgICAgZG91YmxlIG1fcmF0ZTsKICAgICBkb3VibGUgbV9vZmZzZXQ7CiAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fbGFzdFRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODljNWJhNWEz
M2I5YTlkYWI3ZWYyODY4OTRmOTM5NzMzNTQzZTg0MS4uMDQ3MTA1ZDUzYjdmMDE1ZGMzMzE4ZTRl
OGQxNmNmZjllMDhlODJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9u
RG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50
VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkg
eyB9CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNlZWtEb3VibGUoZG91YmxlKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVEb3VibGUo
ZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lRG91YmxlKGRvdWJsZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChi
b29sKSB7IH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpFbXB0eTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQogCi0gICAg
dmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCBNZWRp
YVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmNhbmNlbEtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBrZXlTeQogfQogI2VuZGlmCiAKLWZsb2F0IE1lZGlhUGxheWVyOjpkdXJh
dGlvbigpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmR1
cmF0aW9uRG91YmxlKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25z
dAorZG91YmxlIE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPnN0YXJ0VGltZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZURv
dWJsZSgpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6OmluaXRpYWxUaW1lKCkgY29uc3QKQEAg
LTUyOSwxNCArNTI5LDE0IEBAIGRvdWJsZSBNZWRpYVBsYXllcjo6aW5pdGlhbFRpbWUoKSBjb25z
dAogICAgIHJldHVybiBtX3ByaXZhdGUtPmluaXRpYWxUaW1lKCk7CiB9CiAKLWZsb2F0IE1lZGlh
UGxheWVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmN1cnJlbnRU
aW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jdXJyZW50VGltZSgpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmN1cnJlbnRUaW1lRG91YmxlKCk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXI6OnNlZWsoZmxvYXQgdGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoZG91YmxlIHRp
bWUpCiB7Ci0gICAgbV9wcml2YXRlLT5zZWVrKHRpbWUpOworICAgIG1fcHJpdmF0ZS0+c2Vla0Rv
dWJsZSh0aW1lKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6cGF1c2VkKCkgY29uc3QKQEAgLTYw
OSwxNyArNjA5LDE3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZWFkeVN0YXRlKCk7CiB9CiAKLWZsb2F0
IE1lZGlhUGxheWVyOjp2b2x1bWUoKSBjb25zdAorZG91YmxlIE1lZGlhUGxheWVyOjp2b2x1bWUo
KSBjb25zdAogewogICAgIHJldHVybiBtX3ZvbHVtZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6
c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZvbHVtZShkb3Vi
bGUgdm9sdW1lKQogewogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCiAgICAgaWYgKG1fcHJpdmF0
ZS0+c3VwcG9ydHNNdXRpbmcoKSB8fCAhbV9tdXRlZCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRW
b2x1bWUodm9sdW1lKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRWb2x1bWVEb3VibGUodm9sdW1l
KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6bXV0ZWQoKSBjb25zdApAQCAtNjQ3LDE1ICs2NDcs
MTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpyYXRl
KCkgY29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6cmF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcmF0ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShmbG9hdCByYXRlKQordm9p
ZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBtX3JhdGUgPSByYXRl
OwotICAgIG1fcHJpdmF0ZS0+c2V0UmF0ZShyYXRlKTsgICAKKyAgICBtX3ByaXZhdGUtPnNldFJh
dGVEb3VibGUocmF0ZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnByZXNlcnZlc1BpdGNoKCkg
Y29uc3QKQEAgLTY3OSw5ICs2NzksOSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyOjpzZWVrYWJsZSgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCitkb3VibGUgTWVkaWFQbGF5ZXI6
Om1heFRpbWVTZWVrYWJsZSgpCiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWth
YmxlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlRG91YmxlKCk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcygpCkBAIC04NTQsOSArODU0
LDkgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXI6Om1vdmllTG9hZFR5
cGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPm1vdmllTG9hZFR5cGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCB0aW1lVmFsdWUp
IGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShkb3VibGUg
dGltZVZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZSh0aW1lVmFsdWUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZURvdWJsZSh0aW1lVmFsdWUpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6Om1heGlt
dW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdApAQCAtOTUyLDcgKzk1Miw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgbV9tZWRpYVBsYXll
ckNsaWVudC0+bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllcjo6dm9sdW1lQ2hhbmdlZChmbG9hdCBuZXdWb2x1bWUpCit2b2lkIE1lZGlhUGxh
eWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7CiAgICAgbV92b2x1bWUgPSBu
ZXdWb2x1bWU7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4NmVhNDAyNzhjMjQ1NmRm
ZDM5MWQ1NDRkZmRjMTI4NTQ1ZTczZWY3Li41ZDY1ZTk4OTVhMjhmMGE5NGUxMTIzMDM5MTdhMjZl
NThmZTYwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTI5OCwyOSArMjk4LDI5IEBAIHB1YmxpYzoKICAgICBib29sIHBhdXNlZCgp
IGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGZsb2F0IGlu
dmFsaWRUaW1lKCkgeyByZXR1cm4gLTEuMGY7fQotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7
Ci0gICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2b2lkIHNlZWsoZmxvYXQgdGlt
ZSk7CisgICAgc3RhdGljIGRvdWJsZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIC0xLjA7fQorICAg
IGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
OworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSk7CiAKLSAgICBmbG9hdCBzdGFydFRpbWUoKSBj
b25zdDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CiAKICAgICBkb3VibGUgaW5pdGlh
bFRpbWUoKSBjb25zdDsKIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJh
dGUoZmxvYXQpOworICAgIGRvdWJsZSByYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSYXRlKGRv
dWJsZSk7CiAKICAgICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7ICAgIAogICAgIHZvaWQg
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwotICAgIGZs
b2F0IG1heFRpbWVTZWVrYWJsZSgpOworICAgIGRvdWJsZSBtYXhUaW1lU2Vla2FibGUoKTsKIAog
ICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25z
dDsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSk7CiAKICAgICBib29sIG11dGVkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNdXRlZChib29sKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7Ci0gICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNo
YW5nZWQoZG91YmxlKTsKICAgICB2b2lkIG11dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgdGlt
ZUNoYW5nZWQoKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CkBAIC00MTQsNyArNDE0LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Q7CiAKLSAg
ICBmbG9hdCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OworICAgIGRvdWJsZSBt
ZWRpYVRpbWVGb3JUaW1lVmFsdWUoZG91YmxlKSBjb25zdDsKIAogICAgIGRvdWJsZSBtYXhpbXVt
RHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Q7CiAKQEAgLTQ4NSw4ICs0ODUsOCBAQCBw
cml2YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIFByZWxvYWQgbV9wcmVsb2FkOwogICAg
IGJvb2wgbV92aXNpYmxlOwotICAgIGZsb2F0IG1fcmF0ZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsK
KyAgICBkb3VibGUgbV9yYXRlOworICAgIGRvdWJsZSBtX3ZvbHVtZTsKICAgICBib29sIG1fbXV0
ZWQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlc1BpdGNoOwogICAgIGJvb2wgbV9wcml2YXRlQnJvd3Np
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCmluZGV4IGI3OTcwOWQ1Mzc1ZDU5MzE1YzY2OWU3MmQyMzQ1ZDNmNDIwNDhm
YmIuLmI1YTk5MTI3NmQ3M2QwODdiM2ZiNzA2NWUzY2RmMDNmZDkxZWM3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CkBAIC03MCwyMiArNzAsMzEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIGR1cmF0aW9uRG91YmxlKCkgY29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsg
fQorCisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGN1
cnJlbnRUaW1lKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0IHRpbWUpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1lKSB7IHNlZWsodGltZSk7IH0K
IAotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNlZWsoZmxvYXQgdGltZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBkb3VibGUgc3RhcnRUaW1lRG91YmxlKCkgY29uc3QgeyByZXR1
cm4gc3RhcnRUaW1lKCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxUaW1lKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoZmxvYXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFJhdGVEb3VibGUoZG91YmxlIHJhdGUpIHsgc2V0UmF0ZShyYXRlKTsgfQorCiAgICAgdmlydHVh
bCB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJsZSB2b2x1bWUpIHsgcmV0dXJuIHNldFZvbHVtZSh2b2x1
bWUpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSB7IH0KQEAgLTk3LDcg
KzEwNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsg
fQotICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRp
bWVTZWVrYWJsZSgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0ID0gMDsKQEAgLTE0OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGltZSB2YWx1
ZSBpbiB0aGUgbW92aWUncyB0aW1lIHNjYWxlLiBJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBvdmVy
cmlkZSB0aGlzIGlmIHRoZSBtZWRpYQogICAgIC8vIGVuZ2luZSB1c2VzIHJhdGlvbmFsIG51bWJl
cnMgdG8gcmVwcmVzZW50IG1lZGlhIHRpbWUuCiAgICAgdmlydHVhbCBmbG9hdCBtZWRpYVRpbWVG
b3JUaW1lVmFsdWUoZmxvYXQgdGltZVZhbHVlKSBjb25zdCB7IHJldHVybiB0aW1lVmFsdWU7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWVEb3VibGUoZG91YmxlIHRp
bWVWYWx1ZSkgY29uc3QgeyByZXR1cm4gdGltZVZhbHVlOyB9CiAKICAgICAvLyBPdmVyaWRlIHRo
aXMgaWYgaXQgaXMgc2FmZSBmb3IgSFRNTE1lZGlhRWxlbWVudCB0byBjYWNoZSBtb3ZpZSB0aW1l
IGFuZCByZXBvcnQKICAgICAvLyAnY3VycmVudFRpbWUnIGFzIFtjYWNoZWQgdGltZSArIGVsYXBz
ZWQgd2FsbCB0aW1lXS4gUmV0dXJucyB0aGUgbWF4aW11bSB3YWxsIHRpbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAKaW5kZXggZmU0OTJmMjUw
MmY0YjcwOGFmODUxYzNlZDc1YTlkMzNmNDJmNWQ1MS4uNGQyZThkZjE4NDY1NzAzOTg1NTFkNjVj
ODVlOGIxMjc0MDFhYjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtQ2xvY2tDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtQ2xvY2tDQS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
Q2xvY2tDQS5oIgogCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0NvcmVBdWRpb0Nsb2NrLmg+CiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFy
ZHdhcmUuaD4KIApAQCAtNjEsNyArNjAsNyBAQCBQbGF0Zm9ybUNsb2NrQ0E6On5QbGF0Zm9ybUNs
b2NrQ0EoKQogICAgIENBQ2xvY2tEaXNwb3NlKG1fY2xvY2spOwogfQogCi12b2lkIFBsYXRmb3Jt
Q2xvY2tDQTo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSkKK3ZvaWQgUGxhdGZvcm1DbG9ja0NB
OjpzZXRDdXJyZW50VGltZShkb3VibGUgdGltZSkKIHsKICAgICBpZiAobV9ydW5uaW5nKQogICAg
ICAgICBDQUNsb2NrU3RvcChtX2Nsb2NrKTsKQEAgLTczLDcgKzcyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNsb2NrQ0E6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCiAgICAgICAgIENBQ2xvY2tTdGFy
dChtX2Nsb2NrKTsKIH0KIAotZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpjdXJyZW50VGltZSgpIGNv
bnN0Citkb3VibGUgUGxhdGZvcm1DbG9ja0NBOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAg
Q0FDbG9ja1RpbWUgY2FUaW1lOwogCkBAIC04MSwyNCArODAsMjQgQEAgZmxvYXQgUGxhdGZvcm1D
bG9ja0NBOjpjdXJyZW50VGltZSgpIGNvbnN0CiAgICAgLy8gd2hhdCBpcyB0aGUgc3RhcnQgdGlt
ZSwgaS5lLiB3aGF0IHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB3aGVuIHN0YXJ0ZWQuCiAgICAg
aWYgKG1fcnVubmluZykgewogICAgICAgICBpZiAoQ0FDbG9ja0dldEN1cnJlbnRUaW1lKG1fY2xv
Y2ssIGtDQUNsb2NrVGltZUZvcm1hdF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAgICAg
ICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNhVGltZS50aW1lLnNlY29uZHMp
OworICAgICAgICAgICAgcmV0dXJuIGNhVGltZS50aW1lLnNlY29uZHM7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKENBQ2xvY2tHZXRTdGFydFRpbWUobV9jbG9jaywga0NBQ2xvY2tUaW1lRm9y
bWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQotICAgICAgICAgICAgcmV0dXJuIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgICAgICAgICByZXR1
cm4gY2FUaW1lLnRpbWUuc2Vjb25kczsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DbG9ja0NBOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQordm9pZCBQbGF0Zm9ybUNs
b2NrQ0E6OnNldFBsYXlSYXRlKGRvdWJsZSByYXRlKQogewogICAgIENBQ2xvY2tTZXRQbGF5UmF0
ZShtX2Nsb2NrLCByYXRlKTsKIH0KIAotZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNs
b2NrQ0E6OnBsYXlSYXRlKCkgY29uc3QKK2RvdWJsZSBQbGF0Zm9ybUNsb2NrQ0E6OlBsYXRmb3Jt
Q2xvY2tDQTo6cGxheVJhdGUoKSBjb25zdAogewogICAgIGRvdWJsZSByYXRlID0gMDsKICAgICBp
ZiAoQ0FDbG9ja0dldFBsYXlSYXRlKG1fY2xvY2ssICZyYXRlKSA9PSBub0VycikKLSAgICAgICAg
cmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocmF0ZSk7CisgICAgICAgIHJldHVybiByYXRl
OwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1DbG9ja0NBLmgKaW5kZXggYjEwMWQ3YTk1ZDIzNjUzMWE4NmEzN2ExNmQ5NjI1MDJhMjRl
NjNhZS4uMjYzM2RkNDRlZDI2YzA1NDIzOTEzMmVkZDc4ZGE3NmEyM2Y0MjY0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaApAQCAtNDAsMTEgKzQw
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNsb2NrQ0EoKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOwotICAgIHZpcnR1YWwg
ZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRp
bWUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHBs
YXlSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSk7Cisg
ICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmgKaW5kZXggZTAzNDkxNTMwOTZiNDMyZWMyYzYwMzAx
MmZkN2FhY2RmZjM5ZGU5OC4uYjExZTBiYjcyODZmMjRmZDE3OGQxMzk1NjE5NzhhYWFhMTNiNjM1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tD
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaApA
QCAtNDQsMTggKzQ0LDE4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXpl
V2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShmbG9hdCk7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUo
ZmxvYXQpOwotICAgIHZpcnR1YWwgZmxvYXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3Jh
dGU7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5n
OyB9CiAKICAgICBSZXRhaW5QdHI8Q01UaW1lYmFzZVJlZj4gbV90aW1lYmFzZTsKLSAgICBmbG9h
dCBtX3JhdGU7CisgICAgZG91YmxlIG1fcmF0ZTsKICAgICBib29sIG1fcnVubmluZzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCmluZGV4
IGU5NTAxYTA1YzBiZjdiNGY0NzZiYmYyY2FhZmFhYzRiNTFmZDUwOTguLjgxZmI2ZmQ4ZTg2NGMw
M2ExNjM2MzYyZmM3ZmRmYzExZjA4OWE2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5tbQpAQCAtMjksNyArMjksNiBAQAogCiAjaW1wb3J0ICJQ
bGF0Zm9ybUNsb2NrQ00uaCIKIAotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0
ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8Q29yZU1lZGlhL0NNQXVkaW9EZXZpY2VDbG9jay5o
PgogCkBAIC03MywxOSArNzIsMTkgQEAgdm9pZCBQbGF0Zm9ybUNsb2NrQ006OmluaXRpYWxpemVX
aXRoVGltaW5nU291cmNlKENNQ2xvY2tSZWYgY2xvY2spCiAgICAgbV90aW1lYmFzZS5hZG9wdENG
KHJhd1RpbWViYXNlUHRyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJlbnRU
aW1lKGZsb2F0IHRpbWUpCit2b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c2V0Q3VycmVudFRpbWUoZG91
YmxlIHRpbWUpCiB7CiAgICAgQ01UaW1lIGNtVGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyh0
aW1lLCBEZWZhdWx0VGltZVNjYWxlKTsKICAgICBDTVRpbWViYXNlU2V0VGltZShtX3RpbWViYXNl
LmdldCgpLCBjbVRpbWUpOwogfQogCi1mbG9hdCBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1l
KCkgY29uc3QKK2RvdWJsZSBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1lKCkgY29uc3QKIHsK
ICAgICBDTVRpbWUgY21UaW1lID0gQ01UaW1lYmFzZUdldFRpbWUobV90aW1lYmFzZS5nZXQoKSk7
Ci0gICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhjbVRp
bWUpKTsKKyAgICByZXR1cm4gQ01UaW1lR2V0U2Vjb25kcyhjbVRpbWUpOwogfQogCi12b2lkIFBs
YXRmb3JtQ2xvY2tDTTo6c2V0UGxheVJhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgUGxhdGZvcm1DbG9j
a0NNOjpzZXRQbGF5UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBpZiAobV9yYXRlID09IHJhdGUp
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195838</attachid>
            <date>2013-03-29 21:08:22 -0700</date>
            <delta_ts>2013-03-30 00:10:28 -0700</delta_ts>
            <desc>Another mac build fix.</desc>
            <filename>bug-113615-20130329210818.patch</filename>
            <type>text/plain</type>
            <size>71250</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWUzNDJkODgwZGEzNWRm
YjNiNzBjYWY2ZmQ1OGJkNjBmMTU3NGQ1Zi4uYjcxOTBhMDY3MWM1ZWEyY2M3MzIyMTExYTZmZTYw
MjczZDA3MzMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAzLTI5ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBhbGwg
ZmxvYXQgYXR0cmlidXRlcyBpbiBIVE1MTWVkaWFFbGVtZW50IHRvIGRvdWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gUHJpbWFy
eSBiZWhhdmlvciBkb2Vzbid0IGNoYW5nZS4gSnVzdCB0aW1lLCBwbGF5YmFja1JhdGUsIGFuZCB2
b2x1bWUgcHJlY2lzaW9uLiBBbGwgZXhpc3RpbmcgbWVkaWEgTGF5b3V0VGVzdHMgc3RpbGwgcGFz
cy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDQS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tOgorCiAyMDEzLTAzLTI5ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxleGl0ZW1zIG5vIGxvbmdlciBkZWZhdWx0IG1p
bi13aWR0aCB0byBtaW4tY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOWY5MDA2ZjdlZjQxYWQxZjIyYzA2NjgwYjA4N2Q1YTgxOWNiOWNmMy4uZWQ4
OGE3OWY4NTk0YjhkMTE5NDRmOWFjMjA2MTM4OTJlZGE2MjUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgSFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW0KICAgICAsIG1fbGFzdFNlZWtUaW1lKDApCiAgICAgLCBtX3ByZXZpb3VzUHJv
Z3Jlc3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sYXN0VGlt
ZVVwZGF0ZUV2ZW50V2FsbFRpbWUoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmll
VGltZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0
ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9s
b2FkU3RhdGUoV2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHN0YXRp
YyBib29sIGV2ZW50VGltZUN1ZUNvbXBhcmUoY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgVGV4dFRy
YWNrQ3VlKj4mIGEsCiB9CiAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKIApAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAvLyAzIC0gTGV0IGxhc3QgdGltZSBiZSB0aGUg
Y3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBhdCB0aGUgdGltZSB0aGlzCiAgICAgLy8gYWxnb3Jp
dGhtIHdhcyBsYXN0IHJ1biBmb3IgdGhpcyBtZWRpYSBlbGVtZW50LCBpZiB0aGlzIGlzIG5vdCB0
aGUgZmlyc3QKICAgICAvLyB0aW1lIGl0IGhhcyBydW4uCi0gICAgZmxvYXQgbGFzdFRpbWUgPSBt
X2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lOworICAgIGRvdWJsZSBsYXN0VGltZSA9IG1fbGFzdFRl
eHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICAvLyA0IC0gSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sg
cG9zaXRpb24gaGFzLCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoaXMKICAgICAvLyBhbGdvcml0aG0g
d2FzIHJ1biwgb25seSBjaGFuZ2VkIHRocm91Z2ggaXRzIHVzdWFsIG1vbm90b25pYyBpbmNyZWFz
ZQpAQCAtMTEzMCw4ICsxMTMwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3Rp
dmVUZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAgICAgICAgIG1fY3VlVHJlZS5h
bGxPdmVybGFwcyhtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwobGFzdFRpbWUsIG1vdmllVGltZSkp
OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG90ZW50aWFsbHlTa2lwcGVkQ3Vl
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZmxvYXQgY3VlU3RhcnRUaW1lID0gcG90ZW50
aWFsbHlTa2lwcGVkQ3Vlc1tpXS5sb3coKTsKLSAgICAgICAgICAgIGZsb2F0IGN1ZUVuZFRpbWUg
PSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsKKyAgICAgICAgICAgIGRvdWJsZSBj
dWVTdGFydFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmxvdygpOworICAgICAgICAg
ICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsK
IAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4gbWlzc2Vk
IHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KICAgICAgICAgICAgIGlmIChjdWVTdGFydFRpbWUg
PiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92aWVUaW1l
KQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2
ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgfQogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChmbG9hdCB0aW1lRGVsdGEpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEpOwogICAgIHNldEN1cnJlbnRU
aW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5UaW1lU2Vla2FibGUoKSksIElH
Tk9SRV9FWENFUFRJT04pOwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXR1cm5Ub1JlYWx0aW1lKCkKICAgICBzZXRDdXJyZW50VGltZShtYXhUaW1lU2Vla2Fi
bGUoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRk
UGxheWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKCVmLCAlZikiLCBzdGFydCwg
ZW5kKTsKICAgICBpZiAoIW1fcGxheWVkVGltZVJhbmdlcykKQEAgLTIwNTEsNyArMjA1MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSgpCiAgICAgbV9wbGF5ZXItPnBy
ZXBhcmVUb1BsYXkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGRvdWJs
ZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKCVmKSIsIHRpbWUpOwogCkBAIC0yMDY5LDcgKzIwNjksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBtX3NlZWtpbmcsIG1fbGFz
dFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgogICAgIHJlZnJlc2hDYWNoZWRU
aW1lKCk7Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0g
Y3VycmVudFRpbWUoKTsKIAogICAgIC8vIDIgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURM
IGF0dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0
aG0gaXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ug
b2YgdGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKQEAgLTIw
ODUsNyArMjA4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VlayhmbG9hdCB0aW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAg
ICAgLy8gNiAtIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBl
YXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVh
ZC4KLSAgICBmbG9hdCBlYXJsaWVzdFRpbWUgPSBtX3BsYXllci0+c3RhcnRUaW1lKCk7CisgICAg
ZG91YmxlIGVhcmxpZXN0VGltZSA9IG1fcGxheWVyLT5zdGFydFRpbWUoKTsKICAgICB0aW1lID0g
bWF4KHRpbWUsIGVhcmxpZXN0VGltZSk7CiAKICAgICAvLyBBc2sgdGhlIG1lZGlhIGVuZ2luZSBm
b3IgdGhlIHRpbWUgdmFsdWUgaW4gdGhlIG1vdmllJ3MgdGltZSBzY2FsZSBiZWZvcmUgY29tcGFy
aW5nIHdpdGggY3VycmVudCB0aW1lLiBUaGlzCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
Ly8gbm90IGdlbmVyYXRlIGEgdGltZWNoYW5nZWQgY2FsbGJhY2suIFRoaXMgbWVhbnMgbV9zZWVr
aW5nIHdpbGwgbmV2ZXIgYmUgY2xlYXJlZCBhbmQgd2Ugd2lsbCBuZXZlciAKICAgICAvLyBmaXJl
IGEgJ3NlZWtlZCcgZXZlbnQuCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGZsb2F0IG1lZGlhVGlt
ZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CisgICAgZG91YmxlIG1l
ZGlhVGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CiAgICAgaWYg
KHRpbWUgIT0gbWVkaWFUaW1lKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZWVrKCVmKSAtIG1lZGlhIHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgJWYiLCB0aW1lLCBtZWRp
YVRpbWUpOwogI2VuZGlmCkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCkKIH0KIAogLy8gcGxheWJhY2sgc3RhdGUKLWZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVkaWFF
bGVtZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5J
TkdTCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5DYWNoZWREZWx0YUZvcldhcm5pbmcgPSAw
LjAxOwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVu
dFRpbWUoKSBjb25zdAogCiAgICAgaWYgKG1fY2FjaGVkVGltZSAhPSBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKSAmJiBtX3BhdXNlZCkgewogI2lmIExPR19DQUNIRURfVElNRV9XQVJOSU5HUwot
ICAgICAgICBmbG9hdCBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxheWVyLT5jdXJyZW50VGlt
ZSgpOworICAgICAgICBkb3VibGUgZGVsdGEgPSBtX2NhY2hlZFRpbWUgLSBtX3BsYXllci0+Y3Vy
cmVudFRpbWUoKTsKICAgICAgICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFGb3JXYXJuaW5n
KQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUg
LSBXQVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdo
ZW4gcGF1c2VkIiwgZGVsdGEpOwogI2VuZGlmCkBAIC0yMjMzLDEwICsyMjMzLDEwIEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgICAgICAvLyBOb3Qg
dG9vIHNvb24sIHVzZSB0aGUgY2FjaGVkIHRpbWUgb25seSBpZiBpdCBoYXNuJ3QgZXhwaXJlZC4K
ICAgICAgICAgaWYgKHdhbGxDbG9ja0RlbHRhIDwgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlh
VGltZSkgewotICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRDYWNoZVRpbWUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9jYWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEp
KTsKKyAgICAgICAgICAgIGRvdWJsZSBhZGp1c3RlZENhY2hlVGltZSA9IG1fY2FjaGVkVGltZSAr
IChtX3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKTsKIAogI2lmIExPR19DQUNIRURfVElN
RV9XQVJOSU5HUwotICAgICAgICAgICAgZmxvYXQgZGVsdGEgPSBhZGp1c3RlZENhY2hlVGltZSAt
IG1fcGxheWVyLT5jdXJyZW50VGltZSgpOworICAgICAgICAgICAgZG91YmxlIGRlbHRhID0gYWRq
dXN0ZWRDYWNoZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlm
IChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKICAgICAgICAgICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0
aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVsdGEp
OwogI2VuZGlmCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50Ojpj
dXJyZW50VGltZSgpIGNvbnN0CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAgICAgaWYg
KG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUgJiYgbm93ID4gbV9taW5pbXVtV2FsbENs
b2NrVGltZVRvQ2FjaGVNZWRpYVRpbWUgJiYgbV9jYWNoZWRUaW1lICE9IE1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSgpKSB7CiAgICAgICAgIGRvdWJsZSB3YWxsQ2xvY2tEZWx0YSA9IG5vdyAtIG1f
Y2FjaGVkVGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7Ci0gICAgICAgIGZsb2F0IGRlbHRhID0gbV9j
YWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpIC0gbV9wbGF5ZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IG1fY2FjaGVkVGltZSArICht
X3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgp
OwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIGNh
Y2hlZCB0aW1lIHdhcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJl
ZCIsIGRlbHRhKTsKICAgICB9CiAjZW5kaWYKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIGZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRU
aW1lOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50
VGltZShkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yMjY2LDcg
KzIyNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNlZWsodGltZSwgZWMpOwogfQogCi1mbG9hdCBI
VE1MTWVkaWFFbGVtZW50OjpzdGFydFRpbWUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMjg0LDEyICsyMjg0LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50Ojpp
bml0aWFsVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLT5pbml0aWFsVGltZSgpOwog
fQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0Citkb3VibGUgSFRN
TE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewogICAgIGlmIChtX3BsYXllciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5k
dXJhdGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFO
KCk7CisgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgpIGNvbnN0CkBAIC0yMjk3LDEyICsyMjk3
LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKCkgY29uc3QKICAgICByZXR1cm4g
bV9wYXVzZWQ7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1Jh
dGUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQog
ewogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX2Rl
ZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtMjMxMCwxMiArMjMxMCwxMiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICB9
CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Citkb3Vi
bGUgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tS
YXRlKGZsb2F0IHJhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShk
b3VibGUgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5
YmFja1JhdGUoJWYpIiwgcmF0ZSk7CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiB7Ci0gICAgZmxvYXQgZWZmZWN0aXZl
UmF0ZSA9IG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPnBsYXliYWNrUmF0
ZSgpIDogbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIGVmZmVjdGl2ZVJhdGUgPSBtX21lZGlh
Q29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5wbGF5YmFja1JhdGUoKSA6IG1fcGxheWJh
Y2tSYXRlOwogICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3Bs
YXllci0+cmF0ZSgpICE9IGVmZmVjdGl2ZVJhdGUpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRl
KGVmZmVjdGl2ZVJhdGUpOwogfQpAQCAtMjYyNywxMiArMjYyNywxMiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldENvbnRyb2xzKGJvb2wgYikKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGNv
bnRyb2xzQXR0ciwgYik7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSgpIGNv
bnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6dm9sdW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV92b2x1bWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0
IHZvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVt
ZShkb3VibGUgdm9sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoJWYpIiwgdm9sKTsKIApAQCAtMjc2MSw3ICsyNzYxLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBl
cmlvZGljRXZlbnQpCiAKICAgICAvLyBTb21lIG1lZGlhIGVuZ2luZXMgbWFrZSBtdWx0aXBsZSAi
dGltZSBjaGFuZ2VkIiBjYWxsYmFja3MgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHdlIG9ubHkgd2Fu
dCBvbmUKICAgICAvLyBldmVudCBhdCBhIGdpdmVuIHRpbWUgc28gZmlsdGVyIGhlcmUKLSAgICBm
bG9hdCBtb3ZpZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBtb3ZpZVRpbWUgPSBj
dXJyZW50VGltZSgpOwogICAgIGlmIChtb3ZpZVRpbWUgIT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50
TW92aWVUaW1lKSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnRpbWV1cGRh
dGVFdmVudCk7CiAgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lID0gbm93OwpA
QCAtMjc3NCwyMCArMjc3NCwyMCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXkoKSBj
b25zdAogICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhB
VkVfTUVUQURBVEE7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQo
KSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAog
ewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGZsb2F0IGR1cmF0
aW9uID0gbV9wbGF5ZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9wbGF5
ZXItPmR1cmF0aW9uKCk7CiAKICAgICBpZiAoIWR1cmF0aW9uIHx8IHN0ZDo6aXNpbmYoZHVyYXRp
b24pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZsb2F0IGJ1ZmZlcmVkID0gMDsKKyAgICBk
b3VibGUgYnVmZmVyZWQgPSAwOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0g
bV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVS
YW5nZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZmxvYXQgc3RhcnQgPSB0aW1lUmFuZ2Vz
LT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICAgICAgZmxvYXQgZW5kID0gdGltZVJh
bmdlcy0+ZW5kKGksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgc3RhcnQgPSB0
aW1lUmFuZ2VzLT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgZG91YmxlIGVu
ZCA9IHRpbWVSYW5nZXMtPmVuZChpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgYnVmZmVy
ZWQgKz0gZW5kIC0gc3RhcnQ7CiAgICAgfQogICAgIHJldHVybiBidWZmZXJlZCAvIGR1cmF0aW9u
OwpAQCAtMzQ1Nyw4ICszNDU3LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAvLyBtb3ZpZSB0aW1lLgogICAgIHNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKIAotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVu
dFRpbWUoKTsKKyAgICBkb3VibGUgZHVyID0gZHVyYXRpb24oKTsKICAgICAKICAgICAvLyBXaGVu
IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgbWVk
aWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gcGxheWJhY2sgaXMgZm9y
d2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6CkBAIC0z
NTAwLDcgKzM1MDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKSB7Ci0gICAgICAgIGZsb2F0IHZvbCA9IG1fcGxh
eWVyLT52b2x1bWUoKTsKKyAgICAgICAgZG91YmxlIHZvbCA9IG1fcGxheWVyLT52b2x1bWUoKTsK
ICAgICAgICAgaWYgKHZvbCAhPSBtX3ZvbHVtZSkgewogICAgICAgICAgICAgbV92b2x1bWUgPSB2
b2w7CiAgICAgICAgICAgICB1cGRhdGVWb2x1bWUoKTsKQEAgLTM1MjksOCArMzUyOSw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5
ZXIqIHBsYXllcikKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5n
ZUV2ZW50KTsKICAgICBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChwbGF5ZXIpOwog
Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlv
bigpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmIChub3cgPiBkdXIpCiAgICAgICAgIHNlZWsoZHVyLCBJR05PUkVf
RVhDRVBUSU9OKTsKIApAQCAtMzY4NSw3ICszNjg1LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiB7CiAgICAgaWYgKG1fcGxheWluZykgewot
ICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHRpbWUg
PSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+IG1fbGFzdFNlZWtUaW1lKQogICAg
ICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1RpbWUsIHRpbWUpOwogICAgIH0KQEAg
LTM3MTcsNyArMzcxNyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91
Z2hEYXRhKCkgY29uc3QKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKCkg
Y29uc3QKIHsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmICghbV9wbGF5ZXIgfHwgc3RkOjppc25hbihkdXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3MzEsNyArMzczMSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgLy8gYW5kIHRoZSBjdXJyZW50IHBsYXli
YWNrIHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCB0aGUgZGly
ZWN0aW9uCiAgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVkaWEg
ZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAogICAgIC8v
IG9yIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KLSAg
ICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGlt
ZSgpOwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCiAgICAgICAgIHJldHVybiBkdXIgPiAw
ICYmIG5vdyA+PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCkBAIC0z
NzYwLDEyICszNzYwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlcklu
dGVyYWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZsb2F0IEhUTUxNZWRp
YUVsZW1lbnQ6Om1pblRpbWVTZWVrYWJsZSgpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6bWluVGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVk
aWFFbGVtZW50OjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXll
ciA/IG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSA6IDA7CiB9CkBAIC0zNzc4LDcgKzM3Nzgs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgLy8gQXZvaWQg
cmVjdXJzaW9uIHdoZW4gdGhlIHBsYXllciByZXBvcnRzIHZvbHVtZSBjaGFuZ2VzLgogICAgIGlm
ICghcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0g
cGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOworICAgICAgICBkb3VibGUgdm9sdW1lTXVs
dGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKICAgICAgICAgYm9vbCBz
aG91bGRNdXRlID0gbV9tdXRlZDsKIAogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
QEAgLTM4NDMsNyArMzg0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0
YXRlKCkKIAogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7CiAgICAgICAg
IG1fcGxheWluZyA9IGZhbHNlOwotICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsK
KyAgICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+
IG1fbGFzdFNlZWtUaW1lKQogICAgICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1Rp
bWUsIHRpbWUpOwogCkBAIC00Njg3LDcgKzQ2ODcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKICAgICAvLyBvciBpZiBpdHMgbWVk
aWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJj
ZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAogICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBN
ZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSBy
ZXNvdXJjZSAKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxp
bmUuCi0gICAgZmxvYXQgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxl
ci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBt
X21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKICAgICBpZiAobWVkaWFDb250cm9sbGVy
UG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0
VGltZSgpICsgZHVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ2OTcsNyAr
NDY5Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xs
ZXIoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVS
SSgpCiB7CiAgICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJl
bnRTcmMpOwotICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1
cmF0aW9uKCk7CiAgICAgCiAgICAgZG91YmxlIHN0YXJ0ID0gZnJhZ21lbnRQYXJzZXIuc3RhcnRU
aW1lKCk7CiAgICAgaWYgKHN0YXJ0ICE9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmludmFsaWRU
aW1lVmFsdWUoKSAmJiBzdGFydCA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggMTFkZTZjNjFmNGVlMDJlZjQxZDY4Yzc1NzM1ZjJiMWNiODE4ZGViOS4uMDA0
N2VjMzE1NjllN2QxNTkzMzllY2MxNzM3NDdkOGNkNDAwYTU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJld2luZChmbG9hdCB0aW1lRGVsdGEp
OworICAgIHZvaWQgcmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpOwogICAgIHZvaWQgcmV0dXJuVG9S
ZWFsdGltZSgpOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0Vs
ZW1lbnQKQEAgLTE0NCwxNiArMTQ0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBj
b25zdDsKIAogLy8gcGxheWJhY2sgc3RhdGUKLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0OwotICAg
IGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0OwotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7Ci0gICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Ci0gICAg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxv
YXQpOworICAgIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSk7CisgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CiAgICAgdm9pZCB1cGRh
dGVQbGF5YmFja1JhdGUoKTsKICAgICBib29sIHdlYmtpdFByZXNlcnZlc1BpdGNoKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKQEAgLTIwNiw4ICsyMDYs
OCBAQCBwdWJsaWM6CiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgZG91YmxlIHZvbHVt
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpOwogCkBAIC0y
MTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0Owog
Ci0gICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OworICAgIGRvdWJsZSBwZXJjZW50TG9h
ZGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5Niwx
MCArNDk2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigp
OwogICAgIHZvaWQgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAKLSAgICB2b2lkIHNlZWsoZmxvYXQg
dGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgZmluaXNoU2VlaygpOwogICAgIHZvaWQgY2hlY2tJZlNlZWtO
ZWVkZWQoKTsKLSAgICB2b2lkIGFkZFBsYXllZFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQp
OworICAgIHZvaWQgYWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAg
ICAKICAgICB2b2lkIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCk7
CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsK
QEAgLTUyMyw3ICs1MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7CisgICAgdm9pZCB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCogc2hv
d2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsKIAogICAgIHZv
aWQgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CkBAIC01NTAs
MTMgKzU1MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9u
KCkgY29uc3Q7CiAgICAgYm9vbCBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdDsKIAotICAg
IGZsb2F0IG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwotICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpIGNvbnN0OworICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0
aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBz
ZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJu
YWwoZmxvYXQpOworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKQEAgLTYwMCw4ICs2MDAsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIGZsb2F0
IG1fcGxheWJhY2tSYXRlOwotICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBk
b3VibGUgbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsK
ICAgICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0Y2g7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0
d29ya1N0YXRlOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwpAQCAtNjEwLDggKzYxMCw4
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAotICAgIGZs
b2F0IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fbGFzdFNlZWtUaW1lOworICAgIGRvdWJsZSBtX3Zv
bHVtZTsKKyAgICBkb3VibGUgbV9sYXN0U2Vla1RpbWU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9w
cmV2aW91c1Byb2dyZXNzOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVu
dFdhbGxUaW1lOwogCiAgICAgLy8gVGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2Fz
IHNlbnQgaW4gbW92aWUgdGltZS4KLSAgICBmbG9hdCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWU7CisgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZTsKICAgICAK
ICAgICAvLyBMb2FkaW5nIHN0YXRlLgogICAgIGVudW0gTG9hZFN0YXRlIHsgV2FpdGluZ0ZvclNv
dXJjZSwgTG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQgfTsKQEAg
LTY0Nyw3ICs2NDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRp
YVNvdXJjZTsKICNlbmRpZgogCi0gICAgbXV0YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CisgICAg
bXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVk
VGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2Fs
bENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CiAKQEAgLTY5Niw3ICs2OTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNpYmxl
VGV4dFRyYWNrIDogMTsKICAgICBib29sIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgOiAx
OwotICAgIGZsb2F0IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CisgICAgZG91YmxlIG1fbGFz
dFRleHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0
VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKaW5kZXggOTM5NDUyZGMyM2M2ZGRmZjVhZjBiODM1OGU1YzAyYzdiNTMwZTdiYi4uNmZi
MzEzOGIyMWI1NDFhNDIwZjgyN2M3OTI1OTVhMmI1ODljYmU4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC02MywxNCArNjMsMTQgQEAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBzZWVraW5nOwogCiAvLyBwbGF5YmFjayBzdGF0ZQotYXR0cmlidXRlIGZsb2F0IGN1cnJl
bnRUaW1lCithdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCiAgICAgc2V0dGVyIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgaW5pdGlhbFRpbWU7Ci1y
ZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgc3RhcnRUaW1lOwotcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0IGR1cmF0aW9uOworcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBzdGFydFRpbWU7CityZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOwogcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gcGF1c2VkOwotYXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGU7Ci1hdHRyaWJ1
dGUgZmxvYXQgcGxheWJhY2tSYXRlOworYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tS
YXRlOworYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUg
VGltZVJhbmdlcyBwbGF5ZWQ7CiByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJs
ZTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGVuZGVkOwpAQCAtODEsNyArODEsNyBAQCB2
b2lkIHBhdXNlKCk7CiAKIC8vIGNvbnRyb2xzCiBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsK
LWF0dHJpYnV0ZSBmbG9hdCB2b2x1bWUgCithdHRyaWJ1dGUgZG91YmxlIHZvbHVtZSAKICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiBh
dHRyaWJ1dGUgW1JlZmxlY3Q9bXV0ZWRdIGJvb2xlYW4gZGVmYXVsdE11dGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDEwMzE2MWIxY2IxYjFiNTVmNWQ3ZGM3
Y2FhODMyYWEzYWNjNTVlNmIuLjMzYzYzYTY2ZGE2MTA3OWY3MDBlOWE3NGYyNWUyY2JlZDJiNjY3
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTEyOSwxMyAr
MTI5LDEzIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQo
KQogICAgIHJldHVybiBwbGF5ZWRSYW5nZXM7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6
ZHVyYXRpb24oKSBjb25zdAorZG91YmxlIE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25z
dAogewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0
aW9uIGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKICAgICAvLyB3aGVuIHRoZSBz
bGF2ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCi0gICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGRvdWJsZSBtYXhEdXJhdGlvbiA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKLSAg
ICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigp
OworICAgICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJh
dGlvbigpOwogICAgICAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKQEAgLTE0MywyNiArMTQzLDI2IEBAIGZsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24o
KSBjb25zdAogICAgIHJldHVybiBtYXhEdXJhdGlvbjsKIH0KIAotZmxvYXQgTWVkaWFDb250cm9s
bGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50
VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKG1fcG9zaXRpb24gPT0gTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCkpIHsKICAgICAgICAgLy8gU29tZSBjbG9ja3MgbWF5IHJldHVybiB0aW1lcyBvdXRz
aWRlIHRoZSByYW5nZSBvZiBbMC4uZHVyYXRpb25dLgotICAgICAgICBtX3Bvc2l0aW9uID0gbWF4
KDAuMGYsIG1pbihkdXJhdGlvbigpLCBtX2Nsb2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAg
IG1fcG9zaXRpb24gPSBtYXgoMC4wLCBtaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+Y3VycmVudFRp
bWUoKSkpOwogICAgICAgICBtX2NsZWFyUG9zaXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lLCBFeGNlcHRpb25Db2Rl
JiBjb2RlKQogewogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVk
aWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKICAg
ICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAvLyBJZiB0aGUgbmV3IHBsYXli
YWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgotICAg
IHRpbWUgPSBtYXgoMC4wZiwgdGltZSk7CisgICAgdGltZSA9IG1heCgwLjAsIHRpbWUpOwogICAg
IAogICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRo
ZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKICAgICAvLyB0byB0aGUg
bWVkaWEgY29udHJvbGxlciBkdXJhdGlvbi4KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbGxlcjo6cGF1c2UoKQogICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOwogfQogCi12
b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQor
dm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUp
CiB7CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1
cm47CkBAIC0yMzAsMTIgKzIzMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVs
dFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnJhdGVjaGFuZ2VFdmVudCk7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tS
YXRlKCkgY29uc3QKK2RvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250
cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fY2xvY2stPnBsYXlS
YXRlKCkgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShkb3VibGUgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUm
IGNvZGUpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCA2NjE1YTNiYzQ4MGI5N2JjMmFi
ZGE4YWI1MWM1MjMzMTNmZTVmZTA1Li41ZTQ1NmJkMDNjZjM5Y2Y0YjRlZDdhZjNhNDQ5NWNjZGZk
ZjJiYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTYwLDIzICs2
MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWth
YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgp
OwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZv
aWQgdW5wYXVzZSgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXliYWNr
UmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1l
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CiAgICAgVmVj
dG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhdXNl
ZDsKLSAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7Ci0gICAgZmxvYXQgbV92b2x1bWU7
Ci0gICAgbXV0YWJsZSBmbG9hdCBtX3Bvc2l0aW9uOworICAgIGRvdWJsZSBtX2RlZmF1bHRQbGF5
YmFja1JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOworICAgIG11dGFibGUgZG91YmxlIG1fcG9z
aXRpb247CiAgICAgYm9vbCBtX211dGVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKaW5kZXggN2JjZjA2YzVmYjY2NThjZGU0YTli
ZjAyMjU2MTI4MDYwYjY2YmEwZC4uNDg1MDUwY2VhN2RkODc4NTRkZTJkZWEyN2VhMDYxOTRjMTNh
ZTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC00NSwyMiArNDUsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRp
b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0
UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxh
eWJhY2tSYXRlKGRvdWJsZSkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tS
YXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpID0gMDsKICAgICAKLSAgICB2aXJ0
dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwCmluZGV4IGMyMjQ3NGEwNjI5YzlhN2RkYWIzYzg5MjRkZGY5MjQ5YWVlZmE4ZWMuLmIw
NDVhY2E3ZTM5ODhlMjAxNTVmOGU4ZGI1ZWY5M2Q4ODYzNTg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0
YXJ0LCBmbG9hdCBlbmQpCitUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CkBAIC01MywxOSArNTMsMTkgQEAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHZvaWQgVGlt
ZVJhbmdlczo6aW52ZXJ0KCkKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZG91YmxlIHBvc0luZiA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBkb3VibGUgbmVnSW5mID0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIAogICAgIGlmICghbV9yYW5n
ZXMuc2l6ZSgpKQogICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgcG9zSW5mKTsKICAgICBl
bHNlIHsKLSAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IG5lZ0luZikKKyAgICAgICAgaWYgKGRvdWJsZSBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCku
bV9zdGFydCAhPSBuZWdJbmYpCiAgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3Rh
cnQpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5n
ZXMuc2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tp
bmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CiAKLSAgICAgICAgaWYg
KGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgIGlm
IChkb3VibGUgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKICAgICAgICAg
ICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOwogICAgIH0KIApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKICAg
ICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKIH0KIAotZmxvYXQgVGltZVJhbmdl
czo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJs
ZSBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmFu
Z2VzW2luZGV4XS5tX3N0YXJ0OwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjplbmQo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGlu
ZGV4ID49IGxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0xMTMs
NyArMTEzLDcgQEAgZmxvYXQgVGltZVJhbmdlczo6ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fZW5kOwogfQog
Ci12b2lkIFRpbWVSYW5nZXM6OmFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKSAKK3ZvaWQgVGlt
ZVJhbmdlczo6YWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgCiB7CiAgICAgQVNTRVJUKHN0
YXJ0IDw9IGVuZCk7CiAgICAgdW5zaWduZWQgaW50IG92ZXJsYXBwaW5nQXJjSW5kZXg7CkBAIC0x
NTYsNyArMTU2LDcgQEAgdm9pZCBUaW1lUmFuZ2VzOjphZGQoZmxvYXQgc3RhcnQsIGZsb2F0IGVu
ZCkKICAgICBtX3Jhbmdlcy5pbnNlcnQob3ZlcmxhcHBpbmdBcmNJbmRleCwgYWRkZWRSYW5nZSk7
CiB9CiAKLWJvb2wgVGltZVJhbmdlczo6Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdAorYm9vbCBU
aW1lUmFuZ2VzOjpjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdAogewogICAgIGZvciAodW5zaWdu
ZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7CiAgICAgICAgIGlmICh0aW1lID49IHN0YXJ0
KG4sIElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENFUFRJT04p
KQpAQCAtMTY1LDEzICsxNjUsMTMgQEAgYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGZsb2F0IHRp
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjpuZWFy
ZXN0KGZsb2F0IHRpbWUpIGNvbnN0Citkb3VibGUgVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUg
dGltZSkgY29uc3QKIHsKLSAgICBmbG9hdCBjbG9zZXN0ID0gMDsKKyAgICBkb3VibGUgY2xvc2Vz
dCA9IDA7CiAgICAgdW5zaWduZWQgY291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVk
IG5keCA9IDA7IG5keCA8IGNvdW50OyBuZHgrKykgewotICAgICAgICBmbG9hdCBzdGFydFRpbWUg
PSBzdGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOwotICAgICAgICBmbG9hdCBlbmRUaW1lID0g
ZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBz
dGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgZW5kVGltZSA9IGVu
ZChuZHgsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBpZiAodGltZSA+PSBzdGFydFRpbWUg
JiYgdGltZSA8PSBlbmRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHRpbWU7CiAgICAgICAgIGlm
IChmYWJzKHN0YXJ0VGltZSAtIHRpbWUpIDwgY2xvc2VzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmgKaW5kZXggNDI1NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3Zi4uZWZkY2Fi
ZmMyM2UzMzk1MzdkNGYzMDMyMmQzZjI2OTc3YzAzYmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUaW1lUmFuZ2VzKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gY3JlYXRlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAg
ICAgfQpAQCAtNTIsMzIgKzUyLDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaW9uV2l0aChjb25z
dCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3Jhbmdlcy5zaXplKCk7IH0KLSAgICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwotICAgIGZsb2F0IGVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsK
KyAgICB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUp
IGNvbnN0OwogICAgIAotICAgIGZsb2F0IG5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3Q7CisgICAg
ZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRpbWVS
YW5nZXMoKSB7IH0KLSAgICBUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpOworICAg
IFRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICBUaW1lUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKTsKIAogICAgIC8vIFdlIGNvbnNpZGVyIGFsbCB0aGUgUmFuZ2VzIHRv
IGJlIHNlbWktYm91bmRlZCBhcyBmb2xsb3c6IFtzdGFydCwgZW5kWwogICAgIHN0cnVjdCBSYW5n
ZSB7CiAgICAgICAgIFJhbmdlKCkgeyB9Ci0gICAgICAgIFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9h
dCBlbmQpCisgICAgICAgIFJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICAgICAg
ewogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0OwogICAgICAgICAgICAgbV9lbmQgPSBlbmQ7
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgbV9zdGFydDsKLSAgICAgICAgZmxvYXQgbV9lbmQ7
CisgICAgICAgIGRvdWJsZSBtX3N0YXJ0OworICAgICAgICBkb3VibGUgbV9lbmQ7CiAKLSAgICAg
ICAgaW5saW5lIGJvb2wgaXNQb2ludEluUmFuZ2UoZmxvYXQgcG9pbnQpIGNvbnN0CisgICAgICAg
IGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYgcG9pbnQgPCBtX2VuZDsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwKaW5kZXggNjFkYTA5M2E5ZTE4
ZThiNTRiNjQ3YTkzOWYyY2IzMmUwZTVkYzNjMC4uOTljYTg4MjcxNzEzYzExYWEwMTVjYjRjNjFk
Yzg1MDAzNmMyODVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCkBAIC0yOCw5ICsy
OCw5IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgVGltZVJh
bmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAg
IGZsb2F0IHN0YXJ0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCisgICAgZG91YmxlIHN0YXJ0KGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAg
ICBmbG9hdCBlbmQoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkKKyAgICBkb3VibGUgZW5kKGluIHVu
c2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZXMuY3BwCmluZGV4IDc5ZWZkY2NhNTM5YzNhZTY1YTA4YTkyYmRkODY2YzI1NjY5ZWU3
OTMuLjczMmRiYjAyMDYxMWQ1MGE0YjNjOWJlMmRlNDQ2NGMxNmU2NGE4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVz
LmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtNDgsMTAgKzQ3LDEwIEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBjbGFzcyBFdmVudDsKIAogLy8gRklYTUU6IFRoZXNlIGNvbnN0
YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBp
biB0aGUgUXVpY2tUaW1lIHBsdWctaW4uCi1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMWY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRp
YyBjb25zdCBmbG9hdCBjU2NhblJlcGVhdERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9h
dCBjU2Nhbk1heGltdW1SYXRlID0gODsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMTsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBUaW1lID0gMC4yOworc3RhdGlj
IGNvbnN0IGRvdWJsZSBjU2NhblJlcGVhdERlbGF5ID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJs
ZSBjU2Nhbk1heGltdW1SYXRlID0gODsKIAogSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRp
YUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKQEAgLTE1NCw3ICsxNTMsNyBAQCBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbgogewogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6
c2V0Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6c2V0Q3VycmVudFZhbHVlKGRvdWJsZSB0aW1lKQogewogICAgIG1fY3VycmVudFZh
bHVlID0gdGltZTsKIH0KQEAgLTI0OSw5ICsyNDgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50OjpzdG9wVGltZXIoKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CiB9
CiAKLWZsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0
Citkb3VibGUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QK
IHsKLSAgICBmbG9hdCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVk
aWFDb250cm9sbGVyKCktPnBsYXliYWNrUmF0ZSgpICogMikpOworICAgIGRvdWJsZSByYXRlID0g
c3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFicyhtZWRpYUNvbnRyb2xsZXIoKS0+cGxheWJh
Y2tSYXRlKCkgKiAyKSk7CiAgICAgaWYgKCFpc0ZvcndhcmRCdXR0b24oKSkKICAgICAgICAgcmF0
ZSAqPSAtMTsKICAgICByZXR1cm4gcmF0ZTsKQEAgLTI2MCw3ICsyNTksNyBAQCBmbG9hdCBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogdm9pZCBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQ+KikKIHsKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7Ci0g
ICAgICAgIGZsb2F0IHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAt
Y1NraXBUaW1lOworICAgICAgICBkb3VibGUgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/
IGNTa2lwVGltZSA6IC1jU2tpcFRpbWU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRD
dXJyZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBJ
R05PUkVfRVhDRVBUSU9OKTsKICAgICB9IGVsc2UKICAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKQEAgLTI4OCw3ICsyODcsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCku
dG9Eb3VibGUoKSk7CisgICAgZG91YmxlIHZvbHVtZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAg
ICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKICAgICAgICAgbWVk
aWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKQEAgLTMxMSw5ICszMTAsOSBA
QCBib29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogewotICAgIGlm
ICh2YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1bWUpCisgICAgaWYgKHZhbHVlKCkudG9Eb3VibGUo
KSAhPSB2b2x1bWUpCiAgICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5oCmluZGV4IGMyZjY3OTE4YjU0MzVhY2FiMjk4OWY4MmQyOTIwMjAwYmUwMzRh
NDkuLjk1OWMyZWZhMDMxNzAzZGIyZmI1MjAxNGUxNTVlZTgyZmUyOTBlNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
CkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1l
RGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdm9pZCBzZXRDdXJyZW50
VmFsdWUoZG91YmxlKTsKKyAgICBkb3VibGUgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50VmFsdWU7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
IAogcHJpdmF0ZToKLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKKyAgICBkb3VibGUgbV9jdXJy
ZW50VmFsdWU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRUaW1lcigpOwogICAgIHZvaWQg
c3RvcFRpbWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKKyAgICBkb3VibGUgbmV4
dFJhdGUoKSBjb25zdDsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50PiopOwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywg
UGxheSwgUGF1c2UgfTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBP
VkVSUklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCBzZXRWb2x1bWUo
ZG91YmxlKTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDIxMTBkMDQ1NGIyZjg0ZDVkYTE0NTk3NWI3ZGVhOTUx
MjU5ZGFjZGUuLjllNjgwZGRlODM2MGU4YTkxNDQ4ODdjM2U3NzNlZTE1MmE1ODc4ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYz
Myw3ICs2MzIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMGYsIG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjAsIG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtOTY1LDcgKzk2NCw3IEBAIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJs
ZSgpKTsKKyAgICBkb3VibGUgdGltZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
Q3VycmVudFRpbWUodGltZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTk4MiwxMiArOTgxLDEy
IEBAIGJvb2wgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3ZvaWQgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRpbWUpCiB7
CiAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0KIAotdm9pZCBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQor
dm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoc3RkOjpp
c2Zpbml0ZShkdXJhdGlvbikgPyBkdXJhdGlvbiA6IDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDE5ZjgzY2U5YWQ4
ZDQ4OTBlOWQ3NGYxMGU3MTI3YzU1ZTc5NWI0OTMuLmFkMTVmNGEwMWU3OTRlMzgzYjlkNzEzYmU3
OTE0N2MxODIwOTQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuaApAQCAtMzM1LDggKzMzNSw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOwogCi0g
ICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7
CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91
YmxlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDM2ZTE3ODBiMzI3ZTllNTNhZjEyMGI5ZmM3YTFl
OTM1ZTcxN2ExNzguLmIwYjI4ODQyOGU4OTQ3MjExOTM1MWNkNWE2MWQyNjBkZDgyZjE0NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6cmVzZXQoKQogCiAgICAgdXBkYXRlQ3VycmVu
dFRpbWVEaXNwbGF5KCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVt
ZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgewog
ICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1fdGlt
ZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKQEAg
LTIxNCw3ICsyMTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCiAK
IHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsKLSAgICBm
bG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAKICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDkxYThhNzdjZDEx
OTc3MTg2ZWFhYTE2MWMyMDA2YzE5NTI5ZDYwMTUuLmM5M2JhNjg5MGEyYzFiZTNkMzQwODMzNjk0
NGIzMzYwYzJjMDM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTWVkaWFDb250cm9s
c0FwcGxlOjpyZXNldCgpCiAgICAgZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhp
ZGUoKTsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CiAgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1f
dGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRh
aW5lci0+c2hvdygpOwpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxl
OjpyZXNldCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURp
c3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAKaW5kZXggYWZmMGRiZjcyYmJlYjU4N2U1Mzc0MmY2Mzk3YWY1NTdjZTEwNzkxMi4uYjFjZjMy
OTFiZGQxN2NkNmEwMzllYTIxZGFlZWVkOWViNDE3ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgxLDcgKzQ4MCw3IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgdGltZWxpbmUtPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2Ui
KTsKLSAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwor
ICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImRvdWJsZSIpOwogICAg
IHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTUwNSw3ICs1MDQsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGRvdWJsZSB0aW1lID0gdmFsdWUoKS50b0RvdWJsZSgp
OwogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRp
bWUgIT0gbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBJR05PUkVfRVhDRVBUSU9OKTsKIApAQCAt
NTIyLDEyICs1MjEsMTIgQEAgYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRp
b24oZmxvYXQgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGRvdWJsZSBjdXJyZW50VGltZSkKIHsKICAgICBzZXRWYWx1
ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pCiB7CiAgICAgc2V0QXR0cmlidXRlKG1heEF0dHIsIFN0cmluZzo6bnVtYmVy
KHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CiB9CkBAIC05MTEsOSAr
OTEwLDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAg
ICAgfQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIGZsb2F0
IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIG1fdGltZWxp
bmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUt
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hv
dygpOwpAQCAtOTU1LDcgKzk1NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmJ1
ZmZlcmluZ1Byb2dyZXNzZWQoKQogICAgIC8vIFdlIG9ubHkgbmVlZCB0byB1cGRhdGUgYnVmZmVy
aW5nIHByb2dyZXNzIHdoZW4gcGF1c2VkLCBkdXJpbmcgbm9ybWFsCiAgICAgLy8gcGxheWJhY2sg
cGxheWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCiAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5wYXVzZWQoKSkgewotICAgICAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOwogICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAg
ICB9CkBAIC05NjMsNyArOTYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVm
ZmVyaW5nUHJvZ3Jlc3NlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXli
YWNrU3RhcnRlZCgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CkBAIC05NzYsNyArOTc1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICBt
X2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICB1cGRhdGVDdXJyZW50
VGltZURpc3BsYXkoKTsKQEAgLTk4Nyw3ICs5ODYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKTsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAg
ICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3Rp
bWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwpAQCAtMTAwMCw4ICs5OTksOCBAQCB2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5v
dyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVk
aWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaAppbmRleCBlNDFmYTY5MWRiZmFhMDUyNmYx
ZDBiNjMxNzk2NzRmMTgxN2RhNWYzLi4wZmY3NmNiYzkwZmI3MDlkN2E0OTQwZjRkNDg3NThhNjMw
MWMzYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihm
bG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXRQb3NpdGlv
bihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFD
b250cm9scyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jcHAKaW5kZXggODU4NTdlODczZDIyODgwOTA4ZjljYzAyYzkwYjVjZDQ0
N2U2OWQ3OS4uYjhiYTliZTgyOGY1NzMwZDc2ODZmMzIzOTQ5YWIzMjkwMzA2ZDk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0u
Y3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJlc2V0
KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
bV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNl
dElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlv
biksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJy
ZW50VmFsdWUoZHVyYXRpb24pOwogCkBAIC0xNzMsOCArMTczLDggQEAgdm9pZCBNZWRpYUNvbnRy
b2xzQ2hyb21pdW06OnBsYXliYWNrU3RhcnRlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0Nocm9t
aXVtOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRp
YUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9s
bGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNHdGsuY3BwCmluZGV4IDdhOGI5MjIyNTMwNjhmZWVkMWZhZmIyODBmNDg3MmUyMmQyNGMy
NzcuLjVlZWMwODdlOTBiMzEyNDU5ZmNmZDk2ODk5YzA5YWIzZTg4MThmZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjpyZXNldCgpCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsK
IApAQCAtMTcyLDggKzE3Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cGxheWJhY2tTdGFy
dGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXko
KQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwot
ICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAg
ZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggM2QzZWE4ZjJlMzc2YjUxMjY3OGVh
ZjIyYzQwOGUzZTU5ZmYyMTM5NC4uNjk2NWI5MmY0NDg2MTRhNTJhMmY1ZWQ4ODZkMGU0YWIzNWYz
MTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAt
NzUxLDcgKzc1MSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVz
KENvbnRhaW5lck5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpCiAgICAgfQogfQogCi12b2lk
IFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQordm9pZCBU
ZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAg
Ly8gVGhlIGRpc3BsYXkgdHJlZSBtYXkgY29udGFpbiBXZWJWVFQgdGltZXN0YW1wIG9iamVjdHMg
cmVwcmVzZW50aW5nCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMp
LCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmgKaW5kZXggZWM2OTMwY2NhZWY1Mjk3ZDhkYjQzMTUzNDBjMzdjZmRkOGE1
YzY4ZC4uODc2ZDk0YTU0YWUzOGE4ODNjOWExOTcyOTUzODVlMDczMjM4M2VjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpOwogICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2N1ZUJhY2tncm91bmRCb3g7IH0KIAotICAgIHZvaWQg
dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoZG91
YmxlKTsKICAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCBtYXJrRnV0dXJl
QW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9jay5oCmluZGV4IDg2YWY5NTY1NzM5OGQ0ZTYyOTAyOWIxNGI3ZmYwZTA5ZmQyYjg2
Y2YuLjBiMzMyMmZlOTMyMWYyZWM2OWFlNmExYjA3OTk5ZjQyYWM1OTc4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suaApAQCAtMzYsMTEgKzM2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDbG9jaz4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgZmxv
YXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KSA9IDA7Ci0gICAgdmly
dHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxh
eVJhdGUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVy
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCBl
ZjA5YzRmMzgyMWY2Y2UzNmJmZTJjOGM1N2U1MDliNzY2MTZlN2Q2Li45OWFhMzQwM2M2MjY4Yzky
YWVhZmIwYmYwYTg3ZGNmYzM5MDQzYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDbG9ja0dlbmVyaWMuaCIKIAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTM5LDIxICszOCwyMCBAQCBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCiAgICAgbV9zdGFy
dFRpbWUgPSBtX2xhc3RUaW1lID0gbm93KCk7CiB9CiAKLXZvaWQgQ2xvY2tHZW5lcmljOjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lKQordm9pZCBDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1l
KGRvdWJsZSB0aW1lKQogewogICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwog
ICAgIG1fb2Zmc2V0ID0gdGltZTsKIH0KIAotZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGlt
ZSgpIGNvbnN0Citkb3VibGUgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcnVubmluZykKICAgICAgICAgbV9sYXN0VGltZSA9IG5vdygpOwotICAgIGZsb2F0
IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KCgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1l
KSAqIG1fcmF0ZSkgKyBtX29mZnNldCk7Ci0gICAgcmV0dXJuIHRpbWU7CisgICAgcmV0dXJuICgo
bV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsKIH0KIAotdm9p
ZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUpCit2b2lkIENsb2NrR2VuZXJp
Yzo6c2V0UGxheVJhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgbV9vZmZzZXQgPSBub3coKTsKICAg
ICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKQEAgLTgzLDQgKzgxLDMgQEAgZG91
YmxlIENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpjdXJyZW50
VGltZSgpOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IGQ1
M2ExYmMyZGM0ZDNjNTVmOGUwZDYzOTljZjY1OGI5YjI2YWQ2MDIuLjNkYzBlN2RiNTNmZGEzYjk5
NWZjZmZlMTgwZTFhZGJlNDY3YzQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2Vu
ZXJpYy5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogICAgIENsb2NrR2VuZXJpYygpOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0gICAg
dmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRD
dXJyZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOwotICAgIHZpcnR1YWwg
ZmxvYXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhdGU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGxheVJhdGUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbm93KCkgY29uc3Q7CiAKICAgICBib29sIG1fcnVubmluZzsKLSAgICBmbG9hdCBtX3JhdGU7
CisgICAgZG91YmxlIG1fcmF0ZTsKICAgICBkb3VibGUgbV9vZmZzZXQ7CiAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fbGFzdFRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODljNWJhNWEz
M2I5YTlkYWI3ZWYyODY4OTRmOTM5NzMzNTQzZTg0MS4uMDQ3MTA1ZDUzYjdmMDE1ZGMzMzE4ZTRl
OGQxNmNmZjllMDhlODJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9u
RG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50
VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkg
eyB9CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNlZWtEb3VibGUoZG91YmxlKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVEb3VibGUo
ZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lRG91YmxlKGRvdWJsZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChi
b29sKSB7IH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpFbXB0eTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQogCi0gICAg
dmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCBNZWRp
YVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmNhbmNlbEtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBrZXlTeQogfQogI2VuZGlmCiAKLWZsb2F0IE1lZGlhUGxheWVyOjpkdXJh
dGlvbigpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmR1
cmF0aW9uRG91YmxlKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25z
dAorZG91YmxlIE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPnN0YXJ0VGltZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZURv
dWJsZSgpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6OmluaXRpYWxUaW1lKCkgY29uc3QKQEAg
LTUyOSwxNCArNTI5LDE0IEBAIGRvdWJsZSBNZWRpYVBsYXllcjo6aW5pdGlhbFRpbWUoKSBjb25z
dAogICAgIHJldHVybiBtX3ByaXZhdGUtPmluaXRpYWxUaW1lKCk7CiB9CiAKLWZsb2F0IE1lZGlh
UGxheWVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmN1cnJlbnRU
aW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jdXJyZW50VGltZSgpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmN1cnJlbnRUaW1lRG91YmxlKCk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXI6OnNlZWsoZmxvYXQgdGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoZG91YmxlIHRp
bWUpCiB7Ci0gICAgbV9wcml2YXRlLT5zZWVrKHRpbWUpOworICAgIG1fcHJpdmF0ZS0+c2Vla0Rv
dWJsZSh0aW1lKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6cGF1c2VkKCkgY29uc3QKQEAgLTYw
OSwxNyArNjA5LDE3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZWFkeVN0YXRlKCk7CiB9CiAKLWZsb2F0
IE1lZGlhUGxheWVyOjp2b2x1bWUoKSBjb25zdAorZG91YmxlIE1lZGlhUGxheWVyOjp2b2x1bWUo
KSBjb25zdAogewogICAgIHJldHVybiBtX3ZvbHVtZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6
c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZvbHVtZShkb3Vi
bGUgdm9sdW1lKQogewogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCiAgICAgaWYgKG1fcHJpdmF0
ZS0+c3VwcG9ydHNNdXRpbmcoKSB8fCAhbV9tdXRlZCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRW
b2x1bWUodm9sdW1lKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRWb2x1bWVEb3VibGUodm9sdW1l
KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6bXV0ZWQoKSBjb25zdApAQCAtNjQ3LDE1ICs2NDcs
MTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpyYXRl
KCkgY29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6cmF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcmF0ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShmbG9hdCByYXRlKQordm9p
ZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBtX3JhdGUgPSByYXRl
OwotICAgIG1fcHJpdmF0ZS0+c2V0UmF0ZShyYXRlKTsgICAKKyAgICBtX3ByaXZhdGUtPnNldFJh
dGVEb3VibGUocmF0ZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnByZXNlcnZlc1BpdGNoKCkg
Y29uc3QKQEAgLTY3OSw5ICs2NzksOSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyOjpzZWVrYWJsZSgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCitkb3VibGUgTWVkaWFQbGF5ZXI6
Om1heFRpbWVTZWVrYWJsZSgpCiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWth
YmxlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlRG91YmxlKCk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcygpCkBAIC04NTQsOSArODU0
LDkgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXI6Om1vdmllTG9hZFR5
cGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPm1vdmllTG9hZFR5cGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCB0aW1lVmFsdWUp
IGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShkb3VibGUg
dGltZVZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZSh0aW1lVmFsdWUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZURvdWJsZSh0aW1lVmFsdWUpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6Om1heGlt
dW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdApAQCAtOTUyLDcgKzk1Miw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgbV9tZWRpYVBsYXll
ckNsaWVudC0+bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllcjo6dm9sdW1lQ2hhbmdlZChmbG9hdCBuZXdWb2x1bWUpCit2b2lkIE1lZGlhUGxh
eWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7CiAgICAgbV92b2x1bWUgPSBu
ZXdWb2x1bWU7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4NmVhNDAyNzhjMjQ1NmRm
ZDM5MWQ1NDRkZmRjMTI4NTQ1ZTczZWY3Li41ZDY1ZTk4OTVhMjhmMGE5NGUxMTIzMDM5MTdhMjZl
NThmZTYwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTI5OCwyOSArMjk4LDI5IEBAIHB1YmxpYzoKICAgICBib29sIHBhdXNlZCgp
IGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGZsb2F0IGlu
dmFsaWRUaW1lKCkgeyByZXR1cm4gLTEuMGY7fQotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7
Ci0gICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2b2lkIHNlZWsoZmxvYXQgdGlt
ZSk7CisgICAgc3RhdGljIGRvdWJsZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIC0xLjA7fQorICAg
IGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
OworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSk7CiAKLSAgICBmbG9hdCBzdGFydFRpbWUoKSBj
b25zdDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CiAKICAgICBkb3VibGUgaW5pdGlh
bFRpbWUoKSBjb25zdDsKIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJh
dGUoZmxvYXQpOworICAgIGRvdWJsZSByYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSYXRlKGRv
dWJsZSk7CiAKICAgICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7ICAgIAogICAgIHZvaWQg
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwotICAgIGZs
b2F0IG1heFRpbWVTZWVrYWJsZSgpOworICAgIGRvdWJsZSBtYXhUaW1lU2Vla2FibGUoKTsKIAog
ICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25z
dDsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSk7CiAKICAgICBib29sIG11dGVkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNdXRlZChib29sKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7Ci0gICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNo
YW5nZWQoZG91YmxlKTsKICAgICB2b2lkIG11dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgdGlt
ZUNoYW5nZWQoKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CkBAIC00MTQsNyArNDE0LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Q7CiAKLSAg
ICBmbG9hdCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OworICAgIGRvdWJsZSBt
ZWRpYVRpbWVGb3JUaW1lVmFsdWUoZG91YmxlKSBjb25zdDsKIAogICAgIGRvdWJsZSBtYXhpbXVt
RHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Q7CiAKQEAgLTQ4NSw4ICs0ODUsOCBAQCBw
cml2YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIFByZWxvYWQgbV9wcmVsb2FkOwogICAg
IGJvb2wgbV92aXNpYmxlOwotICAgIGZsb2F0IG1fcmF0ZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsK
KyAgICBkb3VibGUgbV9yYXRlOworICAgIGRvdWJsZSBtX3ZvbHVtZTsKICAgICBib29sIG1fbXV0
ZWQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlc1BpdGNoOwogICAgIGJvb2wgbV9wcml2YXRlQnJvd3Np
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCmluZGV4IGI3OTcwOWQ1Mzc1ZDU5MzE1YzY2OWU3MmQyMzQ1ZDNmNDIwNDhm
YmIuLmI1YTk5MTI3NmQ3M2QwODdiM2ZiNzA2NWUzY2RmMDNmZDkxZWM3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CkBAIC03MCwyMiArNzAsMzEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIGR1cmF0aW9uRG91YmxlKCkgY29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsg
fQorCisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGN1
cnJlbnRUaW1lKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0IHRpbWUpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1lKSB7IHNlZWsodGltZSk7IH0K
IAotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNlZWsoZmxvYXQgdGltZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBkb3VibGUgc3RhcnRUaW1lRG91YmxlKCkgY29uc3QgeyByZXR1
cm4gc3RhcnRUaW1lKCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxUaW1lKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoZmxvYXQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFJhdGVEb3VibGUoZG91YmxlIHJhdGUpIHsgc2V0UmF0ZShyYXRlKTsgfQorCiAgICAgdmlydHVh
bCB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJsZSB2b2x1bWUpIHsgcmV0dXJuIHNldFZvbHVtZSh2b2x1
bWUpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSB7IH0KQEAgLTk3LDcg
KzEwNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vla2FibGUoKSA/IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgwLCBtYXhUaW1lU2Vla2FibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsg
fQotICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRp
bWVTZWVrYWJsZSgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0ID0gMDsKQEAgLTE0OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGltZSB2YWx1
ZSBpbiB0aGUgbW92aWUncyB0aW1lIHNjYWxlLiBJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBvdmVy
cmlkZSB0aGlzIGlmIHRoZSBtZWRpYQogICAgIC8vIGVuZ2luZSB1c2VzIHJhdGlvbmFsIG51bWJl
cnMgdG8gcmVwcmVzZW50IG1lZGlhIHRpbWUuCiAgICAgdmlydHVhbCBmbG9hdCBtZWRpYVRpbWVG
b3JUaW1lVmFsdWUoZmxvYXQgdGltZVZhbHVlKSBjb25zdCB7IHJldHVybiB0aW1lVmFsdWU7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWVEb3VibGUoZG91YmxlIHRp
bWVWYWx1ZSkgY29uc3QgeyByZXR1cm4gdGltZVZhbHVlOyB9CiAKICAgICAvLyBPdmVyaWRlIHRo
aXMgaWYgaXQgaXMgc2FmZSBmb3IgSFRNTE1lZGlhRWxlbWVudCB0byBjYWNoZSBtb3ZpZSB0aW1l
IGFuZCByZXBvcnQKICAgICAvLyAnY3VycmVudFRpbWUnIGFzIFtjYWNoZWQgdGltZSArIGVsYXBz
ZWQgd2FsbCB0aW1lXS4gUmV0dXJucyB0aGUgbWF4aW11bSB3YWxsIHRpbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAKaW5kZXggZmU0OTJmMjUw
MmY0YjcwOGFmODUxYzNlZDc1YTlkMzNmNDJmNWQ1MS4uNGQyZThkZjE4NDY1NzAzOTg1NTFkNjVj
ODVlOGIxMjc0MDFhYjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtQ2xvY2tDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtQ2xvY2tDQS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
Q2xvY2tDQS5oIgogCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0NvcmVBdWRpb0Nsb2NrLmg+CiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFy
ZHdhcmUuaD4KIApAQCAtNjEsNyArNjAsNyBAQCBQbGF0Zm9ybUNsb2NrQ0E6On5QbGF0Zm9ybUNs
b2NrQ0EoKQogICAgIENBQ2xvY2tEaXNwb3NlKG1fY2xvY2spOwogfQogCi12b2lkIFBsYXRmb3Jt
Q2xvY2tDQTo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSkKK3ZvaWQgUGxhdGZvcm1DbG9ja0NB
OjpzZXRDdXJyZW50VGltZShkb3VibGUgdGltZSkKIHsKICAgICBpZiAobV9ydW5uaW5nKQogICAg
ICAgICBDQUNsb2NrU3RvcChtX2Nsb2NrKTsKQEAgLTczLDcgKzcyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNsb2NrQ0E6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCiAgICAgICAgIENBQ2xvY2tTdGFy
dChtX2Nsb2NrKTsKIH0KIAotZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpjdXJyZW50VGltZSgpIGNv
bnN0Citkb3VibGUgUGxhdGZvcm1DbG9ja0NBOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAg
Q0FDbG9ja1RpbWUgY2FUaW1lOwogCkBAIC04MSwyNCArODAsMjQgQEAgZmxvYXQgUGxhdGZvcm1D
bG9ja0NBOjpjdXJyZW50VGltZSgpIGNvbnN0CiAgICAgLy8gd2hhdCBpcyB0aGUgc3RhcnQgdGlt
ZSwgaS5lLiB3aGF0IHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB3aGVuIHN0YXJ0ZWQuCiAgICAg
aWYgKG1fcnVubmluZykgewogICAgICAgICBpZiAoQ0FDbG9ja0dldEN1cnJlbnRUaW1lKG1fY2xv
Y2ssIGtDQUNsb2NrVGltZUZvcm1hdF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAgICAg
ICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNhVGltZS50aW1lLnNlY29uZHMp
OworICAgICAgICAgICAgcmV0dXJuIGNhVGltZS50aW1lLnNlY29uZHM7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKENBQ2xvY2tHZXRTdGFydFRpbWUobV9jbG9jaywga0NBQ2xvY2tUaW1lRm9y
bWF0X1NlY29uZHMsICZjYVRpbWUpID09IG5vRXJyKQotICAgICAgICAgICAgcmV0dXJuIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoY2FUaW1lLnRpbWUuc2Vjb25kcyk7CisgICAgICAgICAgICByZXR1
cm4gY2FUaW1lLnRpbWUuc2Vjb25kczsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DbG9ja0NBOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQordm9pZCBQbGF0Zm9ybUNs
b2NrQ0E6OnNldFBsYXlSYXRlKGRvdWJsZSByYXRlKQogewogICAgIENBQ2xvY2tTZXRQbGF5UmF0
ZShtX2Nsb2NrLCByYXRlKTsKIH0KIAotZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNs
b2NrQ0E6OnBsYXlSYXRlKCkgY29uc3QKK2RvdWJsZSBQbGF0Zm9ybUNsb2NrQ0E6OlBsYXRmb3Jt
Q2xvY2tDQTo6cGxheVJhdGUoKSBjb25zdAogewogICAgIGRvdWJsZSByYXRlID0gMDsKICAgICBp
ZiAoQ0FDbG9ja0dldFBsYXlSYXRlKG1fY2xvY2ssICZyYXRlKSA9PSBub0VycikKLSAgICAgICAg
cmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocmF0ZSk7CisgICAgICAgIHJldHVybiByYXRl
OwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1DbG9ja0NBLmgKaW5kZXggYjEwMWQ3YTk1ZDIzNjUzMWE4NmEzN2ExNmQ5NjI1MDJhMjRl
NjNhZS4uMjYzM2RkNDRlZDI2YzA1NDIzOTEzMmVkZDc4ZGE3NmEyM2Y0MjY0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaApAQCAtNDAsMTEgKzQw
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNsb2NrQ0EoKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOwotICAgIHZpcnR1YWwg
ZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRp
bWUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHBs
YXlSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSk7Cisg
ICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmgKaW5kZXggZTAzNDkxNTMwOTZiNDMyZWMyYzYwMzAx
MmZkN2FhY2RmZjM5ZGU5OC4uMGQ1ZjYzZDc4MDRhN2FkYTNmYWMyNTA2MmQ0NzEwZmE3MmE2NTBi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tD
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaApA
QCAtNDQsMTggKzQ0LDE4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXpl
V2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShmbG9hdCk7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUo
ZmxvYXQpOwotICAgIHZpcnR1YWwgZmxvYXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3Jh
dGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZG91YmxlKTsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBwbGF5UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CiAKICAgICBSZXRhaW5Q
dHI8Q01UaW1lYmFzZVJlZj4gbV90aW1lYmFzZTsKLSAgICBmbG9hdCBtX3JhdGU7CisgICAgZG91
YmxlIG1fcmF0ZTsKICAgICBib29sIG1fcnVubmluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCmluZGV4IGU5NTAxYTA1YzBiZjdiNGY0
NzZiYmYyY2FhZmFhYzRiNTFmZDUwOTguLjgxZmI2ZmQ4ZTg2NGMwM2ExNjM2MzYyZmM3ZmRmYzEx
ZjA4OWE2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bUNsb2NrQ00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDTS5tbQpAQCAtMjksNyArMjksNiBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybUNsb2NrQ00uaCIK
IAotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgog
I2ltcG9ydCA8Q29yZU1lZGlhL0NNQXVkaW9EZXZpY2VDbG9jay5oPgogCkBAIC03MywxOSArNzIs
MTkgQEAgdm9pZCBQbGF0Zm9ybUNsb2NrQ006OmluaXRpYWxpemVXaXRoVGltaW5nU291cmNlKENN
Q2xvY2tSZWYgY2xvY2spCiAgICAgbV90aW1lYmFzZS5hZG9wdENGKHJhd1RpbWViYXNlUHRyKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCit2
b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c2V0Q3VycmVudFRpbWUoZG91YmxlIHRpbWUpCiB7CiAgICAg
Q01UaW1lIGNtVGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCBEZWZhdWx0VGltZVNj
YWxlKTsKICAgICBDTVRpbWViYXNlU2V0VGltZShtX3RpbWViYXNlLmdldCgpLCBjbVRpbWUpOwog
fQogCi1mbG9hdCBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBQ
bGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBDTVRpbWUgY21UaW1l
ID0gQ01UaW1lYmFzZUdldFRpbWUobV90aW1lYmFzZS5nZXQoKSk7Ci0gICAgcmV0dXJuIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhjbVRpbWUpKTsKKyAgICByZXR1cm4g
Q01UaW1lR2V0U2Vjb25kcyhjbVRpbWUpOwogfQogCi12b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c2V0
UGxheVJhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZShk
b3VibGUgcmF0ZSkKIHsKICAgICBpZiAobV9yYXRlID09IHJhdGUpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195845</attachid>
            <date>2013-03-30 00:10:31 -0700</date>
            <delta_ts>2013-04-10 08:16:40 -0700</delta_ts>
            <desc>Fix unused parameter error</desc>
            <filename>bug-113615-20130330001027.patch</filename>
            <type>text/plain</type>
            <size>71245</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWUzNDJkODgwZGEzNWRm
YjNiNzBjYWY2ZmQ1OGJkNjBmMTU3NGQ1Zi4uYjcxOTBhMDY3MWM1ZWEyY2M3MzIyMTExYTZmZTYw
MjczZDA3MzMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAzLTI5ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBhbGwg
ZmxvYXQgYXR0cmlidXRlcyBpbiBIVE1MTWVkaWFFbGVtZW50IHRvIGRvdWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gUHJpbWFy
eSBiZWhhdmlvciBkb2Vzbid0IGNoYW5nZS4gSnVzdCB0aW1lLCBwbGF5YmFja1JhdGUsIGFuZCB2
b2x1bWUgcHJlY2lzaW9uLiBBbGwgZXhpc3RpbmcgbWVkaWEgTGF5b3V0VGVzdHMgc3RpbGwgcGFz
cy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9N
ZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgICogaHRtbC9UaW1l
UmFuZ2VzLmlkbDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzR3RrLmNwcDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xv
Y2tDQS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tOgorCiAyMDEzLTAzLTI5ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxleGl0ZW1zIG5vIGxvbmdlciBkZWZhdWx0IG1p
bi13aWR0aCB0byBtaW4tY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOWY5MDA2ZjdlZjQxYWQxZjIyYzA2NjgwYjA4N2Q1YTgxOWNiOWNmMy4uZWQ4
OGE3OWY4NTk0YjhkMTE5NDRmOWFjMjA2MTM4OTJlZGE2MjUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgSFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW0KICAgICAsIG1fbGFzdFNlZWtUaW1lKDApCiAgICAgLCBtX3ByZXZpb3VzUHJv
Z3Jlc3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sYXN0VGlt
ZVVwZGF0ZUV2ZW50V2FsbFRpbWUoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmll
VGltZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0
ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9s
b2FkU3RhdGUoV2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHN0YXRp
YyBib29sIGV2ZW50VGltZUN1ZUNvbXBhcmUoY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgVGV4dFRy
YWNrQ3VlKj4mIGEsCiB9CiAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKIApAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAvLyAzIC0gTGV0IGxhc3QgdGltZSBiZSB0aGUg
Y3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBhdCB0aGUgdGltZSB0aGlzCiAgICAgLy8gYWxnb3Jp
dGhtIHdhcyBsYXN0IHJ1biBmb3IgdGhpcyBtZWRpYSBlbGVtZW50LCBpZiB0aGlzIGlzIG5vdCB0
aGUgZmlyc3QKICAgICAvLyB0aW1lIGl0IGhhcyBydW4uCi0gICAgZmxvYXQgbGFzdFRpbWUgPSBt
X2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lOworICAgIGRvdWJsZSBsYXN0VGltZSA9IG1fbGFzdFRl
eHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICAvLyA0IC0gSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sg
cG9zaXRpb24gaGFzLCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoaXMKICAgICAvLyBhbGdvcml0aG0g
d2FzIHJ1biwgb25seSBjaGFuZ2VkIHRocm91Z2ggaXRzIHVzdWFsIG1vbm90b25pYyBpbmNyZWFz
ZQpAQCAtMTEzMCw4ICsxMTMwLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3Rp
dmVUZXh0VHJhY2tDdWVzKGZsb2F0IG1vdmllVGltZSkKICAgICAgICAgICAgIG1fY3VlVHJlZS5h
bGxPdmVybGFwcyhtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwobGFzdFRpbWUsIG1vdmllVGltZSkp
OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG90ZW50aWFsbHlTa2lwcGVkQ3Vl
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZmxvYXQgY3VlU3RhcnRUaW1lID0gcG90ZW50
aWFsbHlTa2lwcGVkQ3Vlc1tpXS5sb3coKTsKLSAgICAgICAgICAgIGZsb2F0IGN1ZUVuZFRpbWUg
PSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsKKyAgICAgICAgICAgIGRvdWJsZSBj
dWVTdGFydFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmxvdygpOworICAgICAgICAg
ICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhpZ2goKTsK
IAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4gbWlzc2Vk
IHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KICAgICAgICAgICAgIGlmIChjdWVTdGFydFRpbWUg
PiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92aWVUaW1l
KQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2
ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgfQogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChmbG9hdCB0aW1lRGVsdGEpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEpOwogICAgIHNldEN1cnJlbnRU
aW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5UaW1lU2Vla2FibGUoKSksIElH
Tk9SRV9FWENFUFRJT04pOwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXR1cm5Ub1JlYWx0aW1lKCkKICAgICBzZXRDdXJyZW50VGltZShtYXhUaW1lU2Vla2Fi
bGUoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRk
UGxheWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKCVmLCAlZikiLCBzdGFydCwg
ZW5kKTsKICAgICBpZiAoIW1fcGxheWVkVGltZVJhbmdlcykKQEAgLTIwNTEsNyArMjA1MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSgpCiAgICAgbV9wbGF5ZXItPnBy
ZXBhcmVUb1BsYXkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGRvdWJs
ZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKCVmKSIsIHRpbWUpOwogCkBAIC0yMDY5LDcgKzIwNjksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBiZWZvcmUgc2V0dGluZyBtX3NlZWtpbmcsIG1fbGFz
dFNlZWtUaW1lIGlzIHJldHVybmVkIG9uY2UgaXQgaXMgc2V0LgogICAgIHJlZnJlc2hDYWNoZWRU
aW1lKCk7Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0g
Y3VycmVudFRpbWUoKTsKIAogICAgIC8vIDIgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURM
IGF0dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0
aG0gaXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ug
b2YgdGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKQEAgLTIw
ODUsNyArMjA4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VlayhmbG9hdCB0aW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICB0aW1lID0gbWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAg
ICAgLy8gNiAtIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBl
YXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVh
ZC4KLSAgICBmbG9hdCBlYXJsaWVzdFRpbWUgPSBtX3BsYXllci0+c3RhcnRUaW1lKCk7CisgICAg
ZG91YmxlIGVhcmxpZXN0VGltZSA9IG1fcGxheWVyLT5zdGFydFRpbWUoKTsKICAgICB0aW1lID0g
bWF4KHRpbWUsIGVhcmxpZXN0VGltZSk7CiAKICAgICAvLyBBc2sgdGhlIG1lZGlhIGVuZ2luZSBm
b3IgdGhlIHRpbWUgdmFsdWUgaW4gdGhlIG1vdmllJ3MgdGltZSBzY2FsZSBiZWZvcmUgY29tcGFy
aW5nIHdpdGggY3VycmVudCB0aW1lLiBUaGlzCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
Ly8gbm90IGdlbmVyYXRlIGEgdGltZWNoYW5nZWQgY2FsbGJhY2suIFRoaXMgbWVhbnMgbV9zZWVr
aW5nIHdpbGwgbmV2ZXIgYmUgY2xlYXJlZCBhbmQgd2Ugd2lsbCBuZXZlciAKICAgICAvLyBmaXJl
IGEgJ3NlZWtlZCcgZXZlbnQuCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGZsb2F0IG1lZGlhVGlt
ZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CisgICAgZG91YmxlIG1l
ZGlhVGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CiAgICAgaWYg
KHRpbWUgIT0gbWVkaWFUaW1lKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZWVrKCVmKSAtIG1lZGlhIHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgJWYiLCB0aW1lLCBtZWRp
YVRpbWUpOwogI2VuZGlmCkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKCkKIH0KIAogLy8gcGxheWJhY2sgc3RhdGUKLWZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVkaWFF
bGVtZW50OjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5J
TkdTCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5DYWNoZWREZWx0YUZvcldhcm5pbmcgPSAw
LjAxOwpAQCAtMjIxNyw3ICsyMjE3LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVu
dFRpbWUoKSBjb25zdAogCiAgICAgaWYgKG1fY2FjaGVkVGltZSAhPSBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKSAmJiBtX3BhdXNlZCkgewogI2lmIExPR19DQUNIRURfVElNRV9XQVJOSU5HUwot
ICAgICAgICBmbG9hdCBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxheWVyLT5jdXJyZW50VGlt
ZSgpOworICAgICAgICBkb3VibGUgZGVsdGEgPSBtX2NhY2hlZFRpbWUgLSBtX3BsYXllci0+Y3Vy
cmVudFRpbWUoKTsKICAgICAgICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFGb3JXYXJuaW5n
KQogICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUg
LSBXQVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdo
ZW4gcGF1c2VkIiwgZGVsdGEpOwogI2VuZGlmCkBAIC0yMjMzLDEwICsyMjMzLDEwIEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgICAgICAvLyBOb3Qg
dG9vIHNvb24sIHVzZSB0aGUgY2FjaGVkIHRpbWUgb25seSBpZiBpdCBoYXNuJ3QgZXhwaXJlZC4K
ICAgICAgICAgaWYgKHdhbGxDbG9ja0RlbHRhIDwgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlh
VGltZSkgewotICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRDYWNoZVRpbWUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9jYWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEp
KTsKKyAgICAgICAgICAgIGRvdWJsZSBhZGp1c3RlZENhY2hlVGltZSA9IG1fY2FjaGVkVGltZSAr
IChtX3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKTsKIAogI2lmIExPR19DQUNIRURfVElN
RV9XQVJOSU5HUwotICAgICAgICAgICAgZmxvYXQgZGVsdGEgPSBhZGp1c3RlZENhY2hlVGltZSAt
IG1fcGxheWVyLT5jdXJyZW50VGltZSgpOworICAgICAgICAgICAgZG91YmxlIGRlbHRhID0gYWRq
dXN0ZWRDYWNoZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlm
IChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKICAgICAgICAgICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0
aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVsdGEp
OwogI2VuZGlmCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50Ojpj
dXJyZW50VGltZSgpIGNvbnN0CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAgICAgaWYg
KG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUgJiYgbm93ID4gbV9taW5pbXVtV2FsbENs
b2NrVGltZVRvQ2FjaGVNZWRpYVRpbWUgJiYgbV9jYWNoZWRUaW1lICE9IE1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSgpKSB7CiAgICAgICAgIGRvdWJsZSB3YWxsQ2xvY2tEZWx0YSA9IG5vdyAtIG1f
Y2FjaGVkVGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7Ci0gICAgICAgIGZsb2F0IGRlbHRhID0gbV9j
YWNoZWRUaW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpIC0gbV9wbGF5ZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IG1fY2FjaGVkVGltZSArICht
X3BsYXliYWNrUmF0ZSAqIHdhbGxDbG9ja0RlbHRhKSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgp
OwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIGNh
Y2hlZCB0aW1lIHdhcyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJl
ZCIsIGRlbHRhKTsKICAgICB9CiAjZW5kaWYKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIGZsb2F0IEhU
TUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRU
aW1lOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50
VGltZShkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yMjY2LDcg
KzIyNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRp
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNlZWsodGltZSwgZWMpOwogfQogCi1mbG9hdCBI
VE1MTWVkaWFFbGVtZW50OjpzdGFydFRpbWUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMjg0LDEyICsyMjg0LDEyIEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50Ojpp
bml0aWFsVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLT5pbml0aWFsVGltZSgpOwog
fQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0Citkb3VibGUgSFRN
TE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewogICAgIGlmIChtX3BsYXllciAmJiBt
X3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5k
dXJhdGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFO
KCk7CisgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgpIGNvbnN0CkBAIC0yMjk3LDEyICsyMjk3
LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKCkgY29uc3QKICAgICByZXR1cm4g
bV9wYXVzZWQ7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1Jh
dGUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQog
ewogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgIT0gcmF0ZSkgewogICAgICAgICBtX2Rl
ZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtMjMxMCwxMiArMjMxMCwxMiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICB9
CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Citkb3Vi
bGUgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tS
YXRlKGZsb2F0IHJhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShk
b3VibGUgcmF0ZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5
YmFja1JhdGUoJWYpIiwgcmF0ZSk7CiAgICAgCkBAIC0yMzMxLDcgKzIzMzEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiB7Ci0gICAgZmxvYXQgZWZmZWN0aXZl
UmF0ZSA9IG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPnBsYXliYWNrUmF0
ZSgpIDogbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIGVmZmVjdGl2ZVJhdGUgPSBtX21lZGlh
Q29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5wbGF5YmFja1JhdGUoKSA6IG1fcGxheWJh
Y2tSYXRlOwogICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3Bs
YXllci0+cmF0ZSgpICE9IGVmZmVjdGl2ZVJhdGUpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRl
KGVmZmVjdGl2ZVJhdGUpOwogfQpAQCAtMjYyNywxMiArMjYyNywxMiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldENvbnRyb2xzKGJvb2wgYikKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGNv
bnRyb2xzQXR0ciwgYik7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSgpIGNv
bnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6dm9sdW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV92b2x1bWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGZsb2F0
IHZvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVt
ZShkb3VibGUgdm9sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoJWYpIiwgdm9sKTsKIApAQCAtMjc2MSw3ICsyNzYxLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBl
cmlvZGljRXZlbnQpCiAKICAgICAvLyBTb21lIG1lZGlhIGVuZ2luZXMgbWFrZSBtdWx0aXBsZSAi
dGltZSBjaGFuZ2VkIiBjYWxsYmFja3MgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHdlIG9ubHkgd2Fu
dCBvbmUKICAgICAvLyBldmVudCBhdCBhIGdpdmVuIHRpbWUgc28gZmlsdGVyIGhlcmUKLSAgICBm
bG9hdCBtb3ZpZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBtb3ZpZVRpbWUgPSBj
dXJyZW50VGltZSgpOwogICAgIGlmIChtb3ZpZVRpbWUgIT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50
TW92aWVUaW1lKSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnRpbWV1cGRh
dGVFdmVudCk7CiAgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lID0gbm93OwpA
QCAtMjc3NCwyMCArMjc3NCwyMCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXkoKSBj
b25zdAogICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhB
VkVfTUVUQURBVEE7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQo
KSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAog
ewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGZsb2F0IGR1cmF0
aW9uID0gbV9wbGF5ZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9wbGF5
ZXItPmR1cmF0aW9uKCk7CiAKICAgICBpZiAoIWR1cmF0aW9uIHx8IHN0ZDo6aXNpbmYoZHVyYXRp
b24pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZsb2F0IGJ1ZmZlcmVkID0gMDsKKyAgICBk
b3VibGUgYnVmZmVyZWQgPSAwOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0g
bV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVS
YW5nZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZmxvYXQgc3RhcnQgPSB0aW1lUmFuZ2Vz
LT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICAgICAgZmxvYXQgZW5kID0gdGltZVJh
bmdlcy0+ZW5kKGksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgc3RhcnQgPSB0
aW1lUmFuZ2VzLT5zdGFydChpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgZG91YmxlIGVu
ZCA9IHRpbWVSYW5nZXMtPmVuZChpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgYnVmZmVy
ZWQgKz0gZW5kIC0gc3RhcnQ7CiAgICAgfQogICAgIHJldHVybiBidWZmZXJlZCAvIGR1cmF0aW9u
OwpAQCAtMzQ1Nyw4ICszNDU3LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAvLyBtb3ZpZSB0aW1lLgogICAgIHNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKIAotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgZmxvYXQgZHVyID0gZHVyYXRpb24oKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVu
dFRpbWUoKTsKKyAgICBkb3VibGUgZHVyID0gZHVyYXRpb24oKTsKICAgICAKICAgICAvLyBXaGVu
IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgbWVk
aWEgcmVzb3VyY2Ugd2hlbiB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gcGxheWJhY2sgaXMgZm9y
d2FyZHMsIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6CkBAIC0z
NTAwLDcgKzM1MDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1l
Q2hhbmdlZChNZWRpYVBsYXllciopCiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKSB7Ci0gICAgICAgIGZsb2F0IHZvbCA9IG1fcGxh
eWVyLT52b2x1bWUoKTsKKyAgICAgICAgZG91YmxlIHZvbCA9IG1fcGxheWVyLT52b2x1bWUoKTsK
ICAgICAgICAgaWYgKHZvbCAhPSBtX3ZvbHVtZSkgewogICAgICAgICAgICAgbV92b2x1bWUgPSB2
b2w7CiAgICAgICAgICAgICB1cGRhdGVWb2x1bWUoKTsKQEAgLTM1MjksOCArMzUyOSw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5
ZXIqIHBsYXllcikKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5n
ZUV2ZW50KTsKICAgICBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChwbGF5ZXIpOwog
Ci0gICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlv
bigpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmIChub3cgPiBkdXIpCiAgICAgICAgIHNlZWsoZHVyLCBJR05PUkVf
RVhDRVBUSU9OKTsKIApAQCAtMzY4NSw3ICszNjg1LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllZCgpCiB7CiAgICAgaWYgKG1fcGxheWluZykgewot
ICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHRpbWUg
PSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+IG1fbGFzdFNlZWtUaW1lKQogICAg
ICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1RpbWUsIHRpbWUpOwogICAgIH0KQEAg
LTM3MTcsNyArMzcxNyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y291bGRQbGF5SWZFbm91
Z2hEYXRhKCkgY29uc3QKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKCkg
Y29uc3QKIHsKLSAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXIgPSBk
dXJhdGlvbigpOwogICAgIGlmICghbV9wbGF5ZXIgfHwgc3RkOjppc25hbihkdXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3MzEsNyArMzczMSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAgICAgLy8gYW5kIHRoZSBjdXJyZW50IHBsYXli
YWNrIHBvc2l0aW9uIGlzIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJlc291cmNlIGFuZCB0aGUgZGly
ZWN0aW9uCiAgICAgLy8gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMsIEVpdGhlciB0aGUgbWVkaWEg
ZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgbG9vcCBhdHRyaWJ1dGUgc3BlY2lmaWVkLAogICAgIC8v
IG9yIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KLSAg
ICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGlt
ZSgpOwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCiAgICAgICAgIHJldHVybiBkdXIgPiAw
ICYmIG5vdyA+PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNvbnRyb2xsZXIpOwogCkBAIC0z
NzYwLDEyICszNzYwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlcklu
dGVyYWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZsb2F0IEhUTUxNZWRp
YUVsZW1lbnQ6Om1pblRpbWVTZWVrYWJsZSgpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6bWluVGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKK2RvdWJsZSBIVE1MTWVk
aWFFbGVtZW50OjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXll
ciA/IG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSA6IDA7CiB9CkBAIC0zNzc4LDcgKzM3Nzgs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgLy8gQXZvaWQg
cmVjdXJzaW9uIHdoZW4gdGhlIHBsYXllciByZXBvcnRzIHZvbHVtZSBjaGFuZ2VzLgogICAgIGlm
ICghcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSkgewogICAgICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBmbG9hdCB2b2x1bWVNdWx0aXBsaWVyID0g
cGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOworICAgICAgICBkb3VibGUgdm9sdW1lTXVs
dGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKICAgICAgICAgYm9vbCBz
aG91bGRNdXRlID0gbV9tdXRlZDsKIAogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpIHsK
QEAgLTM4NDMsNyArMzg0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0
YXRlKCkKIAogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7CiAgICAgICAg
IG1fcGxheWluZyA9IGZhbHNlOwotICAgICAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsK
KyAgICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgICAgICBpZiAodGltZSA+
IG1fbGFzdFNlZWtUaW1lKQogICAgICAgICAgICAgYWRkUGxheWVkUmFuZ2UobV9sYXN0U2Vla1Rp
bWUsIHRpbWUpOwogCkBAIC00Njg3LDcgKzQ2ODcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzQmxvY2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3QKICAgICAvLyBvciBpZiBpdHMgbWVk
aWEgY29udHJvbGxlciBwb3NpdGlvbiBpcyBlaXRoZXIgYmVmb3JlIHRoZSBtZWRpYSByZXNvdXJj
ZSdzIGVhcmxpZXN0IHBvc3NpYmxlIAogICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBN
ZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSBy
ZXNvdXJjZSAKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxp
bmUuCi0gICAgZmxvYXQgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBtX21lZGlhQ29udHJvbGxl
ci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbWVkaWFDb250cm9sbGVyUG9zaXRpb24gPSBt
X21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKICAgICBpZiAobWVkaWFDb250cm9sbGVy
UG9zaXRpb24gPCBzdGFydFRpbWUoKSB8fCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA+IHN0YXJ0
VGltZSgpICsgZHVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ2OTcsNyAr
NDY5Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNCbG9ja2VkT25NZWRpYUNvbnRyb2xs
ZXIoKSBjb25zdAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVS
SSgpCiB7CiAgICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJl
bnRTcmMpOwotICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1
cmF0aW9uKCk7CiAgICAgCiAgICAgZG91YmxlIHN0YXJ0ID0gZnJhZ21lbnRQYXJzZXIuc3RhcnRU
aW1lKCk7CiAgICAgaWYgKHN0YXJ0ICE9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmludmFsaWRU
aW1lVmFsdWUoKSAmJiBzdGFydCA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggMTFkZTZjNjFmNGVlMDJlZjQxZDY4Yzc1NzM1ZjJiMWNiODE4ZGViOS4uMDA0
N2VjMzE1NjllN2QxNTkzMzllY2MxNzM3NDdkOGNkNDAwYTU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJld2luZChmbG9hdCB0aW1lRGVsdGEp
OworICAgIHZvaWQgcmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpOwogICAgIHZvaWQgcmV0dXJuVG9S
ZWFsdGltZSgpOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0Vs
ZW1lbnQKQEAgLTE0NCwxNiArMTQ0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBj
b25zdDsKIAogLy8gcGxheWJhY2sgc3RhdGUKLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0OwotICAg
IGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0OwotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7Ci0gICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7Ci0gICAg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxv
YXQpOworICAgIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSk7CisgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CiAgICAgdm9pZCB1cGRh
dGVQbGF5YmFja1JhdGUoKTsKICAgICBib29sIHdlYmtpdFByZXNlcnZlc1BpdGNoKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKQEAgLTIwNiw4ICsyMDYs
OCBAQCBwdWJsaWM6CiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgZG91YmxlIHZvbHVt
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpOwogCkBAIC0y
MTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0Owog
Ci0gICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OworICAgIGRvdWJsZSBwZXJjZW50TG9h
ZGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5Niwx
MCArNDk2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigp
OwogICAgIHZvaWQgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAKLSAgICB2b2lkIHNlZWsoZmxvYXQg
dGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgZmluaXNoU2VlaygpOwogICAgIHZvaWQgY2hlY2tJZlNlZWtO
ZWVkZWQoKTsKLSAgICB2b2lkIGFkZFBsYXllZFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQp
OworICAgIHZvaWQgYWRkUGxheWVkUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAg
ICAKICAgICB2b2lkIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCk7
CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsK
QEAgLTUyMyw3ICs1MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7CisgICAgdm9pZCB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCogc2hv
d2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsKIAogICAgIHZv
aWQgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CkBAIC01NTAs
MTMgKzU1MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9u
KCkgY29uc3Q7CiAgICAgYm9vbCBjb3VsZFBsYXlJZkVub3VnaERhdGEoKSBjb25zdDsKIAotICAg
IGZsb2F0IG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwotICAgIGZsb2F0IG1heFRpbWVTZWVrYWJs
ZSgpIGNvbnN0OworICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAKICAgICAvLyBQYXVzZXMgcGxheWJhY2sgd2l0
aG91dCBjaGFuZ2luZyBhbnkgc3RhdGVzIG9yIGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgdm9pZCBz
ZXRQYXVzZWRJbnRlcm5hbChib29sKTsKIAotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJu
YWwoZmxvYXQpOworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKQEAgLTYwMCw4ICs2MDAsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIGZsb2F0
IG1fcGxheWJhY2tSYXRlOwotICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBk
b3VibGUgbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsK
ICAgICBib29sIG1fd2Via2l0UHJlc2VydmVzUGl0Y2g7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0
d29ya1N0YXRlOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwpAQCAtNjEwLDggKzYxMCw4
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAotICAgIGZs
b2F0IG1fdm9sdW1lOwotICAgIGZsb2F0IG1fbGFzdFNlZWtUaW1lOworICAgIGRvdWJsZSBtX3Zv
bHVtZTsKKyAgICBkb3VibGUgbV9sYXN0U2Vla1RpbWU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9w
cmV2aW91c1Byb2dyZXNzOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVu
dFdhbGxUaW1lOwogCiAgICAgLy8gVGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2Fz
IHNlbnQgaW4gbW92aWUgdGltZS4KLSAgICBmbG9hdCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWU7CisgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZTsKICAgICAK
ICAgICAvLyBMb2FkaW5nIHN0YXRlLgogICAgIGVudW0gTG9hZFN0YXRlIHsgV2FpdGluZ0ZvclNv
dXJjZSwgTG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQgfTsKQEAg
LTY0Nyw3ICs2NDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRp
YVNvdXJjZTsKICNlbmRpZgogCi0gICAgbXV0YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CisgICAg
bXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVk
VGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2Fs
bENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CiAKQEAgLTY5Niw3ICs2OTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CiAgICAgYm9vbCBtX2hhdmVWaXNpYmxl
VGV4dFRyYWNrIDogMTsKICAgICBib29sIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgOiAx
OwotICAgIGZsb2F0IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CisgICAgZG91YmxlIG1fbGFz
dFRleHRUcmFja1VwZGF0ZVRpbWU7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0
VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKaW5kZXggOTM5NDUyZGMyM2M2ZGRmZjVhZjBiODM1OGU1YzAyYzdiNTMwZTdiYi4uNmZi
MzEzOGIyMWI1NDFhNDIwZjgyN2M3OTI1OTVhMmI1ODljYmU4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC02MywxNCArNjMsMTQgQEAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBzZWVraW5nOwogCiAvLyBwbGF5YmFjayBzdGF0ZQotYXR0cmlidXRlIGZsb2F0IGN1cnJl
bnRUaW1lCithdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lCiAgICAgc2V0dGVyIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgaW5pdGlhbFRpbWU7Ci1y
ZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgc3RhcnRUaW1lOwotcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0IGR1cmF0aW9uOworcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBzdGFydFRpbWU7CityZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGR1cmF0aW9uOwogcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gcGF1c2VkOwotYXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGU7Ci1hdHRyaWJ1
dGUgZmxvYXQgcGxheWJhY2tSYXRlOworYXR0cmlidXRlIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tS
YXRlOworYXR0cmlidXRlIGRvdWJsZSBwbGF5YmFja1JhdGU7CiByZWFkb25seSBhdHRyaWJ1dGUg
VGltZVJhbmdlcyBwbGF5ZWQ7CiByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJs
ZTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGVuZGVkOwpAQCAtODEsNyArODEsNyBAQCB2
b2lkIHBhdXNlKCk7CiAKIC8vIGNvbnRyb2xzCiBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsK
LWF0dHJpYnV0ZSBmbG9hdCB2b2x1bWUgCithdHRyaWJ1dGUgZG91YmxlIHZvbHVtZSAKICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiBh
dHRyaWJ1dGUgW1JlZmxlY3Q9bXV0ZWRdIGJvb2xlYW4gZGVmYXVsdE11dGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDEwMzE2MWIxY2IxYjFiNTVmNWQ3ZGM3
Y2FhODMyYWEzYWNjNTVlNmIuLjMzYzYzYTY2ZGE2MTA3OWY3MDBlOWE3NGYyNWUyY2JlZDJiNjY3
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKQEAgLTEyOSwxMyAr
MTI5LDEzIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQo
KQogICAgIHJldHVybiBwbGF5ZWRSYW5nZXM7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6
ZHVyYXRpb24oKSBjb25zdAorZG91YmxlIE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25z
dAogewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBjYWNoaW5nIHRoZSBtYXhpbXVtIGR1cmF0
aW9uIGFuZCBvbmx5IHVwZGF0aW5nIHRoZSBjYWNoZWQgdmFsdWUKICAgICAvLyB3aGVuIHRoZSBz
bGF2ZWQgbWVkaWEgZWxlbWVudHMnIGR1cmF0aW9ucyBjaGFuZ2UuCi0gICAgZmxvYXQgbWF4RHVy
YXRpb24gPSAwOworICAgIGRvdWJsZSBtYXhEdXJhdGlvbiA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpIHsKLSAg
ICAgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigp
OworICAgICAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJh
dGlvbigpOwogICAgICAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKQEAgLTE0MywyNiArMTQzLDI2IEBAIGZsb2F0IE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24o
KSBjb25zdAogICAgIHJldHVybiBtYXhEdXJhdGlvbjsKIH0KIAotZmxvYXQgTWVkaWFDb250cm9s
bGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFDb250cm9sbGVyOjpjdXJyZW50
VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKG1fcG9zaXRpb24gPT0gTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCkpIHsKICAgICAgICAgLy8gU29tZSBjbG9ja3MgbWF5IHJldHVybiB0aW1lcyBvdXRz
aWRlIHRoZSByYW5nZSBvZiBbMC4uZHVyYXRpb25dLgotICAgICAgICBtX3Bvc2l0aW9uID0gbWF4
KDAuMGYsIG1pbihkdXJhdGlvbigpLCBtX2Nsb2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAg
IG1fcG9zaXRpb24gPSBtYXgoMC4wLCBtaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+Y3VycmVudFRp
bWUoKSkpOwogICAgICAgICBtX2NsZWFyUG9zaXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fcG9zaXRpb247CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lLCBFeGNlcHRpb25Db2Rl
JiBjb2RlKQogewogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdlbnQgaXMgdG8gc2VlayB0aGUgbWVk
aWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBsYXliYWNrIHBvc2l0aW9uLCAKICAg
ICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAvLyBJZiB0aGUgbmV3IHBsYXli
YWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHNldCBpdCB0byB6ZXJvLgotICAg
IHRpbWUgPSBtYXgoMC4wZiwgdGltZSk7CisgICAgdGltZSA9IG1heCgwLjAsIHRpbWUpOwogICAg
IAogICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgZ3JlYXRlciB0aGFuIHRo
ZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAKICAgICAvLyB0byB0aGUg
bWVkaWEgY29udHJvbGxlciBkdXJhdGlvbi4KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbGxlcjo6cGF1c2UoKQogICAgIHJlcG9ydENvbnRyb2xsZXJTdGF0ZSgpOwogfQogCi12
b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQor
dm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUp
CiB7CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1
cm47CkBAIC0yMzAsMTIgKzIzMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0RGVmYXVs
dFBsYXliYWNrUmF0ZShmbG9hdCByYXRlKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnJhdGVjaGFuZ2VFdmVudCk7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6cGxheWJhY2tS
YXRlKCkgY29uc3QKK2RvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250
cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVy
OjpzZXRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fY2xvY2stPnBsYXlS
YXRlKCkgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShkb3VibGUgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUm
IGNvZGUpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCA2NjE1YTNiYzQ4MGI5N2JjMmFi
ZGE4YWI1MWM1MjMzMTNmZTVmZTA1Li41ZTQ1NmJkMDNjZjM5Y2Y0YjRlZDdhZjNhNDQ5NWNjZGZk
ZjJiYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAgLTYwLDIzICs2
MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWth
YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXllZCgp
OwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZv
aWQgdW5wYXVzZSgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBk
ZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXliYWNr
UmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1l
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CiAgICAgVmVj
dG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhdXNl
ZDsKLSAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7Ci0gICAgZmxvYXQgbV92b2x1bWU7
Ci0gICAgbXV0YWJsZSBmbG9hdCBtX3Bvc2l0aW9uOworICAgIGRvdWJsZSBtX2RlZmF1bHRQbGF5
YmFja1JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOworICAgIG11dGFibGUgZG91YmxlIG1fcG9z
aXRpb247CiAgICAgYm9vbCBtX211dGVkOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwog
ICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgKaW5kZXggN2JjZjA2YzVmYjY2NThjZGU0YTli
ZjAyMjU2MTI4MDYwYjY2YmEwZC4uNDg1MDUwY2VhN2RkODc4NTRkZTJkZWEyN2VhMDYxOTRjMTNh
ZTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCkBAIC00NSwyMiArNDUsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRp
b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0
UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxh
eWJhY2tSYXRlKGRvdWJsZSkgPSAwOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tS
YXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpID0gMDsKICAgICAKLSAgICB2aXJ0
dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5n
ZXMuY3BwCmluZGV4IGMyMjQ3NGEwNjI5YzlhN2RkYWIzYzg5MjRkZGY5MjQ5YWVlZmE4ZWMuLmIw
NDVhY2E3ZTM5ODhlMjAxNTVmOGU4ZGI1ZWY5M2Q4ODYzNTg0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0
YXJ0LCBmbG9hdCBlbmQpCitUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCkKIHsKICAgICBhZGQoc3RhcnQsIGVuZCk7CiB9CkBAIC01MywxOSArNTMsMTkgQEAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKIHZvaWQgVGlt
ZVJhbmdlczo6aW52ZXJ0KCkKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBmbG9hdCBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKLSAgICBmbG9hdCBuZWdJbmYgPSAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgZG91YmxlIHBvc0luZiA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBkb3VibGUgbmVnSW5mID0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIAogICAgIGlmICghbV9yYW5n
ZXMuc2l6ZSgpKQogICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgcG9zSW5mKTsKICAgICBl
bHNlIHsKLSAgICAgICAgaWYgKGZsb2F0IHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0
ICE9IG5lZ0luZikKKyAgICAgICAgaWYgKGRvdWJsZSBzdGFydCA9IG1fcmFuZ2VzLmZpcnN0KCku
bV9zdGFydCAhPSBuZWdJbmYpCiAgICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwgc3Rh
cnQpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5n
ZXMuc2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdlc1tp
bmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7CiAKLSAgICAgICAgaWYg
KGZsb2F0IGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZCAhPSBwb3NJbmYpCisgICAgICAgIGlm
IChkb3VibGUgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kICE9IHBvc0luZikKICAgICAgICAg
ICAgIGludmVydGVkLT5hZGQoZW5kLCBwb3NJbmYpOwogICAgIH0KIApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKICAg
ICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKIH0KIAotZmxvYXQgVGltZVJhbmdl
czo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJs
ZSBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKICAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmbG9hdCBUaW1lUmFuZ2VzOjpzdGFydCh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmFu
Z2VzW2luZGV4XS5tX3N0YXJ0OwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjplbmQo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGlu
ZGV4ID49IGxlbmd0aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0xMTMs
NyArMTEzLDcgQEAgZmxvYXQgVGltZVJhbmdlczo6ZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fZW5kOwogfQog
Ci12b2lkIFRpbWVSYW5nZXM6OmFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKSAKK3ZvaWQgVGlt
ZVJhbmdlczo6YWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkgCiB7CiAgICAgQVNTRVJUKHN0
YXJ0IDw9IGVuZCk7CiAgICAgdW5zaWduZWQgaW50IG92ZXJsYXBwaW5nQXJjSW5kZXg7CkBAIC0x
NTYsNyArMTU2LDcgQEAgdm9pZCBUaW1lUmFuZ2VzOjphZGQoZmxvYXQgc3RhcnQsIGZsb2F0IGVu
ZCkKICAgICBtX3Jhbmdlcy5pbnNlcnQob3ZlcmxhcHBpbmdBcmNJbmRleCwgYWRkZWRSYW5nZSk7
CiB9CiAKLWJvb2wgVGltZVJhbmdlczo6Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdAorYm9vbCBU
aW1lUmFuZ2VzOjpjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdAogewogICAgIGZvciAodW5zaWdu
ZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7CiAgICAgICAgIGlmICh0aW1lID49IHN0YXJ0
KG4sIElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENFUFRJT04p
KQpAQCAtMTY1LDEzICsxNjUsMTMgQEAgYm9vbCBUaW1lUmFuZ2VzOjpjb250YWluKGZsb2F0IHRp
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjpuZWFy
ZXN0KGZsb2F0IHRpbWUpIGNvbnN0Citkb3VibGUgVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUg
dGltZSkgY29uc3QKIHsKLSAgICBmbG9hdCBjbG9zZXN0ID0gMDsKKyAgICBkb3VibGUgY2xvc2Vz
dCA9IDA7CiAgICAgdW5zaWduZWQgY291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVk
IG5keCA9IDA7IG5keCA8IGNvdW50OyBuZHgrKykgewotICAgICAgICBmbG9hdCBzdGFydFRpbWUg
PSBzdGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOwotICAgICAgICBmbG9hdCBlbmRUaW1lID0g
ZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBz
dGFydChuZHgsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICBkb3VibGUgZW5kVGltZSA9IGVu
ZChuZHgsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBpZiAodGltZSA+PSBzdGFydFRpbWUg
JiYgdGltZSA8PSBlbmRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHRpbWU7CiAgICAgICAgIGlm
IChmYWJzKHN0YXJ0VGltZSAtIHRpbWUpIDwgY2xvc2VzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmgKaW5kZXggNDI1NzY5MDM2YWM4ZWYyNzM4Nzg0N2YzMGFjNDFmZmU3MzA0YjU3Zi4uZWZkY2Fi
ZmMyM2UzMzk1MzdkNGYzMDMyMmQzZjI2OTc3YzAzYmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFu
Z2VzLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUaW1lUmFuZ2VzKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gY3JlYXRlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyhzdGFydCwgZW5kKSk7CiAg
ICAgfQpAQCAtNTIsMzIgKzUyLDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaW9uV2l0aChjb25z
dCBUaW1lUmFuZ2VzKik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3Jhbmdlcy5zaXplKCk7IH0KLSAgICBmbG9hdCBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwotICAgIGZsb2F0IGVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGFkZChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsK
KyAgICB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbihmbG9hdCB0aW1lKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUp
IGNvbnN0OwogICAgIAotICAgIGZsb2F0IG5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3Q7CisgICAg
ZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRpbWVS
YW5nZXMoKSB7IH0KLSAgICBUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpOworICAg
IFRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKICAgICBUaW1lUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKTsKIAogICAgIC8vIFdlIGNvbnNpZGVyIGFsbCB0aGUgUmFuZ2VzIHRv
IGJlIHNlbWktYm91bmRlZCBhcyBmb2xsb3c6IFtzdGFydCwgZW5kWwogICAgIHN0cnVjdCBSYW5n
ZSB7CiAgICAgICAgIFJhbmdlKCkgeyB9Ci0gICAgICAgIFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9h
dCBlbmQpCisgICAgICAgIFJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKICAgICAgICAg
ewogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0OwogICAgICAgICAgICAgbV9lbmQgPSBlbmQ7
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgbV9zdGFydDsKLSAgICAgICAgZmxvYXQgbV9lbmQ7
CisgICAgICAgIGRvdWJsZSBtX3N0YXJ0OworICAgICAgICBkb3VibGUgbV9lbmQ7CiAKLSAgICAg
ICAgaW5saW5lIGJvb2wgaXNQb2ludEluUmFuZ2UoZmxvYXQgcG9pbnQpIGNvbnN0CisgICAgICAg
IGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYgcG9pbnQgPCBtX2VuZDsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwKaW5kZXggNjFkYTA5M2E5ZTE4
ZThiNTRiNjQ3YTkzOWYyY2IzMmUwZTVkYzNjMC4uOTljYTg4MjcxNzEzYzExYWEwMTVjYjRjNjFk
Yzg1MDAzNmMyODVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2Vz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaWRsCkBAIC0yOCw5ICsy
OCw5IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgVGltZVJh
bmdlcyB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAg
IGZsb2F0IHN0YXJ0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCisgICAgZG91YmxlIHN0YXJ0KGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAg
ICBmbG9hdCBlbmQoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkKKyAgICBkb3VibGUgZW5kKGluIHVu
c2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZXMuY3BwCmluZGV4IDc5ZWZkY2NhNTM5YzNhZTY1YTA4YTkyYmRkODY2YzI1NjY5ZWU3
OTMuLjczMmRiYjAyMDYxMWQ1MGE0YjNjOWJlMmRlNDQ2NGMxNmU2NGE4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVz
LmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtNDgsMTAgKzQ3LDEwIEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBjbGFzcyBFdmVudDsKIAogLy8gRklYTUU6IFRoZXNlIGNvbnN0
YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBp
biB0aGUgUXVpY2tUaW1lIHBsdWctaW4uCi1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMWY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKLXN0YXRp
YyBjb25zdCBmbG9hdCBjU2NhblJlcGVhdERlbGF5ID0gMS41ZjsKLXN0YXRpYyBjb25zdCBmbG9h
dCBjU2Nhbk1heGltdW1SYXRlID0gODsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBSZXBlYXRE
ZWxheSA9IDAuMTsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NraXBUaW1lID0gMC4yOworc3RhdGlj
IGNvbnN0IGRvdWJsZSBjU2NhblJlcGVhdERlbGF5ID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJs
ZSBjU2Nhbk1heGltdW1SYXRlID0gODsKIAogSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRp
YUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKQEAgLTE1NCw3ICsxNTMsNyBAQCBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbgogewogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6
c2V0Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6c2V0Q3VycmVudFZhbHVlKGRvdWJsZSB0aW1lKQogewogICAgIG1fY3VycmVudFZh
bHVlID0gdGltZTsKIH0KQEAgLTI0OSw5ICsyNDgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50OjpzdG9wVGltZXIoKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CiB9
CiAKLWZsb2F0IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXh0UmF0ZSgpIGNvbnN0
Citkb3VibGUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QK
IHsKLSAgICBmbG9hdCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVk
aWFDb250cm9sbGVyKCktPnBsYXliYWNrUmF0ZSgpICogMikpOworICAgIGRvdWJsZSByYXRlID0g
c3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFicyhtZWRpYUNvbnRyb2xsZXIoKS0+cGxheWJh
Y2tSYXRlKCkgKiAyKSk7CiAgICAgaWYgKCFpc0ZvcndhcmRCdXR0b24oKSkKICAgICAgICAgcmF0
ZSAqPSAtMTsKICAgICByZXR1cm4gcmF0ZTsKQEAgLTI2MCw3ICsyNTksNyBAQCBmbG9hdCBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogdm9pZCBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9s
U2Vla0J1dHRvbkVsZW1lbnQ+KikKIHsKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7Ci0g
ICAgICAgIGZsb2F0IHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAt
Y1NraXBUaW1lOworICAgICAgICBkb3VibGUgc2tpcFRpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/
IGNTa2lwVGltZSA6IC1jU2tpcFRpbWU7CiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRD
dXJyZW50VGltZShtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSArIHNraXBUaW1lLCBJ
R05PUkVfRVhDRVBUSU9OKTsKICAgICB9IGVsc2UKICAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKQEAgLTI4OCw3ICsyODcsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCku
dG9Eb3VibGUoKSk7CisgICAgZG91YmxlIHZvbHVtZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAg
ICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKICAgICAgICAgbWVk
aWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKQEAgLTMxMSw5ICszMTAsOSBA
QCBib29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogewotICAgIGlm
ICh2YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1bWUpCisgICAgaWYgKHZhbHVlKCkudG9Eb3VibGUo
KSAhPSB2b2x1bWUpCiAgICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5oCmluZGV4IGMyZjY3OTE4YjU0MzVhY2FiMjk4OWY4MmQyOTIwMjAwYmUwMzRh
NDkuLjk1OWMyZWZhMDMxNzAzZGIyZmI1MjAxNGUxNTVlZTgyZmUyOTBlNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5o
CkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1l
RGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgdm9pZCBzZXRDdXJyZW50
VmFsdWUoZG91YmxlKTsKKyAgICBkb3VibGUgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50VmFsdWU7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
IAogcHJpdmF0ZToKLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKKyAgICBkb3VibGUgbV9jdXJy
ZW50VmFsdWU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzgs
NyArMTc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRUaW1lcigpOwogICAgIHZvaWQg
c3RvcFRpbWVyKCk7Ci0gICAgZmxvYXQgbmV4dFJhdGUoKSBjb25zdDsKKyAgICBkb3VibGUgbmV4
dFJhdGUoKSBjb25zdDsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bFNlZWtCdXR0b25FbGVtZW50PiopOwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywg
UGxheSwgUGF1c2UgfTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBP
VkVSUklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCBzZXRWb2x1bWUo
ZG91YmxlKTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDIxMTBkMDQ1NGIyZjg0ZDVkYTE0NTk3NWI3ZGVhOTUx
MjU5ZGFjZGUuLjllNjgwZGRlODM2MGU4YTkxNDQ4ODdjM2U3NzNlZTE1MmE1ODc4ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYz
Myw3ICs2MzIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMGYsIG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgwLjAsIG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtOTY1LDcgKzk2NCw3IEBAIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJs
ZSgpKTsKKyAgICBkb3VibGUgdGltZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
Q3VycmVudFRpbWUodGltZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTk4MiwxMiArOTgxLDEy
IEBAIGJvb2wgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3ZvaWQgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRpbWUpCiB7
CiAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0KIAotdm9pZCBN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQor
dm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoc3RkOjpp
c2Zpbml0ZShkdXJhdGlvbikgPyBkdXJhdGlvbiA6IDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDE5ZjgzY2U5YWQ4
ZDQ4OTBlOWQ3NGYxMGU3MTI3YzU1ZTc5NWI0OTMuLmFkMTVmNGEwMWU3OTRlMzgzYjlkNzEzYmU3
OTE0N2MxODIwOTQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuaApAQCAtMzM1LDggKzMzNSw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOwogCi0g
ICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7
CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91
YmxlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDM2ZTE3ODBiMzI3ZTllNTNhZjEyMGI5ZmM3YTFl
OTM1ZTcxN2ExNzguLmIwYjI4ODQyOGU4OTQ3MjExOTM1MWNkNWE2MWQyNjBkZDgyZjE0NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6cmVzZXQoKQogCiAgICAgdXBkYXRlQ3VycmVu
dFRpbWVEaXNwbGF5KCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVt
ZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgewog
ICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1fdGlt
ZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKQEAg
LTIxNCw3ICsyMTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCiAK
IHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsKLSAgICBm
bG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAKICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDkxYThhNzdjZDEx
OTc3MTg2ZWFhYTE2MWMyMDA2YzE5NTI5ZDYwMTUuLmM5M2JhNjg5MGEyYzFiZTNkMzQwODMzNjk0
NGIzMzYwYzJjMDM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTWVkaWFDb250cm9s
c0FwcGxlOjpyZXNldCgpCiAgICAgZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhp
ZGUoKTsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CiAgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1f
dGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRh
aW5lci0+c2hvdygpOwpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxl
OjpyZXNldCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURp
c3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAg
IGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5j
cHAKaW5kZXggYWZmMGRiZjcyYmJlYjU4N2U1Mzc0MmY2Mzk3YWY1NTdjZTEwNzkxMi4uYjFjZjMy
OTFiZGQxN2NkNmEwMzllYTIxZGFlZWVkOWViNDE3ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgxLDcgKzQ4MCw3IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgdGltZWxpbmUtPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2Ui
KTsKLSAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwor
ICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImRvdWJsZSIpOwogICAg
IHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTUwNSw3ICs1MDQsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGRvdWJsZSB0aW1lID0gdmFsdWUoKS50b0RvdWJsZSgp
OwogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRp
bWUgIT0gbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBJR05PUkVfRVhDRVBUSU9OKTsKIApAQCAt
NTIyLDEyICs1MjEsMTIgQEAgYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRp
b24oZmxvYXQgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGRvdWJsZSBjdXJyZW50VGltZSkKIHsKICAgICBzZXRWYWx1
ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pCiB7CiAgICAgc2V0QXR0cmlidXRlKG1heEF0dHIsIFN0cmluZzo6bnVtYmVy
KHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CiB9CkBAIC05MTEsOSAr
OTEwLDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAg
ICAgfQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIGZsb2F0
IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIG1fdGltZWxp
bmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUt
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hv
dygpOwpAQCAtOTU1LDcgKzk1NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmJ1
ZmZlcmluZ1Byb2dyZXNzZWQoKQogICAgIC8vIFdlIG9ubHkgbmVlZCB0byB1cGRhdGUgYnVmZmVy
aW5nIHByb2dyZXNzIHdoZW4gcGF1c2VkLCBkdXJpbmcgbm9ybWFsCiAgICAgLy8gcGxheWJhY2sg
cGxheWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCiAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5wYXVzZWQoKSkgewotICAgICAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOwogICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAg
ICB9CkBAIC05NjMsNyArOTYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVm
ZmVyaW5nUHJvZ3Jlc3NlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXli
YWNrU3RhcnRlZCgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CkBAIC05NzYsNyArOTc1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICBt
X2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKICAgICB1cGRhdGVDdXJyZW50
VGltZURpc3BsYXkoKTsKQEAgLTk4Nyw3ICs5ODYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKTsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAg
ICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3Rp
bWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwpAQCAtMTAwMCw4ICs5OTksOCBAQCB2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5v
dyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVk
aWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaAppbmRleCBlNDFmYTY5MWRiZmFhMDUyNmYx
ZDBiNjMxNzk2NzRmMTgxN2RhNWYzLi4wZmY3NmNiYzkwZmI3MDlkN2E0OTQwZjRkNDg3NThhNjMw
MWMzYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihm
bG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXRQb3NpdGlv
bihkb3VibGUpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFD
b250cm9scyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jcHAKaW5kZXggODU4NTdlODczZDIyODgwOTA4ZjljYzAyYzkwYjVjZDQ0
N2U2OWQ3OS4uYjhiYTliZTgyOGY1NzMwZDc2ODZmMzIzOTQ5YWIzMjkwMzA2ZDk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0u
Y3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJlc2V0
KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGR1cmF0aW9u
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
bV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CiAgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNl
dElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlv
biksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJy
ZW50VmFsdWUoZHVyYXRpb24pOwogCkBAIC0xNzMsOCArMTczLDggQEAgdm9pZCBNZWRpYUNvbnRy
b2xzQ2hyb21pdW06OnBsYXliYWNrU3RhcnRlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sc0Nocm9t
aXVtOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRp
YUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9s
bGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9s
bGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNHdGsuY3BwCmluZGV4IDdhOGI5MjIyNTMwNjhmZWVkMWZhZmIyODBmNDg3MmUyMmQyNGMy
NzcuLjVlZWMwODdlOTBiMzEyNDU5ZmNmZDk2ODk5YzA5YWIzZTg4MThmZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjpyZXNldCgpCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5k
dXJhdGlvbigpOwogICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsK
IApAQCAtMTcyLDggKzE3Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sc0d0azo6cGxheWJhY2tTdGFy
dGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzR3RrOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXko
KQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwot
ICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAg
ZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggM2QzZWE4ZjJlMzc2YjUxMjY3OGVh
ZjIyYzQwOGUzZTU5ZmYyMTM5NC4uNjk2NWI5MmY0NDg2MTRhNTJhMmY1ZWQ4ODZkMGU0YWIzNWYz
MTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAt
NzUxLDcgKzc1MSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVz
KENvbnRhaW5lck5vZGUqIHJvb3QsIGRvdWJsZSBwcmV2aW91c1RpCiAgICAgfQogfQogCi12b2lk
IFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQordm9pZCBU
ZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAg
Ly8gVGhlIGRpc3BsYXkgdHJlZSBtYXkgY29udGFpbiBXZWJWVFQgdGltZXN0YW1wIG9iamVjdHMg
cmVwcmVzZW50aW5nCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMp
LCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmgKaW5kZXggZWM2OTMwY2NhZWY1Mjk3ZDhkYjQzMTUzNDBjMzdjZmRkOGE1
YzY4ZC4uODc2ZDk0YTU0YWUzOGE4ODNjOWExOTcyOTUzODVlMDczMjM4M2VjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpOwogICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2N1ZUJhY2tncm91bmRCb3g7IH0KIAotICAgIHZvaWQg
dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoZG91
YmxlKTsKICAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCBtYXJrRnV0dXJl
QW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9jay5oCmluZGV4IDg2YWY5NTY1NzM5OGQ0ZTYyOTAyOWIxNGI3ZmYwZTA5ZmQyYjg2
Y2YuLjBiMzMyMmZlOTMyMWYyZWM2OWFlNmExYjA3OTk5ZjQyYWM1OTc4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2xvY2suaApAQCAtMzYsMTEgKzM2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDbG9jaz4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q2xvY2soKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgZmxv
YXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0KSA9IDA7Ci0gICAgdmly
dHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGxh
eVJhdGUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVy
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCBl
ZjA5YzRmMzgyMWY2Y2UzNmJmZTJjOGM1N2U1MDliNzY2MTZlN2Q2Li45OWFhMzQwM2M2MjY4Yzky
YWVhZmIwYmYwYTg3ZGNmYzM5MDQzYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
R2VuZXJpYy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDbG9ja0dlbmVyaWMuaCIKIAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTM5LDIxICszOCwyMCBAQCBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCiAgICAgbV9zdGFy
dFRpbWUgPSBtX2xhc3RUaW1lID0gbm93KCk7CiB9CiAKLXZvaWQgQ2xvY2tHZW5lcmljOjpzZXRD
dXJyZW50VGltZShmbG9hdCB0aW1lKQordm9pZCBDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1l
KGRvdWJsZSB0aW1lKQogewogICAgIG1fc3RhcnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwog
ICAgIG1fb2Zmc2V0ID0gdGltZTsKIH0KIAotZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGlt
ZSgpIGNvbnN0Citkb3VibGUgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcnVubmluZykKICAgICAgICAgbV9sYXN0VGltZSA9IG5vdygpOwotICAgIGZsb2F0
IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KCgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1l
KSAqIG1fcmF0ZSkgKyBtX29mZnNldCk7Ci0gICAgcmV0dXJuIHRpbWU7CisgICAgcmV0dXJuICgo
bV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldDsKIH0KIAotdm9p
ZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUpCit2b2lkIENsb2NrR2VuZXJp
Yzo6c2V0UGxheVJhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgbV9vZmZzZXQgPSBub3coKTsKICAg
ICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUgPSBub3coKTsKQEAgLTgzLDQgKzgxLDMgQEAgZG91
YmxlIENsb2NrR2VuZXJpYzo6bm93KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpjdXJyZW50
VGltZSgpOwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IGQ1
M2ExYmMyZGM0ZDNjNTVmOGUwZDYzOTljZjY1OGI5YjI2YWQ2MDIuLjNkYzBlN2RiNTNmZGEzYjk5
NWZjZmZlMTgwZTFhZGJlNDY3YzQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nsb2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2Vu
ZXJpYy5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogICAgIENsb2NrR2VuZXJpYygpOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0gICAg
dmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRD
dXJyZW50VGltZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZmxvYXQpOwotICAgIHZpcnR1YWwg
ZmxvYXQgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhdGU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGxheVJhdGUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbm93KCkgY29uc3Q7CiAKICAgICBib29sIG1fcnVubmluZzsKLSAgICBmbG9hdCBtX3JhdGU7
CisgICAgZG91YmxlIG1fcmF0ZTsKICAgICBkb3VibGUgbV9vZmZzZXQ7CiAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fbGFzdFRpbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODljNWJhNWEz
M2I5YTlkYWI3ZWYyODY4OTRmOTM5NzMzNTQzZTg0MS4uMDQ3MTA1ZDUzYjdmMDE1ZGMzMzE4ZTRl
OGQxNmNmZjllMDhlODJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9u
RG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50
VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkg
eyB9CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNlZWtEb3VibGUoZG91YmxlKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmF0ZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVEb3VibGUo
ZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lRG91YmxlKGRvdWJsZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChi
b29sKSB7IH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpFbXB0eTsgfQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQogCi0gICAg
dmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCBNZWRp
YVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXI6OmNhbmNlbEtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBrZXlTeQogfQogI2VuZGlmCiAKLWZsb2F0IE1lZGlhUGxheWVyOjpkdXJh
dGlvbigpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmR1
cmF0aW9uRG91YmxlKCk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25z
dAorZG91YmxlIE1lZGlhUGxheWVyOjpzdGFydFRpbWUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPnN0YXJ0VGltZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZURv
dWJsZSgpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6OmluaXRpYWxUaW1lKCkgY29uc3QKQEAg
LTUyOSwxNCArNTI5LDE0IEBAIGRvdWJsZSBNZWRpYVBsYXllcjo6aW5pdGlhbFRpbWUoKSBjb25z
dAogICAgIHJldHVybiBtX3ByaXZhdGUtPmluaXRpYWxUaW1lKCk7CiB9CiAKLWZsb2F0IE1lZGlh
UGxheWVyOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OmN1cnJlbnRU
aW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jdXJyZW50VGltZSgpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmN1cnJlbnRUaW1lRG91YmxlKCk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXI6OnNlZWsoZmxvYXQgdGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoZG91YmxlIHRp
bWUpCiB7Ci0gICAgbV9wcml2YXRlLT5zZWVrKHRpbWUpOworICAgIG1fcHJpdmF0ZS0+c2Vla0Rv
dWJsZSh0aW1lKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6cGF1c2VkKCkgY29uc3QKQEAgLTYw
OSwxNyArNjA5LDE3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyOjpyZWFk
eVN0YXRlKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZWFkeVN0YXRlKCk7CiB9CiAKLWZsb2F0
IE1lZGlhUGxheWVyOjp2b2x1bWUoKSBjb25zdAorZG91YmxlIE1lZGlhUGxheWVyOjp2b2x1bWUo
KSBjb25zdAogewogICAgIHJldHVybiBtX3ZvbHVtZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6
c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZvbHVtZShkb3Vi
bGUgdm9sdW1lKQogewogICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCiAgICAgaWYgKG1fcHJpdmF0
ZS0+c3VwcG9ydHNNdXRpbmcoKSB8fCAhbV9tdXRlZCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRW
b2x1bWUodm9sdW1lKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRWb2x1bWVEb3VibGUodm9sdW1l
KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6bXV0ZWQoKSBjb25zdApAQCAtNjQ3LDE1ICs2NDcs
MTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyOjpyYXRl
KCkgY29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6cmF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcmF0ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShmbG9hdCByYXRlKQordm9p
ZCBNZWRpYVBsYXllcjo6c2V0UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBtX3JhdGUgPSByYXRl
OwotICAgIG1fcHJpdmF0ZS0+c2V0UmF0ZShyYXRlKTsgICAKKyAgICBtX3ByaXZhdGUtPnNldFJh
dGVEb3VibGUocmF0ZSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnByZXNlcnZlc1BpdGNoKCkg
Y29uc3QKQEAgLTY3OSw5ICs2NzksOSBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyOjpzZWVrYWJsZSgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2Vla2FibGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1heFRpbWVTZWVrYWJsZSgpCitkb3VibGUgTWVkaWFQbGF5ZXI6
Om1heFRpbWVTZWVrYWJsZSgpCiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWth
YmxlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWF4VGltZVNlZWthYmxlRG91YmxlKCk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcygpCkBAIC04NTQsOSArODU0
LDkgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXI6Om1vdmllTG9hZFR5
cGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPm1vdmllTG9hZFR5cGUoKTsKIH0KIAot
ZmxvYXQgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCB0aW1lVmFsdWUp
IGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShkb3VibGUg
dGltZVZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZSh0aW1lVmFsdWUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPm1lZGlhVGltZUZvclRp
bWVWYWx1ZURvdWJsZSh0aW1lVmFsdWUpOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXI6Om1heGlt
dW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdApAQCAtOTUyLDcgKzk1Miw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgbV9tZWRpYVBsYXll
ckNsaWVudC0+bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllcjo6dm9sdW1lQ2hhbmdlZChmbG9hdCBuZXdWb2x1bWUpCit2b2lkIE1lZGlhUGxh
eWVyOjp2b2x1bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCiB7CiAgICAgbV92b2x1bWUgPSBu
ZXdWb2x1bWU7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4NmVhNDAyNzhjMjQ1NmRm
ZDM5MWQ1NDRkZmRjMTI4NTQ1ZTczZWY3Li41ZDY1ZTk4OTVhMjhmMGE5NGUxMTIzMDM5MTdhMjZl
NThmZTYwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTI5OCwyOSArMjk4LDI5IEBAIHB1YmxpYzoKICAgICBib29sIHBhdXNlZCgp
IGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGZsb2F0IGlu
dmFsaWRUaW1lKCkgeyByZXR1cm4gLTEuMGY7fQotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7
Ci0gICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2b2lkIHNlZWsoZmxvYXQgdGlt
ZSk7CisgICAgc3RhdGljIGRvdWJsZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIC0xLjA7fQorICAg
IGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
OworICAgIHZvaWQgc2Vlayhkb3VibGUgdGltZSk7CiAKLSAgICBmbG9hdCBzdGFydFRpbWUoKSBj
b25zdDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CiAKICAgICBkb3VibGUgaW5pdGlh
bFRpbWUoKSBjb25zdDsKIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJh
dGUoZmxvYXQpOworICAgIGRvdWJsZSByYXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSYXRlKGRv
dWJsZSk7CiAKICAgICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7ICAgIAogICAgIHZvaWQg
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwotICAgIGZs
b2F0IG1heFRpbWVTZWVrYWJsZSgpOworICAgIGRvdWJsZSBtYXhUaW1lU2Vla2FibGUoKTsKIAog
ICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25z
dDsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSk7CiAKICAgICBib29sIG11dGVkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNdXRlZChib29sKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7Ci0gICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNo
YW5nZWQoZG91YmxlKTsKICAgICB2b2lkIG11dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgdGlt
ZUNoYW5nZWQoKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CkBAIC00MTQsNyArNDE0LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Q7CiAKLSAg
ICBmbG9hdCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OworICAgIGRvdWJsZSBt
ZWRpYVRpbWVGb3JUaW1lVmFsdWUoZG91YmxlKSBjb25zdDsKIAogICAgIGRvdWJsZSBtYXhpbXVt
RHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Q7CiAKQEAgLTQ4NSw4ICs0ODUsOCBAQCBw
cml2YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIFByZWxvYWQgbV9wcmVsb2FkOwogICAg
IGJvb2wgbV92aXNpYmxlOwotICAgIGZsb2F0IG1fcmF0ZTsKLSAgICBmbG9hdCBtX3ZvbHVtZTsK
KyAgICBkb3VibGUgbV9yYXRlOworICAgIGRvdWJsZSBtX3ZvbHVtZTsKICAgICBib29sIG1fbXV0
ZWQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlc1BpdGNoOwogICAgIGJvb2wgbV9wcml2YXRlQnJvd3Np
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCmluZGV4IGI3OTcwOWQ1Mzc1ZDU5MzE1YzY2OWU3MmQyMzQ1ZDNmNDIwNDhm
YmIuLmY0MzdjNjYwY2FiMDYxMjQyMGM0YjY5OGIyNzkzZGJhMGFmZjhiNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CkBAIC03MCwyMiArNzAsMzEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgPSAwOwogCi0gICAgdmlydHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIGR1cmF0aW9uRG91YmxlKCkgY29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsg
fQorCisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGN1
cnJlbnRUaW1lKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2Vla0RvdWJsZShkb3VibGUgdGltZSkgeyBzZWVrKHRpbWUpOyB9CiAKLSAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZWVrKGZsb2F0IHRpbWUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgZmxvYXQgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgZG91YmxlIHN0YXJ0VGltZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXJ0VGltZSgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsVGltZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGZsb2F0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFJhdGUoZmxvYXQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRl
RG91YmxlKGRvdWJsZSByYXRlKSB7IHNldFJhdGUocmF0ZSk7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQo
KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFZvbHVtZURvdWJsZShkb3VibGUgdm9sdW1lKSB7IHJldHVybiBzZXRWb2x1bWUodm9sdW1lKTsg
fQogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgeyB9CkBAIC05Nyw3ICsxMDYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCkgPyBUaW1lUmFuZ2VzOjpj
cmVhdGUoMCwgbWF4VGltZVNlZWthYmxlKCkpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KLSAg
ICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IGRvdWJsZSBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSBjb25zdCB7IHJldHVybiBtYXhUaW1lU2Vl
a2FibGUoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dCA9IDA7CkBAIC0xNDksNiArMTU5LDcgQEAgcHVibGljOgogICAgIC8vIFRpbWUgdmFsdWUgaW4g
dGhlIG1vdmllJ3MgdGltZSBzY2FsZS4gSXQgaXMgb25seSBuZWNlc3NhcnkgdG8gb3ZlcnJpZGUg
dGhpcyBpZiB0aGUgbWVkaWEKICAgICAvLyBlbmdpbmUgdXNlcyByYXRpb25hbCBudW1iZXJzIHRv
IHJlcHJlc2VudCBtZWRpYSB0aW1lLgogICAgIHZpcnR1YWwgZmxvYXQgbWVkaWFUaW1lRm9yVGlt
ZVZhbHVlKGZsb2F0IHRpbWVWYWx1ZSkgY29uc3QgeyByZXR1cm4gdGltZVZhbHVlOyB9CisgICAg
dmlydHVhbCBkb3VibGUgbWVkaWFUaW1lRm9yVGltZVZhbHVlRG91YmxlKGRvdWJsZSB0aW1lVmFs
dWUpIGNvbnN0IHsgcmV0dXJuIHRpbWVWYWx1ZTsgfQogCiAgICAgLy8gT3ZlcmlkZSB0aGlzIGlm
IGl0IGlzIHNhZmUgZm9yIEhUTUxNZWRpYUVsZW1lbnQgdG8gY2FjaGUgbW92aWUgdGltZSBhbmQg
cmVwb3J0CiAgICAgLy8gJ2N1cnJlbnRUaW1lJyBhcyBbY2FjaGVkIHRpbWUgKyBlbGFwc2VkIHdh
bGwgdGltZV0uIFJldHVybnMgdGhlIG1heGltdW0gd2FsbCB0aW1lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwCmluZGV4IGZlNDkyZjI1MDJmNGI3
MDhhZjg1MWMzZWQ3NWE5ZDMzZjQyZjVkNTEuLjRkMmU4ZGYxODQ2NTcwMzk4NTUxZDY1Yzg1ZThi
MTI3NDAxYWI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybUNsb2NrQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bUNsb2NrQ0EuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNsb2Nr
Q0EuaCIKIAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVG9v
bGJveC9Db3JlQXVkaW9DbG9jay5oPgogI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJl
Lmg+CiAKQEAgLTYxLDcgKzYwLDcgQEAgUGxhdGZvcm1DbG9ja0NBOjp+UGxhdGZvcm1DbG9ja0NB
KCkKICAgICBDQUNsb2NrRGlzcG9zZShtX2Nsb2NrKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsb2Nr
Q0E6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCit2b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0
Q3VycmVudFRpbWUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fcnVubmluZykKICAgICAgICAg
Q0FDbG9ja1N0b3AobV9jbG9jayk7CkBAIC03Myw3ICs3Miw3IEBAIHZvaWQgUGxhdGZvcm1DbG9j
a0NBOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQogICAgICAgICBDQUNsb2NrU3RhcnQobV9j
bG9jayk7CiB9CiAKLWZsb2F0IFBsYXRmb3JtQ2xvY2tDQTo6Y3VycmVudFRpbWUoKSBjb25zdAor
ZG91YmxlIFBsYXRmb3JtQ2xvY2tDQTo6Y3VycmVudFRpbWUoKSBjb25zdAogewogICAgIENBQ2xv
Y2tUaW1lIGNhVGltZTsKIApAQCAtODEsMjQgKzgwLDI0IEBAIGZsb2F0IFBsYXRmb3JtQ2xvY2tD
QTo6Y3VycmVudFRpbWUoKSBjb25zdAogICAgIC8vIHdoYXQgaXMgdGhlIHN0YXJ0IHRpbWUsIGku
ZS4gd2hhdCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgd2hlbiBzdGFydGVkLgogICAgIGlmICht
X3J1bm5pbmcpIHsKICAgICAgICAgaWYgKENBQ2xvY2tHZXRDdXJyZW50VGltZShtX2Nsb2NrLCBr
Q0FDbG9ja1RpbWVGb3JtYXRfU2Vjb25kcywgJmNhVGltZSkgPT0gbm9FcnIpCi0gICAgICAgICAg
ICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjYVRpbWUudGltZS5zZWNvbmRzKTsKKyAg
ICAgICAgICAgIHJldHVybiBjYVRpbWUudGltZS5zZWNvbmRzOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChDQUNsb2NrR2V0U3RhcnRUaW1lKG1fY2xvY2ssIGtDQUNsb2NrVGltZUZvcm1hdF9T
ZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAgICAgICAgICAgIHJldHVybiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGNhVGltZS50aW1lLnNlY29uZHMpOworICAgICAgICAgICAgcmV0dXJuIGNh
VGltZS50aW1lLnNlY29uZHM7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFBsYXRm
b3JtQ2xvY2tDQTo6c2V0UGxheVJhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgUGxhdGZvcm1DbG9ja0NB
OjpzZXRQbGF5UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBDQUNsb2NrU2V0UGxheVJhdGUobV9j
bG9jaywgcmF0ZSk7CiB9CiAKLWZsb2F0IFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9ja0NB
OjpwbGF5UmF0ZSgpIGNvbnN0Citkb3VibGUgUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNsb2Nr
Q0E6OnBsYXlSYXRlKCkgY29uc3QKIHsKICAgICBkb3VibGUgcmF0ZSA9IDA7CiAgICAgaWYgKENB
Q2xvY2tHZXRQbGF5UmF0ZShtX2Nsb2NrLCAmcmF0ZSkgPT0gbm9FcnIpCi0gICAgICAgIHJldHVy
biBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHJhdGUpOworICAgICAgICByZXR1cm4gcmF0ZTsKICAg
ICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtQ2xvY2tDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
Q2xvY2tDQS5oCmluZGV4IGIxMDFkN2E5NWQyMzY1MzFhODZhMzdhMTZkOTYyNTAyYTI0ZTYzYWUu
LjI2MzNkZDQ0ZWQyNmMwNTQyMzkxMzJlZGQ3OGRhNzZhMjNmNDI2NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmgKQEAgLTQwLDExICs0MCwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1DbG9ja0NBKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0
IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRv
dWJsZSk7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpOworICAgIHZp
cnR1YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtQ2xvY2tDTS5oCmluZGV4IGUwMzQ5MTUzMDk2YjQzMmVjMmM2MDMwMTJmZDdh
YWNkZmYzOWRlOTguLjBkNWY2M2Q3ODA0YTdhZGEzZmFjMjUwNjJkNDcxMGZhNzJhNjUwYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmgKQEAgLTQ0
LDE4ICs0NCwxOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhU
aW1pbmdTb3VyY2UoQ01DbG9ja1JlZik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRp
bWUoZmxvYXQpOwotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBj
dXJyZW50VGltZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGZsb2F0
KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHBsYXlSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXRlOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSk7CisgICAgdmlydHVhbCBkb3Vi
bGUgcGxheVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhdGU7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAgICAgdmlydHVhbCBib29sIGlz
UnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcnVubmluZzsgfQogCiAgICAgUmV0YWluUHRyPENN
VGltZWJhc2VSZWY+IG1fdGltZWJhc2U7Ci0gICAgZmxvYXQgbV9yYXRlOworICAgIGRvdWJsZSBt
X3JhdGU7CiAgICAgYm9vbCBtX3J1bm5pbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5tbQppbmRleCBlOTUwMWEwNWMwYmY3YjRmNDc2YmJm
MmNhYWZhYWM0YjUxZmQ1MDk4Li44MWZiNmZkOGU4NjRjMDNhMTYzNjM2MmZjN2ZkZmMxMWYwODlh
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9j
a0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00u
bW0KQEAgLTI5LDcgKzI5LDYgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1DbG9ja0NNLmgiCiAKLSNp
bXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBv
cnQgPENvcmVNZWRpYS9DTUF1ZGlvRGV2aWNlQ2xvY2suaD4KIApAQCAtNzMsMTkgKzcyLDE5IEBA
IHZvaWQgUGxhdGZvcm1DbG9ja0NNOjppbml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShDTUNsb2Nr
UmVmIGNsb2NrKQogICAgIG1fdGltZWJhc2UuYWRvcHRDRihyYXdUaW1lYmFzZVB0cik7CiB9CiAK
LXZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQordm9pZCBQ
bGF0Zm9ybUNsb2NrQ006OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lKQogewogICAgIENNVGlt
ZSBjbVRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHModGltZSwgRGVmYXVsdFRpbWVTY2FsZSk7
CiAgICAgQ01UaW1lYmFzZVNldFRpbWUobV90aW1lYmFzZS5nZXQoKSwgY21UaW1lKTsKIH0KIAot
ZmxvYXQgUGxhdGZvcm1DbG9ja0NNOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgUGxhdGZv
cm1DbG9ja0NNOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAgQ01UaW1lIGNtVGltZSA9IENN
VGltZWJhc2VHZXRUaW1lKG1fdGltZWJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21UaW1lKSk7CisgICAgcmV0dXJuIENNVGlt
ZUdldFNlY29uZHMoY21UaW1lKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldFBsYXlS
YXRlKGZsb2F0IHJhdGUpCit2b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c2V0UGxheVJhdGUoZG91Ymxl
IHJhdGUpCiB7CiAgICAgaWYgKG1fcmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="commit-queue"
          id="217814"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197271</attachid>
            <date>2013-04-10 08:16:40 -0700</date>
            <delta_ts>2013-04-10 09:28:16 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>68421</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTA0LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBhbGwgZmxv
YXQgYXR0cmlidXRlcyBpbiBIVE1MTWVkaWFFbGVtZW50IHRvIGRvdWJsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjE1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFBhdGNoIGJ5IEFhcm9uIENvbHdlbGwK
KworICAgICAgICBObyBuZXcgdGVzdHMuIFByaW1hcnkgYmVoYXZpb3IgZG9lc24ndCBjaGFuZ2Uu
IEp1c3QgdGltZSwgcGxheWJhY2tSYXRlLCBhbmQgdm9sdW1lIHByZWNpc2lvbi4KKyAgICAgICAg
QWxsIGV4aXN0aW5nIExheW91dFRlc3RzL21lZGlhIHRlc3RzIHN0aWxsIHBhc3MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAg
ICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFDb250cm9s
bGVyLmg6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBodG1sL1RpbWVSYW5nZXMuY3BwOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5pZGw6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaDoKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUu
Y3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3BwOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL0Nsb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vQ2xvY2tH
ZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NB
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QbGF0Zm9ybUNsb2NrQ00ubW06CisKIDIwMTMtMDQtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjb3JyZWN0bmVzcyBmaXg6
IHVzZSBscm91bmRmIGluc3RlYWQgb2YgbHJvdW5kIGZvciBhIGZsb2F0IHRvIGludCBjb252ZXJz
aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjY1LDE1ICsyNjY1
LDEyIEBAIF9fWk43V2ViQ29yZTRQYWdlMjBzY3JvbGxpbmdDb29yZGluYXRvckUKIF9fWk43V2Vi
Q29yZTE2SFRNTE1lZGlhRWxlbWVudDEyZW5kU2NydWJiaW5nRXYKIF9fWk43V2ViQ29yZTE2SFRN
TE1lZGlhRWxlbWVudDE0YmVnaW5TY3J1YmJpbmdFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFF
bGVtZW50MTRleGl0RnVsbHNjcmVlbkV2Ci1fX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQx
NHNldEN1cnJlbnRUaW1lRWZSaQogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MTVjbGVh
ck1lZGlhQ2FjaGVFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjBnZXRTaXRlc0lu
TWVkaWFDYWNoZUVSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzaE9uT3Zl
cmZsb3dFRUUKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDIyY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDRw
bGF5RXYKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDVwYXVzZUV2Ci1fX1pON1dlYkNv
cmUxNkhUTUxNZWRpYUVsZW1lbnQ2cmV3aW5kRWYKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxl
bWVudDhzZXRNdXRlZEViCi1fX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ5c2V0Vm9sdW1l
RWZSaQogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDExY3VycmVudFRpbWVFdgogX19a
Tks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDEzcGxhdGZvcm1NZWRpYUV2CiBfX1pOSzdXZWJD
b3JlMTZIVE1MTWVkaWFFbGVtZW50NW11dGVkRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ4MDUwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDcgKzI1Miw3
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICAsIG1fbGFz
dFNlZWtUaW1lKDApCiAgICAgLCBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lKG51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50V2FsbFRpbWUoMCkK
LSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNf
bGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sb2FkU3RhdGUoV2FpdGluZ0ZvclNvdXJj
ZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAsIG1fcHJveHlXaWRn
ZXQoMCkKQEAgLTEwNzksNyArMTA3OSw3IEBAIHN0YXRpYyBib29sIGV2ZW50VGltZUN1ZUNvbXBh
cmUoY29uc3Qgc3QKIH0KIAogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoZmxvYXQgbW92aWVUaW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAgLy8gNC44LjEw
LjggUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKIApAQCAtMTExNCw3ICsxMTE0LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VAogICAgIC8vIDMgLSBMZXQgbGFz
dCB0aW1lIGJlIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGF0IHRoZSB0aW1lIHRoaXMK
ICAgICAvLyBhbGdvcml0aG0gd2FzIGxhc3QgcnVuIGZvciB0aGlzIG1lZGlhIGVsZW1lbnQsIGlm
IHRoaXMgaXMgbm90IHRoZSBmaXJzdAogICAgIC8vIHRpbWUgaXQgaGFzIHJ1bi4KLSAgICBmbG9h
dCBsYXN0VGltZSA9IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CisgICAgZG91YmxlIGxhc3RU
aW1lID0gbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZTsKIAogICAgIC8vIDQgLSBJZiB0aGUgY3Vy
cmVudCBwbGF5YmFjayBwb3NpdGlvbiBoYXMsIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhpcwogICAg
IC8vIGFsZ29yaXRobSB3YXMgcnVuLCBvbmx5IGNoYW5nZWQgdGhyb3VnaCBpdHMgdXN1YWwgbW9u
b3RvbmljIGluY3JlYXNlCkBAIC0xMTI3LDggKzExMjcsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUFjdGl2ZVRleHRUCiAgICAgICAgICAgICBtX2N1ZVRyZWUuYWxsT3ZlcmxhcHMo
bV9jdWVUcmVlLmNyZWF0ZUludGVydmFsKGxhc3RUaW1lLCBtb3ZpZVRpbWUpKTsKIAogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvdGVudGlhbGx5U2tpcHBlZEN1ZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGZsb2F0IGN1ZVN0YXJ0VGltZSA9IHBvdGVudGlhbGx5U2tpcHBl
ZEN1ZXNbaV0ubG93KCk7Ci0gICAgICAgICAgICBmbG9hdCBjdWVFbmRUaW1lID0gcG90ZW50aWFs
bHlTa2lwcGVkQ3Vlc1tpXS5oaWdoKCk7CisgICAgICAgICAgICBkb3VibGUgY3VlU3RhcnRUaW1l
ID0gcG90ZW50aWFsbHlTa2lwcGVkQ3Vlc1tpXS5sb3coKTsKKyAgICAgICAgICAgIGRvdWJsZSBj
dWVFbmRUaW1lID0gcG90ZW50aWFsbHlTa2lwcGVkQ3Vlc1tpXS5oaWdoKCk7CiAKICAgICAgICAg
ICAgIC8vIENvbnNpZGVyIGN1ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIG1pc3NlZCBzaW5jZSB0aGUg
bGFzdCBzZWVrIHRpbWUuCiAgICAgICAgICAgICBpZiAoY3VlU3RhcnRUaW1lID4gbWF4KG1fbGFz
dFNlZWtUaW1lLCBsYXN0VGltZSkgJiYgY3VlRW5kVGltZSA8IG1vdmllVGltZSkKQEAgLTIwMDks
NyArMjAwOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWUKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKGZsb2F0IHRpbWVEZWx0YSkK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpCiB7CiAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKCVmKSIsIHRpbWVEZWx0YSk7CiAg
ICAgc2V0Q3VycmVudFRpbWUobWF4KGN1cnJlbnRUaW1lKCkgLSB0aW1lRGVsdGEsIG1pblRpbWVT
ZWVrYWJsZSgpKSwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC0yMDIxLDcgKzIwMjEsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUoCiAgICAgc2V0Q3VycmVudFRpbWUo
bWF4VGltZVNlZWthYmxlKCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkK
IHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRSYW5nZSglZiwg
JWYpIiwgc3RhcnQsIGVuZCk7CiAgICAgaWYgKCFtX3BsYXllZFRpbWVSYW5nZXMpCkBAIC0yMDQ4
LDcgKzIwNDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXkoKQogICAg
IG1fcGxheWVyLT5wcmVwYXJlVG9QbGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2VlayhmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2Vlayhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2VlayglZikiLCB0aW1lKTsKIApAQCAtMjA2Niw3ICsyMDY2
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZsb2F0IHRpbWUsIAogCiAgICAgLy8g
R2V0IHRoZSBjdXJyZW50IHRpbWUgYmVmb3JlIHNldHRpbmcgbV9zZWVraW5nLCBtX2xhc3RTZWVr
VGltZSBpcyByZXR1cm5lZCBvbmNlIGl0IGlzIHNldC4KICAgICByZWZyZXNoQ2FjaGVkVGltZSgp
OwotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IGN1cnJl
bnRUaW1lKCk7CiAKICAgICAvLyAyIC0gSWYgdGhlIGVsZW1lbnQncyBzZWVraW5nIElETCBhdHRy
aWJ1dGUgaXMgdHJ1ZSwgdGhlbiBhbm90aGVyIGluc3RhbmNlIG9mIHRoaXMgYWxnb3JpdGhtIGlz
CiAgICAgLy8gYWxyZWFkeSBydW5uaW5nLiBBYm9ydCB0aGF0IG90aGVyIGluc3RhbmNlIG9mIHRo
ZSBhbGdvcml0aG0gd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgc3RlcCB0aGF0CkBAIC0yMDgyLDcg
KzIwODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgCiAgICAg
dGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKIAogICAgIC8vIDYgLSBJZiB0aGUgbmV3IHBs
YXliYWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRp
b24sIGxldCBpdCBiZSB0aGF0IHBvc2l0aW9uIGluc3RlYWQuCi0gICAgZmxvYXQgZWFybGllc3RU
aW1lID0gbV9wbGF5ZXItPnN0YXJ0VGltZSgpOworICAgIGRvdWJsZSBlYXJsaWVzdFRpbWUgPSBt
X3BsYXllci0+c3RhcnRUaW1lKCk7CiAgICAgdGltZSA9IG1heCh0aW1lLCBlYXJsaWVzdFRpbWUp
OwogCiAgICAgLy8gQXNrIHRoZSBtZWRpYSBlbmdpbmUgZm9yIHRoZSB0aW1lIHZhbHVlIGluIHRo
ZSBtb3ZpZSdzIHRpbWUgc2NhbGUgYmVmb3JlIGNvbXBhcmluZyB3aXRoIGN1cnJlbnQgdGltZS4g
VGhpcwpAQCAtMjA5MSw3ICsyMDkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGZs
b2F0IHRpbWUsIAogICAgIC8vIG5vdCBnZW5lcmF0ZSBhIHRpbWVjaGFuZ2VkIGNhbGxiYWNrLiBU
aGlzIG1lYW5zIG1fc2Vla2luZyB3aWxsIG5ldmVyIGJlIGNsZWFyZWQgYW5kIHdlIHdpbGwgbmV2
ZXIgCiAgICAgLy8gZmlyZSBhICdzZWVrZWQnIGV2ZW50LgogI2lmICFMT0dfRElTQUJMRUQKLSAg
ICBmbG9hdCBtZWRpYVRpbWUgPSBtX3BsYXllci0+bWVkaWFUaW1lRm9yVGltZVZhbHVlKHRpbWUp
OworICAgIGRvdWJsZSBtZWRpYVRpbWUgPSBtX3BsYXllci0+bWVkaWFUaW1lRm9yVGltZVZhbHVl
KHRpbWUpOwogICAgIGlmICh0aW1lICE9IG1lZGlhVGltZSkKICAgICAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6c2VlayglZikgLSBtZWRpYSB0aW1lbGluZSBlcXVpdmFsZW50IGlz
ICVmIiwgdGltZSwgbWVkaWFUaW1lKTsKICNlbmRpZgpAQCAtMjE5OCw3ICsyMTk4LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVAogfQogCiAvLyBwbGF5YmFjayBz
dGF0ZQotZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAorZG91Ymxl
IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIHsKICNpZiBMT0dfQ0FDSEVE
X1RJTUVfV0FSTklOR1MKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1pbkNhY2hlZERlbHRhRm9y
V2FybmluZyA9IDAuMDE7CkBAIC0yMjE0LDcgKzIyMTQsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVt
ZW50OjpjdXJyZW50VGltZSgpIGNvCiAKICAgICBpZiAobV9jYWNoZWRUaW1lICE9IE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpICYmIG1fcGF1c2VkKSB7CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dB
Uk5JTkdTCi0gICAgICAgIGZsb2F0IGRlbHRhID0gbV9jYWNoZWRUaW1lIC0gbV9wbGF5ZXItPmN1
cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxh
eWVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBpZiAoZGVsdGEgPiBtaW5DYWNoZWREZWx0YUZv
cldhcm5pbmcpCiAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJy
ZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlh
IHRpbWUgd2hlbiBwYXVzZWQiLCBkZWx0YSk7CiAjZW5kaWYKQEAgLTIyMzAsMTAgKzIyMzAsMTAg
QEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjbwogCiAgICAgICAgIC8v
IE5vdCB0b28gc29vbiwgdXNlIHRoZSBjYWNoZWQgdGltZSBvbmx5IGlmIGl0IGhhc24ndCBleHBp
cmVkLgogICAgICAgICBpZiAod2FsbENsb2NrRGVsdGEgPCBtYXhpbXVtRHVyYXRpb25Ub0NhY2hl
TWVkaWFUaW1lKSB7Ci0gICAgICAgICAgICBmbG9hdCBhZGp1c3RlZENhY2hlVGltZSA9IHN0YXRp
Y19jYXN0PGZsb2F0PihtX2NhY2hlZFRpbWUgKyAobV9wbGF5YmFja1JhdGUgKiB3YWxsQ2xvY2tE
ZWx0YSkpOworICAgICAgICAgICAgZG91YmxlIGFkanVzdGVkQ2FjaGVUaW1lID0gbV9jYWNoZWRU
aW1lICsgKG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpOwogCiAjaWYgTE9HX0NBQ0hF
RF9USU1FX1dBUk5JTkdTCi0gICAgICAgICAgICBmbG9hdCBkZWx0YSA9IGFkanVzdGVkQ2FjaGVU
aW1lIC0gbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBkb3VibGUgZGVsdGEg
PSBhZGp1c3RlZENhY2hlVGltZSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICAg
ICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFGb3JXYXJuaW5nKQogICAgICAgICAgICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lIC0gV0FSTklORywgY2Fj
aGVkIHRpbWUgaXMgJWYgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIHBsYXlpbmciLCBk
ZWx0YSk7CiAjZW5kaWYKQEAgLTIyNDQsNyArMjI0NCw3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1l
bnQ6OmN1cnJlbnRUaW1lKCkgY28KICNpZiBMT0dfQ0FDSEVEX1RJTUVfV0FSTklOR1MKICAgICBp
ZiAobWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSAmJiBub3cgPiBtX21pbmltdW1XYWxs
Q2xvY2tUaW1lVG9DYWNoZU1lZGlhVGltZSAmJiBtX2NhY2hlZFRpbWUgIT0gTWVkaWFQbGF5ZXI6
OmludmFsaWRUaW1lKCkpIHsKICAgICAgICAgZG91YmxlIHdhbGxDbG9ja0RlbHRhID0gbm93IC0g
bV9jYWNoZWRUaW1lV2FsbENsb2NrVXBkYXRlVGltZTsKLSAgICAgICAgZmxvYXQgZGVsdGEgPSBt
X2NhY2hlZFRpbWUgKyAobV9wbGF5YmFja1JhdGUgKiB3YWxsQ2xvY2tEZWx0YSkgLSBtX3BsYXll
ci0+Y3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIGRlbHRhID0gbV9jYWNoZWRUaW1lICsg
KG1fcGxheWJhY2tSYXRlICogd2FsbENsb2NrRGVsdGEpIC0gbV9wbGF5ZXItPmN1cnJlbnRUaW1l
KCk7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lIC0g
Y2FjaGVkIHRpbWUgd2FzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBpdCBleHBp
cmVkIiwgZGVsdGEpOwogICAgIH0KICNlbmRpZgpAQCAtMjI1NCw3ICsyMjU0LDcgQEAgZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoKSBjbwogICAgIHJldHVybiBtX2NhY2hlZFRp
bWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGlt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRU
aW1lKGRvdWJsZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9tZWRpYUNv
bnRyb2xsZXIpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTIyNjMsNyAr
MjI2Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q3VycmVudFRpbWUoZmwKICAgICBz
ZWVrKHRpbWUsIGVjKTsKIH0KIAotZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6c3RhcnRUaW1lKCkg
Y29uc3QKK2RvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpzdGFydFRpbWUoKSBjb25zdAogewogICAg
IGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjI4MSwxMiArMjI4MSwxMiBA
QCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6aW5pdGlhbFRpbWUoKSBjCiAgICAgcmV0dXJuIG1f
cGxheWVyLT5pbml0aWFsVGltZSgpOwogfQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkdXJh
dGlvbigpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAog
ewogICAgIGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAg
ICAgICAgcmV0dXJuIG1fcGxheWVyLT5kdXJhdGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7CisgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgp
IGNvbnN0CkBAIC0yMjk0LDEyICsyMjk0LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1
c2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXVzZWQ7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVs
ZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdAorZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RlZmF1bHRQ
bGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXli
YWNrUmF0ZShmbG9hdCByYXRlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxh
eWJhY2tSYXRlKGRvdWJsZSByYXRlKQogewogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUg
IT0gcmF0ZSkgewogICAgICAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtMjMw
NywxMiArMjMwNywxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFj
CiAgICAgfQogfQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1JhdGUoKSBjb25z
dAorZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcGxheWJhY2tSYXRlOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBs
YXliYWNrUmF0ZShmbG9hdCByYXRlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFj
a1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJhdGUpOwogICAgIApAQCAtMjMyOCw3ICsyMzI4LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUoZgogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrUmF0ZSgpCiB7Ci0gICAgZmxvYXQgZWZmZWN0aXZlUmF0
ZSA9IG1fbWVkaWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXItPnBsYXliYWNrUmF0ZSgp
IDogbV9wbGF5YmFja1JhdGU7CisgICAgZG91YmxlIGVmZmVjdGl2ZVJhdGUgPSBtX21lZGlhQ29u
dHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLT5wbGF5YmFja1JhdGUoKSA6IG1fcGxheWJhY2tS
YXRlOwogICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXll
ci0+cmF0ZSgpICE9IGVmZmVjdGl2ZVJhdGUpCiAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKGVm
ZmVjdGl2ZVJhdGUpOwogfQpAQCAtMjYyNCwxMiArMjYyNCwxMiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldENvbnRyb2xzKGJvb2wgCiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShjb250cm9s
c0F0dHIsIGIpOwogfQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50Ojp2b2x1bWUoKSBjb25zdAor
ZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
dm9sdW1lOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2ws
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91
YmxlIHZvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2V0Vm9sdW1lKCVmKSIsIHZvbCk7CiAKQEAgLTI3NTgsNyArMjc1OCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVUaW1ldXBkYXQKIAogICAgIC8vIFNvbWUgbWVk
aWEgZW5naW5lcyBtYWtlIG11bHRpcGxlICJ0aW1lIGNoYW5nZWQiIGNhbGxiYWNrcyBhdCB0aGUg
c2FtZSB0aW1lLCBidXQgd2Ugb25seSB3YW50IG9uZQogICAgIC8vIGV2ZW50IGF0IGEgZ2l2ZW4g
dGltZSBzbyBmaWx0ZXIgaGVyZQotICAgIGZsb2F0IG1vdmllVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgZG91YmxlIG1vdmllVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKG1vdmllVGlt
ZSAhPSBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUpIHsKICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKICAgICAgICAgbV9sYXN0VGltZVVw
ZGF0ZUV2ZW50V2FsbFRpbWUgPSBub3c7CkBAIC0yNzcxLDIwICsyNzcxLDIwIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y2FuUGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhdXNlZCgpIHx8IGVu
ZGVkKCkgfHwgbV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQTsKIH0KIAotZmxvYXQgSFRNTE1l
ZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgpIGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6cGVyY2VudExvYWRlZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgZmxvYXQgZHVyYXRpb24gPSBtX3BsYXllci0+ZHVyYXRpb24oKTsKKyAg
ICBkb3VibGUgZHVyYXRpb24gPSBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAogICAgIGlmICghZHVy
YXRpb24gfHwgc3RkOjppc2luZihkdXJhdGlvbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ZmxvYXQgYnVmZmVyZWQgPSAwOworICAgIGRvdWJsZSBidWZmZXJlZCA9IDA7CiAgICAgUmVmUHRy
PFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBtX3BsYXllci0+YnVmZmVyZWQoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAg
ICBmbG9hdCBzdGFydCA9IHRpbWVSYW5nZXMtPnN0YXJ0KGksIElHTk9SRV9FWENFUFRJT04pOwot
ICAgICAgICBmbG9hdCBlbmQgPSB0aW1lUmFuZ2VzLT5lbmQoaSwgSUdOT1JFX0VYQ0VQVElPTik7
CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMtPnN0YXJ0KGksIElHTk9SRV9FWENF
UFRJT04pOworICAgICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy0+ZW5kKGksIElHTk9SRV9F
WENFUFRJT04pOwogICAgICAgICBidWZmZXJlZCArPSBlbmQgLSBzdGFydDsKICAgICB9CiAgICAg
cmV0dXJuIGJ1ZmZlcmVkIC8gZHVyYXRpb247CkBAIC0zNDYyLDggKzM0NjIsOCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoCiAgICAgLy8gbW92aWUgdGltZS4KICAg
ICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxzZSk7CiAKLSAgICBmbG9hdCBub3cgPSBjdXJy
ZW50VGltZSgpOwotICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9
IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGR1ciA9IGR1cmF0aW9uKCk7CiAgICAgCiAgICAg
Ly8gV2hlbiB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiByZWFjaGVzIHRoZSBlbmQgb2Yg
dGhlIG1lZGlhIHJlc291cmNlIHdoZW4gdGhlIGRpcmVjdGlvbiBvZgogICAgIC8vIHBsYXliYWNr
IGlzIGZvcndhcmRzLCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgZm9sbG93IHRoZXNlIHN0ZXBz
OgpAQCAtMzUwNSw3ICszNTA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clZvbHVtZQogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAg
IGlmIChtX3BsYXllcikgewotICAgICAgICBmbG9hdCB2b2wgPSBtX3BsYXllci0+dm9sdW1lKCk7
CisgICAgICAgIGRvdWJsZSB2b2wgPSBtX3BsYXllci0+dm9sdW1lKCk7CiAgICAgICAgIGlmICh2
b2wgIT0gbV92b2x1bWUpIHsKICAgICAgICAgICAgIG1fdm9sdW1lID0gdm9sOwogICAgICAgICAg
ICAgdXBkYXRlVm9sdW1lKCk7CkBAIC0zNTM0LDggKzM1MzQsOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpCiAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCk7CiAgICAgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5n
ZWQocGxheWVyKTsKIAotICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZmxvYXQg
ZHVyID0gZHVyYXRpb24oKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBk
b3VibGUgZHVyID0gZHVyYXRpb24oKTsKICAgICBpZiAobm93ID4gZHVyKQogICAgICAgICBzZWVr
KGR1ciwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTM2OTAsNyArMzY5MCw3IEBAIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
SFRNTE1lZGlhRWxlbWVudDo6cGxheWVkKCkKIHsKICAgICBpZiAobV9wbGF5aW5nKSB7Ci0gICAg
ICAgIGZsb2F0IHRpbWUgPSBjdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUgdGltZSA9IGN1
cnJlbnRUaW1lKCk7CiAgICAgICAgIGlmICh0aW1lID4gbV9sYXN0U2Vla1RpbWUpCiAgICAgICAg
ICAgICBhZGRQbGF5ZWRSYW5nZShtX2xhc3RTZWVrVGltZSwgdGltZSk7CiAgICAgfQpAQCAtMzcy
Miw3ICszNzIyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb3VsZFBsYXlJZkVub3VnaAog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2soKSBjb25zdAogewotICAgIGZs
b2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1cmF0aW9uKCk7CiAgICAg
aWYgKCFtX3BsYXllciB8fCBzdGQ6OmlzbmFuKGR1cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMzczNiw3ICszNzM2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXli
YWNrKCkgYwogICAgIC8vIGFuZCB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiBpcyB0aGUg
ZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSBhbmQgdGhlIGRpcmVjdGlvbgogICAgIC8vIG9mIHBs
YXliYWNrIGlzIGZvcndhcmRzLCBFaXRoZXIgdGhlIG1lZGlhIGVsZW1lbnQgZG9lcyBub3QgaGF2
ZSBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCwKICAgICAvLyBvciB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCi0gICAgZmxvYXQgbm93ID0gY3VycmVu
dFRpbWUoKTsKKyAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAobV9wbGF5
YmFja1JhdGUgPiAwKQogICAgICAgICByZXR1cm4gZHVyID4gMCAmJiBub3cgPj0gZHVyICYmICgh
bG9vcCgpIHx8IG1fbWVkaWFDb250cm9sbGVyKTsKIApAQCAtMzc2NSwxMiArMzc2NSwxMiBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1mbG9hdCBIVE1MTWVkaWFFbGVtZW50OjptaW5UaW1lU2Vla2FibGUoKSBjb25zdAor
ZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6Om1pblRpbWVTZWVrYWJsZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIDA7CiB9CiAKLWZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6Om1heFRpbWVTZWVrYWJsZSgp
IGNvbnN0Citkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+bWF4VGltZVNlZWthYmxlKCkgOiAw
OwogfQpAQCAtMzc4Myw3ICszNzgzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVW
b2x1bWUoKQogICAgIC8vIEF2b2lkIHJlY3Vyc2lvbiB3aGVuIHRoZSBwbGF5ZXIgcmVwb3J0cyB2
b2x1bWUgY2hhbmdlcy4KICAgICBpZiAoIXByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkp
IHsKICAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICAgICAgZmxv
YXQgdm9sdW1lTXVsdGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKKyAg
ICAgICAgZG91YmxlIHZvbHVtZU11bHRpcGxpZXIgPSBwYWdlID8gcGFnZS0+bWVkaWFWb2x1bWUo
KSA6IDE7CiAgICAgICAgIGJvb2wgc2hvdWxkTXV0ZSA9IG1fbXV0ZWQ7CiAKICAgICAgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyKSB7CkBAIC0zODQ4LDcgKzM4NDgsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAKICAgICAgICAgbV9wbGF5YmFja1Byb2dyZXNz
VGltZXIuc3RvcCgpOwogICAgICAgICBtX3BsYXlpbmcgPSBmYWxzZTsKLSAgICAgICAgZmxvYXQg
dGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSB0aW1lID0gY3VycmVudFRpbWUo
KTsKICAgICAgICAgaWYgKHRpbWUgPiBtX2xhc3RTZWVrVGltZSkKICAgICAgICAgICAgIGFkZFBs
YXllZFJhbmdlKG1fbGFzdFNlZWtUaW1lLCB0aW1lKTsKIApAQCAtNDcxMiw3ICs0NzEyLDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQwogICAgIC8vIG9yIGlmIGl0
cyBtZWRpYSBjb250cm9sbGVyIHBvc2l0aW9uIGlzIGVpdGhlciBiZWZvcmUgdGhlIG1lZGlhIHJl
c291cmNlJ3MgZWFybGllc3QgcG9zc2libGUgCiAgICAgLy8gcG9zaXRpb24gcmVsYXRpdmUgdG8g
dGhlIE1lZGlhQ29udHJvbGxlcidzIHRpbWVsaW5lIG9yIGFmdGVyIHRoZSBlbmQgb2YgdGhlIG1l
ZGlhIHJlc291cmNlIAogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0
aW1lbGluZS4KLSAgICBmbG9hdCBtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA9IG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBtZWRpYUNvbnRyb2xsZXJQb3NpdGlv
biA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwogICAgIGlmIChtZWRpYUNvbnRy
b2xsZXJQb3NpdGlvbiA8IHN0YXJ0VGltZSgpIHx8IG1lZGlhQ29udHJvbGxlclBvc2l0aW9uID4g
c3RhcnRUaW1lKCkgKyBkdXJhdGlvbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNDcy
Miw3ICs0NzIyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVSSSgpCiB7CiAgICAg
TWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJlbnRTcmMpOwotICAg
IGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgZG91YmxlIGR1ciA9IGR1cmF0aW9uKCk7CiAg
ICAgCiAgICAgZG91YmxlIHN0YXJ0ID0gZnJhZ21lbnRQYXJzZXIuc3RhcnRUaW1lKCk7CiAgICAg
aWYgKHN0YXJ0ICE9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmludmFsaWRUaW1lVmFsdWUoKSAm
JiBzdGFydCA+IDApIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzQXVkaW8oKSBjb25zdDsKIAotICAgIHZvaWQgcmV3aW5kKGZsb2F0IHRpbWVEZWx0YSk7
CisgICAgdm9pZCByZXdpbmQoZG91YmxlIHRpbWVEZWx0YSk7CiAgICAgdm9pZCByZXR1cm5Ub1Jl
YWx0aW1lKCk7CiAKICAgICAvLyBFdmVudHVhbGx5IG92ZXJsb2FkZWQgaW4gSFRNTFZpZGVvRWxl
bWVudApAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgcHVibGljOgogICAgIGJvb2wgc2Vla2luZygpIGNv
bnN0OwogCiAvLyBwbGF5YmFjayBzdGF0ZQotICAgIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGRv
dWJsZSBjdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91Ymxl
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgZG91YmxlIGluaXRpYWxUaW1lKCkgY29uc3Q7Ci0gICAg
ZmxvYXQgc3RhcnRUaW1lKCkgY29uc3Q7Ci0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKKyAg
ICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CisgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7
CiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKLSAgICBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKLSAgICBm
bG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9h
dCk7CisgICAgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKTsKKyAgICBkb3VibGUgcGxheWJhY2tSYXRlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKTsKICAgICB2b2lkIHVwZGF0
ZVBsYXliYWNrUmF0ZSgpOwogICAgIGJvb2wgd2Via2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdDsK
ICAgICB2b2lkIHNldFdlYmtpdFByZXNlcnZlc1BpdGNoKGJvb2wpOwpAQCAtMjA4LDggKzIwOCw4
IEBAIHB1YmxpYzoKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7Ci0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRWb2x1bWUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBkb3VibGUgdm9sdW1l
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgYm9vbCBtdXRlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAKQEAgLTIx
OSw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CiAK
LSAgICBmbG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CisgICAgZG91YmxlIHBlcmNlbnRMb2Fk
ZWQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNDk1LDEw
ICs0OTUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
CiAgICAgdm9pZCBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKIAotICAgIHZvaWQgc2VlayhmbG9hdCB0
aW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZWVrKGRvdWJsZSB0aW1lLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBmaW5pc2hTZWVrKCk7CiAgICAgdm9pZCBjaGVja0lmU2Vla05l
ZWRlZCgpOwotICAgIHZvaWQgYWRkUGxheWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCk7
CisgICAgdm9pZCBhZGRQbGF5ZWRSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwogICAg
IAogICAgIHZvaWQgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoYm9vbCBwZXJpb2RpY0V2ZW50KTsK
ICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwpA
QCAtNTIyLDcgKzUyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgdm9pZCB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGZsb2F0KTsKKyAgICB2b2lkIHVwZGF0
ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZG91YmxlKTsKICAgICBIVE1MVHJhY2tFbGVtZW50KiBzaG93
aW5nVHJhY2tXaXRoU2FtZUtpbmQoSFRNTFRyYWNrRWxlbWVudCopIGNvbnN0OwogCiAgICAgdm9p
ZCBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKQEAgLTU0OSwx
MyArNTQ5LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24o
KSBjb25zdDsKICAgICBib29sIGNvdWxkUGxheUlmRW5vdWdoRGF0YSgpIGNvbnN0OwogCi0gICAg
ZmxvYXQgbWluVGltZVNlZWthYmxlKCkgY29uc3Q7Ci0gICAgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3Q7CisgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OworICAgIGRvdWJs
ZSBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKIAogICAgIC8vIFBhdXNlcyBwbGF5YmFjayB3aXRo
b3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKICAgICB2b2lkIHNl
dFBhdXNlZEludGVybmFsKGJvb2wpOwogCi0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGVJbnRlcm5h
bChmbG9hdCk7CisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGVJbnRlcm5hbChkb3VibGUpOwogCiAg
ICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKTsKIApAQCAtNTk5LDggKzU5OSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKICAgICBP
d25QdHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogCi0gICAgZmxvYXQg
bV9wbGF5YmFja1JhdGU7Ci0gICAgZmxvYXQgbV9kZWZhdWx0UGxheWJhY2tSYXRlOworICAgIGRv
dWJsZSBtX3BsYXliYWNrUmF0ZTsKKyAgICBkb3VibGUgbV9kZWZhdWx0UGxheWJhY2tSYXRlOwog
ICAgIGJvb2wgbV93ZWJraXRQcmVzZXJ2ZXNQaXRjaDsKICAgICBOZXR3b3JrU3RhdGUgbV9uZXR3
b3JrU3RhdGU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CkBAIC02MDksOCArNjA5LDgg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCi0gICAgZmxv
YXQgbV92b2x1bWU7Ci0gICAgZmxvYXQgbV9sYXN0U2Vla1RpbWU7CisgICAgZG91YmxlIG1fdm9s
dW1lOworICAgIGRvdWJsZSBtX2xhc3RTZWVrVGltZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3By
ZXZpb3VzUHJvZ3Jlc3M7CiAgICAgZG91YmxlIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7CkBAIC02
MTksNyArNjE5LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9sYXN0VGltZVVwZGF0ZUV2ZW50
V2FsbFRpbWU7CiAKICAgICAvLyBUaGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMg
c2VudCBpbiBtb3ZpZSB0aW1lLgotICAgIGZsb2F0IG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmll
VGltZTsKKyAgICBkb3VibGUgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lOwogICAgIAog
ICAgIC8vIExvYWRpbmcgc3RhdGUuCiAgICAgZW51bSBMb2FkU3RhdGUgeyBXYWl0aW5nRm9yU291
cmNlLCBMb2FkaW5nRnJvbVNyY0F0dHIsIExvYWRpbmdGcm9tU291cmNlRWxlbWVudCB9OwpAQCAt
NjQ2LDcgKzY0Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lZGlhU291cmNlPiBtX21lZGlh
U291cmNlOwogI2VuZGlmCiAKLSAgICBtdXRhYmxlIGZsb2F0IG1fY2FjaGVkVGltZTsKKyAgICBt
dXRhYmxlIGRvdWJsZSBtX2NhY2hlZFRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZWRU
aW1lV2FsbENsb2NrVXBkYXRlVGltZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX21pbmltdW1XYWxs
Q2xvY2tUaW1lVG9DYWNoZU1lZGlhVGltZTsKIApAQCAtNjk1LDggKzY5NSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3RyYWNrc0FyZVJlYWR5IDogMTsKICAgICBib29sIG1faGF2ZVZpc2libGVU
ZXh0VHJhY2sgOiAxOwogICAgIGJvb2wgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA6IDE7
Ci0KICAgICBmbG9hdCBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lOworCiAgICAgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2RlOwog
CiAgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NjMsMTQgKzYzLDE0IEBAIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVMK
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNlZWtpbmc7CiAKIC8vIHBsYXliYWNrIHN0YXRl
Ci1hdHRyaWJ1dGUgZmxvYXQgY3VycmVudFRpbWUKK2F0dHJpYnV0ZSBkb3VibGUgY3VycmVudFRp
bWUKICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogcmVhZG9ubHkgYXR0cmlidXRl
IGRvdWJsZSBpbml0aWFsVGltZTsKLXJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzdGFydFRpbWU7
Ci1yZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgZHVyYXRpb247CityZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIHN0YXJ0VGltZTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZHVyYXRpb247CiBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7Ci1hdHRyaWJ1dGUgZmxvYXQgZGVmYXVs
dFBsYXliYWNrUmF0ZTsKLWF0dHJpYnV0ZSBmbG9hdCBwbGF5YmFja1JhdGU7CithdHRyaWJ1dGUg
ZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGU7CithdHRyaWJ1dGUgZG91YmxlIHBsYXliYWNrUmF0
ZTsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKIHJlYWRvbmx5IGF0dHJp
YnV0ZSBUaW1lUmFuZ2VzIHNlZWthYmxlOwogcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZW5k
ZWQ7CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgcGF1c2UoKTsKIAogLy8gY29udHJvbHMKIGF0dHJp
YnV0ZSBib29sZWFuIGNvbnRyb2xzOwotYXR0cmlidXRlIGZsb2F0IHZvbHVtZSAKK2F0dHJpYnV0
ZSBkb3VibGUgdm9sdW1lIAogICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiBhdHRy
aWJ1dGUgYm9vbGVhbiBtdXRlZDsKIGF0dHJpYnV0ZSBbUmVmbGVjdD1tdXRlZF0gYm9vbGVhbiBk
ZWZhdWx0TXV0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwxMyArMTI5LDEzIEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjoKICAgICByZXR1cm4gcGxheWVkUmFuZ2VzOwogfQog
Ci1mbG9hdCBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKK2RvdWJsZSBNZWRpYUNv
bnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUg
Y2FjaGluZyB0aGUgbWF4aW11bSBkdXJhdGlvbiBhbmQgb25seSB1cGRhdGluZyB0aGUgY2FjaGVk
IHZhbHVlCiAgICAgLy8gd2hlbiB0aGUgc2xhdmVkIG1lZGlhIGVsZW1lbnRzJyBkdXJhdGlvbnMg
Y2hhbmdlLgotICAgIGZsb2F0IG1heER1cmF0aW9uID0gMDsKKyAgICBkb3VibGUgbWF4RHVyYXRp
b24gPSAwOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX21lZGlhRWxlbWVu
dHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVs
ZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKTsKKyAgICAgICAgZG91YmxlIGR1cmF0aW9uID0gbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVyYXRpb24oKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4o
ZHVyYXRpb24pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG1heER1cmF0aW9uID0g
bWF4KG1heER1cmF0aW9uLCBkdXJhdGlvbik7CkBAIC0xNDMsMjYgKzE0MywyNiBAQCBmbG9hdCBN
ZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbWF4RHVyYXRpb247
CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAorZG91Ymxl
IE1lZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAogewogICAgIGlmIChtX21lZGlh
RWxlbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChtX3Bvc2l0
aW9uID09IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAgIC8vIFNvbWUgY2xv
Y2tzIG1heSByZXR1cm4gdGltZXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgWzAuLmR1cmF0aW9uXS4K
LSAgICAgICAgbV9wb3NpdGlvbiA9IG1heCgwLjBmLCBtaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+
Y3VycmVudFRpbWUoKSkpOworICAgICAgICBtX3Bvc2l0aW9uID0gbWF4KDAuMCwgbWluKGR1cmF0
aW9uKCksIG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpKTsKICAgICAgICAgbV9jbGVhclBvc2l0aW9u
VGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0KIAogICAgIHJldHVybiBtX3Bvc2l0aW9uOwog
fQogCi12b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdGltZSwgRXhj
ZXB0aW9uQ29kZSYgY29kZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRDdXJyZW50VGltZShk
b3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgY29kZSkKIHsKICAgICAvLyBXaGVuIHRoZSB1c2Vy
IGFnZW50IGlzIHRvIHNlZWsgdGhlIG1lZGlhIGNvbnRyb2xsZXIgdG8gYSBwYXJ0aWN1bGFyIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiwgCiAgICAgLy8gaXQgbXVzdCBmb2xsb3cgdGhlc2Ugc3RlcHM6
CiAgICAgLy8gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gemVybywg
dGhlbiBzZXQgaXQgdG8gemVyby4KLSAgICB0aW1lID0gbWF4KDAuMGYsIHRpbWUpOworICAgIHRp
bWUgPSBtYXgoMC4wLCB0aW1lKTsKICAgICAKICAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBv
c2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhl
biBzZXQgaXQgCiAgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnBhdXNlKCkKICAgICByZXBvcnRD
b250cm9sbGVyU3RhdGUoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQ
bGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXREZWZhdWx0
UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQogewogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1Jh
dGUgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDEyICsyMzAsMTIgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnNldERlZmF1bHRQbGF5YmFjawogICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7CiB9CiAKLWZsb2F0IE1lZGlhQ29udHJvbGxlcjo6
cGxheWJhY2tSYXRlKCkgY29uc3QKK2RvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OnBsYXliYWNrUmF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xvY2stPnBsYXlSYXRlKCk7CiB9CiAKLXZvaWQg
TWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgTWVkaWFD
b250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CiAgICAgaWYgKG1fY2xv
Y2stPnBsYXlSYXRlKCkgPT0gcmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3
IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRQbGF5YmFja1JhdGUoZmwKICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogfQogCi12b2lkIE1lZGlhQ29u
dHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IGxldmVsLCBFeGNlcHRpb25Db2RlJiBjb2RlKQordm9p
ZCBNZWRpYUNvbnRyb2xsZXI6OnNldFZvbHVtZShkb3VibGUgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUm
IGNvZGUpCiB7CiAgICAgaWYgKG1fdm9sdW1lID09IGxldmVsKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgJKHJldmlzaW9uIDE0NzkzOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDIzICs2MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IHNlZWthYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IHBsYXllZCgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEN1cnJlbnRUaW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBkb3Vi
bGUgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXVzZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpOwogICAgIHZvaWQgdW5wYXVzZSgpOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgZGVmYXVs
dFBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0KTsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
UGxheWJhY2tSYXRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUo
ZG91YmxlKTsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOworICAgIHZpcnR1YWwgZG91
YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1Jh
dGUoZG91YmxlKTsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdm9sdW1lOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dm9sdW1lOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211
dGVkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTQzLDkgKzE0Myw5
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVu
ZXI7CiAgICAgVmVjdG9yPEhUTUxNZWRpYUVsZW1lbnQqPiBtX21lZGlhRWxlbWVudHM7CiAgICAg
Ym9vbCBtX3BhdXNlZDsKLSAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7Ci0gICAgZmxv
YXQgbV92b2x1bWU7Ci0gICAgbXV0YWJsZSBmbG9hdCBtX3Bvc2l0aW9uOworICAgIGRvdWJsZSBt
X2RlZmF1bHRQbGF5YmFja1JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOworICAgIG11dGFibGUg
ZG91YmxlIG1fcG9zaXRpb247CiAgICAgYm9vbCBtX211dGVkOwogICAgIFJlYWR5U3RhdGUgbV9y
ZWFkeVN0YXRlOwogICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFjZS5oCShyZXZpc2lv
biAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlckludGVyZmFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyMiArNDUsMjIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgPSAwOwogICAgIAotICAgIHZpcnR1
YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50
VGltZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQs
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKICAgICAKLSAg
ICB2aXJ0dWFsIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSkgPSAwOwogICAgIAotICAgIHZpcnR1YWwg
ZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpID0gMDsK
ICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIHZvbHVtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRv
dWJsZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1U
aW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGZsb2F0IHN0YXJ0LCBmbG9hdCBlbmQpCitUaW1lUmFuZ2Vz
OjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIHsKICAgICBhZGQoc3RhcnQs
IGVuZCk7CiB9CkBAIC01MywxOSArNTMsMTkgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1l
UmFuZ2VzOjpjb3B5KAogdm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQogewogICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBpbnZlcnRlZCA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwotICAgIGZsb2F0IHBv
c0luZiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwotICAgIGZsb2F0
IG5lZ0luZiA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICBk
b3VibGUgcG9zSW5mID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwor
ICAgIGRvdWJsZSBuZWdJbmYgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpOwogCiAgICAgaWYgKCFtX3Jhbmdlcy5zaXplKCkpCiAgICAgICAgIGludmVydGVkLT5hZGQo
bmVnSW5mLCBwb3NJbmYpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoZmxvYXQgc3RhcnQgPSBt
X3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQgIT0gbmVnSW5mKQorICAgICAgICBpZiAoZG91YmxlIHN0
YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0ICE9IG5lZ0luZikKICAgICAgICAgICAgIGlu
dmVydGVkLT5hZGQobmVnSW5mLCBzdGFydCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCArIDEgPCBtX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpCiAgICAgICAgICAgICBp
bnZlcnRlZC0+YWRkKG1fcmFuZ2VzW2luZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5t
X3N0YXJ0KTsKIAotICAgICAgICBpZiAoZmxvYXQgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5k
ICE9IHBvc0luZikKKyAgICAgICAgaWYgKGRvdWJsZSBlbmQgPSBtX3Jhbmdlcy5sYXN0KCkubV9l
bmQgIT0gcG9zSW5mKQogICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChlbmQsIHBvc0luZik7CiAg
ICAgfQogCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgVGltZVJhbmdlczo6dW5pb25XaXRoKGNvbnN0
IFRpbWVSYW4KICAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKIH0KIAotZmxv
YXQgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0IAogeyAKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKICAgICAg
ICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmbG9hdCBUaW1lUmFu
Z2VzOjpzdGFydCh1bnNpZ25lZCBpbmRleCwgCiAgICAgcmV0dXJuIG1fcmFuZ2VzW2luZGV4XS5t
X3N0YXJ0OwogfQogCi1mbG9hdCBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdCAKK2RvdWJsZSBUaW1lUmFuZ2VzOjplbmQodW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKIHsgCiAgICAgaWYgKGluZGV4ID49IGxlbmd0
aCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0xMTMsNyArMTEzLDcgQEAg
ZmxvYXQgVGltZVJhbmdlczo6ZW5kKHVuc2lnbmVkIGluZGV4LCBFeAogICAgIHJldHVybiBtX3Jh
bmdlc1tpbmRleF0ubV9lbmQ7CiB9CiAKLXZvaWQgVGltZVJhbmdlczo6YWRkKGZsb2F0IHN0YXJ0
LCBmbG9hdCBlbmQpIAordm9pZCBUaW1lUmFuZ2VzOjphZGQoZG91YmxlIHN0YXJ0LCBkb3VibGUg
ZW5kKSAKIHsKICAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKICAgICB1bnNpZ25lZCBpbnQgb3Zl
cmxhcHBpbmdBcmNJbmRleDsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFRpbWVSYW5nZXM6OmFk
ZChmbG9hdCBzdGFydCwgZmxvYXQgCiAgICAgbV9yYW5nZXMuaW5zZXJ0KG92ZXJsYXBwaW5nQXJj
SW5kZXgsIGFkZGVkUmFuZ2UpOwogfQogCi1ib29sIFRpbWVSYW5nZXM6OmNvbnRhaW4oZmxvYXQg
dGltZSkgY29uc3QKK2Jvb2wgVGltZVJhbmdlczo6Y29udGFpbihkb3VibGUgdGltZSkgY29uc3QK
IHsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykgewogICAgICAg
ICBpZiAodGltZSA+PSBzdGFydChuLCBJR05PUkVfRVhDRVBUSU9OKSAmJiB0aW1lIDw9IGVuZChu
LCBJR05PUkVfRVhDRVBUSU9OKSkKQEAgLTE2NSwxMyArMTY1LDEzIEBAIGJvb2wgVGltZVJhbmdl
czo6Y29udGFpbihmbG9hdCB0aW1lKSBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZsb2F0
IFRpbWVSYW5nZXM6Om5lYXJlc3QoZmxvYXQgdGltZSkgY29uc3QKK2RvdWJsZSBUaW1lUmFuZ2Vz
OjpuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIGZsb2F0IGNsb3Nlc3QgPSAwOwor
ICAgIGRvdWJsZSBjbG9zZXN0ID0gMDsKICAgICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0aCgpOwog
ICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwgY291bnQ7IG5keCsrKSB7Ci0gICAgICAg
IGZsb2F0IHN0YXJ0VGltZSA9IHN0YXJ0KG5keCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAg
IGZsb2F0IGVuZFRpbWUgPSBlbmQobmR4LCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgZG91
YmxlIHN0YXJ0VGltZSA9IHN0YXJ0KG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRv
dWJsZSBlbmRUaW1lID0gZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIGlmICh0
aW1lID49IHN0YXJ0VGltZSAmJiB0aW1lIDw9IGVuZFRpbWUpCiAgICAgICAgICAgICByZXR1cm4g
dGltZTsKICAgICAgICAgaWYgKGZhYnMoc3RhcnRUaW1lIC0gdGltZSkgPCBjbG9zZXN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGltZVJhbmdlcyk7
CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNyZWF0ZShmbG9hdCBz
dGFydCwgZmxvYXQgZW5kKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGNyZWF0
ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRpbWVSYW5nZXMoc3RhcnQsIGVuZCkpOwogICAgIH0KQEAgLTUyLDMyICs1MiwzMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyopOwogCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXMuc2l6ZSgpOyB9Ci0gICAg
ZmxvYXQgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBm
bG9hdCBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBkb3Vi
bGUgc3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBkb3Vi
bGUgZW5kKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgCi0gICAg
dm9pZCBhZGQoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCk7CisgICAgdm9pZCBhZGQoZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKTsKICAgICAKLSAgICBib29sIGNvbnRhaW4oZmxvYXQgdGltZSkgY29u
c3Q7CisgICAgYm9vbCBjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICAKLSAgICBmbG9h
dCBuZWFyZXN0KGZsb2F0IHRpbWUpIGNvbnN0OworICAgIGRvdWJsZSBuZWFyZXN0KGRvdWJsZSB0
aW1lKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUaW1lUmFuZ2VzKCkgeyB9Ci0gICAgVGltZVJh
bmdlcyhmbG9hdCBzdGFydCwgZmxvYXQgZW5kKTsKKyAgICBUaW1lUmFuZ2VzKGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCk7CiAgICAgVGltZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJik7CiAKICAg
ICAvLyBXZSBjb25zaWRlciBhbGwgdGhlIFJhbmdlcyB0byBiZSBzZW1pLWJvdW5kZWQgYXMgZm9s
bG93OiBbc3RhcnQsIGVuZFsKICAgICBzdHJ1Y3QgUmFuZ2UgewogICAgICAgICBSYW5nZSgpIHsg
fQotICAgICAgICBSYW5nZShmbG9hdCBzdGFydCwgZmxvYXQgZW5kKQorICAgICAgICBSYW5nZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc3RhcnQg
PSBzdGFydDsKICAgICAgICAgICAgIG1fZW5kID0gZW5kOwogICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IG1fc3RhcnQ7Ci0gICAgICAgIGZsb2F0IG1fZW5kOworICAgICAgICBkb3VibGUgbV9zdGFy
dDsKKyAgICAgICAgZG91YmxlIG1fZW5kOwogCi0gICAgICAgIGlubGluZSBib29sIGlzUG9pbnRJ
blJhbmdlKGZsb2F0IHBvaW50KSBjb25zdAorICAgICAgICBpbmxpbmUgYm9vbCBpc1BvaW50SW5S
YW5nZShkb3VibGUgcG9pbnQpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X3N0YXJ0IDw9IHBvaW50ICYmIHBvaW50IDwgbV9lbmQ7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmlkbAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIFRpbWVSYW5nZXMgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBmbG9hdCBz
dGFydChpbiB1bnNpZ25lZCBsb25nIGluZGV4KQorICAgIGRvdWJsZSBzdGFydChpbiB1bnNpZ25l
ZCBsb25nIGluZGV4KQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgZmxvYXQg
ZW5kKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCisgICAgZG91YmxlIGVuZChpbiB1bnNpZ25lZCBs
b25nIGluZGV4KQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRUeXBlcy5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDYgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyTWVkaWEuaCIKQEAgLTQ4LDEwICs0NywxMCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogY2xhc3MgRXZlbnQ7CiAKIC8vIEZJWE1FOiBUaGVzZSBjb25zdGFudHMgbWF5IG5lZWQg
dG8gYmUgdHdlYWtlZCB0byBiZXR0ZXIgbWF0Y2ggdGhlIHNlZWtpbmcgaW4gdGhlIFF1aWNrVGlt
ZSBwbHVnLWluLgotc3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwUmVwZWF0RGVsYXkgPSAwLjFmOwot
c3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwVGltZSA9IDAuMmY7Ci1zdGF0aWMgY29uc3QgZmxvYXQg
Y1NjYW5SZXBlYXREZWxheSA9IDEuNWY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgY1NjYW5NYXhpbXVt
UmF0ZSA9IDg7CitzdGF0aWMgY29uc3QgZG91YmxlIGNTa2lwUmVwZWF0RGVsYXkgPSAwLjE7Citz
dGF0aWMgY29uc3QgZG91YmxlIGNTa2lwVGltZSA9IDAuMjsKK3N0YXRpYyBjb25zdCBkb3VibGUg
Y1NjYW5SZXBlYXREZWxheSA9IDEuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUgY1NjYW5NYXhpbXVt
UmF0ZSA9IDg7CiAKIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KE5vZGUq
IG5vZGUpCiB7CkBAIC0xMzQsNyArMTMzLDcgQEAgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVt
ZW50OjpNZWRpYUNvbgogewogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVu
dDo6c2V0Q3VycmVudFZhbHVlKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5RWxlbWVudDo6c2V0Q3VycmVudFZhbHVlKGRvdWJsZSB0aW1lKQogewogICAgIG1fY3VycmVu
dFZhbHVlID0gdGltZTsKIH0KQEAgLTIyOSw5ICsyMjgsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50OjpzdG9wCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKIH0KIAot
ZmxvYXQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKK2Rv
dWJsZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogewot
ICAgIGZsb2F0IHJhdGUgPSBzdGQ6Om1pbihjU2Nhbk1heGltdW1SYXRlLCBmYWJzZihtZWRpYUNv
bnRyb2xsZXIoKS0+cGxheWJhY2tSYXRlKCkgKiAyKSk7CisgICAgZG91YmxlIHJhdGUgPSBzdGQ6
Om1pbihjU2Nhbk1heGltdW1SYXRlLCBmYWJzKG1lZGlhQ29udHJvbGxlcigpLT5wbGF5YmFja1Jh
dGUoKSAqIDIpKTsKICAgICBpZiAoIWlzRm9yd2FyZEJ1dHRvbigpKQogICAgICAgICByYXRlICo9
IC0xOwogICAgIHJldHVybiByYXRlOwpAQCAtMjQwLDcgKzIzOSw3IEBAIGZsb2F0IE1lZGlhQ29u
dHJvbFNlZWtCdXR0b25FbGVtZW50OjpuZXgKIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
PiopCiB7CiAgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewotICAgICAgICBmbG9hdCBza2lw
VGltZSA9IGlzRm9yd2FyZEJ1dHRvbigpID8gY1NraXBUaW1lIDogLWNTa2lwVGltZTsKKyAgICAg
ICAgZG91YmxlIHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAtY1Nr
aXBUaW1lOwogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFD
b250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgKyBza2lwVGltZSwgSUdOT1JFX0VYQ0VQVElPTik7
CiAgICAgfSBlbHNlCiAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUo
bmV4dFJhdGUoKSk7CkBAIC0yNjgsNyArMjY3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50OjpkZQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHZhbHVlKCkudG9Eb3VibGUoKSk7CisgICAgZG91YmxlIHZvbHVtZSA9IHZhbHVlKCkudG9Eb3Vi
bGUoKTsKICAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKICAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKQEAgLTI5MSw5
ICsyOTAsOSBAQCBib29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpCiAgICAg
cmV0dXJuIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzZXRW
b2x1bWUoZmxvYXQgdm9sdW1lKQordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBpZiAodmFsdWUoKS50b0Zsb2F0KCkg
IT0gdm9sdW1lKQorICAgIGlmICh2YWx1ZSgpLnRvRG91YmxlKCkgIT0gdm9sdW1lKQogICAgICAg
ICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2b2x1bWUpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgJ
KHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBw
cml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRDdXJyZW50VmFs
dWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFZhbHVlOyB9CisgICAgdm9pZCBzZXRDdXJyZW50VmFsdWUoZG91YmxlKTsKKyAgICBkb3Vi
bGUgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1
bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCBt
X2N1cnJlbnRWYWx1ZTsKKyAgICBkb3VibGUgbV9jdXJyZW50VmFsdWU7CiB9OwogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc3RhcnRUaW1lcigpOwogICAgIHZvaWQgc3RvcFRpbWVyKCk7Ci0gICAgZmxvYXQg
bmV4dFJhdGUoKSBjb25zdDsKKyAgICBkb3VibGUgbmV4dFJhdGUoKSBjb25zdDsKICAgICB2b2lk
IHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50PiopOwog
CiAgICAgZW51bSBBY3Rpb25UeXBlIHsgTm90aGluZywgUGxheSwgUGF1c2UgfTsKQEAgLTE4OSw3
ICsxODksNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogCiBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBP
VkVSUklERTsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCBzZXRWb2x1bWUo
ZG91YmxlKTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsK
IAogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQ4MDYxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCi0jaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02Mjks
NyArNjI4LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZQogdm9p
ZCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkgewotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4
KDAuMGYsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhD
RVBUSU9OKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1heCgw
LjAsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVfRVhDRVBU
SU9OKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtOTQ1LDcgKzk0
NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWwKICAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQg
dGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKKyAgICBk
b3VibGUgdGltZSA9IHZhbHVlKCkudG9Eb3VibGUoKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT5j
dXJyZW50VGltZSgpKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUo
dGltZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKQEAgLTk2MiwxMiArOTYxLDEyIEBAIGJvb2wgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGZsb2F0IGN1cnJl
bnRUaW1lKQordm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGRv
dWJsZSBjdXJyZW50VGltZSkKIHsKICAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcihjdXJyZW50
VGltZSkpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0RHVyYXRp
b24oZmxvYXQgZHVyYXRpb24pCit2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewogICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBT
dHJpbmc6Om51bWJlcihzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSA/IGR1cmF0aW9uIDogMCkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oCShyZXZpc2lvbiAxNDgwNTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsOCArMzMzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKLSAgICB2b2lk
IHNldER1cmF0aW9uKGZsb2F0KTsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGRvdWJsZSk7CisgICAg
dm9pZCBzZXREdXJhdGlvbihkb3VibGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lv
biAxNDgwNTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnJl
c2V0KCkKIAogICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwogCi0gICAgZmxvYXQgZHVy
YXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBkb3VibGUgZHVyYXRp
b24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKICAgICBpZiAoc3RkOjppc2Zpbml0
ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKICAgICAgICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24o
ZHVyYXRpb24pOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKSk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBNZWRpYUNvbnRy
b2xzOjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZUN1cnJl
bnRUaW1lRGlzcGxheSgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1
cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50
VGltZSgpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBw
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICsz
MjMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQoKQogICAgIGVsc2UKICAgICAg
ICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1f
bWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVk
aWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9u
KSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFT
bGlkZXJQYXJ0KSkgewogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
CiAgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKQEAgLTM4MSw4ICszODEsOCBA
QCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQoKQogCiB2b2lkIE1lZGlhQ29udHJvbHNB
cHBsZTo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVk
aWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJv
bGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhQ29udHJv
bGxlci0+ZHVyYXRpb24oKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
LmgiCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC00
ODEsNyArNDgwLDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbgog
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiB0aW1lbGlu
ZSA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KGRv
Y3VtZW50LCBjb250cm9scykpOwogICAgIHRpbWVsaW5lLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dS
b290KCk7CiAgICAgdGltZWxpbmUtPnNldFR5cGUoInJhbmdlIik7Ci0gICAgdGltZWxpbmUtPnNl
dEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKKyAgICB0aW1lbGluZS0+c2V0QXR0
cmlidXRlKHByZWNpc2lvbkF0dHIsICJkb3VibGUiKTsKICAgICByZXR1cm4gdGltZWxpbmUucmVs
ZWFzZSgpOwogfQogCkBAIC01MDUsNyArNTA0LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVFbGVtZQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2
YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGRvdWJsZSB0aW1lID0gdmFsdWUoKS50b0RvdWJsZSgp
OwogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRp
bWUgIT0gbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgIG1lZGlhQ29u
dHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBJR05PUkVfRVhDRVBUSU9OKTsKIApAQCAt
NTIyLDEyICs1MjEsMTIgQEAgYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVu
dFRpbWUpCiB7CiAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0K
IAotdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlv
bihmbG9hdCBkdXJhdGlvbikKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxl
bWVudDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewogICAgIHNldEF0dHJpYnV0ZSht
YXhBdHRyLCBTdHJpbmc6Om51bWJlcihzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSA/IGR1cmF0aW9u
IDogMCkpOwogfQpAQCAtOTExLDkgKzkxMCw5IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVy
cnk6OnJlc2V0KCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9mdWxsc2NyZWVuRnVsbFNj
cmVlbkJ1dHRvbi0+aGlkZSgpOwogICAgIH0KLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFD
b250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250
cm9sbGVyLT5kdXJhdGlvbigpOwogICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSB8fCBw
YWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQ
YXJ0KSkgewotICAgICAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKTsKKyAgICAgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAg
IG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1f
dGltZWxpbmVDb250YWluZXItPnNob3coKTsKQEAgLTk1NSw3ICs5NTQsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpidWZmZXJpbmdQCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVw
ZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKICAgICAv
LyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KICAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKSB7Ci0gICAgICAgIGZsb2F0IG5vdyA9
IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBkb3VibGUgbm93ID0g
bV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CiAgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlv
bihub3cpOwogICAgIH0KQEAgLTk2Myw3ICs5NjIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpidWZmZXJpbmdQCiAKIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXli
YWNrU3RhcnRlZCgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOwogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CkBAIC05NzYsNyArOTc1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cGxheWJhY2tTdAogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpwbGF5
YmFja1Byb2dyZXNzZWQoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5j
dXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVu
dFRpbWUoKTsKICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwogICAgIG1fZnVsbHNj
cmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwogICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlz
cGxheSgpOwpAQCAtOTg3LDcgKzk4Niw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6
OnBsYXliYWNrUHIKIAogdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9w
cGVkKCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUo
KTsKKyAgICBkb3VibGUgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CiAg
ICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgIG1fZnVsbHNjcmVlblBs
YXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRp
b24obm93KTsKQEAgLTEwMDAsOCArOTk5LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6cGxheWJhY2tTdAogCiB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJy
ZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5j
dXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1
cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNCbGFja0JlcnJ5LmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw4
ICsxOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREU7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlv
bihmbG9hdCk7CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0RHVy
YXRpb24oZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0d0ay5jcHAJKHJldmlzaW9uIDE0
NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzR3Rr
OjpyZXNldCgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBk
dXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGRvdWJsZSBkdXJh
dGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogICAgIG1fZHVyYXRpb25EaXNw
bGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUo
ZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBtX2R1cmF0aW9uRGlzcGxheS0+
c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsKIApAQCAtMTcyLDggKzE3Miw4IEBAIHZvaWQgTWVk
aWFDb250cm9sc0d0azo6cGxheWJhY2tTdGFydGVkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xzR3Rr
Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFD
b250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNv
bnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgZG91YmxlIG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCShyZXZpc2lvbiAxNDgwNTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIFRl
eHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlCiAgICAgfQogfQogCi12b2lkIFRleHRU
cmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1lKQordm9pZCBUZXh0VHJh
Y2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGRvdWJsZSBtb3ZpZVRpbWUpCiB7CiAgICAgLy8gVGhl
IGRpc3BsYXkgdHJlZSBtYXkgY29udGFpbiBXZWJWVFQgdGltZXN0YW1wIG9iamVjdHMgcmVwcmVz
ZW50aW5nCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMpLCBhbG9u
ZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oCShyZXZpc2lvbiAxNDgwNTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShj
b25zdCBJbnRTaXplJiB2aWRlb1NpemUpOwogICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2N1ZUJhY2tncm91bmRCb3g7IH0KIAotICAgIHZv
aWQgdXBkYXRlRGlzcGxheVRyZWUoZmxvYXQpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUo
ZG91YmxlKTsKICAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgdm9pZCBtYXJrRnV0
dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBkb3VibGUsIGRvdWJsZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2xvY2suaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbG9jaz4gY3JlYXRlKCk7CiAgICAgdmlydHVh
bCB+Q2xvY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCkg
PSAwOwotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91Ymxl
IGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRl
KGZsb2F0KSA9IDA7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3Vi
bGUgcGxheVJhdGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9ja0dlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nsb2NrR2VuZXJpYy5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbG9ja0dlbmVyaWMuaCIKIAotI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5LDIxICszOCwyMCBAQCBDbG9ja0dlbmVy
aWM6OkNsb2NrR2VuZXJpYygpCiAgICAgbV9zdGFydFRpbWUgPSBtX2xhc3RUaW1lID0gbm93KCk7
CiB9CiAKLXZvaWQgQ2xvY2tHZW5lcmljOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQordm9p
ZCBDbG9ja0dlbmVyaWM6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSB0aW1lKQogewogICAgIG1fc3Rh
cnRUaW1lID0gbV9sYXN0VGltZSA9IG5vdygpOwogICAgIG1fb2Zmc2V0ID0gdGltZTsKIH0KIAot
ZmxvYXQgQ2xvY2tHZW5lcmljOjpjdXJyZW50VGltZSgpIGNvbnN0Citkb3VibGUgQ2xvY2tHZW5l
cmljOjpjdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVubmluZykKICAgICAgICAg
bV9sYXN0VGltZSA9IG5vdygpOwotICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KCgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAqIG1fcmF0ZSkgKyBtX29mZnNldCk7Ci0g
ICAgcmV0dXJuIHRpbWU7CisgICAgcmV0dXJuICgobV9sYXN0VGltZSAtIG1fc3RhcnRUaW1lKSAq
IG1fcmF0ZSkgKyBtX29mZnNldDsKIH0KIAotdm9pZCBDbG9ja0dlbmVyaWM6OnNldFBsYXlSYXRl
KGZsb2F0IHJhdGUpCit2b2lkIENsb2NrR2VuZXJpYzo6c2V0UGxheVJhdGUoZG91YmxlIHJhdGUp
CiB7CiAgICAgbV9vZmZzZXQgPSBub3coKTsKICAgICBtX2xhc3RUaW1lID0gbV9zdGFydFRpbWUg
PSBub3coKTsKQEAgLTgzLDQgKzgxLDMgQEAgZG91YmxlIENsb2NrR2VuZXJpYzo6bm93KCkgY29u
c3QKIHsKICAgICByZXR1cm4gV1RGOjpjdXJyZW50VGltZSgpOwogfQotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2tHZW5lcmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSwxMSBAQCBwdWJsaWM6CiAgICAgQ2xvY2tHZW5lcmljKCk7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGN1
cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJs
ZSk7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShk
b3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
YXRlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBub3coKSBjb25zdDsK
IAogICAgIGJvb2wgbV9ydW5uaW5nOwotICAgIGZsb2F0IG1fcmF0ZTsKKyAgICBkb3VibGUgbV9y
YXRlOwogICAgIGRvdWJsZSBtX29mZnNldDsKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAg
bXV0YWJsZSBkb3VibGUgbV9sYXN0VGltZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzLDE3ICsxMTMsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpc2libGUoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uRG91YmxlKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkgeyB9CisgICAgdmlydHVh
bCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCB2b2lkIHNlZWtEb3VibGUoZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2Vla2lu
ZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShm
bG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVEb3VibGUoZG91YmxlKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgeyB9CiAgICAgdmlydHVhbCBi
b29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Vm9sdW1lKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lRG91YmxlKGRv
dWJsZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSB7IH0KQEAgLTEz
NCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfQog
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgfQogCi0gICAgdmlydHVhbCBmbG9hdCBt
YXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBkb3VibGUg
bWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25z
dCB7IHJldHVybiAwOyB9CkBAIC01MTEsMTQgKzUxMSwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFL
ZXlFeGNlcHRpb24gTWVkaWFQbGF5CiB9CiAjZW5kaWYKIAotZmxvYXQgTWVkaWFQbGF5ZXI6OmR1
cmF0aW9uKCkgY29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6ZHVyYXRpb24oKSBjb25zdAogewot
ICAgIHJldHVybiBtX3ByaXZhdGUtPmR1cmF0aW9uKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
ZHVyYXRpb25Eb3VibGUoKTsKIH0KIAotZmxvYXQgTWVkaWFQbGF5ZXI6OnN0YXJ0VGltZSgpIGNv
bnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OnN0YXJ0VGltZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1l
RG91YmxlKCk7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllcjo6aW5pdGlhbFRpbWUoKSBjb25zdApA
QCAtNTI2LDE0ICs1MjYsMTQgQEAgZG91YmxlIE1lZGlhUGxheWVyOjppbml0aWFsVGltZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aW5pdGlhbFRpbWUoKTsKIH0KIAotZmxvYXQgTWVk
aWFQbGF5ZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBNZWRpYVBsYXllcjo6Y3VycmVu
dFRpbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmN1cnJlbnRUaW1lKCk7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3VycmVudFRpbWVEb3VibGUoKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllcjo6c2VlayhmbG9hdCB0aW1lKQordm9pZCBNZWRpYVBsYXllcjo6c2Vlayhkb3VibGUg
dGltZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNlZWsodGltZSk7CisgICAgbV9wcml2YXRlLT5zZWVr
RG91YmxlKHRpbWUpOwogfQogCiBib29sIE1lZGlhUGxheWVyOjpwYXVzZWQoKSBjb25zdApAQCAt
NjA2LDE3ICs2MDYsMTcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXI6OnJl
YQogICAgIHJldHVybiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKTsKIH0KIAotZmxvYXQgTWVkaWFQ
bGF5ZXI6OnZvbHVtZSgpIGNvbnN0Citkb3VibGUgTWVkaWFQbGF5ZXI6OnZvbHVtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdm9sdW1lOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjpzZXRWb2x1
bWUoZmxvYXQgdm9sdW1lKQordm9pZCBNZWRpYVBsYXllcjo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1
bWUpCiB7CiAgICAgbV92b2x1bWUgPSB2b2x1bWU7CiAKICAgICBpZiAobV9wcml2YXRlLT5zdXBw
b3J0c011dGluZygpIHx8ICFtX211dGVkKQotICAgICAgICBtX3ByaXZhdGUtPnNldFZvbHVtZSh2
b2x1bWUpOworICAgICAgICBtX3ByaXZhdGUtPnNldFZvbHVtZURvdWJsZSh2b2x1bWUpOwogfQog
CiBib29sIE1lZGlhUGxheWVyOjptdXRlZCgpIGNvbnN0CkBAIC02NDQsMTUgKzY0NCwxNSBAQCB2
b2lkIE1lZGlhUGxheWVyOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2liCiAgICAgbV9wcml2YXRlLT5z
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIH0KIAotZmxv
YXQgTWVkaWFQbGF5ZXI6OnJhdGUoKSBjb25zdAorZG91YmxlIE1lZGlhUGxheWVyOjpyYXRlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yYXRlOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjpzZXRS
YXRlKGZsb2F0IHJhdGUpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRSYXRlKGRvdWJsZSByYXRlKQog
ewogICAgIG1fcmF0ZSA9IHJhdGU7Ci0gICAgbV9wcml2YXRlLT5zZXRSYXRlKHJhdGUpOyAgIAor
ICAgIG1fcHJpdmF0ZS0+c2V0UmF0ZURvdWJsZShyYXRlKTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
cjo6cHJlc2VydmVzUGl0Y2goKSBjb25zdApAQCAtNjc2LDkgKzY3Niw5IEBAIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNlZWsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVr
YWJsZSgpOwogfQogCi1mbG9hdCBNZWRpYVBsYXllcjo6bWF4VGltZVNlZWthYmxlKCkKK2RvdWJs
ZSBNZWRpYVBsYXllcjo6bWF4VGltZVNlZWthYmxlKCkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRl
LT5tYXhUaW1lU2Vla2FibGUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tYXhUaW1lU2Vla2Fi
bGVEb3VibGUoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkK
QEAgLTg1MSw5ICs4NTEsOSBAQCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXll
cjo6CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bW92aWVMb2FkVHlwZSgpOwogfQogCi1mbG9hdCBN
ZWRpYVBsYXllcjo6bWVkaWFUaW1lRm9yVGltZVZhbHVlKGZsb2F0IHRpbWVWYWx1ZSkgY29uc3QK
K2RvdWJsZSBNZWRpYVBsYXllcjo6bWVkaWFUaW1lRm9yVGltZVZhbHVlKGRvdWJsZSB0aW1lVmFs
dWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWVkaWFUaW1lRm9yVGltZVZhbHVl
KHRpbWVWYWx1ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWVkaWFUaW1lRm9yVGltZVZhbHVl
RG91YmxlKHRpbWVWYWx1ZSk7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllcjo6bWF4aW11bUR1cmF0
aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0CkBAIC05NDksNyArOTQ5LDcgQEAgdm9pZCBNZWRp
YVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50
LT5tZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKHRoaXMpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyOjp2b2x1bWVDaGFuZ2VkKGZsb2F0IG5ld1ZvbHVtZSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnZv
bHVtZUNoYW5nZWQoZG91YmxlIG5ld1ZvbHVtZSkKIHsKICAgICBtX3ZvbHVtZSA9IG5ld1ZvbHVt
ZTsKICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTQ3OTM4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjk4LDI5ICsyOTgsMjkgQEAgcHVibGljOgogICAgIGJvb2wgcGF1c2VkKCkgY29u
c3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgZmxvYXQgaW52YWxp
ZFRpbWUoKSB7IHJldHVybiAtMS4wZjt9Ci0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKLSAg
ICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwotICAgIHZvaWQgc2VlayhmbG9hdCB0aW1lKTsK
KyAgICBzdGF0aWMgZG91YmxlIGludmFsaWRUaW1lKCkgeyByZXR1cm4gLTEuMDt9CisgICAgZG91
YmxlIGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZWVrKGRvdWJsZSB0aW1lKTsKIAotICAgIGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0
OworICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdDsKIAogICAgIGRvdWJsZSBpbml0aWFsVGlt
ZSgpIGNvbnN0OwogCi0gICAgZmxvYXQgcmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmF0ZShm
bG9hdCk7CisgICAgZG91YmxlIHJhdGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFJhdGUoZG91Ymxl
KTsKIAogICAgIGJvb2wgcHJlc2VydmVzUGl0Y2goKSBjb25zdDsgICAgCiAgICAgdm9pZCBzZXRQ
cmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVy
ZWQoKTsKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7Ci0gICAgZmxvYXQg
bWF4VGltZVNlZWthYmxlKCk7CisgICAgZG91YmxlIG1heFRpbWVTZWVrYWJsZSgpOwogCiAgICAg
Ym9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKTsKIAotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICBkb3VibGUgdm9sdW1lKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlKTsKIAogICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAg
ICB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQo
KTsKLSAgICB2b2lkIHZvbHVtZUNoYW5nZWQoZmxvYXQpOworICAgIHZvaWQgdm9sdW1lQ2hhbmdl
ZChkb3VibGUpOwogICAgIHZvaWQgbXV0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCB0aW1lQ2hh
bmdlZCgpOwogICAgIHZvaWQgc2l6ZUNoYW5nZWQoKTsKQEAgLTQxNCw3ICs0MTQsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdDsKIAotICAgIGZs
b2F0IG1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCkgY29uc3Q7CisgICAgZG91YmxlIG1lZGlh
VGltZUZvclRpbWVWYWx1ZShkb3VibGUpIGNvbnN0OwogCiAgICAgZG91YmxlIG1heGltdW1EdXJh
dGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdDsKIApAQCAtNDg3LDggKzQ4Nyw4IEBAIHByaXZh
dGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgYm9v
bCBtX3Zpc2libGU7Ci0gICAgZmxvYXQgbV9yYXRlOwotICAgIGZsb2F0IG1fdm9sdW1lOworICAg
IGRvdWJsZSBtX3JhdGU7CisgICAgZG91YmxlIG1fdm9sdW1lOwogICAgIGJvb2wgbV9tdXRlZDsK
ICAgICBib29sIG1fcHJlc2VydmVzUGl0Y2g7CiAgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzAs
MjIgKzcwLDMxIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
ID0gMDsKIAotICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGRv
dWJsZSBkdXJhdGlvbkRvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KKworICAg
IHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVybiBjdXJyZW50VGlt
ZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2VlayhmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNlZWtEb3VibGUoZG91YmxlIHRpbWUpIHsgc2Vlayh0aW1lKTsgfQogCi0gICAgdmlydHVh
bCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vlayhm
bG9hdCB0aW1lKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNlZWtpbmcoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIGZsb2F0IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIGRvdWJsZSBzdGFydFRpbWVEb3VibGUoKSBjb25zdCB7IHJldHVybiBzdGFydFRpbWUo
KTsgfQogCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbFRpbWUoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRSYXRlKGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZURvdWJsZShk
b3VibGUgcmF0ZSkgeyBzZXRSYXRlKHJhdGUpOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJl
c2VydmVzUGl0Y2goYm9vbCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWVE
b3VibGUoZG91YmxlIHZvbHVtZSkgeyByZXR1cm4gc2V0Vm9sdW1lKHZvbHVtZSk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c011dGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIHsgfQpAQCAtOTcsNyArMTA2LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1heFRpbWVTZWVrYWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKDAs
IG1heFRpbWVTZWVrYWJsZSgpKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9Ci0gICAgdmlydHVh
bCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBt
YXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBkb3VibGUg
bWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCk7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAwOwpA
QCAtMTQ5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaW1lIHZhbHVlIGluIHRoZSBtb3Zp
ZSdzIHRpbWUgc2NhbGUuIEl0IGlzIG9ubHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgaWYg
dGhlIG1lZGlhCiAgICAgLy8gZW5naW5lIHVzZXMgcmF0aW9uYWwgbnVtYmVycyB0byByZXByZXNl
bnQgbWVkaWEgdGltZS4KICAgICB2aXJ0dWFsIGZsb2F0IG1lZGlhVGltZUZvclRpbWVWYWx1ZShm
bG9hdCB0aW1lVmFsdWUpIGNvbnN0IHsgcmV0dXJuIHRpbWVWYWx1ZTsgfQorICAgIHZpcnR1YWwg
ZG91YmxlIG1lZGlhVGltZUZvclRpbWVWYWx1ZURvdWJsZShkb3VibGUgdGltZVZhbHVlKSBjb25z
dCB7IHJldHVybiB0aW1lVmFsdWU7IH0KIAogICAgIC8vIE92ZXJpZGUgdGhpcyBpZiBpdCBpcyBz
YWZlIGZvciBIVE1MTWVkaWFFbGVtZW50IHRvIGNhY2hlIG1vdmllIHRpbWUgYW5kIHJlcG9ydAog
ICAgIC8vICdjdXJyZW50VGltZScgYXMgW2NhY2hlZCB0aW1lICsgZWxhcHNlZCB3YWxsIHRpbWVd
LiBSZXR1cm5zIHRoZSBtYXhpbXVtIHdhbGwgdGltZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNsb2NrQ0EuaCIK
IAotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9D
b3JlQXVkaW9DbG9jay5oPgogI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAK
QEAgLTYxLDcgKzYwLDcgQEAgUGxhdGZvcm1DbG9ja0NBOjp+UGxhdGZvcm1DbG9ja0NBKCkKICAg
ICBDQUNsb2NrRGlzcG9zZShtX2Nsb2NrKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnNl
dEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCit2b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0Q3VycmVu
dFRpbWUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fcnVubmluZykKICAgICAgICAgQ0FDbG9j
a1N0b3AobV9jbG9jayk7CkBAIC03Myw3ICs3Miw3IEBAIHZvaWQgUGxhdGZvcm1DbG9ja0NBOjpz
ZXRDdXJyZW50VGltZShmbG8KICAgICAgICAgQ0FDbG9ja1N0YXJ0KG1fY2xvY2spOwogfQogCi1m
bG9hdCBQbGF0Zm9ybUNsb2NrQ0E6OmN1cnJlbnRUaW1lKCkgY29uc3QKK2RvdWJsZSBQbGF0Zm9y
bUNsb2NrQ0E6OmN1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBDQUNsb2NrVGltZSBjYVRpbWU7
CiAKQEAgLTgxLDI0ICs4MCwyNCBAQCBmbG9hdCBQbGF0Zm9ybUNsb2NrQ0E6OmN1cnJlbnRUaW1l
KCkgY29uCiAgICAgLy8gd2hhdCBpcyB0aGUgc3RhcnQgdGltZSwgaS5lLiB3aGF0IHRoZSBjdXJy
ZW50IHRpbWUgd2lsbCBiZSB3aGVuIHN0YXJ0ZWQuCiAgICAgaWYgKG1fcnVubmluZykgewogICAg
ICAgICBpZiAoQ0FDbG9ja0dldEN1cnJlbnRUaW1lKG1fY2xvY2ssIGtDQUNsb2NrVGltZUZvcm1h
dF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAgICAgICAgICAgIHJldHVybiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KGNhVGltZS50aW1lLnNlY29uZHMpOworICAgICAgICAgICAgcmV0dXJu
IGNhVGltZS50aW1lLnNlY29uZHM7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKENBQ2xvY2tH
ZXRTdGFydFRpbWUobV9jbG9jaywga0NBQ2xvY2tUaW1lRm9ybWF0X1NlY29uZHMsICZjYVRpbWUp
ID09IG5vRXJyKQotICAgICAgICAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY2FU
aW1lLnRpbWUuc2Vjb25kcyk7CisgICAgICAgICAgICByZXR1cm4gY2FUaW1lLnRpbWUuc2Vjb25k
czsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUGxhdGZvcm1DbG9ja0NBOjpzZXRQ
bGF5UmF0ZShmbG9hdCByYXRlKQordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnNldFBsYXlSYXRlKGRv
dWJsZSByYXRlKQogewogICAgIENBQ2xvY2tTZXRQbGF5UmF0ZShtX2Nsb2NrLCByYXRlKTsKIH0K
IAotZmxvYXQgUGxhdGZvcm1DbG9ja0NBOjpQbGF0Zm9ybUNsb2NrQ0E6OnBsYXlSYXRlKCkgY29u
c3QKK2RvdWJsZSBQbGF0Zm9ybUNsb2NrQ0E6OlBsYXRmb3JtQ2xvY2tDQTo6cGxheVJhdGUoKSBj
b25zdAogewogICAgIGRvdWJsZSByYXRlID0gMDsKICAgICBpZiAoQ0FDbG9ja0dldFBsYXlSYXRl
KG1fY2xvY2ssICZyYXRlKSA9PSBub0VycikKLSAgICAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQocmF0ZSk7CisgICAgICAgIHJldHVybiByYXRlOwogICAgIHJldHVybiAwOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5o
CShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1DbG9ja0NBLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+UGxhdGZvcm1DbG9ja0NBKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1l
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSk7CisgICAg
dmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQbGF5UmF0ZShmbG9hdCk7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91Ymxl
IHBsYXlSYXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtQ2xvY2tDTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybUNsb2NrQ00uaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxOCArNDQs
MTggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVXaXRoVGltaW5nU291
cmNlKENNQ2xvY2tSZWYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0
KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSk7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRp
bWUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7Ci0gICAg
dmlydHVhbCBmbG9hdCBwbGF5UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXlS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXRlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmco
KSBjb25zdCB7IHJldHVybiBtX3J1bm5pbmc7IH0KIAogICAgIFJldGFpblB0cjxDTVRpbWViYXNl
UmVmPiBtX3RpbWViYXNlOwotICAgIGZsb2F0IG1fcmF0ZTsKKyAgICBkb3VibGUgbV9yYXRlOwog
ICAgIGJvb2wgbV9ydW5uaW5nOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtQ2xvY2tDTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw2IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtQ2xvY2tDTS5oIgogCi0jaW1wb3J0
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0IDxD
b3JlTWVkaWEvQ01BdWRpb0RldmljZUNsb2NrLmg+CiAKQEAgLTczLDE5ICs3MiwxOSBAQCB2b2lk
IFBsYXRmb3JtQ2xvY2tDTTo6aW5pdGlhbGl6ZVdpdGhUaW1pCiAgICAgbV90aW1lYmFzZS5hZG9w
dENGKHJhd1RpbWViYXNlUHRyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJl
bnRUaW1lKGZsb2F0IHRpbWUpCit2b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c2V0Q3VycmVudFRpbWUo
ZG91YmxlIHRpbWUpCiB7CiAgICAgQ01UaW1lIGNtVGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25k
cyh0aW1lLCBEZWZhdWx0VGltZVNjYWxlKTsKICAgICBDTVRpbWViYXNlU2V0VGltZShtX3RpbWVi
YXNlLmdldCgpLCBjbVRpbWUpOwogfQogCi1mbG9hdCBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRU
aW1lKCkgY29uc3QKK2RvdWJsZSBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1lKCkgY29uc3QK
IHsKICAgICBDTVRpbWUgY21UaW1lID0gQ01UaW1lYmFzZUdldFRpbWUobV90aW1lYmFzZS5nZXQo
KSk7Ci0gICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhj
bVRpbWUpKTsKKyAgICByZXR1cm4gQ01UaW1lR2V0U2Vjb25kcyhjbVRpbWUpOwogfQogCi12b2lk
IFBsYXRmb3JtQ2xvY2tDTTo6c2V0UGxheVJhdGUoZmxvYXQgcmF0ZSkKK3ZvaWQgUGxhdGZvcm1D
bG9ja0NNOjpzZXRQbGF5UmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICBpZiAobV9yYXRlID09IHJh
dGUpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>