<?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>230436</bug_id>
          
          <creation_ts>2021-09-17 16:41:57 -0700</creation_ts>
          <short_desc>Replace all the complex math in ScrollAnimationSmooth with a single call into a CubicBezierTimingFunction</short_desc>
          <delta_ts>2021-09-17 23:04:18 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794692</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-17 16:41:57 -0700</bug_when>
    <thetext>Replace all the complex math in ScrollAnimationSmooth with a single call into a CubicBezierTimingFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794693</commentid>
    <comment_count>1</comment_count>
      <attachid>438533</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-17 16:43:51 -0700</bug_when>
    <thetext>Created attachment 438533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794739</commentid>
    <comment_count>2</comment_count>
      <attachid>438547</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-17 21:06:40 -0700</bug_when>
    <thetext>Created attachment 438547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794743</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-17 23:03:26 -0700</bug_when>
    <thetext>Committed r282721 (241858@main): &lt;https://commits.webkit.org/241858@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438547.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794744</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-17 23:04:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83266358&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438533</attachid>
            <date>2021-09-17 16:43:51 -0700</date>
            <delta_ts>2021-09-17 16:46:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230436-20210917164350.patch</filename>
            <type>text/plain</type>
            <size>25694</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGEyYjMzZTAzMTQzNzQy
