<?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>222305</bug_id>
          
          <creation_ts>2021-02-23 02:58:43 -0800</creation_ts>
          <short_desc>Timeout calculations are error-prone for compound IPC operations</short_desc>
          <delta_ts>2021-03-01 05:27:41 -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>WebKit2</component>
          <version>Other</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>
          
          <blocked>220974</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732477</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-23 02:58:43 -0800</bug_when>
    <thetext>Timeout calculations are error-prone for compound IPC operations

Consider a use-case where a top-level IPC operation has a logical timeout value.
If this operation is implemented as composition of sends, waits and semaphore waits, then it&apos;s cumbersome to pass correct timeout values for each of the calls.

Clients should be able to pass timeout in seconds relative to current time (possible today)
Clients should be able to pass timeout as absolute point of time (not possible today)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732483</commentid>
    <comment_count>1</comment_count>
      <attachid>421299</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-23 03:35:10 -0800</bug_when>
    <thetext>Created attachment 421299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732628</commentid>
    <comment_count>2</comment_count>
      <attachid>421336</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-23 11:29:16 -0800</bug_when>
    <thetext>Created attachment 421336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733272</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-25 02:47:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/74737421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733582</commentid>
    <comment_count>4</comment_count>
      <attachid>421336</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-25 16:18:11 -0800</bug_when>
    <thetext>Comment on attachment 421336
Patch

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

r=me

&gt; Source/WebKit/Platform/IPC/Timeout.h:47
&gt; +    explicit constexpr Timeout(MonotonicTime absoluteTimeout)
&gt; +        : m_absoluteTimeout(absoluteTimeout)
&gt; +    {
&gt; +    }

Is this constructor ever used? I looked but didn&apos;t see a use. It feels a little weird to construct a timeout from an absolute time, since a timeout is a time point relative to a starting point; maybe we should not encourage it.

&gt; Source/WebKit/Platform/IPC/Timeout.h:48
&gt; +    static constexpr Timeout infinity() { return { }; }

I think we should either make the default constructor an infinite timeout, or remove the default constructor and use infinity() everywhere. Having two ways to make an infinite timeout will produce confusing code in the long run. It looks like you preferred infinity() in this patch, so why don&apos;t we remove the default constructor.

&gt; Source/WebKit/Platform/IPC/Timeout.h:50
&gt; +    operator Seconds() const { return std::max((m_absoluteTimeout - MonotonicTime::now()), 0_s ); }

Let&apos;s remove this operator, or give it an explicit name like &quot;remainingSeconds()&quot; or &quot;secondsUntilDeadline()&quot;.

When an automatic type conversion also changes the meaning of the data, it reduces type safety.

In this case, the change in meaning is also ambiguous because a timeout could tell you (a) how many seconds it was originally scheduled for (b) how many seconds it has left or (c) a relative to the epoch or (d) b relative to the epoch.

&gt; Source/WebKit/Platform/IPC/Timeout.h:52
&gt; +    constexpr operator MonotonicTime() const { return m_absoluteTimeout; }
&gt; +    operator TimeWithDynamicClockType() const { return m_absoluteTimeout; }

Can we replace these type conversions with a &quot;MonotonicTime deadline() const { return m_abosluteTimeout; }&quot;? Again, better to be explicit about what time value we&apos;re retrieving.

&gt; Source/WebKit/Platform/IPC/Timeout.h:53
&gt; +    bool hasPassed() const { return MonotonicTime::now() &gt;= m_absoluteTimeout; }

I would call this didTimeOut().

&gt; Source/WebKit/Platform/IPC/Timeout.h:55
&gt; +    MonotonicTime m_absoluteTimeout;

I would call this m_deadline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734350</commentid>
    <comment_count>5</comment_count>
      <attachid>421799</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-01 01:46:13 -0800</bug_when>
    <thetext>Created attachment 421799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734382</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-01 05:27:38 -0800</bug_when>
    <thetext>Committed r273646: &lt;https://commits.webkit.org/r273646&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421799.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421299</attachid>
            <date>2021-02-23 03:35:10 -0800</date>
            <delta_ts>2021-02-23 11:29:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222305-20210223133508.patch</filename>
            <type>text/plain</type>
            <size>24970</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2NjA2MzliN2ZjYWIzNjg3
