<?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>221555</bug_id>
          
          <creation_ts>2021-02-08 08:16:55 -0800</creation_ts>
          <short_desc>PCM: expired reports get sent at the same time after a session restart</short_desc>
          <delta_ts>2021-02-10 09:38:19 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726648</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 08:16:55 -0800</bug_when>
    <thetext>Multiple reports sent simultaneously to the same destination could link a user across sites. 

&lt;rdar://problem/73724816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726690</commentid>
    <comment_count>1</comment_count>
      <attachid>419602</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 10:09:52 -0800</bug_when>
    <thetext>Created attachment 419602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726702</commentid>
    <comment_count>2</comment_count>
      <attachid>419602</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-08 10:54:53 -0800</bug_when>
    <thetext>Comment on attachment 419602
Patch

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

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:46
&gt; +    bool operator==(PrivateClickMeasurement const other) const

Did you mean `const PrivateClickMeasurement&amp; other` ?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1483
&gt;          return;

BUG: You&apos;re not calling your completion handler here.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1487
&gt; +            completionHandler();

BUG: Calling the completion handler on the wrong thread.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:197
&gt; +    auto callbackAggregator = WTF::CallbackAggregator::create(WTFMove(completionHandler));

No WTF::

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:216
&gt; +    resourceLoadStatistics-&gt;allAttributedPrivateClickMeasurement([this] (auto&amp;&amp; attributions) {

What guarantees |this| is still alive by the time the lambda runs.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:225
&gt; +

Unnecessary blank line

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:234
&gt; +        auto interval = debugModeEnabled() ? 120 : (900 + (cryptographicallyRandomNumber() % 900));

It would look nicer if you used the Second type here. E.g. 120 -&gt; 2_min

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:251
&gt; +    auto expiredAttribution = m_expiredAttributions.first();

takeFirst() ?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:253
&gt; +    m_expiredAttributions.removeFirst(expiredAttribution);

Then we wouldn&apos;t need this.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.h:89
&gt; +    Vector&lt;PrivateClickMeasurement&gt; m_expiredAttributions;

You likely want a Deque since you remove from the head. Vector is a very poor data structure for such operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726762</commentid>
    <comment_count>3</comment_count>
      <attachid>419619</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 13:16:38 -0800</bug_when>
    <thetext>Created attachment 419619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726763</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 13:16:55 -0800</bug_when>
    <thetext>Thanks Chris, fixes are addressed in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726773</commentid>
    <comment_count>5</comment_count>
      <attachid>419619</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-08 13:37:22 -0800</bug_when>
    <thetext>Comment on attachment 419619
Patch

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

&gt; Source/WebKit/ChangeLog:3
&gt; +        PCM: expired reports get sent at the same time after a session restart

I&apos;d use capital E for Expired. :)

&gt; Source/WebKit/ChangeLog:9
&gt; +        Since PCM reports are now persisted, we need to address the

It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.

&gt; Source/WebKit/ChangeLog:17
&gt; +        remaining expired attributions are inserted back into the database to be

Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?

&gt; Source/WebKit/ChangeLog:20
&gt; +        this is probably unlikely.

We could also point out here that protecting the user&apos;s privacy is a hard requirement so even in the case of &quot;starvation&quot; where some reports never get sent out, we think that&apos;s the right tradeoff.

&gt; Source/WebKit/ChangeLog:28
&gt; +        confirm no regressions.

You could augment the existing dump function just like we do for checking the regular scheduling of reports, i.e. check that the trigger time is between certain timestamps.

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:393
&gt; +    if (!m_privateClickMeasurement)

Is m_privateClickMeasurement expected to be null under any normal conditions? If so, we may have to log something in Web Inspector to tell developers that something went wrong.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:194
&gt; +void PrivateClickMeasurementManager::flushAttributions(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

flushAttributions() is a rather vague name. How would you explain it with more words? I think we can come up with a  more descriptive name. Looking at the code it seems like reinsertExpiredAttributions() would be better but that isn&apos;t clear either because I don&apos;t know what expired attributions are (see comment further down).

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:209
&gt; +void PrivateClickMeasurementManager::scheduleExpiredAttributionRequests()

We should add some Web Inspector logging so that developers can know what&apos;s going on if their report is not sent out immediately at session restart.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.h:89
&gt; +    Deque&lt;PrivateClickMeasurement&gt; m_expiredAttributions;

What are expired attributions? To me they sound like &quot;should be discarded because they&apos;re too old to send.&quot; Is that it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726794</commentid>
    <comment_count>6</comment_count>
      <attachid>419619</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 14:10:14 -0800</bug_when>
    <thetext>Comment on attachment 419619
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:3
&gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; 
&gt; I&apos;d use capital E for Expired. :)

Will fix.

&gt;&gt; Source/WebKit/ChangeLog:9
&gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; 
&gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.

Ditto, will fix.

&gt;&gt; Source/WebKit/ChangeLog:17
&gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; 
&gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?

My inclination is to think didClose() is still called in a crash but I need to double check to confirm. If not, we would lose reports that were past due to send at session-start but not any other attribution reports, because those are stored on disk until they are ready to be sent.

&gt;&gt; Source/WebKit/ChangeLog:20
&gt;&gt; +        this is probably unlikely.
&gt; 
&gt; We could also point out here that protecting the user&apos;s privacy is a hard requirement so even in the case of &quot;starvation&quot; where some reports never get sent out, we think that&apos;s the right tradeoff.

Good idea, I&apos;ll add that.

&gt;&gt; Source/WebKit/ChangeLog:28
&gt;&gt; +        confirm no regressions.
&gt; 
&gt; You could augment the existing dump function just like we do for checking the regular scheduling of reports, i.e. check that the trigger time is between certain timestamps.

Good idea, I could probably do something like this that would at least test some functionality.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:393
&gt;&gt; +    if (!m_privateClickMeasurement)
&gt; 
&gt; Is m_privateClickMeasurement expected to be null under any normal conditions? If so, we may have to log something in Web Inspector to tell developers that something went wrong.

I am not sure of a case where m_privateClickMeasurement would be null. I added this because it is possible for m_privateClickMeasurement to be null now that is no longer a reference, so it seemed like the safe thing to do. Maybe Chris or Alex knows a case in which the NetworkSession object would exist but not a unique_ptr initialized in the constructor.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:194
&gt;&gt; +void PrivateClickMeasurementManager::flushAttributions(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; flushAttributions() is a rather vague name. How would you explain it with more words? I think we can come up with a  more descriptive name. Looking at the code it seems like reinsertExpiredAttributions() would be better but that isn&apos;t clear either because I don&apos;t know what expired attributions are (see comment further down).

I will update this to be &quot;reinsert&lt;betterNameForExpiredAttributions&gt;&quot;. Maybe &quot;pastDueToReport&quot; or something along those lines.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:209
&gt;&gt; +void PrivateClickMeasurementManager::scheduleExpiredAttributionRequests()
&gt; 
&gt; We should add some Web Inspector logging so that developers can know what&apos;s going on if their report is not sent out immediately at session restart.

Ok.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.h:89
&gt;&gt; +    Deque&lt;PrivateClickMeasurement&gt; m_expiredAttributions;
&gt; 
&gt; What are expired attributions? To me they sound like &quot;should be discarded because they&apos;re too old to send.&quot; Is that it?

No, in this case they are attributions that have reached their earliestTimeToSend value while the session was closed, and we don&apos;t want to send them in a burst on session-start. Maybe &quot;overdueAttributionsToReport&quot; or &quot;pastDueAttributionsToSendOnSessionStart&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726801</commentid>
    <comment_count>7</comment_count>
      <attachid>419619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-08 14:18:04 -0800</bug_when>
    <thetext>Comment on attachment 419619
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:393
&gt;&gt;&gt; +    if (!m_privateClickMeasurement)
&gt;&gt; 
&gt;&gt; Is m_privateClickMeasurement expected to be null under any normal conditions? If so, we may have to log something in Web Inspector to tell developers that something went wrong.
&gt; 
&gt; I am not sure of a case where m_privateClickMeasurement would be null. I added this because it is possible for m_privateClickMeasurement to be null now that is no longer a reference, so it seemed like the safe thing to do. Maybe Chris or Alex knows a case in which the NetworkSession object would exist but not a unique_ptr initialized in the constructor.

Those null-checks are not needed. Just add such a getter in the header:
PrivateClickMeasurementManager&amp; privateClickMeasurement() { return *m_privateClickMeasurement; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726802</commentid>
    <comment_count>8</comment_count>
      <attachid>419619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-08 14:19:45 -0800</bug_when>
    <thetext>Comment on attachment 419619
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1488
&gt; +        if (!m_statisticsStore) {

This would look better (more concise) like so:
```
if (m_statisticsStore)
    m_statisticsStore-&gt;insertPrivateClickMeasurement(WTFMove(attribution), attributionType);
postTaskReply(WTFMove(completionHandler));
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726806</commentid>
    <comment_count>9</comment_count>
      <attachid>419619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-08 14:22:33 -0800</bug_when>
    <thetext>Comment on attachment 419619
Patch

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

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:198
&gt; +        return;

BUG: CompletionHandler is not called...

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:206
&gt; +#endif

#else
you need to call the completion handler..

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:252
&gt; +    auto expiredAttribution = m_expiredAttributions.takeFirst();

We don&apos;t need this local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726808</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-08 14:32:04 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #6)
&gt; Comment on attachment 419619 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; 
&gt; &gt; I&apos;d use capital E for Expired. :)
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; 
&gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; 
&gt; Ditto, will fix.
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; 
&gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; 
&gt; My inclination is to think didClose() is still called in a crash but I need
&gt; to double check to confirm. If not, we would lose reports that were past due
&gt; to send at session-start but not any other attribution reports, because
&gt; those are stored on disk until they are ready to be sent.

OK. My thinking here is that for all other cases, we keep data in the DB until it&apos;s time to send. My assumption was that we would do the same thing here and instead of putting all the pending data in memory, instead set timers to one-by-one send out overdue reports. Kind of like:

1. Mark all overdue reports as &quot;overdue&quot; in the DB.
2. If we have overdue reports, send one overdue report out and set a timer for N minutes, else done.
3. When the timer fires, run from step 2.

&gt; &gt;&gt; Source/WebKit/ChangeLog:20
&gt; &gt;&gt; +        this is probably unlikely.
&gt; &gt; 
&gt; &gt; We could also point out here that protecting the user&apos;s privacy is a hard requirement so even in the case of &quot;starvation&quot; where some reports never get sent out, we think that&apos;s the right tradeoff.
&gt; 
&gt; Good idea, I&apos;ll add that.
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:28
&gt; &gt;&gt; +        confirm no regressions.
&gt; &gt; 
&gt; &gt; You could augment the existing dump function just like we do for checking the regular scheduling of reports, i.e. check that the trigger time is between certain timestamps.
&gt; 
&gt; Good idea, I could probably do something like this that would at least test
&gt; some functionality.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:393
&gt; &gt;&gt; +    if (!m_privateClickMeasurement)
&gt; &gt; 
&gt; &gt; Is m_privateClickMeasurement expected to be null under any normal conditions? If so, we may have to log something in Web Inspector to tell developers that something went wrong.
&gt; 
&gt; I am not sure of a case where m_privateClickMeasurement would be null. I
&gt; added this because it is possible for m_privateClickMeasurement to be null
&gt; now that is no longer a reference, so it seemed like the safe thing to do.
&gt; Maybe Chris or Alex knows a case in which the NetworkSession object would
&gt; exist but not a unique_ptr initialized in the constructor.

No reason to add Web Inspector logging then.

&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:194
&gt; &gt;&gt; +void PrivateClickMeasurementManager::flushAttributions(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; 
&gt; &gt; flushAttributions() is a rather vague name. How would you explain it with more words? I think we can come up with a  more descriptive name. Looking at the code it seems like reinsertExpiredAttributions() would be better but that isn&apos;t clear either because I don&apos;t know what expired attributions are (see comment further down).
&gt; 
&gt; I will update this to be &quot;reinsert&lt;betterNameForExpiredAttributions&gt;&quot;. Maybe
&gt; &quot;pastDueToReport&quot; or something along those lines.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:209
&gt; &gt;&gt; +void PrivateClickMeasurementManager::scheduleExpiredAttributionRequests()
&gt; &gt; 
&gt; &gt; We should add some Web Inspector logging so that developers can know what&apos;s going on if their report is not sent out immediately at session restart.
&gt; 
&gt; Ok.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.h:89
&gt; &gt;&gt; +    Deque&lt;PrivateClickMeasurement&gt; m_expiredAttributions;
&gt; &gt; 
&gt; &gt; What are expired attributions? To me they sound like &quot;should be discarded because they&apos;re too old to send.&quot; Is that it?
&gt; 
&gt; No, in this case they are attributions that have reached their
&gt; earliestTimeToSend value while the session was closed, and we don&apos;t want to
&gt; send them in a burst on session-start. Maybe &quot;overdueAttributionsToReport&quot;
&gt; or &quot;pastDueAttributionsToSendOnSessionStart&quot;?

I like overdue. Much clearer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726812</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 14:37:16 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #10)
&gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; 
&gt; &gt; Will fix.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; 
&gt; &gt; Ditto, will fix.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; 
&gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; 
&gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; those are stored on disk until they are ready to be sent.
&gt; 
&gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; here and instead of putting all the pending data in memory, instead set
&gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; 
&gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; for N minutes, else done.
&gt; 3. When the timer fires, run from step 2.
&gt; 

Ah! This is a good idea, and will make things simpler. To avoid a schema change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate an overdue report. This will also make it more reasonable to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726818</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-08 14:46:58 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #11)
&gt; (In reply to John Wilander from comment #10)
&gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; &gt; 
&gt; &gt; &gt; Will fix.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; &gt; 
&gt; &gt; &gt; Ditto, will fix.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; &gt; 
&gt; &gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; &gt; those are stored on disk until they are ready to be sent.
&gt; &gt; 
&gt; &gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; &gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; &gt; here and instead of putting all the pending data in memory, instead set
&gt; &gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; &gt; 
&gt; &gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; &gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; &gt; for N minutes, else done.
&gt; &gt; 3. When the timer fires, run from step 2.
&gt; &gt; 
&gt; 
&gt; Ah! This is a good idea, and will make things simpler. To avoid a schema
&gt; change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate
&gt; an overdue report. This will also make it more reasonable to test.

Marking them as overdue may even be premature optimization. You might get away with:

1. Check if we have any overdue reports.
2. At the first found overdue report, send it out and set a timer for N minutes to start over. (I.e. no need to continues looking in the DB until the timer fires.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726821</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-08 14:50:59 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #12)
&gt; (In reply to katherine_cheney from comment #11)
&gt; &gt; (In reply to John Wilander from comment #10)
&gt; &gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Will fix.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ditto, will fix.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; &gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; &gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; &gt; &gt; those are stored on disk until they are ready to be sent.
&gt; &gt; &gt; 
&gt; &gt; &gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; &gt; &gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; &gt; &gt; here and instead of putting all the pending data in memory, instead set
&gt; &gt; &gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; &gt; &gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; &gt; &gt; for N minutes, else done.
&gt; &gt; &gt; 3. When the timer fires, run from step 2.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Ah! This is a good idea, and will make things simpler. To avoid a schema
&gt; &gt; change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate
&gt; &gt; an overdue report. This will also make it more reasonable to test.
&gt; 
&gt; Marking them as overdue may even be premature optimization. You might get
&gt; away with:
&gt; 
&gt; 1. Check if we have any overdue reports.
&gt; 2. At the first found overdue report, send it out and set a timer for N
&gt; minutes to start over. (I.e. no need to continues looking in the DB until
&gt; the timer fires.)

The nice part of doing it as described above, is that you&apos;ll never end up in &quot;I have have some reports already marked as overdue but I was suspended so I need to check anyway.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726822</commentid>
    <comment_count>14</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 14:52:10 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #12)
&gt; (In reply to katherine_cheney from comment #11)
&gt; &gt; (In reply to John Wilander from comment #10)
&gt; &gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Will fix.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ditto, will fix.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; &gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; &gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; &gt; &gt; those are stored on disk until they are ready to be sent.
&gt; &gt; &gt; 
&gt; &gt; &gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; &gt; &gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; &gt; &gt; here and instead of putting all the pending data in memory, instead set
&gt; &gt; &gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; &gt; &gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; &gt; &gt; for N minutes, else done.
&gt; &gt; &gt; 3. When the timer fires, run from step 2.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Ah! This is a good idea, and will make things simpler. To avoid a schema
&gt; &gt; change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate
&gt; &gt; an overdue report. This will also make it more reasonable to test.
&gt; 
&gt; Marking them as overdue may even be premature optimization. You might get
&gt; away with:
&gt; 
&gt; 1. Check if we have any overdue reports.
&gt; 2. At the first found overdue report, send it out and set a timer for N
&gt; minutes to start over. (I.e. no need to continues looking in the DB until
&gt; the timer fires.)

Do you envision this being separate from the m_firePendingAttributionRequestsTimer, which sends pending reports normally? Right now we send all attributions that are past due whenever the m_firePendingAttributionRequestsTimer goes off. We would have to somehow mark overdue ones so they don&apos;t get sent along with those, or make sure that call only sends one at a time instead of all overdue ones at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726860</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-08 15:56:31 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #14)
&gt; (In reply to John Wilander from comment #12)
&gt; &gt; (In reply to katherine_cheney from comment #11)
&gt; &gt; &gt; (In reply to John Wilander from comment #10)
&gt; &gt; &gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt; &gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Will fix.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; &gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Ditto, will fix.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt; &gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; &gt; &gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; &gt; &gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; &gt; &gt; &gt; those are stored on disk until they are ready to be sent.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; &gt; &gt; &gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; &gt; &gt; &gt; here and instead of putting all the pending data in memory, instead set
&gt; &gt; &gt; &gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; &gt; &gt; &gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; &gt; &gt; &gt; for N minutes, else done.
&gt; &gt; &gt; &gt; 3. When the timer fires, run from step 2.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; Ah! This is a good idea, and will make things simpler. To avoid a schema
&gt; &gt; &gt; change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate
&gt; &gt; &gt; an overdue report. This will also make it more reasonable to test.
&gt; &gt; 
&gt; &gt; Marking them as overdue may even be premature optimization. You might get
&gt; &gt; away with:
&gt; &gt; 
&gt; &gt; 1. Check if we have any overdue reports.
&gt; &gt; 2. At the first found overdue report, send it out and set a timer for N
&gt; &gt; minutes to start over. (I.e. no need to continues looking in the DB until
&gt; &gt; the timer fires.)
&gt; 
&gt; Do you envision this being separate from the
&gt; m_firePendingAttributionRequestsTimer, which sends pending reports normally?
&gt; Right now we send all attributions that are past due whenever the
&gt; m_firePendingAttributionRequestsTimer goes off. We would have to somehow
&gt; mark overdue ones so they don&apos;t get sent along with those, or make sure that
&gt; call only sends one at a time instead of all overdue ones at once.

You&apos;re right. With zero memory of what we&apos;ve done we have to make sure we don&apos;t send them prematurely.

You could make that timer send one report at a time and if there is at least one more (over)due report, set it to N minutes.

I think the goal should be to make it as simple as possible, both in code and for a human to understand. Whichever solution you think gets us there is probably the right one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726892</commentid>
    <comment_count>16</comment_count>
      <attachid>419655</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 16:45:05 -0800</bug_when>
    <thetext>Created attachment 419655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726894</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-08 16:47:03 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #15)
&gt; (In reply to katherine_cheney from comment #14)
&gt; &gt; (In reply to John Wilander from comment #12)
&gt; &gt; &gt; (In reply to katherine_cheney from comment #11)
&gt; &gt; &gt; &gt; (In reply to John Wilander from comment #10)
&gt; &gt; &gt; &gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; &gt; &gt; &gt; Comment on attachment 419619 [details]
&gt; &gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419619&amp;action=review
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:3
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; +        PCM: expired reports get sent at the same time after a session restart
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; I&apos;d use capital E for Expired. :)
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Will fix.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; +        Since PCM reports are now persisted, we need to address the
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; It&apos;s not the reports that are persisted. It&apos;s all PCM data. Reports only exist when they are being sent.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Ditto, will fix.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit/ChangeLog:17
&gt; &gt; &gt; &gt; &gt; &gt; &gt;&gt; +        remaining expired attributions are inserted back into the database to be
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Does this reflect a real insert back? If so, do we risk losing pending reports at a crash?
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; My inclination is to think didClose() is still called in a crash but I need
&gt; &gt; &gt; &gt; &gt; &gt; to double check to confirm. If not, we would lose reports that were past due
&gt; &gt; &gt; &gt; &gt; &gt; to send at session-start but not any other attribution reports, because
&gt; &gt; &gt; &gt; &gt; &gt; those are stored on disk until they are ready to be sent.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; OK. My thinking here is that for all other cases, we keep data in the DB
&gt; &gt; &gt; &gt; &gt; until it&apos;s time to send. My assumption was that we would do the same thing
&gt; &gt; &gt; &gt; &gt; here and instead of putting all the pending data in memory, instead set
&gt; &gt; &gt; &gt; &gt; timers to one-by-one send out overdue reports. Kind of like:
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; 1. Mark all overdue reports as &quot;overdue&quot; in the DB.
&gt; &gt; &gt; &gt; &gt; 2. If we have overdue reports, send one overdue report out and set a timer
&gt; &gt; &gt; &gt; &gt; for N minutes, else done.
&gt; &gt; &gt; &gt; &gt; 3. When the timer fires, run from step 2.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ah! This is a good idea, and will make things simpler. To avoid a schema
&gt; &gt; &gt; &gt; change we can maybe use &quot;-1.0&quot; in the earliestTimeToSend column to indicate
&gt; &gt; &gt; &gt; an overdue report. This will also make it more reasonable to test.
&gt; &gt; &gt; 
&gt; &gt; &gt; Marking them as overdue may even be premature optimization. You might get
&gt; &gt; &gt; away with:
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. Check if we have any overdue reports.
&gt; &gt; &gt; 2. At the first found overdue report, send it out and set a timer for N
&gt; &gt; &gt; minutes to start over. (I.e. no need to continues looking in the DB until
&gt; &gt; &gt; the timer fires.)
&gt; &gt; 
&gt; &gt; Do you envision this being separate from the
&gt; &gt; m_firePendingAttributionRequestsTimer, which sends pending reports normally?
&gt; &gt; Right now we send all attributions that are past due whenever the
&gt; &gt; m_firePendingAttributionRequestsTimer goes off. We would have to somehow
&gt; &gt; mark overdue ones so they don&apos;t get sent along with those, or make sure that
&gt; &gt; call only sends one at a time instead of all overdue ones at once.
&gt; 
&gt; You&apos;re right. With zero memory of what we&apos;ve done we have to make sure we
&gt; don&apos;t send them prematurely.
&gt; 
&gt; You could make that timer send one report at a time and if there is at least
&gt; one more (over)due report, set it to N minutes.
&gt; 
&gt; I think the goal should be to make it as simple as possible, both in code
&gt; and for a human to understand. Whichever solution you think gets us there is
&gt; probably the right one.

OK, much smaller patch uploaded. This one sends one report at a time and if more overdue reports exists it will start the timer to send again at a random time in the future between 15-30 minutes. It sorts by earliestTimeToSend so the most overdue reports will get sent first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727211</commentid>
    <comment_count>18</comment_count>
      <attachid>419655</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-09 13:37:07 -0800</bug_when>
    <thetext>Comment on attachment 419655
Patch

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

I really like the simplicity of this design! Have a look at my comments on clearSentAttributions() etc though.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:223
&gt; +                    clearSentAttributions(WTFMove(sentAttributions));

We call clearSentAttributions() here and move sentAttributions ...

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:225
&gt; +                    break;

... the we don&apos;t return ...

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:236
&gt;          clearSentAttributions(WTFMove(sentAttributions));

... and finally we call clearSentAttributions() and move sentAttributions again. That looks like a problem. If it is intended and works, please make a comment so that others understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727216</commentid>
    <comment_count>19</comment_count>
      <attachid>419755</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-09 13:45:17 -0800</bug_when>
    <thetext>Created attachment 419755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727219</commentid>
    <comment_count>20</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-09 13:45:37 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #18)
&gt; Comment on attachment 419655 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419655&amp;action=review
&gt; 
&gt; I really like the simplicity of this design! Have a look at my comments on
&gt; clearSentAttributions() etc though.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:223
&gt; &gt; +                    clearSentAttributions(WTFMove(sentAttributions));
&gt; 
&gt; We call clearSentAttributions() here and move sentAttributions ...
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:225
&gt; &gt; +                    break;
&gt; 
&gt; ... the we don&apos;t return ...
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:236
&gt; &gt;          clearSentAttributions(WTFMove(sentAttributions));
&gt; 
&gt; ... and finally we call clearSentAttributions() and move sentAttributions
&gt; again. That looks like a problem. If it is intended and works, please make a
&gt; comment so that others understand.

Yikes, you&apos;re right. The break should be a return -- new patch uploaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727307</commentid>
    <comment_count>21</comment_count>
      <attachid>419755</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-09 15:42:16 -0800</bug_when>
    <thetext>Comment on attachment 419755
Patch

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

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:207
&gt;          Vector&lt;PrivateClickMeasurement&gt; sentAttributions;

Does this have to be a Vector now that we always just send zero or one report?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:218
&gt; +                if (!sentAttributions.isEmpty()) {

This could now just be a boolean flag haveAlreadySentOneAttribution.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:228
&gt;                  sentAttributions.append(WTFMove(attribution));

This could now instead be the call to clearSentAttribution(). Note singular.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:236
&gt;          clearSentAttributions(WTFMove(sentAttributions));

This is probably not needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727367</commentid>
    <comment_count>22</comment_count>
      <attachid>419795</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-09 17:31:48 -0800</bug_when>
    <thetext>Created attachment 419795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727370</commentid>
    <comment_count>23</comment_count>
      <attachid>419795</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-09 17:37:29 -0800</bug_when>
    <thetext>Comment on attachment 419795
Patch

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

I think we arrived at a neat and simple solution. r=me, bar EWS and the two minor comments.

&gt; Source/WebKit/ChangeLog:1
&gt; +2021-02-08  Kate Cheney  &lt;katherine_cheney@apple.com&gt;

Nit: We&apos;ve discussing this one so long that it&apos;s now Feb 9th. :) Maybe the cq takes care of that? I&apos;ve never checked.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:233
&gt; +            // Attributions are sorted by earliestTimeToSend, so the first time we hit this will always be the min value of nextTimeToFire.

I think I understand what you&apos;re saying here but maybe it can be said more clearly? I&apos;m thinking &quot;... the first time we hit this we know there can be no further attributions due for reporting.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727547</commentid>
    <comment_count>24</comment_count>
      <attachid>419795</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-10 08:34:14 -0800</bug_when>
    <thetext>Comment on attachment 419795
Patch

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

Thanks for the comments! This patch got a lot simpler with your suggestions.

&gt;&gt; Source/WebKit/ChangeLog:1
&gt;&gt; +2021-02-08  Kate Cheney  &lt;katherine_cheney@apple.com&gt;
&gt; 
&gt; Nit: We&apos;ve discussing this one so long that it&apos;s now Feb 9th. :) Maybe the cq takes care of that? I&apos;ve never checked.

Will fix just in case.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:233
&gt;&gt; +            // Attributions are sorted by earliestTimeToSend, so the first time we hit this will always be the min value of nextTimeToFire.
&gt; 
&gt; I think I understand what you&apos;re saying here but maybe it can be said more clearly? I&apos;m thinking &quot;... the first time we hit this we know there can be no further attributions due for reporting.&quot;

That is also true, but the main point I am trying to get across with this comment is that in the past we iterated over all attributions to find the minimum earliestTimeToSend so that nextTimeToFire was as soon as possible. Since they are now sorted, we know that nextTimeToFire will be at its minimum value the first time we hit a report that is not yet overdue.

Maybe &quot;Attributions are sorted by earliestTimeToSend, so the first time we hit this we know there can be no further attributions due for reporting, and nextTimeToFire is the minimum earliestTimeToSend value for any attribution.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727550</commentid>
    <comment_count>25</comment_count>
      <attachid>419848</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-10 08:41:35 -0800</bug_when>
    <thetext>Created attachment 419848
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727581</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-10 09:38:17 -0800</bug_when>
    <thetext>Committed r272660: &lt;https://commits.webkit.org/r272660&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419848.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419602</attachid>
            <date>2021-02-08 10:09:52 -0800</date>
            <delta_ts>2021-02-08 13:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221555-20210208100951.patch</filename>
            <type>text/plain</type>
            <size>22416</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUxMmIzZDNiNDhiNmVj
NjA5MDEwMjA1NWVmZjM5ZGY3MjNlZDM0YS4uNDgzMGU3YmVlMDYzMjIyYzg1YzMxY2QwNDBjY2Nh
YWY0NTMzODExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAyLTA4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogZXhw
aXJlZCByZXBvcnRzIGdldCBzZW50IGF0IHRoZSBzYW1lIHRpbWUgYWZ0ZXIgYSBzZXNzaW9uIHJl
c3RhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTU1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzM3MjQ4MTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVxdWFscyBvcGVyYXRvciB0byBQ
Q00gb2JqZWN0IHNvIHdlIGNhbiB1c2UgdGhlIHJlbW92ZUZpcnN0KCkKKyAgICAgICAgZnVuY3Rp
b24gZm9yIFdURjo6VmVjdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBkaWZm
aWN1bHQgdG8gdGVzdCB3aXRoIGxheW91dC9BUEkgdGVzdHMgYmVjYXVzZSAKKyAgICAgICAgaXQg
cmVxdWlyZXMgY29uZmlybWluZyB0aGF0IHJlcG9ydHMgYXJlIHNlbnQgYXQgYSBkZWxheS4gRXh0
ZW5zaXZlIGxvY2FsCisgICAgICAgIHRlc3Rpbmcgd2FzIGRvbmUgaW4gZGVidWcgbW9kZSB0byBj
b25maXJtIHRoYXQgYXR0cmlidXRpb25zIGFyZSBzZW50CisgICAgICAgIGV2ZXJ5IDIgbWludXRl
cyAodGhpcyB3b3VsZCBiZSAxNS0zMCBpbiBub24tZGVidWcgbW9kZSksIGFyZSBzZXBhcmF0ZQor
ICAgICAgICBmcm9tIG5vbi1leHBpcmVkIGF0dHJpYnV0aW9ucywgYW5kIGFyZSBpbnNlcnRlZCBi
YWNrIGludG8gdGhlIGRhdGFiYXNlCisgICAgICAgIGlmIHRoZSBzZXNzaW9uIGVuZHMgYmVmb3Jl
IHRoZSB2ZWN0b3IgaXMgZW1wdGllZC4gRXhpc3RpbmcgbGF5b3V0IHRlc3RzCisgICAgICAgIGNv
bmZpcm0gbm8gcmVncmVzc2lvbnMuCisKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpv
cGVyYXRvcj09IGNvbnN0KToKKwogMjAyMS0wMi0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yICJ3b3JkIHNlcGFy
YXRvciIgd2hlbiB0aGUgd2hpdGVzcGFjZSBjb250ZW50IGhhcyBtdWx0aXBsZSBjaGFyYWN0ZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLmQz
YmJlMjZkMDM0ZDZkYjAxMmNlNTBjOTcwNjc5YmIxOWY2YTYxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjQgQEAKKzIwMjEtMDItMDggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUENNOiBleHBpcmVkIHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNh
bWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTaW5jZSBQQ00gcmVwb3J0cyBhcmUgbm93IHBlcnNpc3RlZCwgd2UgbmVlZCB0byBhZGRyZXNz
IHRoZQorICAgICAgICBjYXNlIG9mIGEgc2Vzc2lvbi1yZXN0YXJ0IGFmdGVyIDI0LTQ4KyBob3Vy
cy4gV2Ugc2hvdWxkIG5vdCBzZW5kIGFsbAorICAgICAgICBleHBpcmVkIGF0dHJpYnV0aW9ucyBp
biB0aGUgc2FtZSBidXJzdCBpbiBjYXNlIG11bHRpcGxlIGhhdmUgdGhlIHNhbWUKKyAgICAgICAg
ZGVzdGluYXRpb24gYW5kIGNvdWxkIGlkZW50aWZ5IGEgdXNlciBjcm9zcy1zaXRlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggY29sbGVjdHMgYWxsIGV4cGlyZWQgYXR0cmlidXRpb25zIG9uIHNlc3Np
b24tc3RhcnQgYW5kIHJlcG9ydHMKKyAgICAgICAgdGhlbSBzZXBhcmF0ZWx5IGF0IGEgcmFuZG9t
IGludGVydmFsIGJldHdlZW4gMTUgYW5kIDMwIG1pbnV0ZXMuIElmIHRoZQorICAgICAgICBzZXNz
aW9uIGVuZHMgYmVmb3JlIGFsbCBleHBpcmVkIGF0dHJpYnV0aW9ucyBoYXZlIGJlZW4gc2VudCwg
YW55CisgICAgICAgIHJlbWFpbmluZyBleHBpcmVkIGF0dHJpYnV0aW9ucyBhcmUgaW5zZXJ0ZWQg
YmFjayBpbnRvIHRoZSBkYXRhYmFzZSB0byBiZQorICAgICAgICBzZW50IGxhdGVyIG9uLiBJbiB0
aGVvcnkgdGhpcyBjb3VsZCByZXN1bHQgaW4gc29tZSBhdHRyaWJ1dGlvbnMgbmV2ZXIKKyAgICAg
ICAgYmVpbmcgc2VudCBpZiBhIHVzZXIga2VlcHMgcXVpdHRpbmcgYW5kIHJlc3RhcnRpbmcgYSBz
ZXNzaW9uLiBJbiBwcmFjdGljZQorICAgICAgICB0aGlzIGlzIHByb2JhYmx5IHVubGlrZWx5Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICBBZGQgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gaW5zZXJ0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgYmVjYXVzZSB3ZQorICAgICAgICB3YW50IHRvIG1ha2Ugc3VyZSByZS1pbnNlcnRp
b25zIGZpbmlzaCBiZWZvcmUgdGhlIGJyb3dzZXIgc2Vzc2lvbiBjbG9zZXMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICBDb252ZXJ0IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgdG8gYSB1
bmlxdWVfcHRyIHNvIHdlIGNhbiB3YWl0IHRvCisgICAgICAgIGNyZWF0ZSBpdCBhZnRlciBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgaXMgY3JlYXRlZC4gVGhpcyBlbnN1cmVzCisgICAg
ICAgIHRoYXQgdGhlIGNhbGwgdG8gY3JlYXRlIHRoZSBTUUxpdGUgZGF0YWJhc2Ugd2lsbCBydW4g
b24gYQorICAgICAgICBiYWNrZ3JvdW5kIHRocmVhZCBiZWZvcmUgd2UgcXVlcnkgZm9yIGV4cGly
ZWQgUENNIGF0dHJpYnV0aW9uIGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmZsdXNoUENNQXR0cmlidXRpb25zKToKKyAgICAgICAgV3JpdGUgcmVtYWluaW5nIGV4cGly
ZWQgYXR0cmlidXRpb25zIHRvIHRoZSBkYXRhYmFzZSBpZiB0aGUgY29ubmVjdGlvbgorICAgICAg
ICB0byB0aGUgcGFyZW50IHByb2Nlc3MgaXMgYnJva2VuLgorCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVy
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpj
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpt
YXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUaW1lckltbWVkaWF0ZWx5KToKKyAgICAgICAgTm93IHRoYXQgbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBpcyBhIHVuaXF1ZV9wdHIgd2Ugc2hvdWxkIGFsd2F5cworICAgICAgICBjaGVj
ayB0aGF0IGl0IGlzIG5vbi1udWxsIGJlZm9yZSB1c2luZyBpdC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZsdXNo
QXR0cmlidXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzY2hlZHVsZUV4cGlyZWRBdHRyaWJ1dGlvblJlcXVlc3RzKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlRXhwaXJlZEF0dHJpYnV0
aW9uUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmg6CisKIDIwMjEtMDItMDUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQu
TmV0d29ya2luZyBhdCBXZWJLaXQ6IFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmluZGV4IDAxZjBkOGY3MTZhOTU2OWViZGQ1NjQw
ZmY4ZDJkMWFmYjU1MDUxOTQuLmQ5MGYzMTAxNThhNTg4MTJhOTA4ZDMwOWEwNTMxOWJiMTM4MzBi
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5oCkBAIC00Myw2ICs0MywxMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFBjbURhdGFD
YXJyaWVkIDogYm9vbCB7IE5vblBlcnNvbmFsbHlJZGVudGlmaWFibGUsIFBlcnNvbmFsbHlJZGVu
dGlmaWFibGUgfTsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBjb25zdCBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NvdXJjZVNpdGUg
PT0gb3RoZXIuc291cmNlU2l0ZSgpICYmIG1fYXR0cmlidXRlT25TaXRlID09IG90aGVyLmF0dHJp
YnV0ZU9uU2l0ZSgpOworICAgIH0KKwogICAgIHN0cnVjdCBTb3VyY2VJRCB7CiAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgTWF4RW50cm9weSA9IDI1NTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZTg4ZTY3NjAwNjg0
OWMxYTY1M2MzMWZiYzVhMmM4M2YxNzM3MmYzLi4zYTQxNGY5Yzg2YzQ1YWE3YmVjMDUwNDIyYjc3
NmM5ODhkYTNlMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTQ3NSwxOCArMTQ3NSwyMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVn
aQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRy
aWJ1dGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRp
b25UeXBlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydFByaXZh
dGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24s
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShh
dHRyaWJ1dGlvbiksIGF0dHJpYnV0aW9uVHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFt
X3N0YXRpc3RpY3NTdG9yZSkKKyAgICBwb3N0VGFzayhbdGhpcywgYXR0cmlidXRpb24gPSBXVEZN
b3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fc3Rh
dGlzdGljc1N0b3JlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmlu
c2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1
dGlvblR5cGUpOworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCmluZGV4IDdmNWI1N2I4OWVhNDBhYjhkNzJkNjdmNmJmMDMyYzQ2MTczYzQ1ZTgu
LjAxZjMxMjMzNzI3NjliNmU1MDBlNGI5OTdlOTIyNzI1YjQ1ODFhZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTMwNyw3ICszMDcsNyBAQCBz
dHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudC4KLSAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlKTsKKyAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZygpOwogICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
Y29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRlT25TaXRlJiwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNvbmRzPik+JiYpOwogICAgIHZvaWQg
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdh
OTMxOTQ4YTA1NmViOTJlY2JkM2YyZDI3NGRmMTQ0ZGYwMWE5NWUuLmRmYWNhMGQ2YWQyYmQ1OTM2
YjhkN2Q4MGMwZmQ4YThjMzAxMmZkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNjcsNiArMjY3LDEzIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVz
aENvb2tpZXMobmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAgICAgfSk7CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7Cisg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLmZsdXNoUENNQXR0cmlidXRpb25zKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CisgICAgfSk7CisjZW5kaWYKKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkaWRDcmVhdGVEb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDY2NzVmNjAwNDZlNzE3NjRhMzkyMTc5ZWRlODdlNDRm
OTBmNTYxMTIuLjc1ZjNhNDg2NDFiMDk5MmY5ZjU5YTk5ZjMxMTIyNTAwZjkyYzA4ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05
MSw3ICs5MSw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgotICAgICwgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChtYWtlVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCkp
CiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBs
aWVyKQogICAgICwgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdCkKIHsKQEAgLTEyMCwxNSArMTE5LDE1IEBAIE5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdv
cmtTZXNzCiAKICAgICBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkID0gcGFyYW1ldGVy
cy5zdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CisgICAgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsK
ICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRQaW5nTG9hZEZ1bmN0aW9uKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLy8gUGluZ0xvYWQgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1lLCBk
ZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVlbiBmdWxmaWxsZWQuCiAgICAg
ICAgIG5ldyBQaW5nTG9hZChtX25ldHdvcmtQcm9jZXNzLCBtX3Nlc3Npb25JRCwgV1RGTW92ZShs
b2FkUGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKLQot
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5lbmFibGVkKTsKICNlbmRpZgogfQogCkBAIC0xNjQsNiArMTYzLDE1IEBAIHZvaWQgTmV0
d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogfQogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmZsdXNoUENNQXR0cmli
dXRpb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50LT5mbHVzaEF0dHJpYnV0aW9ucyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKGJvb2wgZW5hYmxlKQogewogICAgIEFTU0VSVCghbV9pc0ludmFsaWRhdGVkKTsKQEAgLTMw
Niw1MSArMzE0LDg1IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRh
KCkKIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50
KQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAgcmV0dXJu
OworICAgIAogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnN0b3JlVW5hdHRyaWJ1dGVk
KFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6aGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPmhh
bmRsZUF0dHJpYnV0aW9uKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIHJlcXVlc3RV
UkwsIHJlZGlyZWN0UmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmR1bXBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKCFtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT50b1N0cmluZyhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Y2xlYXIo
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
KQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Y2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihXVEZNb3ZlKGRvbWFpbikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpCiB7
CisgICAgaWYgKCFtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KQorICAgICAgICByZXR1cm47CisK
ICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyh2YWx1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKCFtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5tYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVSTCYmIHVybCkKIHsKKyAgICBp
ZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdURk1v
dmUodXJsKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQtPm1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OmZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRp
YXRlbHkoKQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c3RhcnRUaW1lcigwX3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
aW5kZXggMWE4ZjU4Y2YyYjFkMjJlZWJlYjc4MjhhNWRjYTIwOWJhNjIwNGY3OC4uNTZlZmVlMzZl
NGY4ZWEzYjJmZTA2MDE5ZDQxYWQ0MzM3MTU4NmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTEwLDYgKzExMCw3IEBAIHB1YmxpYzoK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gdGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZzsgfQogICAgIHZvaWQgcmVzZXRDTkFNRURvbWFpbkRhdGEoKTsKICAgICB2b2lk
IGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBmbHVzaFBDTUF0dHJpYnV0aW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAt
MTc5LDcgKzE4MCw3IEBAIHByb3RlY3RlZDoKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nOwogI2VuZGlmCiAg
ICAgYm9vbCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBV
bmlxdWVSZWY8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKICAgICBIYXNoU2V0PFJlZjxOZXR3
b3JrUmVzb3VyY2VMb2FkZXI+PiBtX2tlcHRBbGl2ZUxvYWRzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5jcHAKaW5kZXggODZmOTliYTUxNTM5N2RlMjEwZjgzMDEzNDk1YzY1ZmYyNTQzMzZl
Mi4uZTdiYmFlMTcyNTc5ZTY2ZmEzM2IyNDJkNzExMDMyZjZiOGNiMzk1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+Cisj
aW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTUx
LDYgKzUyLDcgQEAgY29uc3RleHByIFNlY29uZHMgZGVidWdNb2RlU2Vjb25kc1VudGlsU2VuZCB7
IDEwX3MgfTsKIAogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6
IG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXIoKnRoaXMsICZQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cykKKyAg
ICAsIG1fZmlyZUV4cGlyZWRBdHRyaWJ1dGlvbnNUaW1lcigqdGhpcywgJlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6ZmlyZUV4cGlyZWRBdHRyaWJ1dGlvblJlcXVlc3QpCiAgICAgLCBt
X25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fbmV0
d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CkBAIC01OSwxMCArNjEsNyBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbgogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UoKSk7CiAgICAgfSkKIHsKLSAgICAvLyBXZSBzaG91bGQgc2VuZCBhbnkgcGVuZGlu
ZyBhdHRyaWJ1dGlvbnMgb24gc2Vzc2lvbi1zdGFydCBpbiBjYXNlIHRoZWlyCi0gICAgLy8gc2Vu
ZCBkZWxheSBoYXMgZXhwaXJlZCB3aGlsZSB0aGUgc2Vzc2lvbiB3YXMgY2xvc2VkLiBXYWl0aW5n
IDUgc2Vjb25kcyBhY2NvdW50cyBmb3IgdGhlCi0gICAgLy8gZGVsYXkgaW4gZGF0YWJhc2Ugc3Rh
cnR1cC4KLSAgICBzdGFydFRpbWVyKDVfcyk7CisgICAgc2NoZWR1bGVFeHBpcmVkQXR0cmlidXRp
b25SZXF1ZXN0cygpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbikK
QEAgLTc2LDcgKzc1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0
b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdURk1vdmUoYXR0cmlidXRpb24pLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQsIFtdIHsgfSk7CiAj
ZW5kaWYKIH0KIApAQCAtMTg5LDYgKzE4OCw3MSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRpb25zKFZlY3RvcjxQcml2YXRlQ2xpY2tNZQog
I2VuZGlmCiB9CiAKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmbHVzaEF0
dHJpYnV0aW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoIWZlYXR1
cmVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisKKyAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGF0dHJpYnV0aW9uIDogbV9leHBpcmVkQXR0cmlidXRpb25zKQorICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92
ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpB
dHRyaWJ1dGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIH0KKyNlbmRpZgorfQor
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2NoZWR1bGVFeHBpcmVkQXR0
cmlidXRpb25SZXF1ZXN0cygpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQorICAgICAg
ICByZXR1cm47CisKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hbGxBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoW3RoaXNdIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAg
ICAgIGlmIChhdHRyaWJ1dGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGZvciAoYXV0byYgYXR0cmlidXRpb24gOiBhdHRyaWJ1dGlvbnMpIHsKKyAgICAgICAg
ICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOworICAgICAgICAgICAgaWYgKGF0dHJpYnV0
aW9uLmVhcmxpZXN0VGltZVRvU2VuZCgpICYmICphdHRyaWJ1dGlvbi5lYXJsaWVzdFRpbWVUb1Nl
bmQoKSA8PSBub3cpIHsKKyAgICAgICAgICAgICAgICBtX2V4cGlyZWRBdHRyaWJ1dGlvbnMuYXBw
ZW5kKGF0dHJpYnV0aW9uKTsKKyAgICAgICAgICAgICAgICBjbGVhclNlbnRBdHRyaWJ1dGlvbnMo
eyBhdHRyaWJ1dGlvbiB9KTsKKworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0
ZDo6c29ydChtX2V4cGlyZWRBdHRyaWJ1dGlvbnMuYmVnaW4oKSwgbV9leHBpcmVkQXR0cmlidXRp
b25zLmVuZCgpLCBbXSAoY29uc3QgYXV0byYgbGhzLCBjb25zdCBhdXRvJiByaHMpIHsKKyAgICAg
ICAgICAgIHJldHVybiBsaHMuZWFybGllc3RUaW1lVG9TZW5kKCkgPCByaHMuZWFybGllc3RUaW1l
VG9TZW5kKCk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIFNlbmQgZXhwaXJlZCBhdHRyaWJ1
dGlvbnMgaW4gcmFuZG9tIGludGVydmFsIGJldHdlZW4gMTUgYW5kIDMwIG1pbnV0ZXMgdG8gYXZv
aWQgYSBidXJzdCBvZiBzaW11bHRhbmVvdXMgYXR0cmlidXRpb25zLgorICAgICAgICAvLyBJZiBk
ZWJ1ZyBtb2RlIGlzIGVuYWJsZWQsIHNlbmQgcmVwb3J0cyBldmVyeSAyIG1pbnV0ZXMgZm9yIHRl
c3RpbmcgcHVycG9zZXMuCisgICAgICAgIGF1dG8gaW50ZXJ2YWwgPSBkZWJ1Z01vZGVFbmFibGVk
KCkgPyAxMjAgOiAoOTAwICsgKGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSA5MDAp
KTsKKyAgICAgICAgZmlyZUV4cGlyZWRBdHRyaWJ1dGlvblJlcXVlc3QoKTsKKyAgICAgICAgbV9m
aXJlRXhwaXJlZEF0dHJpYnV0aW9uc1RpbWVyLnN0YXJ0UmVwZWF0aW5nKFNlY29uZHMoaW50ZXJ2
YWwpKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6ZmlyZUV4cGlyZWRBdHRyaWJ1dGlvblJlcXVlc3QoKQoreworICAgIGlmICghZmVh
dHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZXhwaXJlZEF0dHJp
YnV0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9maXJlRXhwaXJlZEF0dHJpYnV0aW9uc1Rp
bWVyLnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXhwaXJlZEF0
dHJpYnV0aW9uID0gbV9leHBpcmVkQXR0cmlidXRpb25zLmZpcnN0KCk7CisgICAgZmlyZUNvbnZl
cnNpb25SZXF1ZXN0KGV4cGlyZWRBdHRyaWJ1dGlvbik7CisgICAgbV9leHBpcmVkQXR0cmlidXRp
b25zLnJlbW92ZUZpcnN0KGV4cGlyZWRBdHRyaWJ1dGlvbik7Cit9CisKIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaAppbmRleCAyZmZjYTQxYjdhNmQxNWY5NjIyNjU3YjU2ZDUwYjU5ZmI2NDhjYTYyLi5m
OTc0YjUzMDBjNGNjZTgzNDc0MGNmMGY2MTBhODVlMjJhODdjODA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0FsbFVu
YXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKKyAgICB2b2lk
IGZsdXNoQXR0cmlidXRpb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoVmVjdG9yPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmKTsKQEAgLTc0LDE0ICs3NSwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJFeHBpcmVkKCk7CiAgICAgYm9vbCBmZWF0dXJlRW5hYmxlZCgpIGNvbnN0OwogICAgIGJvb2wg
ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgZmlyZUV4cGlyZWRBdHRyaWJ1dGlv
blJlcXVlc3QoKTsKKyAgICB2b2lkIHNjaGVkdWxlRXhwaXJlZEF0dHJpYnV0aW9uUmVxdWVzdHMo
KTsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3Rz
VGltZXI7CisgICAgV2ViQ29yZTo6VGltZXIgbV9maXJlRXhwaXJlZEF0dHJpYnV0aW9uc1RpbWVy
OwogICAgIGJvb2wgbV9pc1J1bm5pbmdUZXN0IHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxVUkw+
IG1fYXR0cmlidXRpb25CYXNlVVJMRm9yVGVzdGluZzsKICAgICBXZWFrUHRyPE5ldHdvcmtTZXNz
aW9uPiBtX25ldHdvcmtTZXNzaW9uOwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3Jr
UHJvY2VzczsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBGdW5jdGlvbjx2
b2lkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKT4mJik+IG1fcGluZ0xvYWRGdW5jdGlvbjsKKyAgICBWZWN0b3I8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IG1fZXhwaXJlZEF0dHJpYnV0aW9uczsKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419619</attachid>
            <date>2021-02-08 13:16:38 -0800</date>
            <delta_ts>2021-02-08 16:45:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221555-20210208131637.patch</filename>
            <type>text/plain</type>
            <size>23914</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5
ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLjYyZDVmMmRlM2EzMzU2MTI3ZTU4NWQzY2RlNjA1MjZl
MjE2OTg2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDItMDggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBleHBpcmVk
IHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNhbWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBQQ00gcmVwb3J0cyBhcmUgbm93IHBl
cnNpc3RlZCwgd2UgbmVlZCB0byBhZGRyZXNzIHRoZQorICAgICAgICBjYXNlIG9mIGEgc2Vzc2lv
bi1yZXN0YXJ0IGFmdGVyIDI0LTQ4KyBob3Vycy4gV2Ugc2hvdWxkIG5vdCBzZW5kIGFsbAorICAg
ICAgICBleHBpcmVkIGF0dHJpYnV0aW9ucyBpbiB0aGUgc2FtZSBidXJzdCBpbiBjYXNlIG11bHRp
cGxlIGhhdmUgdGhlIHNhbWUKKyAgICAgICAgZGVzdGluYXRpb24gYW5kIGNvdWxkIGlkZW50aWZ5
IGEgdXNlciBjcm9zcy1zaXRlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY29sbGVjdHMgYWxsIGV4
cGlyZWQgYXR0cmlidXRpb25zIG9uIHNlc3Npb24tc3RhcnQgYW5kIHJlcG9ydHMKKyAgICAgICAg
dGhlbSBzZXBhcmF0ZWx5IGF0IGEgcmFuZG9tIGludGVydmFsIGJldHdlZW4gMTUgYW5kIDMwIG1p
bnV0ZXMuIElmIHRoZQorICAgICAgICBzZXNzaW9uIGVuZHMgYmVmb3JlIGFsbCBleHBpcmVkIGF0
dHJpYnV0aW9ucyBoYXZlIGJlZW4gc2VudCwgYW55CisgICAgICAgIHJlbWFpbmluZyBleHBpcmVk
IGF0dHJpYnV0aW9ucyBhcmUgaW5zZXJ0ZWQgYmFjayBpbnRvIHRoZSBkYXRhYmFzZSB0byBiZQor
ICAgICAgICBzZW50IGxhdGVyIG9uLiBJbiB0aGVvcnkgdGhpcyBjb3VsZCByZXN1bHQgaW4gc29t
ZSBhdHRyaWJ1dGlvbnMgbmV2ZXIKKyAgICAgICAgYmVpbmcgc2VudCBpZiBhIHVzZXIga2VlcHMg
cXVpdHRpbmcgYW5kIHJlc3RhcnRpbmcgYSBzZXNzaW9uLiBJbiBwcmFjdGljZQorICAgICAgICB0
aGlzIGlzIHByb2JhYmx5IHVubGlrZWx5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBp
cyBkaWZmaWN1bHQgdG8gdGVzdCB3aXRoIGxheW91dC9BUEkgdGVzdHMgYmVjYXVzZSAKKyAgICAg
ICAgaXQgcmVxdWlyZXMgY29uZmlybWluZyB0aGF0IHJlcG9ydHMgYXJlIHNlbnQgYXQgYSBkZWxh
eS4gRXh0ZW5zaXZlIGxvY2FsCisgICAgICAgIHRlc3Rpbmcgd2FzIGRvbmUgaW4gZGVidWcgbW9k
ZSB0byBjb25maXJtIHRoYXQgYXR0cmlidXRpb25zIGFyZSBzZW50CisgICAgICAgIGV2ZXJ5IDIg
bWludXRlcyAodGhpcyB3b3VsZCBiZSAxNS0zMCBpbiBub24tZGVidWcgbW9kZSksIGFyZSBzZXBh
cmF0ZQorICAgICAgICBmcm9tIG5vbi1leHBpcmVkIGF0dHJpYnV0aW9ucywgYW5kIGFyZSBpbnNl
cnRlZCBiYWNrIGludG8gdGhlIGRhdGFiYXNlCisgICAgICAgIGlmIHRoZSBzZXNzaW9uIGVuZHMg
YmVmb3JlIHRoZSB2ZWN0b3IgaXMgZW1wdGllZC4gRXhpc3RpbmcgbGF5b3V0IHRlc3RzCisgICAg
ICAgIGNvbmZpcm0gbm8gcmVncmVzc2lvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAg
ICAgU29ydCBhdHRyaWJ1dGlvbnMgYnkgZWFybGllc3RUaW1lVG9TZW5kIGluIFNRTGl0ZSBiZWNh
dXNlIGl0J3MgZmFzdGVyCisgICAgICAgIGFuZCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvIGFsbG9j
YXRlIG1lbW9yeSB0byBkbyBpdCBsYXRlci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkIGEgY29tcGxldGlvbiBoYW5k
bGVyIHRvIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGJlY2F1c2Ugd2UKKyAgICAgICAg
d2FudCB0byBtYWtlIHN1cmUgcmUtaW5zZXJ0aW9ucyBmaW5pc2ggYmVmb3JlIHRoZSBicm93c2Vy
IHNlc3Npb24gY2xvc2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgQ29udmVydCBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50IHRvIGEgdW5pcXVlX3B0ciBzbyB3ZSBjYW4gd2FpdCB0bwor
ICAgICAgICBjcmVhdGUgaXQgYWZ0ZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGlz
IGNyZWF0ZWQuIFRoaXMgZW5zdXJlcworICAgICAgICB0aGF0IHRoZSBjYWxsIHRvIGNyZWF0ZSB0
aGUgU1FMaXRlIGRhdGFiYXNlIHdpbGwgcnVuIG9uIGEKKyAgICAgICAgYmFja2dyb3VuZCB0aHJl
YWQgYmVmb3JlIHdlIHF1ZXJ5IGZvciBleHBpcmVkIFBDTSBhdHRyaWJ1dGlvbiBkYXRhLgorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpmbHVzaFBDTUF0dHJpYnV0aW9ucyk6Cisg
ICAgICAgIFdyaXRlIHJlbWFpbmluZyBleHBpcmVkIGF0dHJpYnV0aW9ucyB0byB0aGUgZGF0YWJh
c2UgaWYgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgdG8gdGhlIHBhcmVudCBwcm9jZXNzIGlzIGJy
b2tlbi4KKworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c3RvcmVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpoYW5kbGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZv
clJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bWFya1ByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6ZmlyZVByaXZhdGVDbGlja01lYXN1cmVtZW50VGltZXJJbW1lZGlhdGVseSk6CisgICAg
ICAgIE5vdyB0aGF0IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaXMgYSB1bmlxdWVfcHRyIHdl
IHNob3VsZCBhbHdheXMKKyAgICAgICAgY2hlY2sgdGhhdCBpdCBpcyBub24tbnVsbCBiZWZvcmUg
dXNpbmcgaXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmbHVzaEF0dHJpYnV0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2NoZWR1bGVFeHBpcmVkQXR0cmli
dXRpb25SZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6ZmlyZUV4cGlyZWRBdHRyaWJ1dGlvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmg6CisKIDIwMjEt
MDItMDUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyBhdCBXZWJLaXQ6IFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJl
c291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCBkOGI0NGM4MWEwNTM1NjVhYTBlNDkyMGZiNDdhMDNiYWFkMDE1M2E1
Li4yZTJlMWQ2NTdiMjhkMGUzNWU5OGEzY2JlYjYxODJiZDdkMWIxYjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEz
OSw3ICsxMzksNyBAQCBjb25zdGV4cHIgYXV0byBnZXRBbGxTdWJTdGF0aXN0aWNzVW5kZXJEb21h
aW5RdWVyeSA9ICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUgogICAgICJVTklPTiBBTEwgU0VM
RUNUIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
IFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRv
RG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291
cmNlRG9tYWluSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gYWxsVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbnNRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwotY29uc3RleHByIGF1dG8gYWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICogRlJPTSBBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7Citjb25zdGV4cHIgYXV0byBhbGxBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBPUkRFUiBCWSBlYXJsaWVzdFRpbWVUb1NlbmQi
X3M7CiBjb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9t
YWluSUQgPSA/IEFORCBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9ID8iX3M7CiBjb25zdGV4cHIg
YXV0byBmaW5kQXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGF0dHJp
YnV0ZU9uU2l0ZURvbWFpbklEID0gPyJfczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZTg4ZTY3NjAwNjg0OWMxYTY1M2MzMWZiYzVh
MmM4M2YxNzM3MmYzLi4yYjc4YTMzY2FiYjc5OTUyMzNkZGUwMmU3N2E0YTYwYjM0N2I2ZThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MTQ3NSwxOCArMTQ3NSwyMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaQogICAgIH0pOwogfQog
Ci12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgYXR0cmlidXRpb25UeXBlKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBpZiAoaXNFcGhlbWVyYWwoKSkKKyAgICBpZiAoaXNFcGhlbWVyYWwo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgcG9zdFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlv
biksIGF0dHJpYnV0aW9uVHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3Rp
Y3NTdG9yZSkKKyAgICBwb3N0VGFzayhbdGhpcywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJp
YnV0aW9uKSwgYXR0cmlidXRpb25UeXBlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0
b3JlKSB7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0
aW9uKSwgYXR0cmlidXRpb25UeXBlKTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA3ZjViNTdiODllYTQwYWI4ZDcyZDY3ZjZiZjAz
MmM0NjE3M2M0NWU4Li4wMWYzMTIzMzcyNzY5YjZlNTAwZTRiOTk3ZTkyMjcyNWI0NTgxYWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMDcs
NyArMzA3LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIGluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAg
IC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCi0gICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CisgICAgdm9pZCBpbnNlcnRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
ZU9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2Vjb25kcz4pPiYm
KTsKICAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3YTkzMTk0OGEwNTZlYjkyZWNiZDNmMmQyNzRkZjE0NGRmMDFhOTVlLi5kZmFj
YTBkNmFkMmJkNTkzNmI4ZDdkODBjMGZkOGE4YzMwMTJmZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjY3LDYgKzI2NywxMyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIGZv
ckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAg
IHBsYXRmb3JtRmx1c2hDb29raWVzKG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0pOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3Jr
U2Vzc2lvbikgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi5mbHVzaFBDTUF0dHJpYnV0aW9ucyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIH0pOworI2VuZGlmCisKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA2Njc1ZjYwMDQ2ZTcxNzY0YTM5
MjE3OWVkZTg3ZTQ0ZjkwZjU2MTEyLi43NWYzYTQ4NjQxYjA5OTJmOWY1OWE5OWYzMTEyMjUwMGY5
MmMwOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcApAQCAtOTEsNyArOTEsNiBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24o
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgICwg
bV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQog
ICAgICwgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4ocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAjZW5k
aWYKLSAgICAsIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQobWFrZVVuaXF1ZVJlZjxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cy5zZXNzaW9uSUQpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVz
dFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdChwYXJhbWV0
ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCiB7CkBAIC0xMjAsMTUgKzExOSwxNSBAQCBOZXR3
b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBjb25zdCBOZXR3b3JrU2VzcwogCiAgICAgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxl
ZCA9IHBhcmFtZXRlcnMuc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkOwogCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJs
ZWQpOworICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJz
LnNlc3Npb25JRCk7CiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c2V0UGluZ0xvYWRG
dW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIFBpbmdMb2FkIG1hbmFnZXMgaXRzIG93
biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVs
ZmlsbGVkLgogICAgICAgICBuZXcgUGluZ0xvYWQobV9uZXR3b3JrUHJvY2VzcywgbV9zZXNzaW9u
SUQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgfSk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CiAjZW5kaWYKIH0KIApAQCAtMTY0LDYgKzE2Mywx
NSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKIH0KIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpm
bHVzaFBDTUF0dHJpYnV0aW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Zmx1c2hBdHRyaWJ1dGlvbnMoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBBU1NFUlQoIW1faXNJbnZhbGlk
YXRlZCk7CkBAIC0zMDYsNTEgKzMxNCw4NSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZXNldENO
QU1FRG9tYWluRGF0YSgpCiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnN0b3JlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCkKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zdG9y
ZVVuYXR0cmlidXRlZChXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50KSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OmhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lv
bihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCiB7CisgICAgaWYgKCFtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50KQorICAgICAgICByZXR1cm47CisKICAgICBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50LT5oYW5kbGVBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCByZXF1ZXN0VVJMLCByZWRpcmVjdFJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+dG9TdHJpbmco
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpj
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQtPmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbikKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhi
b29sIHZhbHVlKQogeworICAgIGlmICghbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c2V0T3ZlcnJpZGVU
aW1lckZvclRlc3RpbmcodmFsdWUpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIGlmICghbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+
bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwmJiB1
cmwpCiB7CisgICAgaWYgKCFtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KQorICAgICAgICByZXR1
cm47CisKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRDb252ZXJzaW9uVVJMRm9y
VGVzdGluZyhXVEZNb3ZlKHVybCkpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpCiB7CisgICAgaWYgKCFt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50KQorICAgICAgICByZXR1cm47CisKICAgICBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50LT5tYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGlu
ZygpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUaW1lckltbWVkaWF0ZWx5KCkKIHsKKyAgICBpZiAoIW1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnN0
YXJ0VGltZXIoMF9zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IDFhOGY1OGNmMmIxZDIyZWViZWI3ODI4YTVkY2EyMDliYTYyMDRm
NzguLjU2ZWZlZTM2ZTRmOGVhM2IyZmUwNjAxOWQ0MWFkNDMzNzE1ODZkNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTExMCw2ICsxMTAs
NyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHRo
aXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7IH0KICAgICB2b2lkIHJlc2V0Q05BTUVEb21haW5EYXRh
KCk7CiAgICAgdm9pZCBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZmx1c2hQQ01BdHRyaWJ1dGlvbnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKQEAgLTE3OSw3ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
ZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZh
bHNlIH07Ci0gICAgVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyPiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCiAgICAgSGFz
aFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDg2Zjk5YmE1MTUzOTdkZTIxMGY4MzAxMzQ5
NWM2NWZmMjU0MzM2ZTIuLmY0N2RiZWYyYmI5MTYwNmJlM2IyZWI0MjkyZjVkZjRlMGRiY2RiNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oPgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC01MSw2ICs1Miw3IEBAIGNvbnN0ZXhwciBTZWNvbmRzIGRlYnVnTW9kZVNlY29u
ZHNVbnRpbFNlbmQgeyAxMF9zIH07CiAKIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgOiBtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyKCp0aGlz
LCAmUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9u
UmVxdWVzdHMpCisgICAgLCBtX2ZpcmVFeHBpcmVkQXR0cmlidXRpb25zVGltZXIoKnRoaXMsICZQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVFeHBpcmVkQXR0cmlidXRpb25SZXF1
ZXN0KQogICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikp
CiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQpAQCAtNTksMTAgKzYxLDcgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG4K
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgIH0pCiB7Ci0gICAgLy8gV2Ugc2hvdWxkIHNl
bmQgYW55IHBlbmRpbmcgYXR0cmlidXRpb25zIG9uIHNlc3Npb24tc3RhcnQgaW4gY2FzZSB0aGVp
cgotICAgIC8vIHNlbmQgZGVsYXkgaGFzIGV4cGlyZWQgd2hpbGUgdGhlIHNlc3Npb24gd2FzIGNs
b3NlZC4gV2FpdGluZyA1IHNlY29uZHMgYWNjb3VudHMgZm9yIHRoZQotICAgIC8vIGRlbGF5IGlu
IGRhdGFiYXNlIHN0YXJ0dXAuCi0gICAgc3RhcnRUaW1lcig1X3MpOworICAgIHNjaGVkdWxlRXhw
aXJlZEF0dHJpYnV0aW9uUmVxdWVzdHMoKTsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYg
YXR0cmlidXRpb24pCkBAIC03Niw3ICs3NSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CisgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRp
b24pLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVk
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKQEAgLTExMyw3ICsxMTIsMTAgQEAgdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZShjb25zdCBTb3VyY2VTaXRlJiBzb3Vy
Y2VTaXRlLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
IHsKLSAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgYXR0cmlidXRlT25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEpLCBbdGhpc10gKGF1dG8gb3B0aW9uYWxTZWNvbmRzVW50aWxTZW5kKSB7
CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KHNvdXJjZVNpdGUsIGF0dHJpYnV0ZU9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0
byBvcHRpb25hbFNlY29uZHNVbnRpbFNlbmQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBpZiAob3B0aW9uYWxTZWNv
bmRzVW50aWxTZW5kKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0g
Km9wdGlvbmFsU2Vjb25kc1VudGlsU2VuZDsKICAgICAgICAgICAgICAgICBpZiAobV9maXJlUGVu
ZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5pc0FjdGl2ZSgpICYmIG1fZmlyZVBlbmRpbmdB
dHRyaWJ1dGlvblJlcXVlc3RzVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpIDwgc2Vjb25kc1VudGls
U2VuZCkKQEAgLTE4OSw2ICsxOTEsNjggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OmNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0b3I8UHJpdmF0ZUNsaWNrTWUKICNlbmRp
ZgogfQogCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Zmx1c2hBdHRyaWJ1
dGlvbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKCFmZWF0dXJlRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9
IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KworICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgYXR0cmli
dXRpb24gOiBtX2V4cGlyZWRBdHRyaWJ1dGlvbnMpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0
aW9uKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQs
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzY2hlZHVsZUV4cGlyZWRBdHRyaWJ1dGlvblJl
cXVlc3RzKCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlm
ICghZmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKKyAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3MpCisgICAgICAgIHJldHVybjsK
KworICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYg
YXR0cmlidXRpb25zKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBpZiAoYXR0cmlidXRpb25zLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogYXR0cmli
dXRpb25zKSB7CisgICAgICAgICAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGlvbi5lYXJsaWVzdFRpbWVUb1NlbmQoKSAmJiAqYXR0cmlidXRp
b24uZWFybGllc3RUaW1lVG9TZW5kKCkgPD0gbm93KSB7CisgICAgICAgICAgICAgICAgbV9leHBp
cmVkQXR0cmlidXRpb25zLmFwcGVuZChhdHRyaWJ1dGlvbik7CisgICAgICAgICAgICAgICAgY2xl
YXJTZW50QXR0cmlidXRpb25zKHsgYXR0cmlidXRpb24gfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgLy8gU2VuZCBleHBpcmVkIGF0dHJpYnV0aW9ucyBpbiByYW5kb20gaW50
ZXJ2YWwgYmV0d2VlbiAxNSBhbmQgMzAgbWludXRlcyB0byBhdm9pZCBhIGJ1cnN0IG9mIHNpbXVs
dGFuZW91cyBhdHRyaWJ1dGlvbnMuCisgICAgICAgIC8vIElmIGRlYnVnIG1vZGUgaXMgZW5hYmxl
ZCwgc2VuZCByZXBvcnRzIGV2ZXJ5IDIgbWludXRlcyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAg
ICAgICAgYXV0byBpbnRlcnZhbCA9IGRlYnVnTW9kZUVuYWJsZWQoKSA/IDJfbWluIDogKDE1X21p
biArIFNlY29uZHMoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSAlIDkwMCkpOworICAg
ICAgICBmaXJlRXhwaXJlZEF0dHJpYnV0aW9uUmVxdWVzdCgpOworICAgICAgICBtX2ZpcmVFeHBp
cmVkQXR0cmlidXRpb25zVGltZXIuc3RhcnRSZXBlYXRpbmcoaW50ZXJ2YWwpOworICAgIH0pOwor
I2VuZGlmCit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlRXhw
aXJlZEF0dHJpYnV0aW9uUmVxdWVzdCgpCit7CisgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9leHBpcmVkQXR0cmlidXRpb25zLmlzRW1wdHko
KSkgeworICAgICAgICBtX2ZpcmVFeHBpcmVkQXR0cmlidXRpb25zVGltZXIuc3RvcCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBleHBpcmVkQXR0cmlidXRpb24gPSBtX2V4
cGlyZWRBdHRyaWJ1dGlvbnMudGFrZUZpcnN0KCk7CisgICAgZmlyZUNvbnZlcnNpb25SZXF1ZXN0
KGV4cGlyZWRBdHRyaWJ1dGlvbik7Cit9CisKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0xOTksNyArMjYzLDEwIEBAIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMo
KQogICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFt0aGlzXSAoYXV0byYmIGF0dHJpYnV0aW9ucykgeworICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAogICAgICAg
ICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsKICAgICAgICAgVmVj
dG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBzZW50QXR0cmlidXRpb25zOwogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IDJmZmNhNDFiN2E2ZDE1Zjk2MjI2NTdiNTZk
NTBiNTlmYjY0OGNhNjIuLmM0NDAwNjk4NjFlNDEyYmQyODBiNGYxMWEyMmVlMjg2N2IxMDVhZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwogICAgIHZv
aWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdGFydFRpbWVyKFNl
Y29uZHMpOworICAgIHZvaWQgZmx1c2hBdHRyaWJ1dGlvbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0
b3I8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpOwpAQCAtNzQsMTQgKzc1LDE4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhckV4cGlyZWQoKTsKICAgICBib29sIGZlYXR1cmVFbmFibGVkKCkg
Y29uc3Q7CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBmaXJl
RXhwaXJlZEF0dHJpYnV0aW9uUmVxdWVzdCgpOworICAgIHZvaWQgc2NoZWR1bGVFeHBpcmVkQXR0
cmlidXRpb25SZXF1ZXN0cygpOwogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9maXJlUGVuZGluZ0F0
dHJpYnV0aW9uUmVxdWVzdHNUaW1lcjsKKyAgICBXZWJDb3JlOjpUaW1lciBtX2ZpcmVFeHBpcmVk
QXR0cmlidXRpb25zVGltZXI7CiAgICAgYm9vbCBtX2lzUnVubmluZ1Rlc3QgeyBmYWxzZSB9Owog
ICAgIE9wdGlvbmFsPFVSTD4gbV9hdHRyaWJ1dGlvbkJhc2VVUkxGb3JUZXN0aW5nOwogICAgIFdl
YWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fbmV0d29ya1Nlc3Npb247CiAgICAgUmVmPE5ldHdvcmtQ
cm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogICAgIEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4gbV9waW5nTG9hZEZ1bmN0aW9uOworICAg
IERlcXVlPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX2V4cGlyZWRBdHRyaWJ1dGlvbnM7CiB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419655</attachid>
            <date>2021-02-08 16:45:05 -0800</date>
            <delta_ts>2021-02-09 13:45:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221555-20210208164504.patch</filename>
            <type>text/plain</type>
            <size>15849</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5
ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLmYwOGNjNjQ5MWNmMDY2YTE1NzgxOWZmNDE0ZjU3YWY1
YTQ3ZjY0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDItMDggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBFeHBpcmVk
IHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNhbWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBQQ00gZGF0YSBpcyBub3cgcGVyc2lz
dGVkLCB3ZSBuZWVkIHRvIGFkZHJlc3MgdGhlIGNhc2Ugb2YgYQorICAgICAgICBzZXNzaW9uLXJl
c3RhcnQgYWZ0ZXIgMjQtNDgrIGhvdXJzLiBXZSBzaG91bGQgbm90IHNlbmQgYWxsIG92ZXJkdWUK
KyAgICAgICAgYXR0cmlidXRpb25zIGluIHRoZSBzYW1lIGJ1cnN0IGluIGNhc2UgbXVsdGlwbGUg
aGF2ZSB0aGUgc2FtZSBkZXN0aW5hdGlvbgorICAgICAgICBhbmQgY291bGQgaWRlbnRpZnkgYSB1
c2VyIGNyb3NzLXNpdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBraWNrcyBvZmYgdGhlIHRpbWVy
IHRvIGZpcmUgcGVuZGluZyBhdHRyaWJ1dGlvbnMgb24gc2Vzc2lvbi1zdGFydAorICAgICAgICBh
bmQgc2VuZHMgb25lIHJlcG9ydCBhdCBhIHRpbWUuIElmIG1vcmUgdGhhbiBvbmUgb3ZlcmR1ZSBy
ZXBvcnQgZXhpc3RzCisgICAgICAgIGF0IGFueSB0aW1lLCB3ZSBzY2hlZHVsZSB0aGUgdGltZXIg
Zm9yIGEgcmFuZG9tIGludGVydmFsIGJldHdlZW4gMTUgYW5kCisgICAgICAgIDMwIG1pbnV0ZXMu
CisKKyAgICAgICAgSW4gdGhlb3J5IHRoaXMgY291bGQgcmVzdWx0IGluIHNvbWUgYXR0cmlidXRp
b25zIG5ldmVyIGJlaW5nIHNlbnQgaWYgYQorICAgICAgICB1c2VyIGtlZXBzIHF1aXR0aW5nIGFu
ZCByZXN0YXJ0aW5nIGEgc2Vzc2lvbi4gSW4gcHJhY3RpY2UgdGhpcyBpcworICAgICAgICBwcm9i
YWJseSB1bmxpa2VseS4gUHJvdGVjdGluZyB0aGUgdXNlcidzIHByaXZhY3kgaXMgYSBoYXJkIHJl
cXVpcmVtZW50LAorICAgICAgICBzbyB3ZSB0aGluayBwb3NzaWJsZSBzdGFydmF0aW9uIG9mIHNv
bWUgcmVwb3J0cyBpcyB0aGUgcmlnaHQgdHJhZGVvZmYuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgUmVtb3ZlIHVudXNlZCBTUUxpdGUgcXVlcnkuIFVwZGF0ZSB0aGUgcXVlcnkgdG8g
c29ydCBhdHRyaWJ1dGVkIFBDTQorICAgICAgICBieSBlYXJsaWVzdFRpbWVUb1NlbmQsIHdoaWNo
IHNlZW1zIGltcG9ydGFudCBub3cgdGhhdCB3ZSBzZW5kIG9ubHkKKyAgICAgICAgb25lIG92ZXJk
dWUgcmVwb3J0IGF0IGEgdGltZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNz
aW9uKToKKyAgICAgICAgQ29udmVydCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50IHRvIGEgdW5p
cXVlX3B0ciBzbyB3ZSBjYW4gd2FpdCB0bworICAgICAgICBjcmVhdGUgaXQgYWZ0ZXIgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGlzIGNyZWF0ZWQuIFRoaXMgZW5zdXJlcworICAgICAg
ICB0aGF0IHRoZSBjYWxsIHRvIGNyZWF0ZSB0aGUgU1FMaXRlIGRhdGFiYXNlIHdpbGwgcnVuIG9u
IGEKKyAgICAgICAgYmFja2dyb3VuZCB0aHJlYWQgYmVmb3JlIHdlIHRyeSB0byBzZW5kIG92ZXJk
dWUgUENNIHJlcG9ydHMuIAorCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzdG9y
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJM
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjptYXJrUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0
ZWx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKToKKyAg
ICAgICAgRHJpdmUtYnkgZml4ZXMgdG8gYWRkIHByb3RlY3RlZFRoaXMgYW5kIGNoZWNrIGlmIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcgorICAgICAgICBpcyBzdGlsbCBhbGl2ZSB3aGVu
IHRoaXMgbGFtYmRhIGlzIGNhbGxlZC4KKwogMjAyMS0wMi0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaFRyYWNlcjogY29tLmFwcGxl
LldlYktpdC5OZXR3b3JraW5nIGF0IFdlYktpdDogV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGQ4YjQ0Yzgx
YTA1MzU2NWFhMGU0OTIwZmI0N2EwM2JhYWQwMTUzYTUuLjVkZjQwN2UzYzAwNGRjNDRiNjI2OGY3
OTEyM2U2NjYyZTE5NDU4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTE2LDEwICsxMTYsNiBAQCBjb25zdGV4cHIg
YXV0byBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlu
cyBTRVQgaXNQcmV2YQogY29uc3RleHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0g
IlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lz
dHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3Ry
YWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4
cHIgYXV0byB1cGRhdGVBdHRyaWJ1dGlvbnNFYXJsaWVzdFRpbWVUb1NlbmRRdWVyeSA9ICJVUERB
VEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGFzIGMgU0VUICIKLSAgICAiZWFy
bGllc3RUaW1lVG9TZW5kID0gKFNFTEVDVCBNQVgoMC4wLCBuZXdUaW1lKSBGUk9NIChTRUxFQ1Qg
KGVhcmxpZXN0VGltZVRvU2VuZCAtID8pIGFzIG5ld1RpbWUgRlJPTSAiCi0gICAgIkF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhcyBkIFdIRVJFIGMuc291cmNlU2l0ZURvbWFpbklE
ID0gZC5zb3VyY2VTaXRlRG9tYWluSUQgQU5EIGMuYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSAi
Ci0gICAgImQuYXR0cmlidXRlT25TaXRlRG9tYWluSUQpKSJfczsKIAogLy8gU0VMRUNUIFF1ZXJp
ZXMKIGNvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21h
aW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7
CkBAIC0xMzksNyArMTM1LDcgQEAgY29uc3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1Vu
ZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlIKICAgICAiVU5JT04g
QUxMIFNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04gQUxMIFNF
TEVDVCB0b0RvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIGFsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNUICogRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLWNvbnN0ZXhwciBhdXRv
IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAqIEZS
T00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOworY29uc3RleHByIGF1dG8g
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICogRlJP
TSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgT1JERVIgQlkgZWFybGllc3RUaW1l
VG9TZW5kIl9zOwogY29uc3RleHByIGF1dG8gZmluZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVD
VCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNl
U2l0ZURvbWFpbklEID0gPyBBTkQgYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSA/Il9zOwogY29u
c3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFO
RCBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9ID8iX3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNjY3NWY2MDA0NmU3MTc2NGEz
OTIxNzllZGU4N2U0NGY5MGY1NjExMi4uMzlkMjIwMGY0YzA2OGY2MDM2MWNmZTExZDc3ODg5MGJl
MDQyYTc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTkxLDcgKzkxLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAs
IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkK
ICAgICAsIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKQogI2Vu
ZGlmCi0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KG1ha2VVbmlxdWVSZWY8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRl
c3RTcGVlZE11bHRpcGxpZXIpCiAgICAgLCBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QocGFyYW1l
dGVycy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogewpAQCAtMTIwLDE1ICsxMTksMTUgQEAgTmV0
d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgY29uc3QgTmV0d29ya1Nlc3MKIAogICAgIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJs
ZWQgPSBwYXJhbWV0ZXJzLnN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFi
bGVkKTsKKyAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cy5zZXNzaW9uSUQpOwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldFBpbmdMb2Fk
RnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBv
d24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1
bGZpbGxlZC4KICAgICAgICAgbmV3IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lv
bklELCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOwogI2VuZGlmCiB9CiAKQEAgLTMwNCw1NCArMzAz
LDU0IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRhKCkKIH0KICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCi12b2lkIE5ldHdvcmtT
ZXNzaW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIE5ldHdvcmtTZXNz
aW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYgdW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAg
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c3RvcmVVbmF0dHJpYnV0ZWQoV1RGTW92ZShwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCkpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuc3Rv
cmVVbmF0dHJpYnV0ZWQoV1RGTW92ZSh1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbnZlcnNpb24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPmhhbmRsZUF0dHJpYnV0aW9uKFdURk1vdmUoYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSksIHJlcXVlc3RVUkwsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5oYW5kbGVBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEpLCByZXF1ZXN0VVJMLCByZWRpcmVjdFJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQtPnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Y2xlYXIoKTsK
KyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFp
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKIHsKLSAgICBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50LT5jbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWlu
KSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5jbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKFdURk1vdmUoZG9tYWluKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKIHsK
LSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyh2YWx1ZSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5zZXRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpLm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVS
TEZvclRlc3RpbmcoVVJMJiYgdXJsKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQt
PnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CisgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKS5zZXRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkp
OwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZygpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+
bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRp
bWVySW1tZWRpYXRlbHkoKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnN0YXJ0
VGltZXIoMF9zKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0YXJ0VGltZXIoMF9z
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkS2VwdEFsaXZlTG9hZChSZWY8TmV0d29y
a1Jlc291cmNlTG9hZGVyPiYmIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxYThmNThjZjJiMWQyMmVlYmViNzgyOGE1ZGNhMjA5
YmE2MjA0Zjc4Li5lODZhODU0ZDI5NTk4YmFhYjc1N2ExZDMxZjNiYTI5YWVmOWIzYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xNTIs
NiArMTUyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYg
bmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXImIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7IH0KIAogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTE3OSw3
ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJv
b2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgVW5pcXVl
UmVmPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jl
c291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwCmluZGV4IDg2Zjk5YmE1MTUzOTdkZTIxMGY4MzAxMzQ5NWM2NWZmMjU0MzM2ZTIuLjc5
NTdhNjZmYjEzMWIwMTQ4MzczYWI1YjYyNWQ3MGU3ZDc5Mjg5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHAKQEAgLTU5LDEwICs1OSw3IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBu
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICB9KQogewotICAgIC8vIFdlIHNob3VsZCBz
ZW5kIGFueSBwZW5kaW5nIGF0dHJpYnV0aW9ucyBvbiBzZXNzaW9uLXN0YXJ0IGluIGNhc2UgdGhl
aXIKLSAgICAvLyBzZW5kIGRlbGF5IGhhcyBleHBpcmVkIHdoaWxlIHRoZSBzZXNzaW9uIHdhcyBj
bG9zZWQuIFdhaXRpbmcgNSBzZWNvbmRzIGFjY291bnRzIGZvciB0aGUKLSAgICAvLyBkZWxheSBp
biBkYXRhYmFzZSBzdGFydHVwLgotICAgIHN0YXJ0VGltZXIoNV9zKTsKKyAgICBzdGFydFRpbWVy
KDBfcyk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVu
YXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQpAQCAtMTEz
LDcgKzExMCwxMCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmli
dXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBhdHRyaWJ1
dGVPblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFt0aGlzXSAoYXV0byBv
cHRpb25hbFNlY29uZHNVbnRpbFNlbmQpIHsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgYXR0cmlidXRl
T25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvIG9wdGlvbmFsU2Vjb25kc1VudGlsU2VuZCkgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgICAgIGlmIChvcHRpb25hbFNlY29uZHNVbnRpbFNlbmQpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSAqb3B0aW9uYWxTZWNvbmRzVW50aWxTZW5kOwogICAg
ICAgICAgICAgICAgIGlmIChtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyLmlz
QWN0aXZlKCkgJiYgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5uZXh0Rmly
ZUludGVydmFsKCkgPCBzZWNvbmRzVW50aWxTZW5kKQpAQCAtMTk5LDEwICsxOTksMTMgQEAgdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRpb25S
ZXF1ZXN0cygpCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1
cm47CiAKLSAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoW3RoaXNdIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMp
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsKICAgICAgICAgVmVj
dG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBzZW50QXR0cmlidXRpb25zOwotICAgICAgICAK
KwogICAgICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogYXR0cmlidXRpb25zKSB7CiAgICAg
ICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLmVhcmxpZXN0VGlt
ZVRvU2VuZCgpOwogICAgICAgICAgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQpIHsKQEAgLTIx
Miw2ICsyMTUsMTUgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQ
ZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAKICAgICAgICAgICAgIGF1dG8gbm93ID0gV2Fs
bFRpbWU6Om5vdygpOwogICAgICAgICAgICAgaWYgKCplYXJsaWVzdFRpbWVUb1NlbmQgPD0gbm93
IHx8IG1faXNSdW5uaW5nVGVzdCB8fCBkZWJ1Z01vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbnRBdHRyaWJ1dGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgc2VudCBhbiBhdHRyaWJ1dGlvbiB0aGlzIHJvdW5kLiBXZSBz
aG91bGQgc2VuZCBhZGRpdGlvbmFsIG92ZXJkdWUgYXR0cmlidXRpb25zIGF0CisgICAgICAgICAg
ICAgICAgICAgIC8vIGEgcmFuZG9tIHRpbWUgYmV0d2VlbiAxNSBhbmQgMzAgbWludXRlcyB0byBh
dm9pZCBhIGJ1cnN0IG9mIHNpbXVsdGFuZW91cyBhdHRyaWJ1dGlvbnMuIElmIGRlYnVnCisgICAg
ICAgICAgICAgICAgICAgIC8vIG1vZGUgaXMgZW5hYmxlZCwgdGhpcyBzaG91bGQgYmUgZXZlcnkg
MiBtaW51dGVzIGZvciBlYXN5IHRlc3RpbmcuCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW50
ZXJ2YWwgPSBkZWJ1Z01vZGVFbmFibGVkKCkgPyAyX21pbiA6IDE1X21pbiArIFNlY29uZHMoY3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSAlIDkwMCk7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyU2VudEF0dHJpYnV0aW9ucyhXVEZNb3ZlKHNlbnRBdHRyaWJ1dGlvbnMpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhcnRUaW1lcihpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmaXJlQ29udmVyc2lv
blJlcXVlc3QoYXR0cmlidXRpb24pOwogICAgICAgICAgICAgICAgIHNlbnRBdHRyaWJ1dGlvbnMu
YXBwZW5kKFdURk1vdmUoYXR0cmlidXRpb24pKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIyMCw3ICsyMzIsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKCkKICAgICAgICAgICAgIGF1dG8gc2Vjb25k
cyA9ICplYXJsaWVzdFRpbWVUb1NlbmQgLSBub3c7CiAgICAgICAgICAgICBuZXh0VGltZVRvRmly
ZSA9IHN0ZDo6bWluKG5leHRUaW1lVG9GaXJlLCBzZWNvbmRzKTsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoV1RGTW92ZShzZW50QXR0cmlidXRp
b25zKSk7CiAKICAgICAgICAgaWYgKG5leHRUaW1lVG9GaXJlIDwgU2Vjb25kczo6aW5maW5pdHko
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419755</attachid>
            <date>2021-02-09 13:45:17 -0800</date>
            <delta_ts>2021-02-09 17:31:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221555-20210209134516.patch</filename>
            <type>text/plain</type>
            <size>15850</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5
ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLmYwOGNjNjQ5MWNmMDY2YTE1NzgxOWZmNDE0ZjU3YWY1
YTQ3ZjY0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDItMDggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBFeHBpcmVk
IHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNhbWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBQQ00gZGF0YSBpcyBub3cgcGVyc2lz
dGVkLCB3ZSBuZWVkIHRvIGFkZHJlc3MgdGhlIGNhc2Ugb2YgYQorICAgICAgICBzZXNzaW9uLXJl
c3RhcnQgYWZ0ZXIgMjQtNDgrIGhvdXJzLiBXZSBzaG91bGQgbm90IHNlbmQgYWxsIG92ZXJkdWUK
KyAgICAgICAgYXR0cmlidXRpb25zIGluIHRoZSBzYW1lIGJ1cnN0IGluIGNhc2UgbXVsdGlwbGUg
aGF2ZSB0aGUgc2FtZSBkZXN0aW5hdGlvbgorICAgICAgICBhbmQgY291bGQgaWRlbnRpZnkgYSB1
c2VyIGNyb3NzLXNpdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBraWNrcyBvZmYgdGhlIHRpbWVy
IHRvIGZpcmUgcGVuZGluZyBhdHRyaWJ1dGlvbnMgb24gc2Vzc2lvbi1zdGFydAorICAgICAgICBh
bmQgc2VuZHMgb25lIHJlcG9ydCBhdCBhIHRpbWUuIElmIG1vcmUgdGhhbiBvbmUgb3ZlcmR1ZSBy
ZXBvcnQgZXhpc3RzCisgICAgICAgIGF0IGFueSB0aW1lLCB3ZSBzY2hlZHVsZSB0aGUgdGltZXIg
Zm9yIGEgcmFuZG9tIGludGVydmFsIGJldHdlZW4gMTUgYW5kCisgICAgICAgIDMwIG1pbnV0ZXMu
CisKKyAgICAgICAgSW4gdGhlb3J5IHRoaXMgY291bGQgcmVzdWx0IGluIHNvbWUgYXR0cmlidXRp
b25zIG5ldmVyIGJlaW5nIHNlbnQgaWYgYQorICAgICAgICB1c2VyIGtlZXBzIHF1aXR0aW5nIGFu
ZCByZXN0YXJ0aW5nIGEgc2Vzc2lvbi4gSW4gcHJhY3RpY2UgdGhpcyBpcworICAgICAgICBwcm9i
YWJseSB1bmxpa2VseS4gUHJvdGVjdGluZyB0aGUgdXNlcidzIHByaXZhY3kgaXMgYSBoYXJkIHJl
cXVpcmVtZW50LAorICAgICAgICBzbyB3ZSB0aGluayBwb3NzaWJsZSBzdGFydmF0aW9uIG9mIHNv
bWUgcmVwb3J0cyBpcyB0aGUgcmlnaHQgdHJhZGVvZmYuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgUmVtb3ZlIHVudXNlZCBTUUxpdGUgcXVlcnkuIFVwZGF0ZSB0aGUgcXVlcnkgdG8g
c29ydCBhdHRyaWJ1dGVkIFBDTQorICAgICAgICBieSBlYXJsaWVzdFRpbWVUb1NlbmQsIHdoaWNo
IHNlZW1zIGltcG9ydGFudCBub3cgdGhhdCB3ZSBzZW5kIG9ubHkKKyAgICAgICAgb25lIG92ZXJk
dWUgcmVwb3J0IGF0IGEgdGltZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNz
aW9uKToKKyAgICAgICAgQ29udmVydCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50IHRvIGEgdW5p
cXVlX3B0ciBzbyB3ZSBjYW4gd2FpdCB0bworICAgICAgICBjcmVhdGUgaXQgYWZ0ZXIgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGlzIGNyZWF0ZWQuIFRoaXMgZW5zdXJlcworICAgICAg
ICB0aGF0IHRoZSBjYWxsIHRvIGNyZWF0ZSB0aGUgU1FMaXRlIGRhdGFiYXNlIHdpbGwgcnVuIG9u
IGEKKyAgICAgICAgYmFja2dyb3VuZCB0aHJlYWQgYmVmb3JlIHdlIHRyeSB0byBzZW5kIG92ZXJk
dWUgUENNIHJlcG9ydHMuIAorCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzdG9y
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmhhbmRsZVByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJM
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjptYXJrUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0
ZWx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKToKKyAg
ICAgICAgRHJpdmUtYnkgZml4ZXMgdG8gYWRkIHByb3RlY3RlZFRoaXMgYW5kIGNoZWNrIGlmIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcgorICAgICAgICBpcyBzdGlsbCBhbGl2ZSB3aGVu
IHRoaXMgbGFtYmRhIGlzIGNhbGxlZC4KKwogMjAyMS0wMi0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaFRyYWNlcjogY29tLmFwcGxl
LldlYktpdC5OZXR3b3JraW5nIGF0IFdlYktpdDogV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGQ4YjQ0Yzgx
YTA1MzU2NWFhMGU0OTIwZmI0N2EwM2JhYWQwMTUzYTUuLjVkZjQwN2UzYzAwNGRjNDRiNjI2OGY3
OTEyM2U2NjYyZTE5NDU4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTE2LDEwICsxMTYsNiBAQCBjb25zdGV4cHIg
YXV0byBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlu
cyBTRVQgaXNQcmV2YQogY29uc3RleHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0g
IlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lz
dHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3Ry
YWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBTRVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4
cHIgYXV0byB1cGRhdGVBdHRyaWJ1dGlvbnNFYXJsaWVzdFRpbWVUb1NlbmRRdWVyeSA9ICJVUERB
VEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGFzIGMgU0VUICIKLSAgICAiZWFy
bGllc3RUaW1lVG9TZW5kID0gKFNFTEVDVCBNQVgoMC4wLCBuZXdUaW1lKSBGUk9NIChTRUxFQ1Qg
KGVhcmxpZXN0VGltZVRvU2VuZCAtID8pIGFzIG5ld1RpbWUgRlJPTSAiCi0gICAgIkF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhcyBkIFdIRVJFIGMuc291cmNlU2l0ZURvbWFpbklE
ID0gZC5zb3VyY2VTaXRlRG9tYWluSUQgQU5EIGMuYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSAi
Ci0gICAgImQuYXR0cmlidXRlT25TaXRlRG9tYWluSUQpKSJfczsKIAogLy8gU0VMRUNUIFF1ZXJp
ZXMKIGNvbnN0ZXhwciBhdXRvIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21h
aW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7
CkBAIC0xMzksNyArMTM1LDcgQEAgY29uc3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1Vu
ZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlIKICAgICAiVU5JT04g
QUxMIFNFTEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04gQUxMIFNF
TEVDVCB0b0RvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIGFsbFVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNUICogRlJP
TSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKLWNvbnN0ZXhwciBhdXRv
IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAqIEZS
T00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOworY29uc3RleHByIGF1dG8g
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICogRlJP
TSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgT1JERVIgQlkgZWFybGllc3RUaW1l
VG9TZW5kIl9zOwogY29uc3RleHByIGF1dG8gZmluZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVD
VCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNl
U2l0ZURvbWFpbklEID0gPyBBTkQgYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSA/Il9zOwogY29u
c3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFO
RCBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9ID8iX3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNjY3NWY2MDA0NmU3MTc2NGEz
OTIxNzllZGU4N2U0NGY5MGY1NjExMi4uMzlkMjIwMGY0YzA2OGY2MDM2MWNmZTExZDc3ODg5MGJl
MDQyYTc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTkxLDcgKzkxLDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAs
IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkK
ICAgICAsIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKQogI2Vu
ZGlmCi0gICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KG1ha2VVbmlxdWVSZWY8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRl
c3RTcGVlZE11bHRpcGxpZXIpCiAgICAgLCBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QocGFyYW1l
dGVycy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogewpAQCAtMTIwLDE1ICsxMTksMTUgQEAgTmV0
d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgY29uc3QgTmV0d29ya1Nlc3MKIAogICAgIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJs
ZWQgPSBwYXJhbWV0ZXJzLnN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFi
bGVkKTsKKyAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cy5zZXNzaW9uSUQpOwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldFBpbmdMb2Fk
RnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBv
d24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1
bGZpbGxlZC4KICAgICAgICAgbmV3IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lv
bklELCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOwogI2VuZGlmCiB9CiAKQEAgLTMwNCw1NCArMzAz
LDU0IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRhKCkKIH0KICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCi12b2lkIE5ldHdvcmtT
ZXNzaW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIE5ldHdvcmtTZXNz
aW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYgdW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAg
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c3RvcmVVbmF0dHJpYnV0ZWQoV1RGTW92ZShwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCkpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuc3Rv
cmVVbmF0dHJpYnV0ZWQoV1RGTW92ZSh1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbnZlcnNpb24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPmhhbmRsZUF0dHJpYnV0aW9uKFdURk1vdmUoYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSksIHJlcXVlc3RVUkwsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5oYW5kbGVBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEpLCByZXF1ZXN0VVJMLCByZWRpcmVjdFJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtTZXNzaW9uOjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQtPnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Y2xlYXIoKTsK
KyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFp
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKIHsKLSAgICBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50LT5jbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWlu
KSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5jbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKFdURk1vdmUoZG9tYWluKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKIHsK
LSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyh2YWx1ZSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5zZXRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZyh2YWx1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC0+bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCgpLm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVS
TEZvclRlc3RpbmcoVVJMJiYgdXJsKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQt
PnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CisgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKS5zZXRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkp
OwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZygpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+
bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpLm1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRp
bWVySW1tZWRpYXRlbHkoKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnN0YXJ0
VGltZXIoMF9zKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0YXJ0VGltZXIoMF9z
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkS2VwdEFsaXZlTG9hZChSZWY8TmV0d29y
a1Jlc291cmNlTG9hZGVyPiYmIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxYThmNThjZjJiMWQyMmVlYmViNzgyOGE1ZGNhMjA5
YmE2MjA0Zjc4Li5lODZhODU0ZDI5NTk4YmFhYjc1N2ExZDMxZjNiYTI5YWVmOWIzYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xNTIs
NiArMTUyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYg
bmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXImIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ7IH0KIAogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTE3OSw3
ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJv
b2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgVW5pcXVl
UmVmPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jl
c291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwCmluZGV4IDg2Zjk5YmE1MTUzOTdkZTIxMGY4MzAxMzQ5NWM2NWZmMjU0MzM2ZTIuLmQ3
MDM1MjIzYjRkYTVjNzlhMWI1MmUwZmRlMDkwYjkyMWZjZTYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHAKQEAgLTU5LDEwICs1OSw3IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBu
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICB9KQogewotICAgIC8vIFdlIHNob3VsZCBz
ZW5kIGFueSBwZW5kaW5nIGF0dHJpYnV0aW9ucyBvbiBzZXNzaW9uLXN0YXJ0IGluIGNhc2UgdGhl
aXIKLSAgICAvLyBzZW5kIGRlbGF5IGhhcyBleHBpcmVkIHdoaWxlIHRoZSBzZXNzaW9uIHdhcyBj
bG9zZWQuIFdhaXRpbmcgNSBzZWNvbmRzIGFjY291bnRzIGZvciB0aGUKLSAgICAvLyBkZWxheSBp
biBkYXRhYmFzZSBzdGFydHVwLgotICAgIHN0YXJ0VGltZXIoNV9zKTsKKyAgICBzdGFydFRpbWVy
KDBfcyk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVu
YXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQpAQCAtMTEz
LDcgKzExMCwxMCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmli
dXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBhdHRyaWJ1
dGVPblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFt0aGlzXSAoYXV0byBv
cHRpb25hbFNlY29uZHNVbnRpbFNlbmQpIHsKKyAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgYXR0cmlidXRl
T25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvIG9wdGlvbmFsU2Vjb25kc1VudGlsU2VuZCkgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgICAgIGlmIChvcHRpb25hbFNlY29uZHNVbnRpbFNlbmQpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSAqb3B0aW9uYWxTZWNvbmRzVW50aWxTZW5kOwogICAg
ICAgICAgICAgICAgIGlmIChtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyLmlz
QWN0aXZlKCkgJiYgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5uZXh0Rmly
ZUludGVydmFsKCkgPCBzZWNvbmRzVW50aWxTZW5kKQpAQCAtMTk5LDEwICsxOTksMTMgQEAgdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRpb25S
ZXF1ZXN0cygpCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1
cm47CiAKLSAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoW3RoaXNdIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8mJiBhdHRyaWJ1dGlvbnMp
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsKICAgICAgICAgVmVj
dG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBzZW50QXR0cmlidXRpb25zOwotICAgICAgICAK
KwogICAgICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogYXR0cmlidXRpb25zKSB7CiAgICAg
ICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLmVhcmxpZXN0VGlt
ZVRvU2VuZCgpOwogICAgICAgICAgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQpIHsKQEAgLTIx
Miw2ICsyMTUsMTUgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQ
ZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAKICAgICAgICAgICAgIGF1dG8gbm93ID0gV2Fs
bFRpbWU6Om5vdygpOwogICAgICAgICAgICAgaWYgKCplYXJsaWVzdFRpbWVUb1NlbmQgPD0gbm93
IHx8IG1faXNSdW5uaW5nVGVzdCB8fCBkZWJ1Z01vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNlbnRBdHRyaWJ1dGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgc2VudCBhbiBhdHRyaWJ1dGlvbiB0aGlzIHJvdW5kLiBXZSBz
aG91bGQgc2VuZCBhZGRpdGlvbmFsIG92ZXJkdWUgYXR0cmlidXRpb25zIGF0CisgICAgICAgICAg
ICAgICAgICAgIC8vIGEgcmFuZG9tIHRpbWUgYmV0d2VlbiAxNSBhbmQgMzAgbWludXRlcyB0byBh
dm9pZCBhIGJ1cnN0IG9mIHNpbXVsdGFuZW91cyBhdHRyaWJ1dGlvbnMuIElmIGRlYnVnCisgICAg
ICAgICAgICAgICAgICAgIC8vIG1vZGUgaXMgZW5hYmxlZCwgdGhpcyBzaG91bGQgYmUgZXZlcnkg
MiBtaW51dGVzIGZvciBlYXN5IHRlc3RpbmcuCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW50
ZXJ2YWwgPSBkZWJ1Z01vZGVFbmFibGVkKCkgPyAyX21pbiA6IDE1X21pbiArIFNlY29uZHMoY3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSAlIDkwMCk7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFyU2VudEF0dHJpYnV0aW9ucyhXVEZNb3ZlKHNlbnRBdHRyaWJ1dGlvbnMpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhcnRUaW1lcihpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZmlyZUNvbnZlcnNp
b25SZXF1ZXN0KGF0dHJpYnV0aW9uKTsKICAgICAgICAgICAgICAgICBzZW50QXR0cmlidXRpb25z
LmFwcGVuZChXVEZNb3ZlKGF0dHJpYnV0aW9uKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC0yMjAsNyArMjMyLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAgICAgICAgICAgICBhdXRvIHNlY29u
ZHMgPSAqZWFybGllc3RUaW1lVG9TZW5kIC0gbm93OwogICAgICAgICAgICAgbmV4dFRpbWVUb0Zp
cmUgPSBzdGQ6Om1pbihuZXh0VGltZVRvRmlyZSwgc2Vjb25kcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgY2xlYXJTZW50QXR0cmlidXRpb25zKFdURk1vdmUoc2VudEF0dHJpYnV0
aW9ucykpOwogCiAgICAgICAgIGlmIChuZXh0VGltZVRvRmlyZSA8IFNlY29uZHM6OmluZmluaXR5
KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419795</attachid>
            <date>2021-02-09 17:31:48 -0800</date>
            <delta_ts>2021-02-10 08:41:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221555-20210209173147.patch</filename>
            <type>text/plain</type>
            <size>23964</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5
ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLjAxZTI4YTg2OWY2NGEwMDE0NzM1OTQ4MTg0NzEyYWI1
ZjE3NmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjEtMDItMDggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBFeHBpcmVk
IHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNhbWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBQQ00gZGF0YSBpcyBub3cgcGVyc2lz
dGVkLCB3ZSBuZWVkIHRvIGFkZHJlc3MgdGhlIGNhc2Ugb2YgYQorICAgICAgICBzZXNzaW9uLXJl
c3RhcnQgYWZ0ZXIgMjQtNDgrIGhvdXJzLiBXZSBzaG91bGQgbm90IHNlbmQgYWxsIG92ZXJkdWUK
KyAgICAgICAgYXR0cmlidXRpb25zIGluIHRoZSBzYW1lIGJ1cnN0IGluIGNhc2UgbXVsdGlwbGUg
aGF2ZSB0aGUgc2FtZSBkZXN0aW5hdGlvbgorICAgICAgICBhbmQgY291bGQgaWRlbnRpZnkgYSB1
c2VyIGNyb3NzLXNpdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBraWNrcyBvZmYgdGhlIHRpbWVy
IHRvIGZpcmUgcGVuZGluZyBhdHRyaWJ1dGlvbnMgb24gc2Vzc2lvbi1zdGFydAorICAgICAgICBh
bmQgc2VuZHMgb25lIHJlcG9ydCBhdCBhIHRpbWUuIElmIG1vcmUgdGhhbiBvbmUgb3ZlcmR1ZSBy
ZXBvcnQgZXhpc3RzCisgICAgICAgIGF0IGFueSB0aW1lLCB3ZSBzY2hlZHVsZSB0aGUgdGltZXIg
Zm9yIGEgcmFuZG9tIGludGVydmFsIGJldHdlZW4gMTUgYW5kCisgICAgICAgIDMwIG1pbnV0ZXMu
CisKKyAgICAgICAgSW4gdGhlb3J5IHRoaXMgY291bGQgcmVzdWx0IGluIHNvbWUgYXR0cmlidXRp
b25zIG5ldmVyIGJlaW5nIHNlbnQgaWYgYQorICAgICAgICB1c2VyIGtlZXBzIHF1aXR0aW5nIGFu
ZCByZXN0YXJ0aW5nIGEgc2Vzc2lvbi4gSW4gcHJhY3RpY2UgdGhpcyBpcworICAgICAgICBwcm9i
YWJseSB1bmxpa2VseS4gUHJvdGVjdGluZyB0aGUgdXNlcidzIHByaXZhY3kgaXMgYSBoYXJkIHJl
cXVpcmVtZW50LAorICAgICAgICBzbyB3ZSB0aGluayBwb3NzaWJsZSBzdGFydmF0aW9uIG9mIHNv
bWUgcmVwb3J0cyBpcyB0aGUgcmlnaHQgdHJhZGVvZmYuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyU2VudEF0dHJpYnV0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJT
ZW50QXR0cmlidXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgUmVtb3ZlIHVudXNlZCBTUUxpdGUgcXVlcnkuIFVwZGF0ZSB0aGUgcXVlcnkgdG8g
c29ydCBhdHRyaWJ1dGVkIFBDTQorICAgICAgICBieSBlYXJsaWVzdFRpbWVUb1NlbmQsIHdoaWNo
IHNlZW1zIGltcG9ydGFudCBub3cgdGhhdCB3ZSBzZW5kIG9ubHkKKyAgICAgICAgb25lIG92ZXJk
dWUgcmVwb3J0IGF0IGEgdGltZS4gQ2hhbmdlIHRoZSBjbGVhclNlbnRBdHRyaWJ1dGlvbnMKKyAg
ICAgICAgZnVuY3Rpb24gdG8gdGFrZSBvbmx5IGEgc2luZ2xlIGF0dHJpYnV0aW9uLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICBDb252ZXJ0IG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgdG8gYSB1bmlxdWVfcHRyIHNvIHdlIGNhbiB3YWl0IHRvCisg
ICAgICAgIGNyZWF0ZSBpdCBhZnRlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgaXMg
Y3JlYXRlZC4gVGhpcyBlbnN1cmVzCisgICAgICAgIHRoYXQgdGhlIGNhbGwgdG8gY3JlYXRlIHRo
ZSBTUUxpdGUgZGF0YWJhc2Ugd2lsbCBydW4gb24gYQorICAgICAgICBiYWNrZ3JvdW5kIHRocmVh
ZCBiZWZvcmUgd2UgdHJ5IHRvIHNlbmQgb3ZlcmR1ZSBQQ00gcmVwb3J0cy4gCisKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmR1bXBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb246Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmZpcmVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5n
QXR0cmlidXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUpOgorICAgICAgICBEcml2ZS1ieSBmaXhlcyB0byBhZGQg
cHJvdGVjdGVkVGhpcyBhbmQgY2hlY2sgaWYgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
CisgICAgICAgIGlzIHN0aWxsIGFsaXZlIHdoZW4gdGhpcyBsYW1iZGEgaXMgY2FsbGVkLgorCiAy
MDIxLTAyLTA1ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcgYXQgV2ViS2l0
OiBXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxl
bnRSZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKaW5kZXggZDhiNDRjODFhMDUzNTY1YWEwZTQ5MjBmYjQ3YTAzYmFhZDAx
NTNhNS4uMGFkNGFhNjUzZGUyN2NjZDZmZDE0ZWJmN2E2NjViZTY5YWYwMGQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBA
IC0xMTYsMTAgKzExNiw2IEBAIGNvbnN0ZXhwciBhdXRvIGNsZWFyUHJldmFsZW50UmVzb3VyY2VR
dWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhCiBjb25zdGV4cHIgYXV0
byB1cGRhdGVHcmFuZGZhdGhlcmVkUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQg
Z3JhbmRmYXRoZXJlZCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3Rl
eHByIGF1dG8gdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFF1ZXJ5
ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhw
ciBhdXRvIHNldFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkUXVl
cnkgPSAiVVBEQVRFIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFVCB0aW1l
T2ZBZENsaWNrID0gLTEuMCJfczsKLWNvbnN0ZXhwciBhdXRvIHVwZGF0ZUF0dHJpYnV0aW9uc0Vh
cmxpZXN0VGltZVRvU2VuZFF1ZXJ5ID0gIlVQREFURSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgYXMgYyBTRVQgIgotICAgICJlYXJsaWVzdFRpbWVUb1NlbmQgPSAoU0VMRUNUIE1B
WCgwLjAsIG5ld1RpbWUpIEZST00gKFNFTEVDVCAoZWFybGllc3RUaW1lVG9TZW5kIC0gPykgYXMg
bmV3VGltZSBGUk9NICIKLSAgICAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IGFz
IGQgV0hFUkUgYy5zb3VyY2VTaXRlRG9tYWluSUQgPSBkLnNvdXJjZVNpdGVEb21haW5JRCBBTkQg
Yy5hdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9ICIKLSAgICAiZC5hdHRyaWJ1dGVPblNpdGVEb21h
aW5JRCkpIl9zOwogCiAvLyBTRUxFQ1QgUXVlcmllcwogY29uc3RleHByIGF1dG8gZG9tYWluSURG
cm9tU3RyaW5nUXVlcnkgPSAiU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdI
RVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKQEAgLTEzOSw3ICsxMzUsNyBAQCBjb25zdGV4
cHIgYXV0byBnZXRBbGxTdWJTdGF0aXN0aWNzVW5kZXJEb21haW5RdWVyeSA9ICJTRUxFQ1QgdG9w
RnJhbWVEb21haW5JRCBGUgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQg
RlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9t
YWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvRG9tYWluSUQgRlJPTSBTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwog
Y29uc3RleHByIGF1dG8gYWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvbnNRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50Il9zOwotY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICogRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQiX3M7Citjb25zdGV4cHIgYXV0byBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBPUkRFUiBCWSBlYXJsaWVzdFRpbWVUb1NlbmQiX3M7CiBjb25zdGV4cHIgYXV0byBm
aW5kVW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBhdHRyaWJ1
dGVPblNpdGVEb21haW5JRCA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBmaW5kQXR0cmlidXRlZFF1
ZXJ5ID0gIlNFTEVDVCAqIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdI
RVJFIHNvdXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEID0g
PyJfczsKIApAQCAtMzIzNywyNCArMzIzMywyMSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0b3I8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgYXR0cmlidXRpb25zKQordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbikKIHsKLSAgICBmb3IgKGF1dG8m
IGF0dHJpYnV0aW9uIDogYXR0cmlidXRpb25zKSB7Ci0gICAgICAgIGF1dG8gc291cmNlU2l0ZURv
bWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9t
YWluKTsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0
dHJpYnV0aW9uLmF0dHJpYnV0ZU9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRv
IHNvdXJjZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5y
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9IGRv
bWFpbklEKGF0dHJpYnV0aW9uLmF0dHJpYnV0ZU9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsK
IAotICAgICAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhYXR0cmlidXRlT25TaXRlRG9t
YWluSUQpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQg
fHwgIWF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
U1FMaXRlU3RhdGVtZW50IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVM
RVRFIEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNvdXJjZVNp
dGVEb21haW5JRCA9ID8gQU5EIGF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEID0gPyJfcyk7Ci0gICAg
ICAgIGlmIChjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwot
ICAgICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LmJpbmRJbnQoMSwgKnNvdXJj
ZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBjbGVhckF0dHJpYnV0
ZWRTdGF0ZW1lbnQuYmluZEludCgyLCAqYXR0cmlidXRlT25TaXRlRG9tYWluSUQpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyU2VudEF0dHJpYnV0aW9ucyBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgICAgIGNsZWFyQXR0cmlidXRlZFN0
YXRlbWVudC5yZXNldCgpOworICAgIFNRTGl0ZVN0YXRlbWVudCBjbGVhckF0dHJpYnV0ZWRTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBhdHRyaWJ1dGVPblNpdGVE
b21haW5JRCA9ID8iX3MpOworICAgIGlmIChjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQuYmlu
ZEludCgxLCAqc291cmNlU2l0ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xl
YXJBdHRyaWJ1dGVkU3RhdGVtZW50LmJpbmRJbnQoMiwgKmF0dHJpYnV0ZU9uU2l0ZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJTZW50QXR0cmlidXRpb24gZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBjYWY1NDczMTk0ZjUxNGE2ODEyOGVm
ZWVkMTM5Njc0YzdiYmQxMGI0Li40MGI2ZDRhMDcxOTliZWEwMzY0MWI1ZWJjNDRhNDI1MGU1N2Q4
ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRp
b24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCAyYWRjMTU3OWQ1YTJjMjA3ZWM5OGI4YWNhZWQ5
NmMwNTAyMjA3ZTAwLi5mZDFjZmZiMDkxMWU5MjNlMWRhNDhlNzBlMGQzMzAwY2Q4NmVhODY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBA
IC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGUgeyB9Owog
ICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH07Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoVmVjdG9y
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKSBvdmVycmlkZSB7IH07CisgICAg
dm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZSB7IH07CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNWJmZTc3Y2Fh
NTBlZmY5OWNmMGFiNmZjNjJmNmE0MzY3ZTVhMzYyYS4uNTI2MGVjOTc5MDBiOGIxYzZiMTlmOGMy
N2NhMDIxOTgyOTk5YjA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb25zKFZlY3RvcjxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
bGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzQXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZTg4ZTY3NjAwNjg0
OWMxYTY1M2MzMWZiYzVhMmM4M2YxNzM3MmYzLi4wMTA5ODdlZjQ0Yzg1NGY3NzJiMDI0YTAzOTdm
OTMzMmQzY2YyOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTYyMiwxOCArMTYyMiwxOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyhDb21wbGV0aW9u
SAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xl
YXJTZW50QXR0cmlidXRpb25zKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4mJiBhdHRyaWJ1dGlvbnNUb0NsZWFyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9z
dFRhc2soW3RoaXMsIGF0dHJpYnV0aW9uc1RvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uc1Rv
Q2xlYXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBhdHRyaWJ1dGlvblRvQ2xl
YXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9z
dGF0aXN0aWNzU3RvcmUtPmNsZWFyU2VudEF0dHJpYnV0aW9ucyhXVEZNb3ZlKGF0dHJpYnV0aW9u
c1RvQ2xlYXIpKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyU2VudEF0dHJpYnV0
aW9uKFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA3ZjViNTdiODllYTQw
YWI4ZDcyZDY3ZjZiZjAzMmM0NjE3M2M0NWU4Li5lNjdmYWFhY2M4NTY3OGIzYmYzYTNhNTFhYzMx
ZGNjNzg1MjBlYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2
b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKLSAgICB2b2lkIGNs
ZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ+JiYpOworICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKaW5kZXggNjY3NWY2MDA0NmU3MTc2NGEzOTIxNzllZGU4N2U0NGY5MGY1NjEx
Mi4uMzlkMjIwMGY0YzA2OGY2MDM2MWNmZTExZDc3ODg5MGJlMDQyYTc2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTkxLDcgKzkx
LDYgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAsIG1fZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkKICAgICAsIG1fc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKQogI2VuZGlmCi0gICAgLCBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50KG1ha2VVbmlxdWVSZWY8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKICAgICAs
IG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCiAg
ICAgLCBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QocGFyYW1ldGVycy5hbGxvd3NTZXJ2ZXJQcmVj
b25uZWN0KQogewpAQCAtMTIwLDE1ICsxMTksMTUgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
IAogICAgIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgPSBwYXJhbWV0ZXJzLnN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkKTsKKyAgICBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldFBpbmdMb2FkRnVuY3Rpb24oW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5n
IGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICAgICAgbmV3
IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lvbklELCBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwotCi0jaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVu
YWJsZWQpOwogI2VuZGlmCiB9CiAKQEAgLTMwNCw1NCArMzAzLDU0IEBAIHZvaWQgTmV0d29ya1Nl
c3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRhKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpzdG9yZVByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpzdG9yZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgdW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c3RvcmVVbmF0dHJpYnV0ZWQoV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkp
OworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuc3RvcmVVbmF0dHJpYnV0ZWQoV1RGTW92
ZSh1bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpOwogfQogCiB2b2lkIE5ldHdv
cmtTZXNzaW9uOjpoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb24oUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQtPmhhbmRsZUF0dHJpYnV0aW9uKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIHJl
cXVlc3RVUkwsIHJlZGlyZWN0UmVxdWVzdCk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KS5oYW5kbGVBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCByZXF1
ZXN0VVJMLCByZWRpcmVjdFJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpkdW1w
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnRv
U3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpLnRvU3RyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCiB7Ci0gICAg
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+Y2xlYXIoKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbikKIHsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5jbGVh
ckZvclJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7CisgICAgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKS5jbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7
CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3Zl
cnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50LT5zZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyh2YWx1ZSk7CisgICAgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKS5zZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyh2YWx1ZSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+bWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLm1h
cmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OnNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3RpbmcoVVJMJiYgdXJs
KQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldENvbnZlcnNpb25VUkxGb3JU
ZXN0aW5nKFdURk1vdmUodXJsKSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5zZXRD
b252ZXJzaW9uVVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygp
CiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+bWFya0FsbFVuYXR0cmlidXRlZEFz
RXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLm1hcmtB
bGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Nl
c3Npb246OmZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHkoKQogewot
ICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnN0YXJ0VGltZXIoMF9zKTsKKyAgICBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0YXJ0VGltZXIoMF9zKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6YWRkS2VwdEFsaXZlTG9hZChSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmIGxv
YWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApp
bmRleCAxYThmNThjZjJiMWQyMmVlYmViNzgyOGE1ZGNhMjA5YmE2MjA0Zjc4Li5lODZhODU0ZDI5
NTk4YmFhYjc1N2ExZDMxZjNiYTI5YWVmOWIzYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIo
KTsKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTE3OSw3ICsxODAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNO
QU1FRG9tYWluRm9yVGVzdGluZzsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZh
bGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPiBtX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50OwogCiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9rZXB0
QWxpdmVMb2FkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDg2Zjk5YmE1
MTUzOTdkZTIxMGY4MzAxMzQ5NWM2NWZmMjU0MzM2ZTIuLjUwM2I5YzU2ODEyYjI1NzI1ZjdhYWQ4
MDY4NDJiOThhMjQ1MWZhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTE3
OCwxNCArMTc4LDE0IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJl
Q29udmVyc2lvblJlcXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNrTWVhCiAgICAgfSk7CiB9CiAKLXZv
aWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhclNlbnRBdHRyaWJ1dGlvbnMo
VmVjdG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHNlbnRDb252ZXJzaW9ucykKK3ZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHNlbnRDb252ZXJzaW9uKQogewogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+Y2xlYXJTZW50QXR0cmlidXRpb25zKFdURk1vdmUoc2VudENvbnZlcnNp
b25zKSk7CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyU2VudEF0dHJpYnV0
aW9uKFdURk1vdmUoc2VudENvbnZlcnNpb24pKTsKICNlbmRpZgogfQogCkBAIC0yMDEsOCArMjAx
LDggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0
cmlidXRpb25SZXF1ZXN0cygpCiAKICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hbGxBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW3RoaXNdIChhdXRvJiYgYXR0cmlidXRpb25z
KSB7CiAgICAgICAgIGF1dG8gbmV4dFRpbWVUb0ZpcmUgPSBTZWNvbmRzOjppbmZpbml0eSgpOwot
ICAgICAgICBWZWN0b3I8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHNlbnRBdHRyaWJ1dGlvbnM7
Ci0gICAgICAgIAorICAgICAgICBib29sIGhhc1NlbnRBdHRyaWJ1dGlvbiA9IGZhbHNlOworCiAg
ICAgICAgIGZvciAoYXV0byYgYXR0cmlidXRpb24gOiBhdHRyaWJ1dGlvbnMpIHsKICAgICAgICAg
ICAgIGF1dG8gZWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24uZWFybGllc3RUaW1lVG9T
ZW5kKCk7CiAgICAgICAgICAgICBpZiAoIWVhcmxpZXN0VGltZVRvU2VuZCkgewpAQCAtMjEyLDE2
ICsyMTIsMjcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5k
aW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAKICAgICAgICAgICAgIGF1dG8gbm93ID0gV2FsbFRp
bWU6Om5vdygpOwogICAgICAgICAgICAgaWYgKCplYXJsaWVzdFRpbWVUb1NlbmQgPD0gbm93IHx8
IG1faXNSdW5uaW5nVGVzdCB8fCBkZWJ1Z01vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaGFzU2VudEF0dHJpYnV0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3Zl
IGFscmVhZHkgc2VudCBhbiBhdHRyaWJ1dGlvbiB0aGlzIHJvdW5kLiBXZSBzaG91bGQgc2VuZCBh
ZGRpdGlvbmFsIG92ZXJkdWUgYXR0cmlidXRpb25zIGF0CisgICAgICAgICAgICAgICAgICAgIC8v
IGEgcmFuZG9tIHRpbWUgYmV0d2VlbiAxNSBhbmQgMzAgbWludXRlcyB0byBhdm9pZCBhIGJ1cnN0
IG9mIHNpbXVsdGFuZW91cyBhdHRyaWJ1dGlvbnMuIElmIGRlYnVnCisgICAgICAgICAgICAgICAg
ICAgIC8vIG1vZGUgaXMgZW5hYmxlZCwgdGhpcyBzaG91bGQgYmUgZXZlcnkgbWludXRlIGZvciBl
YXN5IHRlc3RpbmcuCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW50ZXJ2YWwgPSBkZWJ1Z01v
ZGVFbmFibGVkKCkgPyAxX21pbiA6IDE1X21pbiArIFNlY29uZHMoY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKSAlIDkwMCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXIoaW50
ZXJ2YWwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZpcmVDb252ZXJzaW9uUmVxdWVzdChh
dHRyaWJ1dGlvbik7Ci0gICAgICAgICAgICAgICAgc2VudEF0dHJpYnV0aW9ucy5hcHBlbmQoV1RG
TW92ZShhdHRyaWJ1dGlvbikpOworICAgICAgICAgICAgICAgIGNsZWFyU2VudEF0dHJpYnV0aW9u
KFdURk1vdmUoYXR0cmlidXRpb24pKTsKKyAgICAgICAgICAgICAgICBoYXNTZW50QXR0cmlidXRp
b24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhdXRvIHNlY29uZHMgPSAqZWFybGllc3RUaW1lVG9TZW5kIC0gbm93OwogICAg
ICAgICAgICAgbmV4dFRpbWVUb0ZpcmUgPSBzdGQ6Om1pbihuZXh0VGltZVRvRmlyZSwgc2Vjb25k
cyk7CisKKyAgICAgICAgICAgIC8vIEF0dHJpYnV0aW9ucyBhcmUgc29ydGVkIGJ5IGVhcmxpZXN0
VGltZVRvU2VuZCwgc28gdGhlIGZpcnN0IHRpbWUgd2UgaGl0IHRoaXMgd2lsbCBhbHdheXMgYmUg
dGhlIG1pbiB2YWx1ZSBvZiBuZXh0VGltZVRvRmlyZS4KKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoV1RGTW92ZShz
ZW50QXR0cmlidXRpb25zKSk7CiAKICAgICAgICAgaWYgKG5leHRUaW1lVG9GaXJlIDwgU2Vjb25k
czo6aW5maW5pdHkoKSkKICAgICAgICAgICAgIHN0YXJ0VGltZXIobmV4dFRpbWVUb0ZpcmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggMmZmY2E0MWI3YTZkMTVmOTYyMjY1N2I1NmQ1
MGI1OWZiNjQ4Y2E2Mi4uOTZkMGI2ODI1NjQwZWY3NjFjYTMwZTJiOWMyZWJiYzNhMTNiMTQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXJ0VGltZXIoU2Vjb25kcyk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjbGVhclNl
bnRBdHRyaWJ1dGlvbnMoVmVjdG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKTsKKyAgICB2
b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpOwogICAg
IHZvaWQgYXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmLCBjb25zdCBBdHRyaWJ1dGVPblNpdGUm
LCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpOwogICAgIHZvaWQgZmlyZUNvbnZlcnNpb25SZXF1
ZXN0KGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7CiAgICAgdm9pZCBmaXJlUGVuZGlu
Z0F0dHJpYnV0aW9uUmVxdWVzdHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419848</attachid>
            <date>2021-02-10 08:41:35 -0800</date>
            <delta_ts>2021-02-10 09:38:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221555-20210210084134.patch</filename>
            <type>text/plain</type>
            <size>24067</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNTZiMjgzOTE4NWM0YWM5
ZGVlMzBiZWM5MGU1MGU3OWRmZjAyZDkuLjg4Y2U1MGJmMTYxODEwYzMzOTY1NDI0YTExNzkwYTNi
ZDRlNzU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjEtMDItMTAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBFeHBpcmVk
IHJlcG9ydHMgZ2V0IHNlbnQgYXQgdGhlIHNhbWUgdGltZSBhZnRlciBhIHNlc3Npb24gcmVzdGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTU1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyNDgxNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBKb2huIFdpbGFuZGVyLgorCisgICAgICAgIFNpbmNlIFBDTSBkYXRhIGlzIG5vdyBwZXJzaXN0
ZWQsIHdlIG5lZWQgdG8gYWRkcmVzcyB0aGUgY2FzZSBvZiBhCisgICAgICAgIHNlc3Npb24tcmVz
dGFydCBhZnRlciAyNC00OCsgaG91cnMuIFdlIHNob3VsZCBub3Qgc2VuZCBhbGwgb3ZlcmR1ZQor
ICAgICAgICBhdHRyaWJ1dGlvbnMgaW4gdGhlIHNhbWUgYnVyc3QgaW4gY2FzZSBtdWx0aXBsZSBo
YXZlIHRoZSBzYW1lIGRlc3RpbmF0aW9uCisgICAgICAgIGFuZCBjb3VsZCBpZGVudGlmeSBhIHVz
ZXIgY3Jvc3Mtc2l0ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGtpY2tzIG9mZiB0aGUgdGltZXIg
dG8gZmlyZSBwZW5kaW5nIGF0dHJpYnV0aW9ucyBvbiBzZXNzaW9uLXN0YXJ0CisgICAgICAgIGFu
ZCBzZW5kcyBvbmUgcmVwb3J0IGF0IGEgdGltZS4gSWYgbW9yZSB0aGFuIG9uZSBvdmVyZHVlIHJl
cG9ydCBleGlzdHMKKyAgICAgICAgYXQgYW55IHRpbWUsIHdlIHNjaGVkdWxlIHRoZSB0aW1lciBm
b3IgYSByYW5kb20gaW50ZXJ2YWwgYmV0d2VlbiAxNSBhbmQKKyAgICAgICAgMzAgbWludXRlcy4K
KworICAgICAgICBJbiB0aGVvcnkgdGhpcyBjb3VsZCByZXN1bHQgaW4gc29tZSBhdHRyaWJ1dGlv
bnMgbmV2ZXIgYmVpbmcgc2VudCBpZiBhCisgICAgICAgIHVzZXIga2VlcHMgcXVpdHRpbmcgYW5k
IHJlc3RhcnRpbmcgYSBzZXNzaW9uLiBJbiBwcmFjdGljZSB0aGlzIGlzCisgICAgICAgIHByb2Jh
Ymx5IHVubGlrZWx5LiBQcm90ZWN0aW5nIHRoZSB1c2VyJ3MgcHJpdmFjeSBpcyBhIGhhcmQgcmVx
dWlyZW1lbnQsCisgICAgICAgIHNvIHdlIHRoaW5rIHBvc3NpYmxlIHN0YXJ2YXRpb24gb2Ygc29t
ZSByZXBvcnRzIGlzIHRoZSByaWdodCB0cmFkZW9mZi4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xl
YXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb25zKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICBSZW1vdmUgdW51c2VkIFNRTGl0ZSBxdWVyeS4gVXBkYXRlIHRoZSBxdWVyeSB0byBz
b3J0IGF0dHJpYnV0ZWQgUENNCisgICAgICAgIGJ5IGVhcmxpZXN0VGltZVRvU2VuZCwgd2hpY2gg
c2VlbXMgaW1wb3J0YW50IG5vdyB0aGF0IHdlIHNlbmQgb25seQorICAgICAgICBvbmUgb3ZlcmR1
ZSByZXBvcnQgYXQgYSB0aW1lLiBDaGFuZ2UgdGhlIGNsZWFyU2VudEF0dHJpYnV0aW9ucworICAg
ICAgICBmdW5jdGlvbiB0byB0YWtlIG9ubHkgYSBzaW5nbGUgYXR0cmlidXRpb24uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIENvbnZlcnQgbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCB0byBhIHVuaXF1ZV9wdHIgc28gd2UgY2FuIHdhaXQgdG8KKyAg
ICAgICAgY3JlYXRlIGl0IGFmdGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBpcyBj
cmVhdGVkLiBUaGlzIGVuc3VyZXMKKyAgICAgICAgdGhhdCB0aGUgY2FsbCB0byBjcmVhdGUgdGhl
IFNRTGl0ZSBkYXRhYmFzZSB3aWxsIHJ1biBvbiBhCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFk
IGJlZm9yZSB3ZSB0cnkgdG8gY29sbGVjdCBvdmVyZHVlIFBDTSBhdHRyaWJ1dGlvbnMuIAorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzdG9yZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmhhbmRsZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29udmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFi
bGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0Fz
RXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpmaXJl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJl
UGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKToKKyAgICAgICAgRHJpdmUtYnkgZml4ZXMg
dG8gYWRkIHByb3RlY3RlZFRoaXMgYW5kIGNoZWNrIGlmIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcgorICAgICAgICBpcyBzdGlsbCBhbGl2ZSB3aGVuIHRoaXMgbGFtYmRhIGlzIGNhbGxl
ZC4KKwogMjAyMS0wMi0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KIAogICAgICAgICBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIGF0
IFdlYktpdDogV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
UHJldmFsZW50UmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGQ4YjQ0YzgxYTA1MzU2NWFhMGU0OTIwZmI0N2Ew
M2JhYWQwMTUzYTUuLjBhZDRhYTY1M2RlMjdjY2Q2ZmQxNGViZjdhNjY1YmU2OWFmMDBkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcApAQCAtMTE2LDEwICsxMTYsNiBAQCBjb25zdGV4cHIgYXV0byBjbGVhclByZXZhbGVudFJl
c291cmNlUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YQogY29uc3Rl
eHByIGF1dG8gdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFp
bnMgU0VUIGdyYW5kZmF0aGVyZWQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsK
IGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBj
b25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhw
aXJlZFF1ZXJ5ID0gIlVQREFURSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBT
RVQgdGltZU9mQWRDbGljayA9IC0xLjAiX3M7Ci1jb25zdGV4cHIgYXV0byB1cGRhdGVBdHRyaWJ1
dGlvbnNFYXJsaWVzdFRpbWVUb1NlbmRRdWVyeSA9ICJVUERBVEUgQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IGFzIGMgU0VUICIKLSAgICAiZWFybGllc3RUaW1lVG9TZW5kID0gKFNF
TEVDVCBNQVgoMC4wLCBuZXdUaW1lKSBGUk9NIChTRUxFQ1QgKGVhcmxpZXN0VGltZVRvU2VuZCAt
ID8pIGFzIG5ld1RpbWUgRlJPTSAiCi0gICAgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBhcyBkIFdIRVJFIGMuc291cmNlU2l0ZURvbWFpbklEID0gZC5zb3VyY2VTaXRlRG9tYWlu
SUQgQU5EIGMuYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSAiCi0gICAgImQuYXR0cmlidXRlT25T
aXRlRG9tYWluSUQpKSJfczsKIAogLy8gU0VMRUNUIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGRv
bWFpbklERnJvbVN0cmluZ1F1ZXJ5ID0gIlNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9t
YWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CkBAIC0xMzksNyArMTM1LDcgQEAg
Y29uc3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkgPSAiU0VM
RUNUIHRvcEZyYW1lRG9tYWluSUQgRlIKICAgICAiVU5JT04gQUxMIFNFTEVDVCB0b3BGcmFtZURv
bWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNv
dXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04gQUxMIFNFTEVDVCB0b0RvbWFpbklEIEZST00g
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0g
PyJfczsKIGNvbnN0ZXhwciBhdXRvIGFsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25zUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCJfczsKLWNvbnN0ZXhwciBhdXRvIGFsbEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Il9zOworY29uc3RleHByIGF1dG8gYWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnkgPSAiU0VMRUNUICogRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgT1JERVIgQlkgZWFybGllc3RUaW1lVG9TZW5kIl9zOwogY29uc3RleHBy
IGF1dG8gZmluZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQg
YXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gZmluZEF0dHJp
YnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBhdHRyaWJ1dGVPblNpdGVEb21h
aW5JRCA9ID8iX3M7CiAKQEAgLTMyMzcsMjQgKzMyMzMsMjEgQEAgU3RyaW5nIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
KCkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbnMoVmVjdG9yPFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIGF0dHJpYnV0aW9ucykKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24pCiB7Ci0gICAgZm9y
IChhdXRvJiBhdHRyaWJ1dGlvbiA6IGF0dHJpYnV0aW9ucykgewotICAgICAgICBhdXRvIHNvdXJj
ZVNpdGVEb21haW5JRCA9IGRvbWFpbklEKGF0dHJpYnV0aW9uLnNvdXJjZVNpdGUoKS5yZWdpc3Ry
YWJsZURvbWFpbik7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlT25TaXRlRG9tYWluSUQgPSBkb21h
aW5JRChhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVPblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5zb3VyY2VT
aXRlKCkucmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8gYXR0cmlidXRlT25TaXRlRG9tYWlu
SUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVPblNpdGUoKS5yZWdpc3RyYWJsZURv
bWFpbik7CiAKLSAgICAgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWF0dHJpYnV0ZU9u
U2l0ZURvbWFpbklEKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICghc291cmNlU2l0ZURv
bWFpbklEIHx8ICFhdHRyaWJ1dGVPblNpdGVEb21haW5JRCkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFNRTGl0ZVN0YXRlbWVudCBjbGVhckF0dHJpYnV0ZWRTdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIkRFTEVURSBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBz
b3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBhdHRyaWJ1dGVPblNpdGVEb21haW5JRCA9ID8iX3Mp
OwotICAgICAgICBpZiAoY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC5iaW5kSW50KDEs
ICpzb3VyY2VTaXRlRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgY2xlYXJB
dHRyaWJ1dGVkU3RhdGVtZW50LmJpbmRJbnQoMiwgKmF0dHJpYnV0ZU9uU2l0ZURvbWFpbklEKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbnMgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICBjbGVhckF0dHJp
YnV0ZWRTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgY2xlYXJBdHRyaWJ1
dGVkU3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgYXR0cmlidXRl
T25TaXRlRG9tYWluSUQgPSA/Il9zKTsKKyAgICBpZiAoY2xlYXJBdHRyaWJ1dGVkU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgY2xlYXJBdHRyaWJ1dGVkU3RhdGVt
ZW50LmJpbmRJbnQoMSwgKnNvdXJjZVNpdGVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVudC5iaW5kSW50KDIsICphdHRyaWJ1dGVPblNpdGVE
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGNsZWFyQXR0cmlidXRlZFN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggY2FmNTQ3MzE5NGY1MTRh
NjgxMjhlZmVlZDEzOTY3NGM3YmJkMTBiNC4uNDBiNmQ0YTA3MTk5YmVhMDM2NDFiNWViYzQ0YTQy
NTBlNTdkOGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92
ZXJyaWRlOwogICAgIFN0cmluZyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoVmVjdG9yPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyU2VudEF0
dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggMmFkYzE1NzlkNWEyYzIwN2VjOThi
OGFjYWVkOTZjMDUwMjIwN2UwMC4uZmQxY2ZmYjA5MTFlOTIzZTFkYTQ4ZTcwZTBkMzMwMGNkODZl
YTg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07
CiAgICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRl
IHsgfTsKICAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJy
aWRlIHsgcmV0dXJuIFN0cmluZygpOyB9OwotICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb25z
KFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJikgb3ZlcnJpZGUgeyB9
OworICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkgb3ZlcnJpZGUgeyB9OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDVi
ZmU3N2NhYTUwZWZmOTljZjBhYjZmYzYyZjZhNDM2N2U1YTM2MmEuLjUyNjBlYzk3OTAwYjhiMWM2
YjE5ZjhjMjdjYTAyMTk4Mjk5OWIwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9T
dHJpbmcoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0
b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGU4OGU2
NzYwMDY4NDljMWE2NTNjMzFmYmM1YTJjODNmMTczNzJmMy4uMDEwOTg3ZWY0NGM4NTRmNzcyYjAy
NGEwMzk3ZjkzMzJkM2NmMjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE2MjIsMTggKzE2MjIsMTggQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoQ29t
cGxldGlvbkgKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFyU2VudEF0dHJpYnV0aW9ucyhWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgYXR0cmlidXRpb25zVG9DbGVhcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgaWYgKGlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHBvc3RUYXNrKFt0aGlzLCBhdHRyaWJ1dGlvbnNUb0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1
dGlvbnNUb0NsZWFyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgYXR0cmlidXRp
b25Ub0NsZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclNlbnRBdHRyaWJ1dGlvbnMoV1RGTW92ZShhdHRy
aWJ1dGlvbnNUb0NsZWFyKSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclNlbnRB
dHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhcikpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggN2Y1YjU3
Yjg5ZWE0MGFiOGQ3MmQ2N2Y2YmYwMzJjNDYxNzNjNDVlOC4uZTY3ZmFhYWNjODU2NzhiM2JmM2Ez
YTUxYWMzMWRjYzc4NTIwZWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtMzE1LDcgKzMxNSw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7
CiAgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIGNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAgICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAg
dm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbnMoVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmKTsKKyAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDY2NzVmNjAwNDZlNzE3NjRhMzkyMTc5ZWRlODdlNDRm
OTBmNTYxMTIuLjM5ZDIyMDBmNGMwNjhmNjAzNjFjZmUxMWQ3Nzg4OTBiZTA0MmE3NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05
MSw3ICs5MSw2IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKICNlbmRpZgotICAgICwgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChtYWtlVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCkp
CiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBs
aWVyKQogICAgICwgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdCkKIHsKQEAgLTEyMCwxNSArMTE5LDE1IEBAIE5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdv
cmtTZXNzCiAKICAgICBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkID0gcGFyYW1ldGVy
cy5zdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7CisgICAgbV9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsK
ICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRQaW5nTG9hZEZ1bmN0aW9uKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLy8gUGluZ0xvYWQgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1lLCBk
ZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVlbiBmdWxmaWxsZWQuCiAgICAg
ICAgIG5ldyBQaW5nTG9hZChtX25ldHdvcmtQcm9jZXNzLCBtX3Nlc3Npb25JRCwgV1RGTW92ZShs
b2FkUGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKLQot
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5lbmFibGVkKTsKICNlbmRpZgogfQogCkBAIC0zMDQsNTQgKzMwMyw1NCBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9tYWluRGF0YSgpCiB9CiAjZW5kaWYgLy8gRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
IHByaXZhdGVDbGlja01lYXN1cmVtZW50KQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KQogewotICAgIG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQtPnN0b3JlVW5hdHRyaWJ1dGVkKFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpKTsKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0b3JlVW5hdHRyaWJ1dGVk
KFdURk1vdmUodW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6aGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9u
KFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50LT5oYW5kbGVBdHRyaWJ1dGlvbihXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCByZXF1ZXN0VVJMLCByZWRpcmVjdFJlcXVlc3QpOworICAgIHByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkuaGFuZGxlQXR0cmlidXRpb24oV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KSwgcmVxdWVzdFVSTCwgcmVkaXJlY3RSZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LT50b1N0cmluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKS50b1N0cmluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQog
ewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPmNsZWFyKCk7CisgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKS5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW4pCiB7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC0+Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOworICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkuY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRv
bWFpbikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC0+c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFsdWUpOworICAg
IHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodmFs
dWUpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQt
Pm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
ZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKS5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVS
TCYmIHVybCkKIHsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zZXRDb252ZXJzaW9u
VVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkpOworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkuc2V0Q29udmVyc2lvblVSTEZvclRlc3RpbmcoV1RGTW92ZSh1cmwpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6bWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcoKQogewotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPm1hcmtBbGxVbmF0dHJp
YnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KS5tYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5
KCkKIHsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LT5zdGFydFRpbWVyKDBfcyk7Cisg
ICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5zdGFydFRpbWVyKDBfcyk7CiB9CiAKIHZvaWQg
TmV0d29ya1Nlc3Npb246OmFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4mJiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggMWE4ZjU4Y2YyYjFkMjJlZWJlYjc4MjhhNWRjYTIwOWJhNjIwNGY3OC4uZTg2
YTg1NGQyOTU5OGJhYWI3NTdhMWQzMWYzYmEyOWFlZjliM2M4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTUyLDYgKzE1Miw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2No
ZWR1bGVyKCk7CisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CiAK
IHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0xNzksNyArMTgwLDcgQEAgcHJv
dGVjdGVkOgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3RoaXJk
UGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdo
aWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwotICAgIFVuaXF1ZVJlZjxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4gbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDsKIAogICAgIEhhc2hTZXQ8UmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+
IG1fa2VwdEFsaXZlTG9hZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA4
NmY5OWJhNTE1Mzk3ZGUyMTBmODMwMTM0OTVjNjVmZjI1NDMzNmUyLi43OTJiNTFlNmI2Njc2NDlj
YzM1NzRmMzZhZTQ5OGZmY2M5NDI2ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3Bw
CkBAIC0xNzgsMTQgKzE3OCwxNCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01lYQogICAgIH0pOwog
fQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmli
dXRpb25zKFZlY3RvcjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBzZW50Q29udmVyc2lvbnMp
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRp
b24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBzZW50Q29udmVyc2lvbikKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyU2VudEF0dHJpYnV0aW9ucyhXVEZNb3ZlKHNlbnRD
b252ZXJzaW9ucykpOworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclNlbnRB
dHRyaWJ1dGlvbihXVEZNb3ZlKHNlbnRDb252ZXJzaW9uKSk7CiAjZW5kaWYKIH0KIApAQCAtMjAx
LDggKzIwMSw4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVu
ZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogCiAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KFt0aGlzXSAoYXV0byYmIGF0dHJp
YnV0aW9ucykgewogICAgICAgICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5p
dHkoKTsKLSAgICAgICAgVmVjdG9yPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBzZW50QXR0cmli
dXRpb25zOwotICAgICAgICAKKyAgICAgICAgYm9vbCBoYXNTZW50QXR0cmlidXRpb24gPSBmYWxz
ZTsKKwogICAgICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogYXR0cmlidXRpb25zKSB7CiAg
ICAgICAgICAgICBhdXRvIGVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLmVhcmxpZXN0
VGltZVRvU2VuZCgpOwogICAgICAgICAgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQpIHsKQEAg
LTIxMiwxNiArMjEyLDI4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpm
aXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogCiAgICAgICAgICAgICBhdXRvIG5vdyA9
IFdhbGxUaW1lOjpub3coKTsKICAgICAgICAgICAgIGlmICgqZWFybGllc3RUaW1lVG9TZW5kIDw9
IG5vdyB8fCBtX2lzUnVubmluZ1Rlc3QgfHwgZGVidWdNb2RlRW5hYmxlZCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGhhc1NlbnRBdHRyaWJ1dGlvbikgeworICAgICAgICAgICAgICAgICAgICAv
LyBXZSd2ZSBhbHJlYWR5IHNlbnQgYW4gYXR0cmlidXRpb24gdGhpcyByb3VuZC4gV2Ugc2hvdWxk
IHNlbmQgYWRkaXRpb25hbCBvdmVyZHVlIGF0dHJpYnV0aW9ucyBhdAorICAgICAgICAgICAgICAg
ICAgICAvLyBhIHJhbmRvbSB0aW1lIGJldHdlZW4gMTUgYW5kIDMwIG1pbnV0ZXMgdG8gYXZvaWQg
YSBidXJzdCBvZiBzaW11bHRhbmVvdXMgYXR0cmlidXRpb25zLiBJZiBkZWJ1ZworICAgICAgICAg
ICAgICAgICAgICAvLyBtb2RlIGlzIGVuYWJsZWQsIHRoaXMgc2hvdWxkIGJlIGV2ZXJ5IG1pbnV0
ZSBmb3IgZWFzeSB0ZXN0aW5nLgorICAgICAgICAgICAgICAgICAgICBhdXRvIGludGVydmFsID0g
ZGVidWdNb2RlRW5hYmxlZCgpID8gMV9taW4gOiAxNV9taW4gKyBTZWNvbmRzKGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCkgJSA5MDApOworICAgICAgICAgICAgICAgICAgICBzdGFydFRp
bWVyKGludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIGZpcmVDb252ZXJzaW9uUmVxdWVzdChhdHRyaWJ1dGlv
bik7Ci0gICAgICAgICAgICAgICAgc2VudEF0dHJpYnV0aW9ucy5hcHBlbmQoV1RGTW92ZShhdHRy
aWJ1dGlvbikpOworICAgICAgICAgICAgICAgIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdURk1vdmUo
YXR0cmlidXRpb24pKTsKKyAgICAgICAgICAgICAgICBoYXNTZW50QXR0cmlidXRpb24gPSB0cnVl
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBhdXRvIHNlY29uZHMgPSAqZWFybGllc3RUaW1lVG9TZW5kIC0gbm93OwogICAgICAgICAgICAg
bmV4dFRpbWVUb0ZpcmUgPSBzdGQ6Om1pbihuZXh0VGltZVRvRmlyZSwgc2Vjb25kcyk7CisKKyAg
ICAgICAgICAgIC8vIEF0dHJpYnV0aW9ucyBhcmUgc29ydGVkIGJ5IGVhcmxpZXN0VGltZVRvU2Vu
ZCwgc28gdGhlIGZpcnN0IHRpbWUgd2UgaGl0IHRoaXMgdGhlcmUgY2FuIGJlIG5vIGZ1cnRoZXIg
YXR0cmlidXRpb25zCisgICAgICAgICAgICAvLyBkdWUgZm9yIHJlcG9ydGluZywgYW5kIG5leHRU
aW1lVG9GaXJlIGlzIHRoZSBtaW5pbXVtIGVhcmxpZXN0VGltZVRvU2VuZCB2YWx1ZSBmb3IgYW55
IHBlbmRpbmcgYXR0cmlidXRpb24uCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgY2xlYXJTZW50QXR0cmlidXRpb25zKFdURk1vdmUoc2VudEF0dHJpYnV0
aW9ucykpOwogCiAgICAgICAgIGlmIChuZXh0VGltZVRvRmlyZSA8IFNlY29uZHM6OmluZmluaXR5
KCkpCiAgICAgICAgICAgICBzdGFydFRpbWVyKG5leHRUaW1lVG9GaXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5oCmluZGV4IDJmZmNhNDFiN2E2ZDE1Zjk2MjI2NTdiNTZkNTBiNTlmYjY0OGNh
NjIuLjk2ZDBiNjgyNTY0MGVmNzYxY2EzMGUyYjljMmViYmMzYTEzYjE0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dFRpbWVyKFNlY29uZHMpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRp
b25zKFZlY3RvcjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik7CisgICAgdm9pZCBjbGVhclNl
bnRBdHRyaWJ1dGlvbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGF0dHJp
YnV0ZShjb25zdCBTb3VyY2VTaXRlJiwgY29uc3QgQXR0cmlidXRlT25TaXRlJiwgQXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmKTsKICAgICB2b2lkIGZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwogICAgIHZvaWQgZmlyZVBlbmRpbmdBdHRyaWJ1dGlv
blJlcXVlc3RzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>