<?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>192850</bug_id>
          
          <creation_ts>2018-12-19 05:51:04 -0800</creation_ts>
          <short_desc>[Web Animations] Compute animation effect timing properties in batch</short_desc>
          <delta_ts>2019-01-08 03:37:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489279</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-12-19 05:51:04 -0800</bug_when>
    <thetext>[Web Animations] Compute animation effect timing properties in batch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489281</commentid>
    <comment_count>1</comment_count>
      <attachid>357670</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-12-19 06:01:49 -0800</bug_when>
    <thetext>Created attachment 357670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492316</commentid>
    <comment_count>2</comment_count>
      <attachid>357670</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-07 11:45:41 -0800</bug_when>
    <thetext>Comment on attachment 357670
Patch

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

&gt; Source/WebCore/animation/AnimationEffect.cpp:177
&gt; +    BasicEffectTiming basicEffectTiming;
&gt; +    basicEffectTiming.localTime = localTime;
&gt; +    basicEffectTiming.endTime = endTime;
&gt; +    basicEffectTiming.activeDuration = activeDuration;
&gt; +    basicEffectTiming.activeTime = activeTime;
&gt; +    basicEffectTiming.phase = phase;

Maybe make a constructor that takes these as parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492577</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-08 03:32:05 -0800</bug_when>
    <thetext>Committed r239723: &lt;https://trac.webkit.org/changeset/239723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492578</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-01-08 03:32:48 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #2)
&gt; Comment on attachment 357670 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357670&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/AnimationEffect.cpp:177
&gt; &gt; +    BasicEffectTiming basicEffectTiming;
&gt; &gt; +    basicEffectTiming.localTime = localTime;
&gt; &gt; +    basicEffectTiming.endTime = endTime;
&gt; &gt; +    basicEffectTiming.activeDuration = activeDuration;
&gt; &gt; +    basicEffectTiming.activeTime = activeTime;
&gt; &gt; +    basicEffectTiming.phase = phase;
&gt; 
&gt; Maybe make a constructor that takes these as parameters?

Rewrote this as return { localTime, activeTime, endTime, activeDuration, phase };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492579</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-08 03:37:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/47111902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357670</attachid>
            <date>2018-12-19 06:01:49 -0800</date>
            <delta_ts>2019-01-07 11:45:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192850-20181219150147.patch</filename>
            <type>text/plain</type>
            <size>62631</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYxNzRkNDJiNGJkNDU0
NzJkMDI3NDVjYTlhNjIzZTExMTU1ODliYi4uZjg1YzE3ZjQ4ODY1ZjljZjYxNzBhNzU4M2Y1NDhh
ZGNjMmM1ZTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTEyLTE5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBDb21wdXRlIGFuaW1hdGlvbiBlZmZlY3QgdGltaW5nIHByb3BlcnRpZXMgaW4gYmF0Y2gKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Mjg1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHJlbW92ZSBh
IGhvc3Qgb2YgZnVuY3Rpb25zIGZyb20gQW5pbWF0aW9uRWZmZWN0IHRoYXQgd291bGQgYWxsb3cg
dGhlIGNvbXB1dGF0aW9uIG9mIHZhcmlvdXMgdGltaW5nIHByb3BlcnRpZXMKKyAgICAgICAgZGVm
aW5lZCBieSB0aGUgV2ViIEFuaW1hdGlvbnMgc3BlY2lmaWNhdGlvbjogcGhhc2UsIHByb2dyZXNz
LCBjdXJyZW50IGl0ZXJhdGlvbiwgZXRjLiBJbmRlZWQsIGEgbG90IG9mIHRoZXNlIGZ1bmN0aW9u
cworICAgICAgICB3b3VsZCBjYWxsIGVhY2ggb3RoZXIgaW4gYSBjaGFpbiwgYW5kIHdlIHdvdWxk
IHJlLWNvbXB1dGUgYSBsb3Qgb2YgdGhlIGVhcmxpZXIgcHJvcGVydGllcyBpbiB0aG9zZSBjaGFp
bnMgc2V2ZXJhbCB0aW1lcworICAgICAgICB3aGVuIGRvaW5nIHNvbWV0aGluZyBsaWtlIHF1ZXJ5
aW5nIHRoZSBhbmltYXRpb24gcHJvZ3Jlc3MuIEFkZGl0aW9uYWxseSwgc29tZSBmdW5jdGlvbnMs
IHN1Y2ggYXMgV2ViQW5pbWF0aW9uOjpjb21wdXRlUmVsZXZhbmNlKCkKKyAgICAgICAgYW5kIFdl
YkFuaW1hdGlvbjo6dGltZVRvTmV4dFRpY2soKSB3b3VsZCB5aWVsZCB0aGUgY29tcHV0YXRpb24g
b2Ygc2V2ZXJhbCBzdWNoIHByb3BlcnRpZXMgbnVtZXJvdXMgdGltZXMuIEFsbCBvZiB0aG9zZQor
ICAgICAgICBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgZWFjaCBhbmltYXRpb24gZnJhbWUg
YW5kIGFyZSByaXBlIGZvciBvcHRpbWl6YXRpb25zLgorCisgICAgICAgIFdlIG5vdyBjb21wdXRl
IGFsbCB0aW1pbmcgcHJvcGVydGllcyBhY3Jvc3MgdHdvIGZ1bmN0aW9uczoKKyAgICAgICAgCisg
ICAgICAgIDEuIHRoZSBuZXcgQW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZygpIHdoaWNo
IGNvbXB1dGVzIHRoZSBsb2NhbCB0aW1lLCBlbmQgdGltZSwgYWN0aXZlIGR1cmF0aW9uLCBhY3Rp
dmUgdGltZSBhbmQgcGhhc2UsCisgICAgICAgIDIuIHRoZSBleGlzdGluZyBBbmltYXRpb25FZmZl
Y3Q6OmdldENvbXB1dGVkVGltaW5nKCkgd2hpY2ggbm93IGFsc28gZXhwb3NlcyB0aGUgcGhhc2Ug
YW5kIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MuCisKKyAgICAgICAgVG8gc3VwcG9ydCB0aGlz
IHdlIGludHJvZHVjZSBhIG5ldyBCYXNpY0VmZmVjdFRpbWluZyBzdHJ1Y3QgdG8gY29udGFpbiB0
aGUgdmFsdWVzIGNvbXB1dGVkIGluIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNUaW1pbmcoKQor
ICAgICAgICBhbmQgc3B1biB0aGUgQW5pbWF0aW9uRWZmZWN0OjpQaGFzZSBzdHJ1Y3QgYXMgQW5p
bWF0aW9uRWZmZWN0UGhhc2Ugc28gdGhhdCBpdCBtYXkgYmUgdXNlZCBhY3Jvc3MgQmFzaWNFZmZl
Y3RUaW1pbmcgYW5kCisgICAgICAgIENvbXB1dGVkRWZmZWN0VGltaW5nLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0IHNpbmNlIHRoZXJlIGlzIG5vIHVzZXItb2JzZXJ2YWJsZSBjaGFuZ2UuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5p
bWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25F
ZmZlY3Q6OmdldFRpbWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FZmZl
Y3Q6OmdldEJhc2ljVGltaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkVm
ZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uRWZmZWN0Ojpsb2NhbFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uRWZmZWN0OjpwaGFzZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25FZmZlY3Q6OmFjdGl2ZVRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0OjpvdmVyYWxsUHJvZ3Jlc3MgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0OjpzaW1wbGVJdGVyYXRpb25Qcm9n
cmVzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q6
OmN1cnJlbnRJdGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uRWZmZWN0OjpjdXJyZW50RGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkVmZmVjdDo6ZGlyZWN0ZWRQcm9ncmVzcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q6OnRyYW5zZm9ybWVkUHJvZ3Jl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZmZWN0Ojpp
dGVyYXRpb25Qcm9ncmVzcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25FZmZlY3Q6OmdldFRpbWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkVmZmVjdDo6ZW5kVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q6OmFjdGl2ZUR1cmF0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0Lmg6CisgICAgICAgICogYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdFBoYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5oLgorICAgICAgICAqIGFuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5p
bWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQmFzaWNFZmZlY3RUaW1pbmcu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGlt
aW5nLmguCisgICAgICAgICogYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmg6CisgICAg
ICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
bGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyk6CisgICAg
ICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Z2V0QW5pbWF0ZWRT
dHlsZSk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJBbmltYXRpb246OmVmZmVjdEVuZFRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpjb21wdXRlUmVsZXZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkFuaW1hdGlvbjo6dGltZVRvTmV4dFRpY2sgY29uc3QpOgorCiAyMDE4LTEyLTE5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VN
RV0gTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpc3RpbmN0aXZlSWRlbnRpZmllciBhbmQg
cGVyc2lzdGVudFN0YXRlIHNob3VsZCBkZWZhdWx0IHRvIG9wdGlvbmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjNlOWE2ODNm
ZmE2ZTFhNDk2YzA5NzQ2ZjczNDU3ZjZkZjFiMDQ4NS4uMDMwNzdiMzY1ZjNiNjU1MDUzMDJmYjVj
MDk3MzhjYTRmMWExMWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA5Miw2ICsyMDkyLDcgQEAKIAkJNzE1MzdBMDExNDZC
RDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MTUzNzlGRjE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERh
dGEuaCAqLzsgfTsKIAkJNzE1NTZDQjQxRjlGMDlCQTAwRTc4RDA4IC8qIEtleWZyYW1lRWZmZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTU1NkNB
QTFGOUYwOTlCMDBFNzhEMDggLyogS2V5ZnJhbWVFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTU1NkNCRTFGOUYwQTQ5MDBFNzhEMDgg
LyogSlNLZXlmcmFtZUVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzE1NTZDQjcxRjlGMDlGQzAwRTc4RDA4IC8qIEpTS2V5ZnJhbWVFZmZlY3Qu
aCAqLzsgfTsKKwkJNzE1NkJDQTEyMUNBMzUwRjAwNTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTU2QkM5
RjIxQ0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1pbmcuaCAqLzsgfTsKIAkJNzE1QUQ3
MjAyMDUwNTEzMjAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTVBRDcxRDIwNTA1MTI0MDBENTky
REMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTVBRDcyMTIwNTA1MTNGMDBENTkyREMgLyogQ1NTVHJh
bnNpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzEyM0MxODYyMDQ3MzlCQTAwNzg5MzkyIC8qIENTU1RyYW5zaXRpb24uaCAqLzsgfTsKIAkJNzE2
RTU1QjAyMERCQUJGMTAwRjBDRjI5IC8qIERvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTZFNTVBRDIwREJB
QkRDMDBGMENGMjkgLyogRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjEwNCw2ICsyMTA1LDcgQEAK
IAkJNzFDOTE2MDgxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQzkx
NjA3MUQxNDgzQTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFEQ0I3MDIx
NTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpT
U1ZHWm9vbUFuZFBhbi5oICovOyB9OwogCQk3MUUyMTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1
Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzFFMjE4MzgxNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXMuaCAqLzsg
fTsKKwkJNzFFMkM0MjYyMUM5MzUyODAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUUyQzQyNDIx
QzkzNTFEMDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUU2MjNEMTE1MUY3MkE2MDAzNkUy
RjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUU2MjNDRjE1MUY3MkE2MDAzNkUyRjQg
LyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggKi87IH07CiAJCTcxRUZDRURD
MjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQxMSAvKiBB
bmltYXRpb25FZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKQEAgLTkyNjQsNiArOTI2Niw3IEBACiAJCTcx
NTU2Q0FCMUY5RjA5OUMwMEU3OEQwOCAvKiBLZXlmcmFtZUVmZmVjdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gS2V5ZnJhbWVFZmZlY3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTU1NkNCNjFGOUYwOUZDMDBFNzhEMDggLyogSlNLZXlmcmFtZUVmZmVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0tleWZyYW1lRWZmZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1NTZDQjcxRjlGMDlGQzAwRTc4RDA4IC8q
IEpTS2V5ZnJhbWVFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNL
ZXlmcmFtZUVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTU2QkM5RjIx
Q0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFzaWNFZmZlY3RUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzE1N0UzRDExREMxRUU0QjAwOTQ1NTBFIC8qIHNjcnViYmluZy1zdXBwb3J0Lmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInNjcnViYmluZy1zdXBw
b3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1N0YwNjExNTBCNjU2NDAw
NkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMgLyogRGVjbGFy
YXRpdmVBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjbGFy
YXRpdmVBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzNTMsNiAr
OTM1Niw3IEBACiAJCTcxREUyNzk0MjAzQTlDMUMwMDU4Q0I1MSAvKiBjb21wYWN0LW1lZGlhLWNv
bnRyb2xzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gImNvbXBh
Y3QtbWVkaWEtY29udHJvbHMuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUUy
MTgzODE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVu
Y29kaW5nID0gNDsgbmFtZSA9IFBsdWdJbnNSZXNvdXJjZXMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvUGx1Z0luc1Jlc291cmNlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk3MUUyMTgzOTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNl
c0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSBQbHVnSW5zUmVz
b3VyY2VzRGF0YS5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1BsdWdJbnNSZXNv
dXJjZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNzFF
MkM0MjQyMUM5MzUxRDAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFuaW1hdGlvbkVmZmVjdFBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRTYyM0NFMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmlt
YXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFFNjIzQ0YxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFFRkNFRDYyMDJCMzg4QzAwRDdDNDExIC8qIEFuaW1hdGlvbkVm
ZmVjdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQW5pbWF0aW9uRWZmZWN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTYyLDYgKzIwMTY2LDcgQEAKIAkJCQk3MUVG
Q0VEQTIwMkIzODhGMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmNwcCAqLywKIAkJCQk3MUVG
Q0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggKi8sCiAJCQkJNzFFRkNF
RDYyMDJCMzg4QzAwRDdDNDExIC8qIEFuaW1hdGlvbkVmZmVjdC5pZGwgKi8sCisJCQkJNzFFMkM0
MjQyMUM5MzUxRDAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggKi8sCiAJCQkJNzE0
QzdDNjAxRkRBRDI3OTAwRjJCRUUxIC8qIEFuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwICovLAog
CQkJCTcxNEM3QzY1MUZEQUQyN0IwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5YmFja0V2ZW50Lmgg
Ki8sCiAJCQkJNzE0QzdDNjQxRkRBRDI3QjAwRjJCRUUxIC8qIEFuaW1hdGlvblBsYXliYWNrRXZl
bnQuaWRsICovLApAQCAtMjAxNzAsNiArMjAxNzUsNyBAQAogCQkJCTcxMDI1RUM2MUY5OUYwOTYw
MDRBMjUwQyAvKiBBbmltYXRpb25UaW1lbGluZS5jcHAgKi8sCiAJCQkJNzEwMjVFQzcxRjk5RjA5
NjAwNEEyNTBDIC8qIEFuaW1hdGlvblRpbWVsaW5lLmggKi8sCiAJCQkJNzEwMjVFQzkxRjk5RjA5
NjAwNEEyNTBDIC8qIEFuaW1hdGlvblRpbWVsaW5lLmlkbCAqLywKKwkJCQk3MTU2QkM5RjIxQ0Ez
NTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1pbmcuaCAqLywKIAkJCQk3MTI0N0UzNTFGRUE1
RjgxMDA4QzA4Q0UgLyogQ29tcG9zaXRlT3BlcmF0aW9uLmggKi8sCiAJCQkJNzEyNDdFMzYxRkVB
NUY4MTAwOEMwOENFIC8qIENvbXBvc2l0ZU9wZXJhdGlvbi5pZGwgKi8sCiAJCQkJNzExMTI0M0Iy
MTZGQTZFMDAwRUI3QjY3IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oICovLApAQCAtMjc4
MzMsNiArMjc4MzksNyBAQAogCQkJCTQ5RTkxMkFCMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTEyMEU2RTFEQTcwMEJGNjA4OCAvKiBBbmlt
YXRpb25CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEg
LyogQW5pbWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MUUyQzQyNjIxQzkzNTI4
MDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
OTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTEyQUQwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcxNEM3QzY2MUZEQUQyQTEwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5YmFj
a0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTgwLDYgKzI3OTg3LDcgQEAKIAkJCQlGNTlD
OTYwMDEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0RBRTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QzdBNjhDMUU1Njk2NzUwMEM2N0Q3MSAvKiBCYXNp
Y0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxNTZCQ0ExMjFDQTM1MEYwMDUzNDM5
NyAvKiBCYXNpY0VmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEExNUVG
MjVERjAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZCRDZBRjhDMTVFRjI2MDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM5NDYyRDgxMDdBN0I0QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
RWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3Bw
CmluZGV4IDJiOGM1MzgzMTNmMWVjMTZhYjZmNGJjN2RmOTFhOTVhZWU3ODNkZDIuLjBjZDMyMmJj
ZTNkYzg5NWIyMDAwODcyOGZkNzEwZGNjZWY5OTFmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCkBAIC00MSwyODMgKzQxLDMwOSBAQCBBbmltYXRp
b25FZmZlY3Q6On5BbmltYXRpb25FZmZlY3QoKQogewogfQogCi1zdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IEFuaW1hdGlvbkVmZmVjdDo6bG9jYWxUaW1lKCkgY29uc3QKK0VmZmVjdFRpbWluZyBBbmlt
YXRpb25FZmZlY3Q6OmdldFRpbWluZygpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYW5pbWF0aW9uKQot
ICAgICAgICByZXR1cm4gbV9hbmltYXRpb24tPmN1cnJlbnRUaW1lKCk7Ci0gICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLX0KLQotYXV0byBBbmltYXRpb25FZmZlY3Q6OnBoYXNlKCkgY29uc3QgLT4g
UGhhc2UKLXsKLSAgICAvLyAzLjUuNS4gQW5pbWF0aW9uIGVmZmVjdCBwaGFzZXMgYW5kIHN0YXRl
cwotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNhbmlt
YXRpb24tZWZmZWN0LXBoYXNlcy1hbmQtc3RhdGVzCi0KLSAgICBib29sIGFuaW1hdGlvbklzQmFj
a3dhcmRzID0gbV9hbmltYXRpb24gJiYgbV9hbmltYXRpb24tPnBsYXliYWNrUmF0ZSgpIDwgMDsK
LSAgICBhdXRvIGJlZm9yZUFjdGl2ZUJvdW5kYXJ5VGltZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKG1f
ZGVsYXksIGVuZFRpbWUoKSksIDBfcyk7Ci0gICAgYXV0byBhY3RpdmVBZnRlckJvdW5kYXJ5VGlt
ZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKG1fZGVsYXkgKyBhY3RpdmVEdXJhdGlvbigpLCBlbmRUaW1l
KCkpLCAwX3MpOwotCi0gICAgLy8gKFRoaXMgc2hvdWxkIGJlIHRoZSBsYXN0IHN0YXRlbWVudCwg
YnV0IGl0J3MgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIGxvY2FsIHRpbWUgYW5kIHJldHVy
biByaWdodCBhd2F5IGlmIGl0J3Mgbm90IHJlc29sdmVkLikKLSAgICAvLyBGdXJ0aGVybW9yZSwg
aXQgaXMgb2Z0ZW4gY29udmVuaWVudCB0byByZWZlciB0byB0aGUgY2FzZSB3aGVuIGFuIGFuaW1h
dGlvbiBlZmZlY3QgaXMgaW4gbm9uZSBvZiB0aGUgYWJvdmUgcGhhc2VzCi0gICAgLy8gYXMgYmVp
bmcgaW4gdGhlIGlkbGUgcGhhc2UuCi0gICAgYXV0byBlZmZlY3RMb2NhbFRpbWUgPSBsb2NhbFRp
bWUoKTsKLSAgICBpZiAoIWVmZmVjdExvY2FsVGltZSkKLSAgICAgICAgcmV0dXJuIFBoYXNlOjpJ
ZGxlOwotCi0gICAgYXV0byBsb2NhbFRpbWVWYWx1ZSA9IGVmZmVjdExvY2FsVGltZS52YWx1ZSgp
OwotCi0gICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYmVmb3JlIHBoYXNlIGlm
IHRoZSBhbmltYXRpb24gZWZmZWN04oCZcyBsb2NhbCB0aW1lIGlzIG5vdCB1bnJlc29sdmVkIGFu
ZAotICAgIC8vIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAg
ICAvLyAgICAgMS4gdGhlIGxvY2FsIHRpbWUgaXMgbGVzcyB0aGFuIHRoZSBiZWZvcmUtYWN0aXZl
IGJvdW5kYXJ5IHRpbWUsIG9yCi0gICAgLy8gICAgIDIuIHRoZSBhbmltYXRpb24gZGlyZWN0aW9u
IGlzIOKAmGJhY2t3YXJkc+KAmSBhbmQgdGhlIGxvY2FsIHRpbWUgaXMgZXF1YWwgdG8gdGhlIGJl
Zm9yZS1hY3RpdmUgYm91bmRhcnkgdGltZS4KLSAgICBpZiAoKGxvY2FsVGltZVZhbHVlICsgdGlt
ZUVwc2lsb24pIDwgYmVmb3JlQWN0aXZlQm91bmRhcnlUaW1lIHx8IChhbmltYXRpb25Jc0JhY2t3
YXJkcyAmJiBzdGQ6OmFicyhsb2NhbFRpbWVWYWx1ZS5taWNyb3NlY29uZHMoKSAtIGJlZm9yZUFj
dGl2ZUJvdW5kYXJ5VGltZS5taWNyb3NlY29uZHMoKSkgPCB0aW1lRXBzaWxvbi5taWNyb3NlY29u
ZHMoKSkpCi0gICAgICAgIHJldHVybiBQaGFzZTo6QmVmb3JlOwotCi0gICAgLy8gQW4gYW5pbWF0
aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWZ0ZXIgcGhhc2UgaWYgdGhlIGFuaW1hdGlvbiBlZmZlY3Ti
gJlzIGxvY2FsIHRpbWUgaXMgbm90IHVucmVzb2x2ZWQgYW5kCi0gICAgLy8gZWl0aGVyIG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICAgIC8vICAgICAxLiB0aGUgbG9jYWwg
dGltZSBpcyBncmVhdGVyIHRoYW4gdGhlIGFjdGl2ZS1hZnRlciBib3VuZGFyeSB0aW1lLCBvcgot
ICAgIC8vICAgICAyLiB0aGUgYW5pbWF0aW9uIGRpcmVjdGlvbiBpcyDigJhmb3J3YXJkc+KAmSBh
bmQgdGhlIGxvY2FsIHRpbWUgaXMgZXF1YWwgdG8gdGhlIGFjdGl2ZS1hZnRlciBib3VuZGFyeSB0
aW1lLgotICAgIGlmICgobG9jYWxUaW1lVmFsdWUgLSB0aW1lRXBzaWxvbikgPiBhY3RpdmVBZnRl
ckJvdW5kYXJ5VGltZSB8fCAoIWFuaW1hdGlvbklzQmFja3dhcmRzICYmIHN0ZDo6YWJzKGxvY2Fs
VGltZVZhbHVlLm1pY3Jvc2Vjb25kcygpIC0gYWN0aXZlQWZ0ZXJCb3VuZGFyeVRpbWUubWljcm9z
ZWNvbmRzKCkpIDwgdGltZUVwc2lsb24ubWljcm9zZWNvbmRzKCkpKQotICAgICAgICByZXR1cm4g
UGhhc2U6OkFmdGVyOwotCi0gICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWN0
aXZlIHBoYXNlIGlmIHRoZSBhbmltYXRpb24gZWZmZWN04oCZcyBsb2NhbCB0aW1lIGlzIG5vdCB1
bnJlc29sdmVkIGFuZCBpdCBpcyBub3QKLSAgICAvLyBpbiBlaXRoZXIgdGhlIGJlZm9yZSBwaGFz
ZSBub3IgdGhlIGFmdGVyIHBoYXNlLgotICAgIC8vIChObyBuZWVkIHRvIGNoZWNrLCB3ZSd2ZSBh
bHJlYWR5IGVzdGFibGlzaGVkIHRoYXQgbG9jYWwgdGltZSB3YXMgcmVzb2x2ZWQpLgotICAgIHJl
dHVybiBQaGFzZTo6QWN0aXZlOworICAgIEVmZmVjdFRpbWluZyB0aW1pbmc7CisgICAgdGltaW5n
LmRlbGF5ID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9kZWxheSk7CisgICAgdGlt
aW5nLmVuZERlbGF5ID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9lbmREZWxheSk7
CisgICAgdGltaW5nLmZpbGwgPSBtX2ZpbGw7CisgICAgdGltaW5nLml0ZXJhdGlvblN0YXJ0ID0g
bV9pdGVyYXRpb25TdGFydDsKKyAgICB0aW1pbmcuaXRlcmF0aW9ucyA9IG1faXRlcmF0aW9uczsK
KyAgICBpZiAobV9pdGVyYXRpb25EdXJhdGlvbiA9PSAwX3MpCisgICAgICAgIHRpbWluZy5kdXJh
dGlvbiA9ICJhdXRvIjsKKyAgICBlbHNlCisgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IHNlY29u
ZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOworICAgIHRpbWlu
Zy5kaXJlY3Rpb24gPSBtX2RpcmVjdGlvbjsKKyAgICB0aW1pbmcuZWFzaW5nID0gbV90aW1pbmdG
dW5jdGlvbi0+Y3NzVGV4dCgpOworICAgIHJldHVybiB0aW1pbmc7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gQW5pbWF0aW9uRWZmZWN0OjphY3RpdmVUaW1lKCkgY29uc3QKK0Jhc2ljRWZm
ZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNUaW1pbmcoKSBjb25zdAogewotICAg
IC8vIDMuOC4zLjEuIENhbGN1bGF0aW5nIHRoZSBhY3RpdmUgdGltZQotICAgIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZl
LXRpbWUKLQotICAgIC8vIFRoZSBhY3RpdmUgdGltZSBpcyBiYXNlZCBvbiB0aGUgbG9jYWwgdGlt
ZSBhbmQgc3RhcnQgZGVsYXkuIEhvd2V2ZXIsIGl0IGlzIG9ubHkgZGVmaW5lZAotICAgIC8vIHdo
ZW4gdGhlIGFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIHByb2R1Y2UgYW4gb3V0cHV0IGFuZCBoZW5j
ZSBkZXBlbmRzIG9uIGl0cyBmaWxsIG1vZGUKLSAgICAvLyBhbmQgcGhhc2UgYXMgZm9sbG93cywK
LQotICAgIGF1dG8gZWZmZWN0UGhhc2UgPSBwaGFzZSgpOwotCi0gICAgLy8gSWYgdGhlIGFuaW1h
dGlvbiBlZmZlY3QgaXMgaW4gdGhlIGJlZm9yZSBwaGFzZSwgdGhlIHJlc3VsdCBkZXBlbmRzIG9u
IHRoZSBmaXJzdCBtYXRjaGluZwotICAgIC8vIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcs
Ci0gICAgaWYgKGVmZmVjdFBoYXNlID09IFBoYXNlOjpCZWZvcmUpIHsKLSAgICAgICAgLy8gSWYg
dGhlIGZpbGwgbW9kZSBpcyBiYWNrd2FyZHMgb3IgYm90aCwgcmV0dXJuIHRoZSByZXN1bHQgb2Yg
ZXZhbHVhdGluZwotICAgICAgICAvLyBtYXgobG9jYWwgdGltZSAtIHN0YXJ0IGRlbGF5LCAwKS4K
LSAgICAgICAgaWYgKG1fZmlsbCA9PSBGaWxsTW9kZTo6QmFja3dhcmRzIHx8IG1fZmlsbCA9PSBG
aWxsTW9kZTo6Qm90aCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChsb2NhbFRpbWUoKS52
YWx1ZSgpIC0gbV9kZWxheSwgMF9zKTsKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4g
dW5yZXNvbHZlZCB0aW1lIHZhbHVlLgorICAgIC8vIFRoZSBXZWIgQW5pbWF0aW9ucyBzcGVjIGlu
dHJvZHVjZXMgYSBudW1iZXIgb2YgYW5pbWF0aW9uIGVmZmVjdCB0aW1lLXJlbGF0ZWQgZGVmaW5p
dGlvbnMgdGhhdCByZWZlcgorICAgIC8vIHRvIGVhY2ggb3RoZXIgYSBmYWlyIGJpdCwgc28gcmF0
aGVyIHRoYW4gaW1wbGVtZW50aW5nIHRoZW0gYXMgaW5kaXZpZHVhbCBtZXRob2RzLCBpdCdzIG1v
cmUgZWZmaWNpZW50CisgICAgLy8gdG8gcmV0dXJuIHRoZW0gYWxsIGFzIGEgc2luZ2xlIEJhc2lj
RWZmZWN0VGltaW5nLgorCisgICAgYXV0byBhY3RpdmVEdXJhdGlvbiA9IFt0aGlzXSgpIC0+IFNl
Y29uZHMgeworICAgICAgICAvLyAzLjguMi4gQ2FsY3VsYXRpbmcgdGhlIGFjdGl2ZSBkdXJhdGlv
bgorICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8j
Y2FsY3VsYXRpbmctdGhlLWFjdGl2ZS1kdXJhdGlvbgorCisgICAgICAgIC8vIFRoZSBhY3RpdmUg
ZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBhcyBmb2xsb3dzOgorICAgICAgICAvLyBhY3RpdmUgZHVy
YXRpb24gPSBpdGVyYXRpb24gZHVyYXRpb24gw5cgaXRlcmF0aW9uIGNvdW50CisgICAgICAgIC8v
IElmIGVpdGhlciB0aGUgaXRlcmF0aW9uIGR1cmF0aW9uIG9yIGl0ZXJhdGlvbiBjb3VudCBhcmUg
emVybywgdGhlIGFjdGl2ZSBkdXJhdGlvbiBpcyB6ZXJvLgorICAgICAgICBpZiAoIW1faXRlcmF0
aW9uRHVyYXRpb24gfHwgIW1faXRlcmF0aW9ucykKKyAgICAgICAgICAgIHJldHVybiAwX3M7Cisg
ICAgICAgIHJldHVybiBtX2l0ZXJhdGlvbkR1cmF0aW9uICogbV9pdGVyYXRpb25zOworICAgIH0o
KTsKKworICAgIGF1dG8gZW5kVGltZSA9IFt0aGlzLCBhY3RpdmVEdXJhdGlvbl0oKSAtPiBTZWNv
bmRzIHsKKyAgICAgICAgLy8gMy41LjMgVGhlIGFjdGl2ZSBpbnRlcnZhbAorICAgICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jZW5kLXRpbWUKKworICAg
ICAgICAvLyBUaGUgZW5kIHRpbWUgb2YgYW4gYW5pbWF0aW9uIGVmZmVjdCBpcyB0aGUgcmVzdWx0
IG9mIGV2YWx1YXRpbmcgbWF4KHN0YXJ0IGRlbGF5ICsgYWN0aXZlIGR1cmF0aW9uICsgZW5kIGRl
bGF5LCAwKS4KKyAgICAgICAgYXV0byBlbmRUaW1lID0gbV9kZWxheSArIGFjdGl2ZUR1cmF0aW9u
ICsgbV9lbmREZWxheTsKKyAgICAgICAgcmV0dXJuIGVuZFRpbWUgPiAwX3MgPyBlbmRUaW1lIDog
MF9zOworICAgIH0oKTsKKworICAgIGF1dG8gbG9jYWxUaW1lID0gW3RoaXNdKCkgLT4gc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiB7CisgICAgICAgIC8vIDQuNS40LiBMb2NhbCB0aW1lCisgICAgICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNsb2NhbC10aW1l
LXNlY3Rpb24KKworICAgICAgICAvLyBUaGUgbG9jYWwgdGltZSBvZiBhbiBhbmltYXRpb24gZWZm
ZWN0IGF0IGEgZ2l2ZW4gbW9tZW50IGlzIGJhc2VkIG9uIHRoZSBmaXJzdCBtYXRjaGluZyBjb25k
aXRpb24gZnJvbSB0aGUgZm9sbG93aW5nOgorICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGVm
ZmVjdCBpcyBhc3NvY2lhdGVkIHdpdGggYW4gYW5pbWF0aW9uLCB0aGUgbG9jYWwgdGltZSBpcyB0
aGUgY3VycmVudCB0aW1lIG9mIHRoZSBhbmltYXRpb24uCisgICAgICAgIC8vIE90aGVyd2lzZSwg
dGhlIGxvY2FsIHRpbWUgaXMgdW5yZXNvbHZlZC4KKyAgICAgICAgaWYgKG1fYW5pbWF0aW9uKQor
ICAgICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uLT5jdXJyZW50VGltZSgpOwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIElmIHRoZSBhbmltYXRpb24gZWZm
ZWN0IGlzIGluIHRoZSBhY3RpdmUgcGhhc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIGV2YWx1YXRp
bmcgbG9jYWwgdGltZSAtIHN0YXJ0IGRlbGF5LgotICAgIGlmIChlZmZlY3RQaGFzZSA9PSBQaGFz
ZTo6QWN0aXZlKQotICAgICAgICByZXR1cm4gbG9jYWxUaW1lKCkudmFsdWUoKSAtIG1fZGVsYXk7
Ci0KLSAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWZ0ZXIgcGhhc2Us
IHRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyBjb25kaXRp
b24gZnJvbSB0aGUgZm9sbG93aW5nLAotICAgIGlmIChlZmZlY3RQaGFzZSA9PSBQaGFzZTo6QWZ0
ZXIpIHsKLSAgICAgICAgLy8gSWYgdGhlIGZpbGwgbW9kZSBpcyBmb3J3YXJkcyBvciBib3RoLCBy
ZXR1cm4gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nCi0gICAgICAgIC8vIG1heChtaW4obG9jYWwg
dGltZSAtIHN0YXJ0IGRlbGF5LCBhY3RpdmUgZHVyYXRpb24pLCAwKS4KLSAgICAgICAgaWYgKG1f
ZmlsbCA9PSBGaWxsTW9kZTo6Rm9yd2FyZHMgfHwgbV9maWxsID09IEZpbGxNb2RlOjpCb3RoKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0ZDo6bWluKGxvY2FsVGltZSgpLnZhbHVlKCkg
LSBtX2RlbGF5LCBhY3RpdmVEdXJhdGlvbigpKSwgMF9zKTsKLSAgICAgICAgLy8gT3RoZXJ3aXNl
LCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0aW1lIHZhbHVlLgotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIH0KLQotICAgIC8vIE90aGVyd2lzZSAodGhlIGxvY2FsIHRpbWUgaXMgdW5y
ZXNvbHZlZCksIHJldHVybiBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCi0gICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6
b3ZlcmFsbFByb2dyZXNzKCkgY29uc3QKLXsKLSAgICAvLyAzLjguMy4yLiBDYWxjdWxhdGluZyB0
aGUgb3ZlcmFsbCBwcm9ncmVzcwotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWIt
YW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtb3ZlcmFsbC1wcm9ncmVzcworICAgIH0oKTsK
KworICAgIGF1dG8gcGhhc2UgPSBbdGhpcywgZW5kVGltZSwgbG9jYWxUaW1lLCBhY3RpdmVEdXJh
dGlvbl0oKSAtPiBBbmltYXRpb25FZmZlY3RQaGFzZSB7CisgICAgICAgIC8vIDMuNS41LiBBbmlt
YXRpb24gZWZmZWN0IHBoYXNlcyBhbmQgc3RhdGVzCisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNhbmltYXRpb24tZWZmZWN0LXBoYXNlcy1hbmQt
c3RhdGVzCisKKyAgICAgICAgYm9vbCBhbmltYXRpb25Jc0JhY2t3YXJkcyA9IG1fYW5pbWF0aW9u
ICYmIG1fYW5pbWF0aW9uLT5wbGF5YmFja1JhdGUoKSA8IDA7CisgICAgICAgIGF1dG8gYmVmb3Jl
QWN0aXZlQm91bmRhcnlUaW1lID0gc3RkOjptYXgoc3RkOjptaW4obV9kZWxheSwgZW5kVGltZSks
IDBfcyk7CisgICAgICAgIGF1dG8gYWN0aXZlQWZ0ZXJCb3VuZGFyeVRpbWUgPSBzdGQ6Om1heChz
dGQ6Om1pbihtX2RlbGF5ICsgYWN0aXZlRHVyYXRpb24sIGVuZFRpbWUpLCAwX3MpOworCisgICAg
ICAgIC8vIChUaGlzIHNob3VsZCBiZSB0aGUgbGFzdCBzdGF0ZW1lbnQsIGJ1dCBpdCdzIG1vcmUg
ZWZmaWNpZW50IHRvIGNhY2hlIHRoZSBsb2NhbCB0aW1lIGFuZCByZXR1cm4gcmlnaHQgYXdheSBp
ZiBpdCdzIG5vdCByZXNvbHZlZC4pCisgICAgICAgIC8vIEZ1cnRoZXJtb3JlLCBpdCBpcyBvZnRl
biBjb252ZW5pZW50IHRvIHJlZmVyIHRvIHRoZSBjYXNlIHdoZW4gYW4gYW5pbWF0aW9uIGVmZmVj
dCBpcyBpbiBub25lIG9mIHRoZSBhYm92ZSBwaGFzZXMKKyAgICAgICAgLy8gYXMgYmVpbmcgaW4g
dGhlIGlkbGUgcGhhc2UuCisgICAgICAgIGlmICghbG9jYWxUaW1lKQorICAgICAgICAgICAgcmV0
dXJuIEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlOworCisgICAgICAgIC8vIEFuIGFuaW1hdGlv
biBlZmZlY3QgaXMgaW4gdGhlIGJlZm9yZSBwaGFzZSBpZiB0aGUgYW5pbWF0aW9uIGVmZmVjdOKA
mXMgbG9jYWwgdGltZSBpcyBub3QgdW5yZXNvbHZlZCBhbmQKKyAgICAgICAgLy8gZWl0aGVyIG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICAgICAgICAvLyAgICAgMS4gdGhl
IGxvY2FsIHRpbWUgaXMgbGVzcyB0aGFuIHRoZSBiZWZvcmUtYWN0aXZlIGJvdW5kYXJ5IHRpbWUs
IG9yCisgICAgICAgIC8vICAgICAyLiB0aGUgYW5pbWF0aW9uIGRpcmVjdGlvbiBpcyDigJhiYWNr
d2FyZHPigJkgYW5kIHRoZSBsb2NhbCB0aW1lIGlzIGVxdWFsIHRvIHRoZSBiZWZvcmUtYWN0aXZl
IGJvdW5kYXJ5IHRpbWUuCisgICAgICAgIGlmICgoKmxvY2FsVGltZSArIHRpbWVFcHNpbG9uKSA8
IGJlZm9yZUFjdGl2ZUJvdW5kYXJ5VGltZSB8fCAoYW5pbWF0aW9uSXNCYWNrd2FyZHMgJiYgc3Rk
OjphYnMobG9jYWxUaW1lLT5taWNyb3NlY29uZHMoKSAtIGJlZm9yZUFjdGl2ZUJvdW5kYXJ5VGlt
ZS5taWNyb3NlY29uZHMoKSkgPCB0aW1lRXBzaWxvbi5taWNyb3NlY29uZHMoKSkpCisgICAgICAg
ICAgICByZXR1cm4gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OkJlZm9yZTsKKworICAgICAgICAvLyBB
biBhbmltYXRpb24gZWZmZWN0IGlzIGluIHRoZSBhZnRlciBwaGFzZSBpZiB0aGUgYW5pbWF0aW9u
IGVmZmVjdOKAmXMgbG9jYWwgdGltZSBpcyBub3QgdW5yZXNvbHZlZCBhbmQKKyAgICAgICAgLy8g
ZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICAgICAgICAvLyAg
ICAgMS4gdGhlIGxvY2FsIHRpbWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBhY3RpdmUtYWZ0ZXIgYm91
bmRhcnkgdGltZSwgb3IKKyAgICAgICAgLy8gICAgIDIuIHRoZSBhbmltYXRpb24gZGlyZWN0aW9u
IGlzIOKAmGZvcndhcmRz4oCZIGFuZCB0aGUgbG9jYWwgdGltZSBpcyBlcXVhbCB0byB0aGUgYWN0
aXZlLWFmdGVyIGJvdW5kYXJ5IHRpbWUuCisgICAgICAgIGlmICgoKmxvY2FsVGltZSAtIHRpbWVF
cHNpbG9uKSA+IGFjdGl2ZUFmdGVyQm91bmRhcnlUaW1lIHx8ICghYW5pbWF0aW9uSXNCYWNrd2Fy
ZHMgJiYgc3RkOjphYnMobG9jYWxUaW1lLT5taWNyb3NlY29uZHMoKSAtIGFjdGl2ZUFmdGVyQm91
bmRhcnlUaW1lLm1pY3Jvc2Vjb25kcygpKSA8IHRpbWVFcHNpbG9uLm1pY3Jvc2Vjb25kcygpKSkK
KyAgICAgICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWZ0ZXI7CisKKyAgICAg
ICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWN0aXZlIHBoYXNlIGlmIHRoZSBh
bmltYXRpb24gZWZmZWN04oCZcyBsb2NhbCB0aW1lIGlzIG5vdCB1bnJlc29sdmVkIGFuZCBpdCBp
cyBub3QKKyAgICAgICAgLy8gaW4gZWl0aGVyIHRoZSBiZWZvcmUgcGhhc2Ugbm9yIHRoZSBhZnRl
ciBwaGFzZS4KKyAgICAgICAgLy8gKE5vIG5lZWQgdG8gY2hlY2ssIHdlJ3ZlIGFscmVhZHkgZXN0
YWJsaXNoZWQgdGhhdCBsb2NhbCB0aW1lIHdhcyByZXNvbHZlZCkuCisgICAgICAgIHJldHVybiBB
bmltYXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOworICAgIH0oKTsKKworICAgIGF1dG8gYWN0aXZl
VGltZSA9IFt0aGlzLCBsb2NhbFRpbWUsIHBoYXNlLCBhY3RpdmVEdXJhdGlvbl0oKSAtPiBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IHsKKyAgICAgICAgLy8gMy44LjMuMS4gQ2FsY3VsYXRpbmcgdGhl
IGFjdGl2ZSB0aW1lCisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5p
bWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZlLXRpbWUKKworICAgICAgICAvLyBUaGUg
YWN0aXZlIHRpbWUgaXMgYmFzZWQgb24gdGhlIGxvY2FsIHRpbWUgYW5kIHN0YXJ0IGRlbGF5LiBI
b3dldmVyLCBpdCBpcyBvbmx5IGRlZmluZWQKKyAgICAgICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9u
IGVmZmVjdCBzaG91bGQgcHJvZHVjZSBhbiBvdXRwdXQgYW5kIGhlbmNlIGRlcGVuZHMgb24gaXRz
IGZpbGwgbW9kZQorICAgICAgICAvLyBhbmQgcGhhc2UgYXMgZm9sbG93cywKKworICAgICAgICAv
LyBJZiB0aGUgYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYmVmb3JlIHBoYXNlLCB0aGUgcmVz
dWx0IGRlcGVuZHMgb24gdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgICAgIC8vIGNvbmRpdGlvbiBm
cm9tIHRoZSBmb2xsb3dpbmcsCisgICAgICAgIGlmIChwaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQ
aGFzZTo6QmVmb3JlKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgZmlsbCBtb2RlIGlzIGJhY2t3
YXJkcyBvciBib3RoLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nCisgICAgICAgICAg
ICAvLyBtYXgobG9jYWwgdGltZSAtIHN0YXJ0IGRlbGF5LCAwKS4KKyAgICAgICAgICAgIGlmICht
X2ZpbGwgPT0gRmlsbE1vZGU6OkJhY2t3YXJkcyB8fCBtX2ZpbGwgPT0gRmlsbE1vZGU6OkJvdGgp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsb2NhbFRpbWUgLSBtX2RlbGF5LCAw
X3MpOworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0aW1l
IHZhbHVlLgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQogCi0g
ICAgLy8gVGhlIG92ZXJhbGwgcHJvZ3Jlc3MgZGVzY3JpYmVzIHRoZSBudW1iZXIgb2YgaXRlcmF0
aW9ucyB0aGF0IGhhdmUgY29tcGxldGVkIChpbmNsdWRpbmcgcGFydGlhbCBpdGVyYXRpb25zKSBh
bmQgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgorICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGVm
ZmVjdCBpcyBpbiB0aGUgYWN0aXZlIHBoYXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBldmFsdWF0
aW5nIGxvY2FsIHRpbWUgLSBzdGFydCBkZWxheS4KKyAgICAgICAgaWYgKHBoYXNlID09IEFuaW1h
dGlvbkVmZmVjdFBoYXNlOjpBY3RpdmUpCisgICAgICAgICAgICByZXR1cm4gKmxvY2FsVGltZSAt
IG1fZGVsYXk7CisKKyAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhl
IGFmdGVyIHBoYXNlLCB0aGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIGZpcnN0IG1hdGNoaW5nCisg
ICAgICAgIC8vIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcsCisgICAgICAgIGlmIChwaGFz
ZSA9PSBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWZ0ZXIpIHsKKyAgICAgICAgICAgIC8vIElmIHRo
ZSBmaWxsIG1vZGUgaXMgZm9yd2FyZHMgb3IgYm90aCwgcmV0dXJuIHRoZSByZXN1bHQgb2YgZXZh
bHVhdGluZworICAgICAgICAgICAgLy8gbWF4KG1pbihsb2NhbCB0aW1lIC0gc3RhcnQgZGVsYXks
IGFjdGl2ZSBkdXJhdGlvbiksIDApLgorICAgICAgICAgICAgaWYgKG1fZmlsbCA9PSBGaWxsTW9k
ZTo6Rm9yd2FyZHMgfHwgbV9maWxsID09IEZpbGxNb2RlOjpCb3RoKQorICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1heChzdGQ6Om1pbigqbG9jYWxUaW1lIC0gbV9kZWxheSwgYWN0aXZlRHVy
YXRpb24pLCAwX3MpOworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4gdW5yZXNv
bHZlZCB0aW1lIHZhbHVlLgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgfQogCi0gICAgLy8gMS4gSWYgdGhlIGFjdGl2ZSB0aW1lIGlzIHVucmVzb2x2ZWQsIHJldHVy
biB1bnJlc29sdmVkLgotICAgIGF1dG8gZWZmZWN0QWN0aXZlVGltZSA9IGFjdGl2ZVRpbWUoKTsK
LSAgICBpZiAoIWVmZmVjdEFjdGl2ZVRpbWUpCisgICAgICAgIC8vIE90aGVyd2lzZSAodGhlIGxv
Y2FsIHRpbWUgaXMgdW5yZXNvbHZlZCksIHJldHVybiBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUu
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAvLyAyLiBDYWxjdWxhdGUgYW4g
aW5pdGlhbCB2YWx1ZSBmb3Igb3ZlcmFsbCBwcm9ncmVzcyBiYXNlZCBvbiB0aGUgZmlyc3QgbWF0
Y2hpbmcgY29uZGl0aW9uIGZyb20gYmVsb3csCi0gICAgZG91YmxlIG92ZXJhbGxQcm9ncmVzczsK
LQotICAgIGlmICghbV9pdGVyYXRpb25EdXJhdGlvbikgewotICAgICAgICAvLyBJZiB0aGUgaXRl
cmF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIGlmIHRoZSBhbmltYXRpb24gZWZmZWN0IGlzIGluIHRo
ZSBiZWZvcmUgcGhhc2UsIGxldCBvdmVyYWxsIHByb2dyZXNzIGJlIHplcm8sCi0gICAgICAgIC8v
IG90aGVyd2lzZSwgbGV0IGl0IGJlIGVxdWFsIHRvIHRoZSBpdGVyYXRpb24gY291bnQuCi0gICAg
ICAgIG92ZXJhbGxQcm9ncmVzcyA9IHBoYXNlKCkgPT0gUGhhc2U6OkJlZm9yZSA/IDAgOiBtX2l0
ZXJhdGlvbnM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCBsZXQgb3ZlcmFs
bCBwcm9ncmVzcyBiZSB0aGUgcmVzdWx0IG9mIGNhbGN1bGF0aW5nIGFjdGl2ZSB0aW1lIC8gaXRl
cmF0aW9uIGR1cmF0aW9uLgotICAgICAgICBvdmVyYWxsUHJvZ3Jlc3MgPSBzZWNvbmRzVG9XZWJB
bmltYXRpb25zQVBJVGltZShlZmZlY3RBY3RpdmVUaW1lLnZhbHVlKCkpIC8gc2Vjb25kc1RvV2Vi
QW5pbWF0aW9uc0FQSVRpbWUobV9pdGVyYXRpb25EdXJhdGlvbik7Ci0gICAgfQotCi0gICAgLy8g
My4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsY3VsYXRpbmcgb3ZlcmFsbCBwcm9ncmVzcyArIGl0
ZXJhdGlvbiBzdGFydC4KLSAgICBvdmVyYWxsUHJvZ3Jlc3MgKz0gbV9pdGVyYXRpb25TdGFydDsK
LSAgICByZXR1cm4gc3RkOjphYnMob3ZlcmFsbFByb2dyZXNzKTsKKyAgICB9KCk7CisKKyAgICBC
YXNpY0VmZmVjdFRpbWluZyBiYXNpY0VmZmVjdFRpbWluZzsKKyAgICBiYXNpY0VmZmVjdFRpbWlu
Zy5sb2NhbFRpbWUgPSBsb2NhbFRpbWU7CisgICAgYmFzaWNFZmZlY3RUaW1pbmcuZW5kVGltZSA9
IGVuZFRpbWU7CisgICAgYmFzaWNFZmZlY3RUaW1pbmcuYWN0aXZlRHVyYXRpb24gPSBhY3RpdmVE
dXJhdGlvbjsKKyAgICBiYXNpY0VmZmVjdFRpbWluZy5hY3RpdmVUaW1lID0gYWN0aXZlVGltZTsK
KyAgICBiYXNpY0VmZmVjdFRpbWluZy5waGFzZSA9IHBoYXNlOworICAgIHJldHVybiBiYXNpY0Vm
ZmVjdFRpbWluZzsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6
c2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MoKSBjb25zdAorQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZygpIGNvbnN0CiB7Ci0gICAgLy8gMy44LjMu
My4gQ2FsY3VsYXRpbmcgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MKLSAgICAvLyBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLXNp
bXBsZS1pdGVyYXRpb24tcHJvZ3Jlc3MKKyAgICAvLyBUaGUgV2ViIEFuaW1hdGlvbnMgc3BlYyBp
bnRyb2R1Y2VzIGEgbnVtYmVyIG9mIGFuaW1hdGlvbiBlZmZlY3QgdGltZS1yZWxhdGVkIGRlZmlu
aXRpb25zIHRoYXQgcmVmZXIKKyAgICAvLyB0byBlYWNoIG90aGVyIGEgZmFpciBiaXQsIHNvIHJh
dGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVtIGFzIGluZGl2aWR1YWwgbWV0aG9kcywgaXQncyBt
b3JlIGVmZmljaWVudAorICAgIC8vIHRvIHJldHVybiB0aGVtIGFsbCBhcyBhIHNpbmdsZSBDb21w
dXRlZEVmZmVjdFRpbWluZy4KIAotICAgIC8vIFRoZSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNz
IGlzIGEgZnJhY3Rpb24gb2YgdGhlIHByb2dyZXNzIHRocm91Z2ggdGhlIGN1cnJlbnQgaXRlcmF0
aW9uIHRoYXQKLSAgICAvLyBpZ25vcmVzIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdGltZSBpbnRy
b2R1Y2VkIGJ5IHRoZSBwbGF5YmFjayBkaXJlY3Rpb24gb3IgdGltaW5nIGZ1bmN0aW9ucwotICAg
IC8vIGFwcGxpZWQgdG8gdGhlIGVmZmVjdCwgYW5kIGlzIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoK
KyAgICBhdXRvIGJhc2ljRWZmZWN0VGltaW5nID0gZ2V0QmFzaWNUaW1pbmcoKTsKKyAgICBhdXRv
IGFjdGl2ZVRpbWUgPSBiYXNpY0VmZmVjdFRpbWluZy5hY3RpdmVUaW1lOworICAgIGF1dG8gYWN0
aXZlRHVyYXRpb24gPSBiYXNpY0VmZmVjdFRpbWluZy5hY3RpdmVEdXJhdGlvbjsKKyAgICBhdXRv
IHBoYXNlID0gYmFzaWNFZmZlY3RUaW1pbmcucGhhc2U7CiAKLSAgICAvLyAxLiBJZiB0aGUgb3Zl
cmFsbCBwcm9ncmVzcyBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KLSAgICBhdXRv
IGVmZmVjdE92ZXJhbGxQcm9ncmVzcyA9IG92ZXJhbGxQcm9ncmVzcygpOwotICAgIGlmICghZWZm
ZWN0T3ZlcmFsbFByb2dyZXNzKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGF1
dG8gb3ZlcmFsbFByb2dyZXNzID0gW3RoaXMsIHBoYXNlLCBhY3RpdmVUaW1lXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB7CisgICAgICAgIC8vIDMuOC4zLjIuIENhbGN1bGF0aW5nIHRoZSBv
dmVyYWxsIHByb2dyZXNzCisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWIt
YW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtb3ZlcmFsbC1wcm9ncmVzcwogCi0gICAgLy8g
Mi4gSWYgb3ZlcmFsbCBwcm9ncmVzcyBpcyBpbmZpbml0eSwgbGV0IHRoZSBzaW1wbGUgaXRlcmF0
aW9uIHByb2dyZXNzIGJlIGl0ZXJhdGlvbiBzdGFydCAlIDEuMCwKLSAgICAvLyBvdGhlcndpc2Us
IGxldCB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9ncmVzcyBiZSBvdmVyYWxsIHByb2dyZXNzICUg
MS4wLgotICAgIGRvdWJsZSBvdmVyYWxsUHJvZ3Jlc3NWYWx1ZSA9IGVmZmVjdE92ZXJhbGxQcm9n
cmVzcy52YWx1ZSgpOwotICAgIGRvdWJsZSBzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcyA9IHN0ZDo6
aXNpbmYob3ZlcmFsbFByb2dyZXNzVmFsdWUpID8gZm1vZChtX2l0ZXJhdGlvblN0YXJ0LCAxKSA6
IGZtb2Qob3ZlcmFsbFByb2dyZXNzVmFsdWUsIDEpOworICAgICAgICAvLyBUaGUgb3ZlcmFsbCBw
cm9ncmVzcyBkZXNjcmliZXMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRoYXQgaGF2ZSBjb21w
bGV0ZWQgKGluY2x1ZGluZyBwYXJ0aWFsIGl0ZXJhdGlvbnMpIGFuZCBpcyBkZWZpbmVkIGFzIGZv
bGxvd3M6CiAKLSAgICAvLyAzLiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB0cnVlLAotICAgIC8vCi0gICAgLy8gdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgY2Fs
Y3VsYXRlZCBhYm92ZSBpcyB6ZXJvLCBhbmQKLSAgICAvLyB0aGUgYW5pbWF0aW9uIGVmZmVjdCBp
cyBpbiB0aGUgYWN0aXZlIHBoYXNlIG9yIHRoZSBhZnRlciBwaGFzZSwgYW5kCi0gICAgLy8gdGhl
IGFjdGl2ZSB0aW1lIGlzIGVxdWFsIHRvIHRoZSBhY3RpdmUgZHVyYXRpb24sIGFuZAotICAgIC8v
IHRoZSBpdGVyYXRpb24gY291bnQgaXMgbm90IGVxdWFsIHRvIHplcm8uCi0gICAgLy8gbGV0IHRo
ZSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNzIGJlIDEuMC4KLSAgICBhdXRvIGVmZmVjdFBoYXNl
ID0gcGhhc2UoKTsKLSAgICBpZiAoIXNpbXBsZUl0ZXJhdGlvblByb2dyZXNzICYmIChlZmZlY3RQ
aGFzZSA9PSBQaGFzZTo6QWN0aXZlIHx8IGVmZmVjdFBoYXNlID09IFBoYXNlOjpBZnRlcikgJiYg
c3RkOjphYnMoYWN0aXZlVGltZSgpLnZhbHVlKCkubWljcm9zZWNvbmRzKCkgLSBhY3RpdmVEdXJh
dGlvbigpLm1pY3Jvc2Vjb25kcygpKSA8IHRpbWVFcHNpbG9uLm1pY3Jvc2Vjb25kcygpICYmIG1f
aXRlcmF0aW9ucykKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByZXR1cm4gc2ltcGxlSXRlcmF0
aW9uUHJvZ3Jlc3M7Ci19CisgICAgICAgIC8vIDEuIElmIHRoZSBhY3RpdmUgdGltZSBpcyB1bnJl
c29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KKyAgICAgICAgaWYgKCFhY3RpdmVUaW1lKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IEFu
aW1hdGlvbkVmZmVjdDo6Y3VycmVudEl0ZXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgLy8gMy44LjQu
IENhbGN1bGF0aW5nIHRoZSBjdXJyZW50IGl0ZXJhdGlvbgotICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtY3VycmVudC1pdGVy
YXRpb24KKyAgICAgICAgLy8gMi4gQ2FsY3VsYXRlIGFuIGluaXRpYWwgdmFsdWUgZm9yIG92ZXJh
bGwgcHJvZ3Jlc3MgYmFzZWQgb24gdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIGJl
bG93LAorICAgICAgICBkb3VibGUgb3ZlcmFsbFByb2dyZXNzOwogCi0gICAgLy8gVGhlIGN1cnJl
bnQgaXRlcmF0aW9uIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3RlcHM6
Ci0KLSAgICAvLyAxLiBJZiB0aGUgYWN0aXZlIHRpbWUgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVu
cmVzb2x2ZWQuCi0gICAgaWYgKCFhY3RpdmVUaW1lKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAvLyAyLiBJZiB0aGUgYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWZ0
ZXIgcGhhc2UgYW5kIHRoZSBpdGVyYXRpb24gY291bnQgaXMgaW5maW5pdHksIHJldHVybiBpbmZp
bml0eS4KLSAgICBpZiAocGhhc2UoKSA9PSBQaGFzZTo6QWZ0ZXIgJiYgc3RkOjppc2luZihtX2l0
ZXJhdGlvbnMpKQotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpOwotCi0gICAgLy8gMy4gSWYgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3Mg
aXMgMS4wLCByZXR1cm4gZmxvb3Iob3ZlcmFsbCBwcm9ncmVzcykgLSAxLgotICAgIGlmIChzaW1w
bGVJdGVyYXRpb25Qcm9ncmVzcygpLnZhbHVlKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIGZsb29y
KG92ZXJhbGxQcm9ncmVzcygpLnZhbHVlKCkpIC0gMTsKLQotICAgIC8vIDQuIE90aGVyd2lzZSwg
cmV0dXJuIGZsb29yKG92ZXJhbGwgcHJvZ3Jlc3MpLgotICAgIHJldHVybiBmbG9vcihvdmVyYWxs
UHJvZ3Jlc3MoKS52YWx1ZSgpKTsKLX0KKyAgICAgICAgaWYgKCFtX2l0ZXJhdGlvbkR1cmF0aW9u
KSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgaXRlcmF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIGlm
IHRoZSBhbmltYXRpb24gZWZmZWN0IGlzIGluIHRoZSBiZWZvcmUgcGhhc2UsIGxldCBvdmVyYWxs
IHByb2dyZXNzIGJlIHplcm8sCisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGxldCBpdCBiZSBl
cXVhbCB0byB0aGUgaXRlcmF0aW9uIGNvdW50LgorICAgICAgICAgICAgb3ZlcmFsbFByb2dyZXNz
ID0gcGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OkJlZm9yZSA/IDAgOiBtX2l0ZXJhdGlv
bnM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBvdmVy
YWxsIHByb2dyZXNzIGJlIHRoZSByZXN1bHQgb2YgY2FsY3VsYXRpbmcgYWN0aXZlIHRpbWUgLyBp
dGVyYXRpb24gZHVyYXRpb24uCisgICAgICAgICAgICBvdmVyYWxsUHJvZ3Jlc3MgPSBzZWNvbmRz
VG9XZWJBbmltYXRpb25zQVBJVGltZSgqYWN0aXZlVGltZSkgLyBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZShtX2l0ZXJhdGlvbkR1cmF0aW9uKTsKKyAgICAgICAgfQogCi1BbmltYXRpb25F
ZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uIEFuaW1hdGlvbkVmZmVjdDo6Y3VycmVudERpcmVjdGlv
bigpIGNvbnN0Ci17Ci0gICAgLy8gMy45LjEuIENhbGN1bGF0aW5nIHRoZSBkaXJlY3RlZCBwcm9n
cmVzcwotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNj
YWxjdWxhdGluZy10aGUtZGlyZWN0ZWQtcHJvZ3Jlc3MKKyAgICAgICAgLy8gMy4gUmV0dXJuIHRo
ZSByZXN1bHQgb2YgY2FsY3VsYXRpbmcgb3ZlcmFsbCBwcm9ncmVzcyArIGl0ZXJhdGlvbiBzdGFy
dC4KKyAgICAgICAgb3ZlcmFsbFByb2dyZXNzICs9IG1faXRlcmF0aW9uU3RhcnQ7CisgICAgICAg
IHJldHVybiBzdGQ6OmFicyhvdmVyYWxsUHJvZ3Jlc3MpOworICAgIH0oKTsKKworICAgIGF1dG8g
c2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MgPSBbdGhpcywgb3ZlcmFsbFByb2dyZXNzLCBwaGFzZSwg
YWN0aXZlVGltZSwgYWN0aXZlRHVyYXRpb25dKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsK
KyAgICAgICAgLy8gMy44LjMuMy4gQ2FsY3VsYXRpbmcgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJv
Z3Jlc3MKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25z
LTEvI2NhbGN1bGF0aW5nLXRoZS1zaW1wbGUtaXRlcmF0aW9uLXByb2dyZXNzCisKKyAgICAgICAg
Ly8gVGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgaXMgYSBmcmFjdGlvbiBvZiB0aGUgcHJv
Z3Jlc3MgdGhyb3VnaCB0aGUgY3VycmVudCBpdGVyYXRpb24gdGhhdAorICAgICAgICAvLyBpZ25v
cmVzIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdGltZSBpbnRyb2R1Y2VkIGJ5IHRoZSBwbGF5YmFj
ayBkaXJlY3Rpb24gb3IgdGltaW5nIGZ1bmN0aW9ucworICAgICAgICAvLyBhcHBsaWVkIHRvIHRo
ZSBlZmZlY3QsIGFuZCBpcyBjYWxjdWxhdGVkIGFzIGZvbGxvd3M6CisKKyAgICAgICAgLy8gMS4g
SWYgdGhlIG92ZXJhbGwgcHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQu
CisgICAgICAgIGlmICghb3ZlcmFsbFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICAvLyAyLiBJZiBvdmVyYWxsIHByb2dyZXNzIGlzIGluZmluaXR5
LCBsZXQgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgYmUgaXRlcmF0aW9uIHN0YXJ0ICUg
MS4wLAorICAgICAgICAvLyBvdGhlcndpc2UsIGxldCB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9n
cmVzcyBiZSBvdmVyYWxsIHByb2dyZXNzICUgMS4wLgorICAgICAgICBkb3VibGUgc2ltcGxlSXRl
cmF0aW9uUHJvZ3Jlc3MgPSBzdGQ6OmlzaW5mKCpvdmVyYWxsUHJvZ3Jlc3MpID8gZm1vZChtX2l0
ZXJhdGlvblN0YXJ0LCAxKSA6IGZtb2QoKm92ZXJhbGxQcm9ncmVzcywgMSk7CisKKyAgICAgICAg
Ly8gMy4gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZSwKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgY2FsY3VsYXRl
ZCBhYm92ZSBpcyB6ZXJvLCBhbmQKKyAgICAgICAgLy8gdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMg
aW4gdGhlIGFjdGl2ZSBwaGFzZSBvciB0aGUgYWZ0ZXIgcGhhc2UsIGFuZAorICAgICAgICAvLyB0
aGUgYWN0aXZlIHRpbWUgaXMgZXF1YWwgdG8gdGhlIGFjdGl2ZSBkdXJhdGlvbiwgYW5kCisgICAg
ICAgIC8vIHRoZSBpdGVyYXRpb24gY291bnQgaXMgbm90IGVxdWFsIHRvIHplcm8uCisgICAgICAg
IC8vIGxldCB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9ncmVzcyBiZSAxLjAuCisgICAgICAgIGlm
ICghc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MgJiYgKHBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBo
YXNlOjpBY3RpdmUgfHwgcGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OkFmdGVyKSAmJiBz
dGQ6OmFicyhhY3RpdmVUaW1lLT5taWNyb3NlY29uZHMoKSAtIGFjdGl2ZUR1cmF0aW9uLm1pY3Jv
c2Vjb25kcygpKSA8IHRpbWVFcHNpbG9uLm1pY3Jvc2Vjb25kcygpICYmIG1faXRlcmF0aW9ucykK
KyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgIHJldHVybiBzaW1wbGVJdGVyYXRpb25Q
cm9ncmVzczsKKyAgICB9KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJdGVyYXRpb24gPSBbdGhpcywg
YWN0aXZlVGltZSwgcGhhc2UsIHNpbXBsZUl0ZXJhdGlvblByb2dyZXNzLCBvdmVyYWxsUHJvZ3Jl
c3NdKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKKyAgICAgICAgLy8gMy44LjQuIENhbGN1
bGF0aW5nIHRoZSBjdXJyZW50IGl0ZXJhdGlvbgorICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLWN1cnJlbnQtaXRlcmF0
aW9uCisKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgaXRlcmF0aW9uIGNhbiBiZSBjYWxjdWxhdGVk
IHVzaW5nIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAgICAgLy8gMS4gSWYgdGhlIGFjdGl2
ZSB0aW1lIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJlc29sdmVkLgorICAgICAgICBpZiAoIWFj
dGl2ZVRpbWUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIC8v
IDIuIElmIHRoZSBhbmltYXRpb24gZWZmZWN0IGlzIGluIHRoZSBhZnRlciBwaGFzZSBhbmQgdGhl
IGl0ZXJhdGlvbiBjb3VudCBpcyBpbmZpbml0eSwgcmV0dXJuIGluZmluaXR5LgorICAgICAgICBp
ZiAocGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OkFmdGVyICYmIHN0ZDo6aXNpbmYobV9p
dGVyYXRpb25zKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCk7CisKKyAgICAgICAgLy8gMy4gSWYgdGhlIHNpbXBsZSBpdGVyYXRpb24g
cHJvZ3Jlc3MgaXMgMS4wLCByZXR1cm4gZmxvb3Iob3ZlcmFsbCBwcm9ncmVzcykgLSAxLgorICAg
ICAgICBpZiAoKnNpbXBsZUl0ZXJhdGlvblByb2dyZXNzID09IDEpCisgICAgICAgICAgICByZXR1
cm4gZmxvb3IoKm92ZXJhbGxQcm9ncmVzcykgLSAxOworCisgICAgICAgIC8vIDQuIE90aGVyd2lz
ZSwgcmV0dXJuIGZsb29yKG92ZXJhbGwgcHJvZ3Jlc3MpLgorICAgICAgICByZXR1cm4gZmxvb3Io
Km92ZXJhbGxQcm9ncmVzcyk7CisgICAgfSgpOworCisgICAgYXV0byBjdXJyZW50RGlyZWN0aW9u
ID0gW3RoaXMsIGN1cnJlbnRJdGVyYXRpb25dKCkgLT4gQW5pbWF0aW9uRWZmZWN0OjpDb21wdXRl
ZERpcmVjdGlvbiB7CisgICAgICAgIC8vIDMuOS4xLiBDYWxjdWxhdGluZyB0aGUgZGlyZWN0ZWQg
cHJvZ3Jlc3MKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRp
b25zLTEvI2NhbGN1bGF0aW5nLXRoZS1kaXJlY3RlZC1wcm9ncmVzcworCisgICAgICAgIC8vIElm
IHBsYXliYWNrIGRpcmVjdGlvbiBpcyBub3JtYWwsIGxldCB0aGUgY3VycmVudCBkaXJlY3Rpb24g
YmUgZm9yd2FyZHMuCisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBQbGF5YmFja0RpcmVjdGlv
bjo6Tm9ybWFsKQorICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdDo6Q29tcHV0ZWRE
aXJlY3Rpb246OkZvcndhcmRzOworICAgIAorICAgICAgICAvLyBJZiBwbGF5YmFjayBkaXJlY3Rp
b24gaXMgcmV2ZXJzZSwgbGV0IHRoZSBjdXJyZW50IGRpcmVjdGlvbiBiZSByZXZlcnNlLgorICAg
ICAgICBpZiAobV9kaXJlY3Rpb24gPT0gUGxheWJhY2tEaXJlY3Rpb246OlJldmVyc2UpCisgICAg
ICAgICAgICByZXR1cm4gQW5pbWF0aW9uRWZmZWN0OjpDb21wdXRlZERpcmVjdGlvbjo6UmV2ZXJz
ZTsKIAotICAgIC8vIElmIHBsYXliYWNrIGRpcmVjdGlvbiBpcyBub3JtYWwsIGxldCB0aGUgY3Vy
cmVudCBkaXJlY3Rpb24gYmUgZm9yd2FyZHMuCi0gICAgaWYgKG1fZGlyZWN0aW9uID09IFBsYXli
YWNrRGlyZWN0aW9uOjpOb3JtYWwpCi0gICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3Q6OkNv
bXB1dGVkRGlyZWN0aW9uOjpGb3J3YXJkczsKKyAgICAgICAgaWYgKCFjdXJyZW50SXRlcmF0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdDo6Q29tcHV0ZWREaXJlY3Rpb246
OkZvcndhcmRzOwogICAgIAotICAgIC8vIElmIHBsYXliYWNrIGRpcmVjdGlvbiBpcyByZXZlcnNl
LCBsZXQgdGhlIGN1cnJlbnQgZGlyZWN0aW9uIGJlIHJldmVyc2UuCi0gICAgaWYgKG1fZGlyZWN0
aW9uID09IFBsYXliYWNrRGlyZWN0aW9uOjpSZXZlcnNlKQorICAgICAgICAvLyBPdGhlcndpc2Us
IGxldCBkIGJlIHRoZSBjdXJyZW50IGl0ZXJhdGlvbi4KKyAgICAgICAgYXV0byBkID0gKmN1cnJl
bnRJdGVyYXRpb247CisgICAgICAgIC8vIElmIHBsYXliYWNrIGRpcmVjdGlvbiBpcyBhbHRlcm5h
dGUtcmV2ZXJzZSBpbmNyZW1lbnQgZCBieSAxLgorICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0g
UGxheWJhY2tEaXJlY3Rpb246OkFsdGVybmF0ZVJldmVyc2UpCisgICAgICAgICAgICBkKys7Cisg
ICAgICAgIC8vIElmIGQgJSAyID09IDAsIGxldCB0aGUgY3VycmVudCBkaXJlY3Rpb24gYmUgZm9y
d2FyZHMsIG90aGVyd2lzZSBsZXQgdGhlIGN1cnJlbnQgZGlyZWN0aW9uIGJlIHJldmVyc2UuCisg
ICAgICAgIC8vIElmIGQgaXMgaW5maW5pdHksIGxldCB0aGUgY3VycmVudCBkaXJlY3Rpb24gYmUg
Zm9yd2FyZHMuCisgICAgICAgIGlmIChzdGQ6OmlzaW5mKGQpIHx8ICFmbW9kKGQsIDIpKQorICAg
ICAgICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdDo6Q29tcHV0ZWREaXJlY3Rpb246OkZvcndh
cmRzOwogICAgICAgICByZXR1cm4gQW5pbWF0aW9uRWZmZWN0OjpDb21wdXRlZERpcmVjdGlvbjo6
UmV2ZXJzZTsKLSAgICAKLSAgICAvLyBPdGhlcndpc2UsIGxldCBkIGJlIHRoZSBjdXJyZW50IGl0
ZXJhdGlvbi4KLSAgICBhdXRvIGQgPSBjdXJyZW50SXRlcmF0aW9uKCkudmFsdWUoKTsKLSAgICAv
LyBJZiBwbGF5YmFjayBkaXJlY3Rpb24gaXMgYWx0ZXJuYXRlLXJldmVyc2UgaW5jcmVtZW50IGQg
YnkgMS4KLSAgICBpZiAobV9kaXJlY3Rpb24gPT0gUGxheWJhY2tEaXJlY3Rpb246OkFsdGVybmF0
ZVJldmVyc2UpCi0gICAgICAgIGQrKzsKLSAgICAvLyBJZiBkICUgMiA9PSAwLCBsZXQgdGhlIGN1
cnJlbnQgZGlyZWN0aW9uIGJlIGZvcndhcmRzLCBvdGhlcndpc2UgbGV0IHRoZSBjdXJyZW50IGRp
cmVjdGlvbiBiZSByZXZlcnNlLgotICAgIC8vIElmIGQgaXMgaW5maW5pdHksIGxldCB0aGUgY3Vy
cmVudCBkaXJlY3Rpb24gYmUgZm9yd2FyZHMuCi0gICAgaWYgKHN0ZDo6aXNpbmYoZCkgfHwgIWZt
b2QoZCwgMikpCi0gICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0
aW9uOjpGb3J3YXJkczsKLSAgICByZXR1cm4gQW5pbWF0aW9uRWZmZWN0OjpDb21wdXRlZERpcmVj
dGlvbjo6UmV2ZXJzZTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVj
dDo6ZGlyZWN0ZWRQcm9ncmVzcygpIGNvbnN0Ci17Ci0gICAgLy8gMy45LjEuIENhbGN1bGF0aW5n
IHRoZSBkaXJlY3RlZCBwcm9ncmVzcwotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93
ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtZGlyZWN0ZWQtcHJvZ3Jlc3MKLQotICAg
IC8vIFRoZSBkaXJlY3RlZCBwcm9ncmVzcyBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHNpbXBsZSBp
dGVyYXRpb24gcHJvZ3Jlc3MgdXNpbmcgdGhlIGZvbGxvd2luZyBzdGVwczoKLQotICAgIC8vIDEu
IElmIHRoZSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNzIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1
bnJlc29sdmVkLgotICAgIGF1dG8gZWZmZWN0U2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MgPSBzaW1w
bGVJdGVyYXRpb25Qcm9ncmVzcygpOwotICAgIGlmICghZWZmZWN0U2ltcGxlSXRlcmF0aW9uUHJv
Z3Jlc3MpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAvLyAyLiBDYWxjdWxh
dGUgdGhlIGN1cnJlbnQgZGlyZWN0aW9uICh3ZSBpbXBsZW1lbnQgdGhpcyBhcyBhIHNlcGFyYXRl
IG1ldGhvZCkuCi0KLSAgICAvLyAzLiBJZiB0aGUgY3VycmVudCBkaXJlY3Rpb24gaXMgZm9yd2Fy
ZHMgdGhlbiByZXR1cm4gdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MuCi0gICAgaWYgKGN1
cnJlbnREaXJlY3Rpb24oKSA9PSBBbmltYXRpb25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uOjpG
b3J3YXJkcykKLSAgICAgICAgcmV0dXJuIGVmZmVjdFNpbXBsZUl0ZXJhdGlvblByb2dyZXNzLnZh
bHVlKCk7Ci0KLSAgICAvLyBPdGhlcndpc2UsIHJldHVybiAxLjAgLSBzaW1wbGUgaXRlcmF0aW9u
IHByb2dyZXNzLgotICAgIHJldHVybiAxIC0gZWZmZWN0U2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3Mu
dmFsdWUoKTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6dHJh
bnNmb3JtZWRQcm9ncmVzcygpIGNvbnN0Ci17Ci0gICAgLy8gMy4xMC4xLiBDYWxjdWxhdGluZyB0
aGUgdHJhbnNmb3JtZWQgcHJvZ3Jlc3MKLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
d2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLXRyYW5zZm9ybWVkLXByb2dyZXNzCi0K
LSAgICAvLyBUaGUgdHJhbnNmb3JtZWQgcHJvZ3Jlc3MgaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBk
aXJlY3RlZCBwcm9ncmVzcyB1c2luZyB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIC8vCi0gICAg
Ly8gMS4gSWYgdGhlIGRpcmVjdGVkIHByb2dyZXNzIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJl
c29sdmVkLgotICAgIGF1dG8gZWZmZWN0RGlyZWN0ZWRQcm9ncmVzcyA9IGRpcmVjdGVkUHJvZ3Jl
c3MoKTsKLSAgICBpZiAoIWVmZmVjdERpcmVjdGVkUHJvZ3Jlc3MpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGVmZmVjdERpcmVjdGVkUHJvZ3Jlc3NWYWx1ZSA9IGVm
ZmVjdERpcmVjdGVkUHJvZ3Jlc3MudmFsdWUoKTsKLQotICAgIGlmIChhdXRvIGl0ZXJhdGlvbkR1
cmF0aW9uID0gbV9pdGVyYXRpb25EdXJhdGlvbi5zZWNvbmRzKCkpIHsKLSAgICAgICAgYm9vbCBi
ZWZvcmUgPSBmYWxzZTsKLSAgICAgICAgLy8gMi4gQ2FsY3VsYXRlIHRoZSB2YWx1ZSBvZiB0aGUg
YmVmb3JlIGZsYWcgYXMgZm9sbG93czoKLSAgICAgICAgaWYgKGlzPFN0ZXBzVGltaW5nRnVuY3Rp
b24+KG1fdGltaW5nRnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICAvLyAxLiBEZXRlcm1pbmUgdGhl
IGN1cnJlbnQgZGlyZWN0aW9uIHVzaW5nIHRoZSBwcm9jZWR1cmUgZGVmaW5lZCBpbiDCpzMuOS4x
IENhbGN1bGF0aW5nIHRoZSBkaXJlY3RlZCBwcm9ncmVzcy4KLSAgICAgICAgICAgIC8vIDIuIElm
IHRoZSBjdXJyZW50IGRpcmVjdGlvbiBpcyBmb3J3YXJkcywgbGV0IGdvaW5nIGZvcndhcmRzIGJl
IHRydWUsIG90aGVyd2lzZSBpdCBpcyBmYWxzZS4KLSAgICAgICAgICAgIGJvb2wgZ29pbmdGb3J3
YXJkcyA9IGN1cnJlbnREaXJlY3Rpb24oKSA9PSBBbmltYXRpb25FZmZlY3Q6OkNvbXB1dGVkRGly
ZWN0aW9uOjpGb3J3YXJkczsKLSAgICAgICAgICAgIC8vIDMuIFRoZSBiZWZvcmUgZmxhZyBpcyBz
ZXQgaWYgdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhlIGJlZm9yZSBwaGFzZSBhbmQgZ29p
bmcgZm9yd2FyZHMgaXMgdHJ1ZTsKLSAgICAgICAgICAgIC8vICAgIG9yIGlmIHRoZSBhbmltYXRp
b24gZWZmZWN0IGlzIGluIHRoZSBhZnRlciBwaGFzZSBhbmQgZ29pbmcgZm9yd2FyZHMgaXMgZmFs
c2UuCi0gICAgICAgICAgICBhdXRvIGVmZmVjdFBoYXNlID0gcGhhc2UoKTsKLSAgICAgICAgICAg
IGJlZm9yZSA9IChlZmZlY3RQaGFzZSA9PSBQaGFzZTo6QmVmb3JlICYmIGdvaW5nRm9yd2FyZHMp
IHx8IChlZmZlY3RQaGFzZSA9PSBQaGFzZTo6QWZ0ZXIgJiYgIWdvaW5nRm9yd2FyZHMpOworICAg
IH0oKTsKKworICAgIGF1dG8gZGlyZWN0ZWRQcm9ncmVzcyA9IFtzaW1wbGVJdGVyYXRpb25Qcm9n
cmVzcywgY3VycmVudERpcmVjdGlvbl0oKSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geworICAg
ICAgICAvLyAzLjkuMS4gQ2FsY3VsYXRpbmcgdGhlIGRpcmVjdGVkIHByb2dyZXNzCisgICAgICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGlu
Zy10aGUtZGlyZWN0ZWQtcHJvZ3Jlc3MKKworICAgICAgICAvLyBUaGUgZGlyZWN0ZWQgcHJvZ3Jl
c3MgaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNzIHVzaW5n
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAgICAgLy8gMS4gSWYgdGhlIHNpbXBsZSBpdGVy
YXRpb24gcHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQuCisgICAgICAg
IGlmICghc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIC8vIDIuIENhbGN1bGF0ZSB0aGUgY3VycmVudCBkaXJlY3Rpb24g
KHdlIGltcGxlbWVudCB0aGlzIGFzIGEgc2VwYXJhdGUgbWV0aG9kKS4KKworICAgICAgICAvLyAz
LiBJZiB0aGUgY3VycmVudCBkaXJlY3Rpb24gaXMgZm9yd2FyZHMgdGhlbiByZXR1cm4gdGhlIHNp
bXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MuCisgICAgICAgIGlmIChjdXJyZW50RGlyZWN0aW9uID09
IEFuaW1hdGlvbkVmZmVjdDo6Q29tcHV0ZWREaXJlY3Rpb246OkZvcndhcmRzKQorICAgICAgICAg
ICAgcmV0dXJuICpzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKKworICAgICAgICAvLyBPdGhlcndp
c2UsIHJldHVybiAxLjAgLSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNzLgorICAgICAgICByZXR1
cm4gMSAtICpzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKKyAgICB9KCk7CisKKyAgICBhdXRvIHRy
YW5zZm9ybWVkUHJvZ3Jlc3MgPSBbdGhpcywgZGlyZWN0ZWRQcm9ncmVzcywgY3VycmVudERpcmVj
dGlvbiwgcGhhc2VdKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKKyAgICAgICAgLy8gMy4x
MC4xLiBDYWxjdWxhdGluZyB0aGUgdHJhbnNmb3JtZWQgcHJvZ3Jlc3MKKyAgICAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2NhbGN1bGF0aW5nLXRoZS10
cmFuc2Zvcm1lZC1wcm9ncmVzcworCisgICAgICAgIC8vIFRoZSB0cmFuc2Zvcm1lZCBwcm9ncmVz
cyBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGRpcmVjdGVkIHByb2dyZXNzIHVzaW5nIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CisgICAgICAgIC8vCisgICAgICAgIC8vIDEuIElmIHRoZSBkaXJlY3RlZCBw
cm9ncmVzcyBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KKyAgICAgICAgaWYgKCFk
aXJlY3RlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBpZiAoYXV0byBpdGVyYXRpb25EdXJhdGlvbiA9IG1faXRlcmF0aW9uRHVyYXRpb24uc2Vj
b25kcygpKSB7CisgICAgICAgICAgICBib29sIGJlZm9yZSA9IGZhbHNlOworICAgICAgICAgICAg
Ly8gMi4gQ2FsY3VsYXRlIHRoZSB2YWx1ZSBvZiB0aGUgYmVmb3JlIGZsYWcgYXMgZm9sbG93czoK
KyAgICAgICAgICAgIGlmIChpczxTdGVwc1RpbWluZ0Z1bmN0aW9uPihtX3RpbWluZ0Z1bmN0aW9u
KSkgeworICAgICAgICAgICAgICAgIC8vIDEuIERldGVybWluZSB0aGUgY3VycmVudCBkaXJlY3Rp
b24gdXNpbmcgdGhlIHByb2NlZHVyZSBkZWZpbmVkIGluIMKnMy45LjEgQ2FsY3VsYXRpbmcgdGhl
IGRpcmVjdGVkIHByb2dyZXNzLgorICAgICAgICAgICAgICAgIC8vIDIuIElmIHRoZSBjdXJyZW50
IGRpcmVjdGlvbiBpcyBmb3J3YXJkcywgbGV0IGdvaW5nIGZvcndhcmRzIGJlIHRydWUsIG90aGVy
d2lzZSBpdCBpcyBmYWxzZS4KKyAgICAgICAgICAgICAgICBib29sIGdvaW5nRm9yd2FyZHMgPSBj
dXJyZW50RGlyZWN0aW9uID09IEFuaW1hdGlvbkVmZmVjdDo6Q29tcHV0ZWREaXJlY3Rpb246OkZv
cndhcmRzOworICAgICAgICAgICAgICAgIC8vIDMuIFRoZSBiZWZvcmUgZmxhZyBpcyBzZXQgaWYg
dGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhlIGJlZm9yZSBwaGFzZSBhbmQgZ29pbmcgZm9y
d2FyZHMgaXMgdHJ1ZTsKKyAgICAgICAgICAgICAgICAvLyAgICBvciBpZiB0aGUgYW5pbWF0aW9u
IGVmZmVjdCBpcyBpbiB0aGUgYWZ0ZXIgcGhhc2UgYW5kIGdvaW5nIGZvcndhcmRzIGlzIGZhbHNl
LgorICAgICAgICAgICAgICAgIGJlZm9yZSA9IChwaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQaGFz
ZTo6QmVmb3JlICYmIGdvaW5nRm9yd2FyZHMpIHx8IChwaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQ
aGFzZTo6QWZ0ZXIgJiYgIWdvaW5nRm9yd2FyZHMpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyAzLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBhbmltYXRpb24g
ZWZmZWN04oCZcyB0aW1pbmcgZnVuY3Rpb24gcGFzc2luZyBkaXJlY3RlZCBwcm9ncmVzcyBhcyB0
aGUKKyAgICAgICAgICAgIC8vICAgIGlucHV0IHByb2dyZXNzIHZhbHVlIGFuZCBiZWZvcmUgZmxh
ZyBhcyB0aGUgYmVmb3JlIGZsYWcuCisgICAgICAgICAgICByZXR1cm4gbV90aW1pbmdGdW5jdGlv
bi0+dHJhbnNmb3JtVGltZSgqZGlyZWN0ZWRQcm9ncmVzcywgaXRlcmF0aW9uRHVyYXRpb24sIGJl
Zm9yZSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyAzLiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBl
dmFsdWF0aW5nIHRoZSBhbmltYXRpb24gZWZmZWN04oCZcyB0aW1pbmcgZnVuY3Rpb24gcGFzc2lu
ZyBkaXJlY3RlZCBwcm9ncmVzcyBhcyB0aGUKLSAgICAgICAgLy8gICAgaW5wdXQgcHJvZ3Jlc3Mg
dmFsdWUgYW5kIGJlZm9yZSBmbGFnIGFzIHRoZSBiZWZvcmUgZmxhZy4KLSAgICAgICAgcmV0dXJu
IG1fdGltaW5nRnVuY3Rpb24tPnRyYW5zZm9ybVRpbWUoZWZmZWN0RGlyZWN0ZWRQcm9ncmVzc1Zh
bHVlLCBpdGVyYXRpb25EdXJhdGlvbiwgYmVmb3JlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZWZm
ZWN0RGlyZWN0ZWRQcm9ncmVzc1ZhbHVlOwotfQotCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQW5p
bWF0aW9uRWZmZWN0OjppdGVyYXRpb25Qcm9ncmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRy
YW5zZm9ybWVkUHJvZ3Jlc3MoKTsKLX0KLQotRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6
Z2V0VGltaW5nKCkKLXsKLSAgICBFZmZlY3RUaW1pbmcgdGltaW5nOwotICAgIHRpbWluZy5kZWxh
eSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKG1fZGVsYXkpOwotICAgIHRpbWluZy5l
bmREZWxheSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKG1fZW5kRGVsYXkpOwotICAg
IHRpbWluZy5maWxsID0gbV9maWxsOwotICAgIHRpbWluZy5pdGVyYXRpb25TdGFydCA9IG1faXRl
cmF0aW9uU3RhcnQ7Ci0gICAgdGltaW5nLml0ZXJhdGlvbnMgPSBtX2l0ZXJhdGlvbnM7Ci0gICAg
aWYgKG1faXRlcmF0aW9uRHVyYXRpb24gPT0gMF9zKQotICAgICAgICB0aW1pbmcuZHVyYXRpb24g
PSAiYXV0byI7Ci0gICAgZWxzZQotICAgICAgICB0aW1pbmcuZHVyYXRpb24gPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShtX2l0ZXJhdGlvbkR1cmF0aW9uKTsKLSAgICB0aW1pbmcuZGly
ZWN0aW9uID0gbV9kaXJlY3Rpb247Ci0gICAgdGltaW5nLmVhc2luZyA9IG1fdGltaW5nRnVuY3Rp
b24tPmNzc1RleHQoKTsKLSAgICByZXR1cm4gdGltaW5nOwotfQorICAgICAgICByZXR1cm4gKmRp
cmVjdGVkUHJvZ3Jlc3M7CisgICAgfSgpOwogCi1Db21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRp
b25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKCkKLXsKICAgICBDb21wdXRlZEVmZmVjdFRpbWlu
ZyBjb21wdXRlZFRpbWluZzsKICAgICBjb21wdXRlZFRpbWluZy5kZWxheSA9IHNlY29uZHNUb1dl
YkFuaW1hdGlvbnNBUElUaW1lKG1fZGVsYXkpOwogICAgIGNvbXB1dGVkVGltaW5nLmVuZERlbGF5
ID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9lbmREZWxheSk7CkBAIC0zMjcsMTIg
KzM1MywxNCBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1
dGVkVGltaW5nKCkKICAgICBjb21wdXRlZFRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFu
aW1hdGlvbnNBUElUaW1lKG1faXRlcmF0aW9uRHVyYXRpb24pOwogICAgIGNvbXB1dGVkVGltaW5n
LmRpcmVjdGlvbiA9IG1fZGlyZWN0aW9uOwogICAgIGNvbXB1dGVkVGltaW5nLmVhc2luZyA9IG1f
dGltaW5nRnVuY3Rpb24tPmNzc1RleHQoKTsKLSAgICBjb21wdXRlZFRpbWluZy5lbmRUaW1lID0g
c2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoZW5kVGltZSgpKTsKLSAgICBjb21wdXRlZFRp
bWluZy5hY3RpdmVEdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGFjdGl2
ZUR1cmF0aW9uKCkpOwotICAgIGlmIChhdXRvIGVmZmVjdExvY2FsVGltZSA9IGxvY2FsVGltZSgp
KQotICAgICAgICBjb21wdXRlZFRpbWluZy5sb2NhbFRpbWUgPSBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZShlZmZlY3RMb2NhbFRpbWUudmFsdWUoKSk7Ci0gICAgY29tcHV0ZWRUaW1pbmcu
cHJvZ3Jlc3MgPSBpdGVyYXRpb25Qcm9ncmVzcygpOwotICAgIGNvbXB1dGVkVGltaW5nLmN1cnJl
bnRJdGVyYXRpb24gPSBjdXJyZW50SXRlcmF0aW9uKCk7CisgICAgY29tcHV0ZWRUaW1pbmcuZW5k
VGltZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGJhc2ljRWZmZWN0VGltaW5nLmVu
ZFRpbWUpOworICAgIGNvbXB1dGVkVGltaW5nLmFjdGl2ZUR1cmF0aW9uID0gc2Vjb25kc1RvV2Vi
QW5pbWF0aW9uc0FQSVRpbWUoYWN0aXZlRHVyYXRpb24pOworICAgIGlmIChiYXNpY0VmZmVjdFRp
bWluZy5sb2NhbFRpbWUpCisgICAgICAgIGNvbXB1dGVkVGltaW5nLmxvY2FsVGltZSA9IHNlY29u
ZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKCpiYXNpY0VmZmVjdFRpbWluZy5sb2NhbFRpbWUpOwor
ICAgIGNvbXB1dGVkVGltaW5nLnNpbXBsZUl0ZXJhdGlvblByb2dyZXNzID0gc2ltcGxlSXRlcmF0
aW9uUHJvZ3Jlc3M7CisgICAgY29tcHV0ZWRUaW1pbmcucHJvZ3Jlc3MgPSB0cmFuc2Zvcm1lZFBy
b2dyZXNzOworICAgIGNvbXB1dGVkVGltaW5nLmN1cnJlbnRJdGVyYXRpb24gPSBjdXJyZW50SXRl
cmF0aW9uOworICAgIGNvbXB1dGVkVGltaW5nLnBoYXNlID0gcGhhc2U7CiAgICAgcmV0dXJuIGNv
bXB1dGVkVGltaW5nOwogfQogCkBAIC00NDgsMTYgKzQ3Niw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEFuaW1hdGlvbkVmZmVjdDo6c2V0SXRlcmF0aW9ucyhkb3VibGUgaXRlcmF0aW9ucykKICAgICBy
ZXR1cm4geyB9OwogfQogCi1TZWNvbmRzIEFuaW1hdGlvbkVmZmVjdDo6ZW5kVGltZSgpIGNvbnN0
Ci17Ci0gICAgLy8gMy41LjMgVGhlIGFjdGl2ZSBpbnRlcnZhbAotICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNlbmQtdGltZQotCi0gICAgLy8gVGhlIGVu
ZCB0aW1lIG9mIGFuIGFuaW1hdGlvbiBlZmZlY3QgaXMgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5n
IG1heChzdGFydCBkZWxheSArIGFjdGl2ZSBkdXJhdGlvbiArIGVuZCBkZWxheSwgMCkuCi0gICAg
YXV0byBlbmRUaW1lID0gbV9kZWxheSArIGFjdGl2ZUR1cmF0aW9uKCkgKyBtX2VuZERlbGF5Owot
ICAgIHJldHVybiBlbmRUaW1lID4gMF9zID8gZW5kVGltZSA6IDBfczsKLX0KLQogdm9pZCBBbmlt
YXRpb25FZmZlY3Q6OnNldERlbGF5KGNvbnN0IFNlY29uZHMmIGRlbGF5KQogewogICAgIGlmICht
X2RlbGF5ID09IGRlbGF5KQpAQCAtNTAzLDE3ICs1MjEsNCBAQCB2b2lkIEFuaW1hdGlvbkVmZmVj
dDo6c2V0VGltaW5nRnVuY3Rpb24oY29uc3QgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYgdGltaW5n
RnVuYwogICAgIG1fdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbjsKIH0KIAotU2Vjb25k
cyBBbmltYXRpb25FZmZlY3Q6OmFjdGl2ZUR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICAvLyAzLjgu
Mi4gQ2FsY3VsYXRpbmcgdGhlIGFjdGl2ZSBkdXJhdGlvbgotICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZlLWR1cmF0
aW9uCi0KLSAgICAvLyBUaGUgYWN0aXZlIGR1cmF0aW9uIGlzIGNhbGN1bGF0ZWQgYXMgZm9sbG93
czoKLSAgICAvLyBhY3RpdmUgZHVyYXRpb24gPSBpdGVyYXRpb24gZHVyYXRpb24gw5cgaXRlcmF0
aW9uIGNvdW50Ci0gICAgLy8gSWYgZWl0aGVyIHRoZSBpdGVyYXRpb24gZHVyYXRpb24gb3IgaXRl
cmF0aW9uIGNvdW50IGFyZSB6ZXJvLCB0aGUgYWN0aXZlIGR1cmF0aW9uIGlzIHplcm8uCi0gICAg
aWYgKCFtX2l0ZXJhdGlvbkR1cmF0aW9uIHx8ICFtX2l0ZXJhdGlvbnMpCi0gICAgICAgIHJldHVy
biAwX3M7Ci0gICAgcmV0dXJuIG1faXRlcmF0aW9uRHVyYXRpb24gKiBtX2l0ZXJhdGlvbnM7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25FZmZlY3QuaAppbmRleCA4NTg0ZGIyYjlkNzhkOTg3Yzg3OGY4YWM0N2QyYjQ2ZDQyMzE0
YmY2Li4xYmRkZDg4YjEyNzkxZDExYWFkMGQ5MGIzMzcyOGQxZWM0N2M1Y2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC0yNiw2ICsyNiw4IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgorI2luY2x1ZGUgIkFu
aW1hdGlvbkVmZmVjdFBoYXNlLmgiCisjaW5jbHVkZSAiQmFzaWNFZmZlY3RUaW1pbmcuaCIKICNp
bmNsdWRlICJDb21wdXRlZEVmZmVjdFRpbWluZy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiRmlsbE1vZGUuaCIKQEAgLTUxLDggKzUzLDkgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzS2V5ZnJhbWVFZmZlY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgRWZmZWN0VGltaW5nIGdldFRpbWluZygpOwotICAgIENvbXB1dGVkRWZmZWN0VGltaW5n
IGdldENvbXB1dGVkVGltaW5nKCk7CisgICAgRWZmZWN0VGltaW5nIGdldFRpbWluZygpIGNvbnN0
OworICAgIEJhc2ljRWZmZWN0VGltaW5nIGdldEJhc2ljVGltaW5nKCkgY29uc3Q7CisgICAgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcgZ2V0Q29tcHV0ZWRUaW1pbmcoKSBjb25zdDsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiB1cGRhdGVUaW1pbmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRpbWlu
Zz4pOwogCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJikgPSAwOwpAQCAtODcs
MjggKzkwLDEyIEBAIHB1YmxpYzoKICAgICBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgdm9pZCBzZXRU
aW1pbmdGdW5jdGlvbihjb25zdCBSZWZQdHI8VGltaW5nRnVuY3Rpb24+Jik7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IGxvY2FsVGltZSgpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gYWN0aXZlVGltZSgpIGNvbnN0OwotICAgIFNlY29uZHMgZW5kVGltZSgpIGNvbnN0
OwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcygpIGNv
bnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25Qcm9ncmVzcygpIGNvbnN0
OwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50SXRlcmF0aW9uKCkgY29uc3Q7Ci0g
ICAgU2Vjb25kcyBhY3RpdmVEdXJhdGlvbigpIGNvbnN0OwotCi0gICAgZW51bSBjbGFzcyBQaGFz
ZSB7IEJlZm9yZSwgQWN0aXZlLCBBZnRlciwgSWRsZSB9OwotICAgIFBoYXNlIHBoYXNlKCkgY29u
c3Q7Ci0KIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25FZmZlY3QoKTsKIAogcHJp
dmF0ZToKICAgICBlbnVtIGNsYXNzIENvbXB1dGVkRGlyZWN0aW9uIHsgRm9yd2FyZHMsIFJldmVy
c2UgfTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvdmVyYWxsUHJvZ3Jlc3MoKSBjb25z
dDsKLSAgICBBbmltYXRpb25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uIGN1cnJlbnREaXJlY3Rp
b24oKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGlyZWN0ZWRQcm9ncmVzcygp
IGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cmFuc2Zvcm1lZFByb2dyZXNzKCkg
Y29uc3Q7Ci0gICAgCiAgICAgU2Vjb25kcyBtX2RlbGF5IHsgMF9zIH07CiAgICAgU2Vjb25kcyBt
X2VuZERlbGF5IHsgMF9zIH07CiAgICAgRmlsbE1vZGUgbV9maWxsIHsgRmlsbE1vZGU6OkF1dG8g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RQ
aGFzZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFBoYXNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQwNTBmODc4NGQzNzA5MTA4NjQ4MTBkNGZmM2QwNGI1YjNjZTNlOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RQ
aGFzZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IGNsYXNzIEFuaW1hdGlvbkVmZmVjdFBoYXNlIHsgQmVmb3JlLCBBY3RpdmUsIEFmdGVyLCBJZGxl
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDY3YTZmM2Y4NWIwZDdhNTEwN2IzOWE5YThl
MjdhN2E0OTg5NDFhNzYuLjgzNzQ4ZTExY2E3YTY3ZDg3ODI3MWY1MTI3ZjA0MzZmMDE4OWViODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApA
QCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5z
aXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICAg
ICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gcHJldmlvdXNseVJ1bm5pbmdU
cmFuc2l0aW9uLT50YXJnZXRTdHlsZSgpOwogICAgICAgICAgICAgICAgIGRvdWJsZSB0cmFuc2Zv
cm1lZFByb2dyZXNzID0gMTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZWZmZWN0ID0gcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkKLSAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtZWRQcm9ncmVzcyA9IGVmZmVjdC0+aXRlcmF0aW9uUHJvZ3Jlc3MoKS52YWx1ZV9v
cih0cmFuc2Zvcm1lZFByb2dyZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRQ
cm9ncmVzcyA9IGVmZmVjdC0+Z2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcy52YWx1ZV9vcih0
cmFuc2Zvcm1lZFByb2dyZXNzKTsKICAgICAgICAgICAgICAgICBhdXRvIHJldmVyc2luZ1Nob3J0
ZW5pbmdGYWN0b3IgPSBzdGQ6Om1heChzdGQ6Om1pbigoKHRyYW5zZm9ybWVkUHJvZ3Jlc3MgKiBw
cmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPnJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IoKSkg
KyAoMSAtIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbi0+cmV2ZXJzaW5nU2hvcnRlbmluZ0Zh
Y3RvcigpKSksIDEuMCksIDAuMCk7CiAgICAgICAgICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNo
aW5nQmFja2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSA8IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2lu
Z0FuaW1hdGlvbi0+ZGVsYXkoKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25k
cyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpOwogICAgICAgICAgICAgICAgIGF1
dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24o
KSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuaAppbmRleCA4OTZlYjU1M2RjNjJlMzBjNDMwYTc3MmY1OWIz
NTY0MWI4OTQ4MjcxLi5kZmU3MTJlMWFhYWZiZDA3OGM5MjI4YmFkZjYzNDgyMjM3OGY5ZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaApAQCAtMjcs
NiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1
ZGUgIkNvbXB1dGVkRWZmZWN0VGltaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Jhc2ljRWZmZWN0VGltaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQmFzaWNFZmZlY3RUaW1pbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWVi
N2MzNTQ0YjM5ZjM3MjcxNWZlY2IyNTA0NDcyMzJkZjgxZGJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Jhc2ljRWZmZWN0VGltaW5nLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBCYXNpY0VmZmVjdFRpbWluZyB7CisgICAgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiBsb2NhbFRpbWU7CisgICAgU2Vjb25kcyBlbmRUaW1lOworICAgIFNlY29uZHMgYWN0
aXZlRHVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBhY3RpdmVUaW1lOworICAg
IEFuaW1hdGlvbkVmZmVjdFBoYXNlIHBoYXNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGlt
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaApp
bmRleCBlYjlmZTkzODQ5NjNiNWNkNDYyMDEwMDQ3MWViYzJlNzE4NWE0ZjU4Li4zYWYwYTIzMmEy
MTllOGE2OWI4M2U3ZTAyMmZkMjkzODcwY2RjZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaApAQCAtMjUsMTUgKzI1LDE4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIKICNpbmNsdWRl
ICJFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgOiBFZmZlY3RUaW1pbmcg
eworICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIHBoYXNlIHsgQW5pbWF0aW9uRWZmZWN0UGhhc2U6
OklkbGUgfTsKICAgICBkb3VibGUgZW5kVGltZTsKICAgICBkb3VibGUgYWN0aXZlRHVyYXRpb247
CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxvY2FsVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3M7CiAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHByb2dyZXNzOwogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50SXRlcmF0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRp
b24uY3BwCmluZGV4IDg3YTc1MjM1YzAwYjM5N2Y5MDdhM2I3YjQwMDUxNzYyZDM1ZGI1NzAuLjMx
ZTBhMjAyZTQ5ZGYwNTMzYzk1OTg3MDE5M2FlMDVmYjEyZTViZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtMTk4LDggKzE5
OCw4IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmlt
YXRpb25UaW1lbGluZT4mJiBuZXdUaW1lbGluZSkKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246
OmNhbmNlbCgpCiB7CiAgICAgYXV0byBjYW5jZWxhdGlvblRpbWUgPSAwX3M7Ci0gICAgaWYgKGF1
dG8gYW5pbWF0aW9uRWZmZWN0ID0gZWZmZWN0KCkpCi0gICAgICAgIGNhbmNlbGF0aW9uVGltZSA9
IGFuaW1hdGlvbkVmZmVjdC0+YWN0aXZlVGltZSgpLnZhbHVlX29yKDBfcyk7CisgICAgaWYgKGF1
dG8qIGFuaW1hdGlvbkVmZmVjdCA9IGVmZmVjdCgpKQorICAgICAgICBjYW5jZWxhdGlvblRpbWUg
PSBhbmltYXRpb25FZmZlY3QtPmdldEJhc2ljVGltaW5nKCkuYWN0aXZlVGltZS52YWx1ZV9vcigw
X3MpOwogCiAgICAgV2ViQW5pbWF0aW9uOjpjYW5jZWwoKTsKIApAQCAtMjEyLDE3ICsyMTIsMTcg
QEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6Y2FuY2VsRnJvbVN0eWxlKCkKICAgICBkaXNh
c3NvY2lhdGVGcm9tT3duaW5nRWxlbWVudCgpOwogfQogCi1BbmltYXRpb25FZmZlY3Q6OlBoYXNl
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpwaGFzZVdpdGhvdXRFZmZlY3QoKSBjb25zdAorQW5pbWF0
aW9uRWZmZWN0UGhhc2UgRGVjbGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCgp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHdlIGFjdHVhbGx5
IGhhdmUgYW4gZWZmZWN0LgogICAgIEFTU0VSVCghZWZmZWN0KCkpOwogCiAgICAgYXV0byBhbmlt
YXRpb25DdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCFhbmltYXRpb25DdXJy
ZW50VGltZSkKLSAgICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdDo6UGhhc2U6OklkbGU7Cisg
ICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3RQaGFzZTo6SWRsZTsKIAogICAgIC8vIFNpbmNl
IHdlIGRvbid0IGhhdmUgYW4gZWZmZWN0LCB0aGUgZHVyYXRpb24gd2lsbCBiZSB6ZXJvIHNvIHRo
ZSBwaGFzZSBpcyAnYmVmb3JlJyBpZiB0aGUgY3VycmVudCB0aW1lIGlzIGxlc3MgdGhhbiB6ZXJv
LgotICAgIHJldHVybiBhbmltYXRpb25DdXJyZW50VGltZS52YWx1ZSgpIDwgMF9zID8gQW5pbWF0
aW9uRWZmZWN0OjpQaGFzZTo6QmVmb3JlIDogQW5pbWF0aW9uRWZmZWN0OjpQaGFzZTo6QWZ0ZXI7
CisgICAgcmV0dXJuICphbmltYXRpb25DdXJyZW50VGltZSA8IDBfcyA/IEFuaW1hdGlvbkVmZmVj
dFBoYXNlOjpCZWZvcmUgOiBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWZ0ZXI7CiB9CiAKIHZvaWQg
RGVjbGFyYXRpdmVBbmltYXRpb246OmludmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2Vk
VGltZSkKQEAgLTIzMCwyNyArMjMwLDM4IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246Omlu
dmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2VkVGltZSkKICAgICBpZiAoIW1fb3duaW5n
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGF1dG8qIGFuaW1hdGlvbkVmZmVj
dCA9IGVmZmVjdCgpOwotCiAgICAgYXV0byBpc1BlbmRpbmcgPSBwZW5kaW5nKCk7CiAgICAgaWYg
KGlzUGVuZGluZyAmJiBtX3dhc1BlbmRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aXRlcmF0aW9uID0gYW5pbWF0aW9uRWZmZWN0ID8gYW5pbWF0aW9uRWZmZWN0LT5jdXJyZW50SXRl
cmF0aW9uKCkudmFsdWVfb3IoMCkgOiAwOwotICAgIGF1dG8gY3VycmVudFBoYXNlID0gYW5pbWF0
aW9uRWZmZWN0ID8gYW5pbWF0aW9uRWZmZWN0LT5waGFzZSgpIDogcGhhc2VXaXRob3V0RWZmZWN0
KCk7CisgICAgZG91YmxlIGl0ZXJhdGlvbjsKKyAgICBBbmltYXRpb25FZmZlY3RQaGFzZSBjdXJy
ZW50UGhhc2U7CisgICAgU2Vjb25kcyBpbnRlcnZhbFN0YXJ0OworICAgIFNlY29uZHMgaW50ZXJ2
YWxFbmQ7CiAKLSAgICBib29sIHdhc0FjdGl2ZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRp
b25FZmZlY3Q6OlBoYXNlOjpBY3RpdmU7Ci0gICAgYm9vbCB3YXNBZnRlciA9IG1fcHJldmlvdXNQ
aGFzZSA9PSBBbmltYXRpb25FZmZlY3Q6OlBoYXNlOjpBZnRlcjsKLSAgICBib29sIHdhc0JlZm9y
ZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3Q6OlBoYXNlOjpCZWZvcmU7Ci0g
ICAgYm9vbCB3YXNJZGxlID0gbV9wcmV2aW91c1BoYXNlID09IEFuaW1hdGlvbkVmZmVjdDo6UGhh
c2U6OklkbGU7CisgICAgYXV0byogYW5pbWF0aW9uRWZmZWN0ID0gZWZmZWN0KCk7CisgICAgaWYg
KGFuaW1hdGlvbkVmZmVjdCkgeworICAgICAgICBhdXRvIHRpbWluZyA9IGFuaW1hdGlvbkVmZmVj
dC0+Z2V0Q29tcHV0ZWRUaW1pbmcoKTsKKyAgICAgICAgaXRlcmF0aW9uID0gdGltaW5nLmN1cnJl
bnRJdGVyYXRpb24udmFsdWVfb3IoMCk7CisgICAgICAgIGN1cnJlbnRQaGFzZSA9IHRpbWluZy5w
aGFzZTsKKyAgICAgICAgaW50ZXJ2YWxTdGFydCA9IHN0ZDo6bWF4KDBfcywgU2Vjb25kczo6ZnJv
bU1pbGxpc2Vjb25kcyhzdGQ6Om1pbigtdGltaW5nLmRlbGF5LCB0aW1pbmcuYWN0aXZlRHVyYXRp
b24pKSk7CisgICAgICAgIGludGVydmFsRW5kID0gc3RkOjptYXgoMF9zLCBTZWNvbmRzOjpmcm9t
TWlsbGlzZWNvbmRzKHN0ZDo6bWluKHRpbWluZy5lbmRUaW1lIC0gdGltaW5nLmRlbGF5LCB0aW1p
bmcuYWN0aXZlRHVyYXRpb24pKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaXRlcmF0aW9uID0g
MDsKKyAgICAgICAgY3VycmVudFBoYXNlID0gcGhhc2VXaXRob3V0RWZmZWN0KCk7CisgICAgICAg
IGludGVydmFsU3RhcnQgPSAwX3M7CisgICAgICAgIGludGVydmFsRW5kID0gMF9zOworICAgIH0K
IAotICAgIGJvb2wgaXNBY3RpdmUgPSBjdXJyZW50UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0OjpQ
aGFzZTo6QWN0aXZlOwotICAgIGJvb2wgaXNBZnRlciA9IGN1cnJlbnRQaGFzZSA9PSBBbmltYXRp
b25FZmZlY3Q6OlBoYXNlOjpBZnRlcjsKLSAgICBib29sIGlzQmVmb3JlID0gY3VycmVudFBoYXNl
ID09IEFuaW1hdGlvbkVmZmVjdDo6UGhhc2U6OkJlZm9yZTsKLSAgICBib29sIGlzSWRsZSA9IGN1
cnJlbnRQaGFzZSA9PSBBbmltYXRpb25FZmZlY3Q6OlBoYXNlOjpJZGxlOworICAgIGJvb2wgd2Fz
QWN0aXZlID0gbV9wcmV2aW91c1BoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpBY3RpdmU7
CisgICAgYm9vbCB3YXNBZnRlciA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQ
aGFzZTo6QWZ0ZXI7CisgICAgYm9vbCB3YXNCZWZvcmUgPSBtX3ByZXZpb3VzUGhhc2UgPT0gQW5p
bWF0aW9uRWZmZWN0UGhhc2U6OkJlZm9yZTsKKyAgICBib29sIHdhc0lkbGUgPSBtX3ByZXZpb3Vz
UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGU7CiAKLSAgICBhdXRvIGludGVydmFs
U3RhcnQgPSBhbmltYXRpb25FZmZlY3QgPyBzdGQ6Om1heCgwX3MsIHN0ZDo6bWluKC1hbmltYXRp
b25FZmZlY3QtPmRlbGF5KCksIGFuaW1hdGlvbkVmZmVjdC0+YWN0aXZlRHVyYXRpb24oKSkpIDog
MF9zOwotICAgIGF1dG8gaW50ZXJ2YWxFbmQgPSBhbmltYXRpb25FZmZlY3QgPyBzdGQ6Om1heCgw
X3MsIHN0ZDo6bWluKGFuaW1hdGlvbkVmZmVjdC0+ZW5kVGltZSgpIC0gYW5pbWF0aW9uRWZmZWN0
LT5kZWxheSgpLCBhbmltYXRpb25FZmZlY3QtPmFjdGl2ZUR1cmF0aW9uKCkpKSA6IDBfczsKKyAg
ICBib29sIGlzQWN0aXZlID0gY3VycmVudFBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpB
Y3RpdmU7CisgICAgYm9vbCBpc0FmdGVyID0gY3VycmVudFBoYXNlID09IEFuaW1hdGlvbkVmZmVj
dFBoYXNlOjpBZnRlcjsKKyAgICBib29sIGlzQmVmb3JlID0gY3VycmVudFBoYXNlID09IEFuaW1h
dGlvbkVmZmVjdFBoYXNlOjpCZWZvcmU7CisgICAgYm9vbCBpc0lkbGUgPSBjdXJyZW50UGhhc2Ug
PT0gQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGU7CiAKICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9u
Pih0aGlzKSkgewogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1h
dGlvbnMtMi8jZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVj
bGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCmluZGV4IGIyN2E1NDYyYzgyNWU4NTQ5YmVmNDMxYzA1ZGMyMmFkNmEzNDIz
YjguLjA1MWRlOGY4ZDc3YzE2M2U1NjAzM2RiNTEwYWJiODYzY2FmYTk3MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgorI2lu
Y2x1ZGUgIkFuaW1hdGlvbkVmZmVjdFBoYXNlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC03NCw3ICs3NSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNhc3NvY2lh
dGVGcm9tT3duaW5nRWxlbWVudCgpOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nU3R5bGVDaGFuZ2Vz
KCkgY29uc3Q7Ci0gICAgQW5pbWF0aW9uRWZmZWN0OjpQaGFzZSBwaGFzZVdpdGhvdXRFZmZlY3Qo
KSBjb25zdDsKKyAgICBBbmltYXRpb25FZmZlY3RQaGFzZSBwaGFzZVdpdGhvdXRFZmZlY3QoKSBj
b25zdDsKICAgICB2b2lkIGVucXVldWVET01FdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBTZWNv
bmRzKTsKICAgICB2b2lkIHJlbW92ZSgpIGZpbmFsOwogCkBAIC04Niw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxBbmltYXRpb24+IG1f
YmFja2luZ0FuaW1hdGlvbjsKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNlIH07Ci0gICAg
QW5pbWF0aW9uRWZmZWN0OjpQaGFzZSBtX3ByZXZpb3VzUGhhc2UgeyBBbmltYXRpb25FZmZlY3Q6
OlBoYXNlOjpJZGxlIH07CisgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNl
IHsgQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKICAgICBkb3VibGUgbV9wcmV2aW91c0l0
ZXJhdGlvbjsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggOTVkYWY5MTIzZTUx
MDZmNzNkNDY3N2JkYWU0OGRjZjI5ODFmNzVlMy4uYmZjNTdhNGZlMWMyMmZiM2M1NTRkZDllOGFl
NzhmZDUzNWQxZTgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShS
ZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiAKICAgICB1cGRhdGVBY2NlbGVyYXRlZEFuaW1hdGlv
blN0YXRlKCk7CiAKLSAgICBhdXRvIHByb2dyZXNzID0gaXRlcmF0aW9uUHJvZ3Jlc3MoKTsKKyAg
ICBhdXRvIHByb2dyZXNzID0gZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzczsKICAgICBpZiAo
IXByb2dyZXNzKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNDIsNyArMTA0Miw3IEBAIHZvaWQg
S2V5ZnJhbWVFZmZlY3Q6OmdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiYgYW5pbWF0ZWRTdHlsCiAgICAgaWYgKCFtX3RhcmdldCB8fCAhYW5pbWF0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJvZ3Jlc3MgPSBpdGVyYXRpb25Qcm9ncmVzcygp
OworICAgIGF1dG8gcHJvZ3Jlc3MgPSBnZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzOwogICAg
IGlmICghcHJvZ3Jlc3MpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBmNjVkZjFlNTY0N2M5ZDRjOTllN2QyNWE3ZTMzMDYz
NTE0YzliYzkzLi5jNjM4MWZhNGVjMzEzNTY1OWZjNzQ4YjI4MDg1NjMwZDA4YzhiMjk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNTM4LDcgKzUzOCw3
IEBAIFNlY29uZHMgV2ViQW5pbWF0aW9uOjplZmZlY3RFbmRUaW1lKCkgY29uc3QKIHsKICAgICAv
LyBUaGUgdGFyZ2V0IGVmZmVjdCBlbmQgb2YgYW4gYW5pbWF0aW9uIGlzIGVxdWFsIHRvIHRoZSBl
bmQgdGltZSBvZiB0aGUgYW5pbWF0aW9uJ3MgdGFyZ2V0IGVmZmVjdC4KICAgICAvLyBJZiB0aGUg
YW5pbWF0aW9uIGhhcyBubyB0YXJnZXQgZWZmZWN0LCB0aGUgdGFyZ2V0IGVmZmVjdCBlbmQgaXMg
emVyby4KLSAgICByZXR1cm4gbV9lZmZlY3QgPyBtX2VmZmVjdC0+ZW5kVGltZSgpIDogMF9zOwor
ICAgIHJldHVybiBtX2VmZmVjdCA/IG1fZWZmZWN0LT5nZXRCYXNpY1RpbWluZygpLmVuZFRpbWUg
OiAwX3M7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjpjYW5jZWwoKQpAQCAtMTE3Myw4ICsxMTcz
LDEwIEBAIGJvb2wgV2ViQW5pbWF0aW9uOjpjb21wdXRlUmVsZXZhbmNlKCkKICAgICBpZiAoIW1f
ZWZmZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBhdXRvIHRpbWluZyA9IG1fZWZm
ZWN0LT5nZXRCYXNpY1RpbWluZygpOworCiAgICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBpcyBp
biBlZmZlY3QgaWYgaXRzIGFjdGl2ZSB0aW1lIGlzIG5vdCB1bnJlc29sdmVkLgotICAgIGlmICht
X2VmZmVjdC0+YWN0aXZlVGltZSgpKQorICAgIGlmICh0aW1pbmcuYWN0aXZlVGltZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBBbiBhbmltYXRpb24gZWZmZWN0IGlzIGN1cnJlbnQg
aWYgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBpcyB0cnVlOgpAQCAtMTE4NCw4
ICsxMTg2LDcgQEAgYm9vbCBXZWJBbmltYXRpb246OmNvbXB1dGVSZWxldmFuY2UoKQogICAgIC8v
IEFuIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gcGxheSBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CiAgICAgLy8gLSB0aGUgYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0
aGUgYWN0aXZlIHBoYXNlLCBhbmQKICAgICAvLyAtIHRoZSBhbmltYXRpb24gZWZmZWN0IGlzIGFz
c29jaWF0ZWQgd2l0aCBhbiBhbmltYXRpb24gdGhhdCBpcyBub3QgZmluaXNoZWQuCi0gICAgYXV0
byBwaGFzZSA9IG1fZWZmZWN0LT5waGFzZSgpOwotICAgIHJldHVybiBwaGFzZSA9PSBBbmltYXRp
b25FZmZlY3Q6OlBoYXNlOjpCZWZvcmUgfHwgKHBoYXNlID09IEFuaW1hdGlvbkVmZmVjdDo6UGhh
c2U6OkFjdGl2ZSAmJiBwbGF5U3RhdGUoKSAhPSBQbGF5U3RhdGU6OkZpbmlzaGVkKTsKKyAgICBy
ZXR1cm4gdGltaW5nLnBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpCZWZvcmUgfHwgKHRp
bWluZy5waGFzZSA9PSBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlICYmIHBsYXlTdGF0ZSgp
ICE9IFBsYXlTdGF0ZTo6RmluaXNoZWQpOwogfQogCiBTZWNvbmRzIFdlYkFuaW1hdGlvbjo6dGlt
ZVRvTmV4dFRpY2soKSBjb25zdApAQCAtMTIwMiw5ICsxMjAzLDExIEBAIFNlY29uZHMgV2ViQW5p
bWF0aW9uOjp0aW1lVG9OZXh0VGljaygpIGNvbnN0CiAgICAgLy8gQ1NTIEFuaW1hdGlvbnMgZGlz
cGF0Y2ggZXZlbnRzIGZvciBlYWNoIGl0ZXJhdGlvbiwgc28gY29tcHV0ZSB0aGUgdGltZSB1bnRp
bAogICAgIC8vIHRoZSBlbmQgb2YgdGhpcyBpdGVyYXRpb24uIEFueSBvdGhlciBhbmltYXRpb24g
b25seSBjYXJlcyBhYm91dCByZW1hbmluZyB0b3RhbCB0aW1lLgogICAgIGlmIChpc0NTU0FuaW1h
dGlvbigpKSB7CisgICAgICAgIGF1dG8qIGFuaW1hdGlvbkVmZmVjdCA9IGVmZmVjdCgpOworICAg
ICAgICBhdXRvIHRpbWluZyA9IGFuaW1hdGlvbkVmZmVjdC0+Z2V0Q29tcHV0ZWRUaW1pbmcoKTsK
ICAgICAgICAgLy8gSWYgd2UncmUgYWN0aXZlbHkgcnVubmluZywgd2UgbmVlZCB0aGUgdGltZSB1
bnRpbCB0aGUgbmV4dCBpdGVyYXRpb24uCi0gICAgICAgIGlmIChhdXRvIGl0ZXJhdGlvblByb2dy
ZXNzID0gZWZmZWN0KCktPnNpbXBsZUl0ZXJhdGlvblByb2dyZXNzKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZWZmZWN0KCktPml0ZXJhdGlvbkR1cmF0aW9uKCkgKiAoMSAtIGl0ZXJhdGlvblByb2dy
ZXNzLnZhbHVlKCkpOworICAgICAgICBpZiAoYXV0byBpdGVyYXRpb25Qcm9ncmVzcyA9IHRpbWlu
Zy5zaW1wbGVJdGVyYXRpb25Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25F
ZmZlY3QtPml0ZXJhdGlvbkR1cmF0aW9uKCkgKiAoMSAtICppdGVyYXRpb25Qcm9ncmVzcyk7CiAK
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlJ3JlIHByb2JhYmx5IGluIHRoZSBiZWZvcmUgcGhhc2Ug
d2FpdGluZyB0byByZWFjaCBvdXIgc3RhcnQgdGltZS4KICAgICAgICAgaWYgKGF1dG8gYW5pbWF0
aW9uQ3VycmVudFRpbWUgPSBjdXJyZW50VGltZSgpKSB7CkBAIC0xMjE0LDExICsxMjE3LDExIEBA
IFNlY29uZHMgV2ViQW5pbWF0aW9uOjp0aW1lVG9OZXh0VGljaygpIGNvbnN0CiAgICAgICAgICAg
ICBhdXRvIGxvY2FsVGltZSA9IGFuaW1hdGlvbkN1cnJlbnRUaW1lLnZhbHVlKCk7CiAgICAgICAg
ICAgICBpZiAobG9jYWxUaW1lIDwgMF9zKQogICAgICAgICAgICAgICAgIHJldHVybiAtbG9jYWxU
aW1lOwotICAgICAgICAgICAgaWYgKGxvY2FsVGltZSA8IGVmZmVjdCgpLT5kZWxheSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBlZmZlY3QoKS0+ZGVsYXkoKSAtIGxvY2FsVGltZTsKKyAgICAg
ICAgICAgIGlmIChsb2NhbFRpbWUgPCBhbmltYXRpb25FZmZlY3QtPmRlbGF5KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkVmZmVjdC0+ZGVsYXkoKSAtIGxvY2FsVGltZTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXV0byBhbmltYXRpb25DdXJyZW50VGltZSA9IGN1cnJl
bnRUaW1lKCkpCi0gICAgICAgIHJldHVybiBlZmZlY3QoKS0+ZW5kVGltZSgpIC0gYW5pbWF0aW9u
Q3VycmVudFRpbWUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGVmZmVjdCgpLT5nZXRCYXNpY1Rp
bWluZygpLmVuZFRpbWUgLSAqYW5pbWF0aW9uQ3VycmVudFRpbWU7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gU2Vjb25kczo6aW5maW5pdHkoKTsK
</data>
<flag name="review"
          id="374551"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>