NGU4NWI4ODk4YTQwYTY5MjQxMGRiODAuLjkyNTM0ZWMzMDRmYTc2OTQ5NTE3NDYyOWZmNzZlZjhk
ODhmZmM5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDItMjMgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBUaW1lb3V0IGNhbGN1bGF0
aW9ucyBhcmUgZXJyb3ItcHJvbmUgZm9yIGNvbXBvdW5kIElQQyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVGltZW91dCBjbGFz
cyB0byBob2xkIHRoZSB0aW1lb3V0IHZhbHVlIGluIGJsb2NraW5nIGZ1bmN0aW9ucworICAgICAg
ICBvZiBJUEM6Oi4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBwYXNzIGFic29s
dXRlIHBvaW50cyBvZiB0aW1lIGFzIHRoZSB0aW1lb3V0CisgICAgICAgIHZhbHVlLCBhcyB3ZWxs
IGFzIHByZXNlcnZpbmcgdGhlIGFiaWxpdHkgdG8gcGFzcyBwb2ludHMgb2YgdGltZSByZWxhdGl2
ZQorICAgICAgICB0byB0aGUgaW52b2NhdGlvbi4KKworICAgICAgICBDYWxsIHRoZSBjb25jZXB0
IFRpbWVvdXQgaW5zdGVhZCBvZiBUaW1lT3V0IHNpbmNlIHdvcmQgJ3RpbWVvdXQnIGlzIGFuCisg
ICAgICAgIEVuZ2xpc2ggd29yZCBhbmQgcHJlZmVyYWJsZSB3aGVuIHVzZWQgYXMgYSBub3VuIGFj
Y29yZGluZyB0byBlbGwgc3RhY2tvdmVyZmxvdy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGEg
cmVmYWN0b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFz
eW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvSVBDU2VtYXBob3JlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVz
IG9mIGNvbXBvdW5kIHVzZS1jYXNlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1RpbWVvdXQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgu
CisgICAgICAgIChJUEM6OlRpbWVvdXQ6OlRpbWVvdXQpOgorICAgICAgICAoSVBDOjpUaW1lb3V0
OjppbmZpbml0eSk6CisgICAgICAgIChJUEM6OlRpbWVvdXQ6Om9wZXJhdG9yIFNlY29uZHMgY29u
c3QpOgorICAgICAgICAoSVBDOjpUaW1lb3V0OjpoYXNQYXNzZWQgY29uc3QpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcDoKKyAgICAgICAgKElQ
Qzo6U2VtYXBob3JlOjp3YWl0Rm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZFN5bmMpOgorCiAyMDIxLTAyLTIzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjczMjA0KTogd2Via2l0cHkgdGVzdHMgZmFpbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCBmODhiMWY0Mzhk
MWY1ZWVhNWMzNDY3MjA1MmNhZTlkYjdkMTJhZDYxLi5jYjdhN2IzODEyMzgzYWRkYmY5NWI0ZTA3
YTA5ZTViN2M0ZjZiNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0CiAgICAgICAg
IGF1dG8gd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVyLT5kZXN0aW5hdGlvbklE
KCksIHN5bmNSZXF1ZXN0SUQpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+c2V0RnVsbHlTeW5j
aHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT53cmFwRm9y
VGVzdGluZyhXVEZNb3ZlKGVuY29kZXIpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJv
b2w+KHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKHdyYXBwZWRNZXNzYWdl
KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgeyB9KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVz
c2FnZSksIFRpbWVvdXQ6OmluZmluaXR5KCksIHsgfSkpOwogICAgIH0KIAogICAgIGlmIChzZW5k
T3B0aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpCkBAIC00ODUsNyArNDg1LDcgQEAgU2Vjb25kcyBDb25uZWN0aW9uOjp0
aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyhTZWNvbmRzIHRpbWVvdXQp
IGMKICAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBTZWNvbmRzOjppbmZp
bml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rp
b246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0
Rm9yT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9y
TWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
VGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCkBAIC02MTYsNyArNjE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBz
dGQKICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25u
ZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMpCiB7CiAgICAgdGltZW91dCA9IHRpbWVvdXRSZXNwZWN0aW5nSWdub3JlVGlt
ZW91dHNGb3JUZXN0aW5nKHRpbWVvdXQpOwogICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1l
ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIxYmZl
OTNiZGMuLmMyZTFjNGE0YjNhZTk3OWYzY2NjOWE3M2VkNjU2ODA0Mzc1MWM2OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlRpbWVvdXQuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNDAsOSArMjQxLDkgQEAgcHVibGljOgogICAgIC8v
IFN5bmMgc2VuZGVycyBzaG91bGQgY2hlY2sgdGhlIFNlbmRTeW5jUmVzdWx0IGZvciB0cnVlL2Zh
bHNlIGluIGNhc2UgdGhleSBuZWVkIHRvIGtub3cgaWYgdGhlIHJlc3VsdCB3YXMgcmVhbGx5IHJl
Y2VpdmVkLgogICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgaG9sZCBvbiB0byB0aGUgU2VuZFN5
bmNSZXN1bHQgaW4gY2FzZSB0aGV5IHJlZmVyZW5jZSB0aGUgY29udGVudHMgb2YgdGhlIHJlcGx5
IHZpYSBEYXRhUmVmZXJlcmVuY2UgLyBBcnJheVJlZmVyZW5jZS4KICAgICB1c2luZyBTZW5kU3lu
Y1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBi
b29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25z
ID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gYm9v
bCB3YWl0Rm9yQXN5bmNDYWxsYmFja0FuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgY2Fs
bGJhY2tJRCwgU2Vjb25kcyB0aW1lb3V0KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCA9
IFRpbWVvdXQ6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7
IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBib29sIHdh
aXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBjYWxsYmFj
a0lELCBUaW1lb3V0KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KIAogICAgIC8vIFRocmVhZC1zYWZl
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CkBAIC0y
NjAsMjEgKzI2MSwyMSBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWluIHRocmVhZCBvbmx5LgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50
aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1l
b3V0ID0gVGltZW91dDo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwg
dGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAgICAgCiAgICAgLy8gTWFpbiB0aHJl
YWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJvb2wg
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucyA9IHsgfSkKKyAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25T
ZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBy
ZXR1cm4gd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgfQogCiAgICAgYm9vbCBzZW5k
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucyk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNz
YWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01l
c3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25z
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgVGltZW91dCwgT3B0aW9u
U2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5bmNS
ZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29w
KCk7CkBAIC0zMjAsOSArMzIxLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbmNvbWluZ01l
c3NhZ2VzVGhyb3R0bGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5jb21pbmdNZXNz
YWdlc1Rocm90dGxlcjsgfQogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0
Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgVGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElE
LCBNZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4K
ICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
KTsKQEAgLTU0OSw3ICs1NTAsNyBAQCB2b2lkIG1vdmVUdXBsZShzdGQ6OnR1cGxlPEEuLi4+JiYg
YSwgc3RkOjp0dXBsZTxCLi4uPiYgYikKICAgICBUdXBsZU1vdmVyPHNpemVvZi4uLihBKSwgc3Rk
Ojp0dXBsZTxBLi4uPiwgc3RkOjp0dXBsZTxCLi4uPj46Om1vdmUoV1RGTW92ZShhKSwgYik7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENvbm5l
Y3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGlt
ZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAg
Q09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVzc2FnZUV4cGVjdGVkKTsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NzksNyArNTgwLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UKICAgICByZXR1cm4gcmVwbHlEZWNvZGVyOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBD
b25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKQEAgLTU5MSw3ICs1
OTIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlcwogICAgIHJldHVybiB0cnVlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBc3luY0NhbGxiYWNr
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBc3lu
Y0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBU
aW1lb3V0IHRpbWVvdXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2Uo
VDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHsgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCmluZGV4IDA5ODNhYzVj
Njg0ODA3NmZmMWU1MDVhN2YxOTlkMjU4ZDQ1YzJjODEuLjg4M2JiMjZiZTdkYjI4ZTExY2NlMGFl
OWI4MzFmOGQxZGYwMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0lQQ1NlbWFwaG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFw
aG9yZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGlt
ZW91dC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC01Niw3ICs1Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2lnbmFsKCk7CiAgICAgdm9pZCB3YWl0KCk7Ci0gICAgdm9pZCB3YWl0
Rm9yKFNlY29uZHMpOworICAgIHZvaWQgd2FpdEZvcihUaW1lb3V0KTsKICAgICBNYWNoU2VuZFJp
Z2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0OwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBtX3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVf
TlVMTDsgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aAppbmRleCBlNTRjMDA1ZGI3NjU2OTM3YTlmYzdkY2MxZmRhZmJlNTEyODA1OGM2Li5mMGFiYTUx
NDFhYmY4Y2Y4NGZiMjU5MDU2NDI1YmY3ZTdiYTI2ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25k
czo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMg
PSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIFRpbWVvdXQgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCks
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIp
OwogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgVGlt
ZW91dCB0aW1lb3V0ID0gVGltZW91dDo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
Y29ubmVjdGlvbi0+c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRl
c3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBUPgot
ICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCA9IFRpbWVvdXQ6OmluZmluaXR5KCksIE9wdGlvblNl
dDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAg
cmV0dXJuIHNlbmRTeW5jPFU+KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmgKaW5kZXggNjkzNmI5MDI2NWFkY2NiODQ0MjIxYTYyMGQ0NjdhMTBiN2RmMDRj
YS4uM2Y4MDFhMjhhZmZhOGEzMzVlMDYzYTg0MmE0YTQyZjcwY2VkYWRhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAt
NTQsMTEgKzU0LDExIEBAIHB1YmxpYzoKICAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJl
YW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIHZvaWQgc2V0V2FrZVVwU2VtYXBo
b3JlKElQQzo6U2VtYXBob3JlJiYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFRpbWVvdXQpOwogCiAgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
ICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7
CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCk7CiAKIHBy
aXZhdGU6CiAgICAgc3RydWN0IFNwYW4gewpAQCAtNjcsMTAgKzY3LDEwIEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
cjo6bWVzc2FnZUFsaWdubWVudDsKLSAgICBib29sIHRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVk
ZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBi
b29sIHRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwg
VGltZW91dCk7CiAgICAgdm9pZCBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYp
OwogCi0gICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQp
OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoVGltZW91dCk7CiAgICAgZW51bSBjbGFz
cyBXYWtlVXBSZWNlaXZlciA6IGJvb2wgewogICAgICAgICBObywKICAgICAgICAgWWVzCkBAIC0x
MDAsMTMgKzEwMCwxMiBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCitib29s
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZp
ZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0KQogewogICAgIHN0YXRpY19hc3Nl
cnQoIVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKLSAgICBNb25vdG9uaWNUaW1lIGFi
c29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKLSAgICBpZiAo
IXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBh
YnNvbHV0ZVRpbWVvdXQpKQorICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChk
ZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGF1dG8g
c3BhbiA9IHRyeUFjcXVpcmUodGltZW91dCk7CiAgICAgaWYgKCFzcGFuKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgewpAQCAtMTI1LDEzICsxMjQsMTIgQEAgYm9vbCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLVN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlm
aWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK1N0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KFQ6
OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7Ci0gICAgTW9ub3RvbmljVGltZSBhYnNv
bHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7Ci0gICAgaWYgKCF0
cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJz
b2x1dGVUaW1lb3V0KSkKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAgYXV0byBzcGFu
ID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAgICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kIHRocm91Z2ggc3RyZWFtLgpAQCAtMTQy
LDExICsxNDAsMTEgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3MKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1pbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGlu
YXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgYWJz
b2x1dGVUaW1lb3V0KQoraW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2Vu
ZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRp
bWVvdXQpCiB7CiAgICAgaWYgKGRlc3RpbmF0aW9uSUQgPT0gbV9jdXJyZW50RGVzdGluYXRpb25J
RCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNv
bHV0ZVRpbWVvdXQpOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUodGltZW91dCk7CiAgICAg
aWYgKCFzcGFuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklELCBzcGFu
LT5kYXRhLCBzcGFuLT5zaXplIH07CkBAIC0xNjgsMTkgKzE2NiwxOCBAQCBpbmxpbmUgdm9pZCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFu
JiYgc3BhbikKICAgICBhdXRvIHJlc3VsdCA9IHJlbGVhc2UoZW5jb2Rlci5zaXplKCkpOwogICAg
IFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOwogfQotaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoTW9u
b3RvbmljVGltZSB0aW1lb3V0KQoraW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoVGltZW91dCB0aW1l
b3V0KQogewogICAgIGZvciAoOzspIHsKICAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xh
bXBlZExpbWl0KHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3F1aXJlKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZz
ZXQsIHNlbmRlckxpbWl0KTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3Nh
Z2VTaXplKSB7Ci0gICAgICAgICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwot
ICAgICAgICAgICAgaWYgKG5vdyA+PSB0aW1lb3V0KQorICAgICAgICAgICAgaWYgKHRpbWVvdXQu
aGFzUGFzc2VkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNlaXZlck9mZnNl
dCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgICAgICAgICAgaWYgKHNl
bmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQotICAgICAgICAgICAgICAgIG1fYnVmZmVyLnNl
bmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQgLSBub3cpOworICAgICAgICAgICAg
ICAgIG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQpOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGlt
aXQob2xkU2VuZGVyTGltaXQpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9UaW1lb3V0LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9UaW1l
b3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2NlOGM0ZmUwMmUyOWM4OTIxNTE0NzYzYWM2NjFlYWIwZmRhZDVi
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1RpbWVvdXQu
aApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKworbmFtZXNwYWNl
IElQQyB7CisKK2NsYXNzIFRpbWVvdXQgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBUaW1lb3V0
KCkKKyAgICAgICAgOiBtX2Fic29sdXRlVGltZW91dChNb25vdG9uaWNUaW1lOjppbmZpbml0eSgp
KQorICAgIHsKKyAgICB9CisgICAgVGltZW91dChTZWNvbmRzIHRpbWVEZWx0YSkKKyAgICAgICAg
OiBtX2Fic29sdXRlVGltZW91dChNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVEZWx0YSkKKyAg
ICB7CisgICAgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBUaW1lb3V0KE1vbm90b25pY1RpbWUg
YWJzb2x1dGVUaW1lb3V0KQorICAgICAgICA6IG1fYWJzb2x1dGVUaW1lb3V0KGFic29sdXRlVGlt
ZW91dCkKKyAgICB7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgVGltZW91dCBpbmZpbml0
eSgpIHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyBUaW1lb3V0IG5vdygpIHsgcmV0dXJuIDBf
czsgfQorICAgIG9wZXJhdG9yIFNlY29uZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heCgobV9h
YnNvbHV0ZVRpbWVvdXQgLSBNb25vdG9uaWNUaW1lOjpub3coKSksIDBfcyApOyB9CisgICAgYm9v
bCBoYXNQYXNzZWQoKSBjb25zdCB7IHJldHVybiBNb25vdG9uaWNUaW1lOjpub3coKSA+PSBtX2Fi
c29sdXRlVGltZW91dDsgfQorcHJpdmF0ZToKKyAgICBNb25vdG9uaWNUaW1lIG1fYWJzb2x1dGVU
aW1lb3V0OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
ZGFyd2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcAppbmRleCAyODc1YzgxZDQyYzRmYzU4ZTlk
ZWIzNzNmNWMwZGM2MDY5NmVhNmM1Li45YmNhZTU2YjE4ZmU4YmE4ZGQyN2ZlNjc2ZjUxZjE1OTVk
MDI1MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vSVBD
U2VtYXBob3JlRGFyd2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3
aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcApAQCAtNzgsMTAgKzc4LDExIEBAIHZvaWQgU2VtYXBo
b3JlOjp3YWl0KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7
CiB9CiAKLXZvaWQgU2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkKK3ZvaWQgU2Vt
YXBob3JlOjp3YWl0Rm9yKFRpbWVvdXQgdGltZW91dCkKIHsKLSAgICBhdXRvIHNlY29uZHMgPSB0
aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV90
aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+
KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9T
RUMpIH0pOworICAgIFNlY29uZHMgcmVtYWluaW5nID0gdGltZW91dDsKKyAgICBhdXRvIHNlY29u
ZHMgPSByZW1haW5pbmcuc2Vjb25kc0FzPHVuc2lnbmVkPigpOworICAgIGF1dG8gcmV0ID0gc2Vt
YXBob3JlX3RpbWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9j
a19yZXNfdD4ocmVtYWluaW5nLm5hbm9zZWNvbmRzQXM8dWludDY0X3Q+KCkgLSBzZWNvbmRzICog
TlNFQ19QRVJfU0VDKSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VD
Q0VTUyB8fCByZXQgPT0gS0VSTl9PUEVSQVRJT05fVElNRURfT1VUKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA3MjJlZWJh
ZDE0OWE1YTVmMjQ3YzNlZjRmYjQxMjI5ODcxZTQzNTE1Li45NzFlY2RhZWFlYTZiNDNiYzQzOTFi
ZjkxOTI0ZWUzYWM2NDNiMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KTsKICAg
ICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5j
T3B0aW9ucyA9IHsgfSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU2VuZFN5bmNSZXN1bHQg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIElQQzo6VGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB1aW50NjRfdCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
LCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
ICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBJ
UEM6OlRpbWVvdXQgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBzZW5kU3luYzxU
PihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KQEAgLTE2OSw3ICsxNjksNyBA
QCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKLUF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6U2VuZFN5bmNSZXN1bHQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3lu
Y1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBl
bmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6OlRpbWVv
dXQgdGltZW91dCwgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cykKIHsKICAgICBDT01QSUxFX0FTU0VSVChVOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421336</attachid>
            <date>2021-02-23 11:29:16 -0800</date>
            <delta_ts>2021-03-01 01:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222305-20210223212914.patch</filename>
            <type>text/plain</type>
            <size>27723</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2NjA2MzliN2ZjYWIzNjg3
NGU4NWI4ODk4YTQwYTY5MjQxMGRiODAuLjkyNTM0ZWMzMDRmYTc2OTQ5NTE3NDYyOWZmNzZlZjhk
ODhmZmM5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDItMjMgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBUaW1lb3V0IGNhbGN1bGF0
aW9ucyBhcmUgZXJyb3ItcHJvbmUgZm9yIGNvbXBvdW5kIElQQyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVGltZW91dCBjbGFz
cyB0byBob2xkIHRoZSB0aW1lb3V0IHZhbHVlIGluIGJsb2NraW5nIGZ1bmN0aW9ucworICAgICAg
ICBvZiBJUEM6Oi4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBwYXNzIGFic29s
dXRlIHBvaW50cyBvZiB0aW1lIGFzIHRoZSB0aW1lb3V0CisgICAgICAgIHZhbHVlLCBhcyB3ZWxs
IGFzIHByZXNlcnZpbmcgdGhlIGFiaWxpdHkgdG8gcGFzcyBwb2ludHMgb2YgdGltZSByZWxhdGl2
ZQorICAgICAgICB0byB0aGUgaW52b2NhdGlvbi4KKworICAgICAgICBDYWxsIHRoZSBjb25jZXB0
IFRpbWVvdXQgaW5zdGVhZCBvZiBUaW1lT3V0IHNpbmNlIHdvcmQgJ3RpbWVvdXQnIGlzIGFuCisg
ICAgICAgIEVuZ2xpc2ggd29yZCBhbmQgcHJlZmVyYWJsZSB3aGVuIHVzZWQgYXMgYSBub3VuIGFj
Y29yZGluZyB0byBlbGwgc3RhY2tvdmVyZmxvdy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGEg
cmVmYWN0b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFz
eW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvSVBDU2VtYXBob3JlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVz
IG9mIGNvbXBvdW5kIHVzZS1jYXNlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1RpbWVvdXQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgu
CisgICAgICAgIChJUEM6OlRpbWVvdXQ6OlRpbWVvdXQpOgorICAgICAgICAoSVBDOjpUaW1lb3V0
OjppbmZpbml0eSk6CisgICAgICAgIChJUEM6OlRpbWVvdXQ6Om9wZXJhdG9yIFNlY29uZHMgY29u
c3QpOgorICAgICAgICAoSVBDOjpUaW1lb3V0OjpoYXNQYXNzZWQgY29uc3QpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcDoKKyAgICAgICAgKElQ
Qzo6U2VtYXBob3JlOjp3YWl0Rm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZFN5bmMpOgorCiAyMDIxLTAyLTIzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjczMjA0KTogd2Via2l0cHkgdGVzdHMgZmFpbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCBmODhiMWY0Mzhk
MWY1ZWVhNWMzNDY3MjA1MmNhZTlkYjdkMTJhZDYxLi45MWQ1MzI5NTM0MmU4YzQ3ZjQ3Y2I0NTQ4
YTEzMTAzODc5NWQ2ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcApAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2FpdEZvclN5bmNSZXBs
eVNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9CiAKLSAgICBib29sIHdhaXQoVGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlIGFic29sdXRlVGltZSkKKyAgICBib29sIHdhaXQoVGltZW91dCB0aW1lb3V0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2FpdEZvclN5bmNSZXBseVNlbWFwaG9yZS53YWl0
VW50aWwoYWJzb2x1dGVUaW1lKTsKKyAgICAgICAgcmV0dXJuIG1fd2FpdEZvclN5bmNSZXBseVNl
bWFwaG9yZS53YWl0VW50aWwodGltZW91dCk7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoaXMgbWVzc2FnZSB3aWxsIGJlIGhhbmRsZWQgb24gYSBjbGllbnQgdGhyZWFkIHRoYXQg
aXMgY3VycmVudGx5CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PFNlbmRPcHQK
ICAgICAgICAgYXV0byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihN
ZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZXItPmRlc3Rp
bmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5zZXRG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2Ut
PndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOwotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUod3JhcHBl
ZE1lc3NhZ2UpLCBTZWNvbmRzOjppbmZpbml0eSgpLCB7IH0pKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKHdy
YXBwZWRNZXNzYWdlKSwgVGltZW91dDo6aW5maW5pdHkoKSwgeyB9KSk7CiAgICAgfQogCiAgICAg
aWYgKHNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSkKQEAgLTQ4MCwxMiArNDgwLDEyIEBAIGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKICAg
ICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKIH0KIAotU2Vjb25k
cyBDb25uZWN0aW9uOjp0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyhT
ZWNvbmRzIHRpbWVvdXQpIGNvbnN0CitUaW1lb3V0IENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0
aW5nSWdub3JlVGltZW91dHNGb3JUZXN0aW5nKFRpbWVvdXQgdGltZW91dCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBTZWNvbmRzOjppbmZpbml0eSgp
IDogdGltZW91dDsKKyAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBUaW1l
b3V0OjppbmZpbml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0
aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9u
Ojp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZv
ck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAgLTUzOSw4ICs1MzksNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUsIHVpbgogICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gJndhaXRpbmdG
b3JNZXNzYWdlOwogICAgIH0KIAotICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0g
TW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwotCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0
IHRvIGJlIHNldC4KICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAvLyBIYW5kbGUgYW55IG1l
c3NhZ2VzIHRoYXQgYXJlIGJsb2NrZWQgb24gYSByZXNwb25zZSBmcm9tIHVzLgpAQCAtNTU1LDcg
KzU1Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBOb3cgd2Ugd2FpdC4KLSAgICAgICAgYm9vbCBkaWRUaW1lb3V0ID0gIW1fd2FpdEZvck1lc3Nh
Z2VDb25kaXRpb24ud2FpdFVudGlsKGxvY2ssIGFic29sdXRlVGltZW91dCk7CisgICAgICAgIGJv
b2wgZGlkVGltZW91dCA9ICFtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLndhaXRVbnRpbChsb2Nr
LCB0aW1lb3V0KTsKICAgICAgICAgLy8gV2UgdGltZWQgb3V0LCBsb3N0IG91ciBjb25uZWN0aW9u
LCBvciBhIHN5bmMgbWVzc2FnZSBjYW1lIGluIHdpdGggSW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzLCBzbyBzdG9wIHdhaXRpbmcuCiAgICAgICAgIGlmIChkaWRUaW1lb3V0IHx8
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VXYWl0aW5nSW50ZXJydXB0ZWQpIHsKICAgICAg
ICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UgPSBudWxscHRyOwpAQCAtNTY2LDcgKzU2NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCitzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBUaW1lb3V0
IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTYxNiwxMCArNjE0LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBzdGQKICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgdGltZW91dCA9IHRpbWVvdXRS
ZXNwZWN0aW5nSWdub3JlVGltZW91dHNGb3JUZXN0aW5nKHRpbWVvdXQpOwotICAgIE1vbm90b25p
Y1RpbWUgYWJzb2x1dGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwogCiAg
ICAgd2lsbFNlbmRTeW5jTWVzc2FnZShzZW5kU3luY09wdGlvbnMpOwogICAgIApAQCAtNjU3LDcg
KzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lCiAgICAgICAgIC8vIFdlIGRpZG4ndCBm
aW5kIGEgc3luYyByZXBseSB5ZXQsIGtlZXAgd2FpdGluZy4KICAgICAgICAgLy8gVGhpcyBhbGxv
d3MgdGhlIFdlYlByb2Nlc3MgdG8gc3RpbGwgc2VydmUgY2xpZW50cyB3aGlsZSB3YWl0aW5nIGZv
ciB0aGUgbWVzc2FnZSB0byByZXR1cm4uCiAgICAgICAgIC8vIE5vdGFibHksIGl0IGNhbiBjb250
aW51ZSB0byBwcm9jZXNzIGFjY2Vzc2liaWxpdHkgcmVxdWVzdHMsIHdoaWNoIGFyZSBvbiB0aGUg
bWFpbiB0aHJlYWQuCi0gICAgICAgIHRpbWVkT3V0ID0gIVN5bmNNZXNzYWdlU3RhdGU6OnNpbmds
ZXRvbigpLndhaXQoYWJzb2x1dGVUaW1lKTsKKyAgICAgICAgdGltZWRPdXQgPSAhU3luY01lc3Nh
Z2VTdGF0ZTo6c2luZ2xldG9uKCkud2FpdCh0aW1lb3V0KTsKICAgICB9CiAKICNpZiBPUyhEQVJX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZmU5Y2EzMTg2
MDZmZGVkYzYxZDIxZDA3ZGYwZjhhYjFiZmU5M2JkYy4uMGQ4NWQ4ZDdjZThmNGQxNzVkNGEwNDM0
Mjc5YzE1YjBlMzhmYzFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiVGltZW91dC5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI0MCw5
ICsyNDEsOSBAQCBwdWJsaWM6CiAgICAgLy8gU3luYyBzZW5kZXJzIHNob3VsZCBjaGVjayB0aGUg
U2VuZFN5bmNSZXN1bHQgZm9yIHRydWUvZmFsc2UgaW4gY2FzZSB0aGV5IG5lZWQgdG8ga25vdyBp
ZiB0aGUgcmVzdWx0IHdhcyByZWFsbHkgcmVjZWl2ZWQuCiAgICAgLy8gU3luYyBzZW5kZXJzIHNo
b3VsZCBob2xkIG9uIHRvIHRoZSBTZW5kU3luY1Jlc3VsdCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNl
IHRoZSBjb250ZW50cyBvZiB0aGUgcmVwbHkgdmlhIERhdGFSZWZlcmVyZW5jZSAvIEFycmF5UmVm
ZXJlbmNlLgogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHku
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWU+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5Lgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBib29sIHdhaXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBjYWxsYmFja0lELCBTZWNvbmRzIHRpbWVvdXQpOyAvLyBN
YWluIHRocmVhZCBvbmx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0ID0gVGltZW91dDo6aW5maW5pdHkoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBv
bmx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9y
T3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7IC8vIE1haW4gdGhyZWFkIG9ubHkuCisgICAg
dGVtcGxhdGU8dHlwZW5hbWU+IGJvb2wgd2FpdEZvckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFRpbWVvdXQpOyAvLyBNYWluIHRocmVhZCBv
bmx5LgogCiAgICAgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQywgdHlwZW5hbWUgVT4KQEAgLTI2MCwyMSArMjYxLDIxIEBAIHB1YmxpYzoKIAogICAg
IC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KLSAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQgPSBUaW1lb3V0OjppbmZpbml0eSgpLCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAg
IH0KICAgICAKICAgICAvLyBNYWluIHRocmVhZCBvbmx5LgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci0gICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseShP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9u
U2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAgIGJvb2wgd2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklE
LCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9u
cyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxUPihkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25z
KTsKICAgICB9CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRy
PEVuY29kZXI+LCBUaW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyk7CiAgICAgYm9vbCBzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7
CiAKICAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKQEAgLTMyMCw5ICszMjEsOSBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9CiAgICAgCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9u
Pik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9w
dGlvbj4pOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQs
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBU
aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIC8vIENhbGxlZCBvbiB0
aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlLgogICAgIHZvaWQgcHJvY2Vzc0luY29taW5nTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwpAQCAtMzQ5LDcgKzM1MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsU2VuZFN5bmNNZXNzYWdlKE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4p
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNSZXBseShPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
KTsKIAotICAgIFNlY29uZHMgdGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1lb3V0c0ZvclRlc3Rp
bmcoU2Vjb25kcykgY29uc3Q7CisgICAgVGltZW91dCB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRp
bWVvdXRzRm9yVGVzdGluZyhUaW1lb3V0KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPik7CkBAIC01
NDksNyArNTUwLDcgQEAgdm9pZCBtb3ZlVHVwbGUoc3RkOjp0dXBsZTxBLi4uPiYmIGEsIHN0ZDo6
dHVwbGU8Qi4uLj4mIGIpCiAgICAgVHVwbGVNb3ZlcjxzaXplb2YuLi4oQSksIHN0ZDo6dHVwbGU8
QS4uLj4sIHN0ZDo6dHVwbGU8Qi4uLj4+Ojptb3ZlKFdURk1vdmUoYSksIGIpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVf
QVNTRVJUKFQ6OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTc5LDcgKzU4MCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5jKFQm
JiBtZXNzYWdlCiAgICAgcmV0dXJuIHJlcGx5RGVjb2RlcjsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0
aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlv
bjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwg
VGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CkBAIC01OTEsNyArNTkyLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseSh1aW50NjRfdCBkZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQXN5bmNDYWxsYmFja0FuZERpc3Bh
dGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQXN5bmNDYWxsYmFj
a0FuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCB0
aW1lb3V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OmFzeW5j
TWVzc2FnZVJlcGx5TmFtZSgpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCB7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAppbmRleCAwOTgzYWM1YzY4NDgwNzZm
ZjFlNTA1YTdmMTk5ZDI1OGQ0NWMyYzgxLi44ODNiYjI2YmU3ZGIyOGUxMWNjZTBhZTliODMxZjhk
MWRmMDFjYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1h
cGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlRpbWVvdXQuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgpAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNpZ25hbCgpOwogICAgIHZvaWQgd2FpdCgpOwotICAgIHZvaWQgd2FpdEZvcihTZWNv
bmRzKTsKKyAgICB2b2lkIHdhaXRGb3IoVGltZW91dCk7CiAgICAgTWFjaFNlbmRSaWdodCBjcmVh
dGVTZW5kUmlnaHQoKSBjb25zdDsKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW5kUmlnaHQgfHwgbV9zZW1hcGhvcmUgIT0gU0VNQVBIT1JFX05VTEw7IH0K
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2Vu
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXgg
ZTU0YzAwNWRiNzY1NjkzN2E5ZmM3ZGNjMWZkYWZiZTUxMjgwNThjNi4uZjBhYmE1MTQxYWJmOGNm
ODRmYjI1OTA1NjQyNWJmN2U3YmEyNjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmlu
aXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQor
ICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBUaW1lb3V0IHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKIApAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pCisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGlt
ZW91dCA9IFRpbWVvdXQ6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rp
b24tPnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlv
bklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVD4KLSAgICBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUgVTo6UmVwbHkmJiByZXBs
eSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBT
ZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBUaW1lb3V0IHRpbWVvdXQgPSBUaW1lb3V0OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBz
ZW5kU3luYzxVPihzdGQ6OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oCmluZGV4IDY5MzZiOTAyNjVhZGNjYjg0NDIyMWE2MjBkNDY3YTEwYjdkZjA0Y2EuLjNmODAx
YTI4YWZmYThhMzM1ZTA2M2E4NDJhNGE0MmY3MGNlZGFkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTU0LDExICs1
NCwxMSBAQCBwdWJsaWM6CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVy
KCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6
OlNlbWFwaG9yZSYmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJv
b2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBU
aW1lb3V0KTsKIAogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQ7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworICAgIFNl
bmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBP
YmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQpOwogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBTcGFuIHsKQEAgLTY3LDEwICs2NywxMCBAQCBwcml2YXRlOgogICAgIH07CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKICAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3Nh
Z2VBbGlnbm1lbnQ7Ci0gICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgYm9vbCB0cnlT
ZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQp
OwogICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKIAotICAg
IE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBP
cHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVvdXQpOwogICAgIGVudW0gY2xhc3MgV2FrZVVw
UmVjZWl2ZXIgOiBib29sIHsKICAgICAgICAgTm8sCiAgICAgICAgIFllcwpAQCAtMTAwLDEzICsx
MDAsMTIgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci1ib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElk
ZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQorYm9vbCBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRl
c3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFUOjpp
c1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7Ci0gICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRp
bWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7Ci0gICAgaWYgKCF0cnlTZW5k
RGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVU
aW1lb3V0KSkKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1
dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBhdXRvIHNwYW4gPSB0
cnlBY3F1aXJlKHRpbWVvdXQpOwogICAgIGlmICghc3BhbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHsKQEAgLTEyNSwxMyArMTI0LDEyIEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1TdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpT
ZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5h
dGlvbklELCBUaW1lb3V0IHRpbWVvdXQpCiB7CiAgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMs
ICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOwotICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1l
b3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwotICAgIGlmICghdHJ5U2VuZERl
c3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGlt
ZW91dCkpCisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgYXV0byBz
cGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGF1dG8gc3BhbiA9IHRyeUFj
cXVpcmUodGltZW91dCk7CiAgICAgaWYgKCFzcGFuKQogICAgICAgICByZXR1cm4geyB9OwogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KQEAgLTE0MiwxMSArMTQw
LDExIEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
aW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9uSURJ
Zk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIGFic29sdXRlVGlt
ZW91dCkKK2lubGluZSBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5h
dGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0KQog
ewogICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1l
b3V0KTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKHRpbWVvdXQpOwogICAgIGlmICghc3Bh
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVu
Y29kZXIgeyBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCwgc3Bhbi0+ZGF0YSwg
c3Bhbi0+c2l6ZSB9OwpAQCAtMTY4LDE5ICsxNjYsMTggQEAgaW5saW5lIHZvaWQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4p
CiAgICAgYXV0byByZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKICAgICBVTlVTRURf
VkFSSUFCTEUocmVzdWx0KTsKIH0KLWlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1Rp
bWUgdGltZW91dCkKK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFu
PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKIHsK
ICAgICBmb3IgKDs7KSB7CiAgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1p
dChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkp
OwogICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5k
ZXJMaW1pdCk7CiAgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkg
ewotICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAg
ICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgIGlmICh0aW1lb3V0Lmhhc1Bhc3Nl
ZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAg
ICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5jb21w
YXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnJl
Y2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKICAgICAgICAgICAgIGlmIChzZW5kZXJMaW1p
dCA9PSBvbGRTZW5kZXJMaW1pdCkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0
U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsKKyAgICAgICAgICAgICAgICBtX2J1
ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KG9sZFNl
bmRlckxpbWl0KTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRl
ck9mZnNldCwgc2VuZGVyTGltaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvVGltZW91dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvVGltZW91dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY3NTFlMzE1YzI5YmIzMjYyZjgyMTg3MjBlYzViMzJlYmZlNjY0NzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9UaW1lb3V0LmgKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RpbWVX
aXRoRHluYW1pY0Nsb2NrVHlwZS5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgVGltZW91
dCB7CitwdWJsaWM6CisgICAgY29uc3RleHByIFRpbWVvdXQoKQorICAgICAgICA6IG1fYWJzb2x1
dGVUaW1lb3V0KE1vbm90b25pY1RpbWU6OmluZmluaXR5KCkpCisgICAgeworICAgIH0KKyAgICBU
aW1lb3V0KFNlY29uZHMgdGltZURlbHRhKQorICAgICAgICA6IG1fYWJzb2x1dGVUaW1lb3V0KE1v
bm90b25pY1RpbWU6Om5vdygpICsgdGltZURlbHRhKQorICAgIHsKKyAgICB9CisgICAgZXhwbGlj
aXQgY29uc3RleHByIFRpbWVvdXQoTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQpCisgICAg
ICAgIDogbV9hYnNvbHV0ZVRpbWVvdXQoYWJzb2x1dGVUaW1lb3V0KQorICAgIHsKKyAgICB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lb3V0IGluZmluaXR5KCkgeyByZXR1cm4geyB9OyB9Cisg
ICAgc3RhdGljIFRpbWVvdXQgbm93KCkgeyByZXR1cm4gMF9zOyB9CisgICAgb3BlcmF0b3IgU2Vj
b25kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KChtX2Fic29sdXRlVGltZW91dCAtIE1vbm90
b25pY1RpbWU6Om5vdygpKSwgMF9zICk7IH0KKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgTW9ub3Rv
bmljVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUaW1lb3V0OyB9CisgICAgb3BlcmF0
b3IgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRp
bWVvdXQ7IH0KKyAgICBib29sIGhhc1Bhc3NlZCgpIGNvbnN0IHsgcmV0dXJuIE1vbm90b25pY1Rp
bWU6Om5vdygpID49IG1fYWJzb2x1dGVUaW1lb3V0OyB9Citwcml2YXRlOgorICAgIE1vbm90b25p
Y1RpbWUgbV9hYnNvbHV0ZVRpbWVvdXQ7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCmluZGV4IDI4
NzVjODFkNDJjNGZjNThlOWRlYjM3M2Y1YzBkYzYwNjk2ZWE2YzUuLjliY2FlNTZiMThmZThiYThk
ZDI3ZmU2NzZmNTFmMTU5NWQwMjUwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCkBAIC03OCwxMCArNzgs
MTEgQEAgdm9pZCBTZW1hcGhvcmU6OndhaXQoKQogICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQg
PT0gS0VSTl9TVUNDRVNTKTsKIH0KIAotdm9pZCBTZW1hcGhvcmU6OndhaXRGb3IoU2Vjb25kcyB0
aW1lb3V0KQordm9pZCBTZW1hcGhvcmU6OndhaXRGb3IoVGltZW91dCB0aW1lb3V0KQogewotICAg
IGF1dG8gc2Vjb25kcyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVuc2lnbmVkPigpOwotICAgIGF1dG8g
cmV0ID0gc2VtYXBob3JlX3RpbWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNf
Y2FzdDxjbG9ja19yZXNfdD4odGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vj
b25kcyAqIE5TRUNfUEVSX1NFQykgfSk7CisgICAgU2Vjb25kcyByZW1haW5pbmcgPSB0aW1lb3V0
OworICAgIGF1dG8gc2Vjb25kcyA9IHJlbWFpbmluZy5zZWNvbmRzQXM8dW5zaWduZWQ+KCk7Cisg
ICAgYXV0byByZXQgPSBzZW1hcGhvcmVfdGltZWR3YWl0KG1fc2VtYXBob3JlLCB7IHNlY29uZHMs
IHN0YXRpY19jYXN0PGNsb2NrX3Jlc190PihyZW1haW5pbmcubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmV0
LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElPTl9USU1FRF9PVVQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCmluZGV4IDcyMmVlYmFkMTQ5YTVhNWYyNDdjM2VmNGZiNDEyMjk4NzFlNDM1MTUuLjk3MWVj
ZGFlYWVhNmI0M2JjNDM5MWJmOTE5MjRlZTNhYzY0M2IzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9w
dGlvbnMgPSB7IH0pOwogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBDOjpDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpUaW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8
SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAogICAgIGVudW0g
Y2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFll
cyB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHVpbnQ2NF90IHNlbmRX
aXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlv
blNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJB
Y3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIElQQzo6VGltZW91dCB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBD
OjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAgIHsKICAgICAgICAg
cmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQpA
QCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IAotQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3luY1Jlc3VsdCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBs
eSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCitBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMo
VSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6VGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFU6OmlzU3luYywgU3lu
Y01lc3NhZ2VFeHBlY3RlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421799</attachid>
            <date>2021-03-01 01:46:13 -0800</date>
            <delta_ts>2021-03-01 05:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222305-20210301114611.patch</filename>
            <type>text/plain</type>
            <size>27621</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1MTE3MmIzOGQ1M2VmYWI0
YTQyYmI1Mjc1ZGJjNGJmODUwNzUxYWEuLjA5MTQyMjAwZjg2ZjA5ZWRlZWM1ZDMxM2Q1ZjRhNGFj
Nzk3MTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDItMjYgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBUaW1lb3V0IGNhbGN1bGF0
aW9ucyBhcmUgZXJyb3ItcHJvbmUgZm9yIGNvbXBvdW5kIElQQyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgVGltZW91dCBjbGFz
cyB0byBob2xkIHRoZSB0aW1lb3V0IHZhbHVlIGluIGJsb2NraW5nIGZ1bmN0aW9ucworICAgICAg
ICBvZiBJUEM6Oi4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBmb3J3YXJkIGFi
c29sdXRlIHBvaW50cyBvZiB0aW1lIGFzIHRoZSB0aW1lb3V0CisgICAgICAgIHZhbHVlLCBhcyB3
ZWxsIGFzIHByZXNlcnZpbmcgdGhlIGFiaWxpdHkgdG8gcGFzcyBwb2ludHMgb2YgdGltZSByZWxh
dGl2ZQorICAgICAgICB0byB0aGUgaW52b2NhdGlvbi4KKworICAgICAgICBDYWxsIHRoZSBjb25j
ZXB0IFRpbWVvdXQgaW5zdGVhZCBvZiBUaW1lT3V0IHNpbmNlIHdvcmQgJ3RpbWVvdXQnIGlzIGFu
CisgICAgICAgIEVuZ2xpc2ggd29yZCBhbmQgcHJlZmVyYWJsZSB3aGVuIHVzZWQgYXMgYSBub3Vu
IGFjY29yZGluZyB0byBlbGwgc3RhY2tvdmVyZmxvdy4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5k
U3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZv
ckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvSVBDU2VtYXBob3JlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVNlbmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1w
bGVzIG9mIGNvbXBvdW5kIHVzZS1jYXNlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1RpbWVv
dXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3Jl
LmguCisgICAgICAgIChJUEM6OlRpbWVvdXQ6OlRpbWVvdXQpOgorICAgICAgICAoSVBDOjpUaW1l
b3V0OjppbmZpbml0eSk6CisgICAgICAgIChJUEM6OlRpbWVvdXQ6Om9wZXJhdG9yIFNlY29uZHMg
Y29uc3QpOgorICAgICAgICAoSVBDOjpUaW1lb3V0OjpoYXNQYXNzZWQgY29uc3QpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcDoKKyAgICAgICAg
KElQQzo6U2VtYXBob3JlOjp3YWl0Rm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZFN5bmMpOgorCiAyMDIxLTAyLTI2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBCb2d1cyBSZXNwb25zZS57c3RhdHVz
LG9rfSBmb3Igc3VjY2Vzc2Z1bCBmZXRjaCgpIHJlcXVlc3RzIHRvIGEgY3VzdG9tIFVSSSBzY2hl
bWUgaGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCBmODhiMWY0MzhkMWY1ZWVhNWMzNDY3MjA1MmNhZTlkYjdkMTJhZDYxLi44NmVjZGRkN2Y2ZTNi
MWFkN2NjN2IxZDBiYWRiNDNiZGZjMjMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcApAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2Fp
dEZvclN5bmNSZXBseVNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9CiAKLSAgICBib29sIHdhaXQo
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIGFic29sdXRlVGltZSkKKyAgICBib29sIHdhaXQoVGlt
ZW91dCB0aW1lb3V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2FpdEZvclN5bmNSZXBseVNl
bWFwaG9yZS53YWl0VW50aWwoYWJzb2x1dGVUaW1lKTsKKyAgICAgICAgcmV0dXJuIG1fd2FpdEZv
clN5bmNSZXBseVNlbWFwaG9yZS53YWl0VW50aWwodGltZW91dC5kZWFkbGluZSgpKTsKICAgICB9
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBtZXNzYWdlIHdpbGwgYmUgaGFuZGxlZCBv
biBhIGNsaWVudCB0aHJlYWQgdGhhdCBpcyBjdXJyZW50bHkKQEAgLTQ1MCw3ICs0NTAsNyBAQCBi
b29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNv
ZGVyLCBPcHRpb25TZXQ8U2VuZE9wdAogICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsKICAgICAg
ICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwog
ICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShlbmNvZGVyKSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzZW5kU3luY01lc3NhZ2Uoc3luY1Jl
cXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVzc2FnZSksIFNlY29uZHM6OmluZmluaXR5KCksIHsg
fSkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5
bmNSZXF1ZXN0SUQsIFdURk1vdmUod3JhcHBlZE1lc3NhZ2UpLCBUaW1lb3V0OjppbmZpbml0eSgp
LCB7IH0pKTsKICAgICB9CiAKICAgICBpZiAoc2VuZE9wdGlvbnMuY29udGFpbnMoU2VuZE9wdGlv
bjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KQpAQCAtNDgwLDEy
ICs0ODAsMTIgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiBlbmNvZGVyKQogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCB7IH0pOwogfQogCi1TZWNvbmRzIENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0aW5nSWdu
b3JlVGltZW91dHNGb3JUZXN0aW5nKFNlY29uZHMgdGltZW91dCkgY29uc3QKK1RpbWVvdXQgQ29u
bmVjdGlvbjo6dGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcoVGltZW91
dCB0aW1lb3V0KSBjb25zdAogewotICAgIHJldHVybiBtX2lnbm9yZVRpbWVvdXRzRm9yVGVzdGlu
ZyA/IFNlY29uZHM6OmluZmluaXR5KCkgOiB0aW1lb3V0OworICAgIHJldHVybiBtX2lnbm9yZVRp
bWVvdXRzRm9yVGVzdGluZyA/IFRpbWVvdXQ6OmluZmluaXR5KCkgOiB0aW1lb3V0OwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQorc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3Nh
Z2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNl
dDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwpAQCAt
NTM5LDggKzUzOSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0
Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgICAgIG1fd2FpdGlu
Z0Zvck1lc3NhZ2UgPSAmd2FpdGluZ0Zvck1lc3NhZ2U7CiAgICAgfQogCi0gICAgTW9ub3Rvbmlj
VGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7Ci0K
ICAgICAvLyBOb3cgd2FpdCBmb3IgaXQgdG8gYmUgc2V0LgogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIC8vIEhhbmRsZSBhbnkgbWVzc2FnZXMgdGhhdCBhcmUgYmxvY2tlZCBvbiBhIHJlc3Bv
bnNlIGZyb20gdXMuCkBAIC01NTUsNyArNTUzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4K
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyB3ZSB3YWl0LgotICAgICAgICBib29sIGRpZFRp
bWVvdXQgPSAhbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi53YWl0VW50aWwobG9jaywgYWJzb2x1
dGVUaW1lb3V0KTsKKyAgICAgICAgYm9vbCBkaWRUaW1lb3V0ID0gIW1fd2FpdEZvck1lc3NhZ2VD
b25kaXRpb24ud2FpdFVudGlsKGxvY2ssIHRpbWVvdXQuZGVhZGxpbmUoKSk7CiAgICAgICAgIC8v
IFdlIHRpbWVkIG91dCwgbG9zdCBvdXIgY29ubmVjdGlvbiwgb3IgYSBzeW5jIG1lc3NhZ2UgY2Ft
ZSBpbiB3aXRoIEludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcywgc28gc3RvcCB3
YWl0aW5nLgogICAgICAgICBpZiAoZGlkVGltZW91dCB8fCBtX3dhaXRpbmdGb3JNZXNzYWdlLT5t
ZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkKSB7CiAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNz
YWdlID0gbnVsbHB0cjsKQEAgLTU2Niw3ICs1NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVp
bgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29u
bmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENv
bm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8U2Vu
ZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC02MTYsMTAgKzYxNCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBD
b25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkCiAg
ICAgcmV0dXJuIHJlcGx5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0
Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zKQogewogICAgIHRpbWVvdXQgPSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRz
Rm9yVGVzdGluZyh0aW1lb3V0KTsKLSAgICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKIAogICAgIHdpbGxTZW5kU3luY01lc3NhZ2Uo
c2VuZFN5bmNPcHRpb25zKTsKICAgICAKQEAgLTY1Nyw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVx
dWVzdElELCBNZQogICAgICAgICAvLyBXZSBkaWRuJ3QgZmluZCBhIHN5bmMgcmVwbHkgeWV0LCBr
ZWVwIHdhaXRpbmcuCiAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBXZWJQcm9jZXNzIHRvIHN0
aWxsIHNlcnZlIGNsaWVudHMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gcmV0dXJu
LgogICAgICAgICAvLyBOb3RhYmx5LCBpdCBjYW4gY29udGludWUgdG8gcHJvY2VzcyBhY2Nlc3Np
YmlsaXR5IHJlcXVlc3RzLCB3aGljaCBhcmUgb24gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICB0
aW1lZE91dCA9ICFTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS53YWl0KGFic29sdXRlVGlt
ZSk7CisgICAgICAgIHRpbWVkT3V0ID0gIVN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLndh
aXQodGltZW91dCk7CiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIx
YmZlOTNiZGMuLjBkODVkOGQ3Y2U4ZjRkMTc1ZDRhMDQzNDI3OWMxNWIwZTM4ZmMxZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlRpbWVvdXQuaCIKICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0yNDAsOSArMjQxLDkgQEAgcHVibGljOgogICAg
IC8vIFN5bmMgc2VuZGVycyBzaG91bGQgY2hlY2sgdGhlIFNlbmRTeW5jUmVzdWx0IGZvciB0cnVl
L2ZhbHNlIGluIGNhc2UgdGhleSBuZWVkIHRvIGtub3cgaWYgdGhlIHJlc3VsdCB3YXMgcmVhbGx5
IHJlY2VpdmVkLgogICAgIC8vIFN5bmMgc2VuZGVycyBzaG91bGQgaG9sZCBvbiB0byB0aGUgU2Vu
ZFN5bmNSZXN1bHQgaW4gY2FzZSB0aGV5IHJlZmVyZW5jZSB0aGUgY29udGVudHMgb2YgdGhlIHJl
cGx5IHZpYSBEYXRhUmVmZXJlcmVuY2UgLyBBcnJheVJlZmVyZW5jZS4KICAgICB1c2luZyBTZW5k
U3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPjsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
U2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
PiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRp
b25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
Ym9vbCB3YWl0Rm9yQXN5bmNDYWxsYmFja0FuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3Qg
Y2FsbGJhY2tJRCwgU2Vjb25kcyB0aW1lb3V0KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgVGltZW91
dCA9IFRpbWVvdXQ6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZT4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMg
PSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBib29s
IHdhaXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBjYWxs
YmFja0lELCBUaW1lb3V0KTsgLy8gTWFpbiB0aHJlYWQgb25seS4KIAogICAgIC8vIFRocmVhZC1z
YWZlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CkBA
IC0yNjAsMjEgKzI2MSwyMSBAQCBwdWJsaWM6CiAKICAgICAvLyBNYWluIHRocmVhZCBvbmx5Lgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgU2VuZFN5bmNSZXN1bHQg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElk
ZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5m
aW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0p
CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0
aW1lb3V0ID0gVGltZW91dDo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4o
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQo
KSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAgICAgCiAgICAgLy8gTWFpbiB0
aHJlYWQgb25seS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGJv
b2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0
Rm9yT3B0aW9ucyA9IHsgfSkKKyAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0LCBPcHRp
b25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAg
ICByZXR1cm4gd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgfQogCiAgICAgYm9vbCBz
ZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9u
PiBzZW5kT3B0aW9ucyk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0
X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3lu
Y01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+
LCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRp
b25zKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgVGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5
bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCiAgICAgdm9pZCB3YWtlVXBSdW5M
b29wKCk7CkBAIC0zMjAsOSArMzIxLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNJbmNvbWlu
Z01lc3NhZ2VzVGhyb3R0bGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5jb21pbmdN
ZXNzYWdlc1Rocm90dGxlcjsgfQogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgVGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBNZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1
ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+KTsKQEAgLTM0OSw3ICszNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRTeW5j
TWVzc2FnZShPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jUmVwbHkoT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKLSAgICBTZWNvbmRzIHRpbWVv
dXRSZXNwZWN0aW5nSWdub3JlVGltZW91dHNGb3JUZXN0aW5nKFNlY29uZHMpIGNvbnN0OworICAg
IFRpbWVvdXQgdGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcoVGltZW91
dCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4pOwpAQCAtNTQ5LDcgKzU1MCw3IEBAIHZvaWQgbW92
ZVR1cGxlKHN0ZDo6dHVwbGU8QS4uLj4mJiBhLCBzdGQ6OnR1cGxlPEIuLi4+JiBiKQogICAgIFR1
cGxlTW92ZXI8c2l6ZW9mLi4uKEEpLCBzdGQ6OnR1cGxlPEEuLi4+LCBzdGQ6OnR1cGxlPEIuLi4+
Pjo6bW92ZShXVEZNb3ZlKGEpLCBiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+
IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICBDT01QSUxFX0FTU0VSVChUOjppc1N5bmMsIFN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTU3OSw3ICs1ODAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpTZW5k
U3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZQogICAgIHJldHVybiBy
ZXBseURlY29kZXI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9u
U2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2Rl
ciA9IHdhaXRGb3JNZXNzYWdlKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2Fp
dEZvck9wdGlvbnMpOwpAQCAtNTkxLDcgKzU5Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVz
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6d2FpdEZvckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgQ29ubmVjdGlvbjo6d2FpdEZvckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IGRlY29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgZGVz
dGluYXRpb25JRCwgdGltZW91dCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBD
U2VtYXBob3JlLmgKaW5kZXggMDk4M2FjNWM2ODQ4MDc2ZmYxZTUwNWE3ZjE5OWQyNThkNDVjMmM4
MS4uODgzYmIyNmJlN2RiMjhlMTFjY2UwYWU5YjgzMWY4ZDFkZjAxY2E1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJUaW1lb3V0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMu
aD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaWduYWwoKTsKICAgICB2
b2lkIHdhaXQoKTsKLSAgICB2b2lkIHdhaXRGb3IoU2Vjb25kcyk7CisgICAgdm9pZCB3YWl0Rm9y
KFRpbWVvdXQpOwogICAgIE1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KCkgY29uc3Q7CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZFJpZ2h0IHx8
IG1fc2VtYXBob3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IGU1NGMwMDVkYjc2NTY5MzdhOWZjN2Rj
YzFmZGFmYmU1MTI4MDU4YzYuLmYwYWJhNTE0MWFiZjhjZjg0ZmIyNTkwNTY0MjViZjdlN2JhMjY4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgVGltZW91dCB0aW1l
b3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3lu
YywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5j
UmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQgPSBUaW1lb3V0OjppbmZpbml0
eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVSYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgU2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHks
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0ID0gVGlt
ZW91dDo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pCiAgICAgewogICAgICAgICByZXR1cm4gc2VuZFN5bmM8VT4oc3RkOjpmb3J3YXJk
PFU+KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0
aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCA2OTM2YjkwMjY1YWRj
Y2I4NDQyMjFhNjIwZDQ2N2ExMGI3ZGYwNGNhLi4wMjgzZjI2NjlkMDE1NjhjYjc2Yzg5MWU1MjA1
NzZhYzBjZWI1OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01NCwxMSArNTQsMTEgQEAgcHVibGljOgogICAgIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbUJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgdm9pZCBzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCk7CiAKICAgICB1c2luZyBT
ZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGlu
YXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKyAgICBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0
aW5hdGlvbklELCBUaW1lb3V0KTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU3BhbiB7CkBAIC02
NywxMCArNjcsMTAgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVt
TWVzc2FnZVNpemU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVu
dCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwotICAgIGJvb2wg
dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25v
dG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRl
ZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0KTsKICAgICB2b2lkIHNlbmRQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJik7CiAKLSAgICBPcHRpb25hbDxTcGFuPiB0cnlBY3F1
aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWly
ZShUaW1lb3V0KTsKICAgICBlbnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CiAgICAg
ICAgIE5vLAogICAgICAgICBZZXMKQEAgLTEwMCwxMyArMTAwLDEyIEBAIHByaXZhdGU6CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCkKK2Jvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChU
JiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBUaW1lb3V0IHRp
bWVvdXQpCiB7CiAgICAgc3RhdGljX2Fzc2VydCghVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5j
ISIpOwotICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6
bm93KCkgKyB0aW1lb3V0OwotICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChk
ZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAgaWYgKCF0cnlT
ZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFi
c29sdXRlVGltZW91dCk7CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAg
ICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB7CkBAIC0xMjUsMTMgKzEy
NCwxMiBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0KQorU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0
KQogewogICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEi
KTsKLSAgICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5v
dygpICsgdGltZW91dDsKLSAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgIGlmICghdHJ5U2Vu
ZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQp
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1
dGVUaW1lb3V0KTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKHRpbWVvdXQpOwogICAgIGlm
ICghc3BhbikKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNl
bmQgdGhyb3VnaCBzdHJlYW0uCkBAIC0xNDIsMTEgKzE0MCwxMSBAQCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhU
JiYgbWVzcwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBib29sIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGlu
YXRpb25JRCwgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQpCitpbmxpbmUgYm9vbCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKICAgICBpZiAoZGVzdGluYXRpb25J
RCA9PSBtX2N1cnJlbnREZXN0aW5hdGlvbklEKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBh
dXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAgYXV0byBzcGFuID0g
dHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAgICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNl
dFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKQEAgLTE2OCwx
OSArMTY2LDE4IEBAIGlubGluZSB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQcm9j
ZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJiBzcGFuKQogICAgIGF1dG8gcmVzdWx0ID0gcmVs
ZWFzZShlbmNvZGVyLnNpemUoKSk7CiAgICAgVU5VU0VEX1ZBUklBQkxFKHJlc3VsdCk7CiB9Ci1p
bmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpCitpbmxpbmUgT3B0
aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6dHJ5QWNxdWlyZShUaW1lb3V0IHRpbWVvdXQpCiB7CiAgICAgZm9yICg7OykgewogICAgICAg
ICBzaXplX3Qgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQoc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsKICAgICAgICAgYXV0byByZXN1bHQg
PSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVyTGltaXQpOwogICAgICAgICBpZiAo
cmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKLSAgICAgICAgICAgIGF1dG8gbm93
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgICAgICBpZiAobm93ID49IHRpbWVvdXQp
CisgICAgICAgICAgICBpZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVy
TGltaXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5k
ZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dh
aXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2Fj
cV9yZWwpOwogICAgICAgICAgICAgaWYgKHNlbmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQot
ICAgICAgICAgICAgICAgIG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRp
bWVvdXQgLSBub3cpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhv
cmUoKS53YWl0Rm9yKHRpbWVvdXQpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQob2xkU2VuZGVyTGltaXQpOwogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9UaW1lb3V0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9UaW1lb3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVjODkxNmJlNjBl
YWQwZDliYjU4NmQxNzc5Zjk1MWJlM2RhMWM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1RpbWVvdXQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBUaW1lb3V0IHsKK3B1YmxpYzoKKyAgICBUaW1l
b3V0KFNlY29uZHMgdGltZURlbHRhKQorICAgICAgICA6IG1fZGVhZGxpbmUoTW9ub3RvbmljVGlt
ZTo6bm93KCkgKyB0aW1lRGVsdGEpCisgICAgeworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IFRpbWVvdXQgaW5maW5pdHkoKSB7IHJldHVybiBUaW1lb3V0IHsgfTsgfQorICAgIHN0YXRpYyBU
aW1lb3V0IG5vdygpIHsgcmV0dXJuIDBfczsgfQorICAgIFNlY29uZHMgc2Vjb25kc1VudGlsRGVh
ZGxpbmUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heChtX2RlYWRsaW5lIC0gTW9ub3RvbmljVGlt
ZTo6bm93KCksIDBfcyApOyB9CisgICAgY29uc3RleHByIE1vbm90b25pY1RpbWUgZGVhZGxpbmUo
KSBjb25zdCB7IHJldHVybiBtX2RlYWRsaW5lOyB9CisgICAgYm9vbCBkaWRUaW1lT3V0KCkgY29u
c3QgeyByZXR1cm4gTW9ub3RvbmljVGltZTo6bm93KCkgPj0gbV9kZWFkbGluZTsgfQorcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgVGltZW91dCgpCisgICAgICAgIDogbV9kZWFkbGlu
ZShNb25vdG9uaWNUaW1lOjppbmZpbml0eSgpKQorICAgIHsKKyAgICB9CisgICAgTW9ub3Rvbmlj
VGltZSBtX2RlYWRsaW5lOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvZGFyd2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcAppbmRleCAyODc1YzgxZDQy
YzRmYzU4ZTlkZWIzNzNmNWMwZGM2MDY5NmVhNmM1Li44YmMyZWJjMjdmY2QwNWI5MTQzZDJiOGYx
MWRkZGVhNTRmYjJmZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9k
YXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcApAQCAtNzgsMTAgKzc4LDExIEBAIHZv
aWQgU2VtYXBob3JlOjp3YWl0KCkKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5f
U1VDQ0VTUyk7CiB9CiAKLXZvaWQgU2VtYXBob3JlOjp3YWl0Rm9yKFNlY29uZHMgdGltZW91dCkK
K3ZvaWQgU2VtYXBob3JlOjp3YWl0Rm9yKFRpbWVvdXQgdGltZW91dCkKIHsKLSAgICBhdXRvIHNl
Y29uZHMgPSB0aW1lb3V0LnNlY29uZHNBczx1bnNpZ25lZD4oKTsKLSAgICBhdXRvIHJldCA9IHNl
bWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25kcywgc3RhdGljX2Nhc3Q8Y2xv
Y2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBO
U0VDX1BFUl9TRUMpIH0pOworICAgIFNlY29uZHMgd2FpdFRpbWUgPSB0aW1lb3V0LnNlY29uZHNV
bnRpbERlYWRsaW5lKCk7CisgICAgYXV0byBzZWNvbmRzID0gd2FpdFRpbWUuc2Vjb25kc0FzPHVu
c2lnbmVkPigpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3RpbWVkd2FpdChtX3NlbWFwaG9y
ZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNfdD4od2FpdFRpbWUubmFub3NlY29u
ZHNBczx1aW50NjRfdD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOwogICAgIEFTU0VS
VF9VTlVTRUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTIHx8IHJldCA9PSBLRVJOX09QRVJBVElP
Tl9USU1FRF9PVVQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCmluZGV4IDcyMmVlYmFkMTQ5YTVhNWYyNDdjM2VmNGZiNDEyMjk4NzFl
NDM1MTUuLjk3MWVjZGFlYWVhNmI0M2JjNDM5MWJmOTE5MjRlZTNhYzY0M2IzMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChU
JiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gSVBD
OjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBT
ZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8
SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpUaW1lb3V0ID0gMV9z
LCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsK
IAogICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBi
b29sIHsgTm8sIFllcyB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHVp
bnQ2NF90IHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nl
c3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
OjpZZXMpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIFNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIElQQzo6VGltZW91dCB0aW1lb3V0ID0gMV9zLCBP
cHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQogICAg
IHsKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9u
cyk7CiAgICAgfQpAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IAotQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTZW5kU3lu
Y1Jlc3VsdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBl
bmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCitB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OlNlbmRTeW5jUmVzdWx0IEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1lIFU6OlJlcGx5JiYgcmVwbHksIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6VGltZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIENPTVBJTEVfQVNTRVJUKFU6
OmlzU3luYywgU3luY01lc3NhZ2VFeHBlY3RlZCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>