<?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>58354</bug_id>
          
          <creation_ts>2011-04-12 11:51:39 -0700</creation_ts>
          <short_desc>[Navigation Timing] Use monotonicallyIncreasingTime() instead of currentTime()</short_desc>
          <delta_ts>2012-01-12 07:26:17 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37743</dependson>
    
    <dependson>60936</dependson>
          <blocked>30685</blocked>
    
    <blocked>53305</blocked>
    
    <blocked>66683</blocked>
    
    <blocked>66684</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="James Simonsen">simonjam</assigned_to>
          <cc>donggwan.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>pfeldman</cc>
    
    <cc>satish.kambala</cc>
    
    <cc>simonjam</cc>
    
    <cc>sullivan</cc>
    
    <cc>tonyg</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384211</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-12 11:51:39 -0700</bug_when>
    <thetext>Currently our Navigation Timing implementation stores wall time values internally for each mark. We should consider instead storing a single absolute and offsets. Then do the addition in the getter to convert to a wall time. The idea is to prevent bad data when the wall time changes (ntp, leap second, skew adjust, etc).

https://bugs.webkit.org/show_bug.cgi?id=53305 is slightly related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392405</commentid>
    <comment_count>1</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-26 05:10:37 -0700</bug_when>
    <thetext>Using a monotonic clock instead of a wall clock is now discussed in the spec:
http://dvcs.w3.org/hg/webperf/rev/779738076f74</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448424</commentid>
    <comment_count>2</comment_count>
      <attachid>103328</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-08 21:23:10 -0700</bug_when>
    <thetext>Created attachment 103328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448483</commentid>
    <comment_count>3</comment_count>
      <attachid>103328</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-08-09 02:32:32 -0700</bug_when>
    <thetext>Comment on attachment 103328
Patch

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

This is great stuff!

&gt; Source/WebCore/loader/DocumentLoadTiming.h:61
&gt; +    double monotonicResponseEnd;

It makes me slightly sad that we need this. Can we instead assume that if a monotonicReferenceStartTime is provided, then responseEnd has a monotonic value?

&gt; Source/WebCore/page/PerformanceTiming.cpp:-53
&gt; -static double getPossiblySkewedTimeInKnownRange(double skewedTime, double lowerBound, double upperBound)

So nice to see this badness gone!!

&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:46
&gt; +        timing-&gt;monotonicRequestTime = monotonicRequestTime;

Since this is a platform API, I want to be a little bit careful with it.

Is it really necessary to have a requestTime and monotonicRequestTime? I don&apos;t understand why we can&apos;t put the monotonic version into requestTime. If this is being overloaded to determine whether the platform provided monotonic times, could we instead add a boolean timesAreMonotonicallyIncreasing or something? If all ports used monotonic, could we get rid of this? Perhaps we can just file bugs and not leave a trail in the API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448486</commentid>
    <comment_count>4</comment_count>
      <attachid>103328</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-09 02:53:34 -0700</bug_when>
    <thetext>Comment on attachment 103328
Patch

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

&gt; Source/WebCore/loader/MainResourceLoader.cpp:485
&gt; +        documentLoader()-&gt;timing()-&gt;responseEnd = finishTime;

I don&apos;t think you should mutate WebKit-provided values from within the WebCore even for convenience. (I realize that both timing and finishTime originate from WebKit). You&apos;ve done the job for the main resource loader, but same timing struct + finishTime are provided for subresources.

&gt;&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:46
&gt;&gt; +        timing-&gt;monotonicRequestTime = monotonicRequestTime;
&gt; 
&gt; Since this is a platform API, I want to be a little bit careful with it.
&gt; 
&gt; Is it really necessary to have a requestTime and monotonicRequestTime? I don&apos;t understand why we can&apos;t put the monotonic version into requestTime. If this is being overloaded to determine whether the platform provided monotonic times, could we instead add a boolean timesAreMonotonicallyIncreasing or something? If all ports used monotonic, could we get rid of this? Perhaps we can just file bugs and not leave a trail in the API?

ResourceLoadTiming data originates from the port (WebKit). It does not really matter whether we use currentTime or monotonicTime in WebCore since it is likely that port&apos;s time will differ anyways. In chromium&apos;s case (and Chromium is the only port providing this data), the time is taken in the network stack, in the browser process. So I&apos;d suggest that we leave it as is and carefully sync it with the WebCore timings where these two intersect.

&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:96
&gt; +    int responseEnd;

does not belong here as per comment above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448655</commentid>
    <comment_count>5</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-09 10:21:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 103328 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103328&amp;action=review
&gt; 
&gt; This is great stuff!
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoadTiming.h:61
&gt; &gt; +    double monotonicResponseEnd;
&gt; 
&gt; It makes me slightly sad that we need this. Can we instead assume that if a monotonicReferenceStartTime is provided, then responseEnd has a monotonic value?

This is solving a slightly different problem.

For the record, monotonicReferenceStartTime is always available, because it&apos;s set in WebCore.

responseEnd has two possible origins. Normally, it comes from the platform as finishTime, which is currently spec&apos;d to return a wall time. However, sometimes didFinishLoading(0) is called, like when the user presses stop. In that case, we fall back to whenever the last byte was received, or just use the current time if we have no better estimate. In these latter cases, we&apos;d prefer to use the monotonic clock. I need some way of knowing which time-offset was used to determine responseEnd. I decided a separate variable was clearest.

&gt; &gt; Source/WebCore/page/PerformanceTiming.cpp:-53
&gt; &gt; -static double getPossiblySkewedTimeInKnownRange(double skewedTime, double lowerBound, double upperBound)
&gt; 
&gt; So nice to see this badness gone!!
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceLoadTiming.h:46
&gt; &gt; +        timing-&gt;monotonicRequestTime = monotonicRequestTime;
&gt; 
&gt; Since this is a platform API, I want to be a little bit careful with it.
&gt; 
&gt; Is it really necessary to have a requestTime and monotonicRequestTime? I don&apos;t understand why we can&apos;t put the monotonic version into requestTime. If this is being overloaded to determine whether the platform provided monotonic times, could we instead add a boolean timesAreMonotonicallyIncreasing or something? If all ports used monotonic, could we get rid of this? Perhaps we can just file bugs and not leave a trail in the API?

requestTime is now redundant. I&apos;d like to deprecate it and always use monotonic times. I was afraid of changing the meaning of an existing field though, so I just added a new one and hoped to delete the old one later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448662</commentid>
    <comment_count>6</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-09 10:40:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 103328 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103328&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/MainResourceLoader.cpp:485
&gt; &gt; +        documentLoader()-&gt;timing()-&gt;responseEnd = finishTime;
&gt; 
&gt; I don&apos;t think you should mutate WebKit-provided values from within the WebCore even for convenience. (I realize that both timing and finishTime originate from WebKit). You&apos;ve done the job for the main resource loader, but same timing struct + finishTime are provided for subresources.

This is actually a different timing(). It&apos;s a DocumentLoadTiming and originates in WebCore. This is the only place where DocumentLoadTiming.responseEnd is set.

I agree it&apos;s awkward that we shove finishTime into this WebCore struct. My long term goal was to deprecate finishTime and have everyone just use ResourceLoadTiming. Is that a reasonable goal?

&gt; &gt;&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:46
&gt; &gt;&gt; +        timing-&gt;monotonicRequestTime = monotonicRequestTime;
&gt; &gt; 
&gt; &gt; Since this is a platform API, I want to be a little bit careful with it.
&gt; &gt; 
&gt; &gt; Is it really necessary to have a requestTime and monotonicRequestTime? I don&apos;t understand why we can&apos;t put the monotonic version into requestTime. If this is being overloaded to determine whether the platform provided monotonic times, could we instead add a boolean timesAreMonotonicallyIncreasing or something? If all ports used monotonic, could we get rid of this? Perhaps we can just file bugs and not leave a trail in the API?
&gt; 
&gt; ResourceLoadTiming data originates from the port (WebKit). It does not really matter whether we use currentTime or monotonicTime in WebCore since it is likely that port&apos;s time will differ anyways. In chromium&apos;s case (and Chromium is the only port providing this data), the time is taken in the network stack, in the browser process. So I&apos;d suggest that we leave it as is and carefully sync it with the WebCore timings where these two intersect.

It might help to see the Chrome change that goes with this. I can send you that CL too.

monotonicTime is TimeTicks. WebCore now has access to TimeTicks via monotonicallyIncreasingTime(). We exposed this to fix all of the clock skew problems we have when the user&apos;s wall clock is updated.

Since the clock might be adjusted between when the Document&apos;s referenceTime is set to currentTime() and when timing.base_time is set in the network stack, we need to always use the monotonic clock to determine when the resource loaded relative to the referenceTime. So, the network stack should now return base_ticks instead of base_time.

Really, I want everything coming from the port to be in monotonic times. The only time I ever want currentTime() is for setting the Document&apos;s referenceTime.

&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceLoadTiming.h:96
&gt; &gt; +    int responseEnd;
&gt; 
&gt; does not belong here as per comment above.

We need some way to get the TimeTicks when the response finished. I didn&apos;t want to change the didFinishLoading() API to pass in TimeTicks, since then all of the other ports would need to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448670</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-09 10:54:16 -0700</bug_when>
    <thetext>&gt; I agree it&apos;s awkward that we shove finishTime into this WebCore struct. My long term goal was to deprecate finishTime and have everyone just use ResourceLoadTiming. Is that a reasonable goal?

I don&apos;t think you can fetch appropriate ResourceLoadTiming instance upon receiving didReceiveResponse at all times. You can do that for main resource, but not necessarily for subresources. Has that changed?

&gt; It might help to see the Chrome change that goes with this. I can send you that CL too.

Sure, send it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448675</commentid>
    <comment_count>8</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-09 11:00:55 -0700</bug_when>
    <thetext>P.S. Thanks to both of you for taking the time to review this.

(In reply to comment #7)
&gt; &gt; I agree it&apos;s awkward that we shove finishTime into this WebCore struct. My long term goal was to deprecate finishTime and have everyone just use ResourceLoadTiming. Is that a reasonable goal?
&gt; 
&gt; I don&apos;t think you can fetch appropriate ResourceLoadTiming instance upon receiving didReceiveResponse at all times. You can do that for main resource, but not necessarily for subresources. Has that changed?

Probably not. I haven&apos;t actually looked into doing it yet. It was just my hope.

&gt; 
&gt; &gt; It might help to see the Chrome change that goes with this. I can send you that CL too.
&gt; 
&gt; Sure, send it in.

http://codereview.chromium.org/7602023/

I didn&apos;t want to publish it yet, since it&apos;s not ready to go in until this WebKit change is submitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450285</commentid>
    <comment_count>9</comment_count>
      <attachid>103733</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-11 21:57:19 -0700</bug_when>
    <thetext>Created attachment 103733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450310</commentid>
    <comment_count>10</comment_count>
      <attachid>103733</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-11 23:27:56 -0700</bug_when>
    <thetext>Comment on attachment 103733
Patch

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

Looks almost good.

&gt; Source/WebCore/dom/DocumentTiming.h:40
&gt; +        , referenceStartTime(currentTime())

This might be not the best place to initialize these: document is created when the provisional load commits. You could do a static lazy getter on ResourceLoadTiming instead that would init those to emphasize that it does not matter whether the time converted is before or after this initialization.

Also, it would be nice to see a comment explaining conversion taking place there. The one that would explain how TimeTicks correlate with monotonicallyIncreasingTime in case of Chromium so that other ports could jump in.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:512
&gt; +    double finishTime = 0.0;

You should not do anything unless either of the agents below is activated.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:516
&gt; +            finishTime = documentTiming-&gt;referenceStartTime + monotonicFinishTime - documentTiming-&gt;monotonicReferenceStartTime;

Please add a FIXME suggesting that this conversion should be pushed into the inspector itself.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:126
&gt; +    timingObject-&gt;setNumber(&quot;requestTime&quot;, referenceTime + timing.requestTime);

Could you encapsulate this into the ResourceLoadTiming convenience getter?

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:167
&gt; +        responseObject-&gt;setObject(&quot;timing&quot;, buildObjectForTiming(*response.resourceLoadTiming(), referenceTime));

That way you won&apos;t need to do this.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:200
&gt; +        referenceTime = timing-&gt;referenceStartTime - timing-&gt;monotonicReferenceStartTime;

And all this math syncing WebCore and platform time would live in a single place...

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:246
&gt; +    m_frontend-&gt;requestWillBeSent(resourceId, m_pageAgent-&gt;frameId(loader-&gt;frame()), m_pageAgent-&gt;loaderId(loader), loader-&gt;url().string(), buildObjectForResourceRequest(request), currentTime(), initiatorObject, callStackValue, buildObjectForResourceResponse(redirectResponse, GetReferenceTimeFromLoader(loader)));

Like here, in case of the provisional load you will be using timing struct from the current document.

&gt; Source/WebCore/page/PerformanceTiming.cpp:370
&gt; +    return toIntegerMilliseconds(timing-&gt;referenceStartTime + monotonicSeconds - timing-&gt;monotonicReferenceStartTime);

Same math again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451502</commentid>
    <comment_count>11</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-15 22:31:55 -0700</bug_when>
    <thetext>You bring up some really good points that revealed a couple of deficiencies in the spec. I&apos;ve raised these with the WG and updated part of the code. One is still open, so I&apos;ll address that tomorrow.

(In reply to comment #10)
&gt; (From update of attachment 103733 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103733&amp;action=review
&gt; 
&gt; Looks almost good.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentTiming.h:40
&gt; &gt; +        , referenceStartTime(currentTime())
&gt; 
&gt; This might be not the best place to initialize these: document is created when the provisional load commits. You could do a static lazy getter on ResourceLoadTiming instead that would init those to emphasize that it does not matter whether the time converted is before or after this initialization.

This is a good point. The Navigation Timing spec defines where the monotonic reference should be for documents. It&apos;s supposed to be at navigation start. I&apos;ve fixed that for the main document.

However, there&apos;s still an open issue with iframes. Right now, it&apos;s spec&apos;d that they get their own reference time, but that&apos;s bad for users, since they won&apos;t be able to plot iframes on the same timeline as the main document. I&apos;m waiting to hear back on this.

&gt; Also, it would be nice to see a comment explaining conversion taking place there. The one that would explain how TimeTicks correlate with monotonicallyIncreasingTime in case of Chromium so that other ports could jump in.

Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:512
&gt; &gt; +    double finishTime = 0.0;
&gt; 
&gt; You should not do anything unless either of the agents below is activated.

Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:516
&gt; &gt; +            finishTime = documentTiming-&gt;referenceStartTime + monotonicFinishTime - documentTiming-&gt;monotonicReferenceStartTime;
&gt; 
&gt; Please add a FIXME suggesting that this conversion should be pushed into the inspector itself.

Done.

&gt; &gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:126
&gt; &gt; +    timingObject-&gt;setNumber(&quot;requestTime&quot;, referenceTime + timing.requestTime);
&gt; 
&gt; Could you encapsulate this into the ResourceLoadTiming convenience getter?

That would&apos;ve been great if the reference time was in ResourceLoadTiming, but since we have to reference against the main document load (see below), it&apos;s still ugly. :(

&gt; &gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:246
&gt; &gt; +    m_frontend-&gt;requestWillBeSent(resourceId, m_pageAgent-&gt;frameId(loader-&gt;frame()), m_pageAgent-&gt;loaderId(loader), loader-&gt;url().string(), buildObjectForResourceRequest(request), currentTime(), initiatorObject, callStackValue, buildObjectForResourceResponse(redirectResponse, GetReferenceTimeFromLoader(loader)));
&gt; 
&gt; Like here, in case of the provisional load you will be using timing struct from the current document.

Another good point. This was not clearly defined in the spec, so I asked for clarification. The decision is that resources are supposed to use the same reference time as the main document so that they can appear on the same timeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451503</commentid>
    <comment_count>12</comment_count>
      <attachid>104007</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-15 22:33:01 -0700</bug_when>
    <thetext>Created attachment 104007
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452016</commentid>
    <comment_count>13</comment_count>
      <attachid>104127</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-16 17:22:19 -0700</bug_when>
    <thetext>Created attachment 104127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452030</commentid>
    <comment_count>14</comment_count>
      <attachid>104127</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-16 17:45:09 -0700</bug_when>
    <thetext>Comment on attachment 104127
Patch

Attachment 104127 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9403543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452034</commentid>
    <comment_count>15</comment_count>
      <attachid>104127</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-16 17:50:07 -0700</bug_when>
    <thetext>Comment on attachment 104127
Patch

Attachment 104127 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9407505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452049</commentid>
    <comment_count>16</comment_count>
      <attachid>104127</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 18:15:35 -0700</bug_when>
    <thetext>Comment on attachment 104127
Patch

Attachment 104127 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9404516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452081</commentid>
    <comment_count>17</comment_count>
      <attachid>104142</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-16 20:01:20 -0700</bug_when>
    <thetext>Created attachment 104142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454733</commentid>
    <comment_count>18</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-22 11:26:18 -0700</bug_when>
    <thetext>Would you guys mind taking another look at this? It&apos;s changed significantly since the initial patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456265</commentid>
    <comment_count>19</comment_count>
      <attachid>104142</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-08-24 11:41:33 -0700</bug_when>
    <thetext>Comment on attachment 104142
Patch

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

This LGTM, but it would be nice if pfeldman took another pass.

&gt; Source/WebCore/CMakeLists.txt:891
&gt; +    loader/DocumentLoadTiming.cpp

I think we do ascii sorting (caps before lower)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456303</commentid>
    <comment_count>20</comment_count>
      <attachid>104142</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-24 12:22:47 -0700</bug_when>
    <thetext>Comment on attachment 104142
Patch

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

Looks good to me. Sorry guys, I was sure I posted my review two days ago saying inspector part was fine by me and suggesting that Tony takes a look at the web timing. Opened this review link now to find my comments pending submit...

&gt;&gt; Source/WebCore/CMakeLists.txt:891
&gt;&gt; +    loader/DocumentLoadTiming.cpp
&gt; 
&gt; I think we do ascii sorting (caps before lower)

We do.

&gt; Source/WebCore/loader/DocumentLoadTiming.cpp:63
&gt; +    Document* rootDocument = frame-&gt;tree()-&gt;top(true)-&gt;document();

Nit: I got used to the frame-&gt;page()-&gt;mainFrame()-&gt;document() form.

&gt; Source/WebCore/loader/DocumentLoadTiming.cpp:64
&gt; +    if (rootDocument &amp;&amp; this != rootDocument-&gt;loader()-&gt;timing())

Why do you need the second check?

&gt; Source/WebCore/loader/MainResourceLoader.cpp:587
&gt; +    documentLoader()-&gt;timing()-&gt;setFetchStart();

Nit: markFetchStart?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456641</commentid>
    <comment_count>21</comment_count>
      <attachid>105130</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-08-24 22:06:58 -0700</bug_when>
    <thetext>Created attachment 105130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466701</commentid>
    <comment_count>22</comment_count>
    <who name="satish kambala">satish.kambala</who>
    <bug_when>2011-09-13 17:04:27 -0700</bug_when>
    <thetext>Thanks folks for working on this fix.

I hit this bug almost always in Chrome on Linux.
https://bugs.webkit.org/show_bug.cgi?id=53305

It will be great to have this fixed. My 2 cents to expedite this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479619</commentid>
    <comment_count>23</comment_count>
    <who name="satish kambala">satish.kambala</who>
    <bug_when>2011-10-06 16:43:45 -0700</bug_when>
    <thetext>I faced this issue when redirection is present. In almost all the cases, I noticed that responseEnd &lt; responseStart. In some cases responseEnd matched with requestStart. Please verify if there is anything specific to responseEnd or it might be same clock issue that is getting hit when the response comes back. Attached a sample window.performance.timing object that has this bug.

connectEnd: 1317943802191
connectStart: 1317943802191
domComplete: 1317943803381
domContentLoadedEventEnd: 1317943802381
domContentLoadedEventStart: 1317943802381
domInteractive: 1317943802381
domLoading: 1317943802201
domainLookupEnd: 1317943802191
domainLookupStart: 1317943802191
fetchStart: 1317943802191
loadEventEnd: 1317943803388
loadEventStart: 1317943803381
navigationStart: 1317943801958
redirectEnd: 1317943802191
redirectStart: 1317943801958
requestStart: 1317943802193
responseEnd: 1317943802193
responseStart: 1317943802311
secureConnectionStart: 0
unloadEventEnd: 1317943802193
unloadEventStart: 1317943802193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484393</commentid>
    <comment_count>24</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-10-14 16:21:17 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I faced this issue when redirection is present. In almost all the cases, I noticed that responseEnd &lt; responseStart. In some cases responseEnd matched with requestStart. Please verify if there is anything specific to responseEnd or it might be same clock issue that is getting hit when the response comes back. Attached a sample window.performance.timing object that has this bug.

I suspect it&apos;s the same issue. I wasn&apos;t able to reproduce this locally. By any chance are you on Windows? That has the most clock issues.

I notice that the clamping done in WebKit to ensure that the times are sane only affects the lower bound. We should really clamp both sides.

Sadly, the Chrome side of this fix still is waiting for review. I&apos;ll ping it again, but it&apos;s looking unlikely for M16 now. :(

Given that, I&apos;ll upload a patch that clamps both sides as mentioned above. That should at least get rid of the negative times, but it&apos;s not as accurate as the proper solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484697</commentid>
    <comment_count>25</comment_count>
    <who name="satish kambala">satish.kambala</who>
    <bug_when>2011-10-15 18:10:16 -0700</bug_when>
    <thetext>Thanks for the update James. I noticed this on Ubuntu and Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520210</commentid>
    <comment_count>26</comment_count>
      <attachid>119047</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-12-13 11:20:38 -0800</bug_when>
    <thetext>Created attachment 119047
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520294</commentid>
    <comment_count>27</comment_count>
      <attachid>119047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 12:48:28 -0800</bug_when>
    <thetext>Comment on attachment 119047
Patch for landing

Clearing flags on attachment: 119047

Committed r102696: &lt;http://trac.webkit.org/changeset/102696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520295</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 12:48:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521063</commentid>
    <comment_count>29</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-14 10:48:04 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 119047 [details])
&gt; Clearing flags on attachment: 119047
&gt; 
&gt; Committed r102696: &lt;http://trac.webkit.org/changeset/102696&gt;

This patch broke (at least) inspector&apos;s network panel timeline.
Should we revert it or there is a quick fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521089</commentid>
    <comment_count>30</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-12-14 11:02:42 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #27)
&gt; &gt; (From update of attachment 119047 [details] [details])
&gt; &gt; Clearing flags on attachment: 119047
&gt; &gt; 
&gt; &gt; Committed r102696: &lt;http://trac.webkit.org/changeset/102696&gt;
&gt; 
&gt; This patch broke (at least) inspector&apos;s network panel timeline.
&gt; Should we revert it or there is a quick fix?

What do you mean by broken?

If you&apos;re looking at Chrome running with ToT WebKit, then that&apos;s expected. The meaning of some of the fields changed and we need to update Chrome to match. I have the patch ready, but am waiting for the WebKit roll before I apply it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521096</commentid>
    <comment_count>31</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-14 11:07:47 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; (From update of attachment 119047 [details] [details] [details])
&gt; &gt; &gt; Clearing flags on attachment: 119047
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r102696: &lt;http://trac.webkit.org/changeset/102696&gt;
&gt; &gt; 
&gt; &gt; This patch broke (at least) inspector&apos;s network panel timeline.
&gt; &gt; Should we revert it or there is a quick fix?
&gt; 
&gt; What do you mean by broken?
&gt; 
&gt; If you&apos;re looking at Chrome running with ToT WebKit, then that&apos;s expected. The meaning of some of the fields changed and we need to update Chrome to match. I have the patch ready, but am waiting for the WebKit roll before I apply it.
Yes, I meant Chromium with ToT WebKit. Could you please let me know once you land your patch in chromium, I&apos;ll check that I don&apos;t see this problem anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521103</commentid>
    <comment_count>32</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-12-14 11:10:57 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Yes, I meant Chromium with ToT WebKit. Could you please let me know once you land your patch in chromium, I&apos;ll check that I don&apos;t see this problem anymore.

Will do. And sorry about the breakage. I had hoped it wouldn&apos;t be broken for so long. I wanted to land them as close together as possible, but the WebKit roll is over a day behind. I&apos;m trying to help out with that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521706</commentid>
    <comment_count>33</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-15 00:04:14 -0800</bug_when>
    <thetext>That&apos;s not the way we operate though. We do not leave the product in the inconsistent state since we may end up with the broken Dev channel / Canary builds. What you should do is coordinated landing:

1) roll back this change upstream
2) roll Chromium to ToT
3) land the upstream change
4) Roll the DEPs as a part of the change downstream

Please follow this plan unless the downstream change has landed (I don&apos;t believe it has).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521754</commentid>
    <comment_count>34</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-15 02:01:13 -0800</bug_when>
    <thetext>Reverted: Committed r102908: &lt;http://trac.webkit.org/changeset/102908&gt;

Also, please make sure you have ChangeLog for LayoutTests part as well next time you land it. (prepare-ChangeLog should generate all the ChangeLogs needed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522023</commentid>
    <comment_count>35</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-12-15 10:24:49 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; That&apos;s not the way we operate though. We do not leave the product in the inconsistent state since we may end up with the broken Dev channel / Canary builds. What you should do is coordinated landing:
&gt; 
&gt; 1) roll back this change upstream
&gt; 2) roll Chromium to ToT
&gt; 3) land the upstream change
&gt; 4) Roll the DEPs as a part of the change downstream
&gt; 
&gt; Please follow this plan unless the downstream change has landed (I don&apos;t believe it has).

That was the plan, but I can&apos;t just roll DEPS downstream. WebKit rolls have to be gardened. If I&apos;m lucky, it rolls once a day PST. I&apos;m going to try this again, but if I&apos;m not around for the WebKit roll, can you please check the commit bit on http://codereview.chromium.org/7602023/? You were already a reviewer on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522025</commentid>
    <comment_count>36</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-15 10:27:33 -0800</bug_when>
    <thetext>&gt; That was the plan, but I can&apos;t just roll DEPS downstream. WebKit rolls have to be gardened. If I&apos;m lucky, it rolls once a day PST. I&apos;m going to try this again, but if I&apos;m not around for the WebKit roll, can you please check the commit bit on http://codereview.chromium.org/7602023/? You were already a reviewer on it.

Rolling + landing is risky. Please get in touch with the sheriff, explain him your intent. Ask him to prepare the tree for you and land your change right after the roll. Then ask him to land your change downstream together with the DEPs roll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522042</commentid>
    <comment_count>37</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-12-15 10:45:52 -0800</bug_when>
    <thetext>Committed r102961: &lt;http://trac.webkit.org/changeset/102961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534822</commentid>
    <comment_count>38</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-12 07:26:17 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Committed r102961: &lt;http://trac.webkit.org/changeset/102961&gt;

This change still breaks inspector on chromium.
All resources with 304 status code have receiving time set to 15000 days.
I filed https://bugs.webkit.org/show_bug.cgi?id=76176 and added some details and proposed fix there.

simonjam@, could you please have another look on that?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103328</attachid>
            <date>2011-08-08 21:23:10 -0700</date>
            <delta_ts>2011-08-11 21:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58354-20110808212309.patch</filename>
            <type>text/plain</type>
            <size>22431</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI1MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMWU2NDNkNzk3N2M1MTE4
YTdjOGJkOTkwNDFmNGJkZTEzNjgxMmNmLi40YmY1MDFlMjc5ZmI0YTBhNWJjNjIwMzVjYTZlMTkw
OGZjOGU4NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDgtMDggIEphbWVz
IFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtOYXZpZ2F0aW9u
IFRpbWluZ10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3Vy
cmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgzNTQKKworICAgICAgICBXaGVuZXZlciBwb3NzaWJsZSwgd2Ugbm93IHVzZSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gQWxsIG9mIHRoZSBXZWJDb3JlLW9yaWdpbmF0ZWQKKyAg
ICAgICAgdGltZXMgaGF2ZSBiZWVuIGNvbnZlcnRlZC4gRm9yIHBsYXRmb3JtLW9yaWdpbmF0ZWQg
dGltZXMsIHBsYXRmb3JtcyBtdXN0IHNwZWNpZnkgYSBzdGFydAorICAgICAgICBtb25vdG9uaWNh
bGx5IGluY3JlYXNpbmcgdGltZSB0byBpbmRpY2F0ZSBkZWx0YXMgYXJlIG1vbm90b25pYy4gT3Ro
ZXJ3aXNlLCB0aG9zZSB0aW1lcyB3aWxsCisgICAgICAgIGJlIHJlcG9ydGVkIHVzaW5nIHRoZSBv
bGQgd2FsbCB0aW1lIHZhbHVlcywgd2hpY2ggbWF5IGJlIHNrZXdlZC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlbGllcyBv
biBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1p
bmc6OkRvY3VtZW50TG9hZFRpbWluZyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxT
dWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9u
YWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmRpc3BhdGNoVGltZWRFdmVudCk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5j
cHA6IFJlbW92ZWQgc2tld2VkIHRpbWUgc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZv
cm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
VGltaW5nOjpyZWRpcmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6ZmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVz
cG9uc2VFbmQpOiBUcnkgcGxhdGZvcm0ncyBtb25vdG9uaWMgcmVzcG9uc2VFbmQsIHRoZW4KKyAg
ICAgICAgV2ViQ29yZSdzIG1vbnRvbmljUmVzcG9uc2VFbmQsIHRoZW4gZmFsbGJhY2sgdG8gcGxh
dGZvcm0ncyB3YWxsIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
ZG9tTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50
ZXJhY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRl
bnRMb2FkZWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjp0b0ludGVnZXJNaWxsaXNlY29uZHMp
OgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOiBBZGRlZCBtb25vdG9uaWNSZXF1ZXN0VGlt
ZS4gSWYgcGxhdGZvcm1zIHBvcHVsYXRlCisgICAgICAgIHRoaXMsIHRoZW4gd2UgY2FuIHVzZSBp
dCB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGltZS4gT3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sg
dG8gdGhlIHdhbGwKKyAgICAgICAgY2xvY2suCisgICAgICAgIEFsc28gYWRkZWQgcmVzcG9uc2VF
bmQsIHRvIGdpdmUgcGxhdGZvcm1zIGEgd2F5IHRvIHNwZWNpZnkgYSBtb25vdG9uaWMgZmluaXNo
VGltZS4gVGhlCisgICAgICAgIGV4aXN0aW5nIGZpbmlzaFRpbWUgdGhhdCdzIHBhc3NlZCBpbiB0
byBkaWRGaW5pc2hMb2FkaW5nKCkgaXMgd2FsbCB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRUaW1pbmc6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGlt
aW5nOjpSZXNvdXJjZUxvYWRUaW1pbmcpOgorCiAyMDExLTA4LTA1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwd2FyZHMgY3Vyc29yIG1vdmVtZW50IGluY29y
cmVjdCB3aGVuIHByZXZpb3VzIGJsb2NrIGVuZHMgd2l0aCA8YnI+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBmZDI4ODZlOWVlYWM3M2QyYWMyNGJiM2NmODBhYTRiNWZjYTFlMTkzLi41NzY2
NjUwYzBkZGNiZWEyNWE0NzFiMGNjZTM4ZTcyNGIzNWM0NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTEwMTQsMTUgKzEwMTQsMTUgQEAgdm9pZCBEb2N1bWVudDo6c2V0UmVhZHlTdGF0
ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7CiAgICAg
Y2FzZSBMb2FkaW5nOgogICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZykK
LSAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZyA9IGN1cnJlbnRUaW1lKCk7
CisgICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFjdGl2ZToK
ICAgICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlKQotICAgICAgICAg
ICAgbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAg
ICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGxldGU6CiAgICAg
ICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db21wbGV0ZSkKLSAgICAgICAgICAgIG1fZG9j
dW1lbnRUaW1pbmcuZG9tQ29tcGxldGUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgbV9k
b2N1bWVudFRpbWluZy5kb21Db21wbGV0ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQxOTEsMTAgKzQxOTEsMTAgQEAgdm9pZCBE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcigpIHx8IG1fcmVhZHlTdGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJzaW5nKGZh
bHNlKTsKICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3Rh
cnQpCi0gICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQg
PSBjdXJyZW50VGltZSgpOworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQs
IHRydWUsIGZhbHNlKSk7CiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudEVuZCkKLSAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZl
bnRFbmQgPSBjdXJyZW50VGltZSgpOworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRl
bnRMb2FkZWRFdmVudEVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCiAgICAg
aWYgKFJlZlB0cjxGcmFtZT4gZiA9IGZyYW1lKCkpIHsKICAgICAgICAgLy8gRnJhbWVMb2FkZXI6
OmZpbmlzaGVkUGFyc2luZygpIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIERvY3VtZW50OjppbXBsaWNp
dENsb3NlKCkgaWYgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmgKaW5kZXggZDRhYTdkMGM5NWVhODk3YWFhODkxMDhhN2VmOGI2YWQ4OTA4ZWE3Zi4uNDk5ZDUx
OGY0YjQ1MzdiOWQzNGM0OTcwOGE5YTNiNTM2YmE3OThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBEb2N1
bWVudExvYWRUaW1pbmdfaAogI2RlZmluZSBEb2N1bWVudExvYWRUaW1pbmdfaAogCisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IERv
Y3VtZW50TG9hZFRpbWluZyB7CkBAIC0zOCwxMCArNDAsMTMgQEAgc3RydWN0IERvY3VtZW50TG9h
ZFRpbWluZyB7CiAgICAgICAgICwgcmVkaXJlY3RDb3VudCgwKQogICAgICAgICAsIGZldGNoU3Rh
cnQoMC4wKQogICAgICAgICAsIHJlc3BvbnNlRW5kKDAuMCkKKyAgICAgICAgLCBtb25vdG9uaWNS
ZXNwb25zZUVuZCgwLjApCiAgICAgICAgICwgbG9hZEV2ZW50U3RhcnQoMC4wKQogICAgICAgICAs
IGxvYWRFdmVudEVuZCgwLjApCiAgICAgICAgICwgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdChmYWxz
ZSkKICAgICAgICAgLCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KGZhbHNlKQorICAg
ICAgICAsIHJlZmVyZW5jZVN0YXJ0VGltZShjdXJyZW50VGltZSgpKQorICAgICAgICAsIG1vbm90
b25pY1JlZmVyZW5jZVN0YXJ0VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKICAg
ICB7CiAgICAgfQogCkBAIC01MywxMCArNTgsMTMgQEAgc3RydWN0IERvY3VtZW50TG9hZFRpbWlu
ZyB7CiAgICAgc2hvcnQgcmVkaXJlY3RDb3VudDsKICAgICBkb3VibGUgZmV0Y2hTdGFydDsKICAg
ICBkb3VibGUgcmVzcG9uc2VFbmQ7CisgICAgZG91YmxlIG1vbm90b25pY1Jlc3BvbnNlRW5kOwog
ICAgIGRvdWJsZSBsb2FkRXZlbnRTdGFydDsKICAgICBkb3VibGUgbG9hZEV2ZW50RW5kOwogICAg
IGJvb2wgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKICAgICBib29sIGhhc1NhbWVPcmlnaW5Bc1By
ZXZpb3VzRG9jdW1lbnQ7CisgICAgZG91YmxlIHJlZmVyZW5jZVN0YXJ0VGltZTsKKyAgICBkb3Vi
bGUgbW9ub3RvbmljUmVmZXJlbmNlU3RhcnRUaW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNzFlYWVkMWJiYWRkZDRlODE4YWJhNjBlMTgyYjZlZGI0
MDM5ZDg3YS4uZThkYzc0NTBkOGNlNDQxMzU0MzU0ZTk5NThkNWZhZTRiY2RjYTY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAgICB9CiAK
ICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmln
YXRpb25TdGFydCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+
bmF2aWdhdGlvblN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKIAogICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygpOwpAQCAtMjk0MCwxMSArMjk0MCwxMSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAg
IHByb3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKICAgICBtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0gICAgCisKICAgICAvLyBTaG91bGQgaGF2ZSB0aW1p
bmcgZGF0YSBmcm9tIHByZXZpb3VzIHRpbWUocykgdGhlIHBhZ2Ugd2FzIHNob3duLgogICAgIEFT
U0VSVChwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CiAgICAg
cHJvdmlzaW9uYWxMb2FkZXItPnJlc2V0VGltaW5nKCk7Ci0gICAgcHJvdmlzaW9uYWxMb2FkZXIt
PnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQgPSBjdXJyZW50VGltZSgpOyAgICAKKyAgICBwcm92
aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0
cnVlKTsKICAgICBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYTFmOTkxOGViYmRlNTY2ODUzZTc1MTZj
YmZmZjg0NjI5MTBjZDQ4ZC4uOTkyM2NkYWUyMTI2Yzg4MTZmMmQzNzY4ZTliODNlMDY2N2UzZTVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTE5Miw3ICsxOTIsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzbwogICAgICAgICBkb2N1bWVu
dExvYWRUaW1pbmctPnJlZGlyZWN0Q291bnQrKzsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRU
aW1pbmctPnJlZGlyZWN0U3RhcnQpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPnJl
ZGlyZWN0U3RhcnQgPSBkb2N1bWVudExvYWRUaW1pbmctPmZldGNoU3RhcnQ7Ci0gICAgICAgIGRv
Y3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RFbmQgPSBjdXJyZW50VGltZSgpOworICAgICAgICBk
b2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CiAgICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydCA9IGRvY3VtZW50
TG9hZFRpbWluZy0+cmVkaXJlY3RFbmQ7CiAgICAgfQogCkBAIC00NTksNyArNDU5LDcgQEAgdm9p
ZCBNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgsIGxvbmcgbG9uZwogICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPSBjdXJy
ZW50VGltZSgpOworICAgIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGRh
dGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIGFsbEF0T25jZSk7CiB9CkBAIC00ODAsOCAr
NDgwLDExIEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJs
ZSBmaW5pc2hUaW1lKQogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gZGwgPSBkb2N1bWVudExv
YWRlcigpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygp
LT5yZXNwb25zZUVuZCk7Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnJlc3BvbnNl
RW5kID0gZmluaXNoVGltZSA/IGZpbmlzaFRpbWUgOiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVk
ID8gbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDogY3VycmVudFRpbWUoKSk7CisgICAgQVNTRVJU
KCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVzcG9uc2VFbmQgJiYgIWRvY3VtZW50TG9h
ZGVyKCktPnRpbWluZygpLT5tb25vdG9uaWNSZXNwb25zZUVuZCk7CisgICAgaWYgKGZpbmlzaFRp
bWUpCisgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCA9IGZp
bmlzaFRpbWU7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+
bW9ub3RvbmljUmVzcG9uc2VFbmQgPSBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPyBtX3RpbWVP
Zkxhc3REYXRhUmVjZWl2ZWQgOiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBm
cmFtZUxvYWRlcigpLT5maW5pc2hlZExvYWRpbmcoKTsKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhmaW5pc2hUaW1lKTsKICAgICAKQEAgLTU5Niw3ICs1OTksNyBAQCBib29s
IE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdQogCiAgICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWlu
ZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIoKS0+dGlt
aW5nKCktPmZldGNoU3RhcnQpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRj
aFN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+
ZmV0Y2hTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KHIpOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3ZDIxYjk2MmExZGIyYjBh
MDZlNjNlOTA2YmI2N2QzZjJkLi44YThlOGZjNjU4MzA5ZmEyYjgwNWYyMTFjYmFiOTlkYTk1YWQ3
OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNjA1LDkgKzE2MDUsOSBAQCB2
b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hUaW1lZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBEb2N1bWVudCogdGFyZ2V0LCBkbwogewogICAgIEFTU0VSVChzdGFydFRpbWUpOwogICAgIEFT
U0VSVChlbmRUaW1lKTsKLSAgICAqc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAqc3Rh
cnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZGlzcGF0Y2hFdmVu
dChldmVudCwgdGFyZ2V0KTsKLSAgICAqZW5kVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgKmVu
ZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIH0KIAogdm9pZCBET01XaW5k
b3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVRpbWluZy5jcHAKaW5kZXggZmYyNTM1NDJkYzRiMmEzNDk5YzlkNjY5ZDc2MWIyZTUxYzdl
MTZjYi4uODc1OGIwMDYzZWQ5MGI3MzViYjNkNWUxMjE4NjdjZDgwYmY2MjI4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKQEAgLTQ0LDM2ICs0NCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB0b0ludGVn
ZXJNaWxsaXNlY29uZHMoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgQVNTRVJUKHNlY29uZHMgPj0g
MCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2Vjb25kcyAq
IDEwMDAuMCk7Ci19Ci0KLXN0YXRpYyBkb3VibGUgZ2V0UG9zc2libHlTa2V3ZWRUaW1lSW5Lbm93
blJhbmdlKGRvdWJsZSBza2V3ZWRUaW1lLCBkb3VibGUgbG93ZXJCb3VuZCwgZG91YmxlIHVwcGVy
Qm91bmQpCi17Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgLy8gVGhlIGNocm9taXVtIHBv
cnQncyBjdXJyZW50VGltZSgpIGltcGxlbWVudGF0aW9uIG9ubHkgc3luY3Mgd2l0aCB0aGUKLSAg
ICAvLyBzeXN0ZW0gY2xvY2sgZXZlcnkgNjAgc2Vjb25kcy4gU28gaXQgaXMgcG9zc2libGUgZm9y
IHRpbWluZyBtYXJrcwotICAgIC8vIGNvbGxlY3RlZCBpbiBkaWZmZXJlbnQgdGhyZWFkcyBvciBw
cm9jZXNzZXMgdG8gaGF2ZSBhIHNtYWxsIHNrZXcuCi0gICAgLy8gRklYTUU6IEl0IG1heSBiZSBw
b3NzaWJsZSB0byBhZGQgYSBjdXJyZW50VGltZUZyb21TeXN0ZW1UaW1lKCkgbWV0aG9kCi0gICAg
Ly8gdGhhdCBlbGltaW5hdGVzIHRoZSBza2V3LgotICAgIGlmIChza2V3ZWRUaW1lIDw9IGxvd2Vy
Qm91bmQpCi0gICAgICAgIHJldHVybiBsb3dlckJvdW5kOwotCi0gICAgaWYgKHVwcGVyQm91bmQg
PD0gMC4wKQotICAgICAgICB1cHBlckJvdW5kID0gY3VycmVudFRpbWUoKTsKLQotICAgIGlmIChz
a2V3ZWRUaW1lID49IHVwcGVyQm91bmQpCi0gICAgICAgIHJldHVybiB1cHBlckJvdW5kOwotI2Vs
c2UKLSAgICBBU1NFUlRfVU5VU0VEKGxvd2VyQm91bmQsIHNrZXdlZFRpbWUgPj0gbG93ZXJCb3Vu
ZCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1cHBlckJvdW5kLCBza2V3ZWRUaW1lIDw9IHVwcGVyQm91
bmQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gc2tld2VkVGltZTsKLX0KLQogUGVyZm9ybWFuY2VU
aW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJh
bWUpCiB7CkBAIC05NSw3ICs2NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRp
bWluZzo6bmF2aWdhdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bmF2
aWdhdGlvblN0YXJ0KTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vj
b25kcyh0aW1pbmctPm5hdmlnYXRpb25TdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0CkBAIC0xMDcsNyArNzcs
NyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3Rh
cnQoKSBjb25zdAogICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRp
bWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+dW5sb2FkRXZlbnRT
dGFydCk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGlt
aW5nLT51bmxvYWRFdmVudFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCgpIGNvbnN0CkBAIC0xMTksNyArODksNyBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKCkgY29uc3QK
ICAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0IHx8ICF0aW1pbmctPmhhc1Nh
bWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2ZW50RW5kKTsKKyAgICBy
ZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2
ZW50RW5kKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZWRp
cmVjdFN0YXJ0KCkgY29uc3QKQEAgLTEzMSw3ICsxMDEsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQoKSBjb25zdAogICAgIGlmICh0aW1pbmct
Pmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0U3RhcnQpOworICAgIHJldHVy
biBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFy
dCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RF
bmQoKSBjb25zdApAQCAtMTQzLDcgKzExMyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6cmVkaXJlY3RFbmQoKSBjb25zdAogICAgIGlmICh0aW1pbmctPmhhc0Nyb3Nz
T3JpZ2luUmVkaXJlY3QpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdl
ck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0RW5kKTsKKyAgICByZXR1cm4gbW9ub3Rvbmlj
VGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0RW5kKTsKIH0KIAogdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0KCkgY29uc3QKQEAg
LTE1Miw3ICsxMjIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZl
dGNoU3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5mZXRjaFN0YXJ0KTsKKyAg
ICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmZldGNo
U3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFp
bkxvb2t1cFN0YXJ0KCkgY29uc3QKQEAgLTI3Nyw2ICsyNDcsMTMgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZUVuZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1p
bmcpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJj
ZVRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOworICAgIGlmIChyZXNvdXJjZVRpbWluZyAm
JiByZXNvdXJjZVRpbWluZy0+cmVzcG9uc2VFbmQpCisgICAgICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHJlc291cmNlVGltaW5nLT5yZXNwb25zZUVuZCk7CisK
KyAgICBBU1NFUlQoIXRpbWluZy0+cmVzcG9uc2VFbmQgfHwgIXRpbWluZy0+bW9ub3RvbmljUmVz
cG9uc2VFbmQpOworICAgIGlmICh0aW1pbmctPm1vbm90b25pY1Jlc3BvbnNlRW5kKQorICAgICAg
ICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPm1vbm90
b25pY1Jlc3BvbnNlRW5kKTsKICAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+cmVzcG9uc2VFbmQpOwogfQogCkBAIC0yODYsNyArMjYzLDcgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Mb2FkaW5nKCkgY29uc3QKICAgICBpZiAoIXRpbWlu
ZykKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHModGltaW5nLT5kb21Mb2FkaW5nKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGlt
ZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUxvYWRpbmcpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKQEAg
LTI5NSw3ICsyNzIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRv
bUludGVyYWN0aXZlKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tSW50ZXJhY3Rp
dmUpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+ZG9tSW50ZXJhY3RpdmUpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KCkgY29uc3QKQEAgLTMwNCw3ICsyODEs
NyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExv
YWRlZEV2ZW50U3RhcnQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlz
ZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgp
IGNvbnN0CkBAIC0zMTMsNyArMjkwLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5n
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOworICAgIHJldHVybiBtb25vdG9uaWNU
aW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5k
KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0
ZSgpIGNvbnN0CkBAIC0zMjIsNyArMjk5LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpkb21Db21wbGV0ZSgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRv
bUNvbXBsZXRlKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25k
cyh0aW1pbmctPmRvbUNvbXBsZXRlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpsb2FkRXZlbnRTdGFydCgpIGNvbnN0CkBAIC0zMzEsNyArMzA4LDcgQEAgdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRTdGFydCgpIGNvbnN0
CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50
ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudFN0YXJ0KTsK
IH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQo
KSBjb25zdApAQCAtMzQwLDcgKzMxNyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6bG9hZEV2ZW50RW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9h
ZEV2ZW50RW5kKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25k
cyh0aW1pbmctPmxvYWRFdmVudEVuZCk7CiB9CiAKIERvY3VtZW50TG9hZGVyKiBQZXJmb3JtYW5j
ZVRpbWluZzo6ZG9jdW1lbnRMb2FkZXIoKSBjb25zdApAQCAtMzgxLDIyICszNTgsMzMgQEAgUmVz
b3VyY2VMb2FkVGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygp
OwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50IHJlbGF0aXZlU2Vjb25kcykgY29uc3QKK3Vuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZl
VG9BYnNvbHV0ZShpbnQgcmVsYXRpdmVNaWxsaXNlY29uZHMpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KHJlbGF0aXZlU2Vjb25kcyA+PSAwKTsKKyAgICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29uZHMg
Pj0gMCk7CiAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZVRpbWluZyA9IHJlc291cmNl
TG9hZFRpbWluZygpOwogICAgIEFTU0VSVChyZXNvdXJjZVRpbWluZyk7Ci0gICAgRG9jdW1lbnRM
b2FkVGltaW5nKiBkb2N1bWVudFRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOwotICAgIEFT
U0VSVChkb2N1bWVudFRpbWluZyk7Ci0KLSAgICAvLyBUaGUgUmVzb3VyY2VMb2FkVGltaW5nIEFQ
SSdzIHJlcXVlc3RUaW1lIGlzIHRoZSBiYXNlIHRpbWUgdG8gd2hpY2ggYWxsCi0gICAgLy8gb3Ro
ZXIgbWFya3MgYXJlIHJlbGF0aXZlLiBTbyB0byBnZXQgYW4gYWJzb2x1dGUgdGltZSwgd2UgbXVz
dCBhZGQgaXQgdG8KLSAgICAvLyB0aGUgcmVsYXRpdmUgbWFya3MuCi0gICAgLy8KLSAgICAvLyBT
aW5jZSBSZXNvdXJjZUxvYWRUaW1pbmdzIGNhbWUgZnJvbSB0aGUgbmV0d29yayBwbGF0Zm9ybSBs
YXllciwgd2UgbXVzdAotICAgIC8vIGNoZWNrIHRoZW0gZm9yIHNrZXcgYmVjYXVzZSB0aGV5IG1h
eSBiZSBmcm9tIGFub3RoZXIgdGhyZWFkL3Byb2Nlc3MuCi0gICAgZG91YmxlIGJhc2VUaW1lID0g
Z2V0UG9zc2libHlTa2V3ZWRUaW1lSW5Lbm93blJhbmdlKHJlc291cmNlVGltaW5nLT5yZXF1ZXN0
VGltZSwgZG9jdW1lbnRUaW1pbmctPmZldGNoU3RhcnQsIGRvY3VtZW50VGltaW5nLT5yZXNwb25z
ZUVuZCk7Ci0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhiYXNlVGltZSkgKyByZWxh
dGl2ZVNlY29uZHM7CisgICAgZG91YmxlIHJlbGF0aXZlU2Vjb25kcyA9IHJlbGF0aXZlTWlsbGlz
ZWNvbmRzIC8gMTAwMC4wOworICAgIGlmIChyZXNvdXJjZVRpbWluZy0+bW9ub3RvbmljUmVxdWVz
dFRpbWUpCisgICAgICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHJlc291cmNlVGltaW5nLT5tb25vdG9uaWNSZXF1ZXN0VGltZSArIHJlbGF0aXZlU2Vjb25kcyk7
CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhyZXNvdXJjZVRpbWluZy0+cmVxdWVz
dFRpbWUgKyByZWxhdGl2ZVNlY29uZHMpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6Om1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIG1v
bm90b25pY1NlY29uZHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1vbm90b25pY1NlY29uZHMgPj0g
MCk7CisgICAgaWYgKCFtb25vdG9uaWNTZWNvbmRzKQorICAgICAgICByZXR1cm4gMDsKKyAgICBE
b2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOworICAgIEFT
U0VSVCh0aW1pbmcpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5y
ZWZlcmVuY2VTdGFydFRpbWUgKyBtb25vdG9uaWNTZWNvbmRzIC0gdGltaW5nLT5tb25vdG9uaWNS
ZWZlcmVuY2VTdGFydFRpbWUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgYWJzb2x1dGVTZWNvbmRzKSBjb25z
dAoreworICAgIEFTU0VSVChhYnNvbHV0ZVNlY29uZHMgPj0gMCk7CisgICAgaWYgKCFhYnNvbHV0
ZVNlY29uZHMpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGFic29sdXRlU2Vjb25kcyAqIDEwMDAuMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAppbmRl
eCAwYzM3MzgzMjgwYTAzMjNkNzI2ZTlhOTc4N2NhMzBjMWUzODM5MDcxLi5hNGMyOTA5ZWU3ZWMz
YzI4OTExYWE4Yjg4YWY2YWE3M2U2YmRhMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVRpbWluZy5oCkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKiBkb2N1bWVudExvYWRUaW1pbmcoKSBjb25zdDsKICAgICBSZXNvdXJjZUxvYWRUaW1p
bmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJs
ZSkgY29uc3Q7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAppbmRleCAyNjlmYWQw
MDI1ZDlhYWQ0MWU1MWI3MmFjYWZhYWFiNTZkZDIzMjVmLi44MzZhNzFkNzMyOTdhNTY2ZWE2ZjIw
NWEyZDc5MmZhOGE4YWE2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gdGltaW5nID0gY3JlYXRl
KCk7CiAgICAgICAgIHRpbWluZy0+cmVxdWVzdFRpbWUgPSByZXF1ZXN0VGltZTsKKyAgICAgICAg
dGltaW5nLT5tb25vdG9uaWNSZXF1ZXN0VGltZSA9IG1vbm90b25pY1JlcXVlc3RUaW1lOwogICAg
ICAgICB0aW1pbmctPnByb3h5U3RhcnQgPSBwcm94eVN0YXJ0OwogICAgICAgICB0aW1pbmctPnBy
b3h5RW5kID0gcHJveHlFbmQ7CiAgICAgICAgIHRpbWluZy0+ZG5zU3RhcnQgPSBkbnNTdGFydDsK
QEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogICAgICAgICB0aW1pbmctPnNlbmRTdGFydCA9IHNl
bmRTdGFydDsKICAgICAgICAgdGltaW5nLT5zZW5kRW5kID0gc2VuZEVuZDsKICAgICAgICAgdGlt
aW5nLT5yZWNlaXZlSGVhZGVyc0VuZCA9IHJlY2VpdmVIZWFkZXJzRW5kOworICAgICAgICB0aW1p
bmctPnJlc3BvbnNlRW5kID0gcmVzcG9uc2VFbmQ7CiAgICAgICAgIHRpbWluZy0+c3NsU3RhcnQg
PSBzc2xTdGFydDsKICAgICAgICAgdGltaW5nLT5zc2xFbmQgPSBzc2xFbmQ7CiAgICAgICAgIHJl
dHVybiB0aW1pbmcucmVsZWFzZSgpOwpAQCAtNjAsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gcmVxdWVzdFRpbWUgPT0gb3RoZXIucmVxdWVzdFRpbWUKKyAgICAg
ICAgICAgICYmIG1vbm90b25pY1JlcXVlc3RUaW1lID09IG90aGVyLm1vbm90b25pY1JlcXVlc3RU
aW1lCiAgICAgICAgICAgICAmJiBwcm94eVN0YXJ0ID09IG90aGVyLnByb3h5U3RhcnQKICAgICAg
ICAgICAgICYmIHByb3h5RW5kID09IG90aGVyLnByb3h5RW5kCiAgICAgICAgICAgICAmJiBkbnNT
dGFydCA9PSBvdGhlci5kbnNTdGFydApAQCAtNjksNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAmJiBzZW5kU3RhcnQgPT0gb3RoZXIuc2VuZFN0YXJ0CiAgICAgICAgICAgICAmJiBzZW5k
RW5kID09IG90aGVyLnNlbmRFbmQKICAgICAgICAgICAgICYmIHJlY2VpdmVIZWFkZXJzRW5kID09
IG90aGVyLnJlY2VpdmVIZWFkZXJzRW5kCisgICAgICAgICAgICAmJiByZXNwb25zZUVuZCA9PSBv
dGhlci5yZXNwb25zZUVuZAogICAgICAgICAgICAgJiYgc3NsU3RhcnQgPT0gb3RoZXIuc3NsU3Rh
cnQKICAgICAgICAgICAgICYmIHNzbEVuZCA9PSBvdGhlci5zc2xFbmQ7CiAgICAgfQpAQCAtNzks
NiArODMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZG91YmxlIHJlcXVlc3RUaW1lOworICAg
IGRvdWJsZSBtb25vdG9uaWNSZXF1ZXN0VGltZTsKICAgICBpbnQgcHJveHlTdGFydDsKICAgICBp
bnQgcHJveHlFbmQ7CiAgICAgaW50IGRuc1N0YXJ0OwpAQCAtODgsMTIgKzkzLDE0IEBAIHB1Ymxp
YzoKICAgICBpbnQgc2VuZFN0YXJ0OwogICAgIGludCBzZW5kRW5kOwogICAgIGludCByZWNlaXZl
SGVhZGVyc0VuZDsKKyAgICBpbnQgcmVzcG9uc2VFbmQ7CiAgICAgaW50IHNzbFN0YXJ0OwogICAg
IGludCBzc2xFbmQ7CiAKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkVGltaW5nKCkKICAgICAg
ICAgOiByZXF1ZXN0VGltZSgwKQorICAgICAgICAsIG1vbm90b25pY1JlcXVlc3RUaW1lKDApCiAg
ICAgICAgICwgcHJveHlTdGFydCgtMSkKICAgICAgICAgLCBwcm94eUVuZCgtMSkKICAgICAgICAg
LCBkbnNTdGFydCgtMSkKQEAgLTEwMyw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAsIHNl
bmRTdGFydCgwKQogICAgICAgICAsIHNlbmRFbmQoMCkKICAgICAgICAgLCByZWNlaXZlSGVhZGVy
c0VuZCgwKQorICAgICAgICAsIHJlc3BvbnNlRW5kKDApCiAgICAgICAgICwgc3NsU3RhcnQoLTEp
CiAgICAgICAgICwgc3NsRW5kKC0xKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103733</attachid>
            <date>2011-08-11 21:57:19 -0700</date>
            <delta_ts>2011-08-15 22:32:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58354-20110811215718.patch</filename>
            <type>text/plain</type>
            <size>27055</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3NjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTc0Y2Q2M2QyZWM0MjJj
YTI5MTE2OTQyMGJmZWY3ZGIwYTIzMWJkLi4zMjkxY2EwN2Q1YTY5MTBhYzM3MDA1NmE5Njk2NmZm
MWUwYWQ0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDgtMDggIEphbWVz
IFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtOYXZpZ2F0aW9u
IFRpbWluZ10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3Vy
cmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgzNTQKKworICAgICAgICBXaGVuZXZlciBwb3NzaWJsZSwgd2Ugbm93IHVzZSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gQWxsIG9mIHRoZSBXZWJDb3JlLW9yaWdpbmF0ZWQKKyAg
ICAgICAgdGltZXMgaGF2ZSBiZWVuIGNvbnZlcnRlZC4gRm9yIHBsYXRmb3JtLW9yaWdpbmF0ZWQg
dGltZXMsIHBsYXRmb3JtcyBtdXN0IHNwZWNpZnkgYSBzdGFydAorICAgICAgICBtb25vdG9uaWNh
bGx5IGluY3JlYXNpbmcgdGltZSB0byBpbmRpY2F0ZSBkZWx0YXMgYXJlIG1vbm90b25pYy4gT3Ro
ZXJ3aXNlLCB0aG9zZSB0aW1lcyB3aWxsCisgICAgICAgIGJlIHJlcG9ydGVkIHVzaW5nIHRoZSBv
bGQgd2FsbCB0aW1lIHZhbHVlcywgd2hpY2ggbWF5IGJlIHNrZXdlZC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlbGllcyBv
biBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1p
bmc6OkRvY3VtZW50TG9hZFRpbWluZyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxT
dWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9u
YWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmRpc3BhdGNoVGltZWRFdmVudCk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5j
cHA6IFJlbW92ZWQgc2tld2VkIHRpbWUgc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZv
cm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
VGltaW5nOjpyZWRpcmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6ZmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVz
cG9uc2VFbmQpOiBUcnkgcGxhdGZvcm0ncyBtb25vdG9uaWMgcmVzcG9uc2VFbmQsIHRoZW4KKyAg
ICAgICAgV2ViQ29yZSdzIG1vbnRvbmljUmVzcG9uc2VFbmQsIHRoZW4gZmFsbGJhY2sgdG8gcGxh
dGZvcm0ncyB3YWxsIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
ZG9tTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50
ZXJhY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRl
bnRMb2FkZWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjp0b0ludGVnZXJNaWxsaXNlY29uZHMp
OgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOiBBZGRlZCBtb25vdG9uaWNSZXF1ZXN0VGlt
ZS4gSWYgcGxhdGZvcm1zIHBvcHVsYXRlCisgICAgICAgIHRoaXMsIHRoZW4gd2UgY2FuIHVzZSBp
dCB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGltZS4gT3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sg
dG8gdGhlIHdhbGwKKyAgICAgICAgY2xvY2suCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRUaW1pbmc6OmRlZXBDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWlu
Zzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc6OlJl
c291cmNlTG9hZFRpbWluZyk6CisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBm
b3Igc3RyaW5nIGxpdGVyYWxzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZmQyODg2ZTllZWFjNzNkMmFjMjRiYjNjZjgwYWE0YjVmY2ExZTE5My4uNTc2NjY1MGMwZGRj
YmVhMjVhNDcxYjBjY2UzOGU3MjRiMzVjNDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xMDE0LDE1ICsxMDE0LDE1IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUoUmVhZHlT
dGF0ZSByZWFkeVN0YXRlKQogICAgIHN3aXRjaCAocmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9h
ZGluZzoKICAgICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcpCi0gICAgICAg
ICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBjdXJyZW50VGltZSgpOworICAgICAg
ICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Mb2FkaW5nID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmU6CiAgICAgICAg
IGlmICghbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSkKLSAgICAgICAgICAgIG1fZG9j
dW1lbnRUaW1pbmcuZG9tSW50ZXJhY3RpdmUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAg
bV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBsZXRlOgogICAgICAgICBpZiAo
IW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29tcGxldGUpCi0gICAgICAgICAgICBtX2RvY3VtZW50VGlt
aW5nLmRvbUNvbXBsZXRlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnRU
aW1pbmcuZG9tQ29tcGxldGUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC00MTkxLDEwICs0MTkxLDEwIEBAIHZvaWQgRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZygpCiAgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KSB8fCBtX3JlYWR5U3RhdGUgIT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAg
ICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KQotICAg
ICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0ID0gY3VycmVu
dFRpbWUoKTsKKyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRT
dGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0cnVlLCBm
YWxzZSkpOwogICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRF
bmQpCi0gICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50RW5kID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVk
RXZlbnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAogICAgIGlmIChSZWZQ
dHI8RnJhbWU+IGYgPSBmcmFtZSgpKSB7CiAgICAgICAgIC8vIEZyYW1lTG9hZGVyOjpmaW5pc2hl
ZFBhcnNpbmcoKSBtaWdodCBlbmQgdXAgY2FsbGluZyBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgp
IGlmIGFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VGltaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUaW1pbmcuaAppbmRleCA4OWUyZmI5OWIxMjlh
Y2M1ZGQ5OWVmZTJkOGRmNDIxMWU0ZmQ4MTg2Li45MGRjYTc3YjU0MDVkODExNmZlYjk5NjE4OWFk
NDEwNGU2YTg3NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUaW1p
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUaW1pbmcuaApAQCAtMjYsNiAr
MjYsOCBAQAogI2lmbmRlZiBEb2N1bWVudFRpbWluZ19oCiAjZGVmaW5lIERvY3VtZW50VGltaW5n
X2gKIAorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBEb2N1bWVudFRpbWluZyB7CkBAIC0zNSw2ICszNyw4IEBAIHN0cnVjdCBEb2N1
bWVudFRpbWluZyB7CiAgICAgICAgICwgZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQoMC4wKQog
ICAgICAgICAsIGRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgwLjApCiAgICAgICAgICwgZG9tQ29t
cGxldGUoMC4wKQorICAgICAgICAsIHJlZmVyZW5jZVN0YXJ0VGltZShjdXJyZW50VGltZSgpKQor
ICAgICAgICAsIG1vbm90b25pY1JlZmVyZW5jZVN0YXJ0VGltZShtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKSkKICAgICB7CiAgICAgfQogCkBAIC00Myw2ICs0Nyw4IEBAIHN0cnVjdCBEb2N1
bWVudFRpbWluZyB7CiAgICAgZG91YmxlIGRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0OwogICAg
IGRvdWJsZSBkb21Db250ZW50TG9hZGVkRXZlbnRFbmQ7CiAgICAgZG91YmxlIGRvbUNvbXBsZXRl
OworICAgIGRvdWJsZSByZWZlcmVuY2VTdGFydFRpbWU7CisgICAgZG91YmxlIG1vbm90b25pY1Jl
ZmVyZW5jZVN0YXJ0VGltZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggOGIxOGYwYmQ4OWRlNTY2
NDM5ZGY0Y2ZlM2Q5YWUwNjc2NDdjYzY5NC4uYWZiYjkwODFkNDFhMDM1MWI4NjQ4OWUyNDNmYjk1
MWQ0Mzc1ZDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTUwNyw4ICs1MDcsMTQgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW4KICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRp
ZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBtb25vdG9uaWNGaW5pc2hUaW1lKQogeworICAgIGRvdWJs
ZSBmaW5pc2hUaW1lID0gMC4wOworICAgIGlmIChmaW5pc2hUaW1lKSB7CisgICAgICAgIGNvbnN0
IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZyA9IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+dGltaW5nKCk7CisgICAgICAgIGlmIChkb2N1bWVudFRpbWluZykKKyAgICAgICAgICAg
IGZpbmlzaFRpbWUgPSBkb2N1bWVudFRpbWluZy0+cmVmZXJlbmNlU3RhcnRUaW1lICsgbW9ub3Rv
bmljRmluaXNoVGltZSAtIGRvY3VtZW50VGltaW5nLT5tb25vdG9uaWNSZWZlcmVuY2VTdGFydFRp
bWU7CisgICAgfQogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFs
c2UsIGZpbmlzaFRpbWUpOwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCmluZGV4IGVhM2NlZjk3OTY4NTM0NjY4MjY1ZjNkZGIwNDcyMjI2ODkwNmQ0ZGIuLmEyYTA1
MWU4NWViYTNhM2NlNjJkZjU1MjQ3ODYyMzdmMDEyY2MzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTEyMCwxMCAr
MTIwLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhlYWRlcnNPYmpl
Y3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IFJlc291cmNl
TG9hZFRpbWluZyYgdGltaW5nLCBkb3VibGUgcmVmZXJlbmNlVGltZSkKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB0aW1pbmdPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwotICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJyZXF1ZXN0VGltZSIsIHRpbWluZy5yZXF1
ZXN0VGltZSk7CisgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInJlcXVlc3RUaW1lIiwgcmVm
ZXJlbmNlVGltZSArIHRpbWluZy5yZXF1ZXN0VGltZSk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXRO
dW1iZXIoInByb3h5U3RhcnQiLCB0aW1pbmcucHJveHlTdGFydCk7CiAgICAgdGltaW5nT2JqZWN0
LT5zZXROdW1iZXIoInByb3h5RW5kIiwgdGltaW5nLnByb3h5RW5kKTsKICAgICB0aW1pbmdPYmpl
Y3QtPnNldE51bWJlcigiZG5zU3RhcnQiLCB0aW1pbmcuZG5zU3RhcnQpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJsZSByZWZlcmVuY2VUaW1l
KQogewogICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
NjQsNyArMTY0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2UKICAgICByZXNwb25zZU9iamVj
dC0+c2V0TnVtYmVyKCJjb25uZWN0aW9uSWQiLCByZXNwb25zZS5jb25uZWN0aW9uSUQoKSk7CiAg
ICAgcmVzcG9uc2VPYmplY3QtPnNldEJvb2xlYW4oImZyb21EaXNrQ2FjaGUiLCByZXNwb25zZS53
YXNDYWNoZWQoKSk7CiAgICAgaWYgKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQotICAg
ICAgICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRp
bWluZygqcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpKTsKKyAgICAgICAgcmVzcG9uc2VP
YmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1pbmcoKnJlc3BvbnNl
LnJlc291cmNlTG9hZFRpbWluZygpLCByZWZlcmVuY2VUaW1lKSk7CiAKICAgICBpZiAocmVzcG9u
c2UucmVzb3VyY2VMb2FkSW5mbygpKSB7CiAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmpl
Y3QoImhlYWRlcnMiLCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2Fk
SW5mbygpLT5yZXNwb25zZUhlYWRlcnMpKTsKQEAgLTE4MCwxOCArMTgwLDI4IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlCiAgICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2Uo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGNvbnN0IENhY2hl
ZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSwgZG91YmxlIHJlZmVyZW5jZVRpbWUpCiB7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIHJlc291cmNlT2JqZWN0LT5zZXRTdHJpbmcoInVybCIsIGNhY2hlZFJl
c291cmNlLnVybCgpKTsKICAgICByZXNvdXJjZU9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5z
cGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVTdHJpbmcoY2FjaGVkUmVzb3VyY2Up
KTsKICAgICByZXNvdXJjZU9iamVjdC0+c2V0TnVtYmVyKCJib2R5U2l6ZSIsIGNhY2hlZFJlc291
cmNlLmVuY29kZWRTaXplKCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNl
UmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2Uu
cmVzcG9uc2UoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25z
ZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25z
ZSgpLCByZWZlcmVuY2VUaW1lKTsKICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSkKICAgICAgICAg
cmVzb3VyY2VPYmplY3QtPnNldE9iamVjdCgicmVzcG9uc2UiLCByZXNvdXJjZVJlc3BvbnNlKTsK
ICAgICByZXR1cm4gcmVzb3VyY2VPYmplY3Q7CiB9CiAKK3N0YXRpYyBkb3VibGUgR2V0UmVmZXJl
bmNlVGltZUZyb21Mb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBkb3VibGUg
cmVmZXJlbmNlVGltZSA9IGN1cnJlbnRUaW1lKCkgLSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKKyAgICBpZiAobG9hZGVyICYmIGxvYWRlci0+ZnJhbWUoKSkgeworICAgICAgICBjb25z
dCBEb2N1bWVudFRpbWluZyogdGltaW5nID0gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT50
aW1pbmcoKTsKKyAgICAgICAgcmVmZXJlbmNlVGltZSA9IHRpbWluZy0+cmVmZXJlbmNlU3RhcnRU
aW1lIC0gdGltaW5nLT5tb25vdG9uaWNSZWZlcmVuY2VTdGFydFRpbWU7CisgICAgfQorICAgIHJl
dHVybiByZWZlcmVuY2VUaW1lOworfQorCiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpCiB7CiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUmVzb3Vy
Y2VBZ2VudFN0YXRlOjpyZXNvdXJjZUFnZW50RW5hYmxlZCkpIHsKQEAgLTIzMyw3ICsyNDMsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIGVsc2UKICAgICAgICAgY2FsbFN0YWNrVmFs
dWUgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgp
ID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7Ci0gICAgbV9mcm9udGVuZC0+cmVx
dWVzdFdpbGxCZVNlbnQocmVzb3VyY2VJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5m
cmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3Ry
aW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGlt
ZSgpLCBpbml0aWF0b3JPYmplY3QsIGNhbGxTdGFja1ZhbHVlLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSkpOworICAgIG1fZnJvbnRlbmQtPnJlcXVlc3RX
aWxsQmVTZW50KHJlc291cmNlSWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUo
KSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygp
LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwg
aW5pdGlhdG9yT2JqZWN0LCBjYWxsU3RhY2tWYWx1ZSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJl
c3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIEdldFJlZmVyZW5jZVRpbWVGcm9tTG9hZGVyKGxvYWRl
cikpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0yNDQsNyArMjU0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXNvdXJjZUlk
ID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXNvdXJjZUlkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVzcG9uc2UpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291
cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIEdl
dFJlZmVyZW5jZVRpbWVGcm9tTG9hZGVyKGxvYWRlcikpOwogICAgIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7
CiAgICAgbG9uZyBjYWNoZWRSZXNvdXJjZVNpemUgPSAwOwogCkBAIC0zMTgsNyArMzI4LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJl
c291cmNlKHJlc291cmNlSWQsIHJlc291cmNlKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkg
PyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAotICAgIG1fZnJvbnRlbmQtPnJl
c291cmNlTG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlSWQsIGZyYW1lSWQsIGxvYWRlcklk
LCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3Qs
IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoKnJlc291cmNlKSk7CisgICAgbV9mcm9udGVu
ZC0+cmVzb3VyY2VMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2VJZCwgZnJhbWVJZCwgbG9h
ZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9i
amVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSgqcmVzb3VyY2UsIEdldFJlZmVyZW5j
ZVRpbWVGcm9tTG9hZGVyKGxvYWRlcikpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggZTVjOThkYjNhOTU2MzE3MGY3YWIzMjkwYjc5M2U5ZDc3ZDg5OTZkNC4uN2I3YzZk
NmIwNDkwZTY5MzM2N2Q4OGE1ZmZmMmUxNWQ4MDU2ZWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yMzA1LDcgKzIzMDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAgICB9CiAKICAgICBBU1NFUlQoIW1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7Ci0g
ICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0
ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnRpbWlu
ZygpLT5uYXZpZ2F0aW9uU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAog
ICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVz
b3VyY2UoaWRlbnRpZmllcikpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
dXBkYXRlTG9hZGluZygpOwpAQCAtMjk0MiwxMSArMjk0MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAgIHByb3Zpc2lvbmFsTG9h
ZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFn
ZSA9IHRydWU7Ci0gICAgCisKICAgICAvLyBTaG91bGQgaGF2ZSB0aW1pbmcgZGF0YSBmcm9tIHBy
ZXZpb3VzIHRpbWUocykgdGhlIHBhZ2Ugd2FzIHNob3duLgogICAgIEFTU0VSVChwcm92aXNpb25h
bExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CiAgICAgcHJvdmlzaW9uYWxMb2Fk
ZXItPnJlc2V0VGltaW5nKCk7Ci0gICAgcHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5uYXZp
Z2F0aW9uU3RhcnQgPSBjdXJyZW50VGltZSgpOyAgICAKKyAgICBwcm92aXNpb25hbExvYWRlci0+
dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OwogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0cnVlKTsKICAgICBjb21t
aXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYTFmOTkxOGViYmRlNTY2ODUzZTc1MTZjYmZmZjg0NjI5MTBjZDQ4
ZC4uZWQ5ODU0ZTc0ZGEzNDlkNmQ3OTY0MzVkZDE5MTBjZjhjYmQyNjJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBA
QCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzbwogICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPnJl
ZGlyZWN0Q291bnQrKzsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0
U3RhcnQpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0U3RhcnQgPSBk
b2N1bWVudExvYWRUaW1pbmctPmZldGNoU3RhcnQ7Ci0gICAgICAgIGRvY3VtZW50TG9hZFRpbWlu
Zy0+cmVkaXJlY3RFbmQgPSBjdXJyZW50VGltZSgpOworICAgICAgICBkb2N1bWVudExvYWRUaW1p
bmctPnJlZGlyZWN0RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgICAg
IGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydCA9IGRvY3VtZW50TG9hZFRpbWluZy0+cmVk
aXJlY3RFbmQ7CiAgICAgfQogCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBNYWluUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcg
bG9uZwogICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhp
cyBpcyAzMjY2MjE2LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhp
cyk7CiAKLSAgICBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPSBjdXJyZW50VGltZSgpOworICAg
IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgsIGFsbEF0T25jZSk7CiB9CkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBN
YWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAj
aWYgIVVTRShDRikKICAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxv
YWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmco
KSk7CiAjZW5kaWYKLSAgICAKKwogICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2Fu
IGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdAogICAgIC8v
IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KHRoaXMpOwpAQCAtNDgwLDExICs0ODAsMTAgQEAgdm9pZCBNYWluUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBkbCA9IGRvY3VtZW50TG9hZGVyKCk7CiAjZW5kaWYKIAotICAgIEFTU0VS
VCghZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnJlc3BvbnNlRW5kKTsKLSAgICBkb2N1bWVu
dExvYWRlcigpLT50aW1pbmcoKS0+cmVzcG9uc2VFbmQgPSBmaW5pc2hUaW1lID8gZmluaXNoVGlt
ZSA6IChtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPyBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQg
OiBjdXJyZW50VGltZSgpKTsKKyAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVzcG9u
c2VFbmQgPSBmaW5pc2hUaW1lID8gZmluaXNoVGltZSA6IChtX3RpbWVPZkxhc3REYXRhUmVjZWl2
ZWQgPyBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgOiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAgICAgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7Ci0gICAgCisKICNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGRsLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtNTk2LDcgKzU5
NSw3IEBAIGJvb2wgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1CiAKICAgICBBU1NFUlQoZG9jdW1lbnRMb2Fk
ZXIoKS0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CiAgICAgQVNTRVJUKCFkb2N1bWVudExv
YWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCk7Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+dGlt
aW5nKCktPmZldGNoU3RhcnQgPSBjdXJyZW50VGltZSgpOworICAgIGRvY3VtZW50TG9hZGVyKCkt
PnRpbWluZygpLT5mZXRjaFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qocik7CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDZjYTViMzdkMjFi
OTYyYTFkYjJiMGEwNmU2M2U5MDZiYjY3ZDNmMmQuLjhhOGU4ZmM2NTgzMDlmYTJiODA1ZjIxMWNi
YWI5OWRhOTVhZDc5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2MDUsOSAr
MTYwNSw5IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaFRpbWVkRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIERvY3VtZW50KiB0YXJnZXQsIGRvCiB7CiAgICAgQVNTRVJUKHN0YXJ0VGlt
ZSk7CiAgICAgQVNTRVJUKGVuZFRpbWUpOwotICAgICpzdGFydFRpbWUgPSBjdXJyZW50VGltZSgp
OworICAgICpzdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpOwotICAgICplbmRUaW1lID0gY3VycmVudFRpbWUo
KTsKKyAgICAqZW5kVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogfQogCiB2
b2lkIERPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCBmZjI1MzU0MmRjNGIyYTM0OTljOWQ2Njlk
NzYxYjJlNTFjN2UxNmNiLi5hY2I4Y2E3Yjg0NTMwYWYxNjNiYjE1NTc3YTQ1NjcyYWY3MjM0ZDRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcApAQCAtNDQsMzYg
KzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBs
b25nIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgc2Vjb25kcykKLXsKLSAgICBBU1NFUlQo
c2Vjb25kcyA+PSAwKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihzZWNvbmRzICogMTAwMC4wKTsKLX0KLQotc3RhdGljIGRvdWJsZSBnZXRQb3NzaWJseVNrZXdl
ZFRpbWVJbktub3duUmFuZ2UoZG91YmxlIHNrZXdlZFRpbWUsIGRvdWJsZSBsb3dlckJvdW5kLCBk
b3VibGUgdXBwZXJCb3VuZCkKLXsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAvLyBUaGUg
Y2hyb21pdW0gcG9ydCdzIGN1cnJlbnRUaW1lKCkgaW1wbGVtZW50YXRpb24gb25seSBzeW5jcyB3
aXRoIHRoZQotICAgIC8vIHN5c3RlbSBjbG9jayBldmVyeSA2MCBzZWNvbmRzLiBTbyBpdCBpcyBw
b3NzaWJsZSBmb3IgdGltaW5nIG1hcmtzCi0gICAgLy8gY29sbGVjdGVkIGluIGRpZmZlcmVudCB0
aHJlYWRzIG9yIHByb2Nlc3NlcyB0byBoYXZlIGEgc21hbGwgc2tldy4KLSAgICAvLyBGSVhNRTog
SXQgbWF5IGJlIHBvc3NpYmxlIHRvIGFkZCBhIGN1cnJlbnRUaW1lRnJvbVN5c3RlbVRpbWUoKSBt
ZXRob2QKLSAgICAvLyB0aGF0IGVsaW1pbmF0ZXMgdGhlIHNrZXcuCi0gICAgaWYgKHNrZXdlZFRp
bWUgPD0gbG93ZXJCb3VuZCkKLSAgICAgICAgcmV0dXJuIGxvd2VyQm91bmQ7Ci0KLSAgICBpZiAo
dXBwZXJCb3VuZCA8PSAwLjApCi0gICAgICAgIHVwcGVyQm91bmQgPSBjdXJyZW50VGltZSgpOwot
Ci0gICAgaWYgKHNrZXdlZFRpbWUgPj0gdXBwZXJCb3VuZCkKLSAgICAgICAgcmV0dXJuIHVwcGVy
Qm91bmQ7Ci0jZWxzZQotICAgIEFTU0VSVF9VTlVTRUQobG93ZXJCb3VuZCwgc2tld2VkVGltZSA+
PSBsb3dlckJvdW5kKTsKLSAgICBBU1NFUlRfVU5VU0VEKHVwcGVyQm91bmQsIHNrZXdlZFRpbWUg
PD0gdXBwZXJCb3VuZCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBza2V3ZWRUaW1lOwotfQotCiBQ
ZXJmb3JtYW5jZVRpbWluZzo6UGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqIGZyYW1lKQogICAgIDog
bV9mcmFtZShmcmFtZSkKIHsKQEAgLTk1LDcgKzY1LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5n
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRl
Z2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQg
bG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKQEAg
LTEwNyw3ICs3Nyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5s
b2FkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRp
cmVjdCB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51
bmxvYWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxp
c2Vjb25kcyh0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKCkgY29uc3QKQEAgLTExOSw3ICs4
OSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRF
bmQoKSBjb25zdAogICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRp
bWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+dW5sb2FkRXZlbnRF
bmQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+dW5sb2FkRXZlbnRFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnJlZGlyZWN0U3RhcnQoKSBjb25zdApAQCAtMTMxLDcgKzEwMSw3IEBAIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RTdGFydCgpIGNvbnN0CiAgICAg
aWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFydCk7
CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5y
ZWRpcmVjdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5n
OjpyZWRpcmVjdEVuZCgpIGNvbnN0CkBAIC0xNDMsNyArMTEzLDcgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0CiAgICAgaWYgKHRpbWlu
Zy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RFbmQpOworICAgIHJldHVy
biBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RFbmQp
OwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZldGNoU3RhcnQo
KSBjb25zdApAQCAtMTUyLDcgKzEyMiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6ZmV0Y2hTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmZldGNo
U3RhcnQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRp
bWluZy0+ZmV0Y2hTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRp
bWluZzo6ZG9tYWluTG9va3VwU3RhcnQoKSBjb25zdApAQCAtMjc3LDcgKzI0Nyw3IEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdAogICAg
IGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHModGltaW5nLT5yZXNwb25zZUVuZCk7CisgICAgcmV0dXJuIG1vbm90b25pY1Rp
bWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZXNwb25zZUVuZCk7CiB9CiAKIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZygpIGNvbnN0CkBAIC0y
ODYsNyArMjU2LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21M
b2FkaW5nKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIGZldGNoU3Rh
cnQoKTsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Mb2Fk
aW5nKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1p
bmctPmRvbUxvYWRpbmcpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKQEAgLTI5NSw3ICsyNjUsNyBAQCB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKICAgICBp
ZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+ZG9tSW50ZXJhY3RpdmUpOworICAgIHJldHVybiBtb25vdG9uaWNU
aW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tSW50ZXJhY3RpdmUpOwogfQogCiB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVu
dFN0YXJ0KCkgY29uc3QKQEAgLTMwNCw3ICsyNzQsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVy
Zm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KCkgY29uc3QKICAgICBp
ZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpOworICAgIHJldHVy
biBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExv
YWRlZEV2ZW50U3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgpIGNvbnN0CkBAIC0zMTMsNyArMjgzLDcgQEAg
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZl
bnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZl
bnRFbmQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRp
bWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSgpIGNvbnN0CkBAIC0zMjIsNyArMjkyLDcg
QEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSgpIGNv
bnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRv
SW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbXBsZXRlKTsKKyAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbXBsZXRlKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRTdGFydCgp
IGNvbnN0CkBAIC0zMzEsNyArMzAxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjpsb2FkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxv
YWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vj
b25kcyh0aW1pbmctPmxvYWRFdmVudFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdApAQCAtMzQwLDcgKzMxMCw3IEBA
IHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50RW5kKCkgY29u
c3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9J
bnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50RW5kKTsKKyAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudEVuZCk7CiB9
CiAKIERvY3VtZW50TG9hZGVyKiBQZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRMb2FkZXIoKSBj
b25zdApAQCAtMzgxLDIyICszNTEsMzEgQEAgUmVzb3VyY2VMb2FkVGltaW5nKiBQZXJmb3JtYW5j
ZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGVyLT5y
ZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50
IHJlbGF0aXZlU2Vjb25kcykgY29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRp
bWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQgcmVsYXRpdmVNaWxs
aXNlY29uZHMpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbGF0aXZlU2Vjb25kcyA+PSAwKTsKKyAg
ICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29uZHMgPj0gMCk7CiAgICAgUmVzb3VyY2VMb2FkVGlt
aW5nKiByZXNvdXJjZVRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwogICAgIEFTU0VSVChy
ZXNvdXJjZVRpbWluZyk7Ci0gICAgRG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudFRpbWluZyA9
IGRvY3VtZW50TG9hZFRpbWluZygpOwotICAgIEFTU0VSVChkb2N1bWVudFRpbWluZyk7Ci0KLSAg
ICAvLyBUaGUgUmVzb3VyY2VMb2FkVGltaW5nIEFQSSdzIHJlcXVlc3RUaW1lIGlzIHRoZSBiYXNl
IHRpbWUgdG8gd2hpY2ggYWxsCi0gICAgLy8gb3RoZXIgbWFya3MgYXJlIHJlbGF0aXZlLiBTbyB0
byBnZXQgYW4gYWJzb2x1dGUgdGltZSwgd2UgbXVzdCBhZGQgaXQgdG8KLSAgICAvLyB0aGUgcmVs
YXRpdmUgbWFya3MuCi0gICAgLy8KLSAgICAvLyBTaW5jZSBSZXNvdXJjZUxvYWRUaW1pbmdzIGNh
bWUgZnJvbSB0aGUgbmV0d29yayBwbGF0Zm9ybSBsYXllciwgd2UgbXVzdAotICAgIC8vIGNoZWNr
IHRoZW0gZm9yIHNrZXcgYmVjYXVzZSB0aGV5IG1heSBiZSBmcm9tIGFub3RoZXIgdGhyZWFkL3By
b2Nlc3MuCi0gICAgZG91YmxlIGJhc2VUaW1lID0gZ2V0UG9zc2libHlTa2V3ZWRUaW1lSW5Lbm93
blJhbmdlKHJlc291cmNlVGltaW5nLT5yZXF1ZXN0VGltZSwgZG9jdW1lbnRUaW1pbmctPmZldGNo
U3RhcnQsIGRvY3VtZW50VGltaW5nLT5yZXNwb25zZUVuZCk7Ci0gICAgcmV0dXJuIHRvSW50ZWdl
ck1pbGxpc2Vjb25kcyhiYXNlVGltZSkgKyByZWxhdGl2ZVNlY29uZHM7CisgICAgZG91YmxlIHJl
bGF0aXZlU2Vjb25kcyA9IHJlbGF0aXZlTWlsbGlzZWNvbmRzIC8gMTAwMC4wOworICAgIHJldHVy
biBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHJlc291cmNlVGltaW5nLT5yZXF1
ZXN0VGltZSArIHJlbGF0aXZlU2Vjb25kcyk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQZXJm
b3JtYW5jZVRpbWluZzo6bW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUg
bW9ub3RvbmljU2Vjb25kcykgY29uc3QKK3sKKyAgICBBU1NFUlQobW9ub3RvbmljU2Vjb25kcyA+
PSAwKTsKKyAgICBpZiAoIW1vbm90b25pY1NlY29uZHMpCisgICAgICAgIHJldHVybiAwOworICAg
IGNvbnN0IERvY3VtZW50VGltaW5nKiB0aW1pbmcgPSBkb2N1bWVudFRpbWluZygpOworICAgIEFT
U0VSVCh0aW1pbmcpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5y
ZWZlcmVuY2VTdGFydFRpbWUgKyBtb25vdG9uaWNTZWNvbmRzIC0gdGltaW5nLT5tb25vdG9uaWNS
ZWZlcmVuY2VTdGFydFRpbWUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgYWJzb2x1dGVTZWNvbmRzKSBjb25z
dAoreworICAgIEFTU0VSVChhYnNvbHV0ZVNlY29uZHMgPj0gMCk7CisgICAgaWYgKCFhYnNvbHV0
ZVNlY29uZHMpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGFic29sdXRlU2Vjb25kcyAqIDEwMDAuMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAppbmRl
eCAwYzM3MzgzMjgwYTAzMjNkNzI2ZTlhOTc4N2NhMzBjMWUzODM5MDcxLi5hNGMyOTA5ZWU3ZWMz
YzI4OTExYWE4Yjg4YWY2YWE3M2U2YmRhMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVRpbWluZy5oCkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKiBkb2N1bWVudExvYWRUaW1pbmcoKSBjb25zdDsKICAgICBSZXNvdXJjZUxvYWRUaW1p
bmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJs
ZSkgY29uc3Q7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104007</attachid>
            <date>2011-08-15 22:33:01 -0700</date>
            <delta_ts>2011-08-16 17:22:15 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-58354-20110815223300.patch</filename>
            <type>text/plain</type>
            <size>45248</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWZkYmEyNGM4ODVjNWRl
YmMwYTE4NDg0MWNjOGNiOTIyYTdjZTJmLi4zYmFiMjQyODdlMjY4NDU2NDkxMjU4Y2QzN2RhZWMx
YzA2NzlkNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDgtMDggIEphbWVz
IFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtOYXZpZ2F0aW9u
IFRpbWluZ10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3Vy
cmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgzNTQKKworICAgICAgICBXaGVuZXZlciBwb3NzaWJsZSwgd2Ugbm93IHVzZSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gQWxsIG9mIHRoZSBXZWJDb3JlLW9yaWdpbmF0ZWQKKyAg
ICAgICAgdGltZXMgaGF2ZSBiZWVuIGNvbnZlcnRlZC4gRm9yIHBsYXRmb3JtLW9yaWdpbmF0ZWQg
dGltZXMsIHBsYXRmb3JtcyBtdXN0IHNwZWNpZnkgYSBzdGFydAorICAgICAgICBtb25vdG9uaWNh
bGx5IGluY3JlYXNpbmcgdGltZSB0byBpbmRpY2F0ZSBkZWx0YXMgYXJlIG1vbm90b25pYy4gT3Ro
ZXJ3aXNlLCB0aG9zZSB0aW1lcyB3aWxsCisgICAgICAgIGJlIHJlcG9ydGVkIHVzaW5nIHRoZSBv
bGQgd2FsbCB0aW1lIHZhbHVlcywgd2hpY2ggbWF5IGJlIHNrZXdlZC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlbGllcyBv
biBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1p
bmc6OkRvY3VtZW50TG9hZFRpbWluZyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxT
dWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9u
YWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmRpc3BhdGNoVGltZWRFdmVudCk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5j
cHA6IFJlbW92ZWQgc2tld2VkIHRpbWUgc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZv
cm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
VGltaW5nOjpyZWRpcmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6ZmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVz
cG9uc2VFbmQpOiBUcnkgcGxhdGZvcm0ncyBtb25vdG9uaWMgcmVzcG9uc2VFbmQsIHRoZW4KKyAg
ICAgICAgV2ViQ29yZSdzIG1vbnRvbmljUmVzcG9uc2VFbmQsIHRoZW4gZmFsbGJhY2sgdG8gcGxh
dGZvcm0ncyB3YWxsIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
ZG9tTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50
ZXJhY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRl
bnRMb2FkZWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjp0b0ludGVnZXJNaWxsaXNlY29uZHMp
OgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOiBBZGRlZCBtb25vdG9uaWNSZXF1ZXN0VGlt
ZS4gSWYgcGxhdGZvcm1zIHBvcHVsYXRlCisgICAgICAgIHRoaXMsIHRoZW4gd2UgY2FuIHVzZSBp
dCB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGltZS4gT3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sg
dG8gdGhlIHdhbGwKKyAgICAgICAgY2xvY2suCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRUaW1pbmc6OmRlZXBDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWlu
Zzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc6OlJl
c291cmNlTG9hZFRpbWluZyk6CisKIDIwMTEtMDgtMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiAtW1dlYlVuZGVm
aW5lZCBkZWFsbG9jXSB0byBhcHBlYXNlIHRoZSBib3QgZ29kcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDBlNmIyMDVjZThmNmQ1ZDE4NDc5MTY5ZTczZDZjMTBkZjY4OGE4ZGIu
LmJlNjQ1NGE3ZDg2YzI4NTYwNzRlNDkxMTRjM2RjZGEwZWU5ODU0OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMjEwNCw2ICsyMTA0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIFwKQEAgLTI3MTUs
NiArMjcxNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFByaW9yaXR5LmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGVmMDU0YmQ4MTdlNjI5ZWEzYTVhODI4MDczOGU0ZmM2NTU0ODRmOTUuLjgwZGJlYmI2
NGRjMTZlMWRkN2Y1NWNmODJkYWZhNDdiMjQ4OTRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3
NDAsNiArMjc0MCw3IEBACiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvQ3VlTG9hZGVyLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL0N1ZUxvYWRlci5oJywKKyAgICAgICAgICAgICdsb2FkZXIvRG9j
dW1lbnRMb2FkVGltaW5nLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCcsCkBAIC00
MTc0LDYgKzQxNzUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGlt
aW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGI3NjMwMzcwZmNjYWZhZjI4NTIxZWU2NTY5
ZjFhODQ4MTFhOGJmMTIuLjY2OWFmNzk5YTk4MDAzZTI1ODZiNDAxNDdmZjkzZGExMTYxMTNkNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xMDU1LDYgKzEwNTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZDI4
ODZlOWVlYWM3M2QyYWMyNGJiM2NmODBhYTRiNWZjYTFlMTkzLi41NzY2NjUwYzBkZGNiZWEyNWE0
NzFiMGNjZTM4ZTcyNGIzNWM0NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMTQs
MTUgKzEwMTQsMTUgQEAgdm9pZCBEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHJl
YWR5U3RhdGUpCiAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7CiAgICAgY2FzZSBMb2FkaW5nOgog
ICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZykKLSAgICAgICAgICAgIG1f
ZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZyA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBt
X2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFjdGl2ZToKICAgICAgICAgaWYgKCFt
X2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlKQotICAgICAgICAgICAgbV9kb2N1bWVudFRp
bWluZy5kb21JbnRlcmFjdGl2ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBtX2RvY3Vt
ZW50VGltaW5nLmRvbUludGVyYWN0aXZlID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGxldGU6CiAgICAgICAgIGlmICghbV9kb2N1
bWVudFRpbWluZy5kb21Db21wbGV0ZSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9t
Q29tcGxldGUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5k
b21Db21wbGV0ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTQxOTEsMTAgKzQxOTEsMTAgQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIHx8IG1f
cmVhZHlTdGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsKICAgICBpZiAo
IW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpCi0gICAgICAgIG1f
ZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgPSBjdXJyZW50VGltZSgp
OworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0ID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRydWUsIGZhbHNlKSk7
CiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCkKLSAg
ICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQgPSBjdXJyZW50
VGltZSgpOworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudEVu
ZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCiAgICAgaWYgKFJlZlB0cjxGcmFt
ZT4gZiA9IGZyYW1lKCkpIHsKICAgICAgICAgLy8gRnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2lu
ZygpIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkgaWYgYWxs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IDBlMWExZjViZTY4YmY2OGQ3YTcxODkyNTA4NDM5MzBhZWY5MjA0ODQu
LmUzOTdkOWMyODUxMjQyNjBjNjVmYzkwYTUyN2RhMzA3ODdmNmNjNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC01MDcsMTEgKzUwNywyMSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbgogICAgICAgICByZXNv
dXJjZUFnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRv
dWJsZSBmaW5pc2hUaW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91YmxlIG1v
bm90b25pY0ZpbmlzaFRpbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCgpOworICAgIGlmICghdGltZWxpbmVBZ2VudCAmJiAhcmVzb3VyY2VBZ2Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGZpbmlzaFRpbWUgPSAwLjA7CisgICAg
Ly8gRklYTUU6IEV4cG9zZSBhbGwgb2YgdGhlIHRpbWluZyBkZXRhaWxzIHRvIGluc3BlY3RvciBh
bmQgaGF2ZSBpdCBjYWxjdWxhdGUgZmluaXNoVGltZS4KKyAgICBpZiAobW9ub3RvbmljRmluaXNo
VGltZSkKKyAgICAgICAgZmluaXNoVGltZSA9IGxvYWRlci0+dGltaW5nKCktPmNvbnZlcnRNb25v
dG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobW9ub3RvbmljRmluaXNoVGltZSk7CisKKyAgICBpZiAo
dGltZWxpbmVBZ2VudCkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jl
c291cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKLSAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAocmVzb3VyY2VBZ2VudCkKICAgICAgICAgcmVz
b3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBsb2FkZXIsIGZpbmlzaFRp
bWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKaW5kZXggY2JmYmQwMTA5ODFjOWE0YThjMjIyMDIyMDU2ODNiZjQ2OTg3
YjdmNi4uMTA5NmNmMjY2ODQ2NTY2OWNmNmJlZTU0YTlmMTg2YTc5MDE5NDJjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApA
QCAtMTIwLDEwICsxMjAsMTAgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGUKICAgICByZXR1cm4g
aGVhZGVyc09iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKK3N0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29u
c3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdGltaW5nT2JqZWN0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKLSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicmVxdWVzdFRpbWUi
LCB0aW1pbmcucmVxdWVzdFRpbWUpOworICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJyZXF1
ZXN0VGltZSIsIHRpbWluZy5jb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGxv
YWRlci0+dGltaW5nKCksIDApKTsKICAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicHJveHlT
dGFydCIsIHRpbWluZy5wcm94eVN0YXJ0KTsKICAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigi
cHJveHlFbmQiLCB0aW1pbmcucHJveHlFbmQpOwogICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVy
KCJkbnNTdGFydCIsIHRpbWluZy5kbnNTdGFydCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVIKICAgICByZXR1cm4gcmVxdWVzdE9iamVjdDsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBp
ZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0LDcgKzE2NCw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAgICAgcmVzcG9uc2VPYmplY3QtPnNldE51bWJl
cigiY29ubmVjdGlvbklkIiwgcmVzcG9uc2UuY29ubmVjdGlvbklEKCkpOwogICAgIHJlc3BvbnNl
T2JqZWN0LT5zZXRCb29sZWFuKCJmcm9tRGlza0NhY2hlIiwgcmVzcG9uc2Uud2FzQ2FjaGVkKCkp
OwogICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmVzcG9u
c2VPYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1pbmcoKnJlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpKSk7CisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRP
YmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5nKCpyZXNwb25zZS5yZXNvdXJjZUxv
YWRUaW1pbmcoKSwgbG9hZGVyKSk7CiAKICAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5m
bygpKSB7CiAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRlcnMiLCBidWls
ZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yZXNwb25zZUhl
YWRlcnMpKTsKQEAgLTE4MCwxMyArMTgwLDEzIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAg
ICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmIGNhY2hlZFJlc291cmNlKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRS
ZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
cmVzb3VyY2VPYmplY3QtPnNldFN0cmluZygidXJsIiwgY2FjaGVkUmVzb3VyY2UudXJsKCkpOwog
ICAgIHJlc291cmNlT2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmNhY2hlZFJlc291cmNlVHlwZVN0cmluZyhjYWNoZWRSZXNvdXJjZSkpOwogICAgIHJlc291cmNl
T2JqZWN0LT5zZXROdW1iZXIoImJvZHlTaXplIiwgY2FjaGVkUmVzb3VyY2UuZW5jb2RlZFNpemUo
KSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSgpKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKCksIGxvYWRlcik7CiAg
ICAgaWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRPYmpl
Y3QoInJlc3BvbnNlIiwgcmVzb3VyY2VSZXNwb25zZSk7CiAgICAgcmV0dXJuIHJlc291cmNlT2Jq
ZWN0OwpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2ls
bFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgZWxz
ZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRv
ck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAw
KTsKLSAgICBtX2Zyb250ZW5kLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFn
ZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2Fk
ZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBjYWxsU3RhY2tWYWx1
ZSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAg
ICBtX2Zyb250ZW5kLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5m
cmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBs
b2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBjYWxsU3RhY2tWYWx1ZSwgYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlcikpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UocmVzcG9uc2UpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVzcG9u
c2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxvYWRlcik7CiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6T3RoZXJSZXNvdXJjZTsKICAgICBsb25nIGNhY2hlZFJlc291cmNlU2l6ZSA9IDA7CiAK
QEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCByZXNvdXJjZSk7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmpl
Y3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CiAK
LSAgICBtX2Zyb250ZW5kLT5yZXNvdXJjZUxvYWRlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQs
IGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgp
LCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoKnJlc291cmNl
KSk7CisgICAgbV9mcm9udGVuZC0+cmVzb3VyY2VMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVz
dElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRp
bWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNv
dXJjZSwgbG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5p
dGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWlu
Zy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzA1MzIyMmY3ZmUxZmJkYjJjNzJhOGYzMDQ4MDAzY2EzMzZhYzJl
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRU
aW1pbmcuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZFRpbWluZy5oIgorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworRG9jdW1lbnRMb2FkVGltaW5nOjpEb2N1bWVudExvYWRUaW1pbmcoKQor
ICAgIDogbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZSgwLjApCisgICAgLCBtX25hdmlnYXRpb25T
dGFydCgwLjApCisgICAgLCBtX3VubG9hZEV2ZW50U3RhcnQoMC4wKQorICAgICwgbV91bmxvYWRF
dmVudEVuZCgwLjApCisgICAgLCBtX3JlZGlyZWN0U3RhcnQoMC4wKQorICAgICwgbV9yZWRpcmVj
dEVuZCgwLjApCisgICAgLCBtX3JlZGlyZWN0Q291bnQoMCkKKyAgICAsIG1fZmV0Y2hTdGFydCgw
LjApCisgICAgLCBtX3Jlc3BvbnNlRW5kKDAuMCkKKyAgICAsIG1fbG9hZEV2ZW50U3RhcnQoMC4w
KQorICAgICwgbV9sb2FkRXZlbnRFbmQoMC4wKQorICAgICwgbV9oYXNDcm9zc09yaWdpblJlZGly
ZWN0KGZhbHNlKQorICAgICwgbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KGZhbHNl
KQoreworfQorCit2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6c2V0TmF2aWdhdGlvblN0YXJ0KCkK
K3sKKyAgICBBU1NFUlQoIW1fbmF2aWdhdGlvblN0YXJ0ICYmICFtX25hdmlnYXRpb25TdGFydFdh
bGxUaW1lKTsKKyAgICBtX25hdmlnYXRpb25TdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgIG1fbmF2aWdhdGlvblN0YXJ0V2FsbFRpbWUgPSBjdXJyZW50VGltZSgpOwor
fQorCit2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6YWRkUmVkaXJlY3QoY29uc3QgS1VSTCYgcmVk
aXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwpCit7CisgICAgbV9yZWRpcmVj
dENvdW50Kys7CisgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCisgICAgICAgIG1fcmVkaXJlY3RT
dGFydCA9IG1fZmV0Y2hTdGFydDsKKyAgICBtX3JlZGlyZWN0RW5kID0gbV9mZXRjaFN0YXJ0ID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgLy8gQ2hlY2sgaWYgdGhlIHJlZGly
ZWN0ZWQgdXJsIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSByZWRpcmVjdGluZyB1cmwncyB0aW1p
bmcgaW5mb3JtYXRpb24uCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVjdGVkU2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0ZWRVcmwpOworICAg
IG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9ICFyZWRpcmVjdGVkU2VjdXJpdHlPcmlnaW4tPmNh
blJlcXVlc3QocmVkaXJlY3RpbmdVcmwpOworfQorCitkb3VibGUgRG9jdW1lbnRMb2FkVGltaW5n
Ojpjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1l
KSBjb25zdAoreworICAgIGlmICghbW9ub3RvbmljVGltZSkKKyAgICAgICAgcmV0dXJuIDAuMDsK
KyAgICByZXR1cm4gbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZSArIG1vbm90b25pY1RpbWUgLSBt
X25hdmlnYXRpb25TdGFydDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCmluZGV4IGQ0YWE3ZDBjOTVlYTg5N2Fh
YTg5MTA4YTdlZjhiNmFkODkwOGVhN2YuLmE1YWY3ODk1NzA5ZWNjOWVjZjk3YmYzN2JmZTA2M2Ix
NTk1MTkzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRU
aW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgK
QEAgLTI2LDM5ICsyNiw2MCBAQAogI2lmbmRlZiBEb2N1bWVudExvYWRUaW1pbmdfaAogI2RlZmlu
ZSBEb2N1bWVudExvYWRUaW1pbmdfaAogCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IERvY3VtZW50TG9hZFRpbWluZyB7Ci0gICAg
RG9jdW1lbnRMb2FkVGltaW5nKCkKLSAgICAgICAgOiBuYXZpZ2F0aW9uU3RhcnQoMC4wKQotICAg
ICAgICAsIHVubG9hZEV2ZW50U3RhcnQoMC4wKQotICAgICAgICAsIHVubG9hZEV2ZW50RW5kKDAu
MCkKLSAgICAgICAgLCByZWRpcmVjdFN0YXJ0KDAuMCkKLSAgICAgICAgLCByZWRpcmVjdEVuZCgw
LjApCi0gICAgICAgICwgcmVkaXJlY3RDb3VudCgwKQotICAgICAgICAsIGZldGNoU3RhcnQoMC4w
KQotICAgICAgICAsIHJlc3BvbnNlRW5kKDAuMCkKLSAgICAgICAgLCBsb2FkRXZlbnRTdGFydCgw
LjApCi0gICAgICAgICwgbG9hZEV2ZW50RW5kKDAuMCkKLSAgICAgICAgLCBoYXNDcm9zc09yaWdp
blJlZGlyZWN0KGZhbHNlKQotICAgICAgICAsIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1l
bnQoZmFsc2UpCi0gICAgewotICAgIH0KK2NsYXNzIEtVUkw7CisKK2NsYXNzIERvY3VtZW50TG9h
ZFRpbWluZyB7CitwdWJsaWM6CisgICAgRG9jdW1lbnRMb2FkVGltaW5nKCk7CisKKyAgICB2b2lk
IHNldE5hdmlnYXRpb25TdGFydCgpOworICAgIHZvaWQgYWRkUmVkaXJlY3QoY29uc3QgS1VSTCYg
cmVkaXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwpOworICAgIGRvdWJsZSBj
b252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBj
b25zdDsKKworICAgIHZvaWQgc2V0VW5sb2FkRXZlbnRTdGFydCgpIHsgbV91bmxvYWRFdmVudFN0
YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIHNldFVubG9h
ZEV2ZW50RW5kKCkgeyBtX3VubG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7IH0KKyAgICB2b2lkIHNldFJlZGlyZWN0U3RhcnQoKSB7IG1fcmVkaXJlY3RTdGFydCA9
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdEVu
ZCgpIHsgbV9yZWRpcmVjdEVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9Cisg
ICAgdm9pZCBzZXRGZXRjaFN0YXJ0KCkgeyBtX2ZldGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsgfQorICAgIHZvaWQgc2V0UmVzcG9uc2VFbmQoZG91YmxlIG1vbm90b25p
Y1RpbWUpIHsgbV9yZXNwb25zZUVuZCA9IG1vbm90b25pY1RpbWU7IH0KKyAgICB2b2lkIHNldExv
YWRFdmVudFN0YXJ0KCkgeyBtX2xvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7IH0KKyAgICB2b2lkIHNldExvYWRFdmVudEVuZCgpIHsgbV9sb2FkRXZlbnRFbmQg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorCisgICAgdm9pZCBzZXRIYXNTYW1l
T3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNTYW1lT3JpZ2luQXNQ
cmV2aW91c0RvY3VtZW50ID0gdmFsdWU7IH0KKworICAgIGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25TdGFydFdhbGxUaW1lOyB9CisgICAgZG91Ymxl
IHVubG9hZEV2ZW50U3RhcnQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRv
RG9jdW1lbnRUaW1lKG1fdW5sb2FkRXZlbnRTdGFydCk7IH0KKyAgICBkb3VibGUgdW5sb2FkRXZl
bnRFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1l
KG1fdW5sb2FkRXZlbnRFbmQpOyB9CisgICAgZG91YmxlIHJlZGlyZWN0U3RhcnQoKSBjb25zdCB7
IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVkaXJlY3RTdGFy
dCk7IH0KKyAgICBkb3VibGUgcmVkaXJlY3RFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9u
b3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVkaXJlY3RFbmQpOyB9CisgICAgc2hvcnQgcmVk
aXJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDb3VudDsgfQorICAgIGRvdWJs
ZSBmZXRjaFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3Vt
ZW50VGltZShtX2ZldGNoU3RhcnQpOyB9CisgICAgZG91YmxlIHJlc3BvbnNlRW5kKCkgY29uc3Qg
eyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX3Jlc3BvbnNlRW5k
KTsgfQorICAgIGRvdWJsZSBsb2FkRXZlbnRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRN
b25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9sb2FkRXZlbnRTdGFydCk7IH0KKyAgICBkb3Vi
bGUgbG9hZEV2ZW50RW5kKCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0Rv
Y3VtZW50VGltZShtX2xvYWRFdmVudEVuZCk7IH0KKyAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7IH0KKyAgICBi
b29sIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hh
c1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQ7IH0KIAotICAgIGRvdWJsZSBuYXZpZ2F0aW9u
U3RhcnQ7Ci0gICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQ7Ci0gICAgZG91YmxlIHVubG9hZEV2
ZW50RW5kOwotICAgIGRvdWJsZSByZWRpcmVjdFN0YXJ0OwotICAgIGRvdWJsZSByZWRpcmVjdEVu
ZDsKLSAgICBzaG9ydCByZWRpcmVjdENvdW50OwotICAgIGRvdWJsZSBmZXRjaFN0YXJ0OwotICAg
IGRvdWJsZSByZXNwb25zZUVuZDsKLSAgICBkb3VibGUgbG9hZEV2ZW50U3RhcnQ7Ci0gICAgZG91
YmxlIGxvYWRFdmVudEVuZDsKLSAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7Ci0gICAg
Ym9vbCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OworcHJpdmF0ZToKKyAgICBkb3Vi
bGUgbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZTsKKyAgICBkb3VibGUgbV9uYXZpZ2F0aW9uU3Rh
cnQ7CisgICAgZG91YmxlIG1fdW5sb2FkRXZlbnRTdGFydDsKKyAgICBkb3VibGUgbV91bmxvYWRF
dmVudEVuZDsKKyAgICBkb3VibGUgbV9yZWRpcmVjdFN0YXJ0OworICAgIGRvdWJsZSBtX3JlZGly
ZWN0RW5kOworICAgIHNob3J0IG1fcmVkaXJlY3RDb3VudDsKKyAgICBkb3VibGUgbV9mZXRjaFN0
YXJ0OworICAgIGRvdWJsZSBtX3Jlc3BvbnNlRW5kOworICAgIGRvdWJsZSBtX2xvYWRFdmVudFN0
YXJ0OworICAgIGRvdWJsZSBtX2xvYWRFdmVudEVuZDsKKyAgICBib29sIG1faGFzQ3Jvc3NPcmln
aW5SZWRpcmVjdDsKKyAgICBib29sIG1faGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudDsK
IH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBkMWQxODU0ZDE4ZDJmOTBlNGZkYTQ3NDczNjdjNWRm
YjNiNWFmZmZmLi4zODY4NzhhYTcxZmEzMWIxNjhmMmJjN2NiNTlkMGNlNWJiMTM0MjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4NCwxMCArMzg0LDEyIEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50
UG9saWN5KQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZSBpbnRvIGZyZWVkIG1lbW9y
eS4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gZG9jdW1l
bnRMb2FkZXIgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IFVubG9hZERpc21p
c3NhbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlciAmJiAhZG9j
dW1lbnRMb2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVudFN0YXJ0ICYmICFkb2N1bWVudExvYWRl
ci0+dGltaW5nKCktPnVubG9hZEV2ZW50RW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZG9jdW1lbnRMb2FkZXIgJiYgIWRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2FkRXZl
bnRTdGFydCgpICYmICFkb2N1bWVudExvYWRlci0+dGltaW5nKCktPnVubG9hZEV2ZW50RW5kKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWlu
ZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaFRpbWVkRXZlbnQodW5sb2FkRXZl
bnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kb2N1bWVudCgpLCAmdGltaW5nLT51bmxvYWRFdmVu
dFN0YXJ0LCAmdGltaW5nLT51bmxvYWRFdmVudEVuZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWluZy0+c2V0VW5sb2FkRXZlbnRTdGFydCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9h
ZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltaW5nLT5zZXRVbmxvYWRFdmVudEVuZCgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRv
dygpLT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTc0OSw3ICsxNzUx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBpZiAo
cGRsKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBkZXN0aW5hdGlvbiBwYWdlIGlzIGFsbG93
ZWQgdG8gYWNjZXNzIHRoZSBwcmV2aW91cyBwYWdlJ3MgdGltaW5nIGluZm9ybWF0aW9uLgogICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShwZGwtPnJlcXVlc3QoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnRMb2Fk
ZXItPnRpbWluZygpLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50ID0gc2VjdXJpdHlP
cmlnaW4tPmNhblJlcXVlc3QobV9wcmV2aW91c1VybCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2Fk
ZXItPnRpbWluZygpLT5zZXRIYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KHNlY3VyaXR5
T3JpZ2luLT5jYW5SZXF1ZXN0KG1fcHJldmlvdXNVcmwpKTsKICAgICB9CiAKICAgICAvLyBDYWxs
IGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZCgpIGhlcmUgc28gdGhhdCB0aGUgZnJh
bWUgbG9hZCBkZWxlZ2F0ZSBpcyBub3RpZmllZCB0aGF0IHRoZSByZWRpcmVjdCdzCkBAIC0yMzA0
LDggKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJt
aXRGb3JtKCkKICAgICAgICAgbm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QoaWRlbnRpZmllciwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpLCBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRp
b25TdGFydCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+bmF2
aWdhdGlvblN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPnRpbWluZygpLT5zZXROYXZpZ2F0aW9uU3RhcnQoKTsKIAogICAgIGlmICghbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmll
cikpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygp
OwpAQCAtMjk0NSwxMSArMjk0NiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9u
YWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9y
TG9hZFN0YXJ0KCk7CiAKICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0gICAg
CisKICAgICAvLyBTaG91bGQgaGF2ZSB0aW1pbmcgZGF0YSBmcm9tIHByZXZpb3VzIHRpbWUocykg
dGhlIHBhZ2Ugd2FzIHNob3duLgotICAgIEFTU0VSVChwcm92aXNpb25hbExvYWRlci0+dGltaW5n
KCktPm5hdmlnYXRpb25TdGFydCk7CisgICAgQVNTRVJUKHByb3Zpc2lvbmFsTG9hZGVyLT50aW1p
bmcoKS0+bmF2aWdhdGlvblN0YXJ0KCkpOwogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5yZXNldFRp
bWluZygpOwotICAgIHByb3Zpc2lvbmFsTG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0
ID0gY3VycmVudFRpbWUoKTsgICAgCisgICAgcHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5z
ZXROYXZpZ2F0aW9uU3RhcnQoKTsKIAogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5zZXRDb21taXR0
ZWQodHJ1ZSk7CiAgICAgY29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGExZjk5MThlYmJkZTU2Njg1M2U3
NTE2Y2JmZmY4NDYyOTEwY2Q0OGQuLjg0M2M0MWIwYjNjZWFmN2RiYjFkMzNhYjQwZGEzOTJiZmUw
M2M0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0xODAsMjAgKzE4MCw5IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvCiAgICAgLy8gcmVm
ZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAg
ICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIEFTU0VS
VChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCk7CisgICAgQVNTRVJUKGRv
Y3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOwogICAgIGlmICghcmVkaXJl
Y3RSZXNwb25zZS5pc051bGwoKSkgewotICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3Vt
ZW50TG9hZFRpbWluZyA9IGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpOwotCi0gICAgICAgIC8v
IENoZWNrIGlmIHRoZSByZWRpcmVjdGVkIHVybCBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgcmVk
aXJlY3RpbmcgdXJsJ3MgdGltaW5nIGluZm9ybWF0aW9uLgotICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShuZXdSZXF1
ZXN0LnVybCgpKTsKLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChyZWRp
cmVjdFJlc3BvbnNlLnVybCgpKSkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+aGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCA9IHRydWU7Ci0KLSAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5n
LT5yZWRpcmVjdENvdW50Kys7Ci0gICAgICAgIGlmICghZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRp
cmVjdFN0YXJ0KQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVjdFN0YXJ0
ID0gZG9jdW1lbnRMb2FkVGltaW5nLT5mZXRjaFN0YXJ0OwotICAgICAgICBkb2N1bWVudExvYWRU
aW1pbmctPnJlZGlyZWN0RW5kID0gY3VycmVudFRpbWUoKTsKLSAgICAgICAgZG9jdW1lbnRMb2Fk
VGltaW5nLT5mZXRjaFN0YXJ0ID0gZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVjdEVuZDsKKyAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVz
cG9uc2UudXJsKCksIG5ld1JlcXVlc3QudXJsKCkpOwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBj
b29raWUgcG9saWN5IGJhc2UgVVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1l
cywgd2hpY2ggdXNlIHRoZQpAQCAtNDU5LDcgKzQ0OCw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxv
bmcKICAgICAvLyByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMg
aXMgMzI2NjIxNi4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMp
OwogCi0gICAgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID0gY3VycmVudFRpbWUoKTsKKyAgICBt
X3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
IAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29k
ZWREYXRhTGVuZ3RoLCBhbGxBdE9uY2UpOwogfQpAQCAtNDcxLDcgKzQ2MCw3IEBAIHZvaWQgTWFp
blJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogI2lm
ICFVU0UoQ0YpCiAgICAgQVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoZnJhbWVMb2Fk
ZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkp
OwogI2VuZGlmCi0gICAgCisKICAgICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBk
byBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKICAgICAvLyBy
ZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCh0aGlzKTsKQEAgLTQ4MCwxMSArNDY5LDEwIEBAIHZvaWQgTWFpblJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIFJlZlB0cjxEb2N1
bWVudExvYWRlcj4gZGwgPSBkb2N1bWVudExvYWRlcigpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQo
IWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCk7Ci0gICAgZG9jdW1lbnRM
b2FkZXIoKS0+dGltaW5nKCktPnJlc3BvbnNlRW5kID0gZmluaXNoVGltZSA/IGZpbmlzaFRpbWUg
OiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDog
Y3VycmVudFRpbWUoKSk7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3Bv
bnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZl
ZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA6IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpKSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAgICAgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7Ci0gICAgCisKICNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGRsLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtNTk0LDkgKzU4
Miw5IEBAIGJvb2wgTWFpblJlc291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1CiAKICAgICBtX3N1YnN0aXR1dGVEYXRhID0g
c3Vic3RpdHV0ZURhdGE7CiAKLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCkt
Pm5hdmlnYXRpb25TdGFydCk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmco
KS0+ZmV0Y2hTdGFydCk7Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3Rh
cnQgPSBjdXJyZW50VGltZSgpOworICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmco
KS0+bmF2aWdhdGlvblN0YXJ0KCkpOworICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIoKS0+dGlt
aW5nKCktPmZldGNoU3RhcnQoKSk7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnNl
dEZldGNoU3RhcnQoKTsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyKTsKIAogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggNmNhNWIzN2QyMWI5NjJhMWRiMmIwYTA2ZTYzZTkwNmJiNjdkM2YyZC4uNTA5NjYxMTJk
YjE1OTE5MWEyYWM4NjFhYTMwN2ZlNGZhZjU1Yjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtMTU2NCwxMiArMTU2NCwxNCBAQCBib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcgogdm9p
ZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKICAgICBSZWZQdHI8RXZlbnQ+IGxv
YWRFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOwotICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmxv
YWRFdmVudFN0YXJ0KSB7CisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCkgJiYgIW1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50
aW1pbmcoKS0+bG9hZEV2ZW50U3RhcnQoKSkgewogICAgICAgICAvLyBUaGUgRG9jdW1lbnRMb2Fk
ZXIgKGFuZCB0aHVzIGl0cyBEb2N1bWVudExvYWRUaW1pbmcpIG1pZ2h0IGdldCBkZXN0cm95ZWQg
d2hpbGUgZGlzcGF0Y2hpbmcKICAgICAgICAgLy8gdGhlIGV2ZW50LCBzbyBwcm90ZWN0IGl0IHRv
IHByZXZlbnQgd3JpdGluZyB0aGUgZW5kIHRpbWUgaW50byBmcmVlZCBtZW1vcnkuCiAgICAgICAg
IFJlZlB0cjxEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiB0aW1pbmcg
PSBkb2N1bWVudExvYWRlci0+dGltaW5nKCk7Ci0gICAgICAgIGRpc3BhdGNoVGltZWRFdmVudChs
b2FkRXZlbnQsIGRvY3VtZW50KCksICZ0aW1pbmctPmxvYWRFdmVudFN0YXJ0LCAmdGltaW5nLT5s
b2FkRXZlbnRFbmQpOworICAgICAgICB0aW1pbmctPnNldExvYWRFdmVudFN0YXJ0KCk7CisgICAg
ICAgIGRpc3BhdGNoRXZlbnQobG9hZEV2ZW50LCBkb2N1bWVudCgpKTsKKyAgICAgICAgdGltaW5n
LT5zZXRMb2FkRXZlbnRFbmQoKTsKICAgICB9IGVsc2UKICAgICAgICAgZGlzcGF0Y2hFdmVudChs
b2FkRXZlbnQsIGRvY3VtZW50KCkpOwogCkBAIC0xNjAxLDE1ICsxNjAzLDYgQEAgYm9vbCBET01X
aW5kb3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQ
dHI8RXZlbnRUYXJnZXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIERPTVdpbmRvdzo6
ZGlzcGF0Y2hUaW1lZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBEb2N1bWVudCogdGFy
Z2V0LCBkb3VibGUqIHN0YXJ0VGltZSwgZG91YmxlKiBlbmRUaW1lKQotewotICAgIEFTU0VSVChz
dGFydFRpbWUpOwotICAgIEFTU0VSVChlbmRUaW1lKTsKLSAgICAqc3RhcnRUaW1lID0gY3VycmVu
dFRpbWUoKTsKLSAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpOwotICAgICplbmRUaW1l
ID0gY3VycmVudFRpbWUoKTsKLX0KLQogdm9pZCBET01XaW5kb3c6OnJlbW92ZUFsbEV2ZW50TGlz
dGVuZXJzKCkKIHsKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNl
NjBkYzhhODVhZmQuLjkyZWQzZjZhMjFhMDU3OWMxYmNlYWEzOGU3MGIyNWZiZGYwZjg2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjY0LDcgKzI2NCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgICAg
IGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFzc1JlZlB0
cjxFdmVudFRhcmdldD4gcHJwVGFyZ2V0KTsKICAgICAgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVu
dCgpOwotICAgICAgICB2b2lkIGRpc3BhdGNoVGltZWRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCwgRG9jdW1lbnQqIHRhcmdldCwgZG91YmxlKiBzdGFydFRpbWUsIGRvdWJsZSogZW5kVGlt
ZSk7CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CiAg
ICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmVmb3JldW5sb2FkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcAppbmRleCBhNDY2
MzlhYTg5NTk0OGYzMGEwYWVjMjYyNjE3NTAxZWFlYWRiZmM4Li42NjNlOTQyYTFiYmNiMzA2YjM1
MWZiMjY5MmU0N2IyODUwZTNkMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb24uY3BwCkBAIC04NCwxMCArODQsMTAgQEAgdW5zaWduZWQgc2hvcnQgUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uOjpyZWRpcmVjdENvdW50KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+dGltaW5nKCk7
Ci0gICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKKyAgICBpZiAodGltaW5n
LT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIHRpbWluZy0+cmVkaXJlY3RDb3VudDsKKyAgICByZXR1cm4gdGltaW5nLT5yZWRpcmVjdENv
dW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVRpbWluZy5jcHAKaW5kZXggZmYyNTM1NDJkYzRiMmEzNDk5YzlkNjY5ZDc2MWIy
ZTUxYzdlMTZjYi4uMzk1NzZlNDk2NTFhNWQ0ZmQzNjcyZDA3ZDZlY2Y5ZTdhZWZhODBkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKQEAgLTQ0LDM2ICs0NCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgQVNTRVJUKHNlY29u
ZHMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2Vj
b25kcyAqIDEwMDAuMCk7Ci19Ci0KLXN0YXRpYyBkb3VibGUgZ2V0UG9zc2libHlTa2V3ZWRUaW1l
SW5Lbm93blJhbmdlKGRvdWJsZSBza2V3ZWRUaW1lLCBkb3VibGUgbG93ZXJCb3VuZCwgZG91Ymxl
IHVwcGVyQm91bmQpCi17Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgLy8gVGhlIGNocm9t
aXVtIHBvcnQncyBjdXJyZW50VGltZSgpIGltcGxlbWVudGF0aW9uIG9ubHkgc3luY3Mgd2l0aCB0
aGUKLSAgICAvLyBzeXN0ZW0gY2xvY2sgZXZlcnkgNjAgc2Vjb25kcy4gU28gaXQgaXMgcG9zc2li
bGUgZm9yIHRpbWluZyBtYXJrcwotICAgIC8vIGNvbGxlY3RlZCBpbiBkaWZmZXJlbnQgdGhyZWFk
cyBvciBwcm9jZXNzZXMgdG8gaGF2ZSBhIHNtYWxsIHNrZXcuCi0gICAgLy8gRklYTUU6IEl0IG1h
eSBiZSBwb3NzaWJsZSB0byBhZGQgYSBjdXJyZW50VGltZUZyb21TeXN0ZW1UaW1lKCkgbWV0aG9k
Ci0gICAgLy8gdGhhdCBlbGltaW5hdGVzIHRoZSBza2V3LgotICAgIGlmIChza2V3ZWRUaW1lIDw9
IGxvd2VyQm91bmQpCi0gICAgICAgIHJldHVybiBsb3dlckJvdW5kOwotCi0gICAgaWYgKHVwcGVy
Qm91bmQgPD0gMC4wKQotICAgICAgICB1cHBlckJvdW5kID0gY3VycmVudFRpbWUoKTsKLQotICAg
IGlmIChza2V3ZWRUaW1lID49IHVwcGVyQm91bmQpCi0gICAgICAgIHJldHVybiB1cHBlckJvdW5k
OwotI2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKGxvd2VyQm91bmQsIHNrZXdlZFRpbWUgPj0gbG93
ZXJCb3VuZCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1cHBlckJvdW5kLCBza2V3ZWRUaW1lIDw9IHVw
cGVyQm91bmQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gc2tld2VkVGltZTsKLX0KLQogUGVyZm9y
bWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJh
bWUoZnJhbWUpCiB7CkBAIC05NSw3ICs2NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+bmF2aWdhdGlvblN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRp
bWluZy0+bmF2aWdhdGlvblN0YXJ0KCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMTA0LDEwICs3NCwxMCBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQo
KSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0
aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFz
UHJldmlvdXNEb2N1bWVudCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0
KCkgfHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51
bmxvYWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+dW5sb2FkRXZlbnRTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCgpIGNvbnN0CkBAIC0xMTYsMTAgKzg2LDEwIEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQoKSBjb25z
dAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmct
Pmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlv
dXNEb2N1bWVudCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkgfHwg
IXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRF
dmVudEVuZCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnVubG9h
ZEV2ZW50RW5kKCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OnJlZGlyZWN0U3RhcnQoKSBjb25zdApAQCAtMTI4LDEwICs5OCwxMCBAQCB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQoKSBjb25zdAogICAgIGlmICgh
dGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGlt
aW5nLT5yZWRpcmVjdFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRp
bWluZy0+cmVkaXJlY3RTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0CkBAIC0xNDAsMTAgKzExMCwxMCBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0RW5kKCkgY29uc3QKICAg
ICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAodGltaW5nLT5oYXND
cm9zc09yaWdpblJlZGlyZWN0KQorICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNv
bmRzKHRpbWluZy0+cmVkaXJlY3RFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT5yZWRpcmVjdEVuZCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0KCkgY29uc3QKQEAgLTE1Miw3ICsxMjIsNyBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZldGNoU3RhcnQoKSBjb25zdAogICAg
IGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHModGltaW5nLT5mZXRjaFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CkBAIC0yNzcsNyAr
MjQ3LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZUVu
ZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlc3BvbnNlRW5kKTsKKyAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVzcG9uc2VFbmQoKSk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZygpIGNvbnN0CkBA
IC0yODYsNyArMjU2LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpk
b21Mb2FkaW5nKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQoKTsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21M
b2FkaW5nKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0
aW1pbmctPmRvbUxvYWRpbmcpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKQEAgLTI5NSw3ICsyNjUsNyBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKICAg
ICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tSW50ZXJhY3RpdmUpOworICAgIHJldHVybiBtb25vdG9u
aWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tSW50ZXJhY3RpdmUpOwogfQog
CiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRF
dmVudFN0YXJ0KCkgY29uc3QKQEAgLTMwNCw3ICsyNzQsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpOworICAgIHJl
dHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVu
dExvYWRlZEV2ZW50U3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgpIGNvbnN0CkBAIC0zMTMsNyArMjgzLDcg
QEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVk
RXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVk
RXZlbnRFbmQpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKTsKIH0KIAogdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSgpIGNvbnN0CkBAIC0zMjIsNyArMjky
LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSgp
IGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbXBsZXRlKTsKKyAgICByZXR1cm4g
bW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbXBsZXRlKTsK
IH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRTdGFy
dCgpIGNvbnN0CkBAIC0zMzEsNyArMzAxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpsb2FkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmct
PmxvYWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+bG9hZEV2ZW50U3RhcnQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6bG9hZEV2ZW50RW5kKCkgY29uc3QKQEAgLTM0MCw3ICszMTAsNyBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCgpIGNvbnN0CiAgICAg
aWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1p
bGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudEVuZCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1p
bGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudEVuZCgpKTsKIH0KIAogRG9jdW1lbnRMb2FkZXIq
IFBlcmZvcm1hbmNlVGltaW5nOjpkb2N1bWVudExvYWRlcigpIGNvbnN0CkBAIC0zODEsMjIgKzM1
MSwyOCBAQCBSZXNvdXJjZUxvYWRUaW1pbmcqIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxv
YWRUaW1pbmcoKSBjb25zdAogICAgIHJldHVybiBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VM
b2FkVGltaW5nKCk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6
cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQgcmVsYXRpdmVTZWNvbmRzKSBj
b25zdAordW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRU
aW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCByZWxhdGl2ZU1pbGxpc2Vjb25kcykgY29uc3QKIHsK
LSAgICBBU1NFUlQocmVsYXRpdmVTZWNvbmRzID49IDApOworICAgIEFTU0VSVChyZWxhdGl2ZU1p
bGxpc2Vjb25kcyA+PSAwKTsKICAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlVGltaW5n
ID0gcmVzb3VyY2VMb2FkVGltaW5nKCk7CiAgICAgQVNTRVJUKHJlc291cmNlVGltaW5nKTsKLSAg
ICBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50VGltaW5nID0gZG9jdW1lbnRMb2FkVGltaW5n
KCk7Ci0gICAgQVNTRVJUKGRvY3VtZW50VGltaW5nKTsKLQotICAgIC8vIFRoZSBSZXNvdXJjZUxv
YWRUaW1pbmcgQVBJJ3MgcmVxdWVzdFRpbWUgaXMgdGhlIGJhc2UgdGltZSB0byB3aGljaCBhbGwK
LSAgICAvLyBvdGhlciBtYXJrcyBhcmUgcmVsYXRpdmUuIFNvIHRvIGdldCBhbiBhYnNvbHV0ZSB0
aW1lLCB3ZSBtdXN0IGFkZCBpdCB0bwotICAgIC8vIHRoZSByZWxhdGl2ZSBtYXJrcy4KLSAgICAv
LwotICAgIC8vIFNpbmNlIFJlc291cmNlTG9hZFRpbWluZ3MgY2FtZSBmcm9tIHRoZSBuZXR3b3Jr
IHBsYXRmb3JtIGxheWVyLCB3ZSBtdXN0Ci0gICAgLy8gY2hlY2sgdGhlbSBmb3Igc2tldyBiZWNh
dXNlIHRoZXkgbWF5IGJlIGZyb20gYW5vdGhlciB0aHJlYWQvcHJvY2Vzcy4KLSAgICBkb3VibGUg
YmFzZVRpbWUgPSBnZXRQb3NzaWJseVNrZXdlZFRpbWVJbktub3duUmFuZ2UocmVzb3VyY2VUaW1p
bmctPnJlcXVlc3RUaW1lLCBkb2N1bWVudFRpbWluZy0+ZmV0Y2hTdGFydCwgZG9jdW1lbnRUaW1p
bmctPnJlc3BvbnNlRW5kKTsKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGJhc2VU
aW1lKSArIHJlbGF0aXZlU2Vjb25kczsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHJlc291cmNlVGltaW5nLT5jb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGRv
Y3VtZW50TG9hZFRpbWluZygpLCByZWxhdGl2ZU1pbGxpc2Vjb25kcykpOworfQorCit1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6Om1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxs
aXNlY29uZHMoZG91YmxlIG1vbm90b25pY1NlY29uZHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1v
bm90b25pY1NlY29uZHMgPj0gMCk7CisgICAgY29uc3QgRG9jdW1lbnRMb2FkVGltaW5nKiB0aW1p
bmcgPSBkb2N1bWVudExvYWRUaW1pbmcoKTsKKyAgICBBU1NFUlQodGltaW5nKTsKKyAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+Y29udmVydE1vbm90b25pY1RpbWVUb0Rv
Y3VtZW50VGltZShtb25vdG9uaWNTZWNvbmRzKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6dG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSBhYnNvbHV0ZVNl
Y29uZHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGFic29sdXRlU2Vjb25kcyA+PSAwKTsKKyAgICBp
ZiAoIWFic29sdXRlU2Vjb25kcykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYWJzb2x1dGVTZWNvbmRzICogMTAwMC4wKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRp
bWluZy5oCmluZGV4IDBjMzczODMyODBhMDMyM2Q3MjZlOWE5Nzg3Y2EzMGMxZTM4MzkwNzEuLmE0
YzI5MDllZTdlYzNjMjg5MTFhYThiODhhZjZhYTczZTZiZGExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0OwogICAgIFJlc291
cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50KSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25k
cyhkb3VibGUpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b0ludGVnZXJNaWxsaXNl
Y29uZHMoZG91YmxlKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZDlkYTQ4YTNjYTVmMTMwNTBhY2MwOGYyMTlhZmE4NTc2MTU2M2NlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUxvYWRUaW1pbmcuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRUaW1pbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2RvdWJsZSBSZXNvdXJjZUxvYWRUaW1pbmc6OmNvbnZl
cnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUoY29uc3QgRG9jdW1lbnRMb2FkVGltaW5n
KiBkb2N1bWVudFRpbWluZywgaW50IGRlbHRhTWlsbGlzZWNvbmRzKSBjb25zdAoreworICAgIGlm
ICghZG9jdW1lbnRUaW1pbmcpCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICByZXR1cm4gZG9j
dW1lbnRUaW1pbmctPmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUocmVxdWVzdFRp
bWUgKyBkZWx0YU1pbGxpc2Vjb25kcyAvIDEwMDAuMCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCmluZGV4IDI2
OWZhZDAwMjVkOWFhZDQxZTUxYjcyYWNhZmFhYWI1NmRkMjMyNWYuLjYwNzZmNWRmYzkzZTk2MGM4
YjJmYzE1MGFmZjhlMzVkOWE1OWVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaApAQCAtMzIsMTEgKzMyLDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOworCiBjbGFz
cyBSZXNvdXJjZUxvYWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1p
bmc+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+
IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9h
ZFRpbWluZyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VMb2FkVGltaW5n
KCkpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBkZWVwQ29w
eSgpCkBAIC03OCw3ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAKLSAgICBkb3VibGUgcmVxdWVzdFRpbWU7CisgICAgLy8gVG8gZXhw
b3NlIHNhbmUgdGltZXMgdG8gSmF2YXNjcmlwdCwgd2UgbXVzdCBlbnN1cmUgdGltZXMgYXJlIG1v
bm90b25pY2FsbHkgaW5jcmVhc2luZyBmb3IgYWxsIHJlc291cmNlcyBpbiB0aGUgZG9jdW1lbnQu
CisgICAgLy8gVGhlIE1haW5SZXNvdXJjZUxvYWRlciBzdG9yZXMgYSByZWZlcmVuY2UgY3VycmVu
dFRpbWUoKSBhbmQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgd2hlbiBuYXZpZ2F0aW9u
IGJlZ2lucy4gQWxsCisgICAgLy8gdGltZXMgd2lsbCBiZSBwcmVzZW50ZWQgYXMgd2FsbCB0aW1l
cywgYnV0IHJlbGF0aXZlIHRvIHRoZSBtb250b25pYyBjbG9jay4gVGhpcyBpcyBhICJkb2N1bWVu
dCB0aW1lLiIgVG8gY29udmVydCB0aGUgZGVsdGFzCisgICAgLy8gYmVsb3cgdG8gZG9jdW1lbnQg
dGltZSwgdGhlIGVxdWF0aW9uIGlzOgorICAgIC8vICAgYWJzb2x1dGUgdGltZSA9IGRvY3VtZW50
IHdhbGwgcmVmZXJlbmNlICsgKHJlc291cmNlIHJlcXVlc3QgdGltZSAtIGRvY3VtZW50IG1vbm90
b25pYyByZWZlcmVuY2UpICsgZGVsdGFNaWxsaXNlY29uZHMgLyAxMDAwLjAuCisgICAgZG91Ymxl
IGNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUoY29uc3QgRG9jdW1lbnRMb2Fk
VGltaW5nKiBkb2N1bWVudFRpbWluZywgaW50IGRlbHRhTWlsbGlzZWNvbmRzKSBjb25zdDsKKwor
ICAgIGRvdWJsZSByZXF1ZXN0VGltZTsgLy8gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
d2hlbiB0aGUgcG9ydCBzdGFydGVkIGhhbmRsaW5nIHRoaXMgcmVxdWVzdC4KICAgICBpbnQgcHJv
eHlTdGFydDsKICAgICBpbnQgcHJveHlFbmQ7CiAgICAgaW50IGRuc1N0YXJ0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104127</attachid>
            <date>2011-08-16 17:22:19 -0700</date>
            <delta_ts>2011-08-16 20:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58354-20110816172218.patch</filename>
            <type>text/plain</type>
            <size>49028</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MGU4ZmM1MzEzOThiMmNk
YjZjMDk4YmY5NjBhYTczNzlhODhiYmVhLi42M2Q1YTgwYmY5YTQ1ZGE4OTVlZTYwMWRhYzk0Njc5
NzE4MjMyOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTEtMDgtMTYgIEphbWVz
IFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtOYXZpZ2F0aW9u
IFRpbWluZ10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3Vy
cmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlbGllcyBvbiBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIERvY3VtZW50TG9hZFRpbWluZy5j
cHAgYW5kIFJlc291cmNlTG9hZFRpbWluZy5jcHAKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERp
dHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBBZGRlZCBvbmx5IFJlc291cmNlTG9hZFRpbWlu
Zy5jcHAsIGJlY2F1c2UgRG9jdW1lbnRMb2FkVGltaW5nLmggaXMgbm90IGluY2x1ZGVkLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFVzZSBtb25vdG9uaWMgdGltZXMuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwpOiBDb252ZXJ0IG1vbm90b25pY0ZpbmlzaFRpbWUg
dG8gd2FsbCB0aW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6
IENvbnZlcnQgbW9ub3RvbmljIHJlcXVlc3RUaW1lIHRvIHdhbGwgdGltZS4KKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZSk6IFBsdW1iaW5nIGZvciBhYm92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVx
dWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOiBEaXR0by4KKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OkRvY3VtZW50TG9hZFRpbWluZyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldE5hdmlnYXRpb25TdGFydCk6IERldGVy
bWluZSByZWZlcmVuY2UgdGltZSBhbmQgcm9vdCByZWZlcmVuY2UgdGltZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6YWRkUmVkaXJlY3QpOiBNb3ZlZCBsb2dpYyBmcm9t
IE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWlu
Zzo6Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZSk6IEhlbHBlciB0byBjb21wdXRl
IHdhbGwgdGltZSBmcm9tIG1vbm90b25pYyB0aW1lLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRUaW1pbmcuaDogVHVybmVkIGludG8gY2xhc3MuIE1hZGUgdGltZXMgbW9ub3RvbmljLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRVbmxvYWRFdmVudFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0VW5sb2FkRXZlbnRF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRSZWRpcmVjdFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0UmVkaXJlY3RF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRGZXRjaFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0UmVzcG9uc2VFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRMb2FkRXZlbnRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldExvYWRFdmVudEVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldEhhc1NhbWVPcmln
aW5Bc1ByZXZpb3VzRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjpuYXZpZ2F0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjp1bmxvYWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRp
bWluZzo6dW5sb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjpyZWRpcmVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWlu
Zzo6cmVkaXJlY3RFbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpy
ZWRpcmVjdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6ZmV0
Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnJlc3BvbnNl
RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6bG9hZEV2ZW50U3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpsb2FkRXZlbnRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpoYXNDcm9zc09yaWdpblJl
ZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6aGFzU2FtZU9y
aWdpbkFzUHJldmlvdXNEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNh
Y2hlZFBhZ2UpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdCk6IE1vdmVkIGxvZ2ljIHRvIERvY3VtZW50TG9hZFRpbWluZy4KKyAgICAgICAgKFdl
YkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOiBVc2UgbW9ub3Rvbmlj
IHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDog
UmVtb3ZlZCBkaXNwYXRjaFRpbWVkRXZlbnQuIEl0IGRvZXNuJ3QgcmVhbGx5IGhlbHAgaW4gdGhl
IG5ldyBtb2RlbC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU5hdmlnYXRpb246OnJlZGlyZWN0Q291bnQpOgor
ICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOiBSZW1vdmVkIHNrZXcgY29ycmVj
dGlvbiBjb2RlLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gbm93LgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VUaW1pbmc6Om5hdmlnYXRpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlVGltaW5nOjpmZXRjaFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpyZXNwb25zZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
ZG9tTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50
ZXJhY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRl
bnRMb2FkZWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWlu
Zzo6bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKTogVXNlZCBmb3IgUmVzb3VyY2VMb2Fk
VGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6Om1vbm90b25pY1Rp
bWVUb0ludGVnZXJNaWxsaXNlY29uZHMpOiBVc2VkIGZvciBEb2N1bWVudFRpbWluZyBhbmQgRG9j
dW1lbnRMb2FkVGltaW5nLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc6OmNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9E
b2N1bWVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGlt
aW5nLmg6IEFkZGVkIGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IHRvIHdhbGwgdGltZXMuIEFk
ZGVkIGluc3RydWN0aW9ucyBmb3IgdXNlLgorCiAyMDExLTA4LTE1ICBKZWZmcmV5IFBmYXUgIDxq
cGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV3IFhNTCBwYXJzZXI6IGFkZCB4bWwgbmFtZXNw
YWNlIHRvIHRoZSBkZWZhdWx0IG1hcCBvZiBuYW1lc3BhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCAwZTZiMjA1Y2U4ZjZkNWQxODQ3OTE2OWU3M2Q2YzEwZGY2ODhhOGRiLi5i
ZTY0NTRhN2Q4NmMyODU2MDc0ZTQ5MTE0YzNkY2RhMGVlOTg1NDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTIxMDQsNiArMjEwNCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBcCiAJU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBcCkBAIC0yNzE1LDYg
KzI3MTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUxvYWRQcmlvcml0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBkZTQwNTkyMzgyYjQxODU0MDY2YWZkMGM0Mjc0MzYwMTgyZGM4YjMyLi4xYjEyMWM2OTU2
ZTgwMGM3NWYwMDJjMjVjYmFiOTdmOTlhYWM5MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzQx
LDYgKzI3NDEsNyBAQAogICAgICAgICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0N1ZUxvYWRlci5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9DdWVMb2FkZXIuaCcsCisgICAgICAgICAgICAnbG9hZGVyL0RvY3Vt
ZW50TG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwJywK
ICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgnLApAQCAtNDE3
NSw2ICs0MTc2LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWlu
Zy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiNzYzMDM3MGZjY2FmYWYyODUyMWVlNjU2OWYx
YTg0ODExYThiZjEyLi42NjlhZjc5OWE5ODAwM2UyNTg2YjQwMTQ3ZmY5M2RhMTE2MTEzZDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTA1NSw2ICsxMDU1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxh
dGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuY3BwIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9S
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjU1YTBi
NTg2ZmM3M2JjMmJmNDkwZmVhYWM2YzA4Y2ZhNTMzZTdjNS4uNmU5MGY1ZGE5MDM2MGE5YTJiODkx
YWE0ODczMDY4Y2E5M2YzZjViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDE0LDE1
ICsxMDE0LDE1IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSByZWFk
eVN0YXRlKQogICAgIHN3aXRjaCAocmVhZHlTdGF0ZSkgewogICAgIGNhc2UgTG9hZGluZzoKICAg
ICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcpCi0gICAgICAgICAgICBtX2Rv
Y3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgbV9k
b2N1bWVudFRpbWluZy5kb21Mb2FkaW5nID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmU6CiAgICAgICAgIGlmICghbV9k
b2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1p
bmcuZG9tSW50ZXJhY3RpdmUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgbV9kb2N1bWVu
dFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBsZXRlOgogICAgICAgICBpZiAoIW1fZG9jdW1l
bnRUaW1pbmcuZG9tQ29tcGxldGUpCi0gICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNv
bXBsZXRlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9t
Q29tcGxldGUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC00MTkxLDEwICs0MTkxLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVk
UGFyc2luZygpCiAgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSB8fCBtX3Jl
YWR5U3RhdGUgIT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAgICAgaWYgKCFt
X2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KQotICAgICAgICBtX2Rv
Y3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0ID0gY3VycmVudFRpbWUoKTsK
KyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0cnVlLCBmYWxzZSkpOwog
ICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQpCi0gICAg
ICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50RW5kID0gY3VycmVudFRp
bWUoKTsKKyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAogICAgIGlmIChSZWZQdHI8RnJhbWU+
IGYgPSBmcmFtZSgpKSB7CiAgICAgICAgIC8vIEZyYW1lTG9hZGVyOjpmaW5pc2hlZFBhcnNpbmco
KSBtaWdodCBlbmQgdXAgY2FsbGluZyBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpIGlmIGFsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAppbmRleCAwZTFhMWY1YmU2OGJmNjhkN2E3MTg5MjUwODQzOTMwYWVmOTIwNDg0Li5l
Mzk3ZDljMjg1MTI0MjYwYzY1ZmM5MGE1MjdkYTMwNzg3ZjZjYzQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAt
NTA3LDExICs1MDcsMjEgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW4KICAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3Vi
bGUgZmluaXNoVGltZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hM
b2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBtb25v
dG9uaWNGaW5pc2hUaW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJl
c291cmNlQWdlbnQoKTsKKyAgICBpZiAoIXRpbWVsaW5lQWdlbnQgJiYgIXJlc291cmNlQWdlbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBmaW5pc2hUaW1lID0gMC4wOworICAgIC8v
IEZJWE1FOiBFeHBvc2UgYWxsIG9mIHRoZSB0aW1pbmcgZGV0YWlscyB0byBpbnNwZWN0b3IgYW5k
IGhhdmUgaXQgY2FsY3VsYXRlIGZpbmlzaFRpbWUuCisgICAgaWYgKG1vbm90b25pY0ZpbmlzaFRp
bWUpCisgICAgICAgIGZpbmlzaFRpbWUgPSBsb2FkZXItPnRpbWluZygpLT5jb252ZXJ0TW9ub3Rv
bmljVGltZVRvRG9jdW1lbnRUaW1lKG1vbm90b25pY0ZpbmlzaFRpbWUpOworCisgICAgaWYgKHRp
bWVsaW5lQWdlbnQpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNv
dXJjZShpZGVudGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSk7Ci0gICAgaWYgKEluc3BlY3RvclJl
c291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKHJlc291cmNlQWdlbnQpCiAgICAgICAgIHJlc291
cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgbG9hZGVyLCBmaW5pc2hUaW1l
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCmluZGV4IGNiZmJkMDEwOTgxYzlhNGE4YzIyMjAyMjA1NjgzYmY0Njk4N2I3
ZjYuLjEwOTZjZjI2Njg0NjU2NjljZjZiZWU1NGE5ZjE4NmE3OTAxOTQyYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAg
LTEyMCwxMCArMTIwLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVp
bGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhl
YWRlcnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVp
bGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCitzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0
IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHRpbWluZ09iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Ci0gICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInJlcXVlc3RUaW1lIiwg
dGltaW5nLnJlcXVlc3RUaW1lKTsKKyAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicmVxdWVz
dFRpbWUiLCB0aW1pbmcuY29udmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShsb2Fk
ZXItPnRpbWluZygpLCAwKSk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInByb3h5U3Rh
cnQiLCB0aW1pbmcucHJveHlTdGFydCk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInBy
b3h5RW5kIiwgdGltaW5nLnByb3h5RW5kKTsKICAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigi
ZG5zU3RhcnQiLCB0aW1pbmcuZG5zU3RhcnQpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYg
KHJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE2NCw3ICsxNjQsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3Vy
Y2VSZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXROdW1iZXIo
ImNvbm5lY3Rpb25JZCIsIHJlc3BvbnNlLmNvbm5lY3Rpb25JRCgpKTsKICAgICByZXNwb25zZU9i
amVjdC0+c2V0Qm9vbGVhbigiZnJvbURpc2tDYWNoZSIsIHJlc3BvbnNlLndhc0NhY2hlZCgpKTsK
ICAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCi0gICAgICAgIHJlc3BvbnNl
T2JqZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5nKCpyZXNwb25z
ZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkpOworICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2Jq
ZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCksIGxvYWRlcikpOwogCiAgICAgaWYgKHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8o
KSkgewogICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJoZWFkZXJzIiwgYnVpbGRP
YmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmVzcG9uc2VIZWFk
ZXJzKSk7CkBAIC0xODAsMTMgKzE4MCwxMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAg
IHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNl
JiBjYWNoZWRSZXNvdXJjZSkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVz
b3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJl
c291cmNlT2JqZWN0LT5zZXRTdHJpbmcoInVybCIsIGNhY2hlZFJlc291cmNlLnVybCgpKTsKICAg
ICByZXNvdXJjZU9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YWNoZWRSZXNvdXJjZVR5cGVTdHJpbmcoY2FjaGVkUmVzb3VyY2UpKTsKICAgICByZXNvdXJjZU9i
amVjdC0+c2V0TnVtYmVyKCJib2R5U2l6ZSIsIGNhY2hlZFJlc291cmNlLmVuY29kZWRTaXplKCkp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UucmVzcG9uc2UoKSk7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAg
IGlmIChyZXNvdXJjZVJlc3BvbnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0T2JqZWN0
KCJyZXNwb25zZSIsIHJlc291cmNlUmVzcG9uc2UpOwogICAgIHJldHVybiByZXNvdXJjZU9iamVj
dDsKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxT
ZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIGVsc2UK
ICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JP
YmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7
Ci0gICAgbV9mcm9udGVuZC0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2Vu
dC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVy
KSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3Qo
cmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgY2FsbFN0YWNrVmFsdWUs
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKSk7CisgICAg
bV9mcm9udGVuZC0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJh
bWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgY2FsbFN0YWNrVmFsdWUsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KHJlc3BvbnNlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNl
ID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOwogICAg
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdl
bnQ6Ok90aGVyUmVzb3VyY2U7CiAgICAgbG9uZyBjYWNoZWRSZXNvdXJjZVNpemUgPSAwOwogCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICBtX3Jlc291cmNl
c0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgcmVzb3VyY2UpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0
KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwogCi0g
ICAgbV9mcm9udGVuZC0+cmVzb3VyY2VMb2FkZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBm
cmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwg
aW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSkp
OworICAgIG1fZnJvbnRlbmQtPnJlc291cmNlTG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJ
ZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1l
KCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSgqcmVzb3Vy
Y2UsIGxvYWRlcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEluaXRp
YWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ2MTk5NmU2NTFhZDE5YzIzOWMzMDRhYTEyYmI5ZWM2ZmRmNjk0ZDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGlt
aW5nLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dExvYWRUaW1pbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RvY3VtZW50TG9hZFRpbWluZzo6RG9jdW1lbnRM
b2FkVGltaW5nKCkKKyAgICA6IG1fbmF2aWdhdGlvblN0YXJ0V2FsbFRpbWUoMC4wKQorICAgICwg
bV9uYXZpZ2F0aW9uU3RhcnQoMC4wKQorICAgICwgbV91bmxvYWRFdmVudFN0YXJ0KDAuMCkKKyAg
ICAsIG1fdW5sb2FkRXZlbnRFbmQoMC4wKQorICAgICwgbV9yZWRpcmVjdFN0YXJ0KDAuMCkKKyAg
ICAsIG1fcmVkaXJlY3RFbmQoMC4wKQorICAgICwgbV9yZWRpcmVjdENvdW50KDApCisgICAgLCBt
X2ZldGNoU3RhcnQoMC4wKQorICAgICwgbV9yZXNwb25zZUVuZCgwLjApCisgICAgLCBtX2xvYWRF
dmVudFN0YXJ0KDAuMCkKKyAgICAsIG1fbG9hZEV2ZW50RW5kKDAuMCkKKyAgICAsIG1faGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdChmYWxzZSkKKyAgICAsIG1faGFzU2FtZU9yaWdpbkFzUHJldmlvdXNE
b2N1bWVudChmYWxzZSkKKyAgICAsIG1fcm9vdFRpbWluZygwKQoreworfQorCit2b2lkIERvY3Vt
ZW50TG9hZFRpbWluZzo6c2V0TmF2aWdhdGlvblN0YXJ0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBB
U1NFUlQoIW1fbmF2aWdhdGlvblN0YXJ0ICYmICFtX25hdmlnYXRpb25TdGFydFdhbGxUaW1lKTsK
KyAgICBtX25hdmlnYXRpb25TdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwor
ICAgIG1fbmF2aWdhdGlvblN0YXJ0V2FsbFRpbWUgPSBjdXJyZW50VGltZSgpOworCisgICAgQVNT
RVJUKGZyYW1lKTsKKyAgICBEb2N1bWVudCogcm9vdERvY3VtZW50ID0gZnJhbWUtPnRyZWUoKS0+
dG9wKHRydWUpLT5kb2N1bWVudCgpOworICAgIGlmIChyb290RG9jdW1lbnQgJiYgdGhpcyAhPSBy
b290RG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKSkKKyAgICAgICAgbV9yb290VGltaW5nID0g
cm9vdERvY3VtZW50LT5sb2FkZXIoKS0+dGltaW5nKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2Fk
VGltaW5nOjphZGRSZWRpcmVjdChjb25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VS
TCYgcmVkaXJlY3RlZFVybCkKK3sKKyAgICBtX3JlZGlyZWN0Q291bnQrKzsKKyAgICBpZiAoIW1f
cmVkaXJlY3RTdGFydCkKKyAgICAgICAgbV9yZWRpcmVjdFN0YXJ0ID0gbV9mZXRjaFN0YXJ0Owor
ICAgIG1fcmVkaXJlY3RFbmQgPSBtX2ZldGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKKyAgICAvLyBDaGVjayBpZiB0aGUgcmVkaXJlY3RlZCB1cmwgaXMgYWxsb3dlZCB0
byBhY2Nlc3MgdGhlIHJlZGlyZWN0aW5nIHVybCdzIHRpbWluZyBpbmZvcm1hdGlvbi4KKyAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0ZWRTZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RlZFVybCk7CisgICAgbV9oYXNDcm9zc09yaWdpblJlZGly
ZWN0ID0gIXJlZGlyZWN0ZWRTZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChyZWRpcmVjdGluZ1Vy
bCk7Cit9CisKK2RvdWJsZSBEb2N1bWVudExvYWRUaW1pbmc6OmNvbnZlcnRNb25vdG9uaWNUaW1l
VG9Eb2N1bWVudFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUpIGNvbnN0Cit7CisgICAgaWYgKCFt
b25vdG9uaWNUaW1lKQorICAgICAgICByZXR1cm4gMC4wOworICAgIGlmIChtX3Jvb3RUaW1pbmcp
CisgICAgICAgIHJldHVybiBtX3Jvb3RUaW1pbmctPmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1
bWVudFRpbWUobW9ub3RvbmljVGltZSk7CisgICAgcmV0dXJuIG1fbmF2aWdhdGlvblN0YXJ0V2Fs
bFRpbWUgKyBtb25vdG9uaWNUaW1lIC0gbV9uYXZpZ2F0aW9uU3RhcnQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcu
aAppbmRleCBkNGFhN2QwYzk1ZWE4OTdhYWE4OTEwOGE3ZWY4YjZhZDg5MDhlYTdmLi4zNGI2N2Nh
MGIzMTMxYmVjZTZiOWRkNTk0OTEzNTFhZTBiNDFmZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCkBAIC0yNiwzOSArMjYsNjIgQEAKICNpZm5kZWYgRG9j
dW1lbnRMb2FkVGltaW5nX2gKICNkZWZpbmUgRG9jdW1lbnRMb2FkVGltaW5nX2gKIAorI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBE
b2N1bWVudExvYWRUaW1pbmcgewotICAgIERvY3VtZW50TG9hZFRpbWluZygpCi0gICAgICAgIDog
bmF2aWdhdGlvblN0YXJ0KDAuMCkKLSAgICAgICAgLCB1bmxvYWRFdmVudFN0YXJ0KDAuMCkKLSAg
ICAgICAgLCB1bmxvYWRFdmVudEVuZCgwLjApCi0gICAgICAgICwgcmVkaXJlY3RTdGFydCgwLjAp
Ci0gICAgICAgICwgcmVkaXJlY3RFbmQoMC4wKQotICAgICAgICAsIHJlZGlyZWN0Q291bnQoMCkK
LSAgICAgICAgLCBmZXRjaFN0YXJ0KDAuMCkKLSAgICAgICAgLCByZXNwb25zZUVuZCgwLjApCi0g
ICAgICAgICwgbG9hZEV2ZW50U3RhcnQoMC4wKQotICAgICAgICAsIGxvYWRFdmVudEVuZCgwLjAp
Ci0gICAgICAgICwgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdChmYWxzZSkKLSAgICAgICAgLCBoYXNT
YW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KGZhbHNlKQotICAgIHsKLSAgICB9CitjbGFzcyBG
cmFtZTsKK2NsYXNzIEtVUkw7CisKK2NsYXNzIERvY3VtZW50TG9hZFRpbWluZyB7CitwdWJsaWM6
CisgICAgRG9jdW1lbnRMb2FkVGltaW5nKCk7CisKKyAgICB2b2lkIHNldE5hdmlnYXRpb25TdGFy
dChGcmFtZSopOworICAgIHZvaWQgYWRkUmVkaXJlY3QoY29uc3QgS1VSTCYgcmVkaXJlY3RpbmdV
cmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwpOworICAgIGRvdWJsZSBjb252ZXJ0TW9ub3Rv
bmljVGltZVRvRG9jdW1lbnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBjb25zdDsKKworICAg
IHZvaWQgc2V0VW5sb2FkRXZlbnRTdGFydCgpIHsgbV91bmxvYWRFdmVudFN0YXJ0ID0gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIHNldFVubG9hZEV2ZW50RW5kKCkg
eyBtX3VubG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAg
ICB2b2lkIHNldFJlZGlyZWN0U3RhcnQoKSB7IG1fcmVkaXJlY3RTdGFydCA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdEVuZCgpIHsgbV9yZWRp
cmVjdEVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBzZXRG
ZXRjaFN0YXJ0KCkgeyBtX2ZldGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsgfQorICAgIHZvaWQgc2V0UmVzcG9uc2VFbmQoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgbV9y
ZXNwb25zZUVuZCA9IG1vbm90b25pY1RpbWU7IH0KKyAgICB2b2lkIHNldExvYWRFdmVudFN0YXJ0
KCkgeyBtX2xvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0K
KyAgICB2b2lkIHNldExvYWRFdmVudEVuZCgpIHsgbV9sb2FkRXZlbnRFbmQgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorCisgICAgdm9pZCBzZXRIYXNTYW1lT3JpZ2luQXNQcmV2
aW91c0RvY3VtZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3Vt
ZW50ID0gdmFsdWU7IH0KKworICAgIGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fbmF2aWdhdGlvblN0YXJ0
KTsgfQorICAgIGRvdWJsZSB1bmxvYWRFdmVudFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVy
dE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX3VubG9hZEV2ZW50U3RhcnQpOyB9CisgICAg
ZG91YmxlIHVubG9hZEV2ZW50RW5kKCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1Rp
bWVUb0RvY3VtZW50VGltZShtX3VubG9hZEV2ZW50RW5kKTsgfQorICAgIGRvdWJsZSByZWRpcmVj
dFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGlt
ZShtX3JlZGlyZWN0U3RhcnQpOyB9CisgICAgZG91YmxlIHJlZGlyZWN0RW5kKCkgY29uc3QgeyBy
ZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX3JlZGlyZWN0RW5kKTsg
fQorICAgIHNob3J0IHJlZGlyZWN0Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q291
bnQ7IH0KKyAgICBkb3VibGUgZmV0Y2hTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25v
dG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9mZXRjaFN0YXJ0KTsgfQorICAgIGRvdWJsZSByZXNw
b25zZUVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRp
bWUobV9yZXNwb25zZUVuZCk7IH0KKyAgICBkb3VibGUgbG9hZEV2ZW50U3RhcnQoKSBjb25zdCB7
IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fbG9hZEV2ZW50U3Rh
cnQpOyB9CisgICAgZG91YmxlIGxvYWRFdmVudEVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRN
b25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9sb2FkRXZlbnRFbmQpOyB9CisgICAgYm9vbCBo
YXNDcm9zc09yaWdpblJlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDcm9zc09yaWdpblJl
ZGlyZWN0OyB9CisgICAgYm9vbCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OyB9CiAKLSAgICBk
b3VibGUgbmF2aWdhdGlvblN0YXJ0OwotICAgIGRvdWJsZSB1bmxvYWRFdmVudFN0YXJ0OwotICAg
IGRvdWJsZSB1bmxvYWRFdmVudEVuZDsKLSAgICBkb3VibGUgcmVkaXJlY3RTdGFydDsKLSAgICBk
b3VibGUgcmVkaXJlY3RFbmQ7Ci0gICAgc2hvcnQgcmVkaXJlY3RDb3VudDsKLSAgICBkb3VibGUg
ZmV0Y2hTdGFydDsKLSAgICBkb3VibGUgcmVzcG9uc2VFbmQ7Ci0gICAgZG91YmxlIGxvYWRFdmVu
dFN0YXJ0OwotICAgIGRvdWJsZSBsb2FkRXZlbnRFbmQ7Ci0gICAgYm9vbCBoYXNDcm9zc09yaWdp
blJlZGlyZWN0OwotICAgIGJvb2wgaGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudDsKK3By
aXZhdGU6CisgICAgZG91YmxlIG1fbmF2aWdhdGlvblN0YXJ0V2FsbFRpbWU7CisgICAgZG91Ymxl
IG1fbmF2aWdhdGlvblN0YXJ0OworICAgIGRvdWJsZSBtX3VubG9hZEV2ZW50U3RhcnQ7CisgICAg
ZG91YmxlIG1fdW5sb2FkRXZlbnRFbmQ7CisgICAgZG91YmxlIG1fcmVkaXJlY3RTdGFydDsKKyAg
ICBkb3VibGUgbV9yZWRpcmVjdEVuZDsKKyAgICBzaG9ydCBtX3JlZGlyZWN0Q291bnQ7CisgICAg
ZG91YmxlIG1fZmV0Y2hTdGFydDsKKyAgICBkb3VibGUgbV9yZXNwb25zZUVuZDsKKyAgICBkb3Vi
bGUgbV9sb2FkRXZlbnRTdGFydDsKKyAgICBkb3VibGUgbV9sb2FkRXZlbnRFbmQ7CisgICAgYm9v
bCBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7CisgICAgYm9vbCBtX2hhc1NhbWVPcmlnaW5Bc1By
ZXZpb3VzRG9jdW1lbnQ7CisgICAgRG9jdW1lbnRMb2FkVGltaW5nKiBtX3Jvb3RUaW1pbmc7CiB9
OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggOWRhY2FkNTQxNDM4Y2Q2Y2U1ZmYzYzFlNWRkZGYyODNm
NWFiY2IzMy4uZDc3ZDdiY2FlYTQwNWQ3Mzc0MmJkOWJjYmY3MDI5ZWJhZDEyMDc4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zODQsMTAgKzM4NCwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBv
bGljeSkKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUgaW50byBmcmVlZCBtZW1vcnku
CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50
TG9hZGVyID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPSBVbmxvYWREaXNtaXNz
YWw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgIWRvY3Vt
ZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2FkRXZlbnRTdGFydCAmJiAhZG9jdW1lbnRMb2FkZXIt
PnRpbWluZygpLT51bmxvYWRFdmVudEVuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGRvY3VtZW50TG9hZGVyICYmICFkb2N1bWVudExvYWRlci0+dGltaW5nKCktPnVubG9hZEV2ZW50
U3RhcnQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVudEVuZCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiB0aW1pbmcg
PSBkb2N1bWVudExvYWRlci0+dGltaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hUaW1lZEV2ZW50KHVubG9hZEV2ZW50
LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSwgJnRpbWluZy0+dW5sb2FkRXZlbnRT
dGFydCwgJnRpbWluZy0+dW5sb2FkRXZlbnRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh0aW1pbmctPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1pbmctPnNldFVubG9hZEV2ZW50U3RhcnQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxvYWRF
dmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCktPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWluZy0+c2V0VW5sb2FkRXZlbnRFbmQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRv
bVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3co
KS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE3NDksNyArMTc1MSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKHBk
bCkgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGVzdGluYXRpb24gcGFnZSBpcyBhbGxvd2Vk
IHRvIGFjY2VzcyB0aGUgcHJldmlvdXMgcGFnZSdzIHRpbWluZyBpbmZvcm1hdGlvbi4KICAgICAg
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUocGRsLT5yZXF1ZXN0KCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LT50aW1pbmcoKS0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCA9IHNlY3VyaXR5T3Jp
Z2luLT5jYW5SZXF1ZXN0KG1fcHJldmlvdXNVcmwpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LT50aW1pbmcoKS0+c2V0SGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChtX3ByZXZpb3VzVXJsKSk7CiAgICAgfQogCiAgICAgLy8gQ2FsbCBj
bGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoKSBoZXJlIHNvIHRoYXQgdGhlIGZyYW1l
IGxvYWQgZGVsZWdhdGUgaXMgbm90aWZpZWQgdGhhdCB0aGUgcmVkaXJlY3QncwpAQCAtMjMwNCw4
ICsyMzA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0
Rm9ybSgpCiAgICAgICAgIG5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KGlkZW50aWZpZXIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgfQogCi0gICAg
QVNTRVJUKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9u
U3RhcnQpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmln
YXRpb25TdGFydCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT50aW1pbmcoKS0+c2V0TmF2aWdhdGlvblN0YXJ0KGZyYW1lKCkpOwogCiAgICAgaWYgKCFt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShpZGVu
dGlmaWVyKSkKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cGRhdGVMb2Fk
aW5nKCk7CkBAIC0yOTQ1LDExICsyOTQ2LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQcm92
aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnByZXBh
cmVGb3JMb2FkU3RhcnQoKTsKIAogICAgIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlID0gdHJ1ZTsK
LSAgICAKKwogICAgIC8vIFNob3VsZCBoYXZlIHRpbWluZyBkYXRhIGZyb20gcHJldmlvdXMgdGlt
ZShzKSB0aGUgcGFnZSB3YXMgc2hvd24uCi0gICAgQVNTRVJUKHByb3Zpc2lvbmFsTG9hZGVyLT50
aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0KTsKKyAgICBBU1NFUlQocHJvdmlzaW9uYWxMb2FkZXIt
PnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnJl
c2V0VGltaW5nKCk7Ci0gICAgcHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9u
U3RhcnQgPSBjdXJyZW50VGltZSgpOyAgICAKKyAgICBwcm92aXNpb25hbExvYWRlci0+dGltaW5n
KCktPnNldE5hdmlnYXRpb25TdGFydChmcmFtZSgpKTsKIAogICAgIHByb3Zpc2lvbmFsTG9hZGVy
LT5zZXRDb21taXR0ZWQodHJ1ZSk7CiAgICAgY29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGExZjk5MThl
YmJkZTU2Njg1M2U3NTE2Y2JmZmY4NDYyOTEwY2Q0OGQuLjU1Yzg2MWM4NGFiODY5Y2U1ZGQ2Mzg4
ZDZhMmVjYmU3MmE2OTJkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmUK
ICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKICAgICBlbHNlIGlmIChtX3N1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewogICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVk
IGluIGxvYWRpbmcgc3Vic3RpdHV0ZSBkYXRhLgotICAgICAgICBBU1NFUlQoZG9jdW1lbnRMb2Fk
ZXIoKS0+dGltaW5nKCktPnJlZGlyZWN0Q291bnQpOworICAgICAgICBBU1NFUlQoZG9jdW1lbnRM
b2FkZXIoKS0+dGltaW5nKCktPnJlZGlyZWN0Q291bnQoKSk7CiAgICAgICAgIGhhbmRsZSgpLT5j
YW5jZWwoKTsKICAgICAgICAgaGFuZGxlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgIH0KQEAg
LTE4MCwyMCArMTgwLDkgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc28KICAgICAvLyByZWZlcmVu
Y2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBS
ZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgQVNTRVJUKGRv
Y3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KTsKKyAgICBBU1NFUlQoZG9jdW1l
bnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3RhcnQoKSk7CiAgICAgaWYgKCFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRM
b2FkVGltaW5nID0gZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCk7Ci0KLSAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIHJlZGlyZWN0ZWQgdXJsIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSByZWRpcmVj
dGluZyB1cmwncyB0aW1pbmcgaW5mb3JtYXRpb24uCi0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG5ld1JlcXVlc3Qu
dXJsKCkpOwotICAgICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KHJlZGlyZWN0
UmVzcG9uc2UudXJsKCkpKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5nLT5oYXNDcm9z
c09yaWdpblJlZGlyZWN0ID0gdHJ1ZTsKLQotICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPnJl
ZGlyZWN0Q291bnQrKzsKLSAgICAgICAgaWYgKCFkb2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0
U3RhcnQpCi0gICAgICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0U3RhcnQgPSBk
b2N1bWVudExvYWRUaW1pbmctPmZldGNoU3RhcnQ7Ci0gICAgICAgIGRvY3VtZW50TG9hZFRpbWlu
Zy0+cmVkaXJlY3RFbmQgPSBjdXJyZW50VGltZSgpOwotICAgICAgICBkb2N1bWVudExvYWRUaW1p
bmctPmZldGNoU3RhcnQgPSBkb2N1bWVudExvYWRUaW1pbmctPnJlZGlyZWN0RW5kOworICAgICAg
ICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+YWRkUmVkaXJlY3QocmVkaXJlY3RSZXNwb25z
ZS51cmwoKSwgbmV3UmVxdWVzdC51cmwoKSk7CiAgICAgfQogCiAgICAgLy8gVXBkYXRlIGNvb2tp
ZSBwb2xpY3kgYmFzZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2VwdCBmb3Igc3ViZnJhbWVzLCB3
aGljaCB1c2UgdGhlCkBAIC00NTksNyArNDQ4LDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZwog
ICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAz
MjY2MjE2LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAK
LSAgICBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPSBjdXJyZW50VGltZSgpOworICAgIG1fdGlt
ZU9mTGFzdERhdGFSZWNlaXZlZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCiAg
ICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgsIGFsbEF0T25jZSk7CiB9CkBAIC00NzEsNyArNDYwLDcgQEAgdm9pZCBNYWluUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAjaWYgIVVT
RShDRikKICAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigp
LT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSk7CiAj
ZW5kaWYKLSAgICAKKwogICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFu
eXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdAogICAgIC8vIHJlZmVy
ZW5jZSB0byB0aGlzIG9iamVjdC4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90
ZWN0KHRoaXMpOwpAQCAtNDgwLDExICs0NjksMTAgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBkbCA9IGRvY3VtZW50TG9hZGVyKCk7CiAjZW5kaWYKIAotICAgIEFTU0VSVCghZG9j
dW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnJlc3BvbnNlRW5kKTsKLSAgICBkb2N1bWVudExvYWRl
cigpLT50aW1pbmcoKS0+cmVzcG9uc2VFbmQgPSBmaW5pc2hUaW1lID8gZmluaXNoVGltZSA6ICht
X3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPyBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgOiBjdXJy
ZW50VGltZSgpKTsKKyAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+c2V0UmVzcG9uc2VF
bmQoZmluaXNoVGltZSA/IGZpbmlzaFRpbWUgOiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID8g
bV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDogbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkp
KTsKICAgICBmcmFtZUxvYWRlcigpLT5maW5pc2hlZExvYWRpbmcoKTsKICAgICBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhmaW5pc2hUaW1lKTsKLSAgICAKKwogI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgZGwtPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkt
PmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC01OTQsOSArNTgyLDkg
QEAgYm9vbCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3UKIAogICAgIG1fc3Vic3RpdHV0ZURhdGEgPSBzdWJz
dGl0dXRlRGF0YTsKIAotICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bmF2
aWdhdGlvblN0YXJ0KTsKLSAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5m
ZXRjaFN0YXJ0KTsKLSAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCA9
IGN1cnJlbnRUaW1lKCk7CisgICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5u
YXZpZ2F0aW9uU3RhcnQoKSk7CisgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmco
KS0+ZmV0Y2hTdGFydCgpKTsKKyAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+c2V0RmV0
Y2hTdGFydCgpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHIpOwogCiAjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCBiODVmMWVhYTMyYjE2NDk3ZjQ0ZGEzY2VlY2UyNmRmNDYwNzdhY2MwLi5kNzhkNzcwNjJmZDg5
MWQzNTI4OTg2YjU0YzJlYTFhYjU5ZWQ3Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xNTY0LDEyICsxNTY0LDE0IEBAIGJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyCiB2b2lkIERP
TVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIFJlZlB0cjxFdmVudD4gbG9hZEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
Ci0gICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkg
JiYgIW1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bG9hZEV2
ZW50U3RhcnQpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpbWlu
ZygpLT5sb2FkRXZlbnRTdGFydCgpKSB7CiAgICAgICAgIC8vIFRoZSBEb2N1bWVudExvYWRlciAo
YW5kIHRodXMgaXRzIERvY3VtZW50TG9hZFRpbWluZykgbWlnaHQgZ2V0IGRlc3Ryb3llZCB3aGls
ZSBkaXNwYXRjaGluZwogICAgICAgICAvLyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJl
dmVudCB3cml0aW5nIHRoZSBlbmQgdGltZSBpbnRvIGZyZWVkIG1lbW9yeS4KICAgICAgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpOwogICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRv
Y3VtZW50TG9hZGVyLT50aW1pbmcoKTsKLSAgICAgICAgZGlzcGF0Y2hUaW1lZEV2ZW50KGxvYWRF
dmVudCwgZG9jdW1lbnQoKSwgJnRpbWluZy0+bG9hZEV2ZW50U3RhcnQsICZ0aW1pbmctPmxvYWRF
dmVudEVuZCk7CisgICAgICAgIHRpbWluZy0+c2V0TG9hZEV2ZW50U3RhcnQoKTsKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChsb2FkRXZlbnQsIGRvY3VtZW50KCkpOworICAgICAgICB0aW1pbmctPnNl
dExvYWRFdmVudEVuZCgpOwogICAgIH0gZWxzZQogICAgICAgICBkaXNwYXRjaEV2ZW50KGxvYWRF
dmVudCwgZG9jdW1lbnQoKSk7CiAKQEAgLTE2MDEsMTUgKzE2MDMsNiBAQCBib29sIERPTVdpbmRv
dzo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFzc1JlZlB0cjxF
dmVudFRhcmdldAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgRE9NV2luZG93OjpkaXNw
YXRjaFRpbWVkRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIERvY3VtZW50KiB0YXJnZXQs
IGRvdWJsZSogc3RhcnRUaW1lLCBkb3VibGUqIGVuZFRpbWUpCi17Ci0gICAgQVNTRVJUKHN0YXJ0
VGltZSk7Ci0gICAgQVNTRVJUKGVuZFRpbWUpOwotICAgICpzdGFydFRpbWUgPSBjdXJyZW50VGlt
ZSgpOwotICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQsIHRhcmdldCk7Ci0gICAgKmVuZFRpbWUgPSBj
dXJyZW50VGltZSgpOwotfQotCiB2b2lkIERPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKQogewogICAgIEV2ZW50VGFyZ2V0OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYTJhZDgwOWE5ZjA2NmZjMjhmNWFlZWJlODcxY2U2MGRj
OGE4NWFmZC4uOTJlZDNmNmEyMWEwNTc5YzFiY2VhYTM4ZTcwYjI1ZmJkZjBmODYwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yNjQsNyArMjY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgICAgICAgYm9v
bCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0PiBwcnBUYXJnZXQpOwogICAgICAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7
Ci0gICAgICAgIHZvaWQgZGlzcGF0Y2hUaW1lZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBEb2N1bWVudCogdGFyZ2V0LCBkb3VibGUqIHN0YXJ0VGltZSwgZG91YmxlKiBlbmRUaW1lKTsK
IAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKICAgICAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihiZWZvcmV1bmxvYWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCmluZGV4IGE0NjYzOWFh
ODk1OTQ4ZjMwYTBhZWMyNjI2MTc1MDFlYWVhZGJmYzguLjY2M2U5NDJhMWJiY2IzMDZiMzUxZmIy
NjkyZTQ3YjI4NTBlM2QyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvbi5jcHAKQEAgLTg0LDEwICs4NCwxMCBAQCB1bnNpZ25lZCBzaG9ydCBQZXJmb3Jt
YW5jZU5hdmlnYXRpb246OnJlZGlyZWN0Q291bnQoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsK
IAogICAgIERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gbG9hZGVyLT50aW1pbmcoKTsKLSAg
ICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KQorICAgIGlmICh0aW1pbmctPmhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
dGltaW5nLT5yZWRpcmVjdENvdW50OworICAgIHJldHVybiB0aW1pbmctPnJlZGlyZWN0Q291bnQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcAppbmRleCBmZjI1MzU0MmRjNGIyYTM0OTljOWQ2NjlkNzYxYjJlNTFj
N2UxNmNiLi4yMjFmYWQzZDQ4NDAwZDc4OTMwNmY0Y2Y3MzZkNTJkNjk3OGI0MzQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcApAQCAtNTAsMzAgKzUwLDYgQEAg
c3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB0b0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIHNl
Y29uZHMpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2Vjb25k
cyAqIDEwMDAuMCk7CiB9CiAKLXN0YXRpYyBkb3VibGUgZ2V0UG9zc2libHlTa2V3ZWRUaW1lSW5L
bm93blJhbmdlKGRvdWJsZSBza2V3ZWRUaW1lLCBkb3VibGUgbG93ZXJCb3VuZCwgZG91YmxlIHVw
cGVyQm91bmQpCi17Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgLy8gVGhlIGNocm9taXVt
IHBvcnQncyBjdXJyZW50VGltZSgpIGltcGxlbWVudGF0aW9uIG9ubHkgc3luY3Mgd2l0aCB0aGUK
LSAgICAvLyBzeXN0ZW0gY2xvY2sgZXZlcnkgNjAgc2Vjb25kcy4gU28gaXQgaXMgcG9zc2libGUg
Zm9yIHRpbWluZyBtYXJrcwotICAgIC8vIGNvbGxlY3RlZCBpbiBkaWZmZXJlbnQgdGhyZWFkcyBv
ciBwcm9jZXNzZXMgdG8gaGF2ZSBhIHNtYWxsIHNrZXcuCi0gICAgLy8gRklYTUU6IEl0IG1heSBi
ZSBwb3NzaWJsZSB0byBhZGQgYSBjdXJyZW50VGltZUZyb21TeXN0ZW1UaW1lKCkgbWV0aG9kCi0g
ICAgLy8gdGhhdCBlbGltaW5hdGVzIHRoZSBza2V3LgotICAgIGlmIChza2V3ZWRUaW1lIDw9IGxv
d2VyQm91bmQpCi0gICAgICAgIHJldHVybiBsb3dlckJvdW5kOwotCi0gICAgaWYgKHVwcGVyQm91
bmQgPD0gMC4wKQotICAgICAgICB1cHBlckJvdW5kID0gY3VycmVudFRpbWUoKTsKLQotICAgIGlm
IChza2V3ZWRUaW1lID49IHVwcGVyQm91bmQpCi0gICAgICAgIHJldHVybiB1cHBlckJvdW5kOwot
I2Vsc2UKLSAgICBBU1NFUlRfVU5VU0VEKGxvd2VyQm91bmQsIHNrZXdlZFRpbWUgPj0gbG93ZXJC
b3VuZCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1cHBlckJvdW5kLCBza2V3ZWRUaW1lIDw9IHVwcGVy
Qm91bmQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gc2tld2VkVGltZTsKLX0KLQogUGVyZm9ybWFu
Y2VUaW1pbmc6OlBlcmZvcm1hbmNlVGltaW5nKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUo
ZnJhbWUpCiB7CkBAIC05NSw3ICs3MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+
bmF2aWdhdGlvblN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+bmF2aWdhdGlvblN0YXJ0KCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMTA0LDEwICs4MCwxMCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQoKSBj
b25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1p
bmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJl
dmlvdXNEb2N1bWVudCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkg
fHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxv
YWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+
dW5sb2FkRXZlbnRTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjp1bmxvYWRFdmVudEVuZCgpIGNvbnN0CkBAIC0xMTYsMTAgKzkyLDEwIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQoKSBjb25zdAog
ICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmctPmhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QgfHwgIXRpbWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNE
b2N1bWVudCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkgfHwgIXRp
bWluZy0+aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRFdmVu
dEVuZCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2
ZW50RW5kKCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
ZGlyZWN0U3RhcnQoKSBjb25zdApAQCAtMTI4LDEwICsxMDQsMTAgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRp
bWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdp
blJlZGlyZWN0KQorICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+cmVkaXJlY3RTdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1p
bmctPnJlZGlyZWN0U3RhcnQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6cmVkaXJlY3RFbmQoKSBjb25zdApAQCAtMTQwLDEwICsxMTYsMTAgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0CiAgICAg
aWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKHRpbWluZy0+aGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25k
cyh0aW1pbmctPnJlZGlyZWN0RW5kKTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHRpbWluZy0+cmVkaXJlY3RFbmQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6ZmV0Y2hTdGFydCgpIGNvbnN0CkBAIC0xNTIsNyArMTI4LDcgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0KCkgY29uc3QKICAgICBp
ZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hTdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxp
c2Vjb25kcyh0aW1pbmctPmZldGNoU3RhcnQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwU3RhcnQoKSBjb25zdApAQCAtMjY0LDggKzI0
MCw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFy
dCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFJlc3BvbnNlIHN0YXJ0IG5lZWRzIHRvIGJlIHRoZSB0
aW1lIG9mIHRoZSBmaXJzdCByZWNlaXZlZCBieXRlLgogICAgIC8vIEhvd2V2ZXIsIHRoZSBSZXNv
dXJjZUxvYWRUaW1pbmcgQVBJIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHRoZSB0aW1lCiAgICAg
Ly8gdGhlIGxhc3QgaGVhZGVyIGJ5dGUgd2FzIHJlY2VpdmVkLiBGb3IgbWFueSByZXNwb25zZXMg
d2l0aCByZWFzb25hYmxlCi0gICAgLy8gc2l6ZWQgY29va2llcywgdGhlIEhUVFAgaGVhZGVycyBm
aXQgaW50byBhIHNpbmdsZSBwYWNrZXQgc28gdGhpcyB0aW1lCi0gICAgLy8gaXMgYmFzaWNhbGx5
IGVxdWl2YWxlbnQuIEJ1dCBmb3Igc29tZSByZXNwb25zZXMsIHBhcnRpY3VsYXJseSB0aG9zZSB3
aXRoCisgICAgLy8gc2l6ZWQgY29va2llcywgdGhlIEhUVFAgaGVhZGVycyBmaXQgaW50byBhIHNp
bmdsZSBwYWNrZXQgc28gdGhpcyB0aW1lIC8vIGlzIGJhc2ljYWxseSBlcXVpdmFsZW50LiBCdXQg
Zm9yIHNvbWUgcmVzcG9uc2VzLCBwYXJ0aWN1bGFybHkgdGhvc2Ugd2l0aAogICAgIC8vIGhlYWRl
cnMgbGFyZ2VyIHRoYW4gYSBzaW5nbGUgcGFja2V0LCB0aGlzIHRpbWUgd2lsbCBiZSB0b28gbGF0
ZS4KICAgICBBU1NFUlQodGltaW5nLT5yZWNlaXZlSGVhZGVyc0VuZCA+PSAwKTsKICAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmctPnJlY2VpdmVIZWFk
ZXJzRW5kKTsKQEAgLTI3Nyw3ICsyNTIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVz
cG9uc2VFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZXNw
b25zZUVuZCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpk
b21Mb2FkaW5nKCkgY29uc3QKQEAgLTI4Niw3ICsyNjEsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcoKSBjb25zdAogICAgIGlmICghdGltaW5nKQog
ICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxp
c2Vjb25kcyh0aW1pbmctPmRvbUxvYWRpbmcpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9J
bnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tTG9hZGluZyk7CiB9CiAKIHVuc2lnbmVkIGxv
bmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJhY3RpdmUoKSBjb25zdApAQCAtMjk1
LDcgKzI3MCw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50
ZXJhY3RpdmUoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21JbnRlcmFjdGl2ZSk7
CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5k
b21JbnRlcmFjdGl2ZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWlu
Zzo6ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMzA0LDcgKzI3OSw3IEBA
IHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2
ZW50U3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVk
RXZlbnRTdGFydCk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxv
bmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKCkgY29u
c3QKQEAgLTMxMyw3ICsyODgsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1p
bmctPmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVU
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRlKCkg
Y29uc3QKQEAgLTMyMiw3ICsyOTcsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OmRvbUNvbXBsZXRlKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29t
cGxldGUpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRp
bWluZy0+ZG9tQ29tcGxldGUpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKQEAgLTMzMSw3ICszMDYsNyBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50U3RhcnQpOworICAgIHJldHVybiB0b0ludGVn
ZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZlbnRTdGFydCgpKTsKIH0KIAogdW5zaWduZWQg
bG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdApAQCAtMzQw
LDcgKzMxNSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2
ZW50RW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50RW5kKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50RW5kKCkpOwog
fQogCiBEb2N1bWVudExvYWRlciogUGVyZm9ybWFuY2VUaW1pbmc6OmRvY3VtZW50TG9hZGVyKCkg
Y29uc3QKQEAgLTM4MSwyMiArMzU2LDIwIEBAIFJlc291cmNlTG9hZFRpbWluZyogUGVyZm9ybWFu
Y2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRlci0+
cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGlu
dCByZWxhdGl2ZVNlY29uZHMpIGNvbnN0Cit1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50IHJlbGF0aXZlTWls
bGlzZWNvbmRzKSBjb25zdAogewotICAgIEFTU0VSVChyZWxhdGl2ZVNlY29uZHMgPj0gMCk7Cisg
ICAgQVNTRVJUKHJlbGF0aXZlTWlsbGlzZWNvbmRzID49IDApOwogICAgIFJlc291cmNlTG9hZFRp
bWluZyogcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsKICAgICBBU1NFUlQo
cmVzb3VyY2VUaW1pbmcpOwotICAgIERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRUaW1pbmcg
PSBkb2N1bWVudExvYWRUaW1pbmcoKTsKLSAgICBBU1NFUlQoZG9jdW1lbnRUaW1pbmcpOwotCi0g
ICAgLy8gVGhlIFJlc291cmNlTG9hZFRpbWluZyBBUEkncyByZXF1ZXN0VGltZSBpcyB0aGUgYmFz
ZSB0aW1lIHRvIHdoaWNoIGFsbAotICAgIC8vIG90aGVyIG1hcmtzIGFyZSByZWxhdGl2ZS4gU28g
dG8gZ2V0IGFuIGFic29sdXRlIHRpbWUsIHdlIG11c3QgYWRkIGl0IHRvCi0gICAgLy8gdGhlIHJl
bGF0aXZlIG1hcmtzLgotICAgIC8vCi0gICAgLy8gU2luY2UgUmVzb3VyY2VMb2FkVGltaW5ncyBj
YW1lIGZyb20gdGhlIG5ldHdvcmsgcGxhdGZvcm0gbGF5ZXIsIHdlIG11c3QKLSAgICAvLyBjaGVj
ayB0aGVtIGZvciBza2V3IGJlY2F1c2UgdGhleSBtYXkgYmUgZnJvbSBhbm90aGVyIHRocmVhZC9w
cm9jZXNzLgotICAgIGRvdWJsZSBiYXNlVGltZSA9IGdldFBvc3NpYmx5U2tld2VkVGltZUluS25v
d25SYW5nZShyZXNvdXJjZVRpbWluZy0+cmVxdWVzdFRpbWUsIGRvY3VtZW50VGltaW5nLT5mZXRj
aFN0YXJ0LCBkb2N1bWVudFRpbWluZy0+cmVzcG9uc2VFbmQpOwotICAgIHJldHVybiB0b0ludGVn
ZXJNaWxsaXNlY29uZHMoYmFzZVRpbWUpICsgcmVsYXRpdmVTZWNvbmRzOworICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHMocmVzb3VyY2VUaW1pbmctPmNvbnZlcnRSZXNvdXJjZUxvYWRU
aW1lVG9Eb2N1bWVudFRpbWUoZG9jdW1lbnRMb2FkVGltaW5nKCksIHJlbGF0aXZlTWlsbGlzZWNv
bmRzKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bW9ub3Rv
bmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgbW9ub3RvbmljU2Vjb25kcykgY29u
c3QKK3sKKyAgICBBU1NFUlQobW9ub3RvbmljU2Vjb25kcyA+PSAwKTsKKyAgICBjb25zdCBEb2N1
bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOworICAgIEFTU0VS
VCh0aW1pbmcpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5jb252
ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1vbm90b25pY1NlY29uZHMpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oCmluZGV4IDBjMzczODMyODBhMDMyM2Q3MjZlOWE5Nzg3Y2EzMGMxZTM4MzkwNzEuLjQ4ZDU5
OGNhYTQ2OGQ5ZGQxNzVjZmFhZDU3NmRjMzIzNjZmZmZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmgKQEAgLTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBEb2N1
bWVudExvYWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0OwogICAgIFJlc291cmNl
TG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50KSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhk
b3VibGUpIGNvbnN0OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVkOWRhNDhhM2NhNWYxMzA1MGFjYzA4ZjIxOWFmYTg1NzYxNTYzY2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNl
TG9hZFRpbWluZy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworZG91YmxlIFJlc291cmNlTG9hZFRpbWluZzo6Y29udmVydFJlc291
cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3Vt
ZW50VGltaW5nLCBpbnQgZGVsdGFNaWxsaXNlY29uZHMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudFRpbWluZykKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBkb2N1bWVudFRp
bWluZy0+Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShyZXF1ZXN0VGltZSArIGRl
bHRhTWlsbGlzZWNvbmRzIC8gMTAwMC4wKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKaW5kZXggMjY5ZmFkMDAy
NWQ5YWFkNDFlNTFiNzJhY2FmYWFhYjU2ZGQyMzI1Zi4uOTRjNTVkOWJhNGIwMTgwOTYyNWQxYjY5
YTQ3OGQwNTA2YmIxZTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCkBAIC0zMiw2ICszMiw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOworCiBjbGFzcyBSZXNvdXJj
ZUxvYWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgp
CkBAIC03OCw4ICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKICAgICB9CiAKLSAgICBkb3VibGUgcmVxdWVzdFRpbWU7Ci0gICAgaW50IHByb3h5U3Rh
cnQ7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZW50IGEgdW5pZmllZCB0aW1lbGluZSB0byBKYXZh
c2NyaXB0LiBVc2luZyB3YWxsdGltZSBpcyBwcm9ibGVtYXRpYywgYmVjYXVzZSB0aGUgY2xvY2sg
bWF5IHNrZXcgd2hpbGUgcmVzb3VyY2VzCisgICAgLy8gbG9hZC4gVG8gcHJldmVudCB0aGF0IHNr
ZXcsIHdlIHJlY29yZCBhIHNpbmdsZSByZWZlcmVuY2Ugd2FsbHRpbWUgd2hlbiByb290IGRvY3Vt
ZW50IG5hdmlnYXRpb24gYmVnaW5zLiBBbGwgb3RoZXIgdGltZXMgYXJlCisgICAgLy8gcmVjb3Jk
ZWQgdXNpbmcgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuIFdoZW4gYSB0aW1lIG5lZWRz
IHRvIGJlIHByZXNlbnRlZCB0byBKYXZhc2NyaXB0LCB3ZSBidWlsZCBhIHBzZXVkby13YWxsdGlt
ZQorICAgIC8vIHVzaW5nIHRoZSBmb2xsb3dpbmcgZXF1YXRpb246CisgICAgLy8gICBwc2V1ZG8g
dGltZSA9IGRvY3VtZW50IHdhbGwgcmVmZXJlbmNlICsgKHJlc291cmNlIHJlcXVlc3QgdGltZSAt
IGRvY3VtZW50IG1vbm90b25pYyByZWZlcmVuY2UpICsgZGVsdGFNaWxsaXNlY29uZHMgLyAxMDAw
LjAuCisgICAgZG91YmxlIGNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUoY29u
c3QgRG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudFRpbWluZywgaW50IGRlbHRhTWlsbGlzZWNv
bmRzKSBjb25zdDsKKworICAgIGRvdWJsZSByZXF1ZXN0VGltZTsgLy8gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgd2hlbiB0aGUgcG9ydCBzdGFydGVkIGhhbmRsaW5nIHRoaXMgcmVxdWVz
dC4KKyAgICBpbnQgcHJveHlTdGFydDsgLy8gVGhlIHJlc3Qgb2YgdGhlc2UgYXJlIG1pbGxpc2Vj
b25kIGRlbHRhcywgdXNpbmcgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGZyb20gcmVx
dWVzdFRpbWUuCiAgICAgaW50IHByb3h5RW5kOwogICAgIGludCBkbnNTdGFydDsKICAgICBpbnQg
ZG5zRW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104142</attachid>
            <date>2011-08-16 20:01:20 -0700</date>
            <delta_ts>2011-08-24 22:06:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58354-20110816200119.patch</filename>
            <type>text/plain</type>
            <size>56164</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzI5NGI2
OTlkYzg0MDNkNDRjNTcwNmM5NTM3ZTZmODM5MWExNDAxYy4uODRjMzRiNDdkOTQ5MGE1MDI1MTc1
MjNiOGVmZTc1YmFmNzg5ZjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg4OCw2ICs4ODgs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5jcHAKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAK
ICAgICBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisgICAgbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5jcHAKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAogICAgIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKICAgICBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNw
cApAQCAtMTEzOCw2ICsxMTM5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVy
cm9yQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorICAg
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYWU4MjEyMjgyMDNmY2ZjNWNlZjM2NGY3YjAzM2Mz
ZTQ2MmJhMGQ1Li5hNGRhM2Q0M2UyNzE5YWZmZDlmMjYwOTliMWY1M2YzZGU5NTgzOGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTEtMDgtMTYgIEphbWVzIFNpbW9uc2VuICA8c2lt
b25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtOYXZpZ2F0aW9uIFRpbWluZ10gVXNlIG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3VycmVudFRpbWUoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFJlbGllcyBvbiBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOiBVc2UgbW9ub3RvbmljIHRpbWVz
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKTogQ29udmVydCBtb25vdG9u
aWNGaW5pc2hUaW1lIHRvIHdhbGwgdGltZSBpZiBuZWVkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmpl
Y3RGb3JUaW1pbmcpOiBDb252ZXJ0IG1vbm90b25pYyByZXF1ZXN0VGltZSB0byB3YWxsIHRpbWUu
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOiBQbHVt
YmluZyBmb3IgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNhY2hlZFJl
c291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpEb2N1bWVudExvYWRUaW1p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXROYXZpZ2F0aW9u
U3RhcnQpOiBEZXRlcm1pbmUgcmVmZXJlbmNlIHRpbWUgYW5kIHJvb3QgcmVmZXJlbmNlIHRpbWUu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0KTogTW92
ZWQgbG9naWMgZnJvbSBNYWluUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRUaW1pbmc6OmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUpOiBIZWxw
ZXIgdG8gY29tcHV0ZSB3YWxsIHRpbWUgZnJvbSBtb25vdG9uaWMgdGltZS4KKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmg6IFR1cm5lZCBpbnRvIGNsYXNzLiBNYWRlIHRpbWVz
IG1vbm90b25pYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0VW5s
b2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNl
dFVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6
c2V0UmVkaXJlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6
OnNldFJlZGlyZWN0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6
c2V0RmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNl
dFJlc3BvbnNlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0
TG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpz
ZXRMb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpz
ZXRIYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZFRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZFRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZFRpbWluZzo6cmVkaXJlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRUaW1pbmc6OnJlZGlyZWN0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZFRpbWluZzo6cmVkaXJlY3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRUaW1pbmc6OmZldGNoU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjpyZXNwb25zZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6
OmxvYWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6
bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6aGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1p
bmc6Omhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxs
U3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lv
bmFsSXRlbUZyb21DYWNoZWRQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVB
ZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOiBNb3ZlZCBsb2dpYyB0byBEb2N1bWVudExvYWRUaW1pbmcu
CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKTog
VXNlIG1vbm90b25pYyB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3Vy
Y2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93Lmg6IFJlbW92ZWQgZGlzcGF0Y2hUaW1lZEV2ZW50LiBJdCBkb2Vzbid0IHJlYWxs
eSBoZWxwIGluIHRoZSBuZXcgbW9kZWwuCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU5hdmln
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpyZWRp
cmVjdENvdW50KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDogUmVtb3Zl
ZCBza2V3IGNvcnJlY3Rpb24gY29kZS4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIG5vdy4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OmRvbUludGVyYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSk6IFVzZWQgZm9y
IFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKTogVXNlZCBmb3IgRG9jdW1lbnRU
aW1pbmcgYW5kIERvY3VtZW50TG9hZFRpbWluZy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpjb252ZXJ0UmVzb3Vy
Y2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlTG9hZFRpbWluZy5oOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCB0byB3
YWxsIHRpbWVzLiBBZGRlZCBpbnN0cnVjdGlvbnMgZm9yIHVzZS4KKwogMjAxMS0wOC0xNiAgSmVm
ZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBYTUwgcGFyc2VyOiBS
ZXBsYWNlIGFzc2VydGlvbnMgcmVnYXJkaW5nIGNoYXJhY3RlciBkYXRhIGluIHRoZSBwcm9sb2cg
d2l0aCBwcm9wZXIgY2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyNmYw
YTUyZDI4ZmE3ODkzMjQ1MDNlZDM4NmViZjExMWM5ZDc1ZGY5Li41MGZiYjNhZmQ4OTA1M2I4ZWFi
OTAxZDAxZDM2M2FkMDViN2YxN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTIxMDIsNiArMjEwMiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1ZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBcCisJU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBcCkBAIC0yNzEzLDYgKzI3MTQsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlTG9hZEluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUxvYWRQcmlvcml0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlTG9hZFRpbWluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VMb2FkVGltaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhNjM2YjJiNjdiMTE3
MWMzMWRhNmU1OGY5MDExOWM2OWIxZDM4ZjhkLi45Y2U2Y2QxNzEzNDQwNjE0ODkxOWMwNzJlZDhi
NDljMGQxNDVmMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzM4LDYgKzI3MzgsNyBAQAogICAg
ICAgICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL0N1ZUxvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9D
dWVMb2FkZXIuaCcsCisgICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAnLAogICAgICAgICAgICAg
J2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgnLApAQCAtNDE3Miw2ICs0MTczLDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCAxNzdmYjM1YjkyMTBkZDBjMDM2MzRiMDcwNmNiYzdlZGRhY2IyMjZlLi5hZGEw
YTU5MmQ3NjljNzNjNDMyZDJjMWE0ZTZmN2I2M2I1NWNhOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
ODY3LDYgKzg2Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBcCisgICAgbG9hZGVyL0Rv
Y3VtZW50TG9hZFRpbWluZy5jcHAgXAogICAgIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwIFwKICAgICBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIFwKICAgICBsb2FkZXIvRm9y
bVN0YXRlLmNwcCBcCkBAIC0xMDUzLDYgKzEwNTQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1Jl
Z3VsYXJFeHByZXNzaW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDNmMWY4MTZlZTNkYzUwZjRjZDMxNjdjNjBkODJiOWM3MzdmMzEw
OTkuLjVmZWQ5NGEyYzNiYjFjOWU1MWQwZTFiZjliNjQ4YTlhMThhMjQ2MzEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjAzOCw2ICsyNjAz
OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxsb2FkZXJcRG9jdW1lbnRMb2FkVGltaW5nLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZFRpbWluZy5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KQEAgLTMwNDkzLDYgKzMwNDk3LDEwIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XFJlc291cmNlTG9hZFRpbWluZy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlTG9hZFRpbWlu
Zy5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiODNiZTVkNDk2NzQ5NTU0MmVhMWNiNGE0
Yzk1ZmNjOGRmODI5ZTIuLmQ4MmE5N2EzNTlmOWRhYWZhOTY2ZThlMjNjNjBjNGFhMGMxYmUyNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI3NTcsNiArMjc1Nyw4IEBACiAJCTg1Rjc0RTBBMEFBOERGOEMwMDBEQzI4NCAvKiBE
T01DU1NVbmtub3duUnVsZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzJERDUwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNT
U1Vua25vd25SdWxlLmggKi87IH07CiAJCTg1RkYzMTVBMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01L
ZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NUZGMzE1ODBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oICovOyB9
OwogCQk4NUZGMzE1QjBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkYzMTU5MEFBRkJG
Q0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tICovOyB9OworCQk4NjFDMkVBNDEzRkI0
RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAvKiBE
b2N1bWVudExvYWRUaW1pbmcuY3BwICovOyB9OworCQk4NjFDMkVBNjEzRkI0RkZGMDAwNjJBQkIg
LyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2MUMyRUE1MTNGQjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRU
aW1pbmcuY3BwICovOyB9OwogCQk4NjI0M0QwMTExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MjQzRDAwMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBl
ci5oICovOyB9OwogCQk4NkQ5ODJGNzEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDk4MkY2
MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg5MEFFMEUxMTI1NkEwNzkwMEY1OTY4QyAv
KiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4OTBBRTBFMDEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVy
QmFzZS5oICovOyB9OwpAQCAtOTM2MSw2ICs5MzYzLDggQEAKIAkJODVGNTZBNzkwQTk4Q0UzNzAw
QURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RkYzMTU4MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01L
ZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01LZXli
b2FyZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RkYzMTU5MEFBRkJG
Q0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUtleWJvYXJkRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1p
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2Fk
VGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYxQzJFQTUxM0ZCNEZG
RjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZp
ZXdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEOTgyRjYxMjVD
MTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvY3VtZW50VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2UuaDsgcGF0aCA9
IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQ0MjUsNiArMTQ0MjksNyBAQAogCQkJCTUxNEM3NjY2MENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggKi8sCiAJCQkJNDkyODYzOTgxMjUzQjhGQzAwRjc5
MkQ2IC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQlFNDI5NUZBMzEyQjA2MTRFMDBEMUFD
RTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLywKKwkJCQk4NjFDMkVBNTEzRkI0RkZGMDAw
NjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCAqLywKIAkJCQk4QTgxQkY4NDExRENGRDkw
MDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGltaW5nLmggKi8sCiAJCQkJNTE0Qzc2NjcwQ0U5MjNB
MTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwICovLAogCQkJCTUxNEM3NjY4MENF
OTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8sCkBAIC0xODkwOSw2ICsx
ODkxNCw3IEBACiAJCQkJQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICov
LAogCQkJCTkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8s
CiAJCQkJNjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8sCisJ
CQkJODYxQzJFQTMxM0ZCNEZERDAwMDYyQUJCIC8qIERvY3VtZW50TG9hZFRpbWluZy5jcHAgKi8s
CiAJCQkJOEExMkUzNUMxMUZBMzMyODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oICov
LAogCQkJCTBCOTA1NjE1MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwICovLAogCQkJCTBCOTA1NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaCAqLywKQEAgLTIzOTkxLDYgKzIzOTk3LDcgQEAKIAkJCQlBODE4NUYzRjA5
NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0UyMjdFMDBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFj
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2MUMyRUE0MTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1
bWVudExvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4MUM2QTcxMzgyOEI1RDAw
MTJBNjJBIC8qIERvY3VtZW50TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMDU3RkE1
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ5NDdGRkQxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NjQzLDYgKzI1NjUwLDcgQEAKIAkJCQk1MUFBM0Y2
RjBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRDBDRTU4RjgxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NjFDMkVBNjEzRkI0RkZGMDAw
NjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3
NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBmNTVhMGI1ODZmYzczYmMyYmY0OTBmZWFhYzZjMDhjZmE1MzNlN2M1Li42ZTkwZjVkYTkw
MzYwYTlhMmI4OTFhYTQ4NzMwNjhjYTkzZjNmNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTEwMTQsMTUgKzEwMTQsMTUgQEAgdm9pZCBEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZShSZWFk
eVN0YXRlIHJlYWR5U3RhdGUpCiAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7CiAgICAgY2FzZSBM
b2FkaW5nOgogICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZykKLSAgICAg
ICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZyA9IGN1cnJlbnRUaW1lKCk7CisgICAg
ICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFjdGl2ZToKICAgICAg
ICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlKQotICAgICAgICAgICAgbV9k
b2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAg
ICBtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGxldGU6CiAgICAgICAgIGlm
ICghbV9kb2N1bWVudFRpbWluZy5kb21Db21wbGV0ZSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnRU
aW1pbmcuZG9tQ29tcGxldGUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgbV9kb2N1bWVu
dFRpbWluZy5kb21Db21wbGV0ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKQEAgLTQxOTEsMTAgKzQxOTEsMTAgQEAgdm9pZCBEb2N1bWVu
dDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cigpIHx8IG1fcmVhZHlTdGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsK
ICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpCi0g
ICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgPSBjdXJy
ZW50VGltZSgpOworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVu
dFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRydWUs
IGZhbHNlKSk7CiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVu
dEVuZCkKLSAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQg
PSBjdXJyZW50VGltZSgpOworICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudEVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCiAgICAgaWYgKFJl
ZlB0cjxGcmFtZT4gZiA9IGZyYW1lKCkpIHsKICAgICAgICAgLy8gRnJhbWVMb2FkZXI6OmZpbmlz
aGVkUGFyc2luZygpIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIERvY3VtZW50OjppbXBsaWNpdENsb3Nl
KCkgaWYgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDZiNDVmNzJhOWY3OTE2MmYxZWNlZmVkODI0ZWQwZDQ5
YTFjOGVlOGMuLjc3N2RkZTUwZDE1OTVlNjA0NjYwNTQ3YTRmMjg5NzU4MzY1MzJmNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCkBAIC01MTQsMTEgKzUxNCwyMSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbgogICAg
ICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRh
TGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
ZG91YmxlIG1vbm90b25pY0ZpbmlzaFRpbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKKyAgICBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOworICAgIGlmICghdGltZWxpbmVBZ2VudCAmJiAhcmVz
b3VyY2VBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGZpbmlzaFRpbWUgPSAw
LjA7CisgICAgLy8gRklYTUU6IEV4cG9zZSBhbGwgb2YgdGhlIHRpbWluZyBkZXRhaWxzIHRvIGlu
c3BlY3RvciBhbmQgaGF2ZSBpdCBjYWxjdWxhdGUgZmluaXNoVGltZS4KKyAgICBpZiAobW9ub3Rv
bmljRmluaXNoVGltZSkKKyAgICAgICAgZmluaXNoVGltZSA9IGxvYWRlci0+dGltaW5nKCktPmNv
bnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobW9ub3RvbmljRmluaXNoVGltZSk7CisK
KyAgICBpZiAodGltZWxpbmVBZ2VudCkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNo
TG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAocmVzb3VyY2VBZ2VudCkKICAg
ICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBsb2FkZXIs
IGZpbmlzaFRpbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggZjgwOGVmMTRhNzZhNWM3MWIzMjBhOGNjMDJh
ZTEwMzUyOGRiY2EwYy4uYWMzMzJkOWRjYmM4Mzc1MzlhN2VmMjRmZTQ2OTlkZmJkOGZjZjUyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGUKICAg
ICByZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRp
bWluZykKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JU
aW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdGltaW5nT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicmVx
dWVzdFRpbWUiLCB0aW1pbmcucmVxdWVzdFRpbWUpOworICAgIHRpbWluZ09iamVjdC0+c2V0TnVt
YmVyKCJyZXF1ZXN0VGltZSIsIHRpbWluZy5jb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1l
bnRUaW1lKGxvYWRlci0+dGltaW5nKCksIDApKTsKICAgICB0aW1pbmdPYmplY3QtPnNldE51bWJl
cigicHJveHlTdGFydCIsIHRpbWluZy5wcm94eVN0YXJ0KTsKICAgICB0aW1pbmdPYmplY3QtPnNl
dE51bWJlcigicHJveHlFbmQiLCB0aW1pbmcucHJveHlFbmQpOwogICAgIHRpbWluZ09iamVjdC0+
c2V0TnVtYmVyKCJkbnNTdGFydCIsIHRpbWluZy5kbnNTdGFydCk7CkBAIC0xMzIsNyArMTMyLDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVIKICAgICByZXR1cm4gcmVxdWVzdE9iamVjdDsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
IHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAgICAgcmVzcG9uc2VPYmplY3Qt
PnNldE51bWJlcigiY29ubmVjdGlvbklkIiwgcmVzcG9uc2UuY29ubmVjdGlvbklEKCkpOwogICAg
IHJlc3BvbnNlT2JqZWN0LT5zZXRCb29sZWFuKCJmcm9tRGlza0NhY2hlIiwgcmVzcG9uc2Uud2Fz
Q2FjaGVkKCkpOwogICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAg
ICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1p
bmcoKnJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKSk7CisgICAgICAgIHJlc3BvbnNlT2Jq
ZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5nKCpyZXNwb25zZS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKSwgbG9hZGVyKSk7CiAKICAgICBpZiAocmVzcG9uc2UucmVzb3Vy
Y2VMb2FkSW5mbygpKSB7CiAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRl
cnMiLCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5y
ZXNwb25zZUhlYWRlcnMpKTsKQEAgLTE2MywxMyArMTYzLDEzIEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlCiAgICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGNvbnN0IENhY2hlZFJlc291cmNl
JiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgcmVzb3VyY2VPYmplY3QtPnNldFN0cmluZygidXJsIiwgY2FjaGVkUmVzb3VyY2Uu
dXJsKCkpOwogICAgIHJlc291cmNlT2JqZWN0LT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZVN0cmluZyhjYWNoZWRSZXNvdXJjZSkpOwogICAg
IHJlc291cmNlT2JqZWN0LT5zZXROdW1iZXIoImJvZHlTaXplIiwgY2FjaGVkUmVzb3VyY2UuZW5j
b2RlZFNpemUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25z
ZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25z
ZSgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKCksIGxv
YWRlcik7CiAgICAgaWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAgIHJlc291cmNlT2JqZWN0
LT5zZXRPYmplY3QoInJlc3BvbnNlIiwgcmVzb3VyY2VSZXNwb25zZSk7CiAgICAgcmV0dXJuIHJl
c291cmNlT2JqZWN0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
CiAgICAgZWxzZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpbml0aWF0b3JPYmplY3QgPSBidWls
ZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3Vt
ZW50KCkgOiAwKTsKLSAgICBtX2Zyb250ZW5kLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQs
IG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2Fk
ZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBjYWxs
U3RhY2tWYWx1ZSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9u
c2UpKTsKKyAgICBtX2Zyb250ZW5kLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFn
ZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChs
b2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVx
dWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBjYWxsU3RhY2tW
YWx1ZSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxv
YWRlcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFz
Q2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcikKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHJlcXVlc3RJ
ZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVzcG9uc2UpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291
cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxv
YWRlcik7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSA9IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZTsKICAgICBsb25nIGNhY2hlZFJlc291cmNlU2l6
ZSA9IDA7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAg
IG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCByZXNvdXJjZSk7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0
aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
IDogMCk7CiAKLSAgICBtX2Zyb250ZW5kLT5yZXNvdXJjZUxvYWRlZEZyb21NZW1vcnlDYWNoZShy
ZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJy
ZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2Uo
KnJlc291cmNlKSk7CisgICAgbV9mcm9udGVuZC0+cmVzb3VyY2VMb2FkZWRGcm9tTWVtb3J5Q2Fj
aGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwg
Y3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291
cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZFRpbWluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYxOTk2ZTY1MWFkMTljMjM5YzMwNGFhMTJiYjll
YzZmZGY2OTRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRG9jdW1lbnRMb2FkVGltaW5n
OjpEb2N1bWVudExvYWRUaW1pbmcoKQorICAgIDogbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZSgw
LjApCisgICAgLCBtX25hdmlnYXRpb25TdGFydCgwLjApCisgICAgLCBtX3VubG9hZEV2ZW50U3Rh
cnQoMC4wKQorICAgICwgbV91bmxvYWRFdmVudEVuZCgwLjApCisgICAgLCBtX3JlZGlyZWN0U3Rh
cnQoMC4wKQorICAgICwgbV9yZWRpcmVjdEVuZCgwLjApCisgICAgLCBtX3JlZGlyZWN0Q291bnQo
MCkKKyAgICAsIG1fZmV0Y2hTdGFydCgwLjApCisgICAgLCBtX3Jlc3BvbnNlRW5kKDAuMCkKKyAg
ICAsIG1fbG9hZEV2ZW50U3RhcnQoMC4wKQorICAgICwgbV9sb2FkRXZlbnRFbmQoMC4wKQorICAg
ICwgbV9oYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKQorICAgICwgbV9oYXNTYW1lT3JpZ2lu
QXNQcmV2aW91c0RvY3VtZW50KGZhbHNlKQorICAgICwgbV9yb290VGltaW5nKDApCit7Cit9CisK
K3ZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjpzZXROYXZpZ2F0aW9uU3RhcnQoRnJhbWUqIGZyYW1l
KQoreworICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uU3RhcnQgJiYgIW1fbmF2aWdhdGlvblN0YXJ0
V2FsbFRpbWUpOworICAgIG1fbmF2aWdhdGlvblN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CisgICAgbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIERvY3VtZW50KiByb290RG9jdW1lbnQgPSBmcmFt
ZS0+dHJlZSgpLT50b3AodHJ1ZSktPmRvY3VtZW50KCk7CisgICAgaWYgKHJvb3REb2N1bWVudCAm
JiB0aGlzICE9IHJvb3REb2N1bWVudC0+bG9hZGVyKCktPnRpbWluZygpKQorICAgICAgICBtX3Jv
b3RUaW1pbmcgPSByb290RG9jdW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKTsKK30KKwordm9pZCBE
b2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJs
LCBjb25zdCBLVVJMJiByZWRpcmVjdGVkVXJsKQoreworICAgIG1fcmVkaXJlY3RDb3VudCsrOwor
ICAgIGlmICghbV9yZWRpcmVjdFN0YXJ0KQorICAgICAgICBtX3JlZGlyZWN0U3RhcnQgPSBtX2Zl
dGNoU3RhcnQ7CisgICAgbV9yZWRpcmVjdEVuZCA9IG1fZmV0Y2hTdGFydCA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOworICAgIC8vIENoZWNrIGlmIHRoZSByZWRpcmVjdGVkIHVybCBp
cyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgcmVkaXJlY3RpbmcgdXJsJ3MgdGltaW5nIGluZm9ybWF0
aW9uLgorICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVkaXJlY3RlZFNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdGVkVXJsKTsKKyAgICBtX2hhc0Nyb3Nz
T3JpZ2luUmVkaXJlY3QgPSAhcmVkaXJlY3RlZFNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KHJl
ZGlyZWN0aW5nVXJsKTsKK30KKworZG91YmxlIERvY3VtZW50TG9hZFRpbWluZzo6Y29udmVydE1v
bm90b25pY1RpbWVUb0RvY3VtZW50VGltZShkb3VibGUgbW9ub3RvbmljVGltZSkgY29uc3QKK3sK
KyAgICBpZiAoIW1vbm90b25pY1RpbWUpCisgICAgICAgIHJldHVybiAwLjA7CisgICAgaWYgKG1f
cm9vdFRpbWluZykKKyAgICAgICAgcmV0dXJuIG1fcm9vdFRpbWluZy0+Y29udmVydE1vbm90b25p
Y1RpbWVUb0RvY3VtZW50VGltZShtb25vdG9uaWNUaW1lKTsKKyAgICByZXR1cm4gbV9uYXZpZ2F0
aW9uU3RhcnRXYWxsVGltZSArIG1vbm90b25pY1RpbWUgLSBtX25hdmlnYXRpb25TdGFydDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZFRpbWluZy5oCmluZGV4IGQ0YWE3ZDBjOTVlYTg5N2FhYTg5MTA4YTdlZjhiNmFkODkwOGVh
N2YuLjM0YjY3Y2EwYjMxMzFiZWNlNmI5ZGQ1OTQ5MTM1MWFlMGI0MWZmNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKQEAgLTI2LDM5ICsyNiw2MiBAQAog
I2lmbmRlZiBEb2N1bWVudExvYWRUaW1pbmdfaAogI2RlZmluZSBEb2N1bWVudExvYWRUaW1pbmdf
aAogCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RydWN0IERvY3VtZW50TG9hZFRpbWluZyB7Ci0gICAgRG9jdW1lbnRMb2FkVGltaW5nKCkK
LSAgICAgICAgOiBuYXZpZ2F0aW9uU3RhcnQoMC4wKQotICAgICAgICAsIHVubG9hZEV2ZW50U3Rh
cnQoMC4wKQotICAgICAgICAsIHVubG9hZEV2ZW50RW5kKDAuMCkKLSAgICAgICAgLCByZWRpcmVj
dFN0YXJ0KDAuMCkKLSAgICAgICAgLCByZWRpcmVjdEVuZCgwLjApCi0gICAgICAgICwgcmVkaXJl
Y3RDb3VudCgwKQotICAgICAgICAsIGZldGNoU3RhcnQoMC4wKQotICAgICAgICAsIHJlc3BvbnNl
RW5kKDAuMCkKLSAgICAgICAgLCBsb2FkRXZlbnRTdGFydCgwLjApCi0gICAgICAgICwgbG9hZEV2
ZW50RW5kKDAuMCkKLSAgICAgICAgLCBoYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKQotICAg
ICAgICAsIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCi0gICAgewotICAg
IH0KK2NsYXNzIEZyYW1lOworY2xhc3MgS1VSTDsKKworY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5n
IHsKK3B1YmxpYzoKKyAgICBEb2N1bWVudExvYWRUaW1pbmcoKTsKKworICAgIHZvaWQgc2V0TmF2
aWdhdGlvblN0YXJ0KEZyYW1lKik7CisgICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBLVVJMJiBy
ZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVybCk7CisgICAgZG91YmxlIGNv
bnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUpIGNv
bnN0OworCisgICAgdm9pZCBzZXRVbmxvYWRFdmVudFN0YXJ0KCkgeyBtX3VubG9hZEV2ZW50U3Rh
cnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorICAgIHZvaWQgc2V0VW5sb2Fk
RXZlbnRFbmQoKSB7IG1fdW5sb2FkRXZlbnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsgfQorICAgIHZvaWQgc2V0UmVkaXJlY3RTdGFydCgpIHsgbV9yZWRpcmVjdFN0YXJ0ID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIHNldFJlZGlyZWN0RW5k
KCkgeyBtX3JlZGlyZWN0RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAg
ICB2b2lkIHNldEZldGNoU3RhcnQoKSB7IG1fZmV0Y2hTdGFydCA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBzZXRSZXNwb25zZUVuZChkb3VibGUgbW9ub3Rvbmlj
VGltZSkgeyBtX3Jlc3BvbnNlRW5kID0gbW9ub3RvbmljVGltZTsgfQorICAgIHZvaWQgc2V0TG9h
ZEV2ZW50U3RhcnQoKSB7IG1fbG9hZEV2ZW50U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsgfQorICAgIHZvaWQgc2V0TG9hZEV2ZW50RW5kKCkgeyBtX2xvYWRFdmVudEVuZCA9
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisKKyAgICB2b2lkIHNldEhhc1NhbWVP
cmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2hhc1NhbWVPcmlnaW5Bc1By
ZXZpb3VzRG9jdW1lbnQgPSB2YWx1ZTsgfQorCisgICAgZG91YmxlIG5hdmlnYXRpb25TdGFydCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9uYXZp
Z2F0aW9uU3RhcnQpOyB9CisgICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQoKSBjb25zdCB7IHJl
dHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fdW5sb2FkRXZlbnRTdGFy
dCk7IH0KKyAgICBkb3VibGUgdW5sb2FkRXZlbnRFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0
TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fdW5sb2FkRXZlbnRFbmQpOyB9CisgICAgZG91
YmxlIHJlZGlyZWN0U3RhcnQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRv
RG9jdW1lbnRUaW1lKG1fcmVkaXJlY3RTdGFydCk7IH0KKyAgICBkb3VibGUgcmVkaXJlY3RFbmQo
KSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVk
aXJlY3RFbmQpOyB9CisgICAgc2hvcnQgcmVkaXJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVkaXJlY3RDb3VudDsgfQorICAgIGRvdWJsZSBmZXRjaFN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX2ZldGNoU3RhcnQpOyB9CisgICAg
ZG91YmxlIHJlc3BvbnNlRW5kKCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVU
b0RvY3VtZW50VGltZShtX3Jlc3BvbnNlRW5kKTsgfQorICAgIGRvdWJsZSBsb2FkRXZlbnRTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9s
b2FkRXZlbnRTdGFydCk7IH0KKyAgICBkb3VibGUgbG9hZEV2ZW50RW5kKCkgY29uc3QgeyByZXR1
cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX2xvYWRFdmVudEVuZCk7IH0K
KyAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0Ny
b3NzT3JpZ2luUmVkaXJlY3Q7IH0KKyAgICBib29sIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQ7
IH0KIAotICAgIGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQ7Ci0gICAgZG91YmxlIHVubG9hZEV2ZW50
U3RhcnQ7Ci0gICAgZG91YmxlIHVubG9hZEV2ZW50RW5kOwotICAgIGRvdWJsZSByZWRpcmVjdFN0
YXJ0OwotICAgIGRvdWJsZSByZWRpcmVjdEVuZDsKLSAgICBzaG9ydCByZWRpcmVjdENvdW50Owot
ICAgIGRvdWJsZSBmZXRjaFN0YXJ0OwotICAgIGRvdWJsZSByZXNwb25zZUVuZDsKLSAgICBkb3Vi
bGUgbG9hZEV2ZW50U3RhcnQ7Ci0gICAgZG91YmxlIGxvYWRFdmVudEVuZDsKLSAgICBib29sIGhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3Q7Ci0gICAgYm9vbCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0Rv
Y3VtZW50OworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9uYXZpZ2F0aW9uU3RhcnRXYWxsVGltZTsK
KyAgICBkb3VibGUgbV9uYXZpZ2F0aW9uU3RhcnQ7CisgICAgZG91YmxlIG1fdW5sb2FkRXZlbnRT
dGFydDsKKyAgICBkb3VibGUgbV91bmxvYWRFdmVudEVuZDsKKyAgICBkb3VibGUgbV9yZWRpcmVj
dFN0YXJ0OworICAgIGRvdWJsZSBtX3JlZGlyZWN0RW5kOworICAgIHNob3J0IG1fcmVkaXJlY3RD
b3VudDsKKyAgICBkb3VibGUgbV9mZXRjaFN0YXJ0OworICAgIGRvdWJsZSBtX3Jlc3BvbnNlRW5k
OworICAgIGRvdWJsZSBtX2xvYWRFdmVudFN0YXJ0OworICAgIGRvdWJsZSBtX2xvYWRFdmVudEVu
ZDsKKyAgICBib29sIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKKyAgICBib29sIG1faGFzU2Ft
ZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudDsKKyAgICBEb2N1bWVudExvYWRUaW1pbmcqIG1fcm9v
dFRpbWluZzsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA5ZGFjYWQ1NDE0MzhjZDZjZTVmZjNj
MWU1ZGRkZjI4M2Y1YWJjYjMzLi5kNzdkN2JjYWVhNDA1ZDczNzQyYmQ5YmNiZjcwMjllYmFkMTIw
NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4NCwxMCArMzg0
LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVu
bG9hZEV2ZW50UG9saWN5KQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGltZSBpbnRvIGZy
ZWVkIG1lbW9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRl
cj4gZG9jdW1lbnRMb2FkZXIgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IFVu
bG9hZERpc21pc3NhbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRl
ciAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVudFN0YXJ0ICYmICFkb2N1
bWVudExvYWRlci0+dGltaW5nKCktPnVubG9hZEV2ZW50RW5kKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgIWRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+
dW5sb2FkRXZlbnRTdGFydCgpICYmICFkb2N1bWVudExvYWRlci0+dGltaW5nKCktPnVubG9hZEV2
ZW50RW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRUaW1p
bmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaFRpbWVkRXZlbnQo
dW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kb2N1bWVudCgpLCAmdGltaW5nLT51
bmxvYWRFdmVudFN0YXJ0LCAmdGltaW5nLT51bmxvYWRFdmVudEVuZCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWluZy0+c2V0VW5sb2FkRXZlbnRTdGFydCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2
ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5zZXRVbmxvYWRFdmVudEVuZCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUt
PmRvbVdpbmRvdygpLT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTc0
OSw3ICsxNzUxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICBpZiAocGRsKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBkZXN0aW5hdGlvbiBwYWdl
IGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBwcmV2aW91cyBwYWdlJ3MgdGltaW5nIGluZm9ybWF0
aW9uLgogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShwZGwtPnJlcXVlc3QoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9j
dW1lbnRMb2FkZXItPnRpbWluZygpLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50ID0g
c2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QobV9wcmV2aW91c1VybCk7CisgICAgICAgIG1fZG9j
dW1lbnRMb2FkZXItPnRpbWluZygpLT5zZXRIYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50
KHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG1fcHJldmlvdXNVcmwpKTsKICAgICB9CiAKICAg
ICAvLyBDYWxsIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZCgpIGhlcmUgc28gdGhh
dCB0aGUgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBpcyBub3RpZmllZCB0aGF0IHRoZSByZWRpcmVjdCdz
CkBAIC0yMzA0LDggKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKCkKICAgICAgICAgbm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdl
dCgpLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpKTsKICAg
ICB9CiAKLSAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCkt
Pm5hdmlnYXRpb25TdGFydCk7Ci0gICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1p
bmcoKS0+bmF2aWdhdGlvblN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT5zZXROYXZpZ2F0aW9uU3RhcnQoZnJhbWUoKSk7CiAK
ICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJl
c291cmNlKGlkZW50aWZpZXIpKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIt
PnVwZGF0ZUxvYWRpbmcoKTsKQEAgLTI5NDUsMTEgKzI5NDYsMTEgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKICAgICBwcm92aXNpb25hbExv
YWRlci0+cHJlcGFyZUZvckxvYWRTdGFydCgpOwogCiAgICAgbV9sb2FkaW5nRnJvbUNhY2hlZFBh
Z2UgPSB0cnVlOwotICAgIAorCiAgICAgLy8gU2hvdWxkIGhhdmUgdGltaW5nIGRhdGEgZnJvbSBw
cmV2aW91cyB0aW1lKHMpIHRoZSBwYWdlIHdhcyBzaG93bi4KLSAgICBBU1NFUlQocHJvdmlzaW9u
YWxMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOworICAgIEFTU0VSVChwcm92aXNp
b25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKICAgICBwcm92aXNpb25h
bExvYWRlci0+cmVzZXRUaW1pbmcoKTsKLSAgICBwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCkt
Pm5hdmlnYXRpb25TdGFydCA9IGN1cnJlbnRUaW1lKCk7ICAgIAorICAgIHByb3Zpc2lvbmFsTG9h
ZGVyLT50aW1pbmcoKS0+c2V0TmF2aWdhdGlvblN0YXJ0KGZyYW1lKCkpOwogCiAgICAgcHJvdmlz
aW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0cnVlKTsKICAgICBjb21taXRQcm92aXNpb25hbExv
YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYTFmOTkxOGViYmRlNTY2ODUzZTc1MTZjYmZmZjg0NjI5MTBjZDQ4ZC4uNTVjODYxYzg0YWI4
NjljZTVkZDYzODhkNmEyZWNiZTcyYTY5MmQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZQogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIGVs
c2UgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgIC8vIEEgcmVkaXJl
Y3QgcmVzdWx0ZWQgaW4gbG9hZGluZyBzdWJzdGl0dXRlIGRhdGEuCi0gICAgICAgIEFTU0VSVChk
b2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3VudCk7CisgICAgICAgIEFTU0VS
VChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3VudCgpKTsKICAgICAgICAg
aGFuZGxlKCktPmNhbmNlbCgpOwogICAgICAgICBoYW5kbGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7
CiAgICAgfQpAQCAtMTgwLDIwICsxODAsOSBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzbwogICAg
IC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2
MjE2LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKLSAg
ICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3RhcnQpOworICAgIEFT
U0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKICAgICBpZiAo
IXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5n
KiBkb2N1bWVudExvYWRUaW1pbmcgPSBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKTsKLQotICAg
ICAgICAvLyBDaGVjayBpZiB0aGUgcmVkaXJlY3RlZCB1cmwgaXMgYWxsb3dlZCB0byBhY2Nlc3Mg
dGhlIHJlZGlyZWN0aW5nIHVybCdzIHRpbWluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
bmV3UmVxdWVzdC51cmwoKSk7Ci0gICAgICAgIGlmICghc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVl
c3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSkpCi0gICAgICAgICAgICBkb2N1bWVudExvYWRUaW1p
bmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPSB0cnVlOwotCi0gICAgICAgIGRvY3VtZW50TG9h
ZFRpbWluZy0+cmVkaXJlY3RDb3VudCsrOwotICAgICAgICBpZiAoIWRvY3VtZW50TG9hZFRpbWlu
Zy0+cmVkaXJlY3RTdGFydCkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJl
Y3RTdGFydCA9IGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydDsKLSAgICAgICAgZG9jdW1l
bnRMb2FkVGltaW5nLT5yZWRpcmVjdEVuZCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIGRvY3Vt
ZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydCA9IGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RF
bmQ7CisgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRpcmVjdChyZWRp
cmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKICAgICB9CiAKICAgICAvLyBV
cGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBz
dWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKQEAgLTQ1OSw3ICs0NDgsNyBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwg
bG9uZyBsb25nCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBv
ZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCh0aGlzKTsKIAotICAgIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CiAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCwgYWxsQXRPbmNlKTsKIH0KQEAgLTQ3MSw3ICs0NjAsNyBAQCB2
b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGlt
ZSkKICNpZiAhVVNFKENGKQogICAgIEFTU0VSVChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGZy
YW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnVybCgpKSB8fCAhZGVmZXJzTG9h
ZGluZygpKTsKICNlbmRpZgotICAgIAorCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2lu
ZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0CiAg
ICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VM
b2FkZXI+IHByb3RlY3QodGhpcyk7CkBAIC00ODAsMTEgKzQ2OSwxMCBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICAgICBSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IGRsID0gZG9jdW1lbnRMb2FkZXIoKTsKICNlbmRpZgogCi0gICAg
QVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVzcG9uc2VFbmQpOwotICAgIGRv
Y3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCA9IGZpbmlzaFRpbWUgPyBmaW5p
c2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNl
aXZlZCA6IGN1cnJlbnRUaW1lKCkpOworICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5z
ZXRSZXNwb25zZUVuZChmaW5pc2hUaW1lID8gZmluaXNoVGltZSA6IChtX3RpbWVPZkxhc3REYXRh
UmVjZWl2ZWQgPyBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgOiBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKSkpOwogICAgIGZyYW1lTG9hZGVyKCktPmZpbmlzaGVkTG9hZGluZygpOwogICAg
IFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRpbWUpOwotICAgIAorCiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICBkbC0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTU5
NCw5ICs1ODIsOSBAQCBib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdQogCiAgICAgbV9zdWJzdGl0dXRl
RGF0YSA9IHN1YnN0aXR1dGVEYXRhOwogCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRp
bWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIoKS0+
dGltaW5nKCktPmZldGNoU3RhcnQpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5m
ZXRjaFN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+
dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVy
KCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWlu
ZygpLT5zZXRGZXRjaFN0YXJ0KCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qocik7CiAK
ICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IGI4NWYxZWFhMzJiMTY0OTdmNDRkYTNjZWVjZTI2ZGY0NjA3N2FjYzAuLmQ3
OGQ3NzA2MmZkODkxZDM1Mjg5ODZiNTRjMmVhMWFiNTllZDdjODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTE1NjQsMTIgKzE1NjQsMTQgQEAgYm9vbCBET01XaW5kb3c6OnJlbW92
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXIKIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CiAgICAgUmVmUHRyPEV2
ZW50PiBsb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKLSAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpbWlu
ZygpLT5sb2FkRXZlbnRTdGFydCkgeworICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+dGltaW5nKCktPmxvYWRFdmVudFN0YXJ0KCkpIHsKICAgICAgICAgLy8gVGhlIERvY3Vt
ZW50TG9hZGVyIChhbmQgdGh1cyBpdHMgRG9jdW1lbnRMb2FkVGltaW5nKSBtaWdodCBnZXQgZGVz
dHJveWVkIHdoaWxlIGRpc3BhdGNoaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCwgc28gcHJvdGVj
dCBpdCB0byBwcmV2ZW50IHdyaXRpbmcgdGhlIGVuZCB0aW1lIGludG8gZnJlZWQgbWVtb3J5Lgog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CiAgICAgICAgIERvY3VtZW50TG9hZFRpbWluZyog
dGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWluZygpOwotICAgICAgICBkaXNwYXRjaFRpbWVk
RXZlbnQobG9hZEV2ZW50LCBkb2N1bWVudCgpLCAmdGltaW5nLT5sb2FkRXZlbnRTdGFydCwgJnRp
bWluZy0+bG9hZEV2ZW50RW5kKTsKKyAgICAgICAgdGltaW5nLT5zZXRMb2FkRXZlbnRTdGFydCgp
OworICAgICAgICBkaXNwYXRjaEV2ZW50KGxvYWRFdmVudCwgZG9jdW1lbnQoKSk7CisgICAgICAg
IHRpbWluZy0+c2V0TG9hZEV2ZW50RW5kKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRpc3BhdGNo
RXZlbnQobG9hZEV2ZW50LCBkb2N1bWVudCgpKTsKIApAQCAtMTYwMSwxNSArMTYwMyw2IEBAIGJv
b2wgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBET01X
aW5kb3c6OmRpc3BhdGNoVGltZWRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRG9jdW1l
bnQqIHRhcmdldCwgZG91YmxlKiBzdGFydFRpbWUsIGRvdWJsZSogZW5kVGltZSkKLXsKLSAgICBB
U1NFUlQoc3RhcnRUaW1lKTsKLSAgICBBU1NFUlQoZW5kVGltZSk7Ci0gICAgKnN0YXJ0VGltZSA9
IGN1cnJlbnRUaW1lKCk7Ci0gICAgZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTsKLSAgICAq
ZW5kVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci19Ci0KIHZvaWQgRE9NV2luZG93OjpyZW1vdmVBbGxF
dmVudExpc3RlbmVycygpCiB7CiAgICAgRXZlbnRUYXJnZXQ6OnJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFkODA5YTlmMDY2ZmMyOGY1YWVl
YmU4NzFjZTYwZGM4YTg1YWZkLi45MmVkM2Y2YTIxYTA1NzljMWJjZWFhMzhlNzBiMjVmYmRmMGY4
NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI2NCw3ICsyNjQsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50Owog
ICAgICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBh
c3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFRhcmdldCk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hM
b2FkRXZlbnQoKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaFRpbWVkRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIERvY3VtZW50KiB0YXJnZXQsIGRvdWJsZSogc3RhcnRUaW1lLCBkb3VibGUq
IGVuZFRpbWUpOwogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJv
cnQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJlZm9yZXVubG9h
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKaW5k
ZXggYTQ2NjM5YWE4OTU5NDhmMzBhMGFlYzI2MjYxNzUwMWVhZWFkYmZjOC4uNjYzZTk0MmExYmJj
YjMwNmIzNTFmYjI2OTJlNDdiMjg1MGUzZDJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcApAQCAtODQsMTAgKzg0LDEwIEBAIHVuc2lnbmVkIHNo
b3J0IFBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6cmVkaXJlY3RDb3VudCgpIGNvbnN0CiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiB0aW1pbmcgPSBsb2FkZXItPnRp
bWluZygpOwotICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAgaWYg
KHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0aW1pbmctPnJlZGlyZWN0Q291bnQ7CisgICAgcmV0dXJuIHRpbWluZy0+cmVk
aXJlY3RDb3VudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IGZmMjUzNTQyZGM0YjJhMzQ5OWM5ZDY2
OWQ3NjFiMmU1MWM3ZTE2Y2IuLjIyMWZhZDNkNDg0MDBkNzg5MzA2ZjRjZjczNmQ1MmQ2OTc4YjQz
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC01MCwz
MCArNTAsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHRvSW50ZWdlck1pbGxpc2Vjb25k
cyhkb3VibGUgc2Vjb25kcykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihzZWNvbmRzICogMTAwMC4wKTsKIH0KIAotc3RhdGljIGRvdWJsZSBnZXRQb3NzaWJseVNr
ZXdlZFRpbWVJbktub3duUmFuZ2UoZG91YmxlIHNrZXdlZFRpbWUsIGRvdWJsZSBsb3dlckJvdW5k
LCBkb3VibGUgdXBwZXJCb3VuZCkKLXsKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAvLyBU
aGUgY2hyb21pdW0gcG9ydCdzIGN1cnJlbnRUaW1lKCkgaW1wbGVtZW50YXRpb24gb25seSBzeW5j
cyB3aXRoIHRoZQotICAgIC8vIHN5c3RlbSBjbG9jayBldmVyeSA2MCBzZWNvbmRzLiBTbyBpdCBp
cyBwb3NzaWJsZSBmb3IgdGltaW5nIG1hcmtzCi0gICAgLy8gY29sbGVjdGVkIGluIGRpZmZlcmVu
dCB0aHJlYWRzIG9yIHByb2Nlc3NlcyB0byBoYXZlIGEgc21hbGwgc2tldy4KLSAgICAvLyBGSVhN
RTogSXQgbWF5IGJlIHBvc3NpYmxlIHRvIGFkZCBhIGN1cnJlbnRUaW1lRnJvbVN5c3RlbVRpbWUo
KSBtZXRob2QKLSAgICAvLyB0aGF0IGVsaW1pbmF0ZXMgdGhlIHNrZXcuCi0gICAgaWYgKHNrZXdl
ZFRpbWUgPD0gbG93ZXJCb3VuZCkKLSAgICAgICAgcmV0dXJuIGxvd2VyQm91bmQ7Ci0KLSAgICBp
ZiAodXBwZXJCb3VuZCA8PSAwLjApCi0gICAgICAgIHVwcGVyQm91bmQgPSBjdXJyZW50VGltZSgp
OwotCi0gICAgaWYgKHNrZXdlZFRpbWUgPj0gdXBwZXJCb3VuZCkKLSAgICAgICAgcmV0dXJuIHVw
cGVyQm91bmQ7Ci0jZWxzZQotICAgIEFTU0VSVF9VTlVTRUQobG93ZXJCb3VuZCwgc2tld2VkVGlt
ZSA+PSBsb3dlckJvdW5kKTsKLSAgICBBU1NFUlRfVU5VU0VEKHVwcGVyQm91bmQsIHNrZXdlZFRp
bWUgPD0gdXBwZXJCb3VuZCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBza2V3ZWRUaW1lOwotfQot
CiBQZXJmb3JtYW5jZVRpbWluZzo6UGVyZm9ybWFuY2VUaW1pbmcoRnJhbWUqIGZyYW1lKQogICAg
IDogbV9mcmFtZShmcmFtZSkKIHsKQEAgLTk1LDcgKzcxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmICghdGlt
aW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNl
Y29uZHModGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9u
ZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0CkBAIC0xMDQsMTAg
KzgwLDEwIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZl
bnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8fCAhdGltaW5nLT5oYXNTYW1l
T3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KQorICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2lu
UmVkaXJlY3QoKSB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0
aW1pbmctPnVubG9hZEV2ZW50U3RhcnQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT51bmxvYWRFdmVudFN0YXJ0KCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKCkgY29uc3QKQEAgLTExNiwxMCArOTIs
MTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudEVu
ZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYg
KHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2lu
QXNQcmV2aW91c0RvY3VtZW50KQorICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3QoKSB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmct
PnVubG9hZEV2ZW50RW5kKTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+dW5sb2FkRXZlbnRFbmQoKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6cmVkaXJlY3RTdGFydCgpIGNvbnN0CkBAIC0xMjgsMTAgKzEwNCwxMCBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQoKSBjb25zdAog
ICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmctPmhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRp
cmVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNl
Y29uZHModGltaW5nLT5yZWRpcmVjdFN0YXJ0KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlz
ZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0CkBAIC0xNDAsMTAgKzExNiwx
MCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0RW5kKCkg
Y29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAodGlt
aW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KQorICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdEVuZCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0KCkgY29uc3QKQEAgLTE1Miw3ICsxMjgs
NyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZldGNoU3RhcnQoKSBj
b25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5mZXRjaFN0YXJ0KTsKKyAgICByZXR1cm4gdG9J
bnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hTdGFydCgpKTsKIH0KIAogdW5zaWduZWQg
bG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CkBA
IC0yNjQsOCArMjQwLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNwb25zZVN0YXJ0KCkgY29uc3QKICAgICAvLyBGSVhNRTogUmVzcG9uc2Ugc3RhcnQgbmVlZHMg
dG8gYmUgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IHJlY2VpdmVkIGJ5dGUuCiAgICAgLy8gSG93ZXZl
ciwgdGhlIFJlc291cmNlTG9hZFRpbWluZyBBUEkgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgdGhl
IHRpbWUKICAgICAvLyB0aGUgbGFzdCBoZWFkZXIgYnl0ZSB3YXMgcmVjZWl2ZWQuIEZvciBtYW55
IHJlc3BvbnNlcyB3aXRoIHJlYXNvbmFibGUKLSAgICAvLyBzaXplZCBjb29raWVzLCB0aGUgSFRU
UCBoZWFkZXJzIGZpdCBpbnRvIGEgc2luZ2xlIHBhY2tldCBzbyB0aGlzIHRpbWUKLSAgICAvLyBp
cyBiYXNpY2FsbHkgZXF1aXZhbGVudC4gQnV0IGZvciBzb21lIHJlc3BvbnNlcywgcGFydGljdWxh
cmx5IHRob3NlIHdpdGgKKyAgICAvLyBzaXplZCBjb29raWVzLCB0aGUgSFRUUCBoZWFkZXJzIGZp
dCBpbnRvIGEgc2luZ2xlIHBhY2tldCBzbyB0aGlzIHRpbWUgLy8gaXMgYmFzaWNhbGx5IGVxdWl2
YWxlbnQuIEJ1dCBmb3Igc29tZSByZXNwb25zZXMsIHBhcnRpY3VsYXJseSB0aG9zZSB3aXRoCiAg
ICAgLy8gaGVhZGVycyBsYXJnZXIgdGhhbiBhIHNpbmdsZSBwYWNrZXQsIHRoaXMgdGltZSB3aWxs
IGJlIHRvbyBsYXRlLgogICAgIEFTU0VSVCh0aW1pbmctPnJlY2VpdmVIZWFkZXJzRW5kID49IDAp
OwogICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy0+
cmVjZWl2ZUhlYWRlcnNFbmQpOwpAQCAtMjc3LDcgKzI1Miw3IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5n
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5yZXNwb25zZUVuZCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0
aW1pbmctPnJlc3BvbnNlRW5kKCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUxvYWRpbmcoKSBjb25zdApAQCAtMjg2LDcgKzI2MSw3IEBAIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZygpIGNvbnN0CiAgICAgaWYg
KCF0aW1pbmcpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gdG9J
bnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tTG9hZGluZyk7CisgICAgcmV0dXJuIG1vbm90
b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Mb2FkaW5nKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21JbnRlcmFjdGl2ZSgpIGNv
bnN0CkBAIC0yOTUsNyArMjcwLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpkb21JbnRlcmFjdGl2ZSgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUlu
dGVyYWN0aXZlKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25k
cyh0aW1pbmctPmRvbUludGVyYWN0aXZlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCgpIGNvbnN0CkBAIC0zMDQs
NyArMjc5LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250
ZW50TG9hZGVkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNv
bnRlbnRMb2FkZWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdl
ck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZl
bnRFbmQoKSBjb25zdApAQCAtMzEzLDcgKzI4OCw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJm
b3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKCkgY29uc3QKICAgICBpZiAo
IXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlz
ZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKTsKKyAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRF
dmVudEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9t
Q29tcGxldGUoKSBjb25zdApAQCAtMzIyLDcgKzI5Nyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29tcGxldGUoKSBjb25zdAogICAgIGlmICghdGltaW5nKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGlt
aW5nLT5kb21Db21wbGV0ZSk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxs
aXNlY29uZHModGltaW5nLT5kb21Db21wbGV0ZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMzMxLDcgKzMwNiw3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQo
KSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZlbnRTdGFydCk7CisgICAgcmV0
dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRFdmVudFN0YXJ0KCkpOwogfQog
CiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCgpIGNv
bnN0CkBAIC0zNDAsNyArMzE1LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZl
bnRFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZl
bnRFbmQoKSk7CiB9CiAKIERvY3VtZW50TG9hZGVyKiBQZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1l
bnRMb2FkZXIoKSBjb25zdApAQCAtMzgxLDIyICszNTYsMjAgQEAgUmVzb3VyY2VMb2FkVGltaW5n
KiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwogfQogCi11bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUoaW50IHJlbGF0aXZlU2Vjb25kcykgY29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQg
cmVsYXRpdmVNaWxsaXNlY29uZHMpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbGF0aXZlU2Vjb25k
cyA+PSAwKTsKKyAgICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29uZHMgPj0gMCk7CiAgICAgUmVz
b3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZVRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwog
ICAgIEFTU0VSVChyZXNvdXJjZVRpbWluZyk7Ci0gICAgRG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1
bWVudFRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOwotICAgIEFTU0VSVChkb2N1bWVudFRp
bWluZyk7Ci0KLSAgICAvLyBUaGUgUmVzb3VyY2VMb2FkVGltaW5nIEFQSSdzIHJlcXVlc3RUaW1l
IGlzIHRoZSBiYXNlIHRpbWUgdG8gd2hpY2ggYWxsCi0gICAgLy8gb3RoZXIgbWFya3MgYXJlIHJl
bGF0aXZlLiBTbyB0byBnZXQgYW4gYWJzb2x1dGUgdGltZSwgd2UgbXVzdCBhZGQgaXQgdG8KLSAg
ICAvLyB0aGUgcmVsYXRpdmUgbWFya3MuCi0gICAgLy8KLSAgICAvLyBTaW5jZSBSZXNvdXJjZUxv
YWRUaW1pbmdzIGNhbWUgZnJvbSB0aGUgbmV0d29yayBwbGF0Zm9ybSBsYXllciwgd2UgbXVzdAot
ICAgIC8vIGNoZWNrIHRoZW0gZm9yIHNrZXcgYmVjYXVzZSB0aGV5IG1heSBiZSBmcm9tIGFub3Ro
ZXIgdGhyZWFkL3Byb2Nlc3MuCi0gICAgZG91YmxlIGJhc2VUaW1lID0gZ2V0UG9zc2libHlTa2V3
ZWRUaW1lSW5Lbm93blJhbmdlKHJlc291cmNlVGltaW5nLT5yZXF1ZXN0VGltZSwgZG9jdW1lbnRU
aW1pbmctPmZldGNoU3RhcnQsIGRvY3VtZW50VGltaW5nLT5yZXNwb25zZUVuZCk7Ci0gICAgcmV0
dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhiYXNlVGltZSkgKyByZWxhdGl2ZVNlY29uZHM7Cisg
ICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhyZXNvdXJjZVRpbWluZy0+Y29udmVydFJl
c291cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShkb2N1bWVudExvYWRUaW1pbmcoKSwgcmVsYXRp
dmVNaWxsaXNlY29uZHMpKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSBtb25vdG9uaWNT
ZWNvbmRzKSBjb25zdAoreworICAgIEFTU0VSVChtb25vdG9uaWNTZWNvbmRzID49IDApOworICAg
IGNvbnN0IERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkVGltaW5nKCk7
CisgICAgQVNTRVJUKHRpbWluZyk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0
aW1pbmctPmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobW9ub3RvbmljU2Vjb25k
cykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmgKaW5kZXggMGMzNzM4MzI4MGEwMzIzZDcyNmU5YTk3ODdjYTMwYzFlMzgz
OTA3MS4uNDhkNTk4Y2FhNDY4ZDlkZDE3NWNmYWFkNTc2ZGMzMjM2NmZmZmQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaApAQCAtODEsNiArODEsNyBAQCBwcml2YXRl
OgogICAgIERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3Q7CiAg
ICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQp
IGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWls
bGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWlu
Zy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWQ5ZGE0OGEzY2E1ZjEzMDUwYWNjMDhmMjE5YWZhODU3NjE1NjNj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VMb2FkVGltaW5nLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitkb3VibGUgUmVzb3VyY2VMb2FkVGltaW5nOjpj
b252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGNvbnN0IERvY3VtZW50TG9hZFRp
bWluZyogZG9jdW1lbnRUaW1pbmcsIGludCBkZWx0YU1pbGxpc2Vjb25kcykgY29uc3QKK3sKKyAg
ICBpZiAoIWRvY3VtZW50VGltaW5nKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0dXJu
IGRvY3VtZW50VGltaW5nLT5jb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKHJlcXVl
c3RUaW1lICsgZGVsdGFNaWxsaXNlY29uZHMgLyAxMDAwLjApOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAppbmRl
eCAyNjlmYWQwMDI1ZDlhYWQ0MWU1MWI3MmFjYWZhYWFiNTZkZDIzMjVmLi45NGM1NWQ5YmE0YjAx
ODA5NjI1ZDFiNjlhNDc4ZDA1MDZiYjFlMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKQEAgLTMyLDYgKzMyLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudExvYWRUaW1pbmc7CisKIGNs
YXNzIFJlc291cmNlTG9hZFRpbWluZyA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZFRp
bWluZz4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWlu
Zz4gY3JlYXRlKCkKQEAgLTc4LDggKzgwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAotICAgIGRvdWJsZSByZXF1ZXN0VGltZTsKLSAgICBp
bnQgcHJveHlTdGFydDsKKyAgICAvLyBXZSB3YW50IHRvIHByZXNlbnQgYSB1bmlmaWVkIHRpbWVs
aW5lIHRvIEphdmFzY3JpcHQuIFVzaW5nIHdhbGx0aW1lIGlzIHByb2JsZW1hdGljLCBiZWNhdXNl
IHRoZSBjbG9jayBtYXkgc2tldyB3aGlsZSByZXNvdXJjZXMKKyAgICAvLyBsb2FkLiBUbyBwcmV2
ZW50IHRoYXQgc2tldywgd2UgcmVjb3JkIGEgc2luZ2xlIHJlZmVyZW5jZSB3YWxsdGltZSB3aGVu
IHJvb3QgZG9jdW1lbnQgbmF2aWdhdGlvbiBiZWdpbnMuIEFsbCBvdGhlciB0aW1lcyBhcmUKKyAg
ICAvLyByZWNvcmRlZCB1c2luZyBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gV2hlbiBh
IHRpbWUgbmVlZHMgdG8gYmUgcHJlc2VudGVkIHRvIEphdmFzY3JpcHQsIHdlIGJ1aWxkIGEgcHNl
dWRvLXdhbGx0aW1lCisgICAgLy8gdXNpbmcgdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoKKyAgICAv
LyAgIHBzZXVkbyB0aW1lID0gZG9jdW1lbnQgd2FsbCByZWZlcmVuY2UgKyAocmVzb3VyY2UgcmVx
dWVzdCB0aW1lIC0gZG9jdW1lbnQgbW9ub3RvbmljIHJlZmVyZW5jZSkgKyBkZWx0YU1pbGxpc2Vj
b25kcyAvIDEwMDAuMC4KKyAgICBkb3VibGUgY29udmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3Vt
ZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50VGltaW5nLCBpbnQgZGVs
dGFNaWxsaXNlY29uZHMpIGNvbnN0OworCisgICAgZG91YmxlIHJlcXVlc3RUaW1lOyAvLyBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB3aGVuIHRoZSBwb3J0IHN0YXJ0ZWQgaGFuZGxpbmcg
dGhpcyByZXF1ZXN0LgorICAgIGludCBwcm94eVN0YXJ0OyAvLyBUaGUgcmVzdCBvZiB0aGVzZSBh
cmUgbWlsbGlzZWNvbmQgZGVsdGFzLCB1c2luZyBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSwgZnJvbSByZXF1ZXN0VGltZS4KICAgICBpbnQgcHJveHlFbmQ7CiAgICAgaW50IGRuc1N0YXJ0
OwogICAgIGludCBkbnNFbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105130</attachid>
            <date>2011-08-24 22:06:58 -0700</date>
            <delta_ts>2011-12-13 11:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58354-20110824220657.patch</filename>
            <type>text/plain</type>
            <size>57436</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODllNmM0
YjdlNjQwMWMxNDYyNDQ5ZDhjNTdkZTc1Y2YzZjJjZmQ2Ny4uMDUwMWIyYTNhZjkwNjNlMTA5ZjVh
NjFhZDRmMzkzZTg2YTNmZDMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg4OCw2ICs4ODgs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNw
cAorICAgIGxvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCiAgICAgbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAogICAgIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCiAgICAg
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTEzOSw2ICsxMTQwLDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGlt
aW5nLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZDJmMjNk
NjU3N2I1YTMxMDUyMmVkNmRjMzJiNDM5OGFkOTgxMDYxLi4yNGI5MmNkYTUyODgxNTgzNGI2NjYw
YWFkMmUxM2FhYWNmOWI5YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTEtMDgt
MjQgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtO
YXZpZ2F0aW9uIFRpbWluZ10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3Rl
YWQgb2YgY3VycmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVsaWVzIG9uIGV4aXN0aW5nIHdlYnRpbWluZy0qIHRl
c3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6IFVzZSBtb25vdG9uaWMgdGltZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5n
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
Z0ltcGwpOiBDb252ZXJ0IG1vbm90b25pY0ZpbmlzaFRpbWUgdG8gd2FsbCB0aW1lIGlmIG5lZWRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6IENvbnZlcnQgbW9ub3RvbmljIHJl
cXVlc3RUaW1lIHRvIHdhbGwgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZSk6IFBsdW1iaW5nIGZvciBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkVGltaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRU
aW1pbmc6OkRvY3VtZW50TG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRUaW1pbmc6OnNldE5hdmlnYXRpb25TdGFydCk6IERldGVybWluZSByZWZlcmVuY2UgdGltZSBh
bmQgcm9vdCByZWZlcmVuY2UgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRp
bWluZzo6YWRkUmVkaXJlY3QpOiBNb3ZlZCBsb2dpYyBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6Y29udmVydE1vbm90b25pY1Rp
bWVUb0RvY3VtZW50VGltZSk6IEhlbHBlciB0byBjb21wdXRlIHdhbGwgdGltZSBmcm9tIG1vbm90
b25pYyB0aW1lLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaDogVHVybmVk
IGludG8gY2xhc3MuIE1hZGUgdGltZXMgbW9ub3RvbmljLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkVGltaW5nOjpzZXRVbmxvYWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0VW5sb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRSZWRpcmVjdFN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0UmVkaXJlY3RFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRGZXRjaFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0UmVzcG9uc2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRMb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRUaW1pbmc6OnNldExvYWRFdmVudEVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRUaW1pbmc6OnNldEhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6dW5sb2FkRXZlbnRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpyZWRpcmVjdFN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6cmVkaXJlY3RFbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpyZWRpcmVjdENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6ZmV0Y2hTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnJlc3BvbnNlRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZFRpbWluZzo6bG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpsb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkVGltaW5nOjpoYXNDcm9zc09yaWdpblJlZGlyZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6aGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVu
dCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAq
IGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJl
c291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IE1vdmVkIGxvZ2lj
IHRvIERvY3VtZW50TG9hZFRpbWluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOiBVc2UgbW9ub3RvbmljIHRpbWUuCisgICAgICAgIChXZWJD
b3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZCk6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaExvYWRF
dmVudCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDogUmVtb3ZlZCBkaXNwYXRjaFRpbWVk
RXZlbnQuIEl0IGRvZXNuJ3QgcmVhbGx5IGhlbHAgaW4gdGhlIG5ldyBtb2RlbC4KKyAgICAgICAg
KiBwYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZU5hdmlnYXRpb246OnJlZGlyZWN0Q291bnQpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuY3BwOiBSZW1vdmVkIHNrZXcgY29ycmVjdGlvbiBjb2RlLiBUaGlzIHNob3Vs
ZCBuZXZlciBoYXBwZW4gbm93LgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6
Om5hdmlnYXRpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
dW5sb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6
dW5sb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnJl
ZGlyZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnJlZGly
ZWN0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZUVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJhY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZl
bnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRTdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50RW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0Fic29sdXRlKTogVXNlZCBmb3IgUmVzb3VyY2VMb2FkVGltaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6Om1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29u
ZHMpOiBVc2VkIGZvciBEb2N1bWVudFRpbWluZyBhbmQgRG9jdW1lbnRMb2FkVGltaW5nLgorICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRUaW1pbmc6OmNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6IEFkZGVkIGhlbHBlciBm
dW5jdGlvbiB0byBjb252ZXJ0IHRvIHdhbGwgdGltZXMuIEFkZGVkIGluc3RydWN0aW9ucyBmb3Ig
dXNlLgorCiAyMDExLTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSlNIVE1MSW1hZ2VFbGVtZW50IChhbmQgYXNzb2NpYXRlZCBOb2RlKSBpcyBhYmFuZG9uZWQg
d2hlbiBpbWFnZSBsb2FkIGlzIGNhbmNlbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCBjNDQ4NWExOGEzMmMzYThiZDRjNDU0NWE4YjkwYTg3NDRjOTUzNjE5Li4yNDE0MjlkMjlj
NTdmNjcyMWJjNWY5MDgwODViY2VlZTFiNjJlMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTIxMDIsOSArMjEwMiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3VlTG9hZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1p
bmcuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkVGltaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCBcCkBAIC0yNzE4LDYgKzI3MTksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8u
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRQcmlvcml0
eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWlu
Zy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGlt
aW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5ZDdiMGNjMGVjM2E5MzBmNjZiOTlmNTM3
MDMxZTIwYzI1Mzk4MjM3Li5kOWE5ZmY4ODcxMGY1NDc2MmJjMWZlYjVlMGJiMTU2ZmQ4Nzg0MDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzM1LDYgKzI3MzUsNyBAQAogICAgICAgICAgICAgJ2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCiAgICAgICAgICAgICAn
bG9hZGVyL0N1ZUxvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9DdWVMb2FkZXIuaCcs
CisgICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAnLAogICAgICAgICAg
ICAgJ2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgnLApAQCAtNDE0Miw2ICs0MTQzLDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0
YjljZjkzZDhkM2IyYzVhMWY2MjlkYTRiNGM1MjE2OTIwMTFlNmViLi44MmFiZTRiMTFmY2IwMjcx
MGI4ZDdjOGQxMGYwYTZkY2Q0OWQ2Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODY3LDYgKzg2Nyw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
IFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgXAogICAg
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgXAorICAgIGxvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuY3BwIFwKICAgICBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIFwKICAg
ICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcCBcCkBAIC0xMDU0LDYgKzEwNTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IGFkOTA1MWY0NDZhOTJjNDIyM2MzMDFkZTFkNDU4ZDgzODhl
OTJmNDAuLjg3NjI3NDg5MGM2Njc2YzdhNmE5ZmYwNjNkZWFhMGZhMDExMzQxNzYgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjAzMCwxNSAr
MjYwMzAsMTkgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZGVyLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxv
YWRlclxEb2N1bWVudExvYWRUaW1pbmcuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9jdW1lbnRMb2FkZXIuaCIKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExvYWRUaW1pbmcuaCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZFRp
bWluZy5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZGVyLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XERvY3VtZW50TG9hZGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKQEAgLTMwNTEz
LDYgKzMwNTE3LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlTG9hZFRpbWluZy5jcHAiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXFJlc291cmNlTG9hZFRpbWluZy5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc5MmY5OGIyOTE4YjZiNGZmYmI4ODA0ZTAwMWZiMWZiZDZkYjIzOTYuLjQ2NmNhZWQ5MzBk
NTAxNTYzZjgxZGRkNWQ1NDM1OTFjODdhZmRhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NTksNiArMjc1OSw4IEBACiAJ
CTg1Rjc0RTBBMEFBOERGOEMwMDBEQzI4NCAvKiBET01DU1NVbmtub3duUnVsZS5oIGluIENvcHkg
R2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUw
MzJERDUwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1Vua25vd25SdWxlLmggKi87IH07CiAJCTg1
RkYzMTVBMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1ODBBQUZCRkNCMDAzNzRG
MzggLyogRE9NS2V5Ym9hcmRFdmVudC5oICovOyB9OwogCQk4NUZGMzE1QjBBQUZCRkNCMDAzNzRG
MzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1RkYzMTU5MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2
ZW50Lm1tICovOyB9OworCQk4NjFDMkVBNDEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2Fk
VGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovOyB9
OworCQk4NjFDMkVBNjEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MUMyRUE1MTNG
QjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovOyB9OwogCQk4NjI0M0Qw
MTExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjQzRDAwMTFCQzMxRjcwMEND
MDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovOyB9OwogCQk4NkQ5ODJGNzEyNUMx
NTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDk4MkY2MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVu
dFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg5MEFFMEUxMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTBBRTBFMDEyNTZB
MDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oICovOyB9OwpAQCAtOTM2OCw2ICs5
MzcwLDggQEAKIAkJODVGNTZBNzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0
cnVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1
RkYzMTU4MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1RkYzMTU5MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUtleWJv
YXJkRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MUMyRUEzMTNGQjRG
REQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRp
bWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxv
YWRUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjI0M0QwMDExQkMz
MUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZEOTgyRjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGlt
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50VGltaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAv
KiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERpcmVjdG9yeVJlYWRlckJhc2UuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MzQsNiArMTQ0MzgsNyBAQAog
CQkJCTUxNEM3NjY2MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmgg
Ki8sCiAJCQkJNDkyODYzOTgxMjUzQjhGQzAwRjc5MkQ2IC8qIFJlc291cmNlTG9hZEluZm8uaCAq
LywKIAkJCQlFNDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHku
aCAqLywKKwkJCQk4NjFDMkVBNTEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5n
LmNwcCAqLywKIAkJCQk4QTgxQkY4NDExRENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGlt
aW5nLmggKi8sCiAJCQkJNTE0Qzc2NjcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVz
dEJhc2UuY3BwICovLAogCQkJCTUxNEM3NjY4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJl
cXVlc3RCYXNlLmggKi8sCkBAIC0xODkxNyw5ICsxODkyMiwxMCBAQAogCQkJCUUxQzQxNUQ5MEY2
NTVENkYwMDkyRDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggKi8sCiAJ
CQkJQjFBRDRFNzExM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi8sCiAJCQkJQjFB
RDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovLAorCQkJCTg2MUMyRUEzMTNG
QjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovLAorCQkJCThBMTJFMzVD
MTFGQTMzMjgwMDI1ODM2QSAvKiBEb2N1bWVudExvYWRUaW1pbmcuaCAqLywKIAkJCQk5M0UyMjdE
QjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzFF
MEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovLAotCQkJCThBMTJFMzVDMTFG
QTMzMjgwMDI1ODM2QSAvKiBEb2N1bWVudExvYWRUaW1pbmcuaCAqLywKIAkJCQkwQjkwNTYxNTBG
MjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLywKIAkJCQkw
QjkwNTYxNjBGMjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggKi8s
CiAJCQkJOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLywK
QEAgLTIwNzQ4LDggKzIwNzU0LDggQEAKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyog
RE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTZEMzczNjBBREJBNURFMDBB
NDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCThBMTJFMzVEMTFG
QTMzMjgwMDI1ODM2QSAvKiBEb2N1bWVudExvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTY1NkQzNzM2MEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk0N0ZGRTEyRjgwQ0QyMDBBMEY2
MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDE1LDYgKzI0
MDIxLDcgQEAKIAkJCQkxQUJBNzZDQzExRDIwRTVCMDA0QzIwMUMgLyogRG9jVHlwZVN0cmluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODVGM0MwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudEZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2MUMyRUE0MTNGQjRGREQw
MDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNF
MjI3RTAwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzgxQzZBNzEzODI4QjVEMDAxMkE2MkEgLyogRG9jdW1lbnRN
YXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTY3MCw2ICsyNTY3Nyw3IEBACiAJCQkJNTFB
QTNGNkYwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwQ0U1OEY4MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODYxQzJFQTYxM0ZCNEZG
RjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTRDNzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8q
IFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMTUwYzBmY2VjNGQ3YjE1MjNmNGFlZmQ3ZmFmOTdmOWY1YzViOTcyMy4uMzhmMTcz
MGRiZjNjY2FhODQwYzFiMjcyN2UwMTUxOWI2MTBkYmQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0xMDE0LDE1ICsxMDE0LDE1IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUo
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogICAgIHN3aXRjaCAocmVhZHlTdGF0ZSkgewogICAgIGNh
c2UgTG9hZGluZzoKICAgICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcpCi0g
ICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUxvYWRpbmcgPSBjdXJyZW50VGltZSgpOwor
ICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Mb2FkaW5nID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmU6CiAg
ICAgICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSkKLSAgICAgICAgICAg
IG1fZG9jdW1lbnRUaW1pbmcuZG9tSW50ZXJhY3RpdmUgPSBjdXJyZW50VGltZSgpOworICAgICAg
ICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBsZXRlOgogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29tcGxldGUpCi0gICAgICAgICAgICBtX2RvY3Vt
ZW50VGltaW5nLmRvbUNvbXBsZXRlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIG1fZG9j
dW1lbnRUaW1pbmcuZG9tQ29tcGxldGUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00MTkxLDEwICs0MTkxLDEwIEBAIHZvaWQgRG9j
dW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKSB8fCBtX3JlYWR5U3RhdGUgIT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxz
ZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0
KQotICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0ID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVk
RXZlbnRTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0
cnVlLCBmYWxzZSkpOwogICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVk
RXZlbnRFbmQpCi0gICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50
RW5kID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50
TG9hZGVkRXZlbnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAogICAgIGlm
IChSZWZQdHI8RnJhbWU+IGYgPSBmcmFtZSgpKSB7CiAgICAgICAgIC8vIEZyYW1lTG9hZGVyOjpm
aW5pc2hlZFBhcnNpbmcoKSBtaWdodCBlbmQgdXAgY2FsbGluZyBEb2N1bWVudDo6aW1wbGljaXRD
bG9zZSgpIGlmIGFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA0N2EyNjUwZjRkNWU3NjA4MTU3ZGE3NWI4Zjdj
OTVkNmM2MTc5ZjNjLi5lM2RhYmZmZGIxNmFmMDAzNWZjYTc1NGZkOTE4YjM0MWNiOGQ5MjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtNTE0LDExICs1MTQsMjEgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW4K
ICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwg
ZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGRvdWJsZSBtb25vdG9uaWNGaW5pc2hUaW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKKyAgICBpZiAoIXRpbWVsaW5lQWdlbnQgJiYg
IXJlc291cmNlQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBmaW5pc2hUaW1l
ID0gMC4wOworICAgIC8vIEZJWE1FOiBFeHBvc2UgYWxsIG9mIHRoZSB0aW1pbmcgZGV0YWlscyB0
byBpbnNwZWN0b3IgYW5kIGhhdmUgaXQgY2FsY3VsYXRlIGZpbmlzaFRpbWUuCisgICAgaWYgKG1v
bm90b25pY0ZpbmlzaFRpbWUpCisgICAgICAgIGZpbmlzaFRpbWUgPSBsb2FkZXItPnRpbWluZygp
LT5jb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1vbm90b25pY0ZpbmlzaFRpbWUp
OworCisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZp
bmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSk7Ci0gICAg
aWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKHJlc291cmNlQWdlbnQp
CiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgbG9h
ZGVyLCBmaW5pc2hUaW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGY4MDhlZjE0YTc2YTVjNzFiMzIwYThj
YzAyYWUxMDM1MjhkYmNhMGMuLmFjMzMyZDlkY2JjODM3NTM5YTdlZjI0ZmU0Njk5ZGZiZDhmY2Y1
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
CiAgICAgcmV0dXJuIGhlYWRlcnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yVGltaW5nKGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHRpbWluZ09iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIo
InJlcXVlc3RUaW1lIiwgdGltaW5nLnJlcXVlc3RUaW1lKTsKKyAgICB0aW1pbmdPYmplY3QtPnNl
dE51bWJlcigicmVxdWVzdFRpbWUiLCB0aW1pbmcuY29udmVydFJlc291cmNlTG9hZFRpbWVUb0Rv
Y3VtZW50VGltZShsb2FkZXItPnRpbWluZygpLCAwKSk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXRO
dW1iZXIoInByb3h5U3RhcnQiLCB0aW1pbmcucHJveHlTdGFydCk7CiAgICAgdGltaW5nT2JqZWN0
LT5zZXROdW1iZXIoInByb3h5RW5kIiwgdGltaW5nLnByb3h5RW5kKTsKICAgICB0aW1pbmdPYmpl
Y3QtPnNldE51bWJlcigiZG5zU3RhcnQiLCB0aW1pbmcuZG5zU3RhcnQpOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAgIHJlc3BvbnNlT2Jq
ZWN0LT5zZXROdW1iZXIoImNvbm5lY3Rpb25JZCIsIHJlc3BvbnNlLmNvbm5lY3Rpb25JRCgpKTsK
ICAgICByZXNwb25zZU9iamVjdC0+c2V0Qm9vbGVhbigiZnJvbURpc2tDYWNoZSIsIHJlc3BvbnNl
Lndhc0NhY2hlZCgpKTsKICAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCi0g
ICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKCpyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkpOworICAgICAgICByZXNwb25z
ZU9iamVjdC0+c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9u
c2UucmVzb3VyY2VMb2FkVGltaW5nKCksIGxvYWRlcikpOwogCiAgICAgaWYgKHJlc3BvbnNlLnJl
c291cmNlTG9hZEluZm8oKSkgewogICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJo
ZWFkZXJzIiwgYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8o
KS0+cmVzcG9uc2VIZWFkZXJzKSk7CkBAIC0xNjMsMTMgKzE2MywxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25z
dCBSZXNvdXJjZQogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGNvbnN0
IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgIHJlc291cmNlT2JqZWN0LT5zZXRTdHJpbmcoInVybCIsIGNhY2hlZFJlc291
cmNlLnVybCgpKTsKICAgICByZXNvdXJjZU9iamVjdC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5zcGVj
dG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVTdHJpbmcoY2FjaGVkUmVzb3VyY2UpKTsK
ICAgICByZXNvdXJjZU9iamVjdC0+c2V0TnVtYmVyKCJib2R5U2l6ZSIsIGNhY2hlZFJlc291cmNl
LmVuY29kZWRTaXplKCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVz
cG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UucmVz
cG9uc2UoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25zZSA9
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSgp
LCBsb2FkZXIpOwogICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlKQogICAgICAgICByZXNvdXJjZU9i
amVjdC0+c2V0T2JqZWN0KCJyZXNwb25zZSIsIHJlc291cmNlUmVzcG9uc2UpOwogICAgIHJldHVy
biByZXNvdXJjZU9iamVjdDsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TAogICAgIGVsc2UKICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaW5pdGlhdG9yT2JqZWN0ID0g
YnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5k
b2N1bWVudCgpIDogMCk7Ci0gICAgbV9mcm9udGVuZC0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVz
dElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+
bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwg
Y2FsbFN0YWNrVmFsdWUsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJl
c3BvbnNlKSk7CisgICAgbV9mcm9udGVuZC0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBt
X3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVy
SWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgY2FsbFN0
YWNrVmFsdWUsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNl
LCBsb2FkZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3Vy
Y2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1
ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBy
ZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNl
LCBsb2FkZXIpOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUgPSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiAgICAgbG9uZyBjYWNoZWRSZXNvdXJj
ZVNpemUgPSAwOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQK
ICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgcmVzb3Vy
Y2UpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxk
SW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKSA6IDApOwogCi0gICAgbV9mcm9udGVuZC0+cmVzb3VyY2VMb2FkZWRGcm9tTWVtb3J5Q2Fj
aGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwg
Y3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291
cmNlKCpyZXNvdXJjZSkpOworICAgIG1fZnJvbnRlbmQtPnJlc291cmNlTG9hZGVkRnJvbU1lbW9y
eUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5n
KCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRS
ZXNvdXJjZSgqcmVzb3VyY2UsIGxvYWRlcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0N2NkZmMwMjNlYjQzZTc2YzQzYTY0N2Zi
NWI1NzJhN2E3MmE5MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitEb2N1bWVudExvYWRUaW1pbmc6OkRvY3VtZW50TG9hZFRpbWluZygpCisgICAgOiBtX25h
dmlnYXRpb25TdGFydFdhbGxUaW1lKDAuMCkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXJ0KDAuMCkK
KyAgICAsIG1fdW5sb2FkRXZlbnRTdGFydCgwLjApCisgICAgLCBtX3VubG9hZEV2ZW50RW5kKDAu
MCkKKyAgICAsIG1fcmVkaXJlY3RTdGFydCgwLjApCisgICAgLCBtX3JlZGlyZWN0RW5kKDAuMCkK
KyAgICAsIG1fcmVkaXJlY3RDb3VudCgwKQorICAgICwgbV9mZXRjaFN0YXJ0KDAuMCkKKyAgICAs
IG1fcmVzcG9uc2VFbmQoMC4wKQorICAgICwgbV9sb2FkRXZlbnRTdGFydCgwLjApCisgICAgLCBt
X2xvYWRFdmVudEVuZCgwLjApCisgICAgLCBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoZmFsc2Up
CisgICAgLCBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCisgICAgLCBt
X3Jvb3RUaW1pbmcoMCkKK3sKK30KKwordm9pZCBEb2N1bWVudExvYWRUaW1pbmc6Om1hcmtOYXZp
Z2F0aW9uU3RhcnQoRnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uU3Rh
cnQgJiYgIW1fbmF2aWdhdGlvblN0YXJ0V2FsbFRpbWUpOworICAgIG1fbmF2aWdhdGlvblN0YXJ0
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9uYXZpZ2F0aW9uU3RhcnRX
YWxsVGltZSA9IGN1cnJlbnRUaW1lKCk7CisKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIERvY3Vt
ZW50KiByb290RG9jdW1lbnQgPSBmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAocm9vdERvY3VtZW50KQorICAgICAgICBtX3Jvb3RUaW1pbmcgPSByb290RG9j
dW1lbnQtPmxvYWRlcigpLT50aW1pbmcoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcm9vdFRpbWlu
ZyA9IHRoaXM7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRpcmVjdChjb25z
dCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVybCkKK3sKKyAg
ICBtX3JlZGlyZWN0Q291bnQrKzsKKyAgICBpZiAoIW1fcmVkaXJlY3RTdGFydCkKKyAgICAgICAg
bV9yZWRpcmVjdFN0YXJ0ID0gbV9mZXRjaFN0YXJ0OworICAgIG1fcmVkaXJlY3RFbmQgPSBtX2Zl
dGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAvLyBDaGVjayBp
ZiB0aGUgcmVkaXJlY3RlZCB1cmwgaXMgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHJlZGlyZWN0aW5n
IHVybCdzIHRpbWluZyBpbmZvcm1hdGlvbi4KKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJl
ZGlyZWN0ZWRTZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3Rl
ZFVybCk7CisgICAgbV9oYXNDcm9zc09yaWdpblJlZGlyZWN0ID0gIXJlZGlyZWN0ZWRTZWN1cml0
eU9yaWdpbi0+Y2FuUmVxdWVzdChyZWRpcmVjdGluZ1VybCk7Cit9CisKK2RvdWJsZSBEb2N1bWVu
dExvYWRUaW1pbmc6OmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUoZG91YmxlIG1v
bm90b25pY1RpbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtb25vdG9uaWNUaW1lKQorICAgICAgICBy
ZXR1cm4gMC4wOworICAgIHJldHVybiBtX3Jvb3RUaW1pbmctPm1fbmF2aWdhdGlvblN0YXJ0V2Fs
bFRpbWUgKyBtb25vdG9uaWNUaW1lIC0gbV9yb290VGltaW5nLT5tX25hdmlnYXRpb25TdGFydDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZFRpbWluZy5oCmluZGV4IGQ0YWE3ZDBjOTVlYTg5N2FhYTg5MTA4YTdlZjhiNmFkODkw
OGVhN2YuLmZhMzk4NTU0ZTgwYTZkMjMyNzZlZjA3YmQ5Mjg4ZWJjMmE2MzBjZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKQEAgLTI2LDM5ICsyNiw2MiBA
QAogI2lmbmRlZiBEb2N1bWVudExvYWRUaW1pbmdfaAogI2RlZmluZSBEb2N1bWVudExvYWRUaW1p
bmdfaAogCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IERvY3VtZW50TG9hZFRpbWluZyB7Ci0gICAgRG9jdW1lbnRMb2FkVGltaW5n
KCkKLSAgICAgICAgOiBuYXZpZ2F0aW9uU3RhcnQoMC4wKQotICAgICAgICAsIHVubG9hZEV2ZW50
U3RhcnQoMC4wKQotICAgICAgICAsIHVubG9hZEV2ZW50RW5kKDAuMCkKLSAgICAgICAgLCByZWRp
cmVjdFN0YXJ0KDAuMCkKLSAgICAgICAgLCByZWRpcmVjdEVuZCgwLjApCi0gICAgICAgICwgcmVk
aXJlY3RDb3VudCgwKQotICAgICAgICAsIGZldGNoU3RhcnQoMC4wKQotICAgICAgICAsIHJlc3Bv
bnNlRW5kKDAuMCkKLSAgICAgICAgLCBsb2FkRXZlbnRTdGFydCgwLjApCi0gICAgICAgICwgbG9h
ZEV2ZW50RW5kKDAuMCkKLSAgICAgICAgLCBoYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKQot
ICAgICAgICAsIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCi0gICAgewot
ICAgIH0KK2NsYXNzIEZyYW1lOworY2xhc3MgS1VSTDsKKworY2xhc3MgRG9jdW1lbnRMb2FkVGlt
aW5nIHsKK3B1YmxpYzoKKyAgICBEb2N1bWVudExvYWRUaW1pbmcoKTsKKworICAgIHZvaWQgbWFy
a05hdmlnYXRpb25TdGFydChGcmFtZSopOworICAgIHZvaWQgYWRkUmVkaXJlY3QoY29uc3QgS1VS
TCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwpOworICAgIGRvdWJs
ZSBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1l
KSBjb25zdDsKKworICAgIHZvaWQgbWFya1VubG9hZEV2ZW50U3RhcnQoKSB7IG1fdW5sb2FkRXZl
bnRTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBtYXJr
VW5sb2FkRXZlbnRFbmQoKSB7IG1fdW5sb2FkRXZlbnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsgfQorICAgIHZvaWQgbWFya1JlZGlyZWN0U3RhcnQoKSB7IG1fcmVkaXJlY3RT
dGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBtYXJrUmVk
aXJlY3RFbmQoKSB7IG1fcmVkaXJlY3RFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsgfQorICAgIHZvaWQgbWFya0ZldGNoU3RhcnQoKSB7IG1fZmV0Y2hTdGFydCA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBzZXRSZXNwb25zZUVuZChkb3VibGUg
bW9ub3RvbmljVGltZSkgeyBtX3Jlc3BvbnNlRW5kID0gbW9ub3RvbmljVGltZTsgfQorICAgIHZv
aWQgbWFya0xvYWRFdmVudFN0YXJ0KCkgeyBtX2xvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIG1hcmtMb2FkRXZlbnRFbmQoKSB7IG1fbG9h
ZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKworICAgIHZvaWQg
c2V0SGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudChib29sIHZhbHVlKSB7IG1faGFzU2Ft
ZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCA9IHZhbHVlOyB9CisKKyAgICBkb3VibGUgbmF2aWdh
dGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50
VGltZShtX25hdmlnYXRpb25TdGFydCk7IH0KKyAgICBkb3VibGUgdW5sb2FkRXZlbnRTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV91bmxv
YWRFdmVudFN0YXJ0KTsgfQorICAgIGRvdWJsZSB1bmxvYWRFdmVudEVuZCgpIGNvbnN0IHsgcmV0
dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV91bmxvYWRFdmVudEVuZCk7
IH0KKyAgICBkb3VibGUgcmVkaXJlY3RTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25v
dG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9yZWRpcmVjdFN0YXJ0KTsgfQorICAgIGRvdWJsZSBy
ZWRpcmVjdEVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVu
dFRpbWUobV9yZWRpcmVjdEVuZCk7IH0KKyAgICBzaG9ydCByZWRpcmVjdENvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRpcmVjdENvdW50OyB9CisgICAgZG91YmxlIGZldGNoU3RhcnQoKSBjb25z
dCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fZmV0Y2hTdGFy
dCk7IH0KKyAgICBkb3VibGUgcmVzcG9uc2VFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9u
b3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVzcG9uc2VFbmQpOyB9CisgICAgZG91YmxlIGxv
YWRFdmVudFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3Vt
ZW50VGltZShtX2xvYWRFdmVudFN0YXJ0KTsgfQorICAgIGRvdWJsZSBsb2FkRXZlbnRFbmQoKSBj
b25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fbG9hZEV2
ZW50RW5kKTsgfQorICAgIGJvb2wgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsgfQorICAgIGJvb2wgaGFzU2FtZU9yaWdpbkFz
UHJldmlvdXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2FtZU9yaWdpbkFzUHJldmlv
dXNEb2N1bWVudDsgfQogCi0gICAgZG91YmxlIG5hdmlnYXRpb25TdGFydDsKLSAgICBkb3VibGUg
dW5sb2FkRXZlbnRTdGFydDsKLSAgICBkb3VibGUgdW5sb2FkRXZlbnRFbmQ7Ci0gICAgZG91Ymxl
IHJlZGlyZWN0U3RhcnQ7Ci0gICAgZG91YmxlIHJlZGlyZWN0RW5kOwotICAgIHNob3J0IHJlZGly
ZWN0Q291bnQ7Ci0gICAgZG91YmxlIGZldGNoU3RhcnQ7Ci0gICAgZG91YmxlIHJlc3BvbnNlRW5k
OwotICAgIGRvdWJsZSBsb2FkRXZlbnRTdGFydDsKLSAgICBkb3VibGUgbG9hZEV2ZW50RW5kOwot
ICAgIGJvb2wgaGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsKLSAgICBib29sIGhhc1NhbWVPcmlnaW5B
c1ByZXZpb3VzRG9jdW1lbnQ7Citwcml2YXRlOgorICAgIGRvdWJsZSBtX25hdmlnYXRpb25TdGFy
dFdhbGxUaW1lOworICAgIGRvdWJsZSBtX25hdmlnYXRpb25TdGFydDsKKyAgICBkb3VibGUgbV91
bmxvYWRFdmVudFN0YXJ0OworICAgIGRvdWJsZSBtX3VubG9hZEV2ZW50RW5kOworICAgIGRvdWJs
ZSBtX3JlZGlyZWN0U3RhcnQ7CisgICAgZG91YmxlIG1fcmVkaXJlY3RFbmQ7CisgICAgc2hvcnQg
bV9yZWRpcmVjdENvdW50OworICAgIGRvdWJsZSBtX2ZldGNoU3RhcnQ7CisgICAgZG91YmxlIG1f
cmVzcG9uc2VFbmQ7CisgICAgZG91YmxlIG1fbG9hZEV2ZW50U3RhcnQ7CisgICAgZG91YmxlIG1f
bG9hZEV2ZW50RW5kOworICAgIGJvb2wgbV9oYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGJv
b2wgbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OworICAgIERvY3VtZW50TG9hZFRp
bWluZyogbV9yb290VGltaW5nOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDRmMGYxZjM1NmVh
N2EyODdhYmFjZGFlZjQ4Njg0M2NmOTUzODc4NmUuLmI1MmIyZGQ5OWMwYzEyOWFhZDIzY2JlMDUz
OWM0YWRmZWI3NzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
Mzg0LDEwICszODQsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZl
bnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aW1lIGludG8gZnJlZWQgbWVtb3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cjsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNw
YXRjaGVkID0gVW5sb2FkRGlzbWlzc2FsOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRv
Y3VtZW50TG9hZGVyICYmICFkb2N1bWVudExvYWRlci0+dGltaW5nKCktPnVubG9hZEV2ZW50U3Rh
cnQgJiYgIWRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2FkRXZlbnRFbmQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlciAmJiAhZG9jdW1lbnRMb2FkZXIt
PnRpbWluZygpLT51bmxvYWRFdmVudFN0YXJ0KCkgJiYgIWRvY3VtZW50TG9hZGVyLT50aW1pbmco
KS0+dW5sb2FkRXZlbnRFbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3Vt
ZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWluZygpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1pbmctPm5hdmlnYXRpb25TdGFydCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmRpc3BhdGNo
VGltZWRFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS0+ZG9tV2luZG93KCktPmRvY3VtZW50KCks
ICZ0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQsICZ0aW1pbmctPnVubG9hZEV2ZW50RW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZlbnRT
dGFydCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1l
bnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZl
bnRFbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2
ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTE3ODIsNyArMTc4NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zp
c2lvbmFsTG9hZCgpCiAgICAgaWYgKHBkbCkgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGVz
dGluYXRpb24gcGFnZSBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgcHJldmlvdXMgcGFnZSdzIHRp
bWluZyBpbmZvcm1hdGlvbi4KICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGRsLT5yZXF1ZXN0KCkudXJsKCkpOwot
ICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+aGFzU2FtZU9yaWdpbkFzUHJldmlv
dXNEb2N1bWVudCA9IHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG1fcHJldmlvdXNVcmwpOwor
ICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+c2V0SGFzU2FtZU9yaWdpbkFzUHJl
dmlvdXNEb2N1bWVudChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChtX3ByZXZpb3VzVXJsKSk7
CiAgICAgfQogCiAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQo
KSBoZXJlIHNvIHRoYXQgdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgaXMgbm90aWZpZWQgdGhhdCB0
aGUgcmVkaXJlY3QncwpAQCAtMjMzNyw4ICsyMzM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgICAgIG5vdGlmaWVyKCktPmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci5nZXQoKSwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJl
cXVlc3QoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXItPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCA9IGN1cnJlbnRUaW1lKCk7CisgICAg
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFy
dChmcmFtZSgpKTsKIAogICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygpOwpAQCAtMjk4MCwxMSArMjk4MSwxMSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAg
IHByb3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKICAgICBtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0gICAgCisKICAgICAvLyBTaG91bGQgaGF2ZSB0aW1p
bmcgZGF0YSBmcm9tIHByZXZpb3VzIHRpbWUocykgdGhlIHBhZ2Ugd2FzIHNob3duLgotICAgIEFT
U0VSVChwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CisgICAg
QVNTRVJUKHByb3Zpc2lvbmFsTG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0KCkpOwog
ICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5yZXNldFRpbWluZygpOwotICAgIHByb3Zpc2lvbmFsTG9h
ZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0ID0gY3VycmVudFRpbWUoKTsgICAgCisgICAg
cHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5tYXJrTmF2aWdhdGlvblN0YXJ0KGZyYW1lKCkp
OwogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0cnVlKTsKICAgICBjb21t
aXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYTFmOTkxOGViYmRlNTY2ODUzZTc1MTZjYmZmZjg0NjI5MTBjZDQ4
ZC4uZDBjYzQ4ODU5MzhhODA2NzZlYTgzZDBmMTRiNzk4ZDQ5Y2VjMTVlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZQogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNo
YW5nZSgpOwogICAgIGVsc2UgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIC8vIEEgcmVkaXJlY3QgcmVzdWx0ZWQgaW4gbG9hZGluZyBzdWJzdGl0dXRlIGRhdGEuCi0g
ICAgICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3VudCk7
CisgICAgICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3Vu
dCgpKTsKICAgICAgICAgaGFuZGxlKCktPmNhbmNlbCgpOwogICAgICAgICBoYW5kbGVEYXRhTG9h
ZFNvb24ocmVxdWVzdCk7CiAgICAgfQpAQCAtMTgwLDIwICsxODAsOSBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
Y29uc3QgUmVzbwogICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUg
b2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CiAKLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNo
U3RhcnQpOworICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFy
dCgpKTsKICAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgRG9j
dW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudExvYWRUaW1pbmcgPSBkb2N1bWVudExvYWRlcigpLT50
aW1pbmcoKTsKLQotICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVkaXJlY3RlZCB1cmwgaXMgYWxs
b3dlZCB0byBhY2Nlc3MgdGhlIHJlZGlyZWN0aW5nIHVybCdzIHRpbWluZyBpbmZvcm1hdGlvbi4K
LSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobmV3UmVxdWVzdC51cmwoKSk7Ci0gICAgICAgIGlmICghc2VjdXJpdHlP
cmlnaW4tPmNhblJlcXVlc3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSkpCi0gICAgICAgICAgICBk
b2N1bWVudExvYWRUaW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QgPSB0cnVlOwotCi0gICAg
ICAgIGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RDb3VudCsrOwotICAgICAgICBpZiAoIWRv
Y3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RTdGFydCkKLSAgICAgICAgICAgIGRvY3VtZW50TG9h
ZFRpbWluZy0+cmVkaXJlY3RTdGFydCA9IGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydDsK
LSAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVjdEVuZCA9IGN1cnJlbnRUaW1lKCk7
Ci0gICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hTdGFydCA9IGRvY3VtZW50TG9hZFRp
bWluZy0+cmVkaXJlY3RFbmQ7CisgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5h
ZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKICAg
ICB9CiAKICAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdl
cywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKQEAgLTQ1OSw3ICs0NDgsNyBA
QCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPE1haW5SZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA9
IGN1cnJlbnRUaW1lKCk7CisgICAgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CiAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgYWxsQXRPbmNlKTsKIH0KQEAgLTQ3
MSw3ICs0NjAsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhk
b3VibGUgZmluaXNoVGltZSkKICNpZiAhVVNFKENGKQogICAgIEFTU0VSVChzaG91bGRMb2FkQXNF
bXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnVybCgp
KSB8fCAhZGVmZXJzTG9hZGluZygpKTsKICNlbmRpZgotICAgIAorCiAgICAgLy8gVGhlIGFkZGl0
aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92
aW5nIHRoZSBsYXN0CiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgogICAgIFJlZlB0
cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CkBAIC00ODAsMTEgKzQ2OSwxMCBA
QCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGRsID0gZG9jdW1lbnRMb2FkZXIoKTsK
ICNlbmRpZgogCi0gICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVzcG9u
c2VFbmQpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCA9IGZp
bmlzaFRpbWUgPyBmaW5pc2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGlt
ZU9mTGFzdERhdGFSZWNlaXZlZCA6IGN1cnJlbnRUaW1lKCkpOworICAgIGRvY3VtZW50TG9hZGVy
KCktPnRpbWluZygpLT5zZXRSZXNwb25zZUVuZChmaW5pc2hUaW1lID8gZmluaXNoVGltZSA6ICht
X3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgPyBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQgOiBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkpOwogICAgIGZyYW1lTG9hZGVyKCktPmZpbmlzaGVk
TG9hZGluZygpOwogICAgIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRp
bWUpOwotICAgIAorCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICBk
bC0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTU5NCw5ICs1ODIsOSBAQCBib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdQogCiAg
ICAgbV9zdWJzdGl0dXRlRGF0YSA9IHN1YnN0aXR1dGVEYXRhOwogCi0gICAgQVNTRVJUKGRvY3Vt
ZW50TG9hZGVyKCktPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIEFTU0VSVCghZG9j
dW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3RhcnQpOwotICAgIGRvY3VtZW50TG9hZGVy
KCktPnRpbWluZygpLT5mZXRjaFN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBBU1NFUlQoZG9j
dW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICBBU1NFUlQo
IWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIGRvY3VtZW50
TG9hZGVyKCktPnRpbWluZygpLT5tYXJrRmV0Y2hTdGFydCgpOwogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KHIpOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA0M2MyMzc1YzYxZmMzOWU0MzcxMDdjZTFhYjg1
NDQ1ZDE4NTBiN2Q2Li5mOTFhOGQwNWY5ZGRlYmE2MjlkOGUxNWU4OGM4ZDQ4NGE1ZTU4Njc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNTY0LDEyICsxNTY0LDE0IEBAIGJvb2wg
RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyCiB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQog
ewogICAgIFJlZlB0cjxFdmVudD4gbG9hZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgJiYgIW1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT50aW1pbmcoKS0+bG9hZEV2ZW50U3RhcnQpIHsKKyAgICBpZiAobV9mcmFtZSAm
JiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSAmJiAhbV9mcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5sb2FkRXZlbnRTdGFydCgpKSB7CiAgICAg
ICAgIC8vIFRoZSBEb2N1bWVudExvYWRlciAoYW5kIHRodXMgaXRzIERvY3VtZW50TG9hZFRpbWlu
ZykgbWlnaHQgZ2V0IGRlc3Ryb3llZCB3aGlsZSBkaXNwYXRjaGluZwogICAgICAgICAvLyB0aGUg
ZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVudCB3cml0aW5nIHRoZSBlbmQgdGltZSBpbnRv
IGZyZWVkIG1lbW9yeS4KICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBkb2N1bWVudExv
YWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBEb2N1
bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZGVyLT50aW1pbmcoKTsKLSAgICAg
ICAgZGlzcGF0Y2hUaW1lZEV2ZW50KGxvYWRFdmVudCwgZG9jdW1lbnQoKSwgJnRpbWluZy0+bG9h
ZEV2ZW50U3RhcnQsICZ0aW1pbmctPmxvYWRFdmVudEVuZCk7CisgICAgICAgIHRpbWluZy0+bWFy
a0xvYWRFdmVudFN0YXJ0KCk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQobG9hZEV2ZW50LCBkb2N1
bWVudCgpKTsKKyAgICAgICAgdGltaW5nLT5tYXJrTG9hZEV2ZW50RW5kKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGRpc3BhdGNoRXZlbnQobG9hZEV2ZW50LCBkb2N1bWVudCgpKTsKIApAQCAtMTYw
MSwxNSArMTYwMyw2IEBAIGJvb2wgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoVGltZWRFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCwgRG9jdW1lbnQqIHRhcmdldCwgZG91YmxlKiBzdGFydFRpbWUsIGRvdWJsZSog
ZW5kVGltZSkKLXsKLSAgICBBU1NFUlQoc3RhcnRUaW1lKTsKLSAgICBBU1NFUlQoZW5kVGltZSk7
Ci0gICAgKnN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZGlzcGF0Y2hFdmVudChldmVu
dCwgdGFyZ2V0KTsKLSAgICAqZW5kVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci19Ci0KIHZvaWQgRE9N
V2luZG93OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgRXZlbnRUYXJnZXQ6OnJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBhMmFk
ODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZkLi45MmVkM2Y2YTIxYTA1NzljMWJj
ZWFhMzhlNzBiMjVmYmRmMGY4NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI2NCw3
ICsyNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5nIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50OwogICAgICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFRhcmdldCk7CiAgICAg
ICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaFRpbWVk
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIERvY3VtZW50KiB0YXJnZXQsIGRvdWJsZSog
c3RhcnRUaW1lLCBkb3VibGUqIGVuZFRpbWUpOwogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGJlZm9yZXVubG9hZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvbi5jcHAKaW5kZXggYTQ2NjM5YWE4OTU5NDhmMzBhMGFlYzI2MjYxNzUwMWVhZWFk
YmZjOC4uNjYzZTk0MmExYmJjYjMwNmIzNTFmYjI2OTJlNDdiMjg1MGUzZDJlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcApAQCAtODQsMTAgKzg0
LDEwIEBAIHVuc2lnbmVkIHNob3J0IFBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6cmVkaXJlY3RDb3Vu
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiB0
aW1pbmcgPSBsb2FkZXItPnRpbWluZygpOwotICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2lu
UmVkaXJlY3QpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0aW1pbmctPnJlZGlyZWN0Q291bnQ7CisgICAg
cmV0dXJuIHRpbWluZy0+cmVkaXJlY3RDb3VudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IGZmMjUz
NTQyZGM0YjJhMzQ5OWM5ZDY2OWQ3NjFiMmU1MWM3ZTE2Y2IuLjIyMWZhZDNkNDg0MDBkNzg5MzA2
ZjRjZjczNmQ1MmQ2OTc4YjQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VU
aW1pbmcuY3BwCkBAIC01MCwzMCArNTAsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHRv
SW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgc2Vjb25kcykKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihzZWNvbmRzICogMTAwMC4wKTsKIH0KIAotc3RhdGljIGRv
dWJsZSBnZXRQb3NzaWJseVNrZXdlZFRpbWVJbktub3duUmFuZ2UoZG91YmxlIHNrZXdlZFRpbWUs
IGRvdWJsZSBsb3dlckJvdW5kLCBkb3VibGUgdXBwZXJCb3VuZCkKLXsKLSNpZiBQTEFURk9STShD
SFJPTUlVTSkKLSAgICAvLyBUaGUgY2hyb21pdW0gcG9ydCdzIGN1cnJlbnRUaW1lKCkgaW1wbGVt
ZW50YXRpb24gb25seSBzeW5jcyB3aXRoIHRoZQotICAgIC8vIHN5c3RlbSBjbG9jayBldmVyeSA2
MCBzZWNvbmRzLiBTbyBpdCBpcyBwb3NzaWJsZSBmb3IgdGltaW5nIG1hcmtzCi0gICAgLy8gY29s
bGVjdGVkIGluIGRpZmZlcmVudCB0aHJlYWRzIG9yIHByb2Nlc3NlcyB0byBoYXZlIGEgc21hbGwg
c2tldy4KLSAgICAvLyBGSVhNRTogSXQgbWF5IGJlIHBvc3NpYmxlIHRvIGFkZCBhIGN1cnJlbnRU
aW1lRnJvbVN5c3RlbVRpbWUoKSBtZXRob2QKLSAgICAvLyB0aGF0IGVsaW1pbmF0ZXMgdGhlIHNr
ZXcuCi0gICAgaWYgKHNrZXdlZFRpbWUgPD0gbG93ZXJCb3VuZCkKLSAgICAgICAgcmV0dXJuIGxv
d2VyQm91bmQ7Ci0KLSAgICBpZiAodXBwZXJCb3VuZCA8PSAwLjApCi0gICAgICAgIHVwcGVyQm91
bmQgPSBjdXJyZW50VGltZSgpOwotCi0gICAgaWYgKHNrZXdlZFRpbWUgPj0gdXBwZXJCb3VuZCkK
LSAgICAgICAgcmV0dXJuIHVwcGVyQm91bmQ7Ci0jZWxzZQotICAgIEFTU0VSVF9VTlVTRUQobG93
ZXJCb3VuZCwgc2tld2VkVGltZSA+PSBsb3dlckJvdW5kKTsKLSAgICBBU1NFUlRfVU5VU0VEKHVw
cGVyQm91bmQsIHNrZXdlZFRpbWUgPD0gdXBwZXJCb3VuZCk7Ci0jZW5kaWYKLQotICAgIHJldHVy
biBza2V3ZWRUaW1lOwotfQotCiBQZXJmb3JtYW5jZVRpbWluZzo6UGVyZm9ybWFuY2VUaW1pbmco
RnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKIHsKQEAgLTk1LDcgKzcxLDcgQEAg
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQoKSBj
b25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOworICAgIHJldHVy
biB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CiB9CiAK
IHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCgp
IGNvbnN0CkBAIC0xMDQsMTAgKzgwLDEwIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8
fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KQorICAgIGlmICh0aW1p
bmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQ
cmV2aW91c0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50
ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQpOworICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRFdmVudFN0YXJ0KCkpOwogfQogCiB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kKCkgY29u
c3QKQEAgLTExNiwxMCArOTIsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjp1bmxvYWRFdmVudEVuZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8fCAhdGlt
aW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KQorICAgIGlmICh0aW1pbmctPmhh
c0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91
c0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1p
bGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2ZW50RW5kKTsKKyAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+dW5sb2FkRXZlbnRFbmQoKSk7CiB9CiAKIHVuc2lnbmVkIGxv
bmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RTdGFydCgpIGNvbnN0CkBAIC0xMjgs
MTAgKzEwNCwxMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGly
ZWN0U3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAgaWYgKHRpbWluZy0+
aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdFN0YXJ0KTsKKyAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFydCgpKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0
CkBAIC0xNDAsMTAgKzExNiwxMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OnJlZGlyZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KQorICAgIGlmICh0
aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RFbmQpOworICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdEVuZCgpKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0KCkgY29u
c3QKQEAgLTE1Miw3ICsxMjgsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmZldGNoU3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5mZXRjaFN0YXJ0
KTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hTdGFydCgp
KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29r
dXBTdGFydCgpIGNvbnN0CkBAIC0yNjQsOCArMjQwLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKICAgICAvLyBGSVhNRTogUmVz
cG9uc2Ugc3RhcnQgbmVlZHMgdG8gYmUgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IHJlY2VpdmVkIGJ5
dGUuCiAgICAgLy8gSG93ZXZlciwgdGhlIFJlc291cmNlTG9hZFRpbWluZyBBUEkgY3VycmVudGx5
IG9ubHkgc3VwcG9ydHMgdGhlIHRpbWUKICAgICAvLyB0aGUgbGFzdCBoZWFkZXIgYnl0ZSB3YXMg
cmVjZWl2ZWQuIEZvciBtYW55IHJlc3BvbnNlcyB3aXRoIHJlYXNvbmFibGUKLSAgICAvLyBzaXpl
ZCBjb29raWVzLCB0aGUgSFRUUCBoZWFkZXJzIGZpdCBpbnRvIGEgc2luZ2xlIHBhY2tldCBzbyB0
aGlzIHRpbWUKLSAgICAvLyBpcyBiYXNpY2FsbHkgZXF1aXZhbGVudC4gQnV0IGZvciBzb21lIHJl
c3BvbnNlcywgcGFydGljdWxhcmx5IHRob3NlIHdpdGgKKyAgICAvLyBzaXplZCBjb29raWVzLCB0
aGUgSFRUUCBoZWFkZXJzIGZpdCBpbnRvIGEgc2luZ2xlIHBhY2tldCBzbyB0aGlzIHRpbWUgLy8g
aXMgYmFzaWNhbGx5IGVxdWl2YWxlbnQuIEJ1dCBmb3Igc29tZSByZXNwb25zZXMsIHBhcnRpY3Vs
YXJseSB0aG9zZSB3aXRoCiAgICAgLy8gaGVhZGVycyBsYXJnZXIgdGhhbiBhIHNpbmdsZSBwYWNr
ZXQsIHRoaXMgdGltZSB3aWxsIGJlIHRvbyBsYXRlLgogICAgIEFTU0VSVCh0aW1pbmctPnJlY2Vp
dmVIZWFkZXJzRW5kID49IDApOwogICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVU
b0Fic29sdXRlKHRpbWluZy0+cmVjZWl2ZUhlYWRlcnNFbmQpOwpAQCAtMjc3LDcgKzI1Miw3IEBA
IHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25z
dAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0lu
dGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZXNwb25zZUVuZCk7CisgICAgcmV0dXJuIHRvSW50
ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlc3BvbnNlRW5kKCkpOwogfQogCiB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcoKSBjb25zdApAQCAtMjg2LDcg
KzI2MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGlu
ZygpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7
CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tTG9hZGluZyk7
CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5k
b21Mb2FkaW5nKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpk
b21JbnRlcmFjdGl2ZSgpIGNvbnN0CkBAIC0yOTUsNyArMjcwLDcgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21JbnRlcmFjdGl2ZSgpIGNvbnN0CiAgICAgaWYgKCF0
aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vj
b25kcyh0aW1pbmctPmRvbUludGVyYWN0aXZlKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRv
SW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUludGVyYWN0aXZlKTsKIH0KIAogdW5zaWdu
ZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFy
dCgpIGNvbnN0CkBAIC0zMDQsNyArMjc5LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0
aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vj
b25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KTsKKyAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRF
dmVudFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpk
b21Db250ZW50TG9hZGVkRXZlbnRFbmQoKSBjb25zdApAQCAtMzEzLDcgKzI4OCw3IEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5k
KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRlZEV2ZW50RW5k
KTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmct
PmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJm
b3JtYW5jZVRpbWluZzo6ZG9tQ29tcGxldGUoKSBjb25zdApAQCAtMzIyLDcgKzI5Nyw3IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29tcGxldGUoKSBjb25zdAog
ICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVn
ZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db21wbGV0ZSk7CisgICAgcmV0dXJuIG1vbm90b25p
Y1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db21wbGV0ZSk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQoKSBjb25z
dApAQCAtMzMxLDcgKzMwNiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWlu
Zzo6bG9hZEV2ZW50U3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZl
bnRTdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRF
dmVudFN0YXJ0KCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OmxvYWRFdmVudEVuZCgpIGNvbnN0CkBAIC0zNDAsNyArMzE1LDcgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGlt
aW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT5sb2FkRXZlbnRFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT5sb2FkRXZlbnRFbmQoKSk7CiB9CiAKIERvY3VtZW50TG9hZGVyKiBQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9jdW1lbnRMb2FkZXIoKSBjb25zdApAQCAtMzgxLDIyICszNTYsMjAgQEAg
UmVzb3VyY2VMb2FkVGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KCkgY29uc3QKICAgICByZXR1cm4gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWlu
ZygpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNl
TG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50IHJlbGF0aXZlU2Vjb25kcykgY29uc3QKK3Vu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0
aXZlVG9BYnNvbHV0ZShpbnQgcmVsYXRpdmVNaWxsaXNlY29uZHMpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKHJlbGF0aXZlU2Vjb25kcyA+PSAwKTsKKyAgICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29u
ZHMgPj0gMCk7CiAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZVRpbWluZyA9IHJlc291
cmNlTG9hZFRpbWluZygpOwogICAgIEFTU0VSVChyZXNvdXJjZVRpbWluZyk7Ci0gICAgRG9jdW1l
bnRMb2FkVGltaW5nKiBkb2N1bWVudFRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOwotICAg
IEFTU0VSVChkb2N1bWVudFRpbWluZyk7Ci0KLSAgICAvLyBUaGUgUmVzb3VyY2VMb2FkVGltaW5n
IEFQSSdzIHJlcXVlc3RUaW1lIGlzIHRoZSBiYXNlIHRpbWUgdG8gd2hpY2ggYWxsCi0gICAgLy8g
b3RoZXIgbWFya3MgYXJlIHJlbGF0aXZlLiBTbyB0byBnZXQgYW4gYWJzb2x1dGUgdGltZSwgd2Ug
bXVzdCBhZGQgaXQgdG8KLSAgICAvLyB0aGUgcmVsYXRpdmUgbWFya3MuCi0gICAgLy8KLSAgICAv
LyBTaW5jZSBSZXNvdXJjZUxvYWRUaW1pbmdzIGNhbWUgZnJvbSB0aGUgbmV0d29yayBwbGF0Zm9y
bSBsYXllciwgd2UgbXVzdAotICAgIC8vIGNoZWNrIHRoZW0gZm9yIHNrZXcgYmVjYXVzZSB0aGV5
IG1heSBiZSBmcm9tIGFub3RoZXIgdGhyZWFkL3Byb2Nlc3MuCi0gICAgZG91YmxlIGJhc2VUaW1l
ID0gZ2V0UG9zc2libHlTa2V3ZWRUaW1lSW5Lbm93blJhbmdlKHJlc291cmNlVGltaW5nLT5yZXF1
ZXN0VGltZSwgZG9jdW1lbnRUaW1pbmctPmZldGNoU3RhcnQsIGRvY3VtZW50VGltaW5nLT5yZXNw
b25zZUVuZCk7Ci0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhiYXNlVGltZSkgKyBy
ZWxhdGl2ZVNlY29uZHM7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyhyZXNvdXJj
ZVRpbWluZy0+Y29udmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShkb2N1bWVudExv
YWRUaW1pbmcoKSwgcmVsYXRpdmVNaWxsaXNlY29uZHMpKTsKK30KKwordW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KGRvdWJsZSBtb25vdG9uaWNTZWNvbmRzKSBjb25zdAoreworICAgIEFTU0VSVChtb25vdG9uaWNT
ZWNvbmRzID49IDApOworICAgIGNvbnN0IERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9j
dW1lbnRMb2FkVGltaW5nKCk7CisgICAgQVNTRVJUKHRpbWluZyk7CisgICAgcmV0dXJuIHRvSW50
ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRp
bWUobW9ub3RvbmljU2Vjb25kcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKaW5kZXggMGMzNzM4MzI4MGEwMzIzZDcy
NmU5YTk3ODdjYTMwYzFlMzgzOTA3MS4uNDhkNTk4Y2FhNDY4ZDlkZDE3NWNmYWFkNTc2ZGMzMjM2
NmZmZmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaApAQCAtODEs
NiArODEsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRMb2Fk
VGltaW5nKCkgY29uc3Q7CiAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZUxvYWRUaW1p
bmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzb3VyY2VMb2FkVGltZVJlbGF0
aXZlVG9BYnNvbHV0ZShpbnQpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtb25vdG9u
aWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAKICAgICBGcmFtZSog
bV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlTG9hZFRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlTG9hZFRpbWluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ5ZGE0OGEzY2E1ZjEzMDUwYWNj
MDhmMjE5YWZhODU3NjE1NjNjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCisKKyNpbmNsdWRlICJE
b2N1bWVudExvYWRUaW1pbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitkb3VibGUgUmVz
b3VyY2VMb2FkVGltaW5nOjpjb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGNv
bnN0IERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRUaW1pbmcsIGludCBkZWx0YU1pbGxpc2Vj
b25kcykgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50VGltaW5nKQorICAgICAgICByZXR1cm4g
MC4wOworCisgICAgcmV0dXJuIGRvY3VtZW50VGltaW5nLT5jb252ZXJ0TW9ub3RvbmljVGltZVRv
RG9jdW1lbnRUaW1lKHJlcXVlc3RUaW1lICsgZGVsdGFNaWxsaXNlY29uZHMgLyAxMDAwLjApOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlTG9hZFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUxvYWRUaW1pbmcuaAppbmRleCAyNjlmYWQwMDI1ZDlhYWQ0MWU1MWI3MmFjYWZhYWFiNTZkZDIz
MjVmLi45NGM1NWQ5YmE0YjAxODA5NjI1ZDFiNjlhNDc4ZDA1MDZiYjFlMzNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgK
QEAgLTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVu
dExvYWRUaW1pbmc7CisKIGNsYXNzIFJlc291cmNlTG9hZFRpbWluZyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJlc291cmNlTG9hZFRpbWluZz4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlc291cmNlTG9hZFRpbWluZz4gY3JlYXRlKCkKQEAgLTc4LDggKzgwLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAotICAgIGRvdWJsZSBy
ZXF1ZXN0VGltZTsKLSAgICBpbnQgcHJveHlTdGFydDsKKyAgICAvLyBXZSB3YW50IHRvIHByZXNl
bnQgYSB1bmlmaWVkIHRpbWVsaW5lIHRvIEphdmFzY3JpcHQuIFVzaW5nIHdhbGx0aW1lIGlzIHBy
b2JsZW1hdGljLCBiZWNhdXNlIHRoZSBjbG9jayBtYXkgc2tldyB3aGlsZSByZXNvdXJjZXMKKyAg
ICAvLyBsb2FkLiBUbyBwcmV2ZW50IHRoYXQgc2tldywgd2UgcmVjb3JkIGEgc2luZ2xlIHJlZmVy
ZW5jZSB3YWxsdGltZSB3aGVuIHJvb3QgZG9jdW1lbnQgbmF2aWdhdGlvbiBiZWdpbnMuIEFsbCBv
dGhlciB0aW1lcyBhcmUKKyAgICAvLyByZWNvcmRlZCB1c2luZyBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKS4gV2hlbiBhIHRpbWUgbmVlZHMgdG8gYmUgcHJlc2VudGVkIHRvIEphdmFzY3Jp
cHQsIHdlIGJ1aWxkIGEgcHNldWRvLXdhbGx0aW1lCisgICAgLy8gdXNpbmcgdGhlIGZvbGxvd2lu
ZyBlcXVhdGlvbjoKKyAgICAvLyAgIHBzZXVkbyB0aW1lID0gZG9jdW1lbnQgd2FsbCByZWZlcmVu
Y2UgKyAocmVzb3VyY2UgcmVxdWVzdCB0aW1lIC0gZG9jdW1lbnQgbW9ub3RvbmljIHJlZmVyZW5j
ZSkgKyBkZWx0YU1pbGxpc2Vjb25kcyAvIDEwMDAuMC4KKyAgICBkb3VibGUgY29udmVydFJlc291
cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3Vt
ZW50VGltaW5nLCBpbnQgZGVsdGFNaWxsaXNlY29uZHMpIGNvbnN0OworCisgICAgZG91YmxlIHJl
cXVlc3RUaW1lOyAvLyBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB3aGVuIHRoZSBwb3J0
IHN0YXJ0ZWQgaGFuZGxpbmcgdGhpcyByZXF1ZXN0LgorICAgIGludCBwcm94eVN0YXJ0OyAvLyBU
aGUgcmVzdCBvZiB0aGVzZSBhcmUgbWlsbGlzZWNvbmQgZGVsdGFzLCB1c2luZyBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSwgZnJvbSByZXF1ZXN0VGltZS4KICAgICBpbnQgcHJveHlFbmQ7
CiAgICAgaW50IGRuc1N0YXJ0OwogICAgIGludCBkbnNFbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119047</attachid>
            <date>2011-12-13 11:20:38 -0800</date>
            <delta_ts>2011-12-13 12:48:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-58354-20111213112037.patch</filename>
            <type>text/plain</type>
            <size>57921</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2MyZjJhY2QzNWUzMWRk
OWNhYzM3YTFhNDdkNDFiNTlhMTg4OWZlNC4uY2VhMTY4NDcwY2I0MGNjMmIxYzY1MWQwMTJmN2Rm
YzQxZGFmZjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDExLTEyLTEzICBKYW1l
cyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbTmF2aWdhdGlv
biBUaW1pbmddIFVzZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSBpbnN0ZWFkIG9mIGN1
cnJlbnRUaW1lKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlbGllcyBvbiBleGlzdGluZyB3ZWJ0aW1pbmctKiB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOiBVc2Ug
bW9ub3RvbmljIHRpbWVzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKTog
Q29udmVydCBtb25vdG9uaWNGaW5pc2hUaW1lIHRvIHdhbGwgdGltZSBpZiBuZWVkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOiBDb252ZXJ0IG1vbm90b25pYyByZXF1ZXN0VGlt
ZSB0byB3YWxsIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNl
UmVzcG9uc2UpOiBQbHVtYmluZyBmb3IgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvckNhY2hlZFJlc291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpE
b2N1bWVudExvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5n
OjpzZXROYXZpZ2F0aW9uU3RhcnQpOiBEZXRlcm1pbmUgcmVmZXJlbmNlIHRpbWUgYW5kIHJvb3Qg
cmVmZXJlbmNlIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OmFk
ZFJlZGlyZWN0KTogTW92ZWQgbG9naWMgZnJvbSBNYWluUmVzb3VyY2VMb2FkZXIuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OmNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1
bWVudFRpbWUpOiBIZWxwZXIgdG8gY29tcHV0ZSB3YWxsIHRpbWUgZnJvbSBtb25vdG9uaWMgdGlt
ZS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmg6IFR1cm5lZCBpbnRvIGNs
YXNzLiBNYWRlIHRpbWVzIG1vbm90b25pYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZFRpbWluZzo6c2V0VW5sb2FkRXZlbnRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRUaW1pbmc6OnNldFVubG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZFRpbWluZzo6c2V0UmVkaXJlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRUaW1pbmc6OnNldFJlZGlyZWN0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZFRpbWluZzo6c2V0RmV0Y2hTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRUaW1pbmc6OnNldFJlc3BvbnNlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZFRpbWluZzo6c2V0TG9hZEV2ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkVGltaW5nOjpzZXRMb2FkRXZlbnRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkVGltaW5nOjpzZXRIYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnVubG9hZEV2ZW50RW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6cmVkaXJlY3RTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnJlZGlyZWN0RW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6cmVkaXJlY3RDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OmZldGNoU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkVGltaW5nOjpyZXNwb25zZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRUaW1pbmc6OmxvYWRFdmVudFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZFRpbWluZzo6bG9hZEV2ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZFRpbWluZzo6aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRUaW1pbmc6Omhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1p
dFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKToKKyAgICAgICAgKiBsb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxv
YWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOiBNb3ZlZCBsb2dpYyB0byBEb2N1
bWVudExvYWRUaW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKTogVXNlIG1vbm90b25pYyB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6TWFp
blJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IFJlbW92ZWQgZGlzcGF0Y2hUaW1lZEV2ZW50LiBJ
dCBkb2Vzbid0IHJlYWxseSBoZWxwIGluIHRoZSBuZXcgbW9kZWwuCisgICAgICAgICogcGFnZS9Q
ZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VO
YXZpZ2F0aW9uOjpyZWRpcmVjdENvdW50KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmNwcDogUmVtb3ZlZCBza2V3IGNvcnJlY3Rpb24gY29kZS4gVGhpcyBzaG91bGQgbmV2ZXIg
aGFwcGVuIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0
aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2
ZW50U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2
ZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdEVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZmV0Y2hTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQpOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUludGVyYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNv
bHV0ZSk6IFVzZWQgZm9yIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKTogVXNl
ZCBmb3IgRG9jdW1lbnRUaW1pbmcgYW5kIERvY3VtZW50TG9hZFRpbWluZy4KKyAgICAgICAgKiBw
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUxvYWRUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5n
Ojpjb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb24g
dG8gY29udmVydCB0byB3YWxsIHRpbWVzLiBBZGRlZCBpbnN0cnVjdGlvbnMgZm9yIHVzZS4KKwog
MjAxMS0xMi0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ0MjA+IERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3Mg
YXJvdW5kIG1vcmUgY29kZSB3aGVyZSB3ZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmJkZDM5
ZWU5NGFiNjNmOTI5MDU3ZjE1NzM2ZjRlYjcwYzM4MmI2Mi4uZDY4NGFkYTNkZGM3NzRmNzAyOTcw
OGYwZmQ0YzVkNWUxNWUyYzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkxNSw2ICs5MTUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNw
cAorICAgIGxvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCiAgICAgbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAogICAgIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCiAgICAg
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTE3Niw2ICsxMTc3LDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGlt
aW5nLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDlhM2RiNjIwMjQwZmQxNDQ2YzA3OGZmNmMyNjZjMTI0NzQ4NzBlOGYuLjk4
MTM3MDY0MWQ4ZTYyYmNiOTJiYjRiNzIxMDkwNTZlODlhMTgwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjE4Nyw5ICsyMTg3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggXAotCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIFwKQEAgLTI4NDAsNiArMjg0MSw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VMb2FkSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlTG9hZFByaW9yaXR5LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZDAyYzJiODJi
YTE4OGFkMjA3NmMyOWVkZmFlOGE4Y2U4OWI3YjZiMy4uYzY1OTg0N2JiODgwOTg2MDU4OGUxODI0
NWRmOTA0YWQ5NTUzNmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05MTQsNiArOTE0LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgXAogICAgIGxv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBcCiAgICAgbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBcCisgICAgbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5jcHAgXAogICAgIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgXAogICAgIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwIFwKQEAgLTExMTAsNiArMTExMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25l
dHdvcmsvUHJveHlTZXJ2ZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgXAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxhckV4
cHJlc3Npb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzNzc3ZTBiNGVmMWZlYzI3YjA5ZDQ4
ODEyNTUwNDU5MDNmODBhZTgyLi5lNjU4ZThiNjRiNDQyMWE3NzQ2NGY2NzkxZTRhOWY5NzNmMDlk
NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yODE4LDYgKzI4MTgsNyBAQAogICAgICAgICAgICAg
J2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0Rv
Y3VtZW50TG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
JywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgnLApAQCAt
NDE4Nyw2ICs0MTg4LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
RXJyb3JCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCAzYTYwMmFiZGQ2NTA3OGM5ZGQxNjU1ZWE1ZmM0NmZjNjBmMWJkNGRlLi4xODk3
YTRmZDgxNGI0MTViMzUyODVjNGY3MTk1ZmY1NzBhMDJmODRiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjU3NDYsMTUgKzI1NzQ2LDE5IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRl
clxEb2N1bWVudExvYWRlci5jcHAiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9jdW1l
bnRMb2FkVGltaW5nLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZGVyLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxsb2FkZXJcRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExvYWRUaW1pbmcuaCIKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExvYWRlci5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExv
YWRlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkBAIC0zMDIwNSw2ICszMDIwOSwx
MCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUxvYWRUaW1pbmcuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29y
a1xSZXNvdXJjZUxvYWRUaW1pbmcuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZjgwYWQ2
M2NjYmUxZGRjN2QxYzNhMDBlZWVjYjhlZGZmYTc3NDYwLi5kOTY1YjY2ZDE3MjUzMGQxMTdlYzM1
MzkyMzkwZTBjMWJhMjgyOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODA5LDYgKzI4MDksOCBAQAogCQk4NUY3NEUwQTBB
QThERjhDMDAwREMyODQgLyogRE9NQ1NTVW5rbm93blJ1bGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMyREQ1MEFBOEM5
QkUwMDdEM0I3RCAvKiBET01DU1NVbmtub3duUnVsZS5oICovOyB9OwogCQk4NUZGMzE1QTBBQUZC
RkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtl
eWJvYXJkRXZlbnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtl
eWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLzsg
fTsKKwkJODYxQzJFQTQxM0ZCNEZERDAwMDYyQUJCIC8qIERvY3VtZW50TG9hZFRpbWluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjFDMkVBMzEz
RkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGltaW5nLmNwcCAqLzsgfTsKKwkJODYxQzJF
QTYxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjFDMkVBNTEzRkI0RkZGMDAwNjJB
QkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCAqLzsgfTsKIAkJODYyNDNEMDExMUJDMzFGNzAw
Q0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNB
cnJheUJ1ZmZlclZpZXdIZWxwZXIuaCAqLzsgfTsKIAkJODZEOTgyRjcxMjVDMTU0MDAwQUQ5RTNE
IC8qIERvY3VtZW50VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4OTBBRTBF
MTEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhD
IC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCAqLzsgfTsKQEAgLTEwMDI3LDYgKzEwMDI5LDggQEAK
IAkJODVGNTZBNzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RkYzMTU4MEFB
RkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1RkYzMTU5MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUtleWJvYXJkRXZlbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MUMyRUEzMTNGQjRGREQwMDA2MkFC
QiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG9jdW1lbnRMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRUaW1pbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAw
NkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZEOTgyRjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50VGltaW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3Rv
cnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9y
eVJlYWRlckJhc2UuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0NDUsNiArMTU0NDksNyBAQAogCQkJCTUxNEM3
NjY2MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggKi8sCiAJCQkJ
NDkyODYzOTgxMjUzQjhGQzAwRjc5MkQ2IC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQlF
NDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLywKKwkJ
CQk4NjFDMkVBNTEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCAqLywK
IAkJCQk4QTgxQkY4NDExRENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGltaW5nLmggKi8s
CiAJCQkJNTE0Qzc2NjcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3Bw
ICovLAogCQkJCTUxNEM3NjY4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNl
LmggKi8sCkBAIC0xOTk5NSw5ICsyMDAwMCwxMCBAQAogCQkJCUUxQzQxNjExMEY2NTYyRkQwMDky
RDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCAqLywKIAkJCQlFMUM0MTVERDBGNjU1
RDdDMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgKi8sCiAJ
CQkJRTFDNDE1RDkwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaCAqLywKKwkJCQk4NjFDMkVBMzEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2Fk
VGltaW5nLmNwcCAqLywKKwkJCQk4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRM
b2FkVGltaW5nLmggKi8sCiAJCQkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50
TG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcxRTBBREJBNURFMDBBNDU1NEQgLyogRG9jdW1lbnRM
b2FkZXIuaCAqLywKLQkJCQk4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRMb2Fk
VGltaW5nLmggKi8sCiAJCQkJMEI5MDU2MTUwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAgKi8sCiAJCQkJMEI5MDU2MTYwRjI1NzhCRTAwOTVGRjZBIC8qIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oICovLAogCQkJCTk3Mzg4OTlFMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgKi8sCkBAIC0yMjEwOCw4ICsyMjExNCw4IEBACiAJCQkJ
QjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNjU2RDM3MzYwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRMb2Fk
VGltaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTZEMzczNjBBREJBNURFMDBBNDU1NEQgLyog
RG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUVEMkJBODNDMDlBMjRCOTEwMDZD
MEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwNTdGQTYxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNTQ0OCw2ICsyNTQ1NCw3IEBACiAJCQkJQjJGMzRGRTkwRTgyRjgy
NzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNDMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODE4NUYz
RjA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk4NjFDMkVBNDEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGltaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UwMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyog
RG9jdW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4MUM2QTcxMzgyOEI1
RDAwMTJBNjJBIC8qIERvY3VtZW50TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcwNjks
NiArMjcwNzYsNyBAQAogCQkJCTUxQUEzRjZGMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxv
YWRlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3M0UzMjU2MTA4ODNCN0MwMDVCQzQ5MyAv
KiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMENFNThGODEy
NUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTg2MUMyRUE2MTNGQjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3
NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAyMWI5NmZjMjY5NWIyMzI2OGZmZTYzMjUx
ODgyOWUxZGNiNGRkZTIuLjEyZTMxYTY4MjZkZThkN2EwOWM0ZjA4YjI5Y2E5MTZiMDczZTliNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0NywxNSArMTA0NywxNSBAQCB2b2lkIERv
Y3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKICAgICBzd2l0Y2gg
KHJlYWR5U3RhdGUpIHsKICAgICBjYXNlIExvYWRpbmc6CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dFRpbWluZy5kb21Mb2FkaW5nKQotICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Mb2Fk
aW5nID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tTG9h
ZGluZyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEludGVyYWN0aXZlOgogICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tSW50
ZXJhY3RpdmUpCi0gICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tSW50ZXJhY3Rp
dmUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb21wbGV0ZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbXBsZXRl
KQotICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db21wbGV0ZSA9IGN1cnJlbnRUaW1l
KCk7CisgICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbXBsZXRlID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDI3OCwx
MCArNDI3OCwxMCBAQCB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogICAgIEFTU0VS
VCghc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgfHwgbV9yZWFkeVN0YXRlICE9IExvYWRpbmcp
OwogICAgIHNldFBhcnNpbmcoZmFsc2UpOwogICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21D
b250ZW50TG9hZGVkRXZlbnRTdGFydCkKLSAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250
ZW50TG9hZGVkRXZlbnRTdGFydCA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIG1fZG9jdW1lbnRU
aW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRP
TUNvbnRlbnRMb2FkZWRFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKICAgICBpZiAoIW1fZG9jdW1lbnRU
aW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKQotICAgICAgICBtX2RvY3VtZW50VGltaW5n
LmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIG1fZG9j
dW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CiAKICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmID0gZnJhbWUoKSkgewogICAg
ICAgICAvLyBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkgbWlnaHQgZW5kIHVwIGNhbGxp
bmcgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKSBpZiBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDc4OTQy
MmFhMjBjYTkzYmQ2ODg1YTlhMzQ2OGEwNGU0NWFmYWVjOC4uZWYzZjA2OGJmZWU1MzEyOTVlNDI0
YTkwZmM4NGVhNzE3NjFlODczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTUzNSwxMSArNTM1LDIxIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVuCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVE
YXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgbW9ub3RvbmljRmluaXNoVGltZSkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpOworICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CisgICAg
aWYgKCF0aW1lbGluZUFnZW50ICYmICFyZXNvdXJjZUFnZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBkb3VibGUgZmluaXNoVGltZSA9IDAuMDsKKyAgICAvLyBGSVhNRTogRXhwb3NlIGFsbCBv
ZiB0aGUgdGltaW5nIGRldGFpbHMgdG8gaW5zcGVjdG9yIGFuZCBoYXZlIGl0IGNhbGN1bGF0ZSBm
aW5pc2hUaW1lLgorICAgIGlmIChtb25vdG9uaWNGaW5pc2hUaW1lKQorICAgICAgICBmaW5pc2hU
aW1lID0gbG9hZGVyLT50aW1pbmcoKS0+Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGlt
ZShtb25vdG9uaWNGaW5pc2hUaW1lKTsKKworICAgIGlmICh0aW1lbGluZUFnZW50KQogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFs
c2UsIGZpbmlzaFRpbWUpOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQor
ICAgIGlmIChyZXNvdXJjZUFnZW50KQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hM
b2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAw
MzU0N2YwNjcwMzk5NDY4NzBkYmFlN2MzZDQxYzFlYTJlNmU1ZmYxLi44ZjJjOGM4N2E4NTZhNjFi
YjVmMWIzM2E1Y2Y4ZTMzZjg1OTczN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZQogICAgIHJldHVybiBoZWFkZXJzT2JqZWN0OwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNv
bnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcm
IHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiB0aW1pbmdPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHRp
bWluZ09iamVjdC0+c2V0TnVtYmVyKCJyZXF1ZXN0VGltZSIsIHRpbWluZy5yZXF1ZXN0VGltZSk7
CisgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInJlcXVlc3RUaW1lIiwgdGltaW5nLmNvbnZl
cnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUobG9hZGVyLT50aW1pbmcoKSwgMCkpOwog
ICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJwcm94eVN0YXJ0IiwgdGltaW5nLnByb3h5U3Rh
cnQpOwogICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJwcm94eUVuZCIsIHRpbWluZy5wcm94
eUVuZCk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoImRuc1N0YXJ0IiwgdGltaW5nLmRu
c1N0YXJ0KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUgogICAg
IHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2UKICAgICByZXNwb25zZU9iamVjdC0+c2V0TnVtYmVyKCJjb25uZWN0aW9uSWQiLCByZXNw
b25zZS5jb25uZWN0aW9uSUQoKSk7CiAgICAgcmVzcG9uc2VPYmplY3QtPnNldEJvb2xlYW4oImZy
b21EaXNrQ2FjaGUiLCByZXNwb25zZS53YXNDYWNoZWQoKSk7CiAgICAgaWYgKHJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpKQotICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJ0
aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5n
KCkpKTsKKyAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRP
YmplY3RGb3JUaW1pbmcoKnJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCBsb2FkZXIpKTsK
IAogICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkpIHsKICAgICAgICAgcmVzcG9u
c2VPYmplY3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNw
b25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycykpOwpAQCAtMTY4LDEzICsx
NjgsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4gcmVzcG9uc2VPYmpl
Y3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCitz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVz
b3VyY2UoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlT2JqZWN0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXNvdXJjZU9iamVjdC0+c2V0U3Ry
aW5nKCJ1cmwiLCBjYWNoZWRSZXNvdXJjZS51cmwoKSk7CiAgICAgcmVzb3VyY2VPYmplY3QtPnNl
dFN0cmluZygidHlwZSIsIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlU3Ry
aW5nKGNhY2hlZFJlc291cmNlKSk7CiAgICAgcmVzb3VyY2VPYmplY3QtPnNldE51bWJlcigiYm9k
eVNpemUiLCBjYWNoZWRSZXNvdXJjZS5lbmNvZGVkU2l6ZSgpKTsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2Fj
aGVkUmVzb3VyY2UucmVzcG9uc2UoKSwgbG9hZGVyKTsKICAgICBpZiAocmVzb3VyY2VSZXNwb25z
ZSkKICAgICAgICAgcmVzb3VyY2VPYmplY3QtPnNldE9iamVjdCgicmVzcG9uc2UiLCByZXNvdXJj
ZVJlc3BvbnNlKTsKICAgICByZXR1cm4gcmVzb3VyY2VPYmplY3Q7CkBAIC0yMjEsNyArMjIxLDcg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBlbHNlCiAgICAgICAgIGNhbGxTdGFja1Zh
bHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUo
KSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwotICAgIG1fZnJvbnRlbmQtPnJl
cXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5m
cmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3Ry
aW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGlt
ZSgpLCBpbml0aWF0b3JPYmplY3QsIGNhbGxTdGFja1ZhbHVlLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSkpOworICAgIG1fZnJvbnRlbmQtPnJlcXVlc3RX
aWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgp
KSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCks
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGltZSgpLCBp
bml0aWF0b3JPYmplY3QsIGNhbGxTdGFja1ZhbHVlLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVz
cG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFya1Jl
c291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNw
b25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSk7CisgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OlJlc291cmNlVHlwZSB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlOwog
ICAgIGxvbmcgY2FjaGVkUmVzb3VyY2VTaXplID0gMDsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KERvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNv
dXJjZShyZXF1ZXN0SWQsIHJlc291cmNlKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBp
bml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBs
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAotICAgIG1fZnJvbnRlbmQtPnJlcXVl
c3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWls
ZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSkpOworICAgIG1fZnJvbnRlbmQtPnJl
cXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwg
bG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBi
dWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJmNWVj
YmI5Njk4OGNjOWZiZWNhNDFjNGEyODdhYTBhODFiZDlhMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09H
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgorCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RvY3VtZW50TG9hZFRpbWluZzo6RG9jdW1lbnRMb2Fk
VGltaW5nKCkKKyAgICA6IG1fcmVmZXJlbmNlTW9ub3RvbmljVGltZSgwLjApCisgICAgLCBtX3Jl
ZmVyZW5jZVdhbGxUaW1lKDAuMCkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXJ0KDAuMCkKKyAgICAs
IG1fdW5sb2FkRXZlbnRTdGFydCgwLjApCisgICAgLCBtX3VubG9hZEV2ZW50RW5kKDAuMCkKKyAg
ICAsIG1fcmVkaXJlY3RTdGFydCgwLjApCisgICAgLCBtX3JlZGlyZWN0RW5kKDAuMCkKKyAgICAs
IG1fcmVkaXJlY3RDb3VudCgwKQorICAgICwgbV9mZXRjaFN0YXJ0KDAuMCkKKyAgICAsIG1fcmVz
cG9uc2VFbmQoMC4wKQorICAgICwgbV9sb2FkRXZlbnRTdGFydCgwLjApCisgICAgLCBtX2xvYWRF
dmVudEVuZCgwLjApCisgICAgLCBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoZmFsc2UpCisgICAg
LCBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCit7Cit9CisKK3ZvaWQg
RG9jdW1lbnRMb2FkVGltaW5nOjptYXJrTmF2aWdhdGlvblN0YXJ0KEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uU3RhcnQgJiYgIW1f
cmVmZXJlbmNlTW9ub3RvbmljVGltZSAmJiAhbV9yZWZlcmVuY2VXYWxsVGltZSk7CisKKyAgICBp
ZiAoZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgPT0gZnJhbWUpIHsKKyAgICAgICAgbV9uYXZp
Z2F0aW9uU3RhcnQgPSBtX3JlZmVyZW5jZU1vbm90b25pY1RpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKKyAgICAgICAgbV9yZWZlcmVuY2VXYWxsVGltZSA9IGN1cnJlbnRUaW1l
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRG9jdW1lbnQqIHJvb3REb2N1bWVudCA9IGZyYW1l
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgICAgICBBU1NFUlQocm9vdERv
Y3VtZW50KTsKKyAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiByb290VGltaW5nID0gcm9vdERv
Y3VtZW50LT5sb2FkZXIoKS0+dGltaW5nKCk7CisgICAgICAgIG1fcmVmZXJlbmNlTW9ub3Rvbmlj
VGltZSA9IHJvb3RUaW1pbmctPm1fcmVmZXJlbmNlTW9ub3RvbmljVGltZTsKKyAgICAgICAgbV9y
ZWZlcmVuY2VXYWxsVGltZSA9IHJvb3RUaW1pbmctPm1fcmVmZXJlbmNlV2FsbFRpbWU7CisgICAg
ICAgIG1fbmF2aWdhdGlvblN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgfQorfQorCit2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6YWRkUmVkaXJlY3QoY29uc3QgS1VS
TCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwpCit7CisgICAgbV9y
ZWRpcmVjdENvdW50Kys7CisgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCisgICAgICAgIG1fcmVk
aXJlY3RTdGFydCA9IG1fZmV0Y2hTdGFydDsKKyAgICBtX3JlZGlyZWN0RW5kID0gbV9mZXRjaFN0
YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgLy8gQ2hlY2sgaWYgdGhl
IHJlZGlyZWN0ZWQgdXJsIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSByZWRpcmVjdGluZyB1cmwn
cyB0aW1pbmcgaW5mb3JtYXRpb24uCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVj
dGVkU2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0ZWRVcmwp
OworICAgIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9ICFyZWRpcmVjdGVkU2VjdXJpdHlPcmln
aW4tPmNhblJlcXVlc3QocmVkaXJlY3RpbmdVcmwpOworfQorCitkb3VibGUgRG9jdW1lbnRMb2Fk
VGltaW5nOjpjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKGRvdWJsZSBtb25vdG9u
aWNUaW1lKSBjb25zdAoreworICAgIGlmICghbW9ub3RvbmljVGltZSkKKyAgICAgICAgcmV0dXJu
IDAuMDsKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VXYWxsVGltZSArIG1vbm90b25pY1RpbWUgLSBt
X3JlZmVyZW5jZU1vbm90b25pY1RpbWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAppbmRleCBkNGFhN2QwYzk1
ZWE4OTdhYWE4OTEwOGE3ZWY4YjZhZDg5MDhlYTdmLi4wZTY0YTE4MmJiZmM2M2IwYThkMWY3MzRi
NGQ4YWEzZDcyZThjMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5oCkBAIC0yNiwzOSArMjYsNjIgQEAKICNpZm5kZWYgRG9jdW1lbnRMb2FkVGltaW5nX2gK
ICNkZWZpbmUgRG9jdW1lbnRMb2FkVGltaW5nX2gKIAorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBEb2N1bWVudExvYWRUaW1pbmcg
ewotICAgIERvY3VtZW50TG9hZFRpbWluZygpCi0gICAgICAgIDogbmF2aWdhdGlvblN0YXJ0KDAu
MCkKLSAgICAgICAgLCB1bmxvYWRFdmVudFN0YXJ0KDAuMCkKLSAgICAgICAgLCB1bmxvYWRFdmVu
dEVuZCgwLjApCi0gICAgICAgICwgcmVkaXJlY3RTdGFydCgwLjApCi0gICAgICAgICwgcmVkaXJl
Y3RFbmQoMC4wKQotICAgICAgICAsIHJlZGlyZWN0Q291bnQoMCkKLSAgICAgICAgLCBmZXRjaFN0
YXJ0KDAuMCkKLSAgICAgICAgLCByZXNwb25zZUVuZCgwLjApCi0gICAgICAgICwgbG9hZEV2ZW50
U3RhcnQoMC4wKQotICAgICAgICAsIGxvYWRFdmVudEVuZCgwLjApCi0gICAgICAgICwgaGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdChmYWxzZSkKLSAgICAgICAgLCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91
c0RvY3VtZW50KGZhbHNlKQotICAgIHsKLSAgICB9CitjbGFzcyBGcmFtZTsKK2NsYXNzIEtVUkw7
CisKK2NsYXNzIERvY3VtZW50TG9hZFRpbWluZyB7CitwdWJsaWM6CisgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKCk7CisKKyAgICB2b2lkIG1hcmtOYXZpZ2F0aW9uU3RhcnQoRnJhbWUqKTsKKyAgICB2
b2lkIGFkZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiBy
ZWRpcmVjdGVkVXJsKTsKKyAgICBkb3VibGUgY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50
VGltZShkb3VibGUgbW9ub3RvbmljVGltZSkgY29uc3Q7CisKKyAgICB2b2lkIG1hcmtVbmxvYWRF
dmVudFN0YXJ0KCkgeyBtX3VubG9hZEV2ZW50U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsgfQorICAgIHZvaWQgbWFya1VubG9hZEV2ZW50RW5kKCkgeyBtX3VubG9hZEV2ZW50
RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIG1hcmtSZWRp
cmVjdFN0YXJ0KCkgeyBtX3JlZGlyZWN0U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsgfQorICAgIHZvaWQgbWFya1JlZGlyZWN0RW5kKCkgeyBtX3JlZGlyZWN0RW5kID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICB2b2lkIG1hcmtGZXRjaFN0YXJ0KCkg
eyBtX2ZldGNoU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorICAgIHZv
aWQgc2V0UmVzcG9uc2VFbmQoZG91YmxlIG1vbm90b25pY1RpbWUpIHsgbV9yZXNwb25zZUVuZCA9
IG1vbm90b25pY1RpbWU7IH0KKyAgICB2b2lkIG1hcmtMb2FkRXZlbnRTdGFydCgpIHsgbV9sb2Fk
RXZlbnRTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgdm9pZCBt
YXJrTG9hZEV2ZW50RW5kKCkgeyBtX2xvYWRFdmVudEVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOyB9CisKKyAgICB2b2lkIHNldEhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1l
bnQoYm9vbCB2YWx1ZSkgeyBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQgPSB2YWx1
ZTsgfQorCisgICAgZG91YmxlIG5hdmlnYXRpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZl
cnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9uYXZpZ2F0aW9uU3RhcnQpOyB9CisgICAg
ZG91YmxlIHVubG9hZEV2ZW50U3RhcnQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3Rvbmlj
VGltZVRvRG9jdW1lbnRUaW1lKG1fdW5sb2FkRXZlbnRTdGFydCk7IH0KKyAgICBkb3VibGUgdW5s
b2FkRXZlbnRFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1l
bnRUaW1lKG1fdW5sb2FkRXZlbnRFbmQpOyB9CisgICAgZG91YmxlIHJlZGlyZWN0U3RhcnQoKSBj
b25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVkaXJl
Y3RTdGFydCk7IH0KKyAgICBkb3VibGUgcmVkaXJlY3RFbmQoKSBjb25zdCB7IHJldHVybiBjb252
ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVkaXJlY3RFbmQpOyB9CisgICAgc2hv
cnQgcmVkaXJlY3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDb3VudDsgfQorICAg
IGRvdWJsZSBmZXRjaFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVU
b0RvY3VtZW50VGltZShtX2ZldGNoU3RhcnQpOyB9CisgICAgZG91YmxlIHJlc3BvbnNlRW5kKCkg
Y29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX3Jlc3Bv
bnNlRW5kKTsgfQorICAgIGRvdWJsZSBsb2FkRXZlbnRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9sb2FkRXZlbnRTdGFydCk7IH0KKyAg
ICBkb3VibGUgbG9hZEV2ZW50RW5kKCkgY29uc3QgeyByZXR1cm4gY29udmVydE1vbm90b25pY1Rp
bWVUb0RvY3VtZW50VGltZShtX2xvYWRFdmVudEVuZCk7IH0KKyAgICBib29sIGhhc0Nyb3NzT3Jp
Z2luUmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7IH0K
KyAgICBib29sIGhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQ7IH0KIAotICAgIGRvdWJsZSBuYXZp
Z2F0aW9uU3RhcnQ7Ci0gICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQ7Ci0gICAgZG91YmxlIHVu
bG9hZEV2ZW50RW5kOwotICAgIGRvdWJsZSByZWRpcmVjdFN0YXJ0OwotICAgIGRvdWJsZSByZWRp
cmVjdEVuZDsKLSAgICBzaG9ydCByZWRpcmVjdENvdW50OwotICAgIGRvdWJsZSBmZXRjaFN0YXJ0
OwotICAgIGRvdWJsZSByZXNwb25zZUVuZDsKLSAgICBkb3VibGUgbG9hZEV2ZW50U3RhcnQ7Ci0g
ICAgZG91YmxlIGxvYWRFdmVudEVuZDsKLSAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7
Ci0gICAgYm9vbCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OworcHJpdmF0ZToKKyAg
ICBkb3VibGUgbV9yZWZlcmVuY2VNb25vdG9uaWNUaW1lOworICAgIGRvdWJsZSBtX3JlZmVyZW5j
ZVdhbGxUaW1lOworICAgIGRvdWJsZSBtX25hdmlnYXRpb25TdGFydDsKKyAgICBkb3VibGUgbV91
bmxvYWRFdmVudFN0YXJ0OworICAgIGRvdWJsZSBtX3VubG9hZEV2ZW50RW5kOworICAgIGRvdWJs
ZSBtX3JlZGlyZWN0U3RhcnQ7CisgICAgZG91YmxlIG1fcmVkaXJlY3RFbmQ7CisgICAgc2hvcnQg
bV9yZWRpcmVjdENvdW50OworICAgIGRvdWJsZSBtX2ZldGNoU3RhcnQ7CisgICAgZG91YmxlIG1f
cmVzcG9uc2VFbmQ7CisgICAgZG91YmxlIG1fbG9hZEV2ZW50U3RhcnQ7CisgICAgZG91YmxlIG1f
bG9hZEV2ZW50RW5kOworICAgIGJvb2wgbV9oYXNDcm9zc09yaWdpblJlZGlyZWN0OworICAgIGJv
b2wgbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OwogfTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGM0YjA3ZTY4ZDExNTdjZjk1MjdiZjBmYmVkNWZjN2VjMDlhYjc5YmQuLjQ0NjY0NmIz
YWVjMmE2MTMxY2U1OTM1MDNmNTg4NDlhZDM4NTFlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtMzc2LDEwICszNzYsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3Rv
cExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0aW1lIGludG8gZnJlZWQgbWVtb3J5LgogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZURpc21p
c3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gVW5sb2FkRGlzbWlzc2FsOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGRvY3VtZW50TG9hZGVyICYmICFkb2N1bWVudExvYWRlci0+dGltaW5n
KCktPnVubG9hZEV2ZW50U3RhcnQgJiYgIWRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2Fk
RXZlbnRFbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlciAm
JiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVudFN0YXJ0KCkgJiYgIWRvY3Vt
ZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2FkRXZlbnRFbmQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXIt
PnRpbWluZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1pbmctPm5h
dmlnYXRpb25TdGFydCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPmRpc3BhdGNoVGltZWRFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS0+ZG9tV2lu
ZG93KCktPmRvY3VtZW50KCksICZ0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQsICZ0aW1pbmctPnVu
bG9hZEV2ZW50RW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGltaW5n
LT5uYXZpZ2F0aW9uU3RhcnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5n
LT5tYXJrVW5sb2FkRXZlbnRTdGFydCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5k
b21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
aW5nLT5tYXJrVW5sb2FkRXZlbnRFbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNw
YXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE3NzEsNyArMTc3Myw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKHBkbCkgewogICAgICAgICAv
LyBDaGVjayBpZiB0aGUgZGVzdGluYXRpb24gcGFnZSBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUg
cHJldmlvdXMgcGFnZSdzIHRpbWluZyBpbmZvcm1hdGlvbi4KICAgICAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGRsLT5y
ZXF1ZXN0KCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+aGFz
U2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCA9IHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0
KG1fcHJldmlvdXNVcmwpOworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+c2V0
SGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVz
dChtX3ByZXZpb3VzVXJsKSk7CiAgICAgfQogCiAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENh
bmNlbGxlZE9yRmluaXNoZWQoKSBoZXJlIHNvIHRoYXQgdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUg
aXMgbm90aWZpZWQgdGhhdCB0aGUgcmVkaXJlY3QncwpAQCAtMjMyNyw4ICsyMzI5LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgICAg
IG5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIs
IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCA9IGN1
cnJlbnRUaW1lKCk7CisgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+
bWFya05hdmlnYXRpb25TdGFydChmcmFtZSgpKTsKIAogICAgIGlmICghbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCiAgICAg
ICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygpOwpAQCAtMzAy
OCwxMSArMzAyOSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJv
bUNhY2hlZFBhZ2UoKQogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0
KCk7CiAKICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0gICAgCisKICAgICAv
LyBTaG91bGQgaGF2ZSB0aW1pbmcgZGF0YSBmcm9tIHByZXZpb3VzIHRpbWUocykgdGhlIHBhZ2Ug
d2FzIHNob3duLgotICAgIEFTU0VSVChwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmln
YXRpb25TdGFydCk7CisgICAgQVNTRVJUKHByb3Zpc2lvbmFsTG9hZGVyLT50aW1pbmcoKS0+bmF2
aWdhdGlvblN0YXJ0KCkpOwogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5yZXNldFRpbWluZygpOwot
ICAgIHByb3Zpc2lvbmFsTG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0ID0gY3VycmVu
dFRpbWUoKTsgICAgCisgICAgcHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5tYXJrTmF2aWdh
dGlvblN0YXJ0KGZyYW1lKCkpOwogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRl
ZCh0cnVlKTsKICAgICBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmZhNWUwMmRkMzIzNDRhNGRhODZi
NjQ5MzE3MGMzNzhmNjgwZTYyOC4uNzdkNTdiODZjNmU4NzA0OTQ1MTAxOWYxZjAxMGEzMzA0OTk2
YWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRl
ck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZQogICAgICAgICBzdG9w
TG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIGVsc2UgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKSB7CiAgICAgICAgIC8vIEEgcmVkaXJlY3QgcmVzdWx0ZWQgaW4gbG9hZGluZyBz
dWJzdGl0dXRlIGRhdGEuCi0gICAgICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmco
KS0+cmVkaXJlY3RDb3VudCk7CisgICAgICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1p
bmcoKS0+cmVkaXJlY3RDb3VudCgpKTsKICAgICAgICAgaGFuZGxlKCktPmNhbmNlbCgpOwogICAg
ICAgICBoYW5kbGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7CiAgICAgfQpAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2Jq
ZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPE1haW5SZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigp
LT50aW1pbmcoKS0+ZmV0Y2hTdGFydCk7CisgICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRp
bWluZygpLT5mZXRjaFN0YXJ0KCkpOwogICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwo
KSkgewogICAgICAgICAvLyBJZiB0aGUgcmVkaXJlY3RpbmcgdXJsIGlzIG5vdCBhbGxvd2VkIHRv
IGRpc3BsYXkgY29udGVudCBmcm9tIHRoZSB0YXJnZXQgb3JpZ2luLAogICAgICAgICAvLyB0aGVu
IGJsb2NrIHRoZSByZWRpcmVjdC4KQEAgLTE5MiwxOSArMTkyLDcgQEAgdm9pZCBNYWluUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNv
bnN0IFJlc28KICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0KLSAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudExvYWRUaW1pbmcg
PSBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKTsKLQotICAgICAgICAvLyBDaGVjayBpZiB0aGUg
cmVkaXJlY3RlZCB1cmwgaXMgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHJlZGlyZWN0aW5nIHVybCdz
IHRpbWluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobmV3UmVxdWVzdC51cmwoKSk7Ci0g
ICAgICAgIGlmICghc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QocmVkaXJlY3RSZXNwb25zZS51
cmwoKSkpCi0gICAgICAgICAgICBkb2N1bWVudExvYWRUaW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVk
aXJlY3QgPSB0cnVlOwotCi0gICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RDb3Vu
dCsrOwotICAgICAgICBpZiAoIWRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RTdGFydCkKLSAg
ICAgICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RTdGFydCA9IGRvY3VtZW50TG9h
ZFRpbWluZy0+ZmV0Y2hTdGFydDsKLSAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVj
dEVuZCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIGRvY3VtZW50TG9hZFRpbWluZy0+ZmV0Y2hT
dGFydCA9IGRvY3VtZW50TG9hZFRpbWluZy0+cmVkaXJlY3RFbmQ7CisgICAgICAgIGRvY3VtZW50
TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBu
ZXdSZXF1ZXN0LnVybCgpKTsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBi
YXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0
aGUKQEAgLTQ3MSw3ICs0NTksNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nCiAgICAgLy8gcmVm
ZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAg
ICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIG1fdGlt
ZU9mTGFzdERhdGFSZWNlaXZlZCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV90aW1lT2ZMYXN0RGF0
YVJlY2VpdmVkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAKICAgICBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwg
YWxsQXRPbmNlKTsKIH0KQEAgLTQ4Myw3ICs0NzEsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICNpZiAhVVNFKENGKQogICAg
IEFTU0VSVChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPnVybCgpKSB8fCAhZGVmZXJzTG9hZGluZygpKTsKICNlbmRpZgotICAg
IAorCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5j
bHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0CiAgICAgLy8gcmVmZXJlbmNlIHRvIHRo
aXMgb2JqZWN0LgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7
CkBAIC00OTIsOCArNDgwLDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRl
bnQpCiAgICAgICAgIGRsLT5tYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCk7CiAK
LSAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCk7Ci0g
ICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnJlc3BvbnNlRW5kID0gZmluaXNoVGltZSA/
IGZpbmlzaFRpbWUgOiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0
YVJlY2VpdmVkIDogY3VycmVudFRpbWUoKSk7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5n
KCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hUaW1lIDogKG1fdGltZU9mTGFz
dERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA6IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7
CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7CiAKQEAg
LTYwMiw5ICs1ODksOSBAQCBib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdQogCiAgICAgbV9zdWJzdGl0
dXRlRGF0YSA9IHN1YnN0aXR1dGVEYXRhOwogCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCkt
PnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPmZldGNoU3RhcnQpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygp
LT5mZXRjaFN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICBBU1NFUlQoIWRvY3VtZW50TG9h
ZGVyKCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIGRvY3VtZW50TG9hZGVyKCktPnRp
bWluZygpLT5tYXJrRmV0Y2hTdGFydCgpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHIp
OwogCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVM
b2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCmluZGV4IGQ0NDUxMmY0ZWNjNDMyZTFkODQ4YTdiMWI2YTgzNjBjZTk3YzI5
YTkuLmEzZTA1OTFjZmI2YzFkY2Q4MjQxNzU0ZjA0YWM0MDRmMjRkY2QzNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2MzUsMTIgKzE2MzUsMTQgQEAgYm9vbCBET01XaW5kb3c6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIKIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CiAgICAgUmVm
UHRyPEV2ZW50PiBsb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PnRpbWluZygpLT5sb2FkRXZlbnRTdGFydCkgeworICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKS0+dGltaW5nKCktPmxvYWRFdmVudFN0YXJ0KCkpIHsKICAgICAgICAgLy8gVGhl
IERvY3VtZW50TG9hZGVyIChhbmQgdGh1cyBpdHMgRG9jdW1lbnRMb2FkVGltaW5nKSBtaWdodCBn
ZXQgZGVzdHJveWVkIHdoaWxlIGRpc3BhdGNoaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCwgc28g
cHJvdGVjdCBpdCB0byBwcmV2ZW50IHdyaXRpbmcgdGhlIGVuZCB0aW1lIGludG8gZnJlZWQgbWVt
b3J5LgogICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CiAgICAgICAgIERvY3VtZW50TG9hZFRp
bWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWluZygpOwotICAgICAgICBkaXNwYXRj
aFRpbWVkRXZlbnQobG9hZEV2ZW50LCBkb2N1bWVudCgpLCAmdGltaW5nLT5sb2FkRXZlbnRTdGFy
dCwgJnRpbWluZy0+bG9hZEV2ZW50RW5kKTsKKyAgICAgICAgdGltaW5nLT5tYXJrTG9hZEV2ZW50
U3RhcnQoKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChsb2FkRXZlbnQsIGRvY3VtZW50KCkpOwor
ICAgICAgICB0aW1pbmctPm1hcmtMb2FkRXZlbnRFbmQoKTsKICAgICB9IGVsc2UKICAgICAgICAg
ZGlzcGF0Y2hFdmVudChsb2FkRXZlbnQsIGRvY3VtZW50KCkpOwogCkBAIC0xNjcyLDE1ICsxNjc0
LDYgQEAgYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJw
RXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hUaW1lZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBEb2N1bWVudCogdGFyZ2V0LCBkb3VibGUqIHN0YXJ0VGltZSwgZG91YmxlKiBlbmRUaW1lKQot
ewotICAgIEFTU0VSVChzdGFydFRpbWUpOwotICAgIEFTU0VSVChlbmRUaW1lKTsKLSAgICAqc3Rh
cnRUaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQp
OwotICAgICplbmRUaW1lID0gY3VycmVudFRpbWUoKTsKLX0KLQogdm9pZCBET01XaW5kb3c6OnJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkKIHsKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGUzYWVhMTI2MjU0NWZk
NzkxNDJkZGZhODU2MmY3Y2RiMzAzY2EwMzkuLmMzZTdhYzQ1M2E3OTU1ZWQ0YTk3ZTQyNjRhMmFk
OGFkY2QxMzQ4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjY3LDcgKzI2Nyw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQ7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBF
dmVudCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcHJwVGFyZ2V0KTsKICAgICAgICAgdm9pZCBk
aXNwYXRjaExvYWRFdmVudCgpOwotICAgICAgICB2b2lkIGRpc3BhdGNoVGltZWRFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgRG9jdW1lbnQqIHRhcmdldCwgZG91YmxlKiBzdGFydFRpbWUs
IGRvdWJsZSogZW5kVGltZSk7CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihhYm9ydCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmVm
b3JldW5sb2FkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcAppbmRleCBhNDY2MzlhYTg5NTk0OGYzMGEwYWVjMjYyNjE3NTAxZWFlYWRiZmM4Li42NjNl
OTQyYTFiYmNiMzA2YjM1MWZiMjY5MmU0N2IyODUwZTNkMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCkBAIC04NCwxMCArODQsMTAgQEAgdW5z
aWduZWQgc2hvcnQgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uOjpyZWRpcmVjdENvdW50KCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGxv
YWRlci0+dGltaW5nKCk7Ci0gICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkK
KyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHRpbWluZy0+cmVkaXJlY3RDb3VudDsKKyAgICByZXR1cm4gdGlt
aW5nLT5yZWRpcmVjdENvdW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKaW5kZXggZmYyNTM1NDJkYzRiMmEz
NDk5YzlkNjY5ZDc2MWIyZTUxYzdlMTZjYi4uYmRjZTA3ZTczMzA5MWNlNGQ2NmY0NzBhNjc0M2Rk
ZmI2MTljNzEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRp
bWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAK
QEAgLTUwLDMwICs1MCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKGRvdWJsZSBzZWNvbmRzKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KHNlY29uZHMgKiAxMDAwLjApOwogfQogCi1zdGF0aWMgZG91YmxlIGdldFBv
c3NpYmx5U2tld2VkVGltZUluS25vd25SYW5nZShkb3VibGUgc2tld2VkVGltZSwgZG91YmxlIGxv
d2VyQm91bmQsIGRvdWJsZSB1cHBlckJvdW5kKQotewotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQot
ICAgIC8vIFRoZSBjaHJvbWl1bSBwb3J0J3MgY3VycmVudFRpbWUoKSBpbXBsZW1lbnRhdGlvbiBv
bmx5IHN5bmNzIHdpdGggdGhlCi0gICAgLy8gc3lzdGVtIGNsb2NrIGV2ZXJ5IDYwIHNlY29uZHMu
IFNvIGl0IGlzIHBvc3NpYmxlIGZvciB0aW1pbmcgbWFya3MKLSAgICAvLyBjb2xsZWN0ZWQgaW4g
ZGlmZmVyZW50IHRocmVhZHMgb3IgcHJvY2Vzc2VzIHRvIGhhdmUgYSBzbWFsbCBza2V3LgotICAg
IC8vIEZJWE1FOiBJdCBtYXkgYmUgcG9zc2libGUgdG8gYWRkIGEgY3VycmVudFRpbWVGcm9tU3lz
dGVtVGltZSgpIG1ldGhvZAotICAgIC8vIHRoYXQgZWxpbWluYXRlcyB0aGUgc2tldy4KLSAgICBp
ZiAoc2tld2VkVGltZSA8PSBsb3dlckJvdW5kKQotICAgICAgICByZXR1cm4gbG93ZXJCb3VuZDsK
LQotICAgIGlmICh1cHBlckJvdW5kIDw9IDAuMCkKLSAgICAgICAgdXBwZXJCb3VuZCA9IGN1cnJl
bnRUaW1lKCk7Ci0KLSAgICBpZiAoc2tld2VkVGltZSA+PSB1cHBlckJvdW5kKQotICAgICAgICBy
ZXR1cm4gdXBwZXJCb3VuZDsKLSNlbHNlCi0gICAgQVNTRVJUX1VOVVNFRChsb3dlckJvdW5kLCBz
a2V3ZWRUaW1lID49IGxvd2VyQm91bmQpOwotICAgIEFTU0VSVF9VTlVTRUQodXBwZXJCb3VuZCwg
c2tld2VkVGltZSA8PSB1cHBlckJvdW5kKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHNrZXdlZFRp
bWU7Ci19Ci0KIFBlcmZvcm1hbmNlVGltaW5nOjpQZXJmb3JtYW5jZVRpbWluZyhGcmFtZSogZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogewpAQCAtOTUsNyArNzEsNyBAQCB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6Om5hdmlnYXRpb25TdGFydCgpIGNvbnN0CiAgICAg
aWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1p
bGxpc2Vjb25kcyh0aW1pbmctPm5hdmlnYXRpb25TdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdl
ck1pbGxpc2Vjb25kcyh0aW1pbmctPm5hdmlnYXRpb25TdGFydCgpKTsKIH0KIAogdW5zaWduZWQg
bG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKQEAg
LTEwNCwxMCArODAsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjp1
bmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0IHx8ICF0aW1pbmct
Pmhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jv
c3NPcmlnaW5SZWRpcmVjdCgpIHx8ICF0aW1pbmctPmhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlz
ZWNvbmRzKHRpbWluZy0+dW5sb2FkRXZlbnRTdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1p
bGxpc2Vjb25kcyh0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQoKSk7CiB9CiAKIHVuc2lnbmVkIGxv
bmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQoKSBjb25zdApAQCAtMTE2
LDEwICs5MiwxMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9h
ZEV2ZW50RW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0IHx8ICF0aW1pbmctPmhhc1Nh
bWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmln
aW5SZWRpcmVjdCgpIHx8ICF0aW1pbmctPmhhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHRpbWluZy0+dW5sb2FkRXZlbnRFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29u
ZHModGltaW5nLT51bmxvYWRFdmVudEVuZCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZWRpcmVjdFN0YXJ0KCkgY29uc3QKQEAgLTEyOCwxMCArMTA0LDEw
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RTdGFydCgp
IGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKHRp
bWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKKyAgICBpZiAodGltaW5nLT5oYXNDcm9zc09y
aWdpblJlZGlyZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdl
ck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0U3RhcnQpOworICAgIHJldHVybiB0b0ludGVn
ZXJNaWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdFN0YXJ0KCkpOwogfQogCiB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0RW5kKCkgY29uc3QKQEAgLTE0MCwx
MCArMTE2LDEwIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJl
Y3RFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCisgICAgaWYgKHRpbWluZy0+aGFz
Q3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdEVuZCk7CisgICAgcmV0dXJuIHRv
SW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0RW5kKCkpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZldGNoU3RhcnQoKSBjb25zdApAQCAtMTUy
LDcgKzEyOCw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZmV0Y2hT
dGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmZldGNoU3RhcnQpOworICAgIHJl
dHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5mZXRjaFN0YXJ0KCkpOwogfQogCiB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KCkg
Y29uc3QKQEAgLTI3Nyw3ICsyNTMsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnJlc3BvbnNlRW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVzcG9u
c2VFbmQpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZXNwb25z
ZUVuZCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21M
b2FkaW5nKCkgY29uc3QKQEAgLTI4Niw3ICsyNjIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVy
Zm9ybWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAg
ICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vj
b25kcyh0aW1pbmctPmRvbUxvYWRpbmcpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRl
Z2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tTG9hZGluZyk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJhY3RpdmUoKSBjb25zdApAQCAtMjk1LDcg
KzI3MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJh
Y3RpdmUoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21JbnRlcmFjdGl2ZSk7Cisg
ICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21J
bnRlcmFjdGl2ZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6
ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMzA0LDcgKzI4MCw3IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50
U3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZl
bnRTdGFydCk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKCkgY29uc3QK
QEAgLTMxMyw3ICsyODksNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmct
PmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCk7CisgICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0lu
dGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQpOwogfQog
CiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRlKCkgY29u
c3QKQEAgLTMyMiw3ICsyOTgsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmRvbUNvbXBsZXRlKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29tcGxl
dGUpOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWlu
Zy0+ZG9tQ29tcGxldGUpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKQEAgLTMzMSw3ICszMDcsNyBAQCB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudFN0YXJ0KCkgY29uc3QKICAgICBp
ZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50U3RhcnQpOworICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZlbnRTdGFydCgpKTsKIH0KIAogdW5zaWduZWQgbG9u
ZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdApAQCAtMzQwLDcg
KzMxNiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50
RW5kKCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50RW5kKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50RW5kKCkpOwogfQog
CiBEb2N1bWVudExvYWRlciogUGVyZm9ybWFuY2VUaW1pbmc6OmRvY3VtZW50TG9hZGVyKCkgY29u
c3QKQEAgLTM4MSwyMiArMzU3LDIwIEBAIFJlc291cmNlTG9hZFRpbWluZyogUGVyZm9ybWFuY2VU
aW1pbmc6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRlci0+cmVz
cG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCBy
ZWxhdGl2ZVNlY29uZHMpIGNvbnN0Cit1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1p
bmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50IHJlbGF0aXZlTWlsbGlz
ZWNvbmRzKSBjb25zdAogewotICAgIEFTU0VSVChyZWxhdGl2ZVNlY29uZHMgPj0gMCk7CisgICAg
QVNTRVJUKHJlbGF0aXZlTWlsbGlzZWNvbmRzID49IDApOwogICAgIFJlc291cmNlTG9hZFRpbWlu
ZyogcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsKICAgICBBU1NFUlQocmVz
b3VyY2VUaW1pbmcpOwotICAgIERvY3VtZW50TG9hZFRpbWluZyogZG9jdW1lbnRUaW1pbmcgPSBk
b2N1bWVudExvYWRUaW1pbmcoKTsKLSAgICBBU1NFUlQoZG9jdW1lbnRUaW1pbmcpOwotCi0gICAg
Ly8gVGhlIFJlc291cmNlTG9hZFRpbWluZyBBUEkncyByZXF1ZXN0VGltZSBpcyB0aGUgYmFzZSB0
aW1lIHRvIHdoaWNoIGFsbAotICAgIC8vIG90aGVyIG1hcmtzIGFyZSByZWxhdGl2ZS4gU28gdG8g
Z2V0IGFuIGFic29sdXRlIHRpbWUsIHdlIG11c3QgYWRkIGl0IHRvCi0gICAgLy8gdGhlIHJlbGF0
aXZlIG1hcmtzLgotICAgIC8vCi0gICAgLy8gU2luY2UgUmVzb3VyY2VMb2FkVGltaW5ncyBjYW1l
IGZyb20gdGhlIG5ldHdvcmsgcGxhdGZvcm0gbGF5ZXIsIHdlIG11c3QKLSAgICAvLyBjaGVjayB0
aGVtIGZvciBza2V3IGJlY2F1c2UgdGhleSBtYXkgYmUgZnJvbSBhbm90aGVyIHRocmVhZC9wcm9j
ZXNzLgotICAgIGRvdWJsZSBiYXNlVGltZSA9IGdldFBvc3NpYmx5U2tld2VkVGltZUluS25vd25S
YW5nZShyZXNvdXJjZVRpbWluZy0+cmVxdWVzdFRpbWUsIGRvY3VtZW50VGltaW5nLT5mZXRjaFN0
YXJ0LCBkb2N1bWVudFRpbWluZy0+cmVzcG9uc2VFbmQpOwotICAgIHJldHVybiB0b0ludGVnZXJN
aWxsaXNlY29uZHMoYmFzZVRpbWUpICsgcmVsYXRpdmVTZWNvbmRzOworICAgIHJldHVybiB0b0lu
dGVnZXJNaWxsaXNlY29uZHMocmVzb3VyY2VUaW1pbmctPmNvbnZlcnRSZXNvdXJjZUxvYWRUaW1l
VG9Eb2N1bWVudFRpbWUoZG9jdW1lbnRMb2FkVGltaW5nKCksIHJlbGF0aXZlTWlsbGlzZWNvbmRz
KSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bW9ub3Rvbmlj
VGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUgbW9ub3RvbmljU2Vjb25kcykgY29uc3QK
K3sKKyAgICBBU1NFUlQobW9ub3RvbmljU2Vjb25kcyA+PSAwKTsKKyAgICBjb25zdCBEb2N1bWVu
dExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50TG9hZFRpbWluZygpOworICAgIEFTU0VSVCh0
aW1pbmcpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5jb252ZXJ0
TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1vbm90b25pY1NlY29uZHMpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5o
CmluZGV4IDBjMzczODMyODBhMDMyM2Q3MjZlOWE5Nzg3Y2EzMGMxZTM4MzkwNzEuLjQ4ZDU5OGNh
YTQ2OGQ5ZGQxNzVjZmFhZDU3NmRjMzIzNjZmZmZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlVGltaW5nLmgKQEAgLTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVu
dExvYWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0OwogICAgIFJlc291cmNlTG9h
ZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50KSBjb25zdDsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3Vi
bGUpIGNvbnN0OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVkOWRhNDhhM2NhNWYxMzA1MGFjYzA4ZjIxOWFmYTg1NzYxNTYzY2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWlu
Zy5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFRpbWluZy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZG91YmxlIFJlc291cmNlTG9hZFRpbWluZzo6Y29udmVydFJlc291cmNl
TG9hZFRpbWVUb0RvY3VtZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50
VGltaW5nLCBpbnQgZGVsdGFNaWxsaXNlY29uZHMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVu
dFRpbWluZykKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBkb2N1bWVudFRpbWlu
Zy0+Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShyZXF1ZXN0VGltZSArIGRlbHRh
TWlsbGlzZWNvbmRzIC8gMTAwMC4wKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKaW5kZXggMjY5ZmFkMDAyNWQ5
YWFkNDFlNTFiNzJhY2FmYWFhYjU2ZGQyMzI1Zi4uOTRjNTVkOWJhNGIwMTgwOTYyNWQxYjY5YTQ3
OGQwNTA2YmIxZTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUxvYWRUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCkBAIC0zMiw2ICszMiw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOworCiBjbGFzcyBSZXNvdXJjZUxv
YWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgpCkBA
IC03OCw4ICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKICAgICB9CiAKLSAgICBkb3VibGUgcmVxdWVzdFRpbWU7Ci0gICAgaW50IHByb3h5U3RhcnQ7
CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZW50IGEgdW5pZmllZCB0aW1lbGluZSB0byBKYXZhc2Ny
aXB0LiBVc2luZyB3YWxsdGltZSBpcyBwcm9ibGVtYXRpYywgYmVjYXVzZSB0aGUgY2xvY2sgbWF5
IHNrZXcgd2hpbGUgcmVzb3VyY2VzCisgICAgLy8gbG9hZC4gVG8gcHJldmVudCB0aGF0IHNrZXcs
IHdlIHJlY29yZCBhIHNpbmdsZSByZWZlcmVuY2Ugd2FsbHRpbWUgd2hlbiByb290IGRvY3VtZW50
IG5hdmlnYXRpb24gYmVnaW5zLiBBbGwgb3RoZXIgdGltZXMgYXJlCisgICAgLy8gcmVjb3JkZWQg
dXNpbmcgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuIFdoZW4gYSB0aW1lIG5lZWRzIHRv
IGJlIHByZXNlbnRlZCB0byBKYXZhc2NyaXB0LCB3ZSBidWlsZCBhIHBzZXVkby13YWxsdGltZQor
ICAgIC8vIHVzaW5nIHRoZSBmb2xsb3dpbmcgZXF1YXRpb246CisgICAgLy8gICBwc2V1ZG8gdGlt
ZSA9IGRvY3VtZW50IHdhbGwgcmVmZXJlbmNlICsgKHJlc291cmNlIHJlcXVlc3QgdGltZSAtIGRv
Y3VtZW50IG1vbm90b25pYyByZWZlcmVuY2UpICsgZGVsdGFNaWxsaXNlY29uZHMgLyAxMDAwLjAu
CisgICAgZG91YmxlIGNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUoY29uc3Qg
RG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudFRpbWluZywgaW50IGRlbHRhTWlsbGlzZWNvbmRz
KSBjb25zdDsKKworICAgIGRvdWJsZSByZXF1ZXN0VGltZTsgLy8gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgd2hlbiB0aGUgcG9ydCBzdGFydGVkIGhhbmRsaW5nIHRoaXMgcmVxdWVzdC4K
KyAgICBpbnQgcHJveHlTdGFydDsgLy8gVGhlIHJlc3Qgb2YgdGhlc2UgYXJlIG1pbGxpc2Vjb25k
IGRlbHRhcywgdXNpbmcgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIGZyb20gcmVxdWVz
dFRpbWUuCiAgICAgaW50IHByb3h5RW5kOwogICAgIGludCBkbnNTdGFydDsKICAgICBpbnQgZG5z
RW5kOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3dlYnRp
bWluZy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmcuanMK
aW5kZXggMGI1OGJjYTk1ZTkwY2ZlZjg2MDczNWQ5ZTdlYTk1NGUyMTYwYzVmMC4uNTA2ZGQ5MDIx
MWIwYjhlYjMyZTY0YWIwMTljYjczZmM2OGJkMWEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2NyaXB0LXRlc3RzL3dlYnRpbWluZy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5nLmpzCkBAIC02LDcgKzYsNyBAQCB2YXIgdGltaW5n
ID0gcGVyZm9ybWFuY2UudGltaW5nIHx8IHt9OwogCiAvLyBHZXQgdGhlIG9yZGVyIG9mIG1hZ25p
dHVkZSBjb3JyZWN0IHdpdGhvdXQgYSBjaGFuY2UgZm9yIGZsYWtpbmVzcy4KIHZhciBvbmVIb3Vy
TWlsbGlzZWNvbmRzID0gNjAgKiA2MCAqIDEwMDA7Ci12YXIgY3VycmVudFVUQyA9IChuZXcgRGF0
ZSgpKS5nZXRUaW1lKCk7Cit2YXIgY3VycmVudFVUQyA9IDA7ICAvLyBGSVhNRTogVXNlIHBlcmZv
cm1hbmNlLm5vdygpIHdoZW4gYXZhaWxhYmxlLgogdmFyIG9uZUhvdXJBZ29VVEMgPSBjdXJyZW50
VVRDIC0gb25lSG91ck1pbGxpc2Vjb25kczsKIAogZnVuY3Rpb24gc2xlZXBGaWZ0eU1pbGxpc2Vj
b25kcygpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>