ZTJmZWQ4ZDg5ZTQzMzRhZmRhOGY2YWUwYy4uOGQwNDM1MjA5ZTZhMGMzYTNmZjY0NTYyMjBlODYz
NWZmNGYzNWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA5LTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgYWxs
IHRoZSBjb21wbGV4IG1hdGggaW4gU2Nyb2xsQW5pbWF0aW9uU21vb3RoIHdpdGggYSBzaW5nbGUg
Y2FsbCBpbnRvIGEgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoIGhhZCBh
IGxvdCBvZiBtYXRoIHRoYXQgY29tcHV0ZWQgdmVsb2NpdGllcyBmb3IgYXR0YWNrLCBkcmlmdCBh
bmQKKyAgICAgICAgcmVsZWFzZSBwaGFzZXMsIGJ1dCB0aGV5IHJlc3VsdGVkIGluIG9kZC1mZWVs
aW5nIGFuaW1hdGlvbnMgZm9yIGxvbmcgc2Nyb2xscy4gV2UgY2FuIHJlcGxhY2UKKyAgICAgICAg
aXQgYWxsLCBhbmQgZ2V0IG5pY2UtZmVlbGluZyBzY3JvbGxzLCBieSBqdXN0IHVzaW5nIGFuIGVh
c2UtaW4tb3V0IHRpbWluZyBmdW5jdGlvbi4KKworICAgICAgICBXZSB1c2UgYSBoYXJkY29kZWQg
ZHVyYXRpb24gb2YgMjUwbXMsIGluZGVwZW5kZW50IG9mIGRpc3RhbmNlLCB3aGljaCBtYXRjaGVz
IG1hY09TCisgICAgICAgIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290
aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRl
U2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJJbnRlcnBvbGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0ZVNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFs
aXplQXhlc0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3VydmVBdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjphdHRhY2tDdXJ2ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpyZWxlYXNlQ3VydmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29hc3RD
dXJ2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJ2ZUludGVncmFsQXQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNrQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpyZWxlYXNlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRBbmlt
YXRpb25QYXJhbWV0ZXJzRm9yR3JhbnVsYXJpdHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVQZXJBeGlzRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisKIDIwMjEtMDktMTYg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBT
Y3JvbGxBbmltYXRpb24gYSBsaXR0bGUgbW9yZSBnZW5lcmljCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCBiNDAyYzQ5ZjkzNzY0
YjliYWJkMzU3MDI5MTFkMjAyYjBmOWJjYjhjLi4wMmM5MWM4YjgyNzg3NWViYzMwZTAyMTQwZGMy
M2U3MjM1YmUxMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvblNtb290aC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgorI2luY2x1ZGUgIlRpbWluZ0Z1bmN0
aW9uLmgiCiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogI2luY2x1ZGUgPHd0Zi9nbGliL1J1
bkxvb3BTb3VyY2VQcmlvcml0eS5oPgpAQCAtMzcsMTQgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKLXN0YXRpYyBj
b25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwotc3RhdGljIGNvbnN0IFNl
Y29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07Ci1zdGF0aWMgY29uc3QgZG91Ymxl
IHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDE7CitzdGF0aWMgY29uc3QgU2Vj
b25kcyBhbmltYXRpb25EdXJhdGlvbiB7IDI1MF9tcyB9OwogCiBTY3JvbGxBbmltYXRpb25TbW9v
dGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkK
ICAgICA6IFNjcm9sbEFuaW1hdGlvbihjbGllbnQpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9u
VGltZXJGaXJlZCkKKyAgICAsIG1fZWFzZUluT3V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1
bmN0aW9uUHJlc2V0OjpFYXNlSW5PdXQpKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAg
ICAgbV9hbmltYXRpb25UaW1lci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0
eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOwpAQCAtNTMsMzQgKzUyLDI3IEBAIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEFuaW1hdGlvbkNs
aWVudCYgY2xpZW50KQogCiBTY3JvbGxBbmltYXRpb25TbW9vdGg6On5TY3JvbGxBbmltYXRpb25T
bW9vdGgoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFu
aW1hdGVkU2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBmbG9h
dCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0
YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAs
IGZsb2F0IG11bHRpcGxpZXIpCiB7Ci0gICAgZmxvYXQgbWluU2Nyb2xsUG9zaXRpb247Ci0gICAg
ZmxvYXQgbWF4U2Nyb2xsUG9zaXRpb247Ci0gICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Ny
b2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUF4ZXNEYXRhKGV4
dGVudHMsIGZyb21Qb3NpdGlvbik7Ci0KLSAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikgewotICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWluaW11
bVNjcm9sbFBvc2l0aW9uLngoKTsKLSAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRz
Lm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWluU2Ny
b2xsUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCk7Ci0gICAgICAg
IG1heFNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpOwot
ICAgIH0KLSAgICBhdXRvJiBkYXRhID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IG1faG9yaXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0YTsKLSAgICBib29sIG5lZWRUb1Nj
cm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRhKGRhdGEsIGdyYW51bGFyaXR5LCBkYXRhLmRlc2lyZWRQ
b3NpdGlvbiArIChzdGVwICogbXVsdGlwbGllciksIG1pblNjcm9sbFBvc2l0aW9uLCBtYXhTY3Jv
bGxQb3NpdGlvbik7Ci0gICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkgewotICAg
ICAgICBtX3N0YXJ0VGltZSA9IG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBt
X2hvcml6b250YWxEYXRhLnN0YXJ0VGltZSA6IG1fdmVydGljYWxEYXRhLnN0YXJ0VGltZTsKLSAg
ICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOworICAgIGF1dG8gZGVzdGluYXRpb25Qb3NpdGlv
biA9IGZyb21Qb3NpdGlvbjsKKyAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBI
b3Jpem9udGFsU2Nyb2xsYmFyOgorICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uLnNldFgoZGVz
dGluYXRpb25Qb3NpdGlvbi54KCkgKyBzdGVwICogbXVsdGlwbGllcik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVmVydGljYWxTY3JvbGxiYXI6CisgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRp
b24uc2V0WShkZXN0aW5hdGlvblBvc2l0aW9uLngoKSArIHN0ZXAgKiBtdWx0aXBsaWVyKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBuZWVkVG9TY3JvbGw7CisKKyAgICBhdXRv
IGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKKyAg
ICByZXR1cm4gc3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9z
aXRpb24pOwogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNj
cm9sbFRvRGVzdGluYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBkZXN0aW5hdGlvblBvc2l0aW9uKQogewogICAgIGF1dG8gZXh0ZW50cyA9IG1f
Y2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwotICAgIGluaXRpYWxpemVB
eGVzRGF0YShleHRlbnRzLCBmcm9tUG9zaXRpb24pOwotICAgIAorICAgIG1fc3RhcnRQb3NpdGlv
biA9IGZyb21Qb3NpdGlvbjsKKwogICAgIHJldHVybiBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24o
ZXh0ZW50cywgZGVzdGluYXRpb25Qb3NpdGlvbik7CiB9CiAKQEAgLTk1LDEyICs4NywxMSBAQCBi
b29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgbmV3RGVzdGluYQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3Rh
cnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pCiB7Ci0gICAgYXV0byBncmFudWxhcml0
eSA9IFNjcm9sbEJ5UGFnZTsKLSAgICBib29sIG5lZWRUb1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNE
YXRhKG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFyaXR5LCBkZXN0aW5hdGlvblBvc2l0aW9uLngo
KSwgZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBleHRlbnRzLm1heGltdW1TY3Jv
bGxQb3NpdGlvbi54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7Ci0gICAg
bmVlZFRvU2Nyb2xsIHw9Ci0gICAgICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRh
LCBncmFudWxhcml0eSwgZGVzdGluYXRpb25Qb3NpdGlvbi55KCksIGV4dGVudHMubWluaW11bVNj
cm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBzbW9v
dGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOworICAgIG1fZGVzdGluYXRpb25Qb3NpdGlv
biA9IGRlc3RpbmF0aW9uUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11
bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbik7CisgICAgYm9v
bCBuZWVkVG9TY3JvbGwgPSBtX3N0YXJ0UG9zaXRpb24gIT0gbV9kZXN0aW5hdGlvblBvc2l0aW9u
OworCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkgewotICAgICAgICBtX3N0
YXJ0VGltZSA9IG1fdmVydGljYWxEYXRhLnN0YXJ0VGltZTsKKyAgICAgICAgbV9zdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwog
ICAgIH0KICAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOwpAQCAtMTE1LDMwOSArMTA2LDI5IEBAIHZv
aWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21v
b3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVu
dC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICBtX2hvcml6b250YWxEYXRh
LnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLndpZHRoKCk7Ci0gICAgbV92ZXJ0
aWNhbERhdGEudmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUuaGVpZ2h0KCk7Ci19
Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFsaXplQXhlc0RhdGEoY29uc3Qg
U2Nyb2xsRXh0ZW50cyYgZXh0ZW50cywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb3NpdGlvbikK
LXsKLSAgICBtX2hvcml6b250YWxEYXRhID0gUGVyQXhpc0RhdGEoc3RhcnRQb3NpdGlvbi54KCks
IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKSk7Ci0gICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJB
eGlzRGF0YShzdGFydFBvc2l0aW9uLnkoKSwgZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKSk7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZG91YmxlIGN1cnZlQXQoU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQpCi17Ci0gICAgc3dpdGNoIChjdXJ2ZSkgewotICAgIGNh
c2UgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOgotICAgICAgICByZXR1cm4g
dDsKLSAgICBjYXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6OlF1YWRyYXRpYzoKLSAg
ICAgICAgcmV0dXJuIHQgKiB0OwotICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2
ZTo6Q3ViaWM6Ci0gICAgICAgIHJldHVybiB0ICogdCAqIHQ7Ci0gICAgY2FzZSBTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OkN1cnZlOjpRdWFydGljOgotICAgICAgICByZXR1cm4gdCAqIHQgKiB0ICog
dDsKLSAgICBjYXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6OkJvdW5jZToKLSAgICAg
ICAgLy8gVGltZSBiYXNlIGlzIGNob3NlbiB0byBrZWVwIHRoZSBib3VuY2UgcG9pbnRzIHNpbXBs
ZXI6Ci0gICAgICAgIC8vIDEgKGhhbGYgYm91bmNlIGNvbWluZyBpbikgKyAxICsgLjUgKyAuMjUK
LSAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lQmFzZSA9IDIuNzU7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgdGltZUJhc2VTcXVhcmVkID0gdGltZUJhc2UgKiB0aW1lQmFzZTsK
LSAgICAgICAgaWYgKHQgPCAxIC8gdGltZUJhc2UpCi0gICAgICAgICAgICByZXR1cm4gdGltZUJh
c2VTcXVhcmVkICogdCAqIHQ7Ci0gICAgICAgIGlmICh0IDwgMiAvIHRpbWVCYXNlKSB7Ci0gICAg
ICAgICAgICAvLyBJbnZlcnQgYSBbLS41LC41XSBxdWFkcmF0aWMgcGFyYWJvbGEsIGNlbnRlciBp
dCBpbiBbMSwyXS4KLSAgICAgICAgICAgIGRvdWJsZSB0MSA9IHQgLSAxLjUgLyB0aW1lQmFzZTsK
LSAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBwYXJhYm9sYUF0RWRnZSA9IDEgLSAuNSAqIC41Owot
ICAgICAgICAgICAgcmV0dXJuIHRpbWVCYXNlU3F1YXJlZCAqIHQxICogdDEgKyBwYXJhYm9sYUF0
RWRnZTsKLSAgICAgICAgfQotICAgICAgICBpZiAodCA8IDIuNSAvIHRpbWVCYXNlKSB7Ci0gICAg
ICAgICAgICAvLyBJbnZlcnQgYSBbLS4yNSwuMjVdIHF1YWRyYXRpYyBwYXJhYm9sYSwgY2VudGVy
IGl0IGluIFsyLDIuNV0uCi0gICAgICAgICAgICBkb3VibGUgdDIgPSB0IC0gMi4yNSAvIHRpbWVC
YXNlOwotICAgICAgICAgICAgY29uc3QgZG91YmxlIHBhcmFib2xhQXRFZGdlID0gMSAtIC4yNSAq
IC4yNTsKLSAgICAgICAgICAgIHJldHVybiB0aW1lQmFzZVNxdWFyZWQgKiB0MiAqIHQyICsgcGFy
YWJvbGFBdEVkZ2U7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52ZXJ0IGEgWy0uMTI1LC4xMjVd
IHF1YWRyYXRpYyBwYXJhYm9sYSwgY2VudGVyIGl0IGluIFsyLjUsMi43NV0uCi0gICAgICAgIGNv
bnN0IGRvdWJsZSBwYXJhYm9sYUF0RWRnZSA9IDEgLSAuMTI1ICogLjEyNTsKLSAgICAgICAgdCAt
PSAyLjYyNSAvIHRpbWVCYXNlOwotICAgICAgICByZXR1cm4gdGltZUJhc2VTcXVhcmVkICogdCAq
IHQgKyBwYXJhYm9sYUF0RWRnZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZG91YmxlIGF0dGFja0N1cnZlKFNjcm9s
bEFuaW1hdGlvblNtb290aDo6Q3VydmUgY3VydmUsIGRvdWJsZSBkZWx0YVRpbWUsIGRvdWJsZSBj
dXJ2ZVQsIGRvdWJsZSBzdGFydFBvc2l0aW9uLCBkb3VibGUgYXR0YWNrUG9zaXRpb24pCi17Ci0g
ICAgZG91YmxlIHQgPSBkZWx0YVRpbWUgLyBjdXJ2ZVQ7Ci0gICAgZG91YmxlIHBvc2l0aW9uRmFj
dG9yID0gY3VydmVBdChjdXJ2ZSwgdCk7Ci0gICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gKyBwb3Np
dGlvbkZhY3RvciAqIChhdHRhY2tQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24pOwotfQotCi1zdGF0
aWMgaW5saW5lIGRvdWJsZSByZWxlYXNlQ3VydmUoU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2
ZSBjdXJ2ZSwgZG91YmxlIGRlbHRhVGltZSwgZG91YmxlIGN1cnZlVCwgZG91YmxlIHJlbGVhc2VQ
b3NpdGlvbiwgZG91YmxlIGRlc2lyZWRQb3NpdGlvbikKLXsKLSAgICBkb3VibGUgdCA9IGRlbHRh
VGltZSAvIGN1cnZlVDsKLSAgICBkb3VibGUgcG9zaXRpb25GYWN0b3IgPSAxIC0gY3VydmVBdChj
dXJ2ZSwgMSAtIHQpOwotICAgIHJldHVybiByZWxlYXNlUG9zaXRpb24gKyAocG9zaXRpb25GYWN0
b3IgKiAoZGVzaXJlZFBvc2l0aW9uIC0gcmVsZWFzZVBvc2l0aW9uKSk7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgZG91YmxlIGNvYXN0Q3VydmUoU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSBjdXJ2
ZSwgZG91YmxlIGZhY3RvcikKLXsKLSAgICByZXR1cm4gMSAtIGN1cnZlQXQoY3VydmUsIDEgLSBm
YWN0b3IpOwotfQotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBjdXJ2ZUludGVncmFsQXQoU2Nyb2xs
QW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQpCi17Ci0gICAgc3dpdGNoIChj
dXJ2ZSkgewotICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOgot
ICAgICAgICByZXR1cm4gdCAqIHQgLyAyOwotICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpDdXJ2ZTo6UXVhZHJhdGljOgotICAgICAgICByZXR1cm4gdCAqIHQgKiB0IC8gMzsKLSAgICBj
YXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6OkN1YmljOgotICAgICAgICByZXR1cm4g
dCAqIHQgKiB0ICogdCAvIDQ7Ci0gICAgY2FzZSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZl
OjpRdWFydGljOgotICAgICAgICByZXR1cm4gdCAqIHQgKiB0ICogdCAqIHQgLyA1OwotICAgIGNh
c2UgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6Qm91bmNlOgotICAgICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIHRpbWVCYXNlID0gMi43NTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB0aW1lQmFzZVNxdWFyZWQgPSB0aW1lQmFzZSAqIHRpbWVCYXNlOwotICAgICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIHRpbWVCYXNlU3F1YXJlZE92ZXJUaHJlZSA9IHRpbWVCYXNlU3F1YXJlZCAv
IDM7Ci0gICAgICAgIGRvdWJsZSBhcmVhOwotICAgICAgICBkb3VibGUgdDEgPSBzdGQ6Om1pbih0
LCAxIC8gdGltZUJhc2UpOwotICAgICAgICBhcmVhID0gdGltZUJhc2VTcXVhcmVkT3ZlclRocmVl
ICogdDEgKiB0MSAqIHQxOwotICAgICAgICBpZiAodCA8IDEgLyB0aW1lQmFzZSkKLSAgICAgICAg
ICAgIHJldHVybiBhcmVhOwotCi0gICAgICAgIHQxID0gc3RkOjptaW4odCAtIDEgLyB0aW1lQmFz
ZSwgMSAvIHRpbWVCYXNlKTsKLSAgICAgICAgLy8gVGhlIGludGVncmFsIG9mIHRpbWVCYXNlU3F1
YXJlZCAqICh0MSAtIC41IC8gdGltZUJhc2UpICogKHQxIC0gLjUgLyB0aW1lQmFzZSkgKyBwYXJh
Ym9sYUF0RWRnZQotICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHNlY29uZElubmVyT2Zmc2V0
ID0gdGltZUJhc2VTcXVhcmVkICogLjUgLyB0aW1lQmFzZTsKLSAgICAgICAgZG91YmxlIGJvdW5j
ZUFyZWEgPSB0MSAqICh0MSAqICh0aW1lQmFzZVNxdWFyZWRPdmVyVGhyZWUgKiB0MSAtIHNlY29u
ZElubmVyT2Zmc2V0KSArIDEpOwotICAgICAgICBhcmVhICs9IGJvdW5jZUFyZWE7Ci0gICAgICAg
IGlmICh0IDwgMiAvIHRpbWVCYXNlKQotICAgICAgICAgICAgcmV0dXJuIGFyZWE7Ci0KLSAgICAg
ICAgdDEgPSBzdGQ6Om1pbih0IC0gMiAvIHRpbWVCYXNlLCAwLjUgLyB0aW1lQmFzZSk7Ci0gICAg
ICAgIC8vIFRoZSBpbnRlZ3JhbCBvZiB0aW1lQmFzZVNxdWFyZWQgKiAodDEgLSAuMjUgLyB0aW1l
QmFzZSkgKiAodDEgLSAuMjUgLyB0aW1lQmFzZSkgKyBwYXJhYm9sYUF0RWRnZQotICAgICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHRoaXJkSW5uZXJPZmZzZXQgPSB0aW1lQmFzZVNxdWFyZWQgKiAu
MjUgLyB0aW1lQmFzZTsKLSAgICAgICAgYm91bmNlQXJlYSA9ICB0MSAqICh0MSAqICh0aW1lQmFz
ZVNxdWFyZWRPdmVyVGhyZWUgKiB0MSAtIHRoaXJkSW5uZXJPZmZzZXQpICsgMSk7Ci0gICAgICAg
IGFyZWEgKz0gYm91bmNlQXJlYTsKLSAgICAgICAgaWYgKHQgPCAyLjUgLyB0aW1lQmFzZSkKLSAg
ICAgICAgICAgIHJldHVybiBhcmVhOwotCi0gICAgICAgIHQxID0gdCAtIDIuNSAvIHRpbWVCYXNl
OwotICAgICAgICAvLyBUaGUgaW50ZWdyYWwgb2YgdGltZUJhc2VTcXVhcmVkICogKHQxIC0gLjEy
NSAvIHRpbWVCYXNlKSAqICh0MSAtIC4xMjUgLyB0aW1lQmFzZSkgKyBwYXJhYm9sYUF0RWRnZQot
ICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGZvdXJ0aElubmVyT2Zmc2V0ID0gdGltZUJhc2VT
cXVhcmVkICogLjEyNSAvIHRpbWVCYXNlOwotICAgICAgICBib3VuY2VBcmVhID0gdDEgKiAodDEg
KiAodGltZUJhc2VTcXVhcmVkT3ZlclRocmVlICogdDEgLSBmb3VydGhJbm5lck9mZnNldCkgKyAx
KTsKLSAgICAgICAgYXJlYSArPSBib3VuY2VBcmVhOwotICAgICAgICByZXR1cm4gYXJlYTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgZG91YmxlIGF0dGFja0FyZWEoU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSBj
dXJ2ZSwgZG91YmxlIHN0YXJ0VCwgZG91YmxlIGVuZFQpCi17Ci0gICAgZG91YmxlIHN0YXJ0VmFs
dWUgPSBjdXJ2ZUludGVncmFsQXQoY3VydmUsIHN0YXJ0VCk7Ci0gICAgZG91YmxlIGVuZFZhbHVl
ID0gY3VydmVJbnRlZ3JhbEF0KGN1cnZlLCBlbmRUKTsKLSAgICByZXR1cm4gZW5kVmFsdWUgLSBz
dGFydFZhbHVlOwotfQotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSByZWxlYXNlQXJlYShTY3JvbGxB
bmltYXRpb25TbW9vdGg6OkN1cnZlIGN1cnZlLCBkb3VibGUgc3RhcnRULCBkb3VibGUgZW5kVCkK
LXsKLSAgICBkb3VibGUgc3RhcnRWYWx1ZSA9IGN1cnZlSW50ZWdyYWxBdChjdXJ2ZSwgMSAtIGVu
ZFQpOwotICAgIGRvdWJsZSBlbmRWYWx1ZSA9IGN1cnZlSW50ZWdyYWxBdChjdXJ2ZSwgMSAtIHN0
YXJ0VCk7Ci0gICAgcmV0dXJuIGVuZFZhbHVlIC0gc3RhcnRWYWx1ZTsKKyAgICAvLyBGSVhNRTog
SWRlYWxseSBmaXggdXAgbV9zdGFydFBvc2l0aW9uIHNvIG1fY3VycmVudFBvc2l0aW9uIGRvZXNu
J3QgZ28gYmFja3dhcmRzLgorICAgIG1fZGVzdGluYXRpb25Qb3NpdGlvbiA9IG1fZGVzdGluYXRp
b25Qb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRp
b24sIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uKTsKIH0KIAotc3RhdGljIGlubGluZSB2
b2lkIGdldEFuaW1hdGlvblBhcmFtZXRlcnNGb3JHcmFudWxhcml0eShTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0eSwgU2Vjb25kcyYgYW5pbWF0aW9uRHVyYXRpb24sIFNlY29uZHMmIHJlcGVh
dE1pbmltdW1TdXN0YWluVGltZSwgU2Vjb25kcyYgYXR0YWNrRHVyYXRpb24sIFNlY29uZHMmIHJl
bGVhc2VEdXJhdGlvbiwgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSYgY29hc3RUaW1lQ3Vy
dmUsIFNlY29uZHMmIG1heGltdW1Db2FzdFRpbWUpCitpbmxpbmUgZmxvYXQgbGluZWFySW50ZXJw
b2xhdGlvbihmbG9hdCBwcm9ncmVzcywgZmxvYXQgYSwgZmxvYXQgYikKIHsKLSAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBTY3JvbGxCeURvY3VtZW50OgotICAgICAgICBhbmlt
YXRpb25EdXJhdGlvbiA9IHRpY2tUaW1lICogMTA7Ci0gICAgICAgIHJlcGVhdE1pbmltdW1TdXN0
YWluVGltZSA9IHRpY2tUaW1lICogMTA7Ci0gICAgICAgIGF0dGFja0R1cmF0aW9uID0gdGlja1Rp
bWUgKiAxMDsKLSAgICAgICAgcmVsZWFzZUR1cmF0aW9uID0gdGlja1RpbWUgKiAxMDsKLSAgICAg
ICAgY29hc3RUaW1lQ3VydmUgPSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlOjpMaW5lYXI7
Ci0gICAgICAgIG1heGltdW1Db2FzdFRpbWUgPSAxX3M7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU2Nyb2xsQnlMaW5lOgotICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IHRpY2tUaW1lICog
MTA7Ci0gICAgICAgIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSA9IHRpY2tUaW1lICogNzsKLSAg
ICAgICAgYXR0YWNrRHVyYXRpb24gPSB0aWNrVGltZSAqIDM7Ci0gICAgICAgIHJlbGVhc2VEdXJh
dGlvbiA9IHRpY2tUaW1lICogMzsKLSAgICAgICAgY29hc3RUaW1lQ3VydmUgPSBTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OkN1cnZlOjpMaW5lYXI7Ci0gICAgICAgIG1heGltdW1Db2FzdFRpbWUgPSAx
X3M7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Nyb2xsQnlQYWdlOgotICAgICAgICBhbmlt
YXRpb25EdXJhdGlvbiA9IHRpY2tUaW1lICogMTU7Ci0gICAgICAgIHJlcGVhdE1pbmltdW1TdXN0
YWluVGltZSA9IHRpY2tUaW1lICogMTA7Ci0gICAgICAgIGF0dGFja0R1cmF0aW9uID0gdGlja1Rp
bWUgKiA1OwotICAgICAgICByZWxlYXNlRHVyYXRpb24gPSB0aWNrVGltZSAqIDU7Ci0gICAgICAg
IGNvYXN0VGltZUN1cnZlID0gU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOwot
ICAgICAgICBtYXhpbXVtQ29hc3RUaW1lID0gMV9zOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNjcm9sbEJ5UGl4ZWw6Ci0gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gdGlja1RpbWUgKiAx
MTsKLSAgICAgICAgcmVwZWF0TWluaW11bVN1c3RhaW5UaW1lID0gdGlja1RpbWUgKiAyOwotICAg
ICAgICBhdHRhY2tEdXJhdGlvbiA9IHRpY2tUaW1lICogMzsKLSAgICAgICAgcmVsZWFzZUR1cmF0
aW9uID0gdGlja1RpbWUgKiAzOwotICAgICAgICBjb2FzdFRpbWVDdXJ2ZSA9IFNjcm9sbEFuaW1h
dGlvblNtb290aDo6Q3VydmU6OlF1YWRyYXRpYzsKLSAgICAgICAgbWF4aW11bUNvYXN0VGltZSA9
IDEyNTBfbXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KKyAgICByZXR1cm4gYSArIHByb2dyZXNzICogKGIgLSBhKTsK
IH0KIAotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVBlckF4aXNEYXRhKFBlckF4
aXNEYXRhJiBkYXRhLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbmV3UG9z
aXRpb24sIGZsb2F0IG1pblNjcm9sbFBvc2l0aW9uLCBmbG9hdCBtYXhTY3JvbGxQb3NpdGlvbiwg
ZG91YmxlIHNtb290aEZhY3RvcikKK2Jvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRl
U2Nyb2xsKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7Ci0gICAgaWYgKCFkYXRhLnN0YXJ0
VGltZSB8fCBuZXdQb3NpdGlvbiA9PSBkYXRhLmN1cnJlbnRQb3NpdGlvbikgewotICAgICAgICBk
YXRhLmRlc2lyZWRQb3NpdGlvbiA9IGRhdGEuY3VycmVudFBvc2l0aW9uOwotICAgICAgICBkYXRh
LnN0YXJ0VGltZSA9IHsgfTsKLSAgICB9Ci0KLSAgICBuZXdQb3NpdGlvbiA9IHN0ZDo6bWF4KHN0
ZDo6bWluKG5ld1Bvc2l0aW9uLCBtYXhTY3JvbGxQb3NpdGlvbiksIG1pblNjcm9sbFBvc2l0aW9u
KTsKLSAgICBpZiAobmV3UG9zaXRpb24gPT0gZGF0YS5kZXNpcmVkUG9zaXRpb24pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24sIHJlcGVhdE1p
bmltdW1TdXN0YWluVGltZSwgYXR0YWNrRHVyYXRpb24sIHJlbGVhc2VEdXJhdGlvbiwgbWF4aW11
bUNvYXN0VGltZTsKLSAgICBDdXJ2ZSBjb2FzdFRpbWVDdXJ2ZTsKLSAgICBnZXRBbmltYXRpb25Q
YXJhbWV0ZXJzRm9yR3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHksIGFuaW1hdGlvbkR1cmF0aW9uLCBy
ZXBlYXRNaW5pbXVtU3VzdGFpblRpbWUsIGF0dGFja0R1cmF0aW9uLCByZWxlYXNlRHVyYXRpb24s
IGNvYXN0VGltZUN1cnZlLCBtYXhpbXVtQ29hc3RUaW1lKTsKLQotICAgIGFuaW1hdGlvbkR1cmF0
aW9uICo9IHNtb290aEZhY3RvcjsKLSAgICByZXBlYXRNaW5pbXVtU3VzdGFpblRpbWUgKj0gc21v
b3RoRmFjdG9yOwotICAgIGF0dGFja0R1cmF0aW9uICo9IHNtb290aEZhY3RvcjsKLSAgICByZWxl
YXNlRHVyYXRpb24gKj0gc21vb3RoRmFjdG9yOwotICAgIG1heGltdW1Db2FzdFRpbWUgKj0gc21v
b3RoRmFjdG9yOworICAgIE1vbm90b25pY1RpbWUgZW5kVGltZSA9IG1fc3RhcnRUaW1lICsgYW5p
bWF0aW9uRHVyYXRpb247CisgICAgY3VycmVudFRpbWUgPSBzdGQ6Om1pbihjdXJyZW50VGltZSwg
ZW5kVGltZSk7CiAKLSAgICBkYXRhLmRlc2lyZWRQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uOwotICAg
IGlmICghZGF0YS5zdGFydFRpbWUpCi0gICAgICAgIGRhdGEuYXR0YWNrRHVyYXRpb24gPSBhdHRh
Y2tEdXJhdGlvbjsKLSAgICBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uID0gYW5pbWF0aW9uRHVyYXRp
b247Ci0gICAgZGF0YS5yZWxlYXNlRHVyYXRpb24gPSByZWxlYXNlRHVyYXRpb247CisgICAgZG91
YmxlIGZyYWN0aW9uQ29tcGxldGUgPSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkgLyBhbmlt
YXRpb25EdXJhdGlvbjsKKyAgICBkb3VibGUgcHJvZ3Jlc3MgPSBtX2Vhc2VJbk91dFRpbWluZ0Z1
bmN0aW9uLT50cmFuc2Zvcm1UaW1lKGZyYWN0aW9uQ29tcGxldGUsIGFuaW1hdGlvbkR1cmF0aW9u
LnZhbHVlKCkpOwogCi0gICAgLy8gUHJpb3JpdGl6ZSBvdXIgd2F5IG91dCBvZiBvdmVyIGNvbnN0
cmFpbnQuCi0gICAgaWYgKGRhdGEuYXR0YWNrRHVyYXRpb24gKyBkYXRhLnJlbGVhc2VEdXJhdGlv
biA+IGRhdGEuYW5pbWF0aW9uRHVyYXRpb24pIHsKLSAgICAgICAgaWYgKGRhdGEucmVsZWFzZUR1
cmF0aW9uID4gZGF0YS5hbmltYXRpb25EdXJhdGlvbikKLSAgICAgICAgICAgIGRhdGEucmVsZWFz
ZUR1cmF0aW9uID0gZGF0YS5hbmltYXRpb25EdXJhdGlvbjsKLSAgICAgICAgZGF0YS5hdHRhY2tE
dXJhdGlvbiA9IGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VEdXJhdGlvbjsK
LSAgICB9Ci0KLSAgICBpZiAoIWRhdGEuc3RhcnRUaW1lKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB0aGUgdGltZSBmcm9tIHRoZSBldmVudCB0aGF0IGdvdCB1cyBoZXJlLgot
ICAgICAgICBkYXRhLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUg
LyAyLjsKLSAgICAgICAgZGF0YS5zdGFydFBvc2l0aW9uID0gZGF0YS5jdXJyZW50UG9zaXRpb247
Ci0gICAgICAgIGRhdGEubGFzdEFuaW1hdGlvblRpbWUgPSBkYXRhLnN0YXJ0VGltZTsKLSAgICB9
Ci0gICAgZGF0YS5zdGFydFZlbG9jaXR5ID0gZGF0YS5jdXJyZW50VmVsb2NpdHk7Ci0KLSAgICBk
b3VibGUgcmVtYWluaW5nRGVsdGEgPSBkYXRhLmRlc2lyZWRQb3NpdGlvbiAtIGRhdGEuY3VycmVu
dFBvc2l0aW9uOwotICAgIGRvdWJsZSBhdHRhY2tBcmVhTGVmdCA9IDA7Ci0gICAgU2Vjb25kcyBk
ZWx0YVRpbWUgPSBkYXRhLmxhc3RBbmltYXRpb25UaW1lIC0gZGF0YS5zdGFydFRpbWU7Ci0gICAg
U2Vjb25kcyBhdHRhY2tUaW1lTGVmdCA9IHN0ZDo6bWF4KDBfcywgZGF0YS5hdHRhY2tEdXJhdGlv
biAtIGRlbHRhVGltZSk7Ci0gICAgU2Vjb25kcyB0aW1lTGVmdCA9IGRhdGEuYW5pbWF0aW9uRHVy
YXRpb24gLSBkZWx0YVRpbWU7Ci0gICAgU2Vjb25kcyBtaW5UaW1lTGVmdCA9IGRhdGEucmVsZWFz
ZUR1cmF0aW9uICsgc3RkOjptaW4ocmVwZWF0TWluaW11bVN1c3RhaW5UaW1lLCBkYXRhLmFuaW1h
dGlvbkR1cmF0aW9uIC0gZGF0YS5yZWxlYXNlRHVyYXRpb24gLSBhdHRhY2tUaW1lTGVmdCk7Ci0g
ICAgaWYgKHRpbWVMZWZ0IDwgbWluVGltZUxlZnQpIHsKLSAgICAgICAgZGF0YS5hbmltYXRpb25E
dXJhdGlvbiA9IGRlbHRhVGltZSArIG1pblRpbWVMZWZ0OwotICAgICAgICB0aW1lTGVmdCA9IG1p
blRpbWVMZWZ0OwotICAgIH0KLQotICAgIGlmIChtYXhpbXVtQ29hc3RUaW1lID4gKHJlcGVhdE1p
bmltdW1TdXN0YWluVGltZSArIHJlbGVhc2VEdXJhdGlvbikpIHsKLSAgICAgICAgZG91YmxlIHRh
cmdldE1heENvYXN0VmVsb2NpdHkgPSBkYXRhLnZpc2libGVMZW5ndGggKiAuMjUgKiBmcmFtZVJh
dGU7Ci0gICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYXMgbWluaW1hbCBhcyBwb3NzaWJsZSB3
aGlsZSBub3QgYmVpbmcgaW50cnVzaXZlIHRvIHBhZ2UgdXAvZG93bi4KLSAgICAgICAgZG91Ymxl
IG1pbkNvYXN0RGVsdGEgPSBkYXRhLnZpc2libGVMZW5ndGg7Ci0KLSAgICAgICAgaWYgKGZhYnMo
cmVtYWluaW5nRGVsdGEpID4gbWluQ29hc3REZWx0YSkgewotICAgICAgICAgICAgZG91YmxlIG1h
eENvYXN0RGVsdGEgPSBtYXhpbXVtQ29hc3RUaW1lLnZhbHVlKCkgKiB0YXJnZXRNYXhDb2FzdFZl
bG9jaXR5OwotICAgICAgICAgICAgZG91YmxlIGNvYXN0RmFjdG9yID0gc3RkOjptaW4oMS4sIChm
YWJzKHJlbWFpbmluZ0RlbHRhKSAtIG1pbkNvYXN0RGVsdGEpIC8gKG1heENvYXN0RGVsdGEgLSBt
aW5Db2FzdERlbHRhKSk7Ci0KLSAgICAgICAgICAgIC8vIFdlIGNvdWxkIHBsYXkgd2l0aCB0aGUg
Y3VydmUgaGVyZSAtIGxpbmVhciBzZWVtcyBhIGxpdHRsZSBzb2Z0LiBJbml0aWFsIHRlc3Rpbmcg
bWFrZXMgbWUgd2FudCB0byBmZWVkIGludG8gdGhlIHN1c3RhaW4gdGltZSBtb3JlIGFnZ3Jlc3Np
dmVseS4KLSAgICAgICAgICAgIFNlY29uZHMgY29hc3RNaW5UaW1lTGVmdCA9IHN0ZDo6bWluKG1h
eGltdW1Db2FzdFRpbWUsIG1pblRpbWVMZWZ0ICsgKG1heGltdW1Db2FzdFRpbWUgLSBtaW5UaW1l
TGVmdCkgKiBjb2FzdEN1cnZlKGNvYXN0VGltZUN1cnZlLCBjb2FzdEZhY3RvcikpOwotCi0gICAg
ICAgICAgICBpZiAoU2Vjb25kcyBhZGRpdGlvbmFsVGltZSA9IHN0ZDo6bWF4KDBfcywgY29hc3RN
aW5UaW1lTGVmdCAtIG1pblRpbWVMZWZ0KSkgewotICAgICAgICAgICAgICAgIFNlY29uZHMgYWRk
aXRpb25hbFJlbGVhc2VUaW1lID0gc3RkOjptaW4oYWRkaXRpb25hbFRpbWUsIGFkZGl0aW9uYWxU
aW1lICogKHJlbGVhc2VEdXJhdGlvbiAvIChyZWxlYXNlRHVyYXRpb24gKyByZXBlYXRNaW5pbXVt
U3VzdGFpblRpbWUpKSk7Ci0gICAgICAgICAgICAgICAgZGF0YS5yZWxlYXNlRHVyYXRpb24gPSBy
ZWxlYXNlRHVyYXRpb24gKyBhZGRpdGlvbmFsUmVsZWFzZVRpbWU7Ci0gICAgICAgICAgICAgICAg
ZGF0YS5hbmltYXRpb25EdXJhdGlvbiA9IGRlbHRhVGltZSArIGNvYXN0TWluVGltZUxlZnQ7Ci0g
ICAgICAgICAgICAgICAgdGltZUxlZnQgPSBjb2FzdE1pblRpbWVMZWZ0OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQorICAgIG1fY3VycmVudFBvc2l0aW9uID0geworICAgICAgICBs
aW5lYXJJbnRlcnBvbGF0aW9uKHByb2dyZXNzLCBtX3N0YXJ0UG9zaXRpb24ueCgpLCBtX2Rlc3Rp
bmF0aW9uUG9zaXRpb24ueCgpKSwKKyAgICAgICAgbGluZWFySW50ZXJwb2xhdGlvbihwcm9ncmVz
cywgbV9zdGFydFBvc2l0aW9uLnkoKSwgbV9kZXN0aW5hdGlvblBvc2l0aW9uLnkoKSksCisgICAg
fTsKIAotICAgIFNlY29uZHMgcmVsZWFzZVRpbWVMZWZ0ID0gc3RkOjptaW4odGltZUxlZnQsIGRh
dGEucmVsZWFzZUR1cmF0aW9uKTsKLSAgICBTZWNvbmRzIHN1c3RhaW5UaW1lTGVmdCA9IHN0ZDo6
bWF4KDBfcywgdGltZUxlZnQgLSByZWxlYXNlVGltZUxlZnQgLSBhdHRhY2tUaW1lTGVmdCk7Ci0g
ICAgaWYgKGF0dGFja1RpbWVMZWZ0KSB7Ci0gICAgICAgIGRvdWJsZSBhdHRhY2tTcG90ID0gZGVs
dGFUaW1lIC8gZGF0YS5hdHRhY2tEdXJhdGlvbjsKLSAgICAgICAgYXR0YWNrQXJlYUxlZnQgPSBh
dHRhY2tBcmVhKEN1cnZlOjpDdWJpYywgYXR0YWNrU3BvdCwgMSkgKiBkYXRhLmF0dGFja0R1cmF0
aW9uLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgZG91YmxlIHJlbGVhc2VTcG90ID0gKGRhdGEucmVs
ZWFzZUR1cmF0aW9uIC0gcmVsZWFzZVRpbWVMZWZ0KSAvIGRhdGEucmVsZWFzZUR1cmF0aW9uOwot
ICAgIGRvdWJsZSByZWxlYXNlQXJlYUxlZnQgPSByZWxlYXNlQXJlYShDdXJ2ZTo6Q3ViaWMsIHJl
bGVhc2VTcG90LCAxKSAqIGRhdGEucmVsZWFzZUR1cmF0aW9uLnZhbHVlKCk7Ci0KLSAgICBkYXRh
LmRlc2lyZWRWZWxvY2l0eSA9IHJlbWFpbmluZ0RlbHRhIC8gKGF0dGFja0FyZWFMZWZ0ICsgc3Vz
dGFpblRpbWVMZWZ0LnZhbHVlKCkgKyByZWxlYXNlQXJlYUxlZnQpOwotICAgIGRhdGEucmVsZWFz
ZVBvc2l0aW9uID0gZGF0YS5kZXNpcmVkUG9zaXRpb24gLSBkYXRhLmRlc2lyZWRWZWxvY2l0eSAq
IHJlbGVhc2VBcmVhTGVmdDsKLSAgICBpZiAoYXR0YWNrQXJlYUxlZnQpCi0gICAgICAgIGRhdGEu
YXR0YWNrUG9zaXRpb24gPSBkYXRhLnN0YXJ0UG9zaXRpb24gKyBkYXRhLmRlc2lyZWRWZWxvY2l0
eSAqIGF0dGFja0FyZWFMZWZ0OwotICAgIGVsc2UKLSAgICAgICAgZGF0YS5hdHRhY2tQb3NpdGlv
biA9IGRhdGEucmVsZWFzZVBvc2l0aW9uIC0gKGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRh
LnJlbGVhc2VEdXJhdGlvbiAtIGRhdGEuYXR0YWNrRHVyYXRpb24pLnZhbHVlKCkgKiBkYXRhLmRl
c2lyZWRWZWxvY2l0eTsKLQotICAgIGlmIChzdXN0YWluVGltZUxlZnQpIHsKLSAgICAgICAgZG91
YmxlIHJvdW5kT2ZmID0gZGF0YS5yZWxlYXNlUG9zaXRpb24gLSAoKGF0dGFja0FyZWFMZWZ0ID8g
ZGF0YS5hdHRhY2tQb3NpdGlvbiA6IGRhdGEuY3VycmVudFBvc2l0aW9uKSArIGRhdGEuZGVzaXJl
ZFZlbG9jaXR5ICogc3VzdGFpblRpbWVMZWZ0LnZhbHVlKCkpOwotICAgICAgICBkYXRhLmRlc2ly
ZWRWZWxvY2l0eSArPSByb3VuZE9mZiAvIHN1c3RhaW5UaW1lTGVmdC52YWx1ZSgpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5p
bWF0ZVNjcm9sbChQZXJBeGlzRGF0YSYgZGF0YSwgTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkK
LXsKLSAgICBpZiAoIWRhdGEuc3RhcnRUaW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBTZWNvbmRzIGxhc3RTY3JvbGxJbnRlcnZhbCA9IGN1cnJlbnRUaW1lIC0gZGF0YS5sYXN0QW5p
bWF0aW9uVGltZTsKLSAgICBpZiAobGFzdFNjcm9sbEludGVydmFsIDwgbWluaW11bVRpbWVySW50
ZXJ2YWwpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgZGF0YS5sYXN0QW5pbWF0aW9uVGlt
ZSA9IGN1cnJlbnRUaW1lOwotCi0gICAgU2Vjb25kcyBkZWx0YVRpbWUgPSBjdXJyZW50VGltZSAt
IGRhdGEuc3RhcnRUaW1lOwotICAgIGRvdWJsZSBuZXdQb3NpdGlvbiA9IGRhdGEuY3VycmVudFBv
c2l0aW9uOwotCi0gICAgaWYgKGRlbHRhVGltZSA+IGRhdGEuYW5pbWF0aW9uRHVyYXRpb24pIHsK
LSAgICAgICAgZGF0YSA9IFBlckF4aXNEYXRhKGRhdGEuZGVzaXJlZFBvc2l0aW9uLCBkYXRhLnZp
c2libGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChkZWx0
YVRpbWUgPCBkYXRhLmF0dGFja0R1cmF0aW9uKQotICAgICAgICBuZXdQb3NpdGlvbiA9IGF0dGFj
a0N1cnZlKEN1cnZlOjpDdWJpYywgZGVsdGFUaW1lLnZhbHVlKCksIGRhdGEuYXR0YWNrRHVyYXRp
b24udmFsdWUoKSwgZGF0YS5zdGFydFBvc2l0aW9uLCBkYXRhLmF0dGFja1Bvc2l0aW9uKTsKLSAg
ICBlbHNlIGlmIChkZWx0YVRpbWUgPCAoZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRhdGEucmVs
ZWFzZUR1cmF0aW9uKSkKLSAgICAgICAgbmV3UG9zaXRpb24gPSBkYXRhLmF0dGFja1Bvc2l0aW9u
ICsgKGRlbHRhVGltZSAtIGRhdGEuYXR0YWNrRHVyYXRpb24pLnZhbHVlKCkgKiBkYXRhLmRlc2ly
ZWRWZWxvY2l0eTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gcmVsZWFzZSBpcyBiYXNlZCBvbiB0
YXJnZXRpbmcgdGhlIGV4YWN0IGZpbmFsIHBvc2l0aW9uLgotICAgICAgICBTZWNvbmRzIHJlbGVh
c2VEZWx0YVQgPSBkZWx0YVRpbWUgLSAoZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRhdGEucmVs
ZWFzZUR1cmF0aW9uKTsKLSAgICAgICAgbmV3UG9zaXRpb24gPSByZWxlYXNlQ3VydmUoQ3VydmU6
OkN1YmljLCByZWxlYXNlRGVsdGFULnZhbHVlKCksIGRhdGEucmVsZWFzZUR1cmF0aW9uLnZhbHVl
KCksIGRhdGEucmVsZWFzZVBvc2l0aW9uLCBkYXRhLmRlc2lyZWRQb3NpdGlvbik7Ci0gICAgfQot
Ci0gICAgLy8gTm9ybWFsaXplIHZlbG9jaXR5IHRvIGEgcGVyIHNlY29uZCBhbW91bnQuIENvdWxk
IGJlIHVzZWQgdG8gY2hlY2sgZm9yIGphbmsuCi0gICAgaWYgKGxhc3RTY3JvbGxJbnRlcnZhbCA+
IDBfcykKLSAgICAgICAgZGF0YS5jdXJyZW50VmVsb2NpdHkgPSAobmV3UG9zaXRpb24gLSBkYXRh
LmN1cnJlbnRQb3NpdGlvbikgLyBsYXN0U2Nyb2xsSW50ZXJ2YWwudmFsdWUoKTsKLSAgICBkYXRh
LmN1cnJlbnRQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGN1cnJlbnRUaW1lIDwgZW5kVGltZTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25T
bW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQpAQCAtNDI2LDE2ICsxMzcsMTEgQEAgdm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgIFNlY29uZHMg
ZGVsdGFUb05leHRGcmFtZSA9IDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWUp
LnZhbHVlKCkgKiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1lIC0gbV9zdGFy
dFRpbWUpOwogICAgIGN1cnJlbnRUaW1lICs9IGRlbHRhVG9OZXh0RnJhbWU7CiAKLSAgICBib29s
IGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7Ci0gICAgaWYgKGFuaW1hdGVTY3JvbGwobV9ob3Jp
em9udGFsRGF0YSwgY3VycmVudFRpbWUpKQotICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IHRy
dWU7Ci0gICAgaWYgKGFuaW1hdGVTY3JvbGwobV92ZXJ0aWNhbERhdGEsIGN1cnJlbnRUaW1lKSkK
LSAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwotCisgICAgYm9vbCBjb250aW51ZUFu
aW1hdGlvbiA9IGFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUpOwogICAgIGlmIChjb250aW51ZUFu
aW1hdGlvbikKICAgICAgICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVySW50
ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpKTsKIAotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlv
bkRpZFVwZGF0ZSgqdGhpcywgeyBtX2hvcml6b250YWxEYXRhLmN1cnJlbnRQb3NpdGlvbiwgbV92
ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uIH0pOworICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50UG9zaXRpb24pOwogICAgIGlmICghY29udGlu
dWVBbmltYXRpb24pCiAgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhp
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDJlOWJiZjcyZjU3NjA0MzA1YjZjYjM5ZTM2Y2Q5NjA3NTZlMDc0NmUuLmFmYzYx
OTRkMDg0NWVhNWEzYWVkZDYyNjA0ZWQyMzJiNjdiNGViOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0zMywyMSArMzMsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKLWVudW0gY2xhc3MgU2Ny
b2xsQ2xhbXBpbmcgOiBib29sOworY2xhc3MgVGltaW5nRnVuY3Rpb247CiAKIGNsYXNzIFNjcm9s
bEFuaW1hdGlvblNtb290aCBmaW5hbDogcHVibGljIFNjcm9sbEFuaW1hdGlvbiB7CiBwdWJsaWM6
CiAgICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYpOwogICAg
IHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCi0gICAgZW51bSBjbGFzcyBDdXJ2
ZSB7Ci0gICAgICAgIExpbmVhciwKLSAgICAgICAgUXVhZHJhdGljLAotICAgICAgICBDdWJpYywK
LSAgICAgICAgUXVhcnRpYywKLSAgICAgICAgQm91bmNlCi0gICAgfTsKLQogICAgIGJvb2wgc3Rh
cnRBbmltYXRlZFNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHks
IGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb3NpdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlw
bGllcik7CiAgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBG
bG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uUG9z
aXRpb24pOwogCkBAIC01Niw1NyArNDgsMjUgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2Ny
b2xsRXh0ZW50cygpIGZpbmFsOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKIAot
cHJpdmF0ZToKLSAgICBzdHJ1Y3QgUGVyQXhpc0RhdGEgewotICAgICAgICBQZXJBeGlzRGF0YSgp
ID0gZGVmYXVsdDsKLSAgICAgICAgUGVyQXhpc0RhdGEoZmxvYXQgcG9zaXRpb24sIGludCBsZW5n
dGgpCi0gICAgICAgICAgICA6IGN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbikKLSAgICAgICAgICAg
ICwgZGVzaXJlZFBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAgICAgLCB2aXNpYmxlTGVuZ3Ro
KGxlbmd0aCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgY3VycmVudFBv
c2l0aW9uIHsgMCB9OwotICAgICAgICBkb3VibGUgY3VycmVudFZlbG9jaXR5IHsgMCB9OwotCi0g
ICAgICAgIGRvdWJsZSBkZXNpcmVkUG9zaXRpb24geyAwIH07Ci0gICAgICAgIGRvdWJsZSBkZXNp
cmVkVmVsb2NpdHkgeyAwIH07Ci0KLSAgICAgICAgZG91YmxlIHN0YXJ0UG9zaXRpb24geyAwIH07
Ci0gICAgICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgICAgICBkb3VibGUgc3RhcnRW
ZWxvY2l0eSB7IDAgfTsKLQotICAgICAgICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uOwotICAg
ICAgICBNb25vdG9uaWNUaW1lIGxhc3RBbmltYXRpb25UaW1lOwotCi0gICAgICAgIGRvdWJsZSBh
dHRhY2tQb3NpdGlvbiB7IDAgfTsKLSAgICAgICAgU2Vjb25kcyBhdHRhY2tEdXJhdGlvbjsKLSAg
ICAgICAgQ3VydmUgYXR0YWNrQ3VydmUgeyBDdXJ2ZTo6UXVhZHJhdGljIH07Ci0KLSAgICAgICAg
ZG91YmxlIHJlbGVhc2VQb3NpdGlvbiB7IDAgfTsKLSAgICAgICAgU2Vjb25kcyByZWxlYXNlRHVy
YXRpb247Ci0gICAgICAgIEN1cnZlIHJlbGVhc2VDdXJ2ZSB7IEN1cnZlOjpRdWFkcmF0aWMgfTsK
LQotICAgICAgICBpbnQgdmlzaWJsZUxlbmd0aCB7IDAgfTsKLSAgICB9OwogCitwcml2YXRlOgog
ICAgIGJvb2wgc3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbik7CiAKLSAgICBib29sIHVwZGF0ZVBlckF4aXNE
YXRhKFBlckF4aXNEYXRhJiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG5ld1Bvc2l0aW9uLCBm
bG9hdCBtaW5TY3JvbGxQb3NpdGlvbiwgZmxvYXQgbWF4U2Nyb2xsUG9zaXRpb24sIGRvdWJsZSBz
bW9vdGhGYWN0b3IgPSAxKTsKLSAgICBib29sIGFuaW1hdGVTY3JvbGwoUGVyQXhpc0RhdGEmLCBN
b25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKTsKLSAgICAKLSAgICB2b2lkIGluaXRpYWxpemVBeGVz
RGF0YShjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb3NpdGlv
bik7Ci0KICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBz
dGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKLQotICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7Ci0gICAgUGVyQXhpc0Rh
dGEgbV92ZXJ0aWNhbERhdGE7CisgICAgCisgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25p
Y1RpbWUpOwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKKyAgICAKKyAgICBGbG9h
dFBvaW50IG1fc3RhcnRQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1fZGVzdGluYXRpb25Qb3Np
dGlvbjsKKyAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvc2l0aW9uOworICAgIAogICAgIC8vIEZJ
WE1FOiBTaG91bGQgbm90IGhhdmUgdGltZXIgaGVyZSwgYW5kIGluc3RlYWQgdXNlIHNlcnZpY2VB
bmltYXRpb24oKS4KICAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1f
YW5pbWF0aW9uVGltZXI7CisgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX2Vhc2VJbk91dFRp
bWluZ0Z1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="461938"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438547</attachid>
            <date>2021-09-17 21:06:40 -0700</date>
            <delta_ts>2021-09-17 23:03:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230436-20210917210639.patch</filename>
            <type>text/plain</type>
            <size>27849</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmYzg0NjU2NTQyNzlm
ZjdiYTNmMWY4YTIyOWQ2MDM0YjVhYmMwNi4uOWQ2ZDFlNDU1Y2M1NjNmNTJmYTk2OGQ4MmZhYTI2
NTE5YTJiNmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA5LTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgYWxs
IHRoZSBjb21wbGV4IG1hdGggaW4gU2Nyb2xsQW5pbWF0aW9uU21vb3RoIHdpdGggYSBzaW5nbGUg
Y2FsbCBpbnRvIGEgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBTY3JvbGxBbmltYXRpb25TbW9vdGggaGFkIGEgbG90
IG9mIG1hdGggdGhhdCBjb21wdXRlZCB2ZWxvY2l0aWVzIGZvciBhdHRhY2ssIGRyaWZ0IGFuZAor
ICAgICAgICByZWxlYXNlIHBoYXNlcywgYnV0IHRoZXkgcmVzdWx0ZWQgaW4gb2RkLWZlZWxpbmcg
YW5pbWF0aW9ucyBmb3IgbG9uZyBzY3JvbGxzLiBXZSBjYW4gcmVwbGFjZQorICAgICAgICBpdCBh
bGwsIGFuZCBnZXQgbmljZS1mZWVsaW5nIHNjcm9sbHMsIGJ5IGp1c3QgdXNpbmcgYW4gZWFzZS1p
bi1vdXQgdGltaW5nIGZ1bmN0aW9uLgorCisgICAgICAgIER1cmF0aW9uIGlzIGNvbXB1c3RlZCBm
cm9tIGRpc3RhbmNlIHdpdGggYSBtYXggb2YgMjAwbXMsIG1hdGNoaW5nIG1hY09TIGJlaGF2aW9y
LgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRl
ZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0
QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpsaW5lYXJJbnRlcnBvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvblNtb290aDo6YW5pbWF0ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFsaXplQXhlc0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y3VydmVBdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjph
dHRhY2tDdXJ2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlQ3VydmUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29hc3RDdXJ2ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpjdXJ2ZUludGVncmFsQXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
YXR0YWNrQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlQXJlYSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRBbmltYXRpb25QYXJhbWV0ZXJzRm9yR3JhbnVs
YXJpdHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
Ojp1cGRhdGVQZXJBeGlzRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmg6CisKIDIwMjEtMDktMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JvbGxiYXItcmVsYXRlZCBjb2RlIG91
dCBvZiBTY3JvbGxBbmltYXRvciBhbmQgaW50byBTY3JvbGxiYXJzQ29udHJvbGxlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXgg
YjQwMmM0OWY5Mzc2NGI5YmFiZDM1NzAyOTExZDIwMmIwZjliY2I4Yy4uMGRhZTg2MGI2YjM4Yzg2
ODA1MTI1NjY1ZWQ5OWYyYjUyZDE0OWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisj
aW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5o
IgorI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09Q
KQogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgpAQCAtMzcsMTQg
KzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBm
cmFtZVJhdGUgPSA2MDsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJh
bWVSYXRlOwotc3RhdGljIGNvbnN0IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21z
IH07Ci1zdGF0aWMgY29uc3QgZG91YmxlIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9s
bCA9IDE7CitzdGF0aWMgY29uc3QgZmxvYXQgYW5pbWF0aW9uU3BlZWQgeyAxMDAwLjBmIH07Citz
dGF0aWMgY29uc3QgU2Vjb25kcyBtYXhBbmltYXRpb25EdXJhdGlvbiB7IDIwMF9tcyB9OwogCiBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRp
b25DbGllbnQmIGNsaWVudCkKICAgICA6IFNjcm9sbEFuaW1hdGlvbihjbGllbnQpCiAgICAgLCBt
X2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlv
blNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fZWFzZUluT3V0VGltaW5nRnVu
Y3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb246OlRpbWluZ0Z1bmN0aW9uUHJlc2V0OjpFYXNlSW5PdXQpKQogewogI2lmIFVTRShH
TElCX0VWRU5UX0xPT1ApCiAgICAgbV9hbmltYXRpb25UaW1lci5zZXRQcmlvcml0eShXVEY6OlJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOwpAQCAtNTMs
MzQgKzU0LDM0IEBAIFNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
KFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQogCiBTY3JvbGxBbmltYXRpb25TbW9vdGg6
On5TY3JvbGxBbmltYXRpb25TbW9vdGgoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgRmxvYXRQb2ludCYg
ZnJvbVBvc2l0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQorYm9vbCBTY3JvbGxB
bmltYXRpb25TbW9vdGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9z
aXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpCiB7Ci0gICAgZmxvYXQgbWluU2Ny
b2xsUG9zaXRpb247Ci0gICAgZmxvYXQgbWF4U2Nyb2xsUG9zaXRpb247Ci0gICAgYXV0byBleHRl
bnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7Ci0gICAgaW5p
dGlhbGl6ZUF4ZXNEYXRhKGV4dGVudHMsIGZyb21Qb3NpdGlvbik7Ci0KLSAgICBpZiAob3JpZW50
YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICBtaW5TY3JvbGxQb3NpdGlv
biA9IGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLngoKTsKLSAgICAgICAgbWF4U2Nyb2xs
UG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgbWluU2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3Np
dGlvbi55KCk7Ci0gICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Ny
b2xsUG9zaXRpb24ueSgpOwotICAgIH0KLSAgICBhdXRvJiBkYXRhID0gb3JpZW50YXRpb24gPT0g
SG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0YTsK
LSAgICBib29sIG5lZWRUb1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRhKGRhdGEsIGdyYW51bGFy
aXR5LCBkYXRhLmRlc2lyZWRQb3NpdGlvbiArIChzdGVwICogbXVsdGlwbGllciksIG1pblNjcm9s
bFBvc2l0aW9uLCBtYXhTY3JvbGxQb3NpdGlvbik7Ci0gICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAh
aXNBY3RpdmUoKSkgewotICAgICAgICBtX3N0YXJ0VGltZSA9IG9yaWVudGF0aW9uID09IEhvcml6
b250YWxTY3JvbGxiYXIgPyBtX2hvcml6b250YWxEYXRhLnN0YXJ0VGltZSA6IG1fdmVydGljYWxE
YXRhLnN0YXJ0VGltZTsKLSAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOworICAgIG1fc3Rh
cnRQb3NpdGlvbiA9IGZyb21Qb3NpdGlvbjsKKyAgICBhdXRvIGRlc3RpbmF0aW9uUG9zaXRpb24g
PSBmcm9tUG9zaXRpb247CisgICAgc3dpdGNoIChvcmllbnRhdGlvbikgeworICAgIGNhc2UgSG9y
aXpvbnRhbFNjcm9sbGJhcjoKKyAgICAgICAgZGVzdGluYXRpb25Qb3NpdGlvbi5zZXRYKGRlc3Rp
bmF0aW9uUG9zaXRpb24ueCgpICsgc3RlcCAqIG11bHRpcGxpZXIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgorICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9u
LnNldFkoZGVzdGluYXRpb25Qb3NpdGlvbi55KCkgKyBzdGVwICogbXVsdGlwbGllcik7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOworCisgICAgbV9kdXJh
dGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRlc3RpbmF0aW9uUG9zaXRpb24gLSBtX3N0YXJ0
UG9zaXRpb24pOworICAgIFdURkxvZ0Fsd2F5cygiQW5pbWF0aW9uIGR1cmF0aW9uOiAlLjJmbXMi
LCBtX2R1cmF0aW9uLm1pbGxpc2Vjb25kcygpKTsKKworICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xp
ZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOworICAgIHJldHVybiBzdGFydE9y
UmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25Qb3NpdGlvbik7CiB9CiAKIGJv
b2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3Rp
bmF0aW9uUG9zaXRpb24pCiB7CisgICAgbV9zdGFydFBvc2l0aW9uID0gZnJvbVBvc2l0aW9uOwor
ICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbkZyb21EaXN0YW5jZShkZXN0aW5hdGlvblBvc2l0aW9u
IC0gbV9zdGFydFBvc2l0aW9uKTsKKworICAgIFdURkxvZ0Fsd2F5cygiQW5pbWF0aW9uIGR1cmF0
aW9uOiAlLjJmbXMiLCBtX2R1cmF0aW9uLm1pbGxpc2Vjb25kcygpKTsKKwogICAgIGF1dG8gZXh0
ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwotICAgIGlu
aXRpYWxpemVBeGVzRGF0YShleHRlbnRzLCBmcm9tUG9zaXRpb24pOwotICAgIAogICAgIHJldHVy
biBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25Qb3NpdGlvbik7
CiB9CiAKQEAgLTk1LDEyICs5NiwxMSBAQCBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0
YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYQogCiBib29s
IFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNj
cm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRp
b24pCiB7Ci0gICAgYXV0byBncmFudWxhcml0eSA9IFNjcm9sbEJ5UGFnZTsKLSAgICBib29sIG5l
ZWRUb1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRhKG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFy
aXR5LCBkZXN0aW5hdGlvblBvc2l0aW9uLngoKSwgZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRp
b24ueCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCksIHNtb290aEZhY3RvckZv
clByb2dyYW1tYXRpY1Njcm9sbCk7Ci0gICAgbmVlZFRvU2Nyb2xsIHw9Ci0gICAgICAgIHVwZGF0
ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgZGVzdGluYXRpb25Qb3Np
dGlvbi55KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwp
OworICAgIG1fZGVzdGluYXRpb25Qb3NpdGlvbiA9IGRlc3RpbmF0aW9uUG9zaXRpb24uY29uc3Ry
YWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGlt
dW1TY3JvbGxQb3NpdGlvbik7CisgICAgYm9vbCBuZWVkVG9TY3JvbGwgPSBtX3N0YXJ0UG9zaXRp
b24gIT0gbV9kZXN0aW5hdGlvblBvc2l0aW9uOworCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAh
aXNBY3RpdmUoKSkgewotICAgICAgICBtX3N0YXJ0VGltZSA9IG1fdmVydGljYWxEYXRhLnN0YXJ0
VGltZTsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAg
ICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIH0KICAgICByZXR1cm4gbmVlZFRvU2Nyb2xs
OwpAQCAtMTE1LDMwOSArMTE1LDM1IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9w
KCkKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsK
ICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0
aGlzKTsKLSAgICBtX2hvcml6b250YWxEYXRhLnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2li
bGVTaXplLndpZHRoKCk7Ci0gICAgbV92ZXJ0aWNhbERhdGEudmlzaWJsZUxlbmd0aCA9IGV4dGVu
dHMudmlzaWJsZVNpemUuaGVpZ2h0KCk7CisgICAgLy8gRklYTUU6IElkZWFsbHkgZml4IHVwIG1f
c3RhcnRQb3NpdGlvbiBzbyBtX2N1cnJlbnRQb3NpdGlvbiBkb2Vzbid0IGdvIGJhY2t3YXJkcy4K
KyAgICBtX2Rlc3RpbmF0aW9uUG9zaXRpb24gPSBtX2Rlc3RpbmF0aW9uUG9zaXRpb24uY29uc3Ry
YWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGlt
dW1TY3JvbGxQb3NpdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0
aWFsaXplQXhlc0RhdGEoY29uc3QgU2Nyb2xsRXh0ZW50cyYgZXh0ZW50cywgY29uc3QgRmxvYXRQ
b2ludCYgc3RhcnRQb3NpdGlvbikKK1NlY29uZHMgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpkdXJh
dGlvbkZyb21EaXN0YW5jZShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAogewotICAgIG1f
aG9yaXpvbnRhbERhdGEgPSBQZXJBeGlzRGF0YShzdGFydFBvc2l0aW9uLngoKSwgZXh0ZW50cy52
aXNpYmxlU2l6ZS53aWR0aCgpKTsKLSAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNEYXRhKHN0
YXJ0UG9zaXRpb24ueSgpLCBleHRlbnRzLnZpc2libGVTaXplLmhlaWdodCgpKTsKKyAgICBmbG9h
dCBkaXN0YW5jZSA9IGV1Y2xpZGlhbkRpc3RhbmNlKGRlbHRhKTsKKyAgICByZXR1cm4gc3RkOjpt
aW4oU2Vjb25kcyhkaXN0YW5jZSAvIGFuaW1hdGlvblNwZWVkKSwgbWF4QW5pbWF0aW9uRHVyYXRp
b24pOwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBjdXJ2ZUF0KFNjcm9sbEFuaW1hdGlvblNt
b290aDo6Q3VydmUgY3VydmUsIGRvdWJsZSB0KQoraW5saW5lIGZsb2F0IGxpbmVhckludGVycG9s
YXRpb24oZmxvYXQgcHJvZ3Jlc3MsIGZsb2F0IGEsIGZsb2F0IGIpCiB7Ci0gICAgc3dpdGNoIChj
dXJ2ZSkgewotICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOgot
ICAgICAgICByZXR1cm4gdDsKLSAgICBjYXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6
OlF1YWRyYXRpYzoKLSAgICAgICAgcmV0dXJuIHQgKiB0OwotICAgIGNhc2UgU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjpDdXJ2ZTo6Q3ViaWM6Ci0gICAgICAgIHJldHVybiB0ICogdCAqIHQ7Ci0gICAg
Y2FzZSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlOjpRdWFydGljOgotICAgICAgICByZXR1
cm4gdCAqIHQgKiB0ICogdDsKLSAgICBjYXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6
OkJvdW5jZToKLSAgICAgICAgLy8gVGltZSBiYXNlIGlzIGNob3NlbiB0byBrZWVwIHRoZSBib3Vu
Y2UgcG9pbnRzIHNpbXBsZXI6Ci0gICAgICAgIC8vIDEgKGhhbGYgYm91bmNlIGNvbWluZyBpbikg
KyAxICsgLjUgKyAuMjUKLSAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lQmFzZSA9IDIu
NzU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGltZUJhc2VTcXVhcmVkID0gdGltZUJh
c2UgKiB0aW1lQmFzZTsKLSAgICAgICAgaWYgKHQgPCAxIC8gdGltZUJhc2UpCi0gICAgICAgICAg
ICByZXR1cm4gdGltZUJhc2VTcXVhcmVkICogdCAqIHQ7Ci0gICAgICAgIGlmICh0IDwgMiAvIHRp
bWVCYXNlKSB7Ci0gICAgICAgICAgICAvLyBJbnZlcnQgYSBbLS41LC41XSBxdWFkcmF0aWMgcGFy
YWJvbGEsIGNlbnRlciBpdCBpbiBbMSwyXS4KLSAgICAgICAgICAgIGRvdWJsZSB0MSA9IHQgLSAx
LjUgLyB0aW1lQmFzZTsKLSAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBwYXJhYm9sYUF0RWRnZSA9
IDEgLSAuNSAqIC41OwotICAgICAgICAgICAgcmV0dXJuIHRpbWVCYXNlU3F1YXJlZCAqIHQxICog
dDEgKyBwYXJhYm9sYUF0RWRnZTsKLSAgICAgICAgfQotICAgICAgICBpZiAodCA8IDIuNSAvIHRp
bWVCYXNlKSB7Ci0gICAgICAgICAgICAvLyBJbnZlcnQgYSBbLS4yNSwuMjVdIHF1YWRyYXRpYyBw
YXJhYm9sYSwgY2VudGVyIGl0IGluIFsyLDIuNV0uCi0gICAgICAgICAgICBkb3VibGUgdDIgPSB0
IC0gMi4yNSAvIHRpbWVCYXNlOwotICAgICAgICAgICAgY29uc3QgZG91YmxlIHBhcmFib2xhQXRF
ZGdlID0gMSAtIC4yNSAqIC4yNTsKLSAgICAgICAgICAgIHJldHVybiB0aW1lQmFzZVNxdWFyZWQg
KiB0MiAqIHQyICsgcGFyYWJvbGFBdEVkZ2U7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52ZXJ0
IGEgWy0uMTI1LC4xMjVdIHF1YWRyYXRpYyBwYXJhYm9sYSwgY2VudGVyIGl0IGluIFsyLjUsMi43
NV0uCi0gICAgICAgIGNvbnN0IGRvdWJsZSBwYXJhYm9sYUF0RWRnZSA9IDEgLSAuMTI1ICogLjEy
NTsKLSAgICAgICAgdCAtPSAyLjYyNSAvIHRpbWVCYXNlOwotICAgICAgICByZXR1cm4gdGltZUJh
c2VTcXVhcmVkICogdCAqIHQgKyBwYXJhYm9sYUF0RWRnZTsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGEgKyBwcm9ncmVzcyAqIChi
IC0gYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91YmxlIGF0dGFja0N1cnZlKFNjcm9sbEFuaW1h
dGlvblNtb290aDo6Q3VydmUgY3VydmUsIGRvdWJsZSBkZWx0YVRpbWUsIGRvdWJsZSBjdXJ2ZVQs
IGRvdWJsZSBzdGFydFBvc2l0aW9uLCBkb3VibGUgYXR0YWNrUG9zaXRpb24pCitib29sIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6YW5pbWF0ZVNjcm9sbChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1l
KQogewotICAgIGRvdWJsZSB0ID0gZGVsdGFUaW1lIC8gY3VydmVUOwotICAgIGRvdWJsZSBwb3Np
dGlvbkZhY3RvciA9IGN1cnZlQXQoY3VydmUsIHQpOwotICAgIHJldHVybiBzdGFydFBvc2l0aW9u
ICsgcG9zaXRpb25GYWN0b3IgKiAoYXR0YWNrUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKLX0K
KyAgICBNb25vdG9uaWNUaW1lIGVuZFRpbWUgPSBtX3N0YXJ0VGltZSArIG1fZHVyYXRpb247Cisg
ICAgY3VycmVudFRpbWUgPSBzdGQ6Om1pbihjdXJyZW50VGltZSwgZW5kVGltZSk7CiAKLXN0YXRp
YyBpbmxpbmUgZG91YmxlIHJlbGVhc2VDdXJ2ZShTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZl
IGN1cnZlLCBkb3VibGUgZGVsdGFUaW1lLCBkb3VibGUgY3VydmVULCBkb3VibGUgcmVsZWFzZVBv
c2l0aW9uLCBkb3VibGUgZGVzaXJlZFBvc2l0aW9uKQotewotICAgIGRvdWJsZSB0ID0gZGVsdGFU
aW1lIC8gY3VydmVUOwotICAgIGRvdWJsZSBwb3NpdGlvbkZhY3RvciA9IDEgLSBjdXJ2ZUF0KGN1
cnZlLCAxIC0gdCk7Ci0gICAgcmV0dXJuIHJlbGVhc2VQb3NpdGlvbiArIChwb3NpdGlvbkZhY3Rv
ciAqIChkZXNpcmVkUG9zaXRpb24gLSByZWxlYXNlUG9zaXRpb24pKTsKLX0KKyAgICBkb3VibGUg
ZnJhY3Rpb25Db21wbGV0ZSA9IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRp
b247CisgICAgZG91YmxlIHByb2dyZXNzID0gbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbi0+dHJh
bnNmb3JtVGltZShmcmFjdGlvbkNvbXBsZXRlLCBtX2R1cmF0aW9uLnZhbHVlKCkpOwogCi1zdGF0
aWMgaW5saW5lIGRvdWJsZSBjb2FzdEN1cnZlKFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmUg
Y3VydmUsIGRvdWJsZSBmYWN0b3IpCi17Ci0gICAgcmV0dXJuIDEgLSBjdXJ2ZUF0KGN1cnZlLCAx
IC0gZmFjdG9yKTsKLX0KKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHsKKyAgICAgICAgbGluZWFy
SW50ZXJwb2xhdGlvbihwcm9ncmVzcywgbV9zdGFydFBvc2l0aW9uLngoKSwgbV9kZXN0aW5hdGlv
blBvc2l0aW9uLngoKSksCisgICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1f
c3RhcnRQb3NpdGlvbi55KCksIG1fZGVzdGluYXRpb25Qb3NpdGlvbi55KCkpLAorICAgIH07CiAK
LXN0YXRpYyBpbmxpbmUgZG91YmxlIGN1cnZlSW50ZWdyYWxBdChTY3JvbGxBbmltYXRpb25TbW9v
dGg6OkN1cnZlIGN1cnZlLCBkb3VibGUgdCkKLXsKLSAgICBzd2l0Y2ggKGN1cnZlKSB7Ci0gICAg
Y2FzZSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlOjpMaW5lYXI6Ci0gICAgICAgIHJldHVy
biB0ICogdCAvIDI7Ci0gICAgY2FzZSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlOjpRdWFk
cmF0aWM6Ci0gICAgICAgIHJldHVybiB0ICogdCAqIHQgLyAzOwotICAgIGNhc2UgU2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjpDdXJ2ZTo6Q3ViaWM6Ci0gICAgICAgIHJldHVybiB0ICogdCAqIHQgKiB0
IC8gNDsKLSAgICBjYXNlIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6OlF1YXJ0aWM6Ci0g
ICAgICAgIHJldHVybiB0ICogdCAqIHQgKiB0ICogdCAvIDU7Ci0gICAgY2FzZSBTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OkN1cnZlOjpCb3VuY2U6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
dGltZUJhc2UgPSAyLjc1OwotICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRpbWVCYXNlU3F1
YXJlZCA9IHRpbWVCYXNlICogdGltZUJhc2U7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
dGltZUJhc2VTcXVhcmVkT3ZlclRocmVlID0gdGltZUJhc2VTcXVhcmVkIC8gMzsKLSAgICAgICAg
ZG91YmxlIGFyZWE7Ci0gICAgICAgIGRvdWJsZSB0MSA9IHN0ZDo6bWluKHQsIDEgLyB0aW1lQmFz
ZSk7Ci0gICAgICAgIGFyZWEgPSB0aW1lQmFzZVNxdWFyZWRPdmVyVGhyZWUgKiB0MSAqIHQxICog
dDE7Ci0gICAgICAgIGlmICh0IDwgMSAvIHRpbWVCYXNlKQotICAgICAgICAgICAgcmV0dXJuIGFy
ZWE7Ci0KLSAgICAgICAgdDEgPSBzdGQ6Om1pbih0IC0gMSAvIHRpbWVCYXNlLCAxIC8gdGltZUJh
c2UpOwotICAgICAgICAvLyBUaGUgaW50ZWdyYWwgb2YgdGltZUJhc2VTcXVhcmVkICogKHQxIC0g
LjUgLyB0aW1lQmFzZSkgKiAodDEgLSAuNSAvIHRpbWVCYXNlKSArIHBhcmFib2xhQXRFZGdlCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgc2Vjb25kSW5uZXJPZmZzZXQgPSB0aW1lQmFzZVNx
dWFyZWQgKiAuNSAvIHRpbWVCYXNlOwotICAgICAgICBkb3VibGUgYm91bmNlQXJlYSA9IHQxICog
KHQxICogKHRpbWVCYXNlU3F1YXJlZE92ZXJUaHJlZSAqIHQxIC0gc2Vjb25kSW5uZXJPZmZzZXQp
ICsgMSk7Ci0gICAgICAgIGFyZWEgKz0gYm91bmNlQXJlYTsKLSAgICAgICAgaWYgKHQgPCAyIC8g
dGltZUJhc2UpCi0gICAgICAgICAgICByZXR1cm4gYXJlYTsKLQotICAgICAgICB0MSA9IHN0ZDo6
bWluKHQgLSAyIC8gdGltZUJhc2UsIDAuNSAvIHRpbWVCYXNlKTsKLSAgICAgICAgLy8gVGhlIGlu
dGVncmFsIG9mIHRpbWVCYXNlU3F1YXJlZCAqICh0MSAtIC4yNSAvIHRpbWVCYXNlKSAqICh0MSAt
IC4yNSAvIHRpbWVCYXNlKSArIHBhcmFib2xhQXRFZGdlCi0gICAgICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgdGhpcmRJbm5lck9mZnNldCA9IHRpbWVCYXNlU3F1YXJlZCAqIC4yNSAvIHRpbWVCYXNl
OwotICAgICAgICBib3VuY2VBcmVhID0gIHQxICogKHQxICogKHRpbWVCYXNlU3F1YXJlZE92ZXJU
aHJlZSAqIHQxIC0gdGhpcmRJbm5lck9mZnNldCkgKyAxKTsKLSAgICAgICAgYXJlYSArPSBib3Vu
Y2VBcmVhOwotICAgICAgICBpZiAodCA8IDIuNSAvIHRpbWVCYXNlKQotICAgICAgICAgICAgcmV0
dXJuIGFyZWE7Ci0KLSAgICAgICAgdDEgPSB0IC0gMi41IC8gdGltZUJhc2U7Ci0gICAgICAgIC8v
IFRoZSBpbnRlZ3JhbCBvZiB0aW1lQmFzZVNxdWFyZWQgKiAodDEgLSAuMTI1IC8gdGltZUJhc2Up
ICogKHQxIC0gLjEyNSAvIHRpbWVCYXNlKSArIHBhcmFib2xhQXRFZGdlCi0gICAgICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgZm91cnRoSW5uZXJPZmZzZXQgPSB0aW1lQmFzZVNxdWFyZWQgKiAuMTI1
IC8gdGltZUJhc2U7Ci0gICAgICAgIGJvdW5jZUFyZWEgPSB0MSAqICh0MSAqICh0aW1lQmFzZVNx
dWFyZWRPdmVyVGhyZWUgKiB0MSAtIGZvdXJ0aElubmVyT2Zmc2V0KSArIDEpOwotICAgICAgICBh
cmVhICs9IGJvdW5jZUFyZWE7Ci0gICAgICAgIHJldHVybiBhcmVhOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGlubGluZSBkb3Vi
bGUgYXR0YWNrQXJlYShTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlIGN1cnZlLCBkb3VibGUg
c3RhcnRULCBkb3VibGUgZW5kVCkKLXsKLSAgICBkb3VibGUgc3RhcnRWYWx1ZSA9IGN1cnZlSW50
ZWdyYWxBdChjdXJ2ZSwgc3RhcnRUKTsKLSAgICBkb3VibGUgZW5kVmFsdWUgPSBjdXJ2ZUludGVn
cmFsQXQoY3VydmUsIGVuZFQpOwotICAgIHJldHVybiBlbmRWYWx1ZSAtIHN0YXJ0VmFsdWU7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgZG91YmxlIHJlbGVhc2VBcmVhKFNjcm9sbEFuaW1hdGlvblNtb290
aDo6Q3VydmUgY3VydmUsIGRvdWJsZSBzdGFydFQsIGRvdWJsZSBlbmRUKQotewotICAgIGRvdWJs
ZSBzdGFydFZhbHVlID0gY3VydmVJbnRlZ3JhbEF0KGN1cnZlLCAxIC0gZW5kVCk7Ci0gICAgZG91
YmxlIGVuZFZhbHVlID0gY3VydmVJbnRlZ3JhbEF0KGN1cnZlLCAxIC0gc3RhcnRUKTsKLSAgICBy
ZXR1cm4gZW5kVmFsdWUgLSBzdGFydFZhbHVlOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0
QW5pbWF0aW9uUGFyYW1ldGVyc0ZvckdyYW51bGFyaXR5KFNjcm9sbEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBTZWNvbmRzJiBhbmltYXRpb25EdXJhdGlvbiwgU2Vjb25kcyYgcmVwZWF0TWluaW11
bVN1c3RhaW5UaW1lLCBTZWNvbmRzJiBhdHRhY2tEdXJhdGlvbiwgU2Vjb25kcyYgcmVsZWFzZUR1
cmF0aW9uLCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlJiBjb2FzdFRpbWVDdXJ2ZSwgU2Vj
b25kcyYgbWF4aW11bUNvYXN0VGltZSkKLXsKLSAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgY2FzZSBTY3JvbGxCeURvY3VtZW50OgotICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IHRp
Y2tUaW1lICogMTA7Ci0gICAgICAgIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSA9IHRpY2tUaW1l
ICogMTA7Ci0gICAgICAgIGF0dGFja0R1cmF0aW9uID0gdGlja1RpbWUgKiAxMDsKLSAgICAgICAg
cmVsZWFzZUR1cmF0aW9uID0gdGlja1RpbWUgKiAxMDsKLSAgICAgICAgY29hc3RUaW1lQ3VydmUg
PSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlOjpMaW5lYXI7Ci0gICAgICAgIG1heGltdW1D
b2FzdFRpbWUgPSAxX3M7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Nyb2xsQnlMaW5lOgot
ICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IHRpY2tUaW1lICogMTA7Ci0gICAgICAgIHJlcGVh
dE1pbmltdW1TdXN0YWluVGltZSA9IHRpY2tUaW1lICogNzsKLSAgICAgICAgYXR0YWNrRHVyYXRp
b24gPSB0aWNrVGltZSAqIDM7Ci0gICAgICAgIHJlbGVhc2VEdXJhdGlvbiA9IHRpY2tUaW1lICog
MzsKLSAgICAgICAgY29hc3RUaW1lQ3VydmUgPSBTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZl
OjpMaW5lYXI7Ci0gICAgICAgIG1heGltdW1Db2FzdFRpbWUgPSAxX3M7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU2Nyb2xsQnlQYWdlOgotICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IHRp
Y2tUaW1lICogMTU7Ci0gICAgICAgIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSA9IHRpY2tUaW1l
ICogMTA7Ci0gICAgICAgIGF0dGFja0R1cmF0aW9uID0gdGlja1RpbWUgKiA1OwotICAgICAgICBy
ZWxlYXNlRHVyYXRpb24gPSB0aWNrVGltZSAqIDU7Ci0gICAgICAgIGNvYXN0VGltZUN1cnZlID0g
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOwotICAgICAgICBtYXhpbXVtQ29h
c3RUaW1lID0gMV9zOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNjcm9sbEJ5UGl4ZWw6Ci0g
ICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gdGlja1RpbWUgKiAxMTsKLSAgICAgICAgcmVwZWF0
TWluaW11bVN1c3RhaW5UaW1lID0gdGlja1RpbWUgKiAyOwotICAgICAgICBhdHRhY2tEdXJhdGlv
biA9IHRpY2tUaW1lICogMzsKLSAgICAgICAgcmVsZWFzZUR1cmF0aW9uID0gdGlja1RpbWUgKiAz
OwotICAgICAgICBjb2FzdFRpbWVDdXJ2ZSA9IFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6
OlF1YWRyYXRpYzsKLSAgICAgICAgbWF4aW11bUNvYXN0VGltZSA9IDEyNTBfbXM7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLX0KLQotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVBlckF4aXNEYXRhKFBl
ckF4aXNEYXRhJiBkYXRhLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbmV3
UG9zaXRpb24sIGZsb2F0IG1pblNjcm9sbFBvc2l0aW9uLCBmbG9hdCBtYXhTY3JvbGxQb3NpdGlv
biwgZG91YmxlIHNtb290aEZhY3RvcikKLXsKLSAgICBpZiAoIWRhdGEuc3RhcnRUaW1lIHx8IG5l
d1Bvc2l0aW9uID09IGRhdGEuY3VycmVudFBvc2l0aW9uKSB7Ci0gICAgICAgIGRhdGEuZGVzaXJl
ZFBvc2l0aW9uID0gZGF0YS5jdXJyZW50UG9zaXRpb247Ci0gICAgICAgIGRhdGEuc3RhcnRUaW1l
ID0geyB9OwotICAgIH0KLQotICAgIG5ld1Bvc2l0aW9uID0gc3RkOjptYXgoc3RkOjptaW4obmV3
UG9zaXRpb24sIG1heFNjcm9sbFBvc2l0aW9uKSwgbWluU2Nyb2xsUG9zaXRpb24pOwotICAgIGlm
IChuZXdQb3NpdGlvbiA9PSBkYXRhLmRlc2lyZWRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbiwgcmVwZWF0TWluaW11bVN1c3Rh
aW5UaW1lLCBhdHRhY2tEdXJhdGlvbiwgcmVsZWFzZUR1cmF0aW9uLCBtYXhpbXVtQ29hc3RUaW1l
OwotICAgIEN1cnZlIGNvYXN0VGltZUN1cnZlOwotICAgIGdldEFuaW1hdGlvblBhcmFtZXRlcnNG
b3JHcmFudWxhcml0eShncmFudWxhcml0eSwgYW5pbWF0aW9uRHVyYXRpb24sIHJlcGVhdE1pbmlt
dW1TdXN0YWluVGltZSwgYXR0YWNrRHVyYXRpb24sIHJlbGVhc2VEdXJhdGlvbiwgY29hc3RUaW1l
Q3VydmUsIG1heGltdW1Db2FzdFRpbWUpOwotCi0gICAgYW5pbWF0aW9uRHVyYXRpb24gKj0gc21v
b3RoRmFjdG9yOwotICAgIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSAqPSBzbW9vdGhGYWN0b3I7
Ci0gICAgYXR0YWNrRHVyYXRpb24gKj0gc21vb3RoRmFjdG9yOwotICAgIHJlbGVhc2VEdXJhdGlv
biAqPSBzbW9vdGhGYWN0b3I7Ci0gICAgbWF4aW11bUNvYXN0VGltZSAqPSBzbW9vdGhGYWN0b3I7
Ci0KLSAgICBkYXRhLmRlc2lyZWRQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uOwotICAgIGlmICghZGF0
YS5zdGFydFRpbWUpCi0gICAgICAgIGRhdGEuYXR0YWNrRHVyYXRpb24gPSBhdHRhY2tEdXJhdGlv
bjsKLSAgICBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uID0gYW5pbWF0aW9uRHVyYXRpb247Ci0gICAg
ZGF0YS5yZWxlYXNlRHVyYXRpb24gPSByZWxlYXNlRHVyYXRpb247Ci0KLSAgICAvLyBQcmlvcml0
aXplIG91ciB3YXkgb3V0IG9mIG92ZXIgY29uc3RyYWludC4KLSAgICBpZiAoZGF0YS5hdHRhY2tE
dXJhdGlvbiArIGRhdGEucmVsZWFzZUR1cmF0aW9uID4gZGF0YS5hbmltYXRpb25EdXJhdGlvbikg
ewotICAgICAgICBpZiAoZGF0YS5yZWxlYXNlRHVyYXRpb24gPiBkYXRhLmFuaW1hdGlvbkR1cmF0
aW9uKQotICAgICAgICAgICAgZGF0YS5yZWxlYXNlRHVyYXRpb24gPSBkYXRhLmFuaW1hdGlvbkR1
cmF0aW9uOwotICAgICAgICBkYXRhLmF0dGFja0R1cmF0aW9uID0gZGF0YS5hbmltYXRpb25EdXJh
dGlvbiAtIGRhdGEucmVsZWFzZUR1cmF0aW9uOwotICAgIH0KLQotICAgIGlmICghZGF0YS5zdGFy
dFRpbWUpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSB0aW1lIGZyb20g
dGhlIGV2ZW50IHRoYXQgZ290IHVzIGhlcmUuCi0gICAgICAgIGRhdGEuc3RhcnRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIuOwotICAgICAgICBkYXRhLnN0YXJ0UG9z
aXRpb24gPSBkYXRhLmN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAgZGF0YS5sYXN0QW5pbWF0aW9u
VGltZSA9IGRhdGEuc3RhcnRUaW1lOwotICAgIH0KLSAgICBkYXRhLnN0YXJ0VmVsb2NpdHkgPSBk
YXRhLmN1cnJlbnRWZWxvY2l0eTsKLQotICAgIGRvdWJsZSByZW1haW5pbmdEZWx0YSA9IGRhdGEu
ZGVzaXJlZFBvc2l0aW9uIC0gZGF0YS5jdXJyZW50UG9zaXRpb247Ci0gICAgZG91YmxlIGF0dGFj
a0FyZWFMZWZ0ID0gMDsKLSAgICBTZWNvbmRzIGRlbHRhVGltZSA9IGRhdGEubGFzdEFuaW1hdGlv
blRpbWUgLSBkYXRhLnN0YXJ0VGltZTsKLSAgICBTZWNvbmRzIGF0dGFja1RpbWVMZWZ0ID0gc3Rk
OjptYXgoMF9zLCBkYXRhLmF0dGFja0R1cmF0aW9uIC0gZGVsdGFUaW1lKTsKLSAgICBTZWNvbmRz
IHRpbWVMZWZ0ID0gZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRlbHRhVGltZTsKLSAgICBTZWNv
bmRzIG1pblRpbWVMZWZ0ID0gZGF0YS5yZWxlYXNlRHVyYXRpb24gKyBzdGQ6Om1pbihyZXBlYXRN
aW5pbXVtU3VzdGFpblRpbWUsIGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VE
dXJhdGlvbiAtIGF0dGFja1RpbWVMZWZ0KTsKLSAgICBpZiAodGltZUxlZnQgPCBtaW5UaW1lTGVm
dCkgewotICAgICAgICBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uID0gZGVsdGFUaW1lICsgbWluVGlt
ZUxlZnQ7Ci0gICAgICAgIHRpbWVMZWZ0ID0gbWluVGltZUxlZnQ7Ci0gICAgfQotCi0gICAgaWYg
KG1heGltdW1Db2FzdFRpbWUgPiAocmVwZWF0TWluaW11bVN1c3RhaW5UaW1lICsgcmVsZWFzZUR1
cmF0aW9uKSkgewotICAgICAgICBkb3VibGUgdGFyZ2V0TWF4Q29hc3RWZWxvY2l0eSA9IGRhdGEu
dmlzaWJsZUxlbmd0aCAqIC4yNSAqIGZyYW1lUmF0ZTsKLSAgICAgICAgLy8gVGhpcyBuZWVkcyB0
byBiZSBhcyBtaW5pbWFsIGFzIHBvc3NpYmxlIHdoaWxlIG5vdCBiZWluZyBpbnRydXNpdmUgdG8g
cGFnZSB1cC9kb3duLgotICAgICAgICBkb3VibGUgbWluQ29hc3REZWx0YSA9IGRhdGEudmlzaWJs
ZUxlbmd0aDsKLQotICAgICAgICBpZiAoZmFicyhyZW1haW5pbmdEZWx0YSkgPiBtaW5Db2FzdERl
bHRhKSB7Ci0gICAgICAgICAgICBkb3VibGUgbWF4Q29hc3REZWx0YSA9IG1heGltdW1Db2FzdFRp
bWUudmFsdWUoKSAqIHRhcmdldE1heENvYXN0VmVsb2NpdHk7Ci0gICAgICAgICAgICBkb3VibGUg
Y29hc3RGYWN0b3IgPSBzdGQ6Om1pbigxLiwgKGZhYnMocmVtYWluaW5nRGVsdGEpIC0gbWluQ29h
c3REZWx0YSkgLyAobWF4Q29hc3REZWx0YSAtIG1pbkNvYXN0RGVsdGEpKTsKLQotICAgICAgICAg
ICAgLy8gV2UgY291bGQgcGxheSB3aXRoIHRoZSBjdXJ2ZSBoZXJlIC0gbGluZWFyIHNlZW1zIGEg
bGl0dGxlIHNvZnQuIEluaXRpYWwgdGVzdGluZyBtYWtlcyBtZSB3YW50IHRvIGZlZWQgaW50byB0
aGUgc3VzdGFpbiB0aW1lIG1vcmUgYWdncmVzc2l2ZWx5LgotICAgICAgICAgICAgU2Vjb25kcyBj
b2FzdE1pblRpbWVMZWZ0ID0gc3RkOjptaW4obWF4aW11bUNvYXN0VGltZSwgbWluVGltZUxlZnQg
KyAobWF4aW11bUNvYXN0VGltZSAtIG1pblRpbWVMZWZ0KSAqIGNvYXN0Q3VydmUoY29hc3RUaW1l
Q3VydmUsIGNvYXN0RmFjdG9yKSk7Ci0KLSAgICAgICAgICAgIGlmIChTZWNvbmRzIGFkZGl0aW9u
YWxUaW1lID0gc3RkOjptYXgoMF9zLCBjb2FzdE1pblRpbWVMZWZ0IC0gbWluVGltZUxlZnQpKSB7
Ci0gICAgICAgICAgICAgICAgU2Vjb25kcyBhZGRpdGlvbmFsUmVsZWFzZVRpbWUgPSBzdGQ6Om1p
bihhZGRpdGlvbmFsVGltZSwgYWRkaXRpb25hbFRpbWUgKiAocmVsZWFzZUR1cmF0aW9uIC8gKHJl
bGVhc2VEdXJhdGlvbiArIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSkpKTsKLSAgICAgICAgICAg
ICAgICBkYXRhLnJlbGVhc2VEdXJhdGlvbiA9IHJlbGVhc2VEdXJhdGlvbiArIGFkZGl0aW9uYWxS
ZWxlYXNlVGltZTsKLSAgICAgICAgICAgICAgICBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uID0gZGVs
dGFUaW1lICsgY29hc3RNaW5UaW1lTGVmdDsKLSAgICAgICAgICAgICAgICB0aW1lTGVmdCA9IGNv
YXN0TWluVGltZUxlZnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBT
ZWNvbmRzIHJlbGVhc2VUaW1lTGVmdCA9IHN0ZDo6bWluKHRpbWVMZWZ0LCBkYXRhLnJlbGVhc2VE
dXJhdGlvbik7Ci0gICAgU2Vjb25kcyBzdXN0YWluVGltZUxlZnQgPSBzdGQ6Om1heCgwX3MsIHRp
bWVMZWZ0IC0gcmVsZWFzZVRpbWVMZWZ0IC0gYXR0YWNrVGltZUxlZnQpOwotICAgIGlmIChhdHRh
Y2tUaW1lTGVmdCkgewotICAgICAgICBkb3VibGUgYXR0YWNrU3BvdCA9IGRlbHRhVGltZSAvIGRh
dGEuYXR0YWNrRHVyYXRpb247Ci0gICAgICAgIGF0dGFja0FyZWFMZWZ0ID0gYXR0YWNrQXJlYShD
dXJ2ZTo6Q3ViaWMsIGF0dGFja1Nwb3QsIDEpICogZGF0YS5hdHRhY2tEdXJhdGlvbi52YWx1ZSgp
OwotICAgIH0KLQotICAgIGRvdWJsZSByZWxlYXNlU3BvdCA9IChkYXRhLnJlbGVhc2VEdXJhdGlv
biAtIHJlbGVhc2VUaW1lTGVmdCkgLyBkYXRhLnJlbGVhc2VEdXJhdGlvbjsKLSAgICBkb3VibGUg
cmVsZWFzZUFyZWFMZWZ0ID0gcmVsZWFzZUFyZWEoQ3VydmU6OkN1YmljLCByZWxlYXNlU3BvdCwg
MSkgKiBkYXRhLnJlbGVhc2VEdXJhdGlvbi52YWx1ZSgpOwotCi0gICAgZGF0YS5kZXNpcmVkVmVs
b2NpdHkgPSByZW1haW5pbmdEZWx0YSAvIChhdHRhY2tBcmVhTGVmdCArIHN1c3RhaW5UaW1lTGVm
dC52YWx1ZSgpICsgcmVsZWFzZUFyZWFMZWZ0KTsKLSAgICBkYXRhLnJlbGVhc2VQb3NpdGlvbiA9
IGRhdGEuZGVzaXJlZFBvc2l0aW9uIC0gZGF0YS5kZXNpcmVkVmVsb2NpdHkgKiByZWxlYXNlQXJl
YUxlZnQ7Ci0gICAgaWYgKGF0dGFja0FyZWFMZWZ0KQotICAgICAgICBkYXRhLmF0dGFja1Bvc2l0
aW9uID0gZGF0YS5zdGFydFBvc2l0aW9uICsgZGF0YS5kZXNpcmVkVmVsb2NpdHkgKiBhdHRhY2tB
cmVhTGVmdDsKLSAgICBlbHNlCi0gICAgICAgIGRhdGEuYXR0YWNrUG9zaXRpb24gPSBkYXRhLnJl
bGVhc2VQb3NpdGlvbiAtIChkYXRhLmFuaW1hdGlvbkR1cmF0aW9uIC0gZGF0YS5yZWxlYXNlRHVy
YXRpb24gLSBkYXRhLmF0dGFja0R1cmF0aW9uKS52YWx1ZSgpICogZGF0YS5kZXNpcmVkVmVsb2Np
dHk7Ci0KLSAgICBpZiAoc3VzdGFpblRpbWVMZWZ0KSB7Ci0gICAgICAgIGRvdWJsZSByb3VuZE9m
ZiA9IGRhdGEucmVsZWFzZVBvc2l0aW9uIC0gKChhdHRhY2tBcmVhTGVmdCA/IGRhdGEuYXR0YWNr
UG9zaXRpb24gOiBkYXRhLmN1cnJlbnRQb3NpdGlvbikgKyBkYXRhLmRlc2lyZWRWZWxvY2l0eSAq
IHN1c3RhaW5UaW1lTGVmdC52YWx1ZSgpKTsKLSAgICAgICAgZGF0YS5kZXNpcmVkVmVsb2NpdHkg
Kz0gcm91bmRPZmYgLyBzdXN0YWluVGltZUxlZnQudmFsdWUoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGVTY3JvbGwo
UGVyQXhpc0RhdGEmIGRhdGEsIE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCi17Ci0gICAgaWYg
KCFkYXRhLnN0YXJ0VGltZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU2Vjb25kcyBs
YXN0U2Nyb2xsSW50ZXJ2YWwgPSBjdXJyZW50VGltZSAtIGRhdGEubGFzdEFuaW1hdGlvblRpbWU7
Ci0gICAgaWYgKGxhc3RTY3JvbGxJbnRlcnZhbCA8IG1pbmltdW1UaW1lckludGVydmFsKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGRhdGEubGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50
VGltZTsKLQotICAgIFNlY29uZHMgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBkYXRhLnN0YXJ0
VGltZTsKLSAgICBkb3VibGUgbmV3UG9zaXRpb24gPSBkYXRhLmN1cnJlbnRQb3NpdGlvbjsKLQot
ICAgIGlmIChkZWx0YVRpbWUgPiBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uKSB7Ci0gICAgICAgIGRh
dGEgPSBQZXJBeGlzRGF0YShkYXRhLmRlc2lyZWRQb3NpdGlvbiwgZGF0YS52aXNpYmxlTGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoZGVsdGFUaW1lIDwgZGF0
YS5hdHRhY2tEdXJhdGlvbikKLSAgICAgICAgbmV3UG9zaXRpb24gPSBhdHRhY2tDdXJ2ZShDdXJ2
ZTo6Q3ViaWMsIGRlbHRhVGltZS52YWx1ZSgpLCBkYXRhLmF0dGFja0R1cmF0aW9uLnZhbHVlKCks
IGRhdGEuc3RhcnRQb3NpdGlvbiwgZGF0YS5hdHRhY2tQb3NpdGlvbik7Ci0gICAgZWxzZSBpZiAo
ZGVsdGFUaW1lIDwgKGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VEdXJhdGlv
bikpCi0gICAgICAgIG5ld1Bvc2l0aW9uID0gZGF0YS5hdHRhY2tQb3NpdGlvbiArIChkZWx0YVRp
bWUgLSBkYXRhLmF0dGFja0R1cmF0aW9uKS52YWx1ZSgpICogZGF0YS5kZXNpcmVkVmVsb2NpdHk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIHJlbGVhc2UgaXMgYmFzZWQgb24gdGFyZ2V0aW5nIHRo
ZSBleGFjdCBmaW5hbCBwb3NpdGlvbi4KLSAgICAgICAgU2Vjb25kcyByZWxlYXNlRGVsdGFUID0g
ZGVsdGFUaW1lIC0gKGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VEdXJhdGlv
bik7Ci0gICAgICAgIG5ld1Bvc2l0aW9uID0gcmVsZWFzZUN1cnZlKEN1cnZlOjpDdWJpYywgcmVs
ZWFzZURlbHRhVC52YWx1ZSgpLCBkYXRhLnJlbGVhc2VEdXJhdGlvbi52YWx1ZSgpLCBkYXRhLnJl
bGVhc2VQb3NpdGlvbiwgZGF0YS5kZXNpcmVkUG9zaXRpb24pOwotICAgIH0KLQotICAgIC8vIE5v
cm1hbGl6ZSB2ZWxvY2l0eSB0byBhIHBlciBzZWNvbmQgYW1vdW50LiBDb3VsZCBiZSB1c2VkIHRv
IGNoZWNrIGZvciBqYW5rLgotICAgIGlmIChsYXN0U2Nyb2xsSW50ZXJ2YWwgPiAwX3MpCi0gICAg
ICAgIGRhdGEuY3VycmVudFZlbG9jaXR5ID0gKG5ld1Bvc2l0aW9uIC0gZGF0YS5jdXJyZW50UG9z
aXRpb24pIC8gbGFzdFNjcm9sbEludGVydmFsLnZhbHVlKCk7Ci0gICAgZGF0YS5jdXJyZW50UG9z
aXRpb24gPSBuZXdQb3NpdGlvbjsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjdXJy
ZW50VGltZSA8IGVuZFRpbWU7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmlt
YXRpb25UaW1lckZpcmVkKCkKQEAgLTQyNiwxNiArMTUyLDExIEBAIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKCkKICAgICBTZWNvbmRzIGRlbHRhVG9OZXh0
RnJhbWUgPSAxX3MgKiBjZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKS52YWx1ZSgpICog
ZnJhbWVSYXRlKSAvIGZyYW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKICAg
ICBjdXJyZW50VGltZSArPSBkZWx0YVRvTmV4dEZyYW1lOwogCi0gICAgYm9vbCBjb250aW51ZUFu
aW1hdGlvbiA9IGZhbHNlOwotICAgIGlmIChhbmltYXRlU2Nyb2xsKG1faG9yaXpvbnRhbERhdGEs
IGN1cnJlbnRUaW1lKSkKLSAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwotICAgIGlm
IChhbmltYXRlU2Nyb2xsKG1fdmVydGljYWxEYXRhLCBjdXJyZW50VGltZSkpCi0gICAgICAgIGNv
bnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKLQorICAgIGJvb2wgY29udGludWVBbmltYXRpb24gPSBh
bmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lKTsKICAgICBpZiAoY29udGludWVBbmltYXRpb24pCiAg
ICAgICAgIHN0YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0
YVRvTmV4dEZyYW1lKSk7CiAKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUo
KnRoaXMsIHsgbV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRpb24sIG1fdmVydGljYWxEYXRh
LmN1cnJlbnRQb3NpdGlvbiB9KTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRh
dGUoKnRoaXMsIG1fY3VycmVudFBvc2l0aW9uKTsKICAgICBpZiAoIWNvbnRpbnVlQW5pbWF0aW9u
KQogICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAy
ZTliYmY3MmY1NzYwNDMwNWI2Y2IzOWUzNmNkOTYwNzU2ZTA3NDZlLi5jZTBlY2VhMDFmZDFlZDc5
YjMzNzVjZDUwYzc3ZDhmZGNlNGJmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtMzMsMjEgKzMzLDEzIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7Ci1lbnVtIGNsYXNzIFNjcm9sbENsYW1waW5n
IDogYm9vbDsKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25T
bW9vdGggZmluYWw6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgogICAgIFNjcm9s
bEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5T
Y3JvbGxBbmltYXRpb25TbW9vdGgoKTsKIAotICAgIGVudW0gY2xhc3MgQ3VydmUgewotICAgICAg
ICBMaW5lYXIsCi0gICAgICAgIFF1YWRyYXRpYywKLSAgICAgICAgQ3ViaWMsCi0gICAgICAgIFF1
YXJ0aWMsCi0gICAgICAgIEJvdW5jZQotICAgIH07Ci0KICAgICBib29sIHN0YXJ0QW5pbWF0ZWRT
Y3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25zdCBGbG9h
dFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOwogICAg
IGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
ZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvblBvc2l0aW9uKTsKIApA
QCAtNTYsNTcgKzQ4LDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMo
KSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKLXByaXZhdGU6Ci0g
ICAgc3RydWN0IFBlckF4aXNEYXRhIHsKLSAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgICAgIFBlckF4aXNEYXRhKGZsb2F0IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQotICAgICAg
ICAgICAgOiBjdXJyZW50UG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgICAgICAsIGRlc2lyZWRQ
b3NpdGlvbihwb3NpdGlvbikKLSAgICAgICAgICAgICwgdmlzaWJsZUxlbmd0aChsZW5ndGgpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGN1cnJlbnRQb3NpdGlvbiB7IDAg
fTsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRWZWxvY2l0eSB7IDAgfTsKLQotICAgICAgICBkb3Vi
bGUgZGVzaXJlZFBvc2l0aW9uIHsgMCB9OwotICAgICAgICBkb3VibGUgZGVzaXJlZFZlbG9jaXR5
IHsgMCB9OwotCi0gICAgICAgIGRvdWJsZSBzdGFydFBvc2l0aW9uIHsgMCB9OwotICAgICAgICBN
b25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAgICAgICAgZG91YmxlIHN0YXJ0VmVsb2NpdHkgeyAw
IH07Ci0KLSAgICAgICAgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbjsKLSAgICAgICAgTW9ub3Rv
bmljVGltZSBsYXN0QW5pbWF0aW9uVGltZTsKLQotICAgICAgICBkb3VibGUgYXR0YWNrUG9zaXRp
b24geyAwIH07Ci0gICAgICAgIFNlY29uZHMgYXR0YWNrRHVyYXRpb247Ci0gICAgICAgIEN1cnZl
IGF0dGFja0N1cnZlIHsgQ3VydmU6OlF1YWRyYXRpYyB9OwotCi0gICAgICAgIGRvdWJsZSByZWxl
YXNlUG9zaXRpb24geyAwIH07Ci0gICAgICAgIFNlY29uZHMgcmVsZWFzZUR1cmF0aW9uOwotICAg
ICAgICBDdXJ2ZSByZWxlYXNlQ3VydmUgeyBDdXJ2ZTo6UXVhZHJhdGljIH07Ci0KLSAgICAgICAg
aW50IHZpc2libGVMZW5ndGggeyAwIH07Ci0gICAgfTsKIAorcHJpdmF0ZToKICAgICBib29sIHN0
YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24pOwogCi0gICAgYm9vbCB1cGRhdGVQZXJBeGlzRGF0YShQZXJBeGlz
RGF0YSYsIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBuZXdQb3NpdGlvbiwgZmxvYXQgbWluU2Ny
b2xsUG9zaXRpb24sIGZsb2F0IG1heFNjcm9sbFBvc2l0aW9uLCBkb3VibGUgc21vb3RoRmFjdG9y
ID0gMSk7Ci0gICAgYm9vbCBhbmltYXRlU2Nyb2xsKFBlckF4aXNEYXRhJiwgTW9ub3RvbmljVGlt
ZSBjdXJyZW50VGltZSk7Ci0gICAgCi0gICAgdm9pZCBpbml0aWFsaXplQXhlc0RhdGEoY29uc3Qg
U2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9zaXRpb24pOwotCiAgICAg
dm9pZCByZXF1ZXN0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RhcnROZXh0VGlt
ZXIoU2Vjb25kcyBkZWxheSk7CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7Ci0KLSAg
ICBQZXJBeGlzRGF0YSBtX2hvcml6b250YWxEYXRhOwotICAgIFBlckF4aXNEYXRhIG1fdmVydGlj
YWxEYXRhOworICAgIAorICAgIFNlY29uZHMgZHVyYXRpb25Gcm9tRGlzdGFuY2UoY29uc3QgRmxv
YXRTaXplJikgY29uc3Q7CisgICAgCisgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1Rp
bWUpOwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKKyAgICBTZWNvbmRzIG1fZHVy
YXRpb247CisKKyAgICBGbG9hdFBvaW50IG1fc3RhcnRQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50
IG1fZGVzdGluYXRpb25Qb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvc2l0aW9u
OworICAgIAogICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IGhhdmUgdGltZXIgaGVyZSwgYW5kIGlu
c3RlYWQgdXNlIHNlcnZpY2VBbmltYXRpb24oKS4KICAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxB
bmltYXRpb25TbW9vdGg+IG1fYW5pbWF0aW9uVGltZXI7CisgICAgUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBtX2Vhc2VJbk91dFRpbWluZ0Z1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0
cnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0
cnlVdGlsaXRpZXMuY3BwCmluZGV4IDRhNzViMTEzMTIzNTQ1NzUzMGI2MDcwYmY2OTEyNzRjZmEy
YzJlMTEuLmQxODFjODRhODQ4OWZmMGNlZjI0MDVhOGRkYmEwMmQwZGFiNjQ0NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGll
cy5jcHAKQEAgLTMyLDEyICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWZsb2F0
IGV1Y2xpZGlhbkRpc3RhbmNlKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50
JiBwMikKK2Zsb2F0IGV1Y2xpZGlhbkRpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiB7
Ci0gICAgRmxvYXRTaXplIGRlbHRhID0gcDEgLSBwMjsKICAgICByZXR1cm4gc3RkOjpoeXBvdChk
ZWx0YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSk7CiB9CiAKK2Zsb2F0IGV1Y2xpZGlhbkRpc3Rh
bmNlKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMikKK3sKKyAgICBy
ZXR1cm4gZXVjbGlkaWFuRGlzdGFuY2UocDEgLSBwMik7Cit9CisKIGZsb2F0IGZpbmRTbG9wZShj
b25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0JiBjKQogewog
ICAgIGlmIChwMi54KCkgPT0gcDEueCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKaW5kZXggM2I3MDkxYTg1NDQyYTBmZDNh
ZDJkN2Q4MmIzZmI1NDJmMGQxZjNiNy4uYmI2NTNmMTQwYWRhZmUxNTE4ODBhMjk3MmI4YTU1OTFh
YTc4MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2Vv
bWV0cnlVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
ZW9tZXRyeVV0aWxpdGllcy5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRmxvYXRRdWFkOwogCitmbG9hdCBldWNsaWRpYW5EaXN0YW5jZShjb25zdCBGbG9h
dFNpemUmKTsKIGZsb2F0IGV1Y2xpZGlhbkRpc3RhbmNlKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFBvaW50Jik7CiAKIGZsb2F0IGZpbmRTbG9wZShjb25zdCBGbG9hdFBvaW50JiBwMSwg
Y29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0JiBjKